[Darwin, PPC, Mode Iterators 3/n] Update macho_correct_pic.

Drop the expander and use a mode expander on the define_insn
for macho_correct_pic instead.

gcc/ChangeLog:

2019-09-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.md (@macho_correct_pic_<mode>): New,
	replaces the expander and two define_insn entries.
	(@reload_macho_picbase_<mode>): Update gen_macho_correct_pic
	call.
	* config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.

From-SVN: r276196
This commit is contained in:
Iain Sandoe 2019-09-27 19:23:39 +00:00 committed by Iain Sandoe
parent 26a23d11ed
commit 576113abdb
3 changed files with 22 additions and 40 deletions

View File

@ -1,3 +1,11 @@
2019-09-27 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.md (@macho_correct_pic_<mode>): New,
replaces the expander and two define_insn entries.
(@reload_macho_picbase_<mode>): Update gen_macho_correct_pic
call.
* config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.
2019-09-27 David Malcolm <dmalcolm@redhat.com>
* fibonacci_heap.h (fibonacci_heap::empty): Make const.

View File

@ -216,6 +216,16 @@ You should have received a copy of the GNU General Public License
(match_dup 2))]
"")
(define_insn "@macho_correct_pic_<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r")
(plus:P (match_operand:P 1 "gpc_reg_operand" "r")
(unspec:P [(match_operand:P 2 "immediate_operand" "s")
(match_operand:P 3 "immediate_operand" "s")]
UNSPEC_MPIC_CORRECT)))]
"DEFAULT_ABI == ABI_DARWIN"
"addis %0,%1,ha16(%2-%3)\n\taddi %0,%0,lo16(%2-%3)"
[(set_attr "length" "8")])
(define_insn "@load_macho_picbase_<mode>"
[(set (reg:P LR_REGNO)
(unspec:P [(match_operand:P 0 "immediate_operand" "s")
@ -232,44 +242,6 @@ You should have received a copy of the GNU General Public License
[(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")])
(define_expand "macho_correct_pic"
[(set (match_operand 0 "")
(plus (match_operand 1 "")
(unspec [(match_operand 2 "")
(match_operand 3 "")]
UNSPEC_MPIC_CORRECT)))]
"DEFAULT_ABI == ABI_DARWIN"
{
if (TARGET_32BIT)
emit_insn (gen_macho_correct_pic_si (operands[0], operands[1], operands[2],
operands[3]));
else
emit_insn (gen_macho_correct_pic_di (operands[0], operands[1], operands[2],
operands[3]));
DONE;
})
(define_insn "macho_correct_pic_si"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(plus:SI (match_operand:SI 1 "gpc_reg_operand" "r")
(unspec:SI [(match_operand:SI 2 "immediate_operand" "s")
(match_operand:SI 3 "immediate_operand" "s")]
UNSPEC_MPIC_CORRECT)))]
"DEFAULT_ABI == ABI_DARWIN"
"addis %0,%1,ha16(%2-%3)\n\taddi %0,%0,lo16(%2-%3)"
[(set_attr "length" "8")])
(define_insn "macho_correct_pic_di"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(plus:DI (match_operand:DI 1 "gpc_reg_operand" "r")
(unspec:DI [(match_operand:DI 2 "immediate_operand" "s")
(match_operand:DI 3 "immediate_operand" "s")]
16)))]
"DEFAULT_ABI == ABI_DARWIN && TARGET_64BIT"
"addis %0,%1,ha16(%2-%3)\n\taddi %0,%0,lo16(%2-%3)"
[(set_attr "length" "8")])
(define_insn "@reload_macho_picbase_<mode>"
[(set (reg:P LR_REGNO)
(unspec:P [(match_operand:P 0 "immediate_operand" "s")
@ -316,7 +288,8 @@ You should have received a copy of the GNU General Public License
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));
emit_insn (gen_macho_correct_pic (Pmode, picreg, picreg,
picrtx, tmplrtx));
}
else
/* Not using PIC reg, no reload needed. */

View File

@ -10055,7 +10055,8 @@
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));
emit_insn (gen_macho_correct_pic (Pmode, picreg, picreg,
picrtx, tmplabrtx));
}
else
#endif