r256662 - in /trunk/gcc: ChangeLog config/i386/...

hjl@gcc.gnu.org hjl@gcc.gnu.org
Sun Jan 14 14:40:00 GMT 2018


Author: hjl
Date: Sun Jan 14 14:40:01 2018
New Revision: 256662

URL: https://gcc.gnu.org/viewcvs?rev=256662&root=gcc&view=rev
Log:
x86: Add -mindirect-branch-register

Add -mindirect-branch-register to force indirect branch via register.
This is implemented by disabling patterns of indirect branch via memory,
similar to TARGET_X32.

-mindirect-branch= and -mfunction-return= tests are updated with
-mno-indirect-branch-register to avoid false test failures when
-mindirect-branch-register is added to RUNTESTFLAGS for "make check".

gcc/

	* config/i386/constraints.md (Bs): Disallow memory operand for
	-mindirect-branch-register.
	(Bw): Likewise.
	* config/i386/predicates.md (indirect_branch_operand): Likewise.
	(GOT_memory_operand): Likewise.
	(call_insn_operand): Likewise.
	(sibcall_insn_operand): Likewise.
	(GOT32_symbol_operand): Likewise.
	* config/i386/i386.md (indirect_jump): Call convert_memory_address
	for -mindirect-branch-register.
	(tablejump): Likewise.
	(*sibcall_memory): Likewise.
	(*sibcall_value_memory): Likewise.
	Disallow peepholes of indirect call and jump via memory for
	-mindirect-branch-register.
	(*call_pop): Replace m with Bw.
	(*call_value_pop): Likewise.
	(*sibcall_pop_memory): Replace m with Bs.
	* config/i386/i386.opt (mindirect-branch-register): New option.
	* doc/invoke.texi: Document -mindirect-branch-register option.

gcc/testsuite/

	* gcc.target/i386/indirect-thunk-1.c (dg-options): Add
	-mno-indirect-branch-register.
	* gcc.target/i386/indirect-thunk-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
	* gcc.target/i386/ret-thunk-10.c: Likewise.
	* gcc.target/i386/ret-thunk-11.c: Likewise.
	* gcc.target/i386/ret-thunk-12.c: Likewise.
	* gcc.target/i386/ret-thunk-13.c: Likewise.
	* gcc.target/i386/ret-thunk-14.c: Likewise.
	* gcc.target/i386/ret-thunk-15.c: Likewise.
	* gcc.target/i386/ret-thunk-9.c: Likewise.
	* gcc.target/i386/indirect-thunk-register-1.c: New test.
	* gcc.target/i386/indirect-thunk-register-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-register-3.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/constraints.md
    trunk/gcc/config/i386/i386.md
    trunk/gcc/config/i386/i386.opt
    trunk/gcc/config/i386/predicates.md
    trunk/gcc/doc/invoke.texi
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
    trunk/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
    trunk/gcc/testsuite/gcc.target/i386/ret-thunk-9.c



More information about the Gcc-cvs mailing list