2010-07-15 Magnus Granberg Kevin F. Quinn * builtins.c (expand_builtin_init_trampoline): If -Wtrampolines make a warning. * common.opt: Add -Wtrampolines. * doc/invoke.texi: Add -Wtrampolines. 2010-07-31 Magnus Granberg #328451 set -Wtrampolines as default http://gcc.gnu.org/viewcvs?view=revision&revision=162205 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5155,6 +5155,10 @@ expand_builtin_init_trampoline (tree exp) targetm.calls.trampoline_init (m_tramp, t_func, r_chain); trampolines_created = 1; + + warning_at (DECL_SOURCE_LOCATION (t_func), OPT_Wtrampolines, + "trampoline generated for nested function %qD", t_func); + return const0_rtx; } --- a/gcc/common.opt +++ b/gcc/common.opt @@ -192,6 +192,10 @@ Wsystem-headers Common Var(warn_system_headers) Warning Do not suppress warnings from system headers +Wtrampolines +Common Var(warn_trampolines) Init(1) Warning +Warn whenever a trampoline is generated + Wtype-limits Common Var(warn_type_limits) Init(-1) Warning Warn if a comparison is always true or always false due to the limited range of the data type --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3611,6 +3611,21 @@ code. However, note that using @option{-Wall} in conjunction with this option will @emph{not} warn about unknown pragmas in system headers---for that, @option{-Wunknown-pragmas} must also be used. +@item -Wtrampolines +@opindex Wtrampolines +@opindex Wno-trampolines + Warn about trampolines generated for pointers to nested functions. + + NOTE: In Gentoo, @option{-Wtrampolines} is set by default. + To disable, specify @option{-Wno-trampolines} + + A trampoline is a small piece of data or code that is created at run + time on the stack when the address of a nested function is taken, and + is used to call the nested function indirectly. For some targets, it + is made up of data only and thus requires no special treatment. But, + for most targets, it is made up of code and thus requires the stack + to be made executable in order for the program to work properly. + @item -Wfloat-equal @opindex Wfloat-equal @opindex Wno-float-equal