This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 3/4] 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.
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index df945989fe8..d16006e653a 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -1230,7 +1230,8 @@ See RS/6000 and PowerPC Options.
>  -mstack-protector-guard-offset=@var{offset} @gol
>  -mstack-protector-guard-symbol=@var{symbol} -mmitigate-rop @gol
>  -mgeneral-regs-only -mcall-ms2sysv-xlogues @gol
> --mindirect-branch=@var{choice} -mfunction-return==@var{choice}}
> +-mindirect-branch=@var{choice} -mfunction-return==@var{choice} @gol
> +-mindirect-branch-register}
>  
>  @emph{x86 Windows Options}
>  @gccoptlist{-mconsole  -mcygwin  -mno-cygwin  -mdll @gol
> @@ -26861,6 +26862,10 @@ object file.  You can control this behavior for a specific function by
>  using the function attribute @code{function_return}.
>  @xref{Function Attributes}.
>  
> +@item -mindirect-branch-register
> +@opindex -mindirect-branch-register
> +Force indirect call and jump via register.

Again I think this option needs better documentation.  It is not quite clear to me why
it is needed at first place?

Honza


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]