Fix typo in merge_call_lhs_flags
gcc/ChangeLog: 2021-03-29 Jan Hubicka <hubicka@ucw.cz> * ipa-modref.c (merge_call_lhs_flags): Correct handling of deref. (analyze_ssa_name_flags): Fix typo in comment. gcc/testsuite/ChangeLog: 2021-03-29 Jan Hubicka <hubicka@ucw.cz> * gcc.c-torture/compile/pr99751.c: New test.
This commit is contained in:
parent
864caa158f
commit
dd64aaafe6
@ -1545,9 +1545,9 @@ merge_call_lhs_flags (gcall *call, int arg, int index, bool deref,
|
||||
tree lhs = gimple_call_lhs (call);
|
||||
analyze_ssa_name_flags (lhs, lattice, depth + 1, ipa);
|
||||
if (deref)
|
||||
lattice[index].merge (lattice[SSA_NAME_VERSION (lhs)]);
|
||||
else
|
||||
lattice[index].merge_deref (lattice[SSA_NAME_VERSION (lhs)], false);
|
||||
else
|
||||
lattice[index].merge (lattice[SSA_NAME_VERSION (lhs)]);
|
||||
}
|
||||
/* In the case of memory store we can do nothing. */
|
||||
else
|
||||
@ -1621,7 +1621,7 @@ analyze_ssa_name_flags (tree name, vec<modref_lattice> &lattice, int depth,
|
||||
else if (gcall *call = dyn_cast <gcall *> (use_stmt))
|
||||
{
|
||||
tree callee = gimple_call_fndecl (call);
|
||||
/* Return slot optiomization would require bit of propagation;
|
||||
/* Return slot optimization would require bit of propagation;
|
||||
give up for now. */
|
||||
if (gimple_call_return_slot_opt_p (call)
|
||||
&& gimple_call_lhs (call) != NULL_TREE
|
||||
|
||||
20
gcc/testsuite/gcc.c-torture/compile/pr99751.c
Normal file
20
gcc/testsuite/gcc.c-torture/compile/pr99751.c
Normal file
@ -0,0 +1,20 @@
|
||||
int *ptr1 = 0, **ptr2 = &ptr1;
|
||||
|
||||
int *identity(int *p)
|
||||
{
|
||||
return p;
|
||||
}
|
||||
|
||||
void store_to_c(int *p)
|
||||
{
|
||||
*ptr2 = identity(p);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int f;
|
||||
store_to_c(&f);
|
||||
if (ptr1 != &f)
|
||||
__builtin_abort();
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user