Mark the ExtWarn for in-class initialization of static const float members as a GNU extension. Don't extend the scope of this extension to all literal types in C++0x mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140820 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CXX/class/class.static/class.static.data/p3.cpp b/test/CXX/class/class.static/class.static.data/p3.cpp
index 72dbec7..51b93a2 100644
--- a/test/CXX/class/class.static/class.static.data/p3.cpp
+++ b/test/CXX/class/class.static/class.static.data/p3.cpp
@@ -12,8 +12,8 @@
   static const int d;
 
   static constexpr double e = 0.0; // ok
-  static const double f = 0.0; // expected-warning {{accepted as an extension}}
-  static char *const g = 0; // expected-warning {{accepted as an extension}}
+  static const double f = 0.0; // expected-warning {{extension}}
+  static char *const g = 0; // expected-error {{requires 'constexpr' specifier}}
   static const NonLit h = NonLit(); // expected-error {{must be initialized out of line}}
 };
 
diff --git a/test/FixIt/fixit-cxx0x.cpp b/test/FixIt/fixit-cxx0x.cpp
index 2addad4..8c404b6 100644
--- a/test/FixIt/fixit-cxx0x.cpp
+++ b/test/FixIt/fixit-cxx0x.cpp
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -verify -std=c++0x %s
 // RUN: cp %s %t
-// RUN: not %clang_cc1 -x c++ -std=c++0x -Werror -fixit %t
+// RUN: not %clang_cc1 -x c++ -std=c++0x -fixit %t
 // RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++0x %t
 
 /* This is a test of the various code modification hints that only
@@ -53,9 +53,7 @@
 #endif
 
   struct S {
-    static const double d = 0.0; // expected-warning {{accepted as an extension}}
-    // -> constexpr static const double d = 0.0;
-    static char *const p = 0; // expected-warning {{accepted as an extension}}
+    static char *const p = 0; // expected-error {{requires 'constexpr' specifier}}
     // -> constexpr static char *const p = 0;
   };
 }
diff --git a/test/SemaCXX/class.cpp b/test/SemaCXX/class.cpp
index 725e93f..8d12578 100644
--- a/test/SemaCXX/class.cpp
+++ b/test/SemaCXX/class.cpp
@@ -173,8 +173,8 @@
   float foo();
 
   struct A {
-    static const float x = 5.0f; // expected-warning {{in-class initializer for static data member of type 'const float' not allowed}}
-    static const float y = foo(); // expected-warning {{in-class initializer for static data member of type 'const float' not allowed}} expected-error {{in-class initializer is not a constant expression}}
+    static const float x = 5.0f; // expected-warning {{in-class initializer for static data member of type 'const float' is a GNU extension}}
+    static const float y = foo(); // expected-warning {{in-class initializer for static data member of type 'const float' is a GNU extension}} expected-error {{in-class initializer is not a constant expression}}
   };
 }
 
diff --git a/test/SemaCXX/cxx0x-class.cpp b/test/SemaCXX/cxx0x-class.cpp
index 4c23932..bd857e0 100644
--- a/test/SemaCXX/cxx0x-class.cpp
+++ b/test/SemaCXX/cxx0x-class.cpp
@@ -20,8 +20,8 @@
   float foo();
 
   struct A {
-    static const float x = 5.0f; // expected-warning {{requires 'constexpr' specifier}}
-    static const float y = foo(); // expected-warning {{requires 'constexpr' specifier}} expected-error {{must be initialized by a constant expression}}
+    static const float x = 5.0f; // expected-warning {{GNU extension}}
+    static const float y = foo(); // expected-warning {{GNU extension}} expected-error {{in-class initializer is not a constant expression}}
     static constexpr float x2 = 5.0f;
     static constexpr float y2 = foo(); // expected-error {{must be initialized by a constant expression}}
   };
diff --git a/test/SemaTemplate/instantiate-static-var.cpp b/test/SemaTemplate/instantiate-static-var.cpp
index 723cbd3..d2b0459 100644
--- a/test/SemaTemplate/instantiate-static-var.cpp
+++ b/test/SemaTemplate/instantiate-static-var.cpp
@@ -11,7 +11,7 @@
 
 template<typename T>
 class Y {
-  static const T value = 0; // expected-warning{{in-class initializer for static data member of type 'const float' not allowed, accepted as an extension}}
+  static const T value = 0; // expected-warning{{in-class initializer for static data member of type 'const float' is a GNU extension}}
 };
 
 Y<float> fy; // expected-note{{in instantiation of template class 'Y<float>' requested here}}