------- Comment #7 from uweigand at gcc dot gnu dot org  2007-11-28 17:11 
-------
(In reply to comment #4)
> 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.

I'm not sure I see what the point of this is ...

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

Not really, they've always been required on s390.  (Note that on s390x,
and even on s390 with -march=z900 or higher, split constant pool are no
longer necessary.)

I expect that what will happen when the pool overflows is that you get a
linker error because the 12-bit relocation in the displacement field
overflows.  (But maybe this is only a warning, I'm not completely sure
this hasn't changed across different linker versions ...)

Note that if I understand your usage correctly, this should in fact never
occur as you do not generate any code that actually references those
literal pool entries.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34250

Reply via email to