/* { dg-do compile } */ /* { dg-require-effective-target lp64 } */ /* { dg-options "-O3 -mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */ /* Functions which have the always_patch attribute should be patched no matter what. Check that there are nop-bytes at the beginning and end of the function. We add -O3 so that the compiler will try to inline foo (but it will be blocked by the attribute). */ /* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */ /* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */ __attribute__ ((always_patch_for_instrumentation)) static int foo () { return 3; } int main () { volatile int x = foo (); }