On Visium, the compiler sometimes emits a NOP to avoid a pipeline hazard. Tested on visium-elf and x86_64-suse-linux, applied on the mainline.
2018-01-16 Eric Botcazou <ebotca...@adacore.com> * c-c++-common/patchable_function_entry-decl.c: Use 3 NOPs on Visium. * c-c++-common/patchable_function_entry-default.c: Use 4 NOPs on Visium. * c-c++-common/patchable_function_entry-definition.c: Use 2 NOPs on Visium. -- Eric Botcazou
Index: c-c++-common/patchable_function_entry-decl.c =================================================================== --- c-c++-common/patchable_function_entry-decl.c (revision 256562) +++ c-c++-common/patchable_function_entry-decl.c (working copy) @@ -1,7 +1,8 @@ /* { dg-do compile { target { ! nvptx*-*-* } } } */ /* { dg-options "-O2 -fpatchable-function-entry=3,1" } */ -/* { dg-final { scan-assembler-times "nop" 2 { target { ! alpha*-*-* } } } } */ +/* { dg-final { scan-assembler-times "nop" 2 { target { ! { alpha*-*-* visium-*-* } } } } } */ /* { dg-final { scan-assembler-times "bis" 2 { target alpha*-*-* } } } */ +/* { dg-final { scan-assembler-times "nop" 3 { target visium-*-* } } } */ extern int a; Index: c-c++-common/patchable_function_entry-default.c =================================================================== --- c-c++-common/patchable_function_entry-default.c (revision 256562) +++ c-c++-common/patchable_function_entry-default.c (working copy) @@ -1,7 +1,8 @@ /* { dg-do compile { target { ! nvptx*-*-* } } } */ /* { dg-options "-O2 -fpatchable-function-entry=3,1" } */ -/* { dg-final { scan-assembler-times "nop" 3 { target { ! alpha*-*-* } } } } */ +/* { dg-final { scan-assembler-times "nop" 3 { target { ! { alpha*-*-* visium-*-* } } } } } */ /* { dg-final { scan-assembler-times "bis" 3 { target alpha*-*-* } } } */ +/* { dg-final { scan-assembler-times "nop" 4 { target visium-*-* } } } */ extern int a; Index: c-c++-common/patchable_function_entry-definition.c =================================================================== --- c-c++-common/patchable_function_entry-definition.c (revision 256562) +++ c-c++-common/patchable_function_entry-definition.c (working copy) @@ -1,7 +1,8 @@ /* { dg-do compile { target { ! nvptx*-*-* } } } */ /* { dg-options "-O2 -fpatchable-function-entry=3,1" } */ -/* { dg-final { scan-assembler-times "nop" 1 { target { ! alpha*-*-* } } } } */ +/* { dg-final { scan-assembler-times "nop" 1 { target { ! { alpha*-*-* visium-*-* } } } } } */ /* { dg-final { scan-assembler-times "bis" 1 { target alpha*-*-* } } } */ +/* { dg-final { scan-assembler-times "nop" 2 { target visium-*-* } } } */ extern int a;