[Bug target/34250] ICE in find_constant_pool_ref

matz at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Nov 28 15:29:00 GMT 2007



------- 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



More information about the Gcc-bugs mailing list