https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67281
Bug ID: 67281 Summary: HTM builtins aren't treated as compiler barriers on powerpc Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: tuliom at linux dot vnet.ibm.com Target Milestone: --- Depending on the level of optimization, GCC moves a memory access outside a transaction which breaks the atomicity of the transaction. This is a small testcase that reproduces this behavior: $ cat tbegin-barrier.c long foo (long dest, long src0, long src1, long tries) { long i; for (i = 0; i < tries; i++) { __builtin_tbegin (0); dest = src0 + src1; __builtin_tend (0); } return dest; } compiling using: -O2 -S -mcpu=power8 tbegin-barrier.c gives foo: cmpdi 0,6,0 blelr 0 mtctr 6 add 3,4,5 .p2align 4,,15 .L3: tbegin. 0 tend. 0 bdnz .L3 blr