diff options
author | Hiroaki Etoh <etoh@cvs.openbsd.org> | 2003-03-15 04:06:38 +0000 |
---|---|---|
committer | Hiroaki Etoh <etoh@cvs.openbsd.org> | 2003-03-15 04:06:38 +0000 |
commit | 5f15aa007f7abd75c0e9e95984ff0ceda6aa3ca6 (patch) | |
tree | 41b1cf51de4de1567516a33de5286b2661e05caf /gnu | |
parent | f5a7957305ac9d2273318b55c0809a89c963d2b4 (diff) |
New frame addressing (plus (subreg (reg fp)) const) is supported by push_frame_in_operand.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/egcs/gcc/protector.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gnu/egcs/gcc/protector.c b/gnu/egcs/gcc/protector.c index e674a886849..59507f713fb 100644 --- a/gnu/egcs/gcc/protector.c +++ b/gnu/egcs/gcc/protector.c @@ -2281,6 +2281,22 @@ push_frame_in_operand (insn, orig, push_size, boundary) return; } /* + Handle alpha case: + (plus:SI (subreg:SI (reg:DI 63 FP) 0) (const_int 64 [0x40])) + */ + if (CONSTANT_P (XEXP (x, 1)) + && GET_CODE (XEXP (x, 0)) == SUBREG + && SUBREG_REG (XEXP (x, 0)) == frame_pointer_rtx) + { + if (x->used || offset < boundary) + return; + + XEXP (x, 1) = gen_rtx_CONST_INT (VOIDmode, offset + push_size); + x->used = 1; insn_pushed = TRUE; + + return; + } + /* Handle powerpc case: (set (reg x) (plus fp const)) (set (.....) (... (plus (reg x) (const B)))) |