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.