On Thu, Feb 16, 2012 at 7:26 PM, Aldy Hernandez <al...@redhat.com> wrote: > On 02/16/12 12:04, Jakub Jelinek wrote: >> >> On Thu, Feb 16, 2012 at 11:46:33AM -0600, Aldy Hernandez wrote: >>> >>> #GOOD >>> houston:/build/t2/gcc$ ./cc1 a.c -fgnu-tm -O0 -quiet -w >>> In function 'asmfunc', >>> inlined from 'f' at a.c:13:10: >>> a.c:7:3: error: asm not allowed in 'transaction_safe' function >>> >>> #BAD >>> houston:/build/t2/gcc$ ./cc1 a.c -fgnu-tm -O1 -quiet -w >>> a.c: In function 'f': >>> a.c:7:3: error: asm not allowed in 'transaction_safe' function >>> houston:/build/t2/gcc$ >> >> >> Even with -O1 -g ? With -g0 we prune BLOCKs, so the backtraces >> don't work well. > > > Well with -O1 -g the backtrace works for this particular error. But with > -O2 -g, we trigger another error "asm not allowed in atomic transaction", > and no amount of %K fiddling will get me a backtrace. > > But even so, it doesn't seem right to expect users to get a correct error > message only with -g, does it?
Well, you can't expect diagnostics to be perfect with inlining in place. But you can try improving things by looking at what blocks tree-ssa-live.c prunes. Disabling early inlining for TM is a hack, I don't think you want to make people pay the optimizing penalty just because of asm diagnostics. Richard.