Not really - you handle both ptr and *ptr in the same predicate and
call both "address escaped".  What I suggested was sth like

I think I confused myself and you by asking the wrong question in the first place.

Actually, what I want is to handle VAR_DECL correctly, and your original suggestion of using may_be_aliased() fits the bill. The other calls to ptr_deref_may_alias_global_p() were fine because we have an SSA_NAME.

We're now down to a one-liner :).

How about this?  All TM memory optimization tests fixed, and no regressions.
        PR other/51165
        * trans-mem.c (requires_barrier): Call may_be_aliased.
testsuite/
        PR other/51165
        * gcc.dg/tm/memopt-3.c: Remove xfail.
        * gcc.dg/tm/memopt-4.c: Remove xfail.
        * gcc.dg/tm/memopt-5.c: Remove xfail.
        * gcc.dg/tm/memopt-7.c: Remove xfail.

Index: testsuite/gcc.dg/tm/memopt-3.c
===================================================================
--- testsuite/gcc.dg/tm/memopt-3.c      (revision 183072)
+++ testsuite/gcc.dg/tm/memopt-3.c      (working copy)
@@ -16,5 +16,5 @@ int f()
   return lala.x[0];
 }
 
-/* { dg-final { scan-tree-dump-times "logging: lala.x\\\[i_1\\\]" 1 "tmmark" { 
xfail *-*-* }  } } */
+/* { dg-final { scan-tree-dump-times "logging: lala.x\\\[i_1\\\]" 1 "tmmark" } 
} */
 /* { dg-final { cleanup-tree-dump "tmmark" } } */
Index: testsuite/gcc.dg/tm/memopt-5.c
===================================================================
--- testsuite/gcc.dg/tm/memopt-5.c      (revision 183072)
+++ testsuite/gcc.dg/tm/memopt-5.c      (working copy)
@@ -19,5 +19,5 @@ int f()
   return lala.x[i];
 }
 
-/* { dg-final { scan-tree-dump-times "ITM_LU\[0-9\] \\\(&lala.x\\\[55\\\]" 1 
"tmedge" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "ITM_LU\[0-9\] \\\(&lala.x\\\[55\\\]" 1 
"tmedge" } } */
 /* { dg-final { cleanup-tree-dump "tmedge" } } */
Index: testsuite/gcc.dg/tm/memopt-7.c
===================================================================
--- testsuite/gcc.dg/tm/memopt-7.c      (revision 183072)
+++ testsuite/gcc.dg/tm/memopt-7.c      (working copy)
@@ -17,6 +17,6 @@ int f()
   return lala.x[asdf];
 }
 
-/* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala" 1 "tmedge" { 
xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "lala = tm_save" 1 "tmedge" { xfail *-*-* 
} } } */
+/* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala" 1 "tmedge" } } 
*/
+/* { dg-final { scan-tree-dump-times "lala = tm_save" 1 "tmedge" } } */
 /* { dg-final { cleanup-tree-dump "tmedge" } } */
Index: testsuite/gcc.dg/tm/memopt-4.c
===================================================================
--- testsuite/gcc.dg/tm/memopt-4.c      (revision 183072)
+++ testsuite/gcc.dg/tm/memopt-4.c      (working copy)
@@ -19,6 +19,6 @@ int f()
   return lala.x[i];
 }
 
-/* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala.x\\\[55\\\]" 1 
"tmedge" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "lala.x\\\[55\\\] = tm_save" 1 "tmedge" { 
xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala.x\\\[55\\\]" 1 
"tmedge" } } */
+/* { dg-final { scan-tree-dump-times "lala.x\\\[55\\\] = tm_save" 1 "tmedge" } 
} */
 /* { dg-final { cleanup-tree-dump "tmedge" } } */
Index: trans-mem.c
===================================================================
--- trans-mem.c (revision 183072)
+++ trans-mem.c (working copy)
@@ -1498,7 +1498,7 @@ requires_barrier (basic_block entry_bloc
             lower_sequence_tm altogether.  */
          needs_to_live_in_memory (x)
          /* X escapes.  */
-         || ptr_deref_may_alias_global_p (x))
+         || may_be_aliased (x))
        return true;
       else
        {

Reply via email to