diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5b69334a26b882c0b57cf3f5e777ece5fd11259a..c81801f289e93e9acacc5e1ad34c0fe7be3990de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com> + + PR target/94748 + * config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove + the check for NOTE_INSN_DELETED_LABEL. + 2020-04-30 Jakub Jelinek <jakub@redhat.com> * configure.ac (--with-documentation-root-url, diff --git a/gcc/config/aarch64/aarch64-bti-insert.c b/gcc/config/aarch64/aarch64-bti-insert.c index aa091c308f617a9eeaff465d6052243dce737262..57663ee23b490162dbe7ffe2f618066e71cea455 100644 --- a/gcc/config/aarch64/aarch64-bti-insert.c +++ b/gcc/config/aarch64/aarch64-bti-insert.c @@ -139,14 +139,10 @@ rest_of_insert_bti (void) insn = NEXT_INSN (insn)) { /* If a label is marked to be preserved or can be a non-local goto - target, it must be protected with a BTI J. The same applies to - NOTE_INSN_DELETED_LABEL since they are basically labels that might - be referenced via variables or constant pool. */ - if ((LABEL_P (insn) + target, it must be protected with a BTI J. */ + if (LABEL_P (insn) && (LABEL_PRESERVE_P (insn) || bb->flags & BB_NON_LOCAL_GOTO_TARGET)) - || (NOTE_P (insn) - && NOTE_KIND (insn) == NOTE_INSN_DELETED_LABEL)) { bti_insn = gen_bti_j (); emit_insn_after (bti_insn, insn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9d5944b688669c08957cb838bc120197fe8d13c3..66ac6705a05db84ad49a0e953dfc7fe3f1a8f883 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com> + + PR target/94748 + * gcc.target/aarch64/pr94748.c: New test. + 2020-04-30 Andreas Krebbel <krebbel@linux.ibm.com> * gcc.target/s390/zvector/vec_load_len_r.c: New test. diff --git a/gcc/testsuite/gcc.target/aarch64/pr94748.c b/gcc/testsuite/gcc.target/aarch64/pr94748.c new file mode 100644 index 0000000000000000000000000000000000000000..2a2850d2fac0757935ae7d38ef080c889ede88ce --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr94748.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ + +__attribute__ ((target("branch-protection=bti"))) +int foo () +{ +label: + return 0; +} + +/* { dg-final { scan-assembler-not {hint (36|38) // bti (j|jc)} } } */