https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61207
kugan at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kugan at gcc dot gnu.org --- Comment #7 from kugan at gcc dot gnu.org --- For the testcase in comment #6, it works if i use -fno-tree-sra. diff -u6 nok/pr1314.c.022t.forwprop1 nok/pr1314.c.024t.esra --- nok/pr1314.c.022t.forwprop1 2015-03-07 16:16:43.839799627 +1100 +++ nok/pr1314.c.024t.esra 2015-03-07 16:16:43.839799627 +1100 @@ -25,24 +25,38 @@ } ;; Function virtual A C<int>::_ZTv0_n12_NK1CIiE5m_fn1Ev() const (_ZTv0_n12_NK1CIiE5m_fn1Ev, funcdef_no=3, decl_uid=4649, symbol_order=12) +Created a replacement for D.4707 offset: 0, size: 32: SR.6 +Created a replacement for D.4707 offset: 32, size: 32: SR.7 +Removing load: <retval> = D.4707; + +Symbols to be put in SSA form +{ D.4697 D.4708 D.4709 } +Incremental SSA update started at block: 0 +Number of blocks in CFG: 3 +Number of blocks to update: 2 ( 67%) + + virtual A C<int>::_ZTv0_n12_NK1CIiE5m_fn1Ev() const (const struct C * const this) { + float SR.7; + float SR.6; struct A D.4707; const struct C * adjusted_this.3; int (*<Tdf0>) () vcalloffset.2; int (*<Tdf0>) () * vtableaddr.1; int (*<Tdf0>) () * * vptr.0; struct A <retval>; <bb 2>: - D.4707.xp = 0.0; - D.4707.yp = 0.0; - <retval> = D.4707; + SR.6_12 = 0.0; + SR.7_11 = 0.0; + MEM[(struct A *)&<retval>] = SR.6_12; + MEM[(struct A *)&<retval> + 4B] = SR.7_11; return <retval>; }