diff options
author | 2003-03-15 04:06:37 +0000 | |
---|---|---|
committer | 2003-03-15 04:06:37 +0000 | |
commit | 03fe425ec3c727809eb7f44adecce15ef0146751 (patch) | |
tree | 07035f6b2152be4d5d12ce43f72b69b4c42a3459 | |
parent | Use strlcpy() instead of pre-checking the src len and using strcpy() (diff) | |
download | wireguard-openbsd-03fe425ec3c727809eb7f44adecce15ef0146751.tar.xz wireguard-openbsd-03fe425ec3c727809eb7f44adecce15ef0146751.zip |
New frame addressing (plus (subreg (reg fp)) const) is supported by push_frame_in_operand.
-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)))) |