]> granicus.if.org Git - clang/commitdiff
Revert r172285 (suppressing a 'redundant' -Wc++98-compat warning) and add a
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 26 Jan 2013 00:39:02 +0000 (00:39 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 26 Jan 2013 00:39:02 +0000 (00:39 +0000)
testcase for a situation it caused us to miss.

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

lib/Sema/SemaInit.cpp
test/SemaCXX/cxx98-compat.cpp

index e6611108328a0faeca5f30a4dd30026121317d45..c3d612b7327bf80812828b4a6ac60dc481331897 100644 (file)
@@ -4914,7 +4914,6 @@ InitializationSequence::Perform(Sema &S,
 
   if (S.getLangOpts().CPlusPlus11 && Entity.getType()->isReferenceType() &&
       Args.size() == 1 && isa<InitListExpr>(Args[0]) &&
-      cast<InitListExpr>(Args[0])->getNumInits() == 1 &&
       Entity.getKind() != InitializedEntity::EK_Parameter) {
     // Produce a C++98 compatibility warning if we are initializing a reference
     // from an initializer list. For parameters, we produce a better warning
index ca32c197de7918a3ff9e1aad100da9bd89caf0ee..7d36770f5d20f6ab51bddb605ffd73bab29c2515 100644 (file)
@@ -109,7 +109,9 @@ void RangeFor() {
   // expected-warning@-1 {{range-based for loop is incompatible with C++98}}
   // expected-warning@-2 {{'auto' type specifier is incompatible with C++98}}
   // expected-warning@-3 {{initialization of initializer_list object is incompatible with C++98}}
+  // expected-warning@-4 {{reference initialized from initializer list is incompatible with C++98}}
   }
+  struct Agg { int a, b; } const &agg = { 1, 2 }; // expected-warning {{reference initialized from initializer list is incompatible with C++98}}
 }
 
 struct InClassInit {