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