[PATCH] aarch64: Fix PR97638

Currently the testcase in the patch was failing to produce
a 'bti c' at the beginning of the function. This was because
in aarch64_pac_insn_p, we were wrongly returning at the first
check!

2020-10-30  Sudakshina Das  <sudi.das@arm.com>

gcc/ChangeLog:

	PR target/97638
	* config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Update
	return value on INSN_P check.

gcc/testsuite/ChangeLog:

	PR target/97638
	* gcc.target/aarch64/pr97638.c: New test.a
This commit is contained in:
Sudakshina Das 2020-11-02 15:52:22 +00:00
parent e881774d0d
commit ce99142c11
2 changed files with 18 additions and 1 deletions

View File

@ -95,7 +95,7 @@ static bool
aarch64_pac_insn_p (rtx x)
{
if (!INSN_P (x))
return x;
return false;
subrtx_var_iterator::array_type array;
FOR_EACH_SUBRTX_VAR (iter, array, PATTERN (x), ALL)

View File

@ -0,0 +1,17 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mbranch-protection=bti" } */
char *foo (const char *s, const int c)
{
const char *p = 0;
for (;;)
{
if (*s == c)
p = s;
if (p != 0 || *s++ == 0)
break;
}
return (char *)p;
}
/* { dg-final { scan-assembler "hint\t34" } } */