]> gcc.gnu.org Git - gcc.git/commitdiff
re PR c++/23229 (g++ gives incorrect error message with void main() and a void function)
authorAndrew Pinski <pinskia@physics.uc.edu>
Fri, 28 Oct 2005 20:25:55 +0000 (20:25 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 28 Oct 2005 20:25:55 +0000 (13:25 -0700)
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

        PR C++/23229
        * decl.c (grokfndecl): Create a new function type
        after erroring out about main not returning int.
2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>

PR C++/23229
        * g++.dg/warn/main-2.C: New test.

From-SVN: r105960

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/main-2.C [new file with mode: 0644]

index fed864d7f08ef2528671a762a255341d28cd0567..81da122dab460aba9fa91f5b0f61a950204fa20c 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/23229
+       * decl.c (grokfndecl): Create a new function type
+       after erroring out about main not returning int.
+
 2005-10-28  Josh Conner  <jconner@apple.com>
 
        PR c++/22153
index ef61d1745f15e91f97eacc0ea7f00d996128dd08..07278ff9a1c93a0521a7f867d3bd2dc9bf90b56d 100644 (file)
@@ -5716,7 +5716,12 @@ grokfndecl (tree ctype,
       if (!same_type_p (TREE_TYPE (TREE_TYPE (decl)),
                        integer_type_node))
        {
+         tree oldtypeargs = TYPE_ARG_TYPES (TREE_TYPE (decl));
+         tree newtype;
          error ("%<::main%> must return %<int%>");
+         newtype =  build_function_type (integer_type_node,
+                                         oldtypeargs);
+         TREE_TYPE (decl) = newtype;
          TREE_TYPE (TREE_TYPE (decl)) = integer_type_node;
        }
       inlinep = 0;
index 35e969423c451e4fb0ed52ae6bfe3ebb3e7337f1..66577ef67e1dc90208bde9e7642cfcc22353a491 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/23229
+       * g++.dg/warn/main-2.C: New test.
+
 2005-10-28  Steven G. Kargl  <kargls@comcast.net>
 
        PR fortran/24545
diff --git a/gcc/testsuite/g++.dg/warn/main-2.C b/gcc/testsuite/g++.dg/warn/main-2.C
new file mode 100644 (file)
index 0000000..d38ef8e
--- /dev/null
@@ -0,0 +1,19 @@
+// { dg-do compile }
+// Make sure that the type of f1 does not change 
+// after the error of main about not returning 
+// int.
+// From Pekka Vuorela <pvuorela@iki.fi> 
+// PR c++/23229
+
+void f1();  
+  
+void
+main()  /* { dg-error "must return" } */
+{     
+  f1();  
+}  
+  
+void f1()  
+{     
+}  
+
This page took 0.109784 seconds and 5 git commands to generate.