This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch][ARM] Add -mbranch-cost option, and update a few tests
- From: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- To: Christophe Lyon <christophe dot lyon at linaro dot org>
- Cc: Jakub Jelinek <jakub at redhat dot com>, "gcc-patches\@gcc.gnu.org" <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 12 Jan 2018 10:25:06 +0100
- Subject: Re: [Patch][ARM] Add -mbranch-cost option, and update a few tests
- Authentication-results: sourceware.org; auth=none
- References: <CAKdteObgr2tnX4x1CneBwbyWmpr_FBT+ZpeUdNZQpbRTUvQ8vA@mail.gmail.com> <20180110144406.GM1833@tucnak> <CAKdteOagKU+khBBst7k5OygAw0YB-GjQwRHV+qh-dhQ-=+fcQw@mail.gmail.com>
Hi Christophe,
> On 10 January 2018 at 15:44, Jakub Jelinek <jakub@redhat.com> wrote:
>> On Mon, Oct 23, 2017 at 02:30:24PM +0200, Christophe Lyon wrote:
>>> After Jakub's suggestion in PR82120 and PR81184, the attached patch
>>> adds the -mbranch-cost option to the ARM target. My understanding
>>> is that it's intended to be used internally for testing and does not
>>> require user-facing documentation.
>>>
>>> I have updated a few tests, validation on aarch64 & arm targets shows
>>> no regression,
>>> and a few improvements when targeting cortex-a5 or cortex-m3:
>>> gcc.dg/tree-ssa/reassoc-3[3456].c now pass.
>>>
>>> That being said, I'm not sure about the other targets for which I
>>> changed the condition,
>>> and I am also concerned by the fact that it has no impact on
>>> gcc.dg/pr21643.c and gcc.dg/tree-ssa/phi-opt-11.c (PR81184).
>>>
>>> Should I restrict my patch to the only tests where it has an impact
>>> (gcc.dg/tree-ssa/reassoc-3[3456].c) ?
>>
>> Let's change all and watch the effects on all targets in testresults,
>> we can fine tune later on.
>>
> OK, thanks
>
>> Does pr21643.c really fail somewhere on arm*? Tried -mcpu=cortex-a5
>> and don't see the failure in x86_64-linux -> armv7a-hardfloat-linux-gnueabi
>> cross.
>
> Yes, for me still fails on arm-none-linux-gnueabihf
> --with-cpu=cortex-a5 --with-fpu=vfpv3-d16-fp16
>
>>
>>> gcc/ChangeLog:
>>>
>>> 2017-10-23 Christophe Lyon <christophe.lyon@linaro.org>
>>>
>>> * config/arm/arm.opt (-mbranch-cost): New option.
>>> * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
>>> account.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>> 2017-10-23 Christophe Lyon <christophe.lyon@linaro.org>
>>>
>>> * lib/target-supports.exp (check_effective_target_branch_cost):
>>> New function.
>>> * gcc.dg/builtin-bswap-7.c: Use branch_cost effective target.
>>> * gcc.dg/pr21643.c: Likewise.
>>> * gcc.dg/pr46309.c: Likewise.
>>> * gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
>>> * gcc.dg/tree-ssa/phi-opt-2.c: Likewise.
>>> * gcc.dg/tree-ssa/reassoc-32.c: Likewise.
>>> * gcc.dg/tree-ssa/reassoc-33.c: Likewise.
>>> * gcc.dg/tree-ssa/reassoc-34.c: Likewise.
>>> * gcc.dg/tree-ssa/reassoc-35.c: Likewise.
>>> * gcc.dg/tree-ssa/reassoc-36.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-13.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise.
>>> * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise.
>>
>> Ok for trunk.
>>
>> Note, unreviewed patches should be pinged from time to time.
> Sorry, I thought the patch was too crappy ;-)
not at all, but it has two problems:
* The new branch_cost effective-target keyword needs documenting in
sourcebuild.texi, as always.
* The patch caused a regression on non-Linux x86 targets:
FAIL: gcc.dg/tree-ssa/phi-opt-2.c scan-tree-dump-times optimized "if" 1 (found 0 times)
I'm seeing this on i386-pc-solaris2.*, and according to
gcc-testresults it happens on *86-*-freebsd*, too. The reason is
simple: while the original testcase enabled -mbranch-cost for all
i?86-*-* and x86_64-*-* targets, the new branch_cost keyword does so
only for i?86-*-linux* and x86_64-*-linux* for no reason I can see.
Fixing that lets the test PASS on Solaris/x86, too, so I'm installing
the following patch.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2018-01-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/target-supports.exp (check_effective_target_branch_cost):
Accept all x86 targets.
# HG changeset patch
# Parent 76d1f957bcf2be744c67e2ff4587f00e87722cc9
Include all x86 targets in branch_cost effective target
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -8623,7 +8623,7 @@ proc check_effective_target_branch_cost
|| [istarget avr*-*-*]
|| [istarget epiphany*-*-*]
|| [istarget frv*-*-*]
- || [istarget i?86-*-linux*] || [istarget x86_64-*-linux*]
+ || [istarget i?86-*-*] || [istarget x86_64-*-*]
|| [istarget mips*-*-*]
|| [istarget s390*-*-*]
|| [istarget riscv*-*-*]