re PR c++/58550 (][c++11] ICE with auto in function return type and lto)
authorJason Merrill <jason@redhat.com>
Fri, 24 Jan 2014 19:05:39 +0000 (14:05 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 24 Jan 2014 19:05:39 +0000 (14:05 -0500)
PR c++/58550
* decl.c (grokdeclarator): Turn pedwarn about auto return type in
c++11 into error.

From-SVN: r207055

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/g++.dg/cpp0x/auto41.C [new file with mode: 0644]

index 4485108..52394b3 100644 (file)
@@ -1,5 +1,9 @@
 2014-01-24  Jason Merrill  <jason@redhat.com>
 
+       PR c++/58550
+       * decl.c (grokdeclarator): Turn pedwarn about auto return type in
+       c++11 into error.
+
        PR c++/59886
        PR c++/59659
        * typeck2.c (process_init_constructor_array): Don't create
index f4819a6..aaafaa8 100644 (file)
@@ -9599,9 +9599,14 @@ grokdeclarator (const cp_declarator *declarator,
                            && LAMBDA_TYPE_P (current_class_type))
                          /* OK for C++11 lambdas.  */;
                        else if (cxx_dialect < cxx1y)
-                         pedwarn (input_location, 0, "%qs function uses "
+                         {
+                           error ("%qs function uses "
                                   "%<auto%> type specifier without trailing "
                                   "return type", name);
+                           inform (input_location, "deduced return type "
+                                   "only available with -std=c++1y or "
+                                   "-std=gnu++1y");
+                         }
                        else if (virtualp)
                          permerror (input_location, "virtual function cannot "
                                     "have deduced return type");
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto41.C b/gcc/testsuite/g++.dg/cpp0x/auto41.C
new file mode 100644 (file)
index 0000000..6f102e7
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/58550
+// { dg-options "-std=c++11" }
+
+auto foo();                    // { dg-error "auto" }
+auto fp = foo;