http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52544
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-07-24 CC| |hubicka at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-24 09:30:14 UTC --- Confirmed. It's because we instrument before inlining always-inline functions and get calls like __cyg_profile_func_enter (_mm_set1_ps, return_addr.3_22); but of course no body for _mm_set1_ps function exists (not should it, IMHO). We do the instrumentation during gimplification. Honza, why does the address-taking of _mm_set1_ps not force its body to be output? Is there a predicate we can check that tells us wheter a function body will forcefully _not_ be output? Add that to void gimplify_function_tree (tree fndecl) { ... /* If we're instrumenting function entry/exit, then prepend the call to the entry hook and wrap the whole function in a TRY_FINALLY_EXPR to catch the exit hook. */ /* ??? Add some way to ignore exceptions for this TFE. */ if (flag_instrument_function_entry_exit && !DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (fndecl) && !flag_instrument_functions_exclude_p (fndecl)) {