On Fri, May 16, 2014 at 11:19 PM, Xinliang David Li <davi...@google.com> wrote:
> Modified the patch according to yours and Richard's feedback. PTAL.

ENOPATCH.

Btw, I don't see any issue with leaking node order to opt-report.

Richard.

> thanks,
>
> David
>
> On Fri, May 16, 2014 at 9:03 AM, Jan Hubicka <hubi...@ucw.cz> wrote:
>>> Hi, debugging runtime bugs due to devirtualization can be hard for
>>> very large C++ programs with complicated class hierarchy. This patch
>>> adds the support to report this high level transformation via
>>> -fopt-info (not hidden inside dump file) and the ability the do binary
>>> search with cutoff.
>>>
>>> Ok for trunk after build and test?
>>
>> Seems resonable to me.
>>>
>>> thanks,
>>>
>>> David
>>
>>> Index: ChangeLog
>>> ===================================================================
>>> --- ChangeLog (revision 210479)
>>> +++ ChangeLog (working copy)
>>> @@ -1,3 +1,18 @@
>>> +2014-05-15  Xinliang David Li  <davi...@google.com>
>>> +
>>> +     * cgraphunit.c (walk_polymorphic_call_targets): Add
>>> +     dbgcnt and fopt-info support.
>>> +     2014-05-15  Xinliang David Li  <davi...@google.com>
>>> +
>>> +             * cgraphunit.c (walk_polymorphic_call_targets): Add
>>> +             dbgcnt and fopt-info support.
>>> +             * ipa-prop.c (ipa_make_edge_direct_to_target): Ditto.
>>> +             * ipa-devirt.c (ipa_devirt): Ditto.
>>> +             * ipa.c (walk_polymorphic_call_targets): Ditto.
>>> +             * gimple-fold.c (fold_gimple_assign): Ditto.
>>> +             (gimple_fold_call): Ditto.
>>> +             * dbgcnt.def: New counter.
>>> +
>>>  2014-05-15  Martin Jambor  <mjam...@suse.cz>
>>>
>>>       PR ipa/61085
>>> Index: ipa-prop.c
>>> ===================================================================
>>> --- ipa-prop.c        (revision 210479)
>>> +++ ipa-prop.c        (working copy)
>>> @@ -59,6 +59,7 @@ along with GCC; see the file COPYING3.
>>>  #include "ipa-utils.h"
>>>  #include "stringpool.h"
>>>  #include "tree-ssanames.h"
>>> +#include "dbgcnt.h"
>>>
>>>  /* Intermediate information about a parameter that is only useful during 
>>> the
>>>     run of ipa_analyze_node and is not kept afterwards.  */
>>> @@ -2494,6 +2495,13 @@ ipa_make_edge_direct_to_target (struct c
>>>           fprintf (dump_file, "ipa-prop: Discovered direct call to 
>>> non-function"
>>>                               " in %s/%i, making it unreachable.\n",
>>>                    ie->caller->name (), ie->caller->order);
>>> +          else if (dump_enabled_p ())
>>> +         {
>>> +           location_t loc = gimple_location (ie->call_stmt);
>>> +           dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
>>> +                            "Discovered direct call to non-function in %s, 
>>> "
>>> +                            "making it unreachable\n", ie->caller->name 
>>> ());
>>
>> Perhaps "turning it to __builtin_unreachable call" and similarly in the 
>> other cases
>> we introduce __builtin_unreachable? I think that could be easier for user to 
>> work
>> out.
>>
>> What king of problems in devirtualizatoin you are seeing?
>>
>>
>> Honza

Reply via email to