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.