]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/20624 (wrong "control reaches end of non-void function" warning)
authorAndrew Pinski <pinskia@physics.uc.edu>
Fri, 19 Aug 2005 05:41:13 +0000 (05:41 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 19 Aug 2005 05:41:13 +0000 (22:41 -0700)
2005-08-19  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/20624
        * g++.dg/warn/Wreturn-3.C: New test

2005-08-19  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/20624
        * gimple-low.c (block_may_fallthru): Handle CLEANUP_POINT_EXPR by
        looking past it.

From-SVN: r103268

gcc/ChangeLog
gcc/gimple-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wreturn-3.C [new file with mode: 0644]

index a706bb2d9491554aa69916786ae9483992a92df5..16ae2922c148cdd1f85b318748de647958aa9d83 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-19  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/20624
+       * gimple-low.c (block_may_fallthru): Handle CLEANUP_POINT_EXPR by
+       looking past it.
+
 2005-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * collect2.c (dup2): Delete.
index 3bece1ac0d209dc082bb5b5d4dbd826da539ce7a..5c7c27f7e13f62e34ccdf66a814151952b8143f5 100644 (file)
@@ -368,6 +368,9 @@ block_may_fallthru (tree block)
     case CALL_EXPR:
       /* Functions that do not return do not fall through.  */
       return (call_expr_flags (stmt) & ECF_NORETURN) == 0;
+    
+    case CLEANUP_POINT_EXPR:
+      return block_may_fallthru (TREE_OPERAND (stmt, 0));
 
     default:
       return true;
index 1f0c092abb5e48f4616738f5f2c20140786c49fe..c8dfcfb319c27c69c8a09435be11c347ecbf5da5 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-19  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR middle-end/20624
+       * g++.dg/warn/Wreturn-3.C: New test
+
 2005-08-18  Dorit Nuzman  <dorit@il.ibm.com>
 
        PR tree-optimization/22228
diff --git a/gcc/testsuite/g++.dg/warn/Wreturn-3.C b/gcc/testsuite/g++.dg/warn/Wreturn-3.C
new file mode 100644 (file)
index 0000000..822dd4f
--- /dev/null
@@ -0,0 +1,18 @@
+// { dg-options "-Wreturn-type" }
+// PR c++/20624
+
+struct fpos {
+ fpos(int __pos) {}
+};
+struct g {
+  g();
+  ~g();
+};
+fpos seekoff(int b, int c)
+{
+  g __buf;
+  if (b != -1 && c >= 0)
+    return fpos(-1);
+  else
+    return fpos(-1);
+}