mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-18 22:11:41 +08:00
Small retpoline clean-up.
2018-01-18 Martin Liska <mliska@suse.cz> * config/i386/i386.c (indirect_thunk_name): Document that also lfence is emitted. (output_indirect_thunk): Document why both instructions (pause and lfence) are generated. 2018-01-18 Martin Liska <mliska@suse.cz> * gcc.target/i386/indirect-thunk-3.c: Remove duplicate options. * gcc.target/i386/indirect-thunk-4.c: Likewise. * gcc.target/i386/indirect-thunk-6.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-4.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-15.c: Likewise. * gcc.target/i386/ret-thunk-9.c: Likewise. From-SVN: r256846
This commit is contained in:
parent
5b06990f1a
commit
82a7bb2dff
@ -1,3 +1,10 @@
|
||||
2018-01-18 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* config/i386/i386.c (indirect_thunk_name): Document that also
|
||||
lfence is emitted.
|
||||
(output_indirect_thunk): Document why both instructions
|
||||
(pause and lfence) are generated.
|
||||
|
||||
2018-01-18 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/83887
|
||||
|
@ -10826,6 +10826,7 @@ indirect_thunk_name (char name[32], unsigned int regno,
|
||||
call L2
|
||||
L1:
|
||||
pause
|
||||
lfence
|
||||
jmp L1
|
||||
L2:
|
||||
mov %REG, (%sp)
|
||||
@ -10837,6 +10838,7 @@ indirect_thunk_name (char name[32], unsigned int regno,
|
||||
call L2
|
||||
L1:
|
||||
pause
|
||||
lfence
|
||||
jmp L1
|
||||
L2:
|
||||
lea WORD_SIZE(%sp), %sp
|
||||
@ -10864,7 +10866,8 @@ output_indirect_thunk (bool need_bnd_p, unsigned int regno)
|
||||
|
||||
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1);
|
||||
|
||||
/* Pause + lfence. */
|
||||
/* AMD and Intel CPUs prefer each a different instruction as loop filler.
|
||||
Usage of both pause + lfence is compromise solution. */
|
||||
fprintf (asm_out_file, "\tpause\n\tlfence\n");
|
||||
|
||||
/* Jump. */
|
||||
|
@ -1,3 +1,15 @@
|
||||
2018-01-18 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* gcc.target/i386/indirect-thunk-3.c: Remove duplicate options.
|
||||
* gcc.target/i386/indirect-thunk-4.c: Likewise.
|
||||
* gcc.target/i386/indirect-thunk-6.c: Likewise.
|
||||
* gcc.target/i386/indirect-thunk-bnd-4.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-15.c: Likewise.
|
||||
* gcc.target/i386/ret-thunk-9.c: Likewise.
|
||||
|
||||
2018-01-18 Christophe Lyon <christophe.lyon@linaro.org>
|
||||
|
||||
* gcc.target/arm/xor-and.c: Fix dg-options and dg-add-options
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
typedef void (*dispatch_t)(long offset);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
typedef void (*dispatch_t)(long offset);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile { target *-*-linux* } } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -fpic -fno-plt -mindirect-branch=thunk" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fpic -fno-plt -mindirect-branch=thunk" } */
|
||||
|
||||
extern void bar (void);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile { target { *-*-linux* && { ! x32 } } } } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fpic -fno-plt" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fpic -fno-plt" } */
|
||||
|
||||
void bar (char *);
|
||||
char buf[10];
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */
|
||||
/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */
|
||||
|
||||
extern void (*bar) (void);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user