[COMMITTED] Fix ifcvt-4.c to not depend on VRP2 asserts.
Commit Message
as discussed elsewhere, gcc.dg/ifcvt-4.c seems to be a flawed testcase
as it is.
it does not use __builtin_expect properly, so edges are predicted
50/50. It also turns out that it only works due to an oddity that
causes the basic blocks to be restructured by the VRP2 pass when it
removes all the ASSERT_EXPRs that it uses. If we run ranger for VRP2,
the testcase fails because the blocks do not get rearranged.
This patch tweaks the testcase so that it uses expect properly and
passes with both classic vrp2, and ranger vrp2. I have tested it on
both powerpc and x86 which seem the be the primaries. Pushed.
Andrew
From d123daec0c237533cf974334d98bc6d357d4273e Mon Sep 17 00:00:00 2001
From: Andrew MacLeod <amacleod@redhat.com>
Date: Mon, 25 Oct 2021 13:34:36 -0400
Subject: [PATCH 3/3] Fix ifcvt-4.c to not depend on VRP2 asserts.
The testcase fails if VRP2 is replaced with a non-assert based VRP because it
accidentally depends on specific IL changes when the asserts are removed. This
removes that dependency.
gcc/testsuite/
* gcc.dg/ifcvt-4.c: Adjust.
---
gcc/testsuite/gcc.dg/ifcvt-4.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
@@ -13,8 +13,7 @@ foo (word x, word y, word a)
word i = x;
word j = y;
/* Try to make taking the branch likely. */
- __builtin_expect (x > y, 1);
- if (x > y)
+ if (__builtin_expect (x > y, 0))
{
i = a;
j = i;
--
2.17.2