[llvm-commits] [llvm] r48822 - in /llvm/trunk: include/llvm/CodeGen/ScheduleDAG.h include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/LegalizeTypes.cpp lib/CodeGen/SelectionDAG/LegalizeTypes.h lib/CodeGen/SelectionDAG/ScheduleDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAG.cpp lib/Target/PowerPC/PPCISelLowering.cpp lib/Target/X86/X86ISelDAGToDAG.cpp lib/Target/X86/X86ISelLowering.cpp

Evan Cheng evan.cheng at apple.com
Wed Apr 2 20:13:31 PDT 2008


I've backed this out for now. Please fix the infinite looping and then  
re-commit.

Thanks.

Evan

On Apr 2, 2008, at 2:28 PM, Dan Gohman wrote:

>
> On Mar 26, 2008, at 5:39 AM, Roman Levenstein wrote:
>>
>> +
>> +  SmallSetVector<SDNode*, 16> Users;
>>  while (!From->use_empty()) {
>> -    // Process users until they are all gone.
>> -    SDNode *U = *From->use_begin();
>> -
>> +    SDNode::use_iterator UI = From->use_begin();
>> +    SDNode *U = UI->getUser();
>> +
>> +    // Remember that this node is about to morph.
>> +    if (Users.count(U))
>> +      continue;
>> +    Users.insert(U);
>
> Hi Roman,
>
> This code that remembers users is causing the loop to
> repeat infinitely in some cases. Actually, if Users.count(U)
> is ever true, it gooes into an infinite loop because
> nothing happens that will make From->use_list()
> get closer to being empty.
>
> You can reproduce this by unmerging revision 48994 and
> running llc on the attached testcase. 48994 is otherwise
> unrelated, but it happens to change the way this testcase
> gets compiled such that the above bug doesn't get triggered.
>
> Can you take a look at this?
>
> Thanks,
>
> Dan
> <hang.ll>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list