From 8a47615dd04a02fdae9691f5ad73fd5a5530c156 Mon Sep 17 00:00:00 2001 From: hjl Date: Tue, 16 Jan 2018 11:19:51 +0000 Subject: [PATCH 8/9] x86: Add 'V' register operand modifier (documentation) Add 'V', a special modifier which prints the name of the full integer register without '%'. For extern void (*func_p) (void); void foo (void) { asm ("call __x86_indirect_thunk_%V0" : : "a" (func_p)); } it generates: foo: movq func_p(%rip), %rax call __x86_indirect_thunk_rax ret gcc/ Backport from mainline 2018-01-14 H.J. Lu * config/i386/i386.c (print_reg): Print the name of the full integer register without '%'. (ix86_print_operand): Handle 'V'. * doc/extend.texi: Document 'V' modifier. gcc/testsuite/ Backport from mainline 2018-01-14 H.J. Lu * gcc.target/i386/indirect-thunk-register-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256736 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/i386.c | 13 ++++++++++++- gcc/doc/extend.texi | 3 +++ gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c | 13 +++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 46e0a36..9db9e0e 100644 --- a/src/gcc/doc/extend.texi +++ b/src/gcc/doc/extend.texi @@ -8778,6 +8778,9 @@ The table below shows the list of supported modifiers and their effects. @tab @code{2} @end multitable +@code{V} is a special modifier which prints the name of the full integer +register without @code{%}. + @anchor{x86floatingpointasmoperands} @subsubsection x86 Floating-Point @code{asm} Operands