This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, LRA] Fix PR rtl-optimization 77289, LRA matching constraint problem


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
>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]