https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65169
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |MOVED --- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- (In reply to Alan Modra from comment #2) > I couldn't reproduce this using svn llvm rev 230301, gcc-5 20150223, and > binutils 2.25.51.20150223. I was building on a power7 box (because that's > where I happened to have my latest gcc build), so used -mcpu=power7 > -mno-strict-align. That ought to trigger the same block move code as > -mcpu=power8, and a quick visual inspection showed that to be the case. > > I'm guessing that the "s/break/ eak/" difference Markus sees comes from > utils/TableGen/IntrinsicEmitter.cpp IntrinsicEmitter::EmitAttributes > if (numAttrs) { > OS << " NumAttrs = " << numAttrs << ";\n"; > OS << " break;\n"; > OS << " }\n"; > > My generated code for the above looked good, and ran properly on power7. > -mcpu=power8 code didn't look much different. > > Markus, are you using gold? (I wasn't.) The strings are in a string merge > section, and I'm wondering if gold miscalculates some string offset. Yes, I was using gold. And indeed using ld.bfd fixes the issue. I will open a binutils bug later. x86_64 gold is fine BTW.