From: Fariborz Jahanian Date: Mon, 9 Nov 2009 21:02:05 +0000 (+0000) Subject: For array pointee type, get its cvr qualifier from X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d411b3f746e612294bd5f0843d83e8c215f7fe58;p=clang For array pointee type, get its cvr qualifier from its element type. Fixes pr5432. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86587 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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()) + 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]; +} +