i386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 31 May 2019 23:59:16 +0000 (23:59 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Fri, 31 May 2019 23:59:16 +0000 (16:59 -0700)
commit02ed904927f5b2ef1538ff44b504183f4cfe9ff0
treec0f983b10c380cc8a2c896014347c7afc9f432b1
parentd030d4c5a4491c9d9827f67c94a4c914f6d3eb67
i386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL

NOTE_INSN_DELETED_LABEL is used to mark what used to be a 'code_label',
but was not used for other purposes than taking its address which cannot
be used as target for indirect jumps.

Tested on Linux/x86-64 with -fcf-protection.

For x86-64 libc.so on glibc master branch (commit f43b8dd55588c3),

Before: 2961 endbr64
After:  2943 endbr64

gcc/

PR target/89355
* config/i386/i386-features.c (rest_of_insert_endbranch): Remove
NOTE_INSN_DELETED_LABEL check.

gcc/testsuite/

PR target/89355
* gcc.target/i386/cet-label-3.c: New test.
* gcc.target/i386/cet-label-4.c: Likewise.
* gcc.target/i386/cet-label-5.c: Likewise.

Co-Authored-By: Hongtao Liu <hongtao.liu@intel.com>
From-SVN: r271828
gcc/ChangeLog
gcc/config/i386/i386-features.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/cet-label-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/cet-label-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/cet-label-5.c [new file with mode: 0644]