------- Comment #12 from bernds at gcc dot gnu dot org 2010-09-16 13:50 -------
(In reply to comment #6)
> So stage1 chooses adds but stage2 and stage3 choose lsls for << of the lower
> half of a long long. Since the behaviour of a stageN xgcc depends on both the
> gcc source code and the compiler used to build it, I have to suspect a source
> code ambiguity (e.g. evaluation order dependence) that the bootstrap compiler
> (gcc-4.4.4 in my case) resolves differently from post-r162417 4.6.
I think it's likely there really is a miscompilation. I've not been able to
get very far trying to set up a native compiler to run on qemu, so it would
help if you could try to narrow it down a bit further.
IIUC, stage1 and stage2 produce different output for some output files, such as
expr.o. You could try to copy object files from stage1 to stage2, then rebuild
the stage2 compiler with these objects, until these differences go away. In
that way, you can determine which file is being miscompiled by stage1. The
next step would be to find code generation differences for that file between
r162417 and r162418.