aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-ref.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-06-07 17:33:34 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2010-06-07 15:33:34 +0000
commitf10ea6402795bce5c74a2a086cbbe27b267f8880 (patch)
tree27f7a4b02c0fe509806c2b0ca767116cf3ebf7fd /gcc/ipa-ref.c
parentdba16b83d4b296964daeb709abdb15bfecfc6ac5 (diff)
downloadgcc-f10ea6402795bce5c74a2a086cbbe27b267f8880.zip
gcc-f10ea6402795bce5c74a2a086cbbe27b267f8880.tar.gz
gcc-f10ea6402795bce5c74a2a086cbbe27b267f8880.tar.bz2
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-ref.c')
-rw-r--r--gcc/ipa-ref.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ipa-ref.c b/gcc/ipa-ref.c
index dd6b009..27c32dc 100644
--- a/gcc/ipa-ref.c
+++ b/gcc/ipa-ref.c
@@ -233,3 +233,11 @@ ipa_clone_refering (struct cgraph_node *dest_node,
dest_node, dest_varpool_node,
ref->use, ref->stmt);
}
+
+/* Return true when execution of REF can load to return from
+ function. */
+bool
+ipa_ref_cannot_lead_to_return (struct ipa_ref *ref)
+{
+ return cgraph_node_cannot_return (ipa_ref_refering_node (ref));
+}