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
