Nevermind, multiple repositories :)

-eric

On Feb 1, 2012, at 12:34 AM, Eric Christopher wrote:

> This broke the clang testers also btw :)
> 
> -eric
> 
> On Jan 31, 2012, at 11:50 PM, Stepan Dyatkovskiy wrote:
> 
>> Author: dyatkovskiy
>> Date: Wed Feb  1 01:50:21 2012
>> New Revision: 149482
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=149482&view=rev
>> Log:
>> Compatability fix for SwitchInst refactoring.
>> 
>> The purpose of refactoring is to hide operand roles from SwitchInst user 
>> (programmer). If you want to play with operands directly, probably you will 
>> need lower level methods than SwitchInst ones (TerminatorInst or may be 
>> User). After this patch we can reorganize SwitchInst operands and successors 
>> as we want.
>> 
>> What was done:
>> 
>> 1. Changed semantics of index inside the getCaseValue method:
>> getCaseValue(0) means "get first case", not a condition. Use getCondition() 
>> if you want to resolve the condition. I propose don't mix SwitchInst case 
>> indexing with low level indexing (TI successors indexing, User's operands 
>> indexing), since it may be dangerous.
>> 2. By the same reason findCaseValue(ConstantInt*) returns actual number of 
>> case value. 0 means first case, not default. If there is no case with given 
>> value, ErrorIndex will returned.
>> 3. Added getCaseSuccessor method. I propose to avoid usage of 
>> TerminatorInst::getSuccessor if you want to resolve case successor BB. Use 
>> getCaseSuccessor instead, since internal SwitchInst organization of 
>> operands/successors is hidden and may be changed in any moment.
>> 4. Added resolveSuccessorIndex and resolveCaseIndex. The main purpose of 
>> these methods is to see how case successors are really mapped in 
>> TerminatorInst.
>> 4.1 "resolveSuccessorIndex" was created if you need to level down from 
>> SwitchInst to TerminatorInst. It returns TerminatorInst's successor index 
>> for given case successor.
>> 4.2 "resolveCaseIndex" converts low level successors index to case index 
>> that curresponds to the given successor.
>> 
>> Note: There are also related compatability fix patches for dragonegg, klee, 
>> llvm-gcc-4.0, llvm-gcc-4.2, safecode, clang.
>> 
>> Modified:
>>   cfe/trunk/lib/CodeGen/CGCleanup.cpp
>>   cfe/trunk/lib/CodeGen/CGStmt.cpp
>> 
>> Modified: cfe/trunk/lib/CodeGen/CGCleanup.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCleanup.cpp?rev=149482&r1=149481&r2=149482&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGCleanup.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGCleanup.cpp Wed Feb  1 01:50:21 2012
>> @@ -502,9 +502,9 @@
>> 
>>    // The only uses should be fixup switches.
>>    llvm::SwitchInst *si = cast<llvm::SwitchInst>(use.getUser());
>> -    if (si->getNumCases() == 2 && si->getDefaultDest() == unreachableBB) {
>> +    if (si->getNumCases() == 1 && si->getDefaultDest() == unreachableBB) {
>>      // Replace the switch with a branch.
>> -      llvm::BranchInst::Create(si->getSuccessor(1), si);
>> +      llvm::BranchInst::Create(si->getCaseSuccessor(0), si);
>> 
>>      // The switch operand is a load from the cleanup-dest alloca.
>>      llvm::LoadInst *condition = cast<llvm::LoadInst>(si->getCondition());
>> 
>> Modified: cfe/trunk/lib/CodeGen/CGStmt.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=149482&r1=149481&r2=149482&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGStmt.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGStmt.cpp Wed Feb  1 01:50:21 2012
>> @@ -1221,7 +1221,7 @@
>> 
>>  // Update the default block in case explicit case range tests have
>>  // been chained on top.
>> -  SwitchInsn->setSuccessor(0, CaseRangeBlock);
>> +  SwitchInsn->setDefaultDest(CaseRangeBlock);
>> 
>>  // If a default was never emitted:
>>  if (!DefaultBlock->getParent()) {
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to