Commit 55e99d52 by Paolo Bonzini Committed by Paolo Bonzini

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
parent 2a9dc917
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
......
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.
......
......@@ -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
......
......@@ -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
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment