From 4fc1d2629ab373945a30031c1b49bdfa4e9f5f12 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Thu, 26 Sep 2019 18:50:55 +0000 Subject: [PATCH] [Darwin, PPC, Mode Iterators 2/n] Eliminate picbase expanders. We can use the mode iterators directly with an @pattern to avoid the need for an expander that was only there to pass the mode through. gcc/ChangeLog: 2019-09-26 Iain Sandoe * config/rs6000/darwin.md: Replace the expanders for load_macho_picbase and reload_macho_picbase with use of '@' in their respective define_insns. (nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase. * config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass Pmode to gen_load_macho_picbase. * config/rs6000/rs6000.md: Likewise. From-SVN: r276159 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/rs6000/darwin.md | 34 +++----------------------------- gcc/config/rs6000/rs6000-logue.c | 2 +- gcc/config/rs6000/rs6000.md | 2 +- 4 files changed, 15 insertions(+), 33 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1358d4b3542..9bbae7af2e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2019-09-26 Iain Sandoe + + * config/rs6000/darwin.md: Replace the expanders for + load_macho_picbase and reload_macho_picbase with use of '@' + and in their respective define_insns. + (nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase. + * config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass + Pmode to gen_load_macho_picbase. + * config/rs6000/rs6000.md: Likewise. + 2019-09-25 Richard Biener PR tree-optimization/91896 diff --git a/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md index 4a284211afb..a5c5a3af39e 100644 --- a/gcc/config/rs6000/darwin.md +++ b/gcc/config/rs6000/darwin.md @@ -216,21 +216,7 @@ You should have received a copy of the GNU General Public License (match_dup 2))] "") -(define_expand "load_macho_picbase" - [(set (reg LR_REGNO) - (unspec [(match_operand 0 "")] - UNSPEC_LD_MPIC))] - "(DEFAULT_ABI == ABI_DARWIN) && flag_pic" -{ - if (TARGET_32BIT) - emit_insn (gen_load_macho_picbase_si (operands[0])); - else - emit_insn (gen_load_macho_picbase_di (operands[0])); - - DONE; -}) - -(define_insn "load_macho_picbase_" +(define_insn "@load_macho_picbase_" [(set (reg:P LR_REGNO) (unspec:P [(match_operand:P 0 "immediate_operand" "s") (pc)] UNSPEC_LD_MPIC))] @@ -284,21 +270,7 @@ You should have received a copy of the GNU General Public License "addis %0,%1,ha16(%2-%3)\n\taddi %0,%0,lo16(%2-%3)" [(set_attr "length" "8")]) -(define_expand "reload_macho_picbase" - [(set (reg LR_REGNO) - (unspec [(match_operand 0 "")] - UNSPEC_RELD_MPIC))] - "(DEFAULT_ABI == ABI_DARWIN) && flag_pic" -{ - if (TARGET_32BIT) - emit_insn (gen_reload_macho_picbase_si (operands[0])); - else - emit_insn (gen_reload_macho_picbase_di (operands[0])); - - DONE; -}) - -(define_insn "reload_macho_picbase_" +(define_insn "@reload_macho_picbase_" [(set (reg:P LR_REGNO) (unspec:P [(match_operand:P 0 "immediate_operand" "s") (pc)] UNSPEC_RELD_MPIC))] @@ -342,7 +314,7 @@ You should have received a copy of the GNU General Public License ASM_GENERATE_INTERNAL_LABEL(tmplab, "Lnlgr", ++n); tmplrtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (tmplab)); - emit_insn (gen_reload_macho_picbase (tmplrtx)); + emit_insn (gen_reload_macho_picbase (Pmode, tmplrtx)); emit_move_insn (picreg, gen_rtx_REG (Pmode, LR_REGNO)); emit_insn (gen_macho_correct_pic (picreg, picreg, picrtx, tmplrtx)); } diff --git a/gcc/config/rs6000/rs6000-logue.c b/gcc/config/rs6000/rs6000-logue.c index 633a253e439..e98893a440c 100644 --- a/gcc/config/rs6000/rs6000-logue.c +++ b/gcc/config/rs6000/rs6000-logue.c @@ -3809,7 +3809,7 @@ rs6000_emit_prologue (void) if (!info->lr_save_p) emit_move_insn (gen_rtx_REG (Pmode, 0), lr); - emit_insn (gen_load_macho_picbase (src)); + emit_insn (gen_load_macho_picbase (Pmode, src)); emit_move_insn (gen_rtx_REG (Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM), diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 4dbf85bbc95..c5443bab9e8 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -10053,7 +10053,7 @@ CODE_LABEL_NUMBER (operands[0])); tmplabrtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (tmplab)); - emit_insn (gen_load_macho_picbase (tmplabrtx)); + emit_insn (gen_load_macho_picbase (Pmode, tmplabrtx)); emit_move_insn (picreg, gen_rtx_REG (Pmode, LR_REGNO)); emit_insn (gen_macho_correct_pic (picreg, picreg, picrtx, tmplabrtx)); }