This is the mail archive of the gcc-patches@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]

Re: [Patch Ping] Patch for PR target/32277 - IA64 C++ profiling bug


On Wed, Oct 29, 2008 at 8:24 PM,  <sje@cup.hp.com> wrote:
> This is a ping for my patch (based on Andreas Schwab's fix) for
> PR target/32277.  I tweaked it from the earlier version to fix
> some formatting issues that HJ pointed out.
>
> Tested on IA64 HP-UX and Linux with no regressions and it fixes
> the g++.dg/tree-prof/indir-call-prof.C test failure.
>
> OK for checkin?

Ok.

Thanks,
Richard.

> Original patch: http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00560.html
>
> Steve Ellcey
> sje@cup.hp.com
>
>
>
> 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
>
>        PR target/32277
>        * libgcov.c ( __gcov_indirect_call_profiler): Check
>        TARGET_VTABLE_USES_DESCRIPTORS.
>
>
> Index: libgcov.c
> ===================================================================
> --- libgcov.c   (revision 141334)
> +++ libgcov.c   (working copy)
> @@ -777,7 +777,12 @@ void
>  __gcov_indirect_call_profiler (gcov_type* counter, gcov_type value,
>                               void* cur_func, void* callee_func)
>  {
> -  if (cur_func == callee_func)
> +  /* If the C++ virtual tables contain function descriptors then one
> +     function may have multiple descriptors and we need to dereference
> +     the descriptors to see if they point to the same function.  */
> +  if (cur_func == callee_func
> +      || (TARGET_VTABLE_USES_DESCRIPTORS && callee_func
> +         && *(void **) cur_func == *(void **) callee_func))
>     __gcov_one_value_profiler_body (counter, value);
>  }
>  #endif
>


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