[llvm-commits] Updated LowerSwitch pass
Anton Korobeynikov
asl at math.spbu.ru
Sun Mar 4 13:01:15 PST 2007
Hello, Everyone.
This is updated LowerSwitch patch. I've also attached examples - before
& after. I'll add testcase soon after commit.
--
With best regards, Anton Korobeynikov.
Faculty of Mathematics & Mechanics, Saint Petersburg State University.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ls.diff
Type: text/x-patch
Size: 9287 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20070305/647bb838/attachment.bin>
-------------- next part --------------
; ModuleID = '2.bc'
implementation ; Functions:
define i32 @main(i32 %tmp158) {
entry:
br label %NodeBlock19
NodeBlock19: ; preds = %entry
icmp slt i32 %tmp158, 10 ; <i1>:0 [#uses=1]
br i1 %0, label %NodeBlock7, label %NodeBlock18
NodeBlock18: ; preds = %NodeBlock19
icmp slt i32 %tmp158, 13 ; <i1>:1 [#uses=1]
br i1 %1, label %NodeBlock12, label %NodeBlock17
NodeBlock17: ; preds = %NodeBlock18
icmp slt i32 %tmp158, 14 ; <i1>:2 [#uses=1]
br i1 %2, label %LeafBlock13, label %NodeBlock16
NodeBlock16: ; preds = %NodeBlock17
icmp slt i32 %tmp158, 15 ; <i1>:3 [#uses=1]
br i1 %3, label %LeafBlock14, label %LeafBlock15
LeafBlock15: ; preds = %NodeBlock16
icmp eq i32 %tmp158, 15 ; <i1>:4 [#uses=1]
br i1 %4, label %bb334, label %NewDefault
LeafBlock14: ; preds = %NodeBlock16
icmp eq i32 %tmp158, 14 ; <i1>:5 [#uses=1]
br i1 %5, label %bb332, label %NewDefault
LeafBlock13: ; preds = %NodeBlock17
icmp eq i32 %tmp158, 13 ; <i1>:6 [#uses=1]
br i1 %6, label %bb330, label %NewDefault
NodeBlock12: ; preds = %NodeBlock18
icmp slt i32 %tmp158, 11 ; <i1>:7 [#uses=1]
br i1 %7, label %LeafBlock8, label %NodeBlock11
NodeBlock11: ; preds = %NodeBlock12
icmp slt i32 %tmp158, 12 ; <i1>:8 [#uses=1]
br i1 %8, label %LeafBlock9, label %LeafBlock10
LeafBlock10: ; preds = %NodeBlock11
icmp eq i32 %tmp158, 12 ; <i1>:9 [#uses=1]
br i1 %9, label %bb328, label %NewDefault
LeafBlock9: ; preds = %NodeBlock11
icmp eq i32 %tmp158, 11 ; <i1>:10 [#uses=1]
br i1 %10, label %bb326, label %NewDefault
LeafBlock8: ; preds = %NodeBlock12
icmp eq i32 %tmp158, 10 ; <i1>:11 [#uses=1]
br i1 %11, label %bb324, label %NewDefault
NodeBlock7: ; preds = %NodeBlock19
icmp slt i32 %tmp158, 7 ; <i1>:12 [#uses=1]
br i1 %12, label %NodeBlock, label %NodeBlock6
NodeBlock6: ; preds = %NodeBlock7
icmp slt i32 %tmp158, 8 ; <i1>:13 [#uses=1]
br i1 %13, label %LeafBlock2, label %NodeBlock5
NodeBlock5: ; preds = %NodeBlock6
icmp slt i32 %tmp158, 9 ; <i1>:14 [#uses=1]
br i1 %14, label %LeafBlock3, label %LeafBlock4
LeafBlock4: ; preds = %NodeBlock5
icmp eq i32 %tmp158, 9 ; <i1>:15 [#uses=1]
br i1 %15, label %bb322, label %NewDefault
LeafBlock3: ; preds = %NodeBlock5
icmp eq i32 %tmp158, 8 ; <i1>:16 [#uses=1]
br i1 %16, label %bb338, label %NewDefault
LeafBlock2: ; preds = %NodeBlock6
icmp eq i32 %tmp158, 7 ; <i1>:17 [#uses=1]
br i1 %17, label %bb, label %NewDefault
NodeBlock: ; preds = %NodeBlock7
icmp slt i32 %tmp158, 0 ; <i1>:18 [#uses=1]
br i1 %18, label %LeafBlock, label %LeafBlock1
LeafBlock1: ; preds = %NodeBlock
icmp ule i32 %tmp158, 6 ; <i1>:19 [#uses=1]
br i1 %19, label %bb338, label %NewDefault
LeafBlock: ; preds = %NodeBlock
%tmp158.off = add i32 %tmp158, 6 ; <i32> [#uses=1]
icmp ule i32 %tmp158.off, 4 ; <i1>:20 [#uses=1]
br i1 %20, label %bb338, label %NewDefault
bb: ; preds = %LeafBlock2
ret i32 2
bb322: ; preds = %LeafBlock4
ret i32 3
bb324: ; preds = %LeafBlock8
ret i32 4
bb326: ; preds = %LeafBlock9
ret i32 5
bb328: ; preds = %LeafBlock10
ret i32 6
bb330: ; preds = %LeafBlock13
ret i32 7
bb332: ; preds = %LeafBlock14
ret i32 8
bb334: ; preds = %LeafBlock15
ret i32 9
NewDefault: ; preds = %LeafBlock, %LeafBlock1, %LeafBlock2, %LeafBlock3, %LeafBlock4, %LeafBlock8, %LeafBlock9, %LeafBlock10, %LeafBlock13, %LeafBlock14, %LeafBlock15
br label %bb336
bb336: ; preds = %NewDefault
ret i32 10
bb338: ; preds = %LeafBlock, %LeafBlock1, %LeafBlock3
ret i32 11
}
-------------- next part --------------
define i32 @main(i32 %tmp158) {
entry:
switch i32 %tmp158, label %bb336 [
i32 -2, label %bb338
i32 -3, label %bb338
i32 -4, label %bb338
i32 -5, label %bb338
i32 -6, label %bb338
i32 0, label %bb338
i32 1, label %bb338
i32 2, label %bb338
i32 3, label %bb338
i32 4, label %bb338
i32 5, label %bb338
i32 6, label %bb338
i32 7, label %bb
i32 8, label %bb338
i32 9, label %bb322
i32 10, label %bb324
i32 11, label %bb326
i32 12, label %bb328
i32 13, label %bb330
i32 14, label %bb332
i32 15, label %bb334
]
bb:
ret i32 2
bb322:
ret i32 3
bb324:
ret i32 4
bb326:
ret i32 5
bb328:
ret i32 6
bb330:
ret i32 7
bb332:
ret i32 8
bb334:
ret i32 9
bb336:
ret i32 10
bb338:
ret i32 11
}
More information about the llvm-commits
mailing list