aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2007-03-25 02:41:54 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2007-03-24 22:41:54 -0400
commite65a3857a5b89f314ceeecb2edd4c244bde3872b (patch)
treebe8bc4ce0f4525d83337e709f78253edfbe04d9e /gcc
parent3303be154cf041e2bd173ef5b2939f300949a7ea (diff)
downloadgcc-e65a3857a5b89f314ceeecb2edd4c244bde3872b.zip
gcc-e65a3857a5b89f314ceeecb2edd4c244bde3872b.tar.gz
gcc-e65a3857a5b89f314ceeecb2edd4c244bde3872b.tar.bz2
darwin.md (load_macho_picbase): Ignore operand 0.
* config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0. (load_macho_picbase_{si,di}): Convert to LR hard reg. (call_indirect_nonlocal_darwin64): Same. (call_nonlocal_darwin64): Same. (call_value_indirect_nonlocal_darwin64): Same. (call_value_nonlocal_darwin64): Same. (sibcall_nonlocal_darwin64): Same. (sibcall_value_nonlocal_darwin64): Same. (sibcall_symbolic_64): Same. (sibcall_value_symbolic_64): Same. * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove LR pseudo. (rs6000_emit_load_toc_table): Same. * config/rs6000/altivec.md (restore_world): Convert to LR hard reg. * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg. (mull_call): Same. (divss_call): Same. (divus_call): Same. (quoss_call): Same. (quous_call): Same. (load_toc_v4_pic_si): Same (load_toc_v4_PIC_1): Same. (load_toc_v4_PIC_1b): Same. (call_indirect_aix{32,64}): Same. (call_value_indirect_aix{32,64}): Same. (call): Same. (call_value): Same. (call_local{32,64}): Same. (call_value_local{32,64}): Same. (call_indirect_nonlocal_aix{32,64}): Same. (call_nonlocal_aix{32,64}): Same. (call_value_indirect_nonlocal_aix{32,64}): Same. (call_value_nonlocal_aix{32,64}): Same. (call_indirect_nonlocal_sysv<mode>): Same. (call_nonlocal_sysv<mode>): Same. (call_value_indirect_nonlocal_sysv<mode>): Same. (call_value_nonlocal_sysv<mode>): Same. (sibcall): Same. (sibcall_local{32,64}): Same. (sibcall_value_local{32,64}): Same. (sibcall_nonlocal_aix{32,64}): Same. (sibcall_value_nonlocal_aix{32,64}): Same. (sibcall_value_nonlocal_aix{32,64}): Same. (sibcall_nonlocal_sysv<mode>): Same. (sibcall_value): Same. (sibcall_value_nonlocal_sysv<mode>): Same. From-SVN: r123193
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog48
-rw-r--r--gcc/config/rs6000/altivec.md2
-rw-r--r--gcc/config/rs6000/darwin.md32
-rw-r--r--gcc/config/rs6000/rs6000.c42
-rw-r--r--gcc/config/rs6000/rs6000.md124
5 files changed, 143 insertions, 105 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a724783..ae81fcd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,51 @@
+2007-03-25 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
+ (load_macho_picbase_{si,di}): Convert to LR hard reg.
+ (call_indirect_nonlocal_darwin64): Same.
+ (call_nonlocal_darwin64): Same.
+ (call_value_indirect_nonlocal_darwin64): Same.
+ (call_value_nonlocal_darwin64): Same.
+ (sibcall_nonlocal_darwin64): Same.
+ (sibcall_value_nonlocal_darwin64): Same.
+ (sibcall_symbolic_64): Same.
+ (sibcall_value_symbolic_64): Same.
+ * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
+ LR pseudo.
+ (rs6000_emit_load_toc_table): Same.
+ * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
+ * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
+ (mull_call): Same.
+ (divss_call): Same.
+ (divus_call): Same.
+ (quoss_call): Same.
+ (quous_call): Same.
+ (load_toc_v4_pic_si): Same
+ (load_toc_v4_PIC_1): Same.
+ (load_toc_v4_PIC_1b): Same.
+ (call_indirect_aix{32,64}): Same.
+ (call_value_indirect_aix{32,64}): Same.
+ (call): Same.
+ (call_value): Same.
+ (call_local{32,64}): Same.
+ (call_value_local{32,64}): Same.
+ (call_indirect_nonlocal_aix{32,64}): Same.
+ (call_nonlocal_aix{32,64}): Same.
+ (call_value_indirect_nonlocal_aix{32,64}): Same.
+ (call_value_nonlocal_aix{32,64}): Same.
+ (call_indirect_nonlocal_sysv<mode>): Same.
+ (call_nonlocal_sysv<mode>): Same.
+ (call_value_indirect_nonlocal_sysv<mode>): Same.
+ (call_value_nonlocal_sysv<mode>): Same.
+ (sibcall): Same.
+ (sibcall_local{32,64}): Same.
+ (sibcall_value_local{32,64}): Same.
+ (sibcall_nonlocal_aix{32,64}): Same.
+ (sibcall_value_nonlocal_aix{32,64}): Same.
+ (sibcall_nonlocal_sysv<mode>): Same.
+ (sibcall_value): Same.
+ (sibcall_value_nonlocal_sysv<mode>): Same.
+
2007-03-24 Paul Brook <paul@codesourcery.com>
* config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index f477979..072e813 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -312,7 +312,7 @@
(define_insn "*restore_world"
[(match_parallel 0 "restore_world_operation"
[(return)
- (use (match_operand:SI 1 "register_operand" "l"))
+ (use (reg:SI 65))
(use (match_operand:SI 2 "call_operand" "s"))
(clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])]
"TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
diff --git a/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md
index c8e3287..ea46ef0 100644
--- a/gcc/config/rs6000/darwin.md
+++ b/gcc/config/rs6000/darwin.md
@@ -245,28 +245,28 @@ Boston, MA 02110-1301, USA. */
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
{
if (TARGET_32BIT)
- emit_insn (gen_load_macho_picbase_si (operands[0], operands[1]));
+ emit_insn (gen_load_macho_picbase_si (operands[1]));
else
- emit_insn (gen_load_macho_picbase_di (operands[0], operands[1]));
+ emit_insn (gen_load_macho_picbase_di (operands[1]));
DONE;
})
(define_insn "load_macho_picbase_si"
- [(set (match_operand:SI 0 "register_operand" "=l")
- (unspec:SI [(match_operand:SI 1 "immediate_operand" "s")
+ [(set (reg:SI 65)
+ (unspec:SI [(match_operand:SI 0 "immediate_operand" "s")
(pc)] UNSPEC_LD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic"
- "bcl 20,31,%1\\n%1:"
+ "bcl 20,31,%0\\n%0:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
(define_insn "load_macho_picbase_di"
- [(set (match_operand:DI 0 "register_operand" "=l")
- (unspec:DI [(match_operand:DI 1 "immediate_operand" "s")
+ [(set (reg:DI 65)
+ (unspec:DI [(match_operand:DI 0 "immediate_operand" "s")
(pc)] UNSPEC_LD_MPIC))]
"(DEFAULT_ABI == ABI_DARWIN) && flag_pic && TARGET_64BIT"
- "bcl 20,31,%1\\n%1:"
+ "bcl 20,31,%0\\n%0:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
@@ -312,7 +312,7 @@ Boston, MA 02110-1301, USA. */
[(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l,c,*l"))
(match_operand 1 "" "g,g,g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
- (clobber (match_scratch:SI 3 "=l,l,l,l"))]
+ (clobber (reg:SI 65))]
"DEFAULT_ABI == ABI_DARWIN && TARGET_64BIT"
{
return "b%T0l";
@@ -324,7 +324,7 @@ Boston, MA 02110-1301, USA. */
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"(DEFAULT_ABI == ABI_DARWIN)
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
{
@@ -342,7 +342,7 @@ Boston, MA 02110-1301, USA. */
(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l,c,*l"))
(match_operand 2 "" "g,g,g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
- (clobber (match_scratch:SI 4 "=l,l,l,l"))]
+ (clobber (reg:SI 65))]
"DEFAULT_ABI == ABI_DARWIN"
{
return "b%T1l";
@@ -355,7 +355,7 @@ Boston, MA 02110-1301, USA. */
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 4 "=l,l"))]
+ (clobber (reg:SI 65))]
"(DEFAULT_ABI == ABI_DARWIN)
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
{
@@ -372,7 +372,7 @@ Boston, MA 02110-1301, USA. */
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s,s"))
(match_operand 1 "" ""))
(use (match_operand 2 "immediate_operand" "O,n"))
- (use (match_operand:SI 3 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(DEFAULT_ABI == ABI_DARWIN)
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
@@ -387,7 +387,7 @@ Boston, MA 02110-1301, USA. */
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s,s"))
(match_operand 2 "" "")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (use (match_operand:SI 4 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(DEFAULT_ABI == ABI_DARWIN)
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
@@ -403,7 +403,7 @@ Boston, MA 02110-1301, USA. */
[(call (mem:SI (match_operand:DI 0 "call_operand" "s,c")) ; 64
(match_operand 1 "" ""))
(use (match_operand 2 "" ""))
- (use (match_operand:SI 3 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
"*
@@ -423,7 +423,7 @@ Boston, MA 02110-1301, USA. */
(call (mem:SI (match_operand:DI 1 "call_operand" "s,c"))
(match_operand 2 "" "")))
(use (match_operand:SI 3 "" ""))
- (use (match_operand:SI 4 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT && DEFAULT_ABI == ABI_DARWIN"
"*
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index d80d061..51ee7c0 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3444,17 +3444,17 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model)
rs6000_emit_move (got, gsym, Pmode);
else
{
- rtx tempLR, tmp3, mem;
+ rtx tmp3, mem;
rtx first, last;
- tempLR = gen_reg_rtx (Pmode);
tmp1 = gen_reg_rtx (Pmode);
tmp2 = gen_reg_rtx (Pmode);
tmp3 = gen_reg_rtx (Pmode);
mem = gen_const_mem (Pmode, tmp1);
- first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym));
- emit_move_insn (tmp1, tempLR);
+ first = emit_insn (gen_load_toc_v4_PIC_1b (gsym));
+ emit_move_insn (tmp1,
+ gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
emit_move_insn (tmp2, mem);
emit_insn (gen_addsi3 (tmp3, tmp1, tmp2));
last = emit_move_insn (got, tmp3);
@@ -13988,7 +13988,7 @@ rs6000_emit_load_toc_table (int fromprolog)
if (TARGET_ELF && TARGET_SECURE_PLT && DEFAULT_ABI != ABI_AIX && flag_pic)
{
char buf[30];
- rtx lab, tmp1, tmp2, got, tempLR;
+ rtx lab, tmp1, tmp2, got;
ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
@@ -14002,13 +14002,11 @@ rs6000_emit_load_toc_table (int fromprolog)
tmp1 = gen_reg_rtx (Pmode);
tmp2 = gen_reg_rtx (Pmode);
}
- tempLR = (fromprolog
- ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
- : gen_reg_rtx (Pmode));
- insn = emit_insn (gen_load_toc_v4_PIC_1 (tempLR, lab));
+ insn = emit_insn (gen_load_toc_v4_PIC_1 (lab));
if (fromprolog)
rs6000_maybe_dead (insn);
- insn = emit_move_insn (tmp1, tempLR);
+ insn = emit_move_insn (tmp1,
+ gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
if (fromprolog)
rs6000_maybe_dead (insn);
insn = emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, got, lab));
@@ -14020,23 +14018,17 @@ rs6000_emit_load_toc_table (int fromprolog)
}
else if (TARGET_ELF && DEFAULT_ABI == ABI_V4 && flag_pic == 1)
{
- rtx tempLR = (fromprolog
- ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
- : gen_reg_rtx (Pmode));
-
- insn = emit_insn (gen_load_toc_v4_pic_si (tempLR));
+ insn = emit_insn (gen_load_toc_v4_pic_si ());
if (fromprolog)
rs6000_maybe_dead (insn);
- insn = emit_move_insn (dest, tempLR);
+ insn = emit_move_insn (dest,
+ gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
if (fromprolog)
rs6000_maybe_dead (insn);
}
else if (TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2)
{
char buf[30];
- rtx tempLR = (fromprolog
- ? gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM)
- : gen_reg_rtx (Pmode));
rtx temp0 = (fromprolog
? gen_rtx_REG (Pmode, 0)
: gen_reg_rtx (Pmode));
@@ -14051,9 +14043,10 @@ rs6000_emit_load_toc_table (int fromprolog)
ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
- rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (tempLR,
- symF)));
- rs6000_maybe_dead (emit_move_insn (dest, tempLR));
+ rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_1 (symF)));
+ rs6000_maybe_dead (emit_move_insn (dest,
+ gen_rtx_REG (Pmode,
+ LINK_REGISTER_REGNUM)));
rs6000_maybe_dead (emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest,
symL,
symF)));
@@ -14063,8 +14056,9 @@ rs6000_emit_load_toc_table (int fromprolog)
rtx tocsym;
tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
- emit_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym));
- emit_move_insn (dest, tempLR);
+ emit_insn (gen_load_toc_v4_PIC_1b (tocsym));
+ emit_move_insn (dest,
+ gen_rtx_REG (Pmode, LINK_REGISTER_REGNUM));
emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest));
}
insn = emit_insn (gen_addsi3 (dest, temp0, dest));
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 75f064a..9a26c37 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -2713,7 +2713,7 @@
(lshiftrt:DI (mult:DI (sign_extend:DI (reg:SI 3))
(sign_extend:DI (reg:SI 4)))
(const_int 32))))
- (clobber (match_scratch:SI 0 "=l"))]
+ (clobber (reg:SI 65))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __mulh"
[(set_attr "type" "imul")])
@@ -2722,7 +2722,7 @@
[(set (reg:DI 3)
(mult:DI (sign_extend:DI (reg:SI 3))
(sign_extend:DI (reg:SI 4))))
- (clobber (match_scratch:SI 0 "=l"))
+ (clobber (reg:SI 65))
(clobber (reg:SI 0))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __mull"
@@ -2733,7 +2733,7 @@
(div:SI (reg:SI 3) (reg:SI 4)))
(set (reg:SI 4)
(mod:SI (reg:SI 3) (reg:SI 4)))
- (clobber (match_scratch:SI 0 "=l"))
+ (clobber (reg:SI 65))
(clobber (reg:SI 0))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __divss"
@@ -2744,9 +2744,9 @@
(udiv:SI (reg:SI 3) (reg:SI 4)))
(set (reg:SI 4)
(umod:SI (reg:SI 3) (reg:SI 4)))
- (clobber (match_scratch:SI 0 "=l"))
+ (clobber (reg:SI 65))
(clobber (reg:SI 0))
- (clobber (match_scratch:CC 1 "=x"))
+ (clobber (match_scratch:CC 0 "=x"))
(clobber (reg:CC 69))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __divus"
@@ -2755,7 +2755,7 @@
(define_insn "quoss_call"
[(set (reg:SI 3)
(div:SI (reg:SI 3) (reg:SI 4)))
- (clobber (match_scratch:SI 0 "=l"))]
+ (clobber (reg:SI 65))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __quoss"
[(set_attr "type" "idiv")])
@@ -2763,9 +2763,9 @@
(define_insn "quous_call"
[(set (reg:SI 3)
(udiv:SI (reg:SI 3) (reg:SI 4)))
- (clobber (match_scratch:SI 0 "=l"))
+ (clobber (reg:SI 65))
(clobber (reg:SI 0))
- (clobber (match_scratch:CC 1 "=x"))
+ (clobber (match_scratch:CC 0 "=x"))
(clobber (reg:CC 69))]
"! TARGET_POWER && ! TARGET_POWERPC"
"bla __quous"
@@ -10482,7 +10482,7 @@
[(set_attr "type" "load")])
(define_insn "load_toc_v4_pic_si"
- [(set (match_operand:SI 0 "register_operand" "=l")
+ [(set (reg:SI 65)
(unspec:SI [(const_int 0)] UNSPEC_TOC))]
"DEFAULT_ABI == ABI_V4 && flag_pic == 1 && TARGET_32BIT"
"bl _GLOBAL_OFFSET_TABLE_@local-4"
@@ -10490,21 +10490,21 @@
(set_attr "length" "4")])
(define_insn "load_toc_v4_PIC_1"
- [(set (match_operand:SI 0 "register_operand" "=l")
- (match_operand:SI 1 "immediate_operand" "s"))
- (use (unspec [(match_dup 1)] UNSPEC_TOC))]
+ [(set (reg:SI 65)
+ (match_operand:SI 0 "immediate_operand" "s"))
+ (use (unspec [(match_dup 0)] UNSPEC_TOC))]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX
&& (flag_pic == 2 || (flag_pic && TARGET_SECURE_PLT))"
- "bcl 20,31,%1\\n%1:"
+ "bcl 20,31,%0\\n%0:"
[(set_attr "type" "branch")
(set_attr "length" "4")])
(define_insn "load_toc_v4_PIC_1b"
- [(set (match_operand:SI 0 "register_operand" "=l")
- (unspec:SI [(match_operand:SI 1 "immediate_operand" "s")]
+ [(set (reg:SI 65)
+ (unspec:SI [(match_operand:SI 0 "immediate_operand" "s")]
UNSPEC_TOCPTR))]
"TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2"
- "bcl 20,31,$+8\\n\\t.long %1-$"
+ "bcl 20,31,$+8\\n\\t.long %0-$"
[(set_attr "type" "branch")
(set_attr "length" "8")])
@@ -10610,7 +10610,7 @@
(use (reg:SI 11))
(set (reg:SI 2)
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
"TARGET_32BIT"
"
{ operands[2] = gen_reg_rtx (SImode); }")
@@ -10632,7 +10632,7 @@
(use (reg:DI 11))
(set (reg:DI 2)
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
"TARGET_64BIT"
"
{ operands[2] = gen_reg_rtx (DImode); }")
@@ -10655,7 +10655,7 @@
(use (reg:SI 11))
(set (reg:SI 2)
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
"TARGET_32BIT"
"
{ operands[3] = gen_reg_rtx (SImode); }")
@@ -10678,7 +10678,7 @@
(use (reg:DI 11))
(set (reg:DI 2)
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
"TARGET_64BIT"
"
{ operands[3] = gen_reg_rtx (DImode); }")
@@ -10688,7 +10688,7 @@
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
(match_operand 1 "" ""))
(use (match_operand 2 "" ""))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
""
"
{
@@ -10758,7 +10758,7 @@
(call (mem:SI (match_operand 1 "address_operand" ""))
(match_operand 2 "" "")))
(use (match_operand 3 "" ""))
- (clobber (scratch:SI))])]
+ (clobber (reg:SI 65))])]
""
"
{
@@ -10838,7 +10838,7 @@
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"(INTVAL (operands[2]) & CALL_LONG) == 0"
"*
{
@@ -10857,7 +10857,7 @@
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
"*
{
@@ -10877,7 +10877,7 @@
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 4 "=l,l"))]
+ (clobber (reg:SI 65))]
"(INTVAL (operands[3]) & CALL_LONG) == 0"
"*
{
@@ -10898,7 +10898,7 @@
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 4 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
"*
{
@@ -10927,7 +10927,7 @@
(use (reg:SI 11))
(set (reg:SI 2)
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (match_scratch:SI 2 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
"b%T0l\;{l|lwz} 2,20(1)"
[(set_attr "type" "jmpreg")
@@ -10937,7 +10937,7 @@
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
(use (match_operand:SI 2 "immediate_operand" "O"))
- (clobber (match_scratch:SI 3 "=l"))]
+ (clobber (reg:SI 65))]
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
@@ -10952,7 +10952,7 @@
(use (reg:DI 11))
(set (reg:DI 2)
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (match_scratch:SI 2 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
"b%T0l\;ld 2,40(1)"
[(set_attr "type" "jmpreg")
@@ -10962,7 +10962,7 @@
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
(use (match_operand:SI 2 "immediate_operand" "O"))
- (clobber (match_scratch:SI 3 "=l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
@@ -10978,7 +10978,7 @@
(use (reg:SI 11))
(set (reg:SI 2)
(mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
"b%T1l\;{l|lwz} 2,20(1)"
[(set_attr "type" "jmpreg")
@@ -10989,7 +10989,7 @@
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
(match_operand 2 "" "g")))
(use (match_operand:SI 3 "immediate_operand" "O"))
- (clobber (match_scratch:SI 4 "=l"))]
+ (clobber (reg:SI 65))]
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
@@ -11005,7 +11005,7 @@
(use (reg:DI 11))
(set (reg:DI 2)
(mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
"b%T1l\;ld 2,40(1)"
[(set_attr "type" "jmpreg")
@@ -11016,7 +11016,7 @@
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
(match_operand 2 "" "g")))
(use (match_operand:SI 3 "immediate_operand" "O"))
- (clobber (match_scratch:SI 4 "=l"))]
+ (clobber (reg:SI 65))]
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
@@ -11034,7 +11034,7 @@
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l,c,*l"))
(match_operand 1 "" "g,g,g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,O,n,n"))
- (clobber (match_scratch:SI 3 "=l,l,l,l"))]
+ (clobber (reg:SI 65))]
"DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_DARWIN"
{
@@ -11053,7 +11053,7 @@
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 3 "=l,l"))]
+ (clobber (reg:SI 65))]
"(DEFAULT_ABI == ABI_DARWIN
|| (DEFAULT_ABI == ABI_V4
&& (INTVAL (operands[2]) & CALL_LONG) == 0))"
@@ -11089,7 +11089,7 @@
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l,c,*l"))
(match_operand 2 "" "g,g,g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,O,n,n"))
- (clobber (match_scratch:SI 4 "=l,l,l,l"))]
+ (clobber (reg:SI 65))]
"DEFAULT_ABI == ABI_V4
|| DEFAULT_ABI == ABI_DARWIN"
{
@@ -11109,7 +11109,7 @@
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (clobber (match_scratch:SI 4 "=l,l"))]
+ (clobber (reg:SI 65))]
"(DEFAULT_ABI == ABI_DARWIN
|| (DEFAULT_ABI == ABI_V4
&& (INTVAL (operands[3]) & CALL_LONG) == 0))"
@@ -11170,7 +11170,7 @@
[(parallel [(call (mem:SI (match_operand 0 "address_operand" ""))
(match_operand 1 "" ""))
(use (match_operand 2 "" ""))
- (use (match_operand 3 "" ""))
+ (use (reg:SI 65))
(return)])]
""
"
@@ -11184,8 +11184,6 @@
gcc_assert (GET_CODE (operands[1]) == CONST_INT);
operands[0] = XEXP (operands[0], 0);
- operands[3] = gen_reg_rtx (SImode);
-
}")
;; this and similar patterns must be marked as using LR, otherwise
@@ -11196,7 +11194,7 @@
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (use (match_operand:SI 3 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(INTVAL (operands[2]) & CALL_LONG) == 0"
"*
@@ -11216,7 +11214,7 @@
[(call (mem:SI (match_operand:DI 0 "current_file_function_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
- (use (match_operand:SI 3 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT && (INTVAL (operands[2]) & CALL_LONG) == 0"
"*
@@ -11237,7 +11235,7 @@
(call (mem:SI (match_operand:SI 1 "current_file_function_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (use (match_operand:SI 4 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(INTVAL (operands[3]) & CALL_LONG) == 0"
"*
@@ -11259,7 +11257,7 @@
(call (mem:SI (match_operand:DI 1 "current_file_function_operand" "s,s"))
(match_operand 2 "" "g,g")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (use (match_operand:SI 4 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT && (INTVAL (operands[3]) & CALL_LONG) == 0"
"*
@@ -11279,7 +11277,7 @@
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
(use (match_operand:SI 2 "immediate_operand" "O"))
- (use (match_operand:SI 3 "register_operand" "l"))
+ (use (reg:SI 65))
(return)]
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
@@ -11292,7 +11290,7 @@
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
(use (match_operand:SI 2 "immediate_operand" "O"))
- (use (match_operand:SI 3 "register_operand" "l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
@@ -11306,7 +11304,7 @@
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" "s"))
(match_operand 2 "" "g")))
(use (match_operand:SI 3 "immediate_operand" "O"))
- (use (match_operand:SI 4 "register_operand" "l"))
+ (use (reg:SI 65))
(return)]
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
@@ -11320,7 +11318,7 @@
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
(match_operand 2 "" "g")))
(use (match_operand:SI 3 "immediate_operand" "O"))
- (use (match_operand:SI 4 "register_operand" "l"))
+ (use (reg:SI 65))
(return)]
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
@@ -11333,7 +11331,7 @@
[(call (mem:SI (match_operand:P 0 "symbol_ref_operand" "s,s"))
(match_operand 1 "" ""))
(use (match_operand 2 "immediate_operand" "O,n"))
- (use (match_operand:SI 3 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_V4)
@@ -11364,7 +11362,7 @@
(call (mem:SI (match_operand 1 "address_operand" ""))
(match_operand 2 "" "")))
(use (match_operand 3 "" ""))
- (use (match_operand 4 "" ""))
+ (use (reg:SI 65))
(return)])]
""
"
@@ -11378,8 +11376,6 @@
gcc_assert (GET_CODE (operands[2]) == CONST_INT);
operands[1] = XEXP (operands[1], 0);
- operands[4] = gen_reg_rtx (SImode);
-
}")
(define_insn "*sibcall_value_nonlocal_sysv<mode>"
@@ -11387,7 +11383,7 @@
(call (mem:SI (match_operand:P 1 "symbol_ref_operand" "s,s"))
(match_operand 2 "" "")))
(use (match_operand:SI 3 "immediate_operand" "O,n"))
- (use (match_operand:SI 4 "register_operand" "l,l"))
+ (use (reg:SI 65))
(return)]
"(DEFAULT_ABI == ABI_DARWIN
|| DEFAULT_ABI == ABI_V4)
@@ -14381,12 +14377,12 @@
(define_insn "*save_fpregs_<mode>"
[(match_parallel 0 "any_parallel_operand"
- [(clobber (match_operand:P 1 "register_operand" "=l"))
- (use (match_operand:P 2 "call_operand" "s"))
- (set (match_operand:DF 3 "memory_operand" "=m")
- (match_operand:DF 4 "gpc_reg_operand" "f"))])]
+ [(clobber (reg:P 65))
+ (use (match_operand:P 1 "call_operand" "s"))
+ (set (match_operand:DF 2 "memory_operand" "=m")
+ (match_operand:DF 3 "gpc_reg_operand" "f"))])]
""
- "bl %z2"
+ "bl %z1"
[(set_attr "type" "branch")
(set_attr "length" "4")])
@@ -14475,12 +14471,12 @@
(define_insn "*return_and_restore_fpregs_<mode>"
[(match_parallel 0 "any_parallel_operand"
[(return)
- (use (match_operand:P 1 "register_operand" "l"))
- (use (match_operand:P 2 "call_operand" "s"))
- (set (match_operand:DF 3 "gpc_reg_operand" "=f")
- (match_operand:DF 4 "memory_operand" "m"))])]
+ (use (reg:P 65))
+ (use (match_operand:P 1 "call_operand" "s"))
+ (set (match_operand:DF 2 "gpc_reg_operand" "=f")
+ (match_operand:DF 3 "memory_operand" "m"))])]
""
- "b %z2")
+ "b %z1")
; This is used in compiling the unwind routines.
(define_expand "eh_return"