Commit dd9ed099 by Iain Sandoe Committed by Iain Sandoe

[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
parent 42eb4801
2019-09-24 Iain Sandoe <iain@sandoe.co.uk> 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 * config/rs6000/rs6000.md: Move darwin.md include until
after the definition of the mode iterators. after the definition of the mode iterators.
......
...@@ -217,7 +217,7 @@ You should have received a copy of the GNU General Public License ...@@ -217,7 +217,7 @@ You should have received a copy of the GNU General Public License
"") "")
(define_expand "load_macho_picbase" (define_expand "load_macho_picbase"
[(set (reg:SI LR_REGNO) [(set (reg LR_REGNO)
(unspec [(match_operand 0 "")] (unspec [(match_operand 0 "")]
UNSPEC_LD_MPIC))] UNSPEC_LD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic" "(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
...@@ -230,9 +230,9 @@ You should have received a copy of the GNU General Public License ...@@ -230,9 +230,9 @@ You should have received a copy of the GNU General Public License
DONE; DONE;
}) })
(define_insn "load_macho_picbase_si" (define_insn "load_macho_picbase_<mode>"
[(set (reg:SI LR_REGNO) [(set (reg:P LR_REGNO)
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s") (unspec:P [(match_operand:P 0 "immediate_operand" "s")
(pc)] UNSPEC_LD_MPIC))] (pc)] UNSPEC_LD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic" "(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
{ {
...@@ -246,22 +246,6 @@ You should have received a copy of the GNU General Public License ...@@ -246,22 +246,6 @@ You should have received a copy of the GNU General Public License
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")]) (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" (define_expand "macho_correct_pic"
[(set (match_operand 0 "") [(set (match_operand 0 "")
(plus (match_operand 1 "") (plus (match_operand 1 "")
...@@ -301,7 +285,7 @@ You should have received a copy of the GNU General Public License ...@@ -301,7 +285,7 @@ You should have received a copy of the GNU General Public License
[(set_attr "length" "8")]) [(set_attr "length" "8")])
(define_expand "reload_macho_picbase" (define_expand "reload_macho_picbase"
[(set (reg:SI LR_REGNO) [(set (reg LR_REGNO)
(unspec [(match_operand 0 "")] (unspec [(match_operand 0 "")]
UNSPEC_RELD_MPIC))] UNSPEC_RELD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic" "(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
...@@ -314,9 +298,9 @@ You should have received a copy of the GNU General Public License ...@@ -314,9 +298,9 @@ You should have received a copy of the GNU General Public License
DONE; DONE;
}) })
(define_insn "reload_macho_picbase_si" (define_insn "reload_macho_picbase_<mode>"
[(set (reg:SI LR_REGNO) [(set (reg:P LR_REGNO)
(unspec:SI [(match_operand:SI 0 "immediate_operand" "s") (unspec:P [(match_operand:P 0 "immediate_operand" "s")
(pc)] UNSPEC_RELD_MPIC))] (pc)] UNSPEC_RELD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic" "(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
{ {
...@@ -337,29 +321,6 @@ You should have received a copy of the GNU General Public License ...@@ -337,29 +321,6 @@ You should have received a copy of the GNU General Public License
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")]) (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. ;; We need to restore the PIC register, at the site of nonlocal label.
(define_insn_and_split "nonlocal_goto_receiver" (define_insn_and_split "nonlocal_goto_receiver"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment