re PR middle-end/51472 (ICE: verify_gimple failed: invalid rhs for gimple memory...
authorAldy Hernandez <aldyh@redhat.com>
Wed, 21 Dec 2011 14:30:07 +0000 (14:30 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Wed, 21 Dec 2011 14:30:07 +0000 (14:30 +0000)
        PR middle-end/51472
        * trans-mem.c (tm_log_add): Use create_tmp_var_reg.

From-SVN: r182588

gcc/ChangeLog
gcc/testsuite/gcc.dg/tm/pr51472.c [new file with mode: 0644]
gcc/trans-mem.c

index 7374a6d7d92c0448d4e3ed69ee5dafa92f1f5c89..c0b6d763f3875ab5f312164f2ae7acca26b2c3a5 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-21  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR middle-end/51472
+       * trans-mem.c (tm_log_add): Use create_tmp_var_reg.
+
 2011-12-21  Martin Jambor  <mjambor@suse.cz>
 
        * tree-into-ssa.c (rewrite_update_stmt): Do not dump extra newlines.
diff --git a/gcc/testsuite/gcc.dg/tm/pr51472.c b/gcc/testsuite/gcc.dg/tm/pr51472.c
new file mode 100644 (file)
index 0000000..2897c3d
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-fgnu-tm -O  --param tm-max-aggregate-size=32" } */
+
+typedef int __attribute__ ((vector_size (16))) vectype;
+vectype v;
+
+void
+foo (int c)
+{
+  vectype *p = __builtin_malloc (sizeof (vectype));
+  __transaction_atomic
+  {
+    *p = v;
+    if (c)
+      __transaction_cancel;
+  }
+}
index 02f8a181dab6e21bcd3c12285c721a4f6f84eedf..c0a8b8c8ac42f9fb726f7aa6b7ea4af4d6a47e53 100644 (file)
@@ -1003,7 +1003,7 @@ tm_log_add (basic_block entry_block, tree addr, gimple stmt)
             special constructors and the like.  */
          && !TREE_ADDRESSABLE (type))
        {
-         lp->save_var = create_tmp_var (TREE_TYPE (lp->addr), "tm_save");
+         lp->save_var = create_tmp_reg (TREE_TYPE (lp->addr), "tm_save");
          add_referenced_var (lp->save_var);
          lp->stmts = NULL;
          lp->entry_block = entry_block;