   * \brief Return the element type of an array type.
   *
   * If a non-array type is passed in, an invalid type is returned.
-Index: tools/libclang/CXType.cpp
-===================================================================
---- tools/libclang/CXType.cpp	(revision 145002)
-+++ tools/libclang/CXType.cpp	(working copy)
+diff -ur clang-3.0.src.orig/tools/libclang/CIndex.cpp clang-3.0.src/tools/libclang/CIndex.cpp
+--- clang-3.0.src.orig/tools/libclang/CIndex.cpp	2011-12-12 10:17:52.000000000 -0800
++++ clang-3.0.src/tools/libclang/CIndex.cpp	2011-12-12 10:27:37.000000000 -0800
+@@ -3206,6 +3206,11 @@
+     return createCXString(AA->getAnnotation());
+   }
+ 
++  if (C.kind == CXCursor_AsmLabelAttr) {
++    AsmLabelAttr *AA = cast<AsmLabelAttr>(cxcursor::getCursorAttr(C));
++    return createCXString(AA->getLabel());
++  }
++
+   return createCXString("");
+ }
+ 
+@@ -3529,6 +3534,8 @@
+       return createCXString("attribute(override)");
+   case CXCursor_AnnotateAttr:
+     return createCXString("attribute(annotate)");
++  case CXCursor_AsmLabelAttr:
++    return createCXString("asm label");
+   case CXCursor_PreprocessingDirective:
+     return createCXString("preprocessing directive");
+   case CXCursor_MacroDefinition:
+diff -ur clang-3.0.src.orig/tools/libclang/CXCursor.cpp clang-3.0.src/tools/libclang/CXCursor.cpp
+--- clang-3.0.src.orig/tools/libclang/CXCursor.cpp	2011-12-12 10:17:52.000000000 -0800
++++ clang-3.0.src/tools/libclang/CXCursor.cpp	2011-12-12 10:27:37.000000000 -0800
+@@ -46,6 +46,7 @@
+     case attr::Final: return CXCursor_CXXFinalAttr;
+     case attr::Override: return CXCursor_CXXOverrideAttr;
+     case attr::Annotate: return CXCursor_AnnotateAttr;
++    case attr::AsmLabel: return CXCursor_AsmLabelAttr;
+   }
+ 
+   return CXCursor_UnexposedAttr;
+diff -ur clang-3.0.src.orig/tools/libclang/CXType.cpp clang-3.0.src/tools/libclang/CXType.cpp
+--- clang-3.0.src.orig/tools/libclang/CXType.cpp	2011-12-12 10:17:52.000000000 -0800
++++ clang-3.0.src/tools/libclang/CXType.cpp	2011-12-12 10:27:37.000000000 -0800
 @@ -85,6 +85,7 @@
      TKCASE(FunctionNoProto);
      TKCASE(FunctionProto);

  * \determine Determine whether two CXTypes represent the same type.
  *
  * \returns non-zero if the CXTypes represent the same type and 
@@ -2458,14 +2514,45 @@
 CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K);
 
 /**

diff -ur clang-3.0.src.orig/include/clang-c/Index.h clang-3.0.src/include/clang-c/Index.h
--- clang-3.0.src.orig/include/clang-c/Index.h	2011-12-12 10:17:41.000000000 -0800
+++ clang-3.0.src/include/clang-c/Index.h	2011-12-12 10:59:50.000000000 -0800
@@ -1831,7 +1831,8 @@
   CXCursor_CXXFinalAttr                  = 404,
   CXCursor_CXXOverrideAttr               = 405,
   CXCursor_AnnotateAttr                  = 406,
