------- Comment #4 from matz at gcc dot gnu dot org 2007-11-28 15:28 ------- What I meant with "normal" code is by using inline asms. As it stands it's impossible to write inline asm instructions having more than one literal pool operand. I consider this normal use of the capabilities GCC gives you.
However with one of our internal patches (which enforces arguments live) we use inline asms internally, which then happens to hit this problem fairly easily. That's how we triggered this and why I investigated there. For reference, our hacky approach to enforce liveness of arguments is by using them as operands of an inline asm, which we insert as first instruction in every function. When those are inlined and arguments seen as constant (e.g. function names, __func__) it quickly happens that there are more than one constant pool ref in one inline asm. But I see what you are saying regarding the possibility of overflowing the pool inside one instruction. Will the compiler ICE in that situation or will it silently generate wrong code? If the former I'm willing to accept that risk for now, after all split constant pools are relatively new anyway, IIRC. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34250