https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22326
--- Comment #16 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- > 2) mad2.c > > float foo (double x, float y, float z) > { > return ( y * fabs (x) + z ); > } > > > mad2.c.098t.cunrolli: > > foo (double x, float y, float z) > { > double _1; > double _2; > double _3; > double _4; > double _5; > float _9; > > <bb 2> [local count: 1073741824]: > _1 = (double) y_6(D); > _2 = ABS_EXPR <x_7(D)>; > _3 = _1 * _2; > _4 = (double) z_8(D); > _5 = _3 + _4; > _9 = (float) _5; > return _9; > > } > > mad2.c.099t.backprop: > > [USE] _9 in return _9; > [USE] _5 in _9 = (float) _5; > _5: convert from float to double not important > [DEF] Recording new information for _5 = _3 + _4; > _5: convert from float to double not important > [USE] _4 in _5 = _3 + _4; > _4: convert from float to double not important > [DEF] Recording new information for _4 = (double) z_8(D); > _4: convert from float to double not important > [USE] _3 in _5 = _3 + _4; > _3: convert from float to double not important > [DEF] Recording new information for _3 = _1 * _2; > _3: convert from float to double not important > [USE] _2 in _3 = _1 * _2; > _2: convert from float to double not important > [DEF] Recording new information for _2 = ABS_EXPR <x_7(D)>; > _2: convert from float to double not important > [USE] _1 in _3 = _1 * _2; > _1: convert from float to double not important > [DEF] Recording new information for _1 = (double) y_6(D); > _1: convert from float to double not important > > Deleting _4 = (double) z_8(D); > Deleting _1 = (double) y_6(D); > > > EMERGENCY DUMP: > > __attribute__((noinline)) > foo (double x, float y, float z) > { > double _2; > double _3; > double _5; > float _9; > > <bb 2> [local count: 1073741824]: > _2 = ABS_EXPR <x_7(D)>; > _3 = _2 * y_6(D); > _5 = _3 + z_8(D); > _9 = (float) _5; > return _9; > > } Maybe I'm misunderstanding the point, but isn't this just an issue with the way that the results of the analysis are applied to the IL, rather than a problem in the analysis itself?