PowerPC PIC code addressibility tweak
David Edelsohn
dje@watson.ibm.com
Wed Oct 30 08:00:00 GMT 2002
The PowerPC architecture recommends a preferred form for a
branch-and-link instruction that will not return, but used to obtain
addressibility for PIC code. This form does not corrupt the link register
history stack. Darwin already uses this form. This patch converts SVR4
PIC code to use this form as well, as pointed out by Tege.
David
* config/rs6000/rs6000.md (load_toc_v4_PIC_1): Use preferred form
for addressibility.
(load_toc_v4_PIC_1b): Same.
Index: rs6000.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.218
diff -c -p -r1.218 rs6000.md
*** rs6000.md 19 Oct 2002 04:36:30 -0000 1.218
--- rs6000.md 30 Oct 2002 15:52:10 -0000
***************
*** 10272,10278 ****
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1)] 7)]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
! "bl %1\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
--- 10272,10278 ----
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1)] 7)]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
! "bcl 20,31,%1\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
***************
*** 10281,10287 ****
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
! "bl %1\\n\\t.long %2-%1+4\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "8")])
--- 10281,10287 ----
(match_operand:SI 1 "immediate_operand" "s"))
(unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] 6)]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
! "bcl 20,31,%1\\n\\t.long %2-%1+4\\n%1:"
[(set_attr "type" "branch")
(set_attr "length" "8")])
More information about the Gcc-patches
mailing list