https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68964

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rth at gcc dot gnu.org
   Target Milestone|---                         |6.0

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So TM does expand_assign_tm on

# .MEM_47 = VDEF <.MEM_4>
MEM[(double *)elementPtr_1 + 56B] = vect_cst__54;

doing

  else if (store_p && !load_p)
    {
      transaction_subcode_ior (region, GTMA_HAVE_STORE);
      gcall = build_tm_store (loc, lhs, rhs, gsi);
    }

but gcall is NULL and thus

  if (!gcall)
    {
      tree lhs_addr, rhs_addr, tmp;
...
      else
        {
          tmp = NULL_TREE;
          lhs_addr = gimplify_addr (gsi, lhs);
        }
      rhs_addr = gimplify_addr (gsi, rhs);

which builds the address of vect_cst__54 which is obviously not going to work.

Not sure what TM people were thinking of here.  If you really need sth in
memory then you need to create a stack var, store to it and use its address.

Simply doing the above isn't going to work.

Leaving to rth.

Reply via email to