Teach Type::isIntegerType() about GCC's __complex__ integer extensions...
Bug submitted by Eli.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45976 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/Type.cpp b/AST/Type.cpp
index 610cd8f..949b6f8 100644
--- a/AST/Type.cpp
+++ b/AST/Type.cpp
@@ -310,6 +310,9 @@
if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
if (TT->getDecl()->getKind() == Decl::Enum)
return true;
+ // Check for GCC complex integer extension.
+ if (const ComplexType *CT = dyn_cast<ComplexType>(CanonicalType))
+ return CT->getElementType()->isIntegerType();
if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
return VT->getElementType()->isIntegerType();
return false;
diff --git a/test/Sema/complex-int.c b/test/Sema/complex-int.c
new file mode 100644
index 0000000..f0c29a9
--- /dev/null
+++ b/test/Sema/complex-int.c
@@ -0,0 +1,10 @@
+// RUN: clang %s -verify -fsyntax-only
+
+void a() {
+__complex__ int arr;
+__complex__ short brr;
+__complex__ int result;
+
+result = arr*brr;
+}
+