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?