[llvm] r248354 - Fixed an issue on updating profile data when lowering switch statement.

Cong Hou via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 22 17:34:35 PDT 2015


I composed a test case but I thought it may be just a duplication of the
one I checked in previously. However, after thinking about it again, I
found it is still different and can reflect the previous bug. I will check
in it soon.

Thank you for pointing it out!


thanks,
Cong

On Tue, Sep 22, 2015 at 5:24 PM, David Blaikie <dblaikie at gmail.com> wrote:

> Test case?
>
> On Tue, Sep 22, 2015 at 5:20 PM, Cong Hou via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: conghou
>> Date: Tue Sep 22 19:20:27 2015
>> New Revision: 248354
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=248354&view=rev
>> Log:
>> Fixed an issue on updating profile data when lowering switch statement.
>>
>> Fixed the issue that when there is an edge from the jump table to the
>> default statement, we should check it directly instead of checking if the
>> sibling of the jump table header is a successor of the jump table header,
>> which may not be the default statment but a successor of it.
>>
>>
>> Modified:
>>     llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=248354&r1=248353&r2=248354&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Tue Sep
>> 22 19:20:27 2015
>> @@ -8146,13 +8146,13 @@ void SelectionDAGBuilder::lowerWorkItem(
>>          uint32_t JumpWeight = I->Weight;
>>          uint32_t FallthroughWeight = UnhandledWeights;
>>
>> -        // If Fallthrough is a target of the jump table, we evenly
>> distribute
>> -        // the weight on the edge to Fallthrough to successors of CurMBB.
>> -        // Also update the weight on the edge from JumpMBB to
>> Fallthrough.
>> +        // If the default statement is a target of the jump table, we
>> evenly
>> +        // distribute the default weight to successors of CurMBB. Also
>> update
>> +        // the weight on the edge from JumpMBB to Fallthrough.
>>          for (MachineBasicBlock::succ_iterator SI = JumpMBB->succ_begin(),
>>                                                SE = JumpMBB->succ_end();
>>               SI != SE; ++SI) {
>> -          if (*SI == Fallthrough) {
>> +          if (*SI == DefaultMBB) {
>>              JumpWeight += DefaultWeight / 2;
>>              FallthroughWeight -= DefaultWeight / 2;
>>              JumpMBB->setSuccWeight(SI, DefaultWeight / 2);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150922/ccbe2c25/attachment.html>


More information about the llvm-commits mailing list