aarch64: Fix redundant check in aut insn generation
During the generation of the epilogue of aarch64(aarch64_expand_epilogue), the value of crtl->calls_eh_return does not need to be checked again. This value has been checked during aarch64_return_address_signing_enabled. gcc/ChangeLog: * config/aarch64/aarch64.c (aarch64_expand_epilogue): Remove redundant check for calls_eh_return. * config/aarch64/aarch64.md (*do_return): Likewise. Signed-off-by: Dan Li <ashimida@linux.alibaba.com>
This commit is contained in:
parent
4851c80ce8
commit
14d3140405
|
@ -9076,13 +9076,9 @@ aarch64_expand_epilogue (bool for_sibcall)
|
||||||
2) The RETAA instruction is not available before ARMv8.3-A, so if we are
|
2) The RETAA instruction is not available before ARMv8.3-A, so if we are
|
||||||
generating code for !TARGET_ARMV8_3 we can't use it and must
|
generating code for !TARGET_ARMV8_3 we can't use it and must
|
||||||
explicitly authenticate.
|
explicitly authenticate.
|
||||||
|
|
||||||
3) On an eh_return path we make extra stack adjustments to update the
|
|
||||||
canonical frame address to be the exception handler's CFA. We want
|
|
||||||
to authenticate using the CFA of the function which calls eh_return.
|
|
||||||
*/
|
*/
|
||||||
if (aarch64_return_address_signing_enabled ()
|
if (aarch64_return_address_signing_enabled ()
|
||||||
&& (for_sibcall || !TARGET_ARMV8_3 || crtl->calls_eh_return))
|
&& (for_sibcall || !TARGET_ARMV8_3))
|
||||||
{
|
{
|
||||||
switch (aarch64_ra_sign_key)
|
switch (aarch64_ra_sign_key)
|
||||||
{
|
{
|
||||||
|
|
|
@ -879,8 +879,7 @@
|
||||||
{
|
{
|
||||||
const char *ret = NULL;
|
const char *ret = NULL;
|
||||||
if (aarch64_return_address_signing_enabled ()
|
if (aarch64_return_address_signing_enabled ()
|
||||||
&& (TARGET_PAUTH)
|
&& (TARGET_PAUTH))
|
||||||
&& !crtl->calls_eh_return)
|
|
||||||
{
|
{
|
||||||
if (aarch64_ra_sign_key == AARCH64_KEY_B)
|
if (aarch64_ra_sign_key == AARCH64_KEY_B)
|
||||||
ret = "retab";
|
ret = "retab";
|
||||||
|
|
Loading…
Reference in New Issue