@@ -360,7 +360,7 @@ get_asm_expr_operands (funct_state local
for (i = 0; i < gimple_asm_nclobbers (stmt); i++)
{
op = gimple_asm_clobber_op (stmt, i);
- if (simple_cst_equal(TREE_VALUE (op), memory_identifier_string) == 1)
+ if (strcmp (TREE_STRING_POINTER (TREE_VALUE (op)), "memory") == 0)
/* Abandon all hope, ye who enter here. */
local->pure_const_state = IPA_NEITHER;
}
@@ -0,0 +1,22 @@
+/* PR tree-optimization/46491 */
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-ipa-reference" } */
+
+extern void abort (void);
+
+__attribute__((noinline)) int
+foo (int *p)
+{
+ int r;
+ asm ("movl $6, (%1)\n\txorl %0, %0" : "=r" (r) : "r" (p) : "memory");
+ return r;
+}
+
+int
+main (void)
+{
+ int p = 8;
+ if ((foo (&p) ? : p) != 6)
+ abort ();
+ return 0;
+}