This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/78411] [7 Regression] FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 21 Nov 2016 13:12:25 +0000
- Subject: [Bug middle-end/78411] [7 Regression] FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6
- Auto-submitted: auto-generated
- References: <bug-78411-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78411
--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 21 Nov 2016, jakub at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78411
>
> --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> Oh, starting with r242550 this FAILs now everywhere. The question is why it
> FAILed for H.J. before r242550.
> So shall we just add -ftree-loop-if-convert to dg-options of this test?
Not sure. Maybe remove it instead? Why does RTL if-conversion not
catch it? Or why does PHI-OPT not catch it:
<bb 5>:
# s_40 = PHI <s_2(4), 0(2)>
# i_35 = PHI <i_3(4), 0(2)>
_25 = MEM[base: products_16(D), index: i_35, step: 8, offset: 0B];
if (_25 > 0)
goto <bb 7>;
else
goto <bb 6>;
<bb 6>:
_17 = -_25;
<bb 7>:
# iftmp.0_13 = PHI <1(5), -1(6)>
# prephitmp_10 = PHI <_25(5), _17(6)>
# prephitmp_9 = PHI <-1(5), 1(6)>
# prephitmp_33 = PHI <4294967295(5), 1(6)>
# prephitmp_32 = PHI <1(5), 4294967295(6)>
_31 = (long long unsigned int) prephitmp_10;
this should be ABS_EXPR<>. I guess the other PHIs get in the way.
Earlier PHI-OPT has too convoluted tests still. The above also
shows some excessive PRE of constants (we're inserting more PHIs
when dealing with a all-constant-arg PHI):
<bb 5>:
- # iftmp.0_12 = PHI <1(4), -1(12)>
- _4 = _3 * iftmp.0_12;
- _5 = (long long unsigned int) _4;
+ # iftmp.0_12 = PHI <1(3), -1(4)>
+ # prephitmp_37 = PHI <_3(3), _36(4)>
+ # prephitmp_38 = PHI <-1(3), 1(4)>
+ # prephitmp_39 = PHI <4294967295(3), 1(4)>
+ # prephitmp_41 = PHI <1(3), 4294967295(4)>
+ _5 = (long long unsigned int) prephitmp_37;
I guess I'll (finally) try to do something about that.