aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-03-29 20:09:35 +0200
committerJan Hubicka <jh@suse.cz>2021-03-29 20:09:35 +0200
commitdd64aaafe6916ac11ccae3182b4550c8b8f5e066 (patch)
treee497f10aca4e34cdb0b3911e39dcc5fb0de1a00e
parent864caa158f6db6b653c6a88ff32ce5ce0b4660a8 (diff)
downloadgcc-dd64aaafe6916ac11ccae3182b4550c8b8f5e066.zip
gcc-dd64aaafe6916ac11ccae3182b4550c8b8f5e066.tar.gz
gcc-dd64aaafe6916ac11ccae3182b4550c8b8f5e066.tar.bz2
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.
-rw-r--r--gcc/ipa-modref.c6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr99751.c20
2 files changed, 23 insertions, 3 deletions
diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
index 7aaf53b..5f33bb5 100644
--- a/gcc/ipa-modref.c
+++ b/gcc/ipa-modref.c
@@ -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
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr99751.c b/gcc/testsuite/gcc.c-torture/compile/pr99751.c
new file mode 100644
index 0000000..f1d5101
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr99751.c
@@ -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;
+}