OK. Since SwitchInst patch was large and affected six llvm clients, I'll watch 
the buildbots. If something gone wrong with that, let me know, I'll try to fix 
it.
-Stepan

01.02.2012, 12:41, "Eric Christopher" <[email protected]>:
> It's fixed. Just a mismatched llvm and clang on the builder for a single 
> cycle.
>
> Thanks for the quick response.
>
> -eric
>
> On Feb 1, 2012, at 12:40 AM, Stepan Dyatkovskiy wrote:
>
>>  Hi Eric. What the names of borken tests?
>>
>>  -Stepan
>>
>>  01.02.2012, 12:35, "Eric Christopher" <[email protected]>:
>>>  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