------- Comment #3 from uweigand at gcc dot gnu dot org  2007-11-28 13:36 
-------
Hi Michael,

the problem is that there is an implicit assumption throughout the code
that you can have at most one pool constant per instruction.  For example,
the pool size / splitting heuristics assume that.  I think with your patch
as is, you can find examples where it will attempt to add 2 constants to
the current pool chunk even though it only has room for 1 left.

This could probably be fixed by reworking some of the heuristics (e.g. 
check *first* how many constants an insn will require, and start up a
new pool early if required).  But that can be a bit tricky ...

What fundamentally cannot be fixed is the extreme case where the single
instruction uses so many constants that they don't fit into a pool chunk
even by themselves.  We can only reload the base register to point to a
different chunk once before every insn.

Can you elaborate why this occurs in "normal" code (without inline asm)?


-- 

uweigand at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |uweigand at gcc dot gnu dot
                   |                            |org


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

Reply via email to