diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-31 16:25:35 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-31 16:25:35 +0000 |
commit | 3ea38c1f35c70c83ce74f3dcd0d20ef54e078dd4 (patch) | |
tree | 7abd6b17d74d7f3258b196f10f26ef8e74c4a1bc /gcc/ipa-pure-const.c | |
parent | 34a510a1f647c486bd213922cd5dc60f9ee6b1a0 (diff) | |
download | ppe42-gcc-3ea38c1f35c70c83ce74f3dcd0d20ef54e078dd4.tar.gz ppe42-gcc-3ea38c1f35c70c83ce74f3dcd0d20ef54e078dd4.zip |
* gimple.c (gimple_call_builtin_p): New function.
* gimple.h (gimple_call_builtin_p): Declare.
* tree-cfg.c (make_edges): Produce edge from BUILT_IN_RETURN
to exit.
(execute_warn_function_return): BUILT_IN_RETURN is return.
(split_critical_edges): Return edges are not critical.
(is_ctrl_altering_stmt): Builtin_in_return is altering.
(gimple_verify_flow_info): Handle built_in_return.
(execute_warn_function_return): Handle built_in_return.
* ipa-pure-const.c (check_call): Ignore builtin_return.
* gcc.dg/builtin-apply4.c: Compile with -Wmissing-return.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160079 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-pure-const.c')
-rw-r--r-- | gcc/ipa-pure-const.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 864e49dc8a9..54238856e90 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -369,6 +369,9 @@ check_call (funct_state local, gimple call, bool ipa) graph. */ if (callee_t) { + /* built_in_return is really just an return statemnt. */ + if (gimple_call_builtin_p (call, BUILT_IN_RETURN)) + return; /* When bad things happen to bad functions, they cannot be const or pure. */ if (setjmp_call_p (callee_t)) |