Index: gcc/config/i386/i386.md |
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md |
index 24d1012..3b16829 100644 |
--- a/gcc/config/i386/i386.md |
+++ b/gcc/config/i386/i386.md |
@@ -11708,7 +11708,18 @@ |
(define_insn "simple_return_internal" |
[(simple_return)] |
"reload_completed" |
- "ret" |
+{ |
+ if (TARGET_64BIT && patch_functions_for_instrumentation) |
+ { |
+ /* Emit 10 nop bytes after ret. */ |
+ if (ix86_output_function_nops_prologue_epilogue (asm_out_file, |
+ FUNCTION_PATCH_EPILOGUE_SECTION, |
+ "\tret", |
+ 10)) |
+ return ""; |
+ } |
+ return "ret"; |
+} |
[(set_attr "length" "1") |
(set_attr "atom_unit" "jeu") |
(set_attr "length_immediate" "0") |
@@ -11721,7 +11732,18 @@ |
[(simple_return) |
(unspec [(const_int 0)] UNSPEC_REP)] |
"reload_completed" |
- "rep%; ret" |
+{ |
+ if (TARGET_64BIT && patch_functions_for_instrumentation) |
+ { |
+ /* Emit 9 nop bytes after rep;ret. */ |
+ if (ix86_output_function_nops_prologue_epilogue (asm_out_file, |
+ FUNCTION_PATCH_EPILOGUE_SECTION, |
+ "\trep\;ret", |
+ 9)) |
+ return ""; |
+ } |
+ return "rep\;ret"; |
+} |
[(set_attr "length" "2") |
(set_attr "atom_unit" "jeu") |
(set_attr "length_immediate" "0") |