x86-64: Use R10 for profiling large model
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 7 Jan 2021 22:27:49 +0000 (14:27 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Jan 2021 12:51:57 +0000 (04:51 -0800)
commit1b885264a48dcd71b7aeb26c0abeb91246724897
tree312f19cb7205606a2260efd56bfd81ec7c1fb59f
parent8f1cb70d7ca6a8da7f6bc7f43fb5e758c0ce88b5
x86-64: Use R10 for profiling large model

R10 is caller-saved.  Although it can be used as a static chain register,
it is preserved when calling mcount for nested functions.  Use R10 as a
scratch register to call mcount in large model.

gcc/

PR target/98482
* config/i386/i386.c (x86_function_profiler): Use R10 to call
mcount in large model.  Sorry for large model with PIC.

gcc/testsuite/

PR target/98482
* gcc.target/i386/pr98482-1.c: New test.
* gcc.target/i386/pr98482-1.c: Likewise.
gcc/config/i386/i386.c
gcc/testsuite/gcc.target/i386/pr98482-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr98482-2.c [new file with mode: 0644]