diff options
Diffstat (limited to 'gcc-4.9/gcc/config/i386/i386.md')
-rw-r--r-- | gcc-4.9/gcc/config/i386/i386.md | 34 |
1 files changed, 7 insertions, 27 deletions
diff --git a/gcc-4.9/gcc/config/i386/i386.md b/gcc-4.9/gcc/config/i386/i386.md index 2369e4b40..e32ba52a6 100644 --- a/gcc-4.9/gcc/config/i386/i386.md +++ b/gcc-4.9/gcc/config/i386/i386.md @@ -11142,12 +11142,13 @@ { if (TARGET_X32) operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; }) (define_insn "*indirect_jump" [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))] "" - "jmp\t%A0" + "* return ix86_output_indirect_jmp (operands[0], false);" [(set_attr "type" "ibr") (set_attr "length_immediate" "0")]) @@ -11190,13 +11191,14 @@ if (TARGET_X32) operands[0] = convert_memory_address (word_mode, operands[0]); + cfun->machine->has_local_indirect_jump = true; }) (define_insn "*tablejump_1" [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw")) (use (label_ref (match_operand 1)))] "" - "jmp\t%A0" + "* return ix86_output_indirect_jmp (operands[0], false);" [(set_attr "type" "ibr") (set_attr "length_immediate" "0")]) @@ -11583,18 +11585,7 @@ (define_insn "simple_return_internal" [(simple_return)] "reload_completed" -{ - 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"; -} + "* return ix86_output_function_return (false);" [(set_attr "length" "1") (set_attr "atom_unit" "jeu") (set_attr "length_immediate" "0") @@ -11607,18 +11598,7 @@ [(simple_return) (unspec [(const_int 0)] UNSPEC_REP)] "reload_completed" -{ - 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"; -} + "* return ix86_output_function_return (true);" [(set_attr "length" "2") (set_attr "atom_unit" "jeu") (set_attr "length_immediate" "0") @@ -11639,7 +11619,7 @@ [(simple_return) (use (match_operand:SI 0 "register_operand" "r"))] "reload_completed" - "jmp\t%A0" + "* return ix86_output_indirect_jmp (operands[0], true);" [(set_attr "type" "ibr") (set_attr "length_immediate" "0")]) |