Reimplement CET intrinsics for rdssp/incssp insn.
authorIgor Tsimbalist <igor.v.tsimbalist@intel.com>
Wed, 14 Feb 2018 15:06:21 +0000 (16:06 +0100)
committerIgor Tsimbalist <itsimbal@gcc.gnu.org>
Wed, 14 Feb 2018 15:06:21 +0000 (16:06 +0100)
commitf8de876d8c7323cbf4c51cbe38e7ea2ac2b4e4e2
treee6870d080a5d225588656a2544bfc32f7646425d
parent87ca401516de990160167da4849cd0b31394237d
Reimplement CET intrinsics for rdssp/incssp insn.

Introduce a couple of new CET intrinsics for reading and updating a
shadow stack pointer (_get_ssp and _inc_ssp). They replace the existing
_rdssp[d|q] and _incssp[d|q] instrinsics.

PR target/84239
* gcc/config/i386/cetintrin.h: Remove _rdssp[d|q] and
add _get_ssp intrinsics. Remove argument from
__builtin_ia32_rdssp[d|q].
* gcc/config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
* gcc/config/i386/i386-builtin.def: Remove argument from
__builtin_ia32_rdssp[d|q].
* gcc/config/i386/i386.c: Use UINT_FTYPE_VOID. Use
ix86_expand_special_args_builtin for _rdssp[d|q].
* gcc/config/i386/i386.md: Remove argument from rdssp[si|di] insn.
Clear register before usage.
* doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
Add documentation for new _get_ssp and _inc_ssp intrinsics.
* testsuite/gcc.target/i386/cet-intrin-3.c: Use new _get_ssp and
_inc_ssp intrinsics.
* testsuite/gcc.target/i386/cet-intrin-4.c: Likewise.
* testsuite/gcc.target/i386/cet-rdssp-1.c: Remove argument from
__builtin_ia32_rdssp[d|q].
* libgcc/config/i386/shadow-stack-unwind.hi (_Unwind_Frames_Extra):
Use new _get_ssp and _inc_ssp intrinsics.

From-SVN: r257660
13 files changed:
gcc/ChangeLog
gcc/config/i386/cetintrin.h
gcc/config/i386/i386-builtin-types.def
gcc/config/i386/i386-builtin.def
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/cet-intrin-3.c
gcc/testsuite/gcc.target/i386/cet-intrin-4.c
gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
libgcc/ChangeLog
libgcc/config/i386/shadow-stack-unwind.h