diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2018-11-13 13:51:19 +0100 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2018-11-13 13:51:19 +0100 |
commit | 3fd6ae8a2541dad32b03c4c039127f0651dbdf1f (patch) | |
tree | 87a6d61d752b24a10a840cdc55d7ac597f20e850 /gcc/config/arc/arc-protos.h | |
parent | 90b480138a5492776e9fab6e7f95aae874d6a0ea (diff) | |
download | gcc-3fd6ae8a2541dad32b03c4c039127f0651dbdf1f.zip gcc-3fd6ae8a2541dad32b03c4c039127f0651dbdf1f.tar.gz gcc-3fd6ae8a2541dad32b03c4c039127f0651dbdf1f.tar.bz2 |
[ARC] Update EH code.
Our ABI says the blink is pushed first on stack followed by an unknown
number of register saves, and finally by fp. Hence we cannot use the
EH_RETURN_ADDRESS macro as the stack is not finalized at that moment.
The alternative is to use the eh_return pattern and to initialize all
the bits after register allocation when the stack layout is finalized.
gcc/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (arc_eh_return_address_location): Repurpose it
to fit the eh_return pattern.
* config/arc/arc.md (eh_return): Define.
(VUNSPEC_ARC_EH_RETURN): Likewise.
* config/arc/arc-protos.h (arc_eh_return_address_location): Match
new implementation.
* config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.
testsuite/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/builtin_eh.c: New test.
From-SVN: r266066
Diffstat (limited to 'gcc/config/arc/arc-protos.h')
-rw-r--r-- | gcc/config/arc/arc-protos.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h index e653f7f..a9de6d5 100644 --- a/gcc/config/arc/arc-protos.h +++ b/gcc/config/arc/arc-protos.h @@ -109,7 +109,7 @@ extern bool arc_legitimize_reload_address (rtx *, machine_mode, int, int); extern void arc_secondary_reload_conv (rtx, rtx, rtx, bool); extern void arc_cpu_cpp_builtins (cpp_reader *); extern bool arc_store_addr_hazard_p (rtx_insn *, rtx_insn *); -extern rtx arc_eh_return_address_location (void); +extern void arc_eh_return_address_location (rtx); extern bool arc_is_jli_call_p (rtx); extern void arc_file_end (void); extern bool arc_is_secure_call_p (rtx); |