Message ID | 000301d00e23$eadbc520$c0934f60$@com |
---|---|
State | New |
Headers | show |
On Tue, Dec 2, 2014 at 3:34 AM, Wilco Dijkstra <wdijkstr@arm.com> wrote: >> Jeff Law wrote: >> OK with the appropropriate ChangeLog entires. THe original for >> ira-costs.c was fine, so you just need the trivial one for the testcase. > > ChangeLog below - Jiong, could you commit for me please? > > 2014-12-02 Wilco Dijkstra <wdijkstr@arm.com> > > * gcc/ira-costs.c (scan_one_insn): Improve spill cost adjustment. > * gcc/testsuite/gcc.target/aarch64/remat1.c: New testcase. How did you test on Linux/ia32? It introduced many regressions: FAIL: gcc.dg/hoist-register-pressure-3.c scan-rtl-dump hoist "PRE/HOIST: end of bb .* copying expression" FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O1 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O1 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -funroll-loops -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -funroll-loops -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -g -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -g -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -Os -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-1.c -Os -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O1 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O1 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -funroll-loops -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -funroll-loops -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -g -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -g -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -Os -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-3.c -Os -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O1 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O1 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -flto -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -funroll-loops -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -funroll-loops -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -g -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -g -mforce-drap -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -Os -fpic execution test FAIL: gcc.dg/torture/stackalign/setjmp-4.c -Os -mforce-drap -fpic execution test FAIL: gcc.target/i386/ifcvt-onecmpl-abs-1.c scan-assembler cltd FAIL: gcc.target/i386/pr63527.c scan-assembler-not movl[ \t]%[^,]+, %ebx FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_BuiltinLongJmpTest execution test
On Tue, Dec 2, 2014 at 5:51 AM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Tue, Dec 2, 2014 at 3:34 AM, Wilco Dijkstra <wdijkstr@arm.com> wrote: >>> Jeff Law wrote: >>> OK with the appropropriate ChangeLog entires. THe original for >>> ira-costs.c was fine, so you just need the trivial one for the testcase. >> >> ChangeLog below - Jiong, could you commit for me please? >> >> 2014-12-02 Wilco Dijkstra <wdijkstr@arm.com> >> >> * gcc/ira-costs.c (scan_one_insn): Improve spill cost adjustment. >> * gcc/testsuite/gcc.target/aarch64/remat1.c: New testcase. > > How did you test on Linux/ia32? It introduced many regressions: > > FAIL: gcc.dg/hoist-register-pressure-3.c scan-rtl-dump hoist > "PRE/HOIST: end of bb .* copying expression" > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O1 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O1 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O2 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -mforce-drap -fpic execution > test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -funroll-loops -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -fomit-frame-pointer > -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -g -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -O3 -g -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -Os -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-1.c -Os -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O1 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O1 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O2 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -mforce-drap -fpic execution > test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -funroll-loops -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -funroll-loops -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -fomit-frame-pointer > -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -g -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -O3 -g -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -Os -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-3.c -Os -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O1 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O1 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O2 -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -funroll-all-loops -finline-functions -mforce-drap -fpic execution > test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -funroll-loops -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -funroll-loops -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -fomit-frame-pointer > -mforce-drap -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -g -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -O3 -g -mforce-drap -fpic > execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -Os -fpic execution test > FAIL: gcc.dg/torture/stackalign/setjmp-4.c -Os -mforce-drap -fpic > execution test > FAIL: gcc.target/i386/ifcvt-onecmpl-abs-1.c scan-assembler cltd > FAIL: gcc.target/i386/pr63527.c scan-assembler-not movl[ \t]%[^,]+, %ebx > FAIL: g++.dg/asan/asan_test.C -O2 > AddressSanitizer_BuiltinLongJmpTest execution test > I opened: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64151
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 122815b..95d266e 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -1462,12 +1462,11 @@ scan_one_insn (rtx_insn *insn) && ((MEM_P (XEXP (note, 0)) && !side_effects_p (SET_SRC (set))) || (CONSTANT_P (XEXP (note, 0)) - && targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)), - XEXP (note, 0)) + && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (XEXP (note, 0))) && REG_N_SETS (REGNO (SET_DEST (set))) == 1)) && general_operand (SET_SRC (set), GET_MODE (SET_SRC (set)))) { - enum reg_class cl = GENERAL_REGS; + enum reg_class cl = ALL_REGS; rtx reg = SET_DEST (set); int num = COST_INDEX (REGNO (reg)); diff --git a/gcc/testsuite/gcc.target/aarch64/remat1.c b/gcc/testsuite/gcc.target/aarch64/remat1.c new file mode 100644 index 0000000..999577e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/remat1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fomit-frame-pointer -fcaller-saves -ffixed-d8 -ffixed-d9 -ffixed-d10 -ffixed-d11 -ffixed-d12 -ffixed-d13 -ffixed-d14 -ffixed-d15" } */ + +/* Under high register pressure FP immediates should be rematerialized + as literal loads rather than being caller-saved to the stack. */ + +void +g (void); + +float +f (float x) +{ + x += 3.1f; + g (); + x *= 3.1f; + return x; +} + +/* { dg-final { scan-assembler-times "ldr\ts\[0-9]+, .LC0" 2 } } */ +