[Bug target/44900] [4.5 Regression] The variable of SSE will be broken

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Jul 11 11:59:00 GMT 2010



------- Comment #5 from ubizjak at gmail dot com  2010-07-11 11:59 -------
Expand expands with uninitialized register r68:

   41 [r54:SI-0x20]=r73:V4SF
   42 [r54:SI-0x10]=r72:V4SF
>  43 [r56:SI+0x3c]=float_extend(r68:SF)
   44 [r56:SI+0x34]=float_extend([r54:SI-0x8])
   45 [r56:SI+0x2c]=float_extend([r54:SI-0xc])
   46 [r56:SI+0x24]=float_extend([r54:SI-0x10])
   47 [r56:SI+0x1c]=float_extend([r54:SI-0x14])
   48 [r56:SI+0x14]=float_extend([r54:SI-0x18])
   49 [r56:SI+0xc]=float_extend([r54:SI-0x1c])
   50 [r56:SI+0x4]=float_extend([r54:SI-0x20])
   51 [r56:SI]=`*.LC12'
   52 call <...>

.optimized tree dump looks suspicious, load from uninitialized var:

  SR.14_103 = __builtin_ia32_loadups (&data[6]);
  SR.13_104 = __builtin_ia32_loadups (&data[2]);
  a._v1.D.1895.v = SR.13_104;
  a._v2.D.1895.v = SR.14_103;
  a$_v2$D1895$e$0_98 = a._v2.D.1895.e[0];
  a$_v2$D1895$e$1_110 = a._v2.D.1895.e[1];
  a$_v2$D1895$e$2_105 = a._v2.D.1895.e[2];
  v1$D1895$e$0_99 = a._v1.D.1895.e[0];
  v1$D1895$e$1_40 = a._v1.D.1895.e[1];
  v1$D1895$e$2_95 = a._v1.D.1895.e[2];
  v1$D1895$e$3_79 = a._v1.D.1895.e[3];
  D.2043_5 = (double) a$_v2$D1895$e$3_82(D);     <--- here
  D.2045_7 = (double) a$_v2$D1895$e$2_105;
  D.2047_9 = (double) a$_v2$D1895$e$1_110;
  D.2049_11 = (double) a$_v2$D1895$e$0_98;
  D.2051_13 = (double) v1$D1895$e$3_79;
  D.2053_15 = (double) v1$D1895$e$2_95;
  D.2055_17 = (double) v1$D1895$e$1_40;
  D.2057_19 = (double) v1$D1895$e$0_99;

Needs tree expert. CC'd.


-- 

ubizjak at gmail dot com changed:

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


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



More information about the Gcc-bugs mailing list