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))
{