[PATCH] D15547: [PGO] Handle and report overflow during profile merge for all types of data

Diego Novillo via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 16 11:05:20 PST 2015


On Wed, Dec 16, 2015 at 2:02 PM, Xinliang David Li <xinliangli at gmail.com>
wrote:

>
>
> On Wed, Dec 16, 2015 at 10:51 AM, Diego Novillo via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>>
>>
>> On Wed, Dec 16, 2015 at 1:45 PM, Nathan Slingerland <slingn at gmail.com>
>> wrote:
>>
>>>
>>> ================
>>> Comment at: include/llvm/ProfileData/SampleProf.h:145
>>> @@ -134,2 +144,3 @@
>>>        S = SaturatingMultiply(S, Weight, &Overflowed);
>>> -      assert(!Overflowed && "Sample counter overflowed!");
>>> +      if (Overflowed)
>>> +        return sampleprof_error::counter_overflow;
>>> ----------------
>>> davidxl wrote:
>>> > There are also lots of if(..) return patterns that can be simplified.
>>> This case you will need a macro:
>>> >
>>> > #define RETURN_IF(Cond, Err) \
>>> >     if(Cond) \
>>> >         return Err;
>>> I don't think we want to add macros to header files like this as macros
>>> don't respect namespaces. I'll see if I can simplify in another way.
>>>
>>
>> Agreed.  I don't really like macros of any kind in headers (well,
>> anywhere really).  Particularly the kind that obscure control flow.  I'd
>> rather see the control flow in the code.
>>
>
> Why do you think this obscure control flow? The name indicates it is a
> conditional return.
>

Semantic overload.  These macros tend to grow other things and they are a
royal pain when stepping through with a debugger.  I spent a long time
trying to get rid of these macros in GCC.  I don't want another codebase
riddled with macros :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151216/73b9d32d/attachment.html>


More information about the llvm-commits mailing list