aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r--gcc/tree-ssa-alias.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 4cfe3e2..8c63e3b 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -2529,14 +2529,16 @@ ref_maybe_used_by_call_p_1 (gcall *call, ao_ref *ref, bool tbaa_p)
if (callee != NULL_TREE && VAR_P (base) && TREE_STATIC (base))
{
struct cgraph_node *node = cgraph_node::get (callee);
- bitmap not_read;
+ bitmap read;
+ int id;
/* FIXME: Callee can be an OMP builtin that does not have a call graph
node yet. We should enforce that there are nodes for all decls in the
IL and remove this check instead. */
if (node
- && (not_read = ipa_reference_get_not_read_global (node))
- && bitmap_bit_p (not_read, ipa_reference_var_uid (base)))
+ && (id = ipa_reference_var_uid (base)) != -1
+ && (read = ipa_reference_get_read_global (node))
+ && !bitmap_bit_p (read, id))
goto process_args;
}
@@ -2924,11 +2926,13 @@ call_may_clobber_ref_p_1 (gcall *call, ao_ref *ref)
if (callee != NULL_TREE && VAR_P (base) && TREE_STATIC (base))
{
struct cgraph_node *node = cgraph_node::get (callee);
- bitmap not_written;
+ bitmap written;
+ int id;
if (node
- && (not_written = ipa_reference_get_not_written_global (node))
- && bitmap_bit_p (not_written, ipa_reference_var_uid (base)))
+ && (id = ipa_reference_var_uid (base)) != -1
+ && (written = ipa_reference_get_written_global (node))
+ && !bitmap_bit_p (written, id))
return false;
}