diff options
Diffstat (limited to 'gcc/target.h')
-rw-r--r-- | gcc/target.h | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/gcc/target.h b/gcc/target.h index eb674c943f1..44e64a9903a 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -120,12 +120,26 @@ struct gcc_target /* Output a destructor for a symbol with a given priority. */ void (* destructor) PARAMS ((rtx, int)); - /* Output the assembler code for a thunk function. */ - void (* output_mi_thunk) PARAMS ((FILE *, tree, HOST_WIDE_INT, tree)); - - /* Output the assembler code for a thunk function with a vcall offset. */ - void (* output_mi_vcall_thunk) PARAMS ((FILE *, tree, HOST_WIDE_INT, - HOST_WIDE_INT, tree)); + /* Output the assembler code for a thunk function. THUNK_DECL is the + declaration for the thunk function itself, FUNCTION is the decl for + the target function. DELTA is an immediate constant offset to be + added to THIS. If VCALL_OFFSET is non-zero, the word at + *(*this + vcall_offset) should be added to THIS. */ + void (* output_mi_thunk) PARAMS ((FILE *file, tree thunk_decl, + HOST_WIDE_INT delta, + HOST_WIDE_INT vcall_offset, + tree function_decl)); + + /* Determine whether output_mi_thunk would succeed. */ + /* ??? Ideally, this hook would not exist, and success or failure + would be returned from output_mi_thunk directly. But there's + too much undo-able setup involved in invoking output_mi_thunk. + Could be fixed by making output_mi_thunk emit rtl instead of + text to the output file. */ + bool (* can_output_mi_thunk) PARAMS ((tree thunk_decl, + HOST_WIDE_INT delta, + HOST_WIDE_INT vcall_offset, + tree function_decl)); } asm_out; /* Functions relating to instruction scheduling. */ |