[Darwin, PPC] Fix PR71496 by marking pic base loads as non-copyable.

The Darwin pic base loads (and reloads for non-local-gotos) are not
validly copied (since the pic base label would be duplicated).  Thus, 
mark the pic base {re-}loads as non-copyable.

gcc/

2016-12-11  Iain Sandoe  <iain@codesourcery.com>

	PR rtl-optimization/71496
	* config/rs6000/darwin.md (load_macho_picbase_si): Mark as non-
	copyable.  (load_macho_picbase_di, reload_macho_picbase_si,
	reload_macho_picbase_di): Likewise.

From-SVN: r243532
This commit is contained in:
Iain Sandoe 2016-12-11 19:24:46 +00:00 committed by Iain Sandoe
parent 84c9e5ff79
commit 38dce2c34c
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2016-12-11 Iain Sandoe <iain@codesourcery.com>
PR rtl-optimization/71496
* config/rs6000/darwin.md (load_macho_picbase_si): Mark as non-
copyable. (load_macho_picbase_di, reload_macho_picbase_si,
reload_macho_picbase_di): Likewise.
2012-12-11 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_callee_copies): New function.

View File

@ -265,6 +265,7 @@ You should have received a copy of the GNU General Public License
return "bcl 20,31,%0\\n%0:";
}
[(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")
(set_attr "length" "4")])
(define_insn "load_macho_picbase_di"
@ -281,6 +282,7 @@ You should have received a copy of the GNU General Public License
return "bcl 20,31,%0\\n%0:";
}
[(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")
(set_attr "length" "4")])
(define_expand "macho_correct_pic"
@ -416,6 +418,7 @@ You should have received a copy of the GNU General Public License
return "bcl 20,31,%0\\n%0:";
}
[(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")
(set_attr "length" "4")])
(define_insn "reload_macho_picbase_di"
@ -439,6 +442,7 @@ You should have received a copy of the GNU General Public License
return "bcl 20,31,%0\\n%0:";
}
[(set_attr "type" "branch")
(set_attr "cannot_copy" "yes")
(set_attr "length" "4")])
;; We need to restore the PIC register, at the site of nonlocal label.