[PATCH] D109713: [AutoFDO][llvm-profgen] Report zero count for unexecuted part of function code
Hongtao Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 16 12:44:02 PDT 2021
hoy added inline comments.
================
Comment at: llvm/tools/llvm-profgen/ProfileGenerator.cpp:216
uint64_t Count = Item.second;
if (Boundaries.find(Begin) == Boundaries.end())
Boundaries[Begin] = BoundaryPoint();
----------------
wlei wrote:
> hoy wrote:
> > This initialization is probably not needed since you are adding the default constructor.
> Sounds good, refactor the code to use `emplace`
I actually meant you can just do something like below. Sorry for the confusion.
```
Boundaries[Begin].addBeginCount(Count);
Boundaries[End].addEndCount(Count);
if (Count == 0) {
BeginPoint.IsZeroRangeBegin = true;
EndPoint.IsZeroRangeEnd = true;
}
```
================
Comment at: llvm/tools/llvm-profgen/ProfileGenerator.cpp:251
+ if (Count == 0 && ZeroRangeDepth == 0)
+ BeginAddress = UINT64_MAX;
}
----------------
wlei wrote:
> hoy wrote:
> > Add a comment for this? Suppose we never have a zero-count range, does this change the default behavior?
> Comment added. It will change our previous logic a little bit, i, e. previous one can generate new zero-count range.
> For example, supposing we have two non-overlapping ranges
> ```
> [<---- 10 ---->]
> [<----20 ----->]
> A B C D
> ```
>
> Previously, it will add a zero range [B+1, C-1]. (Anyway, this extra zero range will be filtered later as you can see the code below).
>
> After this change, the begin point B+1 is marked invalid(UINT64_MAX), so no extra zero range is added.
>
>
>
Thanks for the explanation. It makes sense to me now. Would be great to include your example in the comment.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109713/new/
https://reviews.llvm.org/D109713
More information about the llvm-commits
mailing list