Deadly optimization bug (all gcc versions!)

Toon Moene toon@moene.indiv.nluug.nl
Tue Aug 31 23:20:00 GMT 1999


Toon Moene wrote:

> David Edelsohn wrote:

> >  Maybe combine is trying some alternate instructions, failing, and
> >  then not properly restoring the instructions?
> 
> Or the other way around (I see a couple of NOTE_INSN_DELETED in the
> .combine dump where the .flow dump still has something like:
> 
> (insn 4 31 6 (set (reg/v:SI 22)
>         (mem/f:SI (reg:SI 16 %argp) 0)) 48 {movsi+2} (nil)
>     (expr_list:REG_EQUIV (mem/f:SI (reg:SI 16 %argp) 0)
>         (nil)))
> 
> [ Flow is run before combine, isn't it - doesn't combine need some
>   flow graph info to decide whether certain combine's are valid ? ]

Sorry, got this backwards.  Reprise:

Flow runs.
Flow dumps resulting list of insns into .flow dump file
Combine runs.
Combine dumps resulting list of insns into .combine dump file.

Hence:

diff blah.c.flow blah.c.combine

shows the insns added/removed by combine.

Therefore, insns removed were removed by combine.

[ Sigh - shift brain in forward gear ]

-- 
Toon Moene (toon@moene.indiv.nluug.nl)
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
Phone: +31 346 214290; Fax: +31 346 214286
GNU Fortran: http://world.std.com/~burley/g77.html



More information about the Gcc mailing list