[PATCH] Improve spillcost of literal pool loads
authorWilco Dijkstra <wdijkstr@arm.com>
Tue, 2 Dec 2014 11:55:08 +0000 (11:55 +0000)
committerJiong Wang <jiwang@gcc.gnu.org>
Tue, 2 Dec 2014 11:55:08 +0000 (11:55 +0000)
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.

From-SVN: r218266

gcc/ChangeLog
gcc/ira-costs.c
gcc/testsuite/ChangeLog

index 91bde4ffa61ab21e620f8b969ada7cd327967ac5..09a541660c5745ecc35e3dcb9757f142b50e49d7 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       * ira-costs.c (scan_one_insn): Improve spill cost adjustment.
+
 2014-12-02  Martin Jambor  <mjambor@suse.cz>
 
        PR ipa/63814
index 2dabead6269c2821c2b4fdcb93a4b26e9f64be93..72c00cccdd2ff8cec4066f96044bde5ca32c641f 100644 (file)
@@ -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));
 
index dff9d0211bdd61264953c0654059816cbabf23b4..a17cc6c298ee447d62cfc9262fe5f53ab2ae261f 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       * gcc.target/aarch64/remat1.c: New testcase.
+
 2014-12-01  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR rtl-optimization/59278