[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