------- Comment #14 from mikpe at it dot uu dot se 2010-09-19 15:30 ------- On the trivial sreal.c test case the dumps (-fdump-rtl-all -fdump-tree-all) from stage1 and stage2 start to diverge at `150r.expand':
diff -ru dumps1/sreal.c.150r.expand dumps2/sreal.c.150r.expand --- dumps1/sreal.c.150r.expand 2010-09-19 17:20:07.000000000 +0200 +++ dumps2/sreal.c.150r.expand 2010-09-19 17:20:36.000000000 +0200 @@ -26,8 +26,8 @@ (insn 7 6 8 3 (parallel [ (set (reg:DI 137) - (plus:DI (reg:DI 136) - (reg:DI 136))) + (ashift:DI (reg:DI 136) + (const_int 1 [0x1]))) (clobber (reg:CC 24 cc)) ]) sreal.c:3 -1 (nil)) The immediately preceeding dump (149t.optimized) is as follows for both stages: ;; Function normalize (normalize) normalize (long long unsigned int * sreal_sig) { long long unsigned int D.2004; long long unsigned int D.2003; <bb 2>: D.2003_2 = *sreal_sig_1(D); D.2004_3 = D.2003_2 << 1; *sreal_sig_1(D) = D.2004_3; return; } I'll try mixing stage1 and stage2 .o files next. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45445