[ARC] Update EH code.
authorClaudiu Zissulescu <claziss@synopsys.com>
Tue, 13 Nov 2018 12:51:19 +0000 (13:51 +0100)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Tue, 13 Nov 2018 12:51:19 +0000 (13:51 +0100)
commit3fd6ae8a2541dad32b03c4c039127f0651dbdf1f
tree87a6d61d752b24a10a840cdc55d7ac597f20e850
parent90b480138a5492776e9fab6e7f95aae874d6a0ea
[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
gcc/ChangeLog
gcc/config/arc/arc-protos.h
gcc/config/arc/arc.c
gcc/config/arc/arc.h
gcc/config/arc/arc.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arc/builtin_eh.c [new file with mode: 0644]