diff options
-rw-r--r-- | lib/Sema/SemaOverload.cpp | 2 | ||||
-rw-r--r-- | test/SemaCXX/overloaded-builtin-operators.cpp | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index f57ce140e5..69dac7d33e 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -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(); diff --git a/test/SemaCXX/overloaded-builtin-operators.cpp b/test/SemaCXX/overloaded-builtin-operators.cpp index 13777daf2d..89ac29adc7 100644 --- a/test/SemaCXX/overloaded-builtin-operators.cpp +++ b/test/SemaCXX/overloaded-builtin-operators.cpp @@ -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]; +} + |