This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/52544] compilation fails with -finstrument-functions and sse c code
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 24 Jul 2012 09:30:14 +0000
- Subject: [Bug middle-end/52544] compilation fails with -finstrument-functions and sse c code
- Auto-submitted: auto-generated
- References: <bug-52544-4@http.gcc.gnu.org/bugzilla/>
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))
{