[Darwin, PPC, Mode Iterators 1/n] Use mode iterators in picbase patterns.
This switches the picbase load and reload patterns to use the 'P' mode iterator instead of writing an SI and DI pattern for each. gcc/ChangeLog: 2019-09-24 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/rs6000.md (load_macho_picbase_<mode>): New, using the 'P' mode iterator, replacing the (removed) SI and DI variants. (reload_macho_picbase_<mode>): Likewise. From-SVN: r276107
This commit is contained in:
parent
42eb48017d
commit
dd9ed09905
|
@ -1,3 +1,9 @@
|
|||
2019-09-24 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* config/rs6000/rs6000.md (load_macho_picbase_<mode>): New, using
|
||||
the 'P' mode iterator, replacing the (removed) SI and DI variants.
|
||||
(reload_macho_picbase_<mode>): Likewise.
|
||||
|
||||
2019-09-24 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* config/rs6000/rs6000.md: Move darwin.md include until
|
||||
|
|
|
@ -217,7 +217,7 @@ You should have received a copy of the GNU General Public License
|
|||
"")
|
||||
|
||||
(define_expand "load_macho_picbase"
|
||||
[(set (reg:SI LR_REGNO)
|
||||
[(set (reg LR_REGNO)
|
||||
(unspec [(match_operand 0 "")]
|
||||
UNSPEC_LD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
|
@ -230,9 +230,9 @@ You should have received a copy of the GNU General Public License
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "load_macho_picbase_si"
|
||||
[(set (reg:SI LR_REGNO)
|
||||
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")
|
||||
(define_insn "load_macho_picbase_<mode>"
|
||||
[(set (reg:P LR_REGNO)
|
||||
(unspec:P [(match_operand:P 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_LD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
{
|
||||
|
@ -246,22 +246,6 @@ You should have received a copy of the GNU General Public License
|
|||
[(set_attr "type" "branch")
|
||||
(set_attr "cannot_copy" "yes")])
|
||||
|
||||
(define_insn "load_macho_picbase_di"
|
||||
[(set (reg:DI LR_REGNO)
|
||||
(unspec:DI [(match_operand:DI 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_LD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic && TARGET_64BIT"
|
||||
{
|
||||
#if TARGET_MACHO
|
||||
machopic_should_output_picbase_label (); /* Update for new func. */
|
||||
#else
|
||||
gcc_unreachable ();
|
||||
#endif
|
||||
return "bcl 20,31,%0\n%0:";
|
||||
}
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "cannot_copy" "yes")])
|
||||
|
||||
(define_expand "macho_correct_pic"
|
||||
[(set (match_operand 0 "")
|
||||
(plus (match_operand 1 "")
|
||||
|
@ -301,7 +285,7 @@ You should have received a copy of the GNU General Public License
|
|||
[(set_attr "length" "8")])
|
||||
|
||||
(define_expand "reload_macho_picbase"
|
||||
[(set (reg:SI LR_REGNO)
|
||||
[(set (reg LR_REGNO)
|
||||
(unspec [(match_operand 0 "")]
|
||||
UNSPEC_RELD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
|
@ -314,9 +298,9 @@ You should have received a copy of the GNU General Public License
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_insn "reload_macho_picbase_si"
|
||||
[(set (reg:SI LR_REGNO)
|
||||
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s")
|
||||
(define_insn "reload_macho_picbase_<mode>"
|
||||
[(set (reg:P LR_REGNO)
|
||||
(unspec:P [(match_operand:P 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_RELD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
|
||||
{
|
||||
|
@ -337,29 +321,6 @@ You should have received a copy of the GNU General Public License
|
|||
[(set_attr "type" "branch")
|
||||
(set_attr "cannot_copy" "yes")])
|
||||
|
||||
(define_insn "reload_macho_picbase_di"
|
||||
[(set (reg:DI LR_REGNO)
|
||||
(unspec:DI [(match_operand:DI 0 "immediate_operand" "s")
|
||||
(pc)] UNSPEC_RELD_MPIC))]
|
||||
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic && TARGET_64BIT"
|
||||
{
|
||||
#if TARGET_MACHO
|
||||
if (machopic_should_output_picbase_label ())
|
||||
{
|
||||
static char tmp[64];
|
||||
const char *cnam = machopic_get_function_picbase ();
|
||||
snprintf (tmp, 64, "bcl 20,31,%s\n%s:\n%%0:", cnam, cnam);
|
||||
return tmp;
|
||||
}
|
||||
else
|
||||
#else
|
||||
gcc_unreachable ();
|
||||
#endif
|
||||
return "bcl 20,31,%0\n%0:";
|
||||
}
|
||||
[(set_attr "type" "branch")
|
||||
(set_attr "cannot_copy" "yes")])
|
||||
|
||||
;; We need to restore the PIC register, at the site of nonlocal label.
|
||||
|
||||
(define_insn_and_split "nonlocal_goto_receiver"
|
||||
|
|
Loading…
Reference in New Issue