This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, LRA] Fix PR rtl-optimization 77289, LRA matching constraint problem
- From: Andrew Pinski <pinskia at gmail dot com>
- To: Peter Bergner <bergner at vnet dot ibm dot com>
- Cc: Jeff Law <law at redhat dot com>, Vladimir Makarov <vmakarov at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- Date: Sat, 10 Sep 2016 01:03:42 -0700
- Subject: Re: [PATCH, LRA] Fix PR rtl-optimization 77289, LRA matching constraint problem
- Authentication-results: sourceware.org; auth=none
- References: <c98b7d0e-fc6d-e10d-bfc2-8d120363e1ee@vnet.ibm.com> <34ab09bb-b576-bc87-59bd-5884553d93b4@redhat.com> <5a1c52bc-701a-0aa4-b313-732b42a449da@vnet.ibm.com>
On Fri, Sep 9, 2016 at 6:37 PM, Peter Bergner <bergner@vnet.ibm.com> wrote:
> On 9/9/16 5:51 PM, Jeff Law wrote:
>>
>> On 08/30/2016 10:23 PM, Peter Bergner wrote:
>>>
>>> gcc/
>>> PR rtl-optimization/77289
>>> * lra-constraints.c (get_final_hard_regno): Add support for non hard
>>> register numbers. Remove support for subregs.
>>> (get_hard_regno): Use SUBREG_P. Don't call get_final_hard_regno().
>>> (get_reg_class): Delete removed get_final_hard_regno() argument.
>>> (uses_hard_regs_p): Call get_final_hard_regno().
>>>
>>> gcc/testsuite/
>>> PR rtl-optimization/77289
>>> * gcc.target/powerpc/pr77289.c: New test.
>>
>> OK.
>
>
> Committed as revision 240065. Thanks!
This patch caused many regressions on aarch64-linux-gnu:
gcc.c-torture/compile/20020604-1.c -O1 (test for excess errors)
gcc.c-torture/compile/complex-6.c -O2 (test for excess errors)
gcc.c-torture/compile/complex-6.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
gcc.c-torture/compile/complex-6.c -O3 -g (test for excess errors)
gcc.c-torture/compile/complex-6.c -Os (test for excess errors)
gcc.c-torture/compile/pr22422.c -O1 (test for excess errors)
gcc.c-torture/compile/pr22422.c -O2 (test for excess errors)
gcc.c-torture/compile/pr22422.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
gcc.c-torture/compile/pr22422.c -O3 -g (test for excess errors)
gcc.c-torture/compile/pr22422.c -Os (test for excess errors)
gcc.dg/ipa/ipcp-cstagg-5.c (test for excess errors)
gcc.dg/ipa/ipcp-cstagg-6.c (test for excess errors)
gcc.dg/torture/pr39074.c -Os (test for excess errors)
gcc.dg/torture/pr55882.c -O1 (test for excess errors)
gcc.dg/torture/pr55882.c -O2 (test for excess errors)
gcc.dg/torture/pr55882.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
gcc.dg/torture/pr55882.c -O3 -g (test for excess errors)
gcc.dg/torture/pr55882.c -Os (test for excess errors)
gcc.dg/torture/pr57569.c -O1 (test for excess errors)
gcc.dg/torture/pr57569.c -O2 (test for excess errors)
gcc.dg/torture/pr57569.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
gcc.dg/torture/pr57569.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects (test for excess errors)
gcc.dg/torture/pr57569.c -Os (test for excess errors)
gcc.dg/tree-ssa/ssa-fre-13.c (test for excess errors)
gcc.dg/tree-ssa/ssa-fre-42.c (test for excess errors)
An example ICEs are:
/home/jenkins/workspace/BuildThunderX_native_gcc_upstream/gcc/gcc/testsuite/gcc.c-torture/compile/20020604-1.c:91:1:
error: insn does not satisfy its constraints:
(insn 112 111 113 5 (set (reg:DI 7 x7 [196])
(plus:DI (ashift:DI (reg:DI 7 x7 [194])
(const_int 4 [0x4]))
(reg/f:DI 31 sp))) 189 {*add_lsl_di}
(nil))
/home/jenkins/workspace/BuildThunderX_native_gcc_upstream/gcc/gcc/testsuite/gcc.c-torture/compile/20020604-1.c:91:1:
internal compiler error: in extract_constrain_insn, at recog.c:2212
/home/jenkins/workspace/BuildThunderX_native_gcc_upstream/gcc/gcc/testsuite/gcc.c-torture/compile/pr22422.c:29:1:
error: insn does not satisfy its constraints:
(insn 7 6 12 2 (set (mem/f:DI (reg:DI 0 x0 [ b ]) [2 b_2(D)->a+0 S8 A64])
(reg/f:DI 31 sp))
/home/jenkins/workspace/BuildThunderX_native_gcc_upstream/gcc/gcc/testsuite/gcc.c-torture/compile/pr22422.c:25
50 {*movdi_aarch64}
(nil))
Notice how sp is being used there. That register is not valid in that location.
Thanks,
Andrew
>
> Peter
>
>
>