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

Reply via email to