/* { dg-do compile } */ /* { dg-require-effective-target lp64 } */ /* { dg-options "-mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */ /* Even complicated functions shouldn't get patched if they have the never_patch_for_instrumentation attribute. */ /* { dg-final { scan-assembler-not ".byte\t0xeb,0x09(.*).byte\t0x90" } } */ /* { dg-final { scan-assembler-not "ret(.*).byte\t0x90(.*).byte\t0x90" } } */ __attribute__ ((never_patch_for_instrumentation)) int foo () { volatile unsigned x = 0; volatile unsigned y = 1; x += y; x *= y; while (++x) foo (); return y; } int main () { int x = 0; return 0; }