aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-06-22 06:43:55 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-06-22 06:43:55 -0400
commit740ab4a2a56cb1e1d48a31e7926f3c466f0dac5f (patch)
treed0951264177735aac4dc97e93acd800fc3aef5fb /gcc
parente8a8bc249697d3c0d290b3926ab9c1aea89fd17c (diff)
downloadgcc-740ab4a2a56cb1e1d48a31e7926f3c466f0dac5f.zip
gcc-740ab4a2a56cb1e1d48a31e7926f3c466f0dac5f.tar.gz
gcc-740ab4a2a56cb1e1d48a31e7926f3c466f0dac5f.tar.bz2
*** empty log message ***
From-SVN: r1235
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md8
-rw-r--r--gcc/emit-rtl.c11
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index abbdf5b..b3ffcbc 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -535,13 +535,13 @@
(plus:DI (lshift:DI
(zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r"))
(const_int 32))
- (zero_extend:DI (match_operand:SI 2 "register_operand" "*q")))
+ (zero_extend:DI (match_operand:SI 4 "register_operand" "0")))
(match_operand:SI 3 "gpc_reg_operand" "r")))
- (set (match_operand:SI 4 "register_operand" "=*q")
+ (set (match_operand:SI 2 "register_operand" "=*q")
(umod:SI
(plus:DI (lshift:DI
(zero_extend:DI (match_dup 1)) (const_int 32))
- (zero_extend:DI (match_dup 2)))
+ (zero_extend:DI (match_dup 4)))
(match_dup 3)))]
""
@@ -4532,7 +4532,7 @@
(define_insn ""
[(set (pc)
- (match_operand:SI 0 "register_operand" "c,r"))
+ (match_operand:SI 0 "register_operand" "c,l"))
(use (label_ref (match_operand 1 "" "")))]
""
"@
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 95f276f..db9e087 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -2670,6 +2670,17 @@ init_emit ()
regno_reg_rtx[VIRTUAL_STACK_VARS_REGNUM] = virtual_stack_vars_rtx;
regno_reg_rtx[VIRTUAL_STACK_DYNAMIC_REGNUM] = virtual_stack_dynamic_rtx;
regno_reg_rtx[VIRTUAL_OUTGOING_ARGS_REGNUM] = virtual_outgoing_args_rtx;
+
+ /* Indicate that the virtual registers and stack locations are
+ all pointers. */
+ REGNO_POINTER_FLAG (STACK_POINTER_REGNUM) = 1;
+ REGNO_POINTER_FLAG (FRAME_POINTER_REGNUM) = 1;
+ REGNO_POINTER_FLAG (ARG_POINTER_REGNUM) = 1;
+
+ REGNO_POINTER_FLAG (VIRTUAL_INCOMING_ARGS_REGNUM) = 1;
+ REGNO_POINTER_FLAG (VIRTUAL_STACK_VARS_REGNUM) = 1;
+ REGNO_POINTER_FLAG (VIRTUAL_STACK_DYNAMIC_REGNUM) = 1;
+ REGNO_POINTER_FLAG (VIRTUAL_OUTGOING_ARGS_REGNUM) = 1;
}
/* Create some permanent unique rtl objects shared between all functions.