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
