diff options
author | Jan Hubicka <jh@suse.cz> | 2010-06-07 17:33:34 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-06-07 15:33:34 +0000 |
commit | f10ea6402795bce5c74a2a086cbbe27b267f8880 (patch) | |
tree | 27f7a4b02c0fe509806c2b0ca767116cf3ebf7fd /gcc/ipa-reference.c | |
parent | dba16b83d4b296964daeb709abdb15bfecfc6ac5 (diff) | |
download | gcc-f10ea6402795bce5c74a2a086cbbe27b267f8880.tar.gz |
cgraph.c (cgraph_edge_cannot_lead_to_return): Also check if caller is noreturn.
* cgraph.c (cgraph_edge_cannot_lead_to_return): Also check
if caller is noreturn.
* ipa-reference.c (analyze_function): Use ipa_ref_cannot_lead_to_return
* ipa-ref.h (ipa_ref_cannot_lead_to_return): New function.
* ipa-ref.c (ipa_ref_cannot_lead_to_return): New function.
* ipa-pure-const.c (check_decl): Add IPA parameter.
(state_from_flags): New function.
(better_state, worse_state): New functions.
(check_call): When in IPA mode, do not care about callees.
(check_load, check_store): Update.
(check_ipa_load, check_ipa_store): New.
(check_stmt): When in IPA mode, use IPA checkers.
(analyze_function): Use state_from_flags.
(propagate): Check indirect edges and references.
From-SVN: r160380
Diffstat (limited to 'gcc/ipa-reference.c')
-rw-r--r-- | gcc/ipa-reference.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index 8ca06791c23..64ccb4ead27 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -439,6 +439,8 @@ analyze_function (struct cgraph_node *fn) bitmap_set_bit (local->statics_read, DECL_UID (var)); break; case IPA_REF_STORE: + if (ipa_ref_cannot_lead_to_return (ref)) + break; bitmap_set_bit (local->statics_written, DECL_UID (var)); break; case IPA_REF_ADDR: |