aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2004-07-12 06:56:45 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2004-07-12 06:56:45 +0000
commit55e99d5226d32dc4e78fa96375034dda4fbbfcb9 (patch)
tree19d07d9c11c2ef1cda39ada85ec07837657c0f2f /gcc
parent2a9dc91764a82c30cae2a12752276e894d80aee6 (diff)
downloadgcc-55e99d5226d32dc4e78fa96375034dda4fbbfcb9.zip
gcc-55e99d5226d32dc4e78fa96375034dda4fbbfcb9.tar.gz
gcc-55e99d5226d32dc4e78fa96375034dda4fbbfcb9.tar.bz2
re PR tree-optimization/14107 (Return warnings don't work without optimizations enabled)
gcc/ChangeLog: 2004-06-29 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/14107 * gimplify.c (gimplify_return_expr): Accept a RETURN_EXPR with an error argument. * tree-optimize.c (init_tree_optimization_passes): Run pass_warn_function_return at -O0. gcc/cp/ChangeLog: 2004-06-29 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/14107 * decl.c (finish_function): Remove temporary band-aid. From-SVN: r84550
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c5
-rw-r--r--gcc/gimplify.c6
-rw-r--r--gcc/tree-optimize.c2
5 files changed, 17 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8393417..1cac842 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-07-12 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/14107
+ * gimplify.c (gimplify_return_expr): Accept a
+ RETURN_EXPR with an error argument.
+ * tree-optimize.c (init_tree_optimization_passes):
+ Run pass_warn_function_return at -O0.
+
2004-07-12 Roger Sayle <roger@eyesopen.com>
* doc/invoke.texi: Correct -fasynchronous-unwind-tables option
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e8cef5f..099b1bb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-12 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/14107
+ * decl.c (finish_function): Remove temporary band-aid.
+
2004-07-11 Mark Mitchell <mark@codesourcery.com>
* call.c (build_operator_new_call): Avoid using push_to_top_level.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 6f701ca..ab5dd84 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -10348,13 +10348,10 @@ finish_function (int flags)
&& !current_function_returns_value && !current_function_returns_null
/* Don't complain if we abort or throw. */
&& !current_function_returns_abnormally
- && !DECL_NAME (DECL_RESULT (fndecl)))
-#if 0
- /* Enable this for all functions until bug 14107 is fixed properly. */
+ && !DECL_NAME (DECL_RESULT (fndecl))
/* Normally, with -Wreturn-type, flow will complain. Unless we're an
inline function, as we might never be compiled separately. */
&& (DECL_INLINE (fndecl) || processing_template_decl))
-#endif
warning ("no return statement in function returning non-void");
/* Store the end of the function, so that we get good line number
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 5b87620..f2003b6 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -928,12 +928,10 @@ gimplify_return_expr (tree stmt, tree *pre_p)
tree ret_expr = TREE_OPERAND (stmt, 0);
tree result_decl, result;
- if (!ret_expr || TREE_CODE (ret_expr) == RESULT_DECL)
+ if (!ret_expr || TREE_CODE (ret_expr) == RESULT_DECL
+ || ret_expr == error_mark_node)
return GS_ALL_DONE;
- if (ret_expr == error_mark_node)
- return GS_ERROR;
-
if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl))))
result_decl = NULL_TREE;
else
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index 94681c4..e8c951b 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -273,6 +273,7 @@ init_tree_optimization_passes (void)
NEXT_PASS (pass_tree_profile);
NEXT_PASS (pass_init_datastructures);
NEXT_PASS (pass_all_optimizations);
+ NEXT_PASS (pass_warn_function_return);
NEXT_PASS (pass_mudflap_2);
NEXT_PASS (pass_free_datastructures);
NEXT_PASS (pass_expand);
@@ -319,7 +320,6 @@ init_tree_optimization_passes (void)
NEXT_PASS (DUP_PASS (pass_phiopt));
NEXT_PASS (pass_tail_calls);
NEXT_PASS (pass_late_warn_uninitialized);
- NEXT_PASS (pass_warn_function_return);
NEXT_PASS (pass_del_pta);
NEXT_PASS (pass_del_ssa);
NEXT_PASS (pass_nrv);