]> granicus.if.org Git - clang/commitdiff
For array pointee type, get its cvr qualifier from
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 9 Nov 2009 21:02:05 +0000 (21:02 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 9 Nov 2009 21:02:05 +0000 (21:02 +0000)
its element type. Fixes pr5432.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86587 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaOverload.cpp
test/SemaCXX/overloaded-builtin-operators.cpp

index f57ce140e52020d0403eab16fee4ed604cfd098a..69dac7d33e06c8a6ff715b3a7880a978bc485401 100644 (file)
@@ -2982,6 +2982,8 @@ BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants(QualType Ty,
 
   QualType PointeeTy = PointerTy->getPointeeType();
   unsigned BaseCVR = PointeeTy.getCVRQualifiers();
+  if (const ConstantArrayType *Array = PointeeTy->getAs<ConstantArrayType>())
+    BaseCVR = Array->getElementType().getCVRQualifiers();
   bool hasVolatile = VisibleQuals.hasVolatile();
   bool hasRestrict = VisibleQuals.hasRestrict();
   
index 13777daf2d20b945fe213a55981a529caca874fc..89ac29adc7304211c3fb774ec04d5c19a347c053 100644 (file)
@@ -175,3 +175,13 @@ void test_dr425(A a) {
   (void)(1.0f * a); // expected-error{{ambiguous}} \
                     // expected-note 81{{candidate}}
 }
+
+// pr5432
+enum e {X};
+
+const int a[][2] = {{1}};
+
+int test_pr5432() {
+  return a[X][X];
+}
+