x86: Add 'V' register operand modifier
authorH.J. Lu <hongjiu.lu@intel.com>
Sun, 14 Jan 2018 14:41:25 +0000 (14:41 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sun, 14 Jan 2018 14:41:25 +0000 (06:41 -0800)
commit6abe11c1a3b9f86398134533560bdc57788a93c9
tree3886085c187311388ba794ae35b93353a782f6af
parentd543c04b795f8af4ebe5b3d5f38156ef4e5734f1
x86: Add 'V' register operand modifier

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/

* 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/

* gcc.target/i386/indirect-thunk-register-4.c: New test.

From-SVN: r256663
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c [new file with mode: 0644]