http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47606
Aldy Hernandez <aldyh at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2011.02.15 15:36:35 Ever Confirmed|0 |1 --- Comment #1 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2011-02-15 15:36:35 UTC --- [I'm waiting for Richard to comment on this. This is from an email exchange. Recording here, so I don't lose track.] This rather convoluted testcase, has us jumping through hoops that eventually inline a GIMPLE_ASM into the virtual dispose() function. When we do our initial scan of inline asms in the diagnose_tm_blocks pass, inlining has not run, so we don't realize dispose() will eventually contain an inline asm. I'm this close to just adding a sanity pass through the BBs in the final tmmark pass. At least the source would be readable and maintainable. How about instead of ICEing in expand_block_tm() when encountering inline asms, we error out. We have all the context we need to bitch that whatever the inliner did was not right. Or are you sure we could've forseen this ASM ahead of time, so the gcc_unreachable() stands as is?