This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Improve spillcost of literal pool loads
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Wilco Dijkstra <wdijkstr at arm dot com>
- Cc: Jiong Wang <Jiong dot Wang at arm dot com>, Jeff Law <law at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 3 Dec 2014 05:18:47 -0800
- Subject: Re: [PATCH] Improve spillcost of literal pool loads
- Authentication-results: sourceware.org; auth=none
- References: <002201cff37b$5145f560$f3d1e020$ at com> <545152C7 dot 40405 at redhat dot com> <000201d00b15$0dc16020$29442060$ at com> <547CA60A dot 7030708 at redhat dot com> <000301d00e23$eadbc520$c0934f60$ at com> <CAMe9rOrkYQ-x9bE+XJ3b2+NdpvUAndZAmi_cegk8rYXZrauNbQ at mail dot gmail dot com> <CAMe9rOrYOx41XyR8SZOT7CSGTHZdF1WR+zsp7YT9AqRUZyLPMQ at mail dot gmail dot com>
On Tue, Dec 2, 2014 at 5:55 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> 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
>
As suggested in the PR, I checked in this patch to revert r218266.
Please run "make check" on Linux/ia32 and -m32 test on Linux/x86-64
next time.
Thanks.
--
H.J.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b688d82..cd2eb77 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/64151
+ PR rtl-optimization/64156
+ * ira-costs.c (scan_one_insn): Revert r218266.
+
2014-12-03 Alan Lawrence <alan.lawrence@arm.com>
* config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>, orn<mode>3,
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 72c00cc..2dabead 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1462,11 +1462,12 @@ scan_one_insn (rtx_insn *insn)
&& ((MEM_P (XEXP (note, 0))
&& !side_effects_p (SET_SRC (set)))
|| (CONSTANT_P (XEXP (note, 0))
- && (! flag_pic || LEGITIMATE_PIC_OPERAND_P (XEXP (note, 0)))
+ && targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)),
+ 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 = ALL_REGS;
+ enum reg_class cl = GENERAL_REGS;
rtx reg = SET_DEST (set);
int num = COST_INDEX (REGNO (reg));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 61427fc..a4ec974 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/64151
+ PR rtl-optimization/64156
+ * gcc.target/aarch64/remat1.c: Removed. Revert r218267.
+
2014-12-03 Tom de Vries <tom@codesourcery.com>
PR rtl-optimization/63957
diff --git a/gcc/testsuite/gcc.target/aarch64/remat1.c
b/gcc/testsuite/gcc.target/aarch64/remat1.c
deleted file mode 100644
index 999577e..0000000
--- a/gcc/testsuite/gcc.target/aarch64/remat1.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* { 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 } } */
-