This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/52544] compilation fails with -finstrument-functions and sse c code


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]