summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/CodeExtractor
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-01-17 07:59:14 +0000
commit83b3d8267225d585678d5d3af9bba5735f4b415d (patch)
tree9d6c2ad7bfd568186e83a39e6f03e1c0bf415715 /llvm/test/Transforms/CodeExtractor
parent100602d7561ca5e245db6194bddae86357d203d4 (diff)
downloadbcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.tar.gz
bcm5719-llvm-83b3d8267225d585678d5d3af9bba5735f4b415d.zip
Regression is gone, don't try to find it on clean target.
llvm-svn: 33296
Diffstat (limited to 'llvm/test/Transforms/CodeExtractor')
-rw-r--r--llvm/test/Transforms/CodeExtractor/.cvsignore3
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll75
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll34
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll27
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll47
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll21
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll23
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll196
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll27
-rw-r--r--llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll10
-rw-r--r--llvm/test/Transforms/CodeExtractor/dg.exp3
11 files changed, 466 insertions, 0 deletions
diff --git a/llvm/test/Transforms/CodeExtractor/.cvsignore b/llvm/test/Transforms/CodeExtractor/.cvsignore
new file mode 100644
index 00000000000..7f2443f2f31
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/.cvsignore
@@ -0,0 +1,3 @@
+Output
+*.log
+*.sum
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll b/llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
new file mode 100644
index 00000000000..3100d649ba8
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
@@ -0,0 +1,75 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+
+void %solve() {
+entry:
+ br label %loopentry.0
+
+loopentry.0: ; preds = %entry, %endif.0
+ br bool false, label %no_exit.0, label %loopexit.0
+
+no_exit.0: ; preds = %loopentry.0
+ br bool false, label %then.0, label %endif.0
+
+then.0: ; preds = %no_exit.0
+ br bool false, label %shortcirc_done, label %shortcirc_next
+
+shortcirc_next: ; preds = %then.0
+ br label %shortcirc_done
+
+shortcirc_done: ; preds = %then.0, %shortcirc_next
+ br bool false, label %then.1, label %endif.1
+
+then.1: ; preds = %shortcirc_done
+ br bool false, label %cond_true, label %cond_false
+
+cond_true: ; preds = %then.1
+ br label %cond_continue
+
+cond_false: ; preds = %then.1
+ br label %cond_continue
+
+cond_continue: ; preds = %cond_true, %cond_false
+ br label %return
+
+after_ret.0: ; No predecessors!
+ br label %endif.1
+
+endif.1: ; preds = %shortcirc_done, %after_ret.0
+ br label %endif.0
+
+endif.0: ; preds = %no_exit.0, %endif.1
+ br label %loopentry.0
+
+loopexit.0: ; preds = %loopentry.0
+ br bool false, label %then.2, label %endif.2
+
+then.2: ; preds = %loopexit.0
+ br bool false, label %then.3, label %endif.3
+
+then.3: ; preds = %then.2
+ br label %return
+
+after_ret.1: ; No predecessors!
+ br label %endif.3
+
+endif.3: ; preds = %then.2, %after_ret.1
+ br label %endif.2
+
+endif.2: ; preds = %loopexit.0, %endif.3
+ br label %loopentry.1
+
+loopentry.1: ; preds = %endif.2, %no_exit.1
+ br bool false, label %no_exit.1, label %loopexit.1
+
+no_exit.1: ; preds = %loopentry.1
+ br label %loopentry.1
+
+loopexit.1: ; preds = %loopentry.1
+ br label %return
+
+after_ret.2: ; No predecessors!
+ br label %return
+
+return: ; preds = %cond_continue, %then.3, %loopexit.1, %after_ret.2
+ ret void
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll b/llvm/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll
new file mode 100644
index 00000000000..186466dc9b2
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+; This testcase is failing the loop extractor because not all exit blocks
+; are dominated by all of the live-outs.
+
+implementation ; Functions:
+
+int %ab(int %alpha, int %beta) {
+entry:
+ br label %loopentry.1.preheader
+
+loopentry.1.preheader: ; preds = %then.1
+ br label %loopentry.1
+
+loopentry.1: ; preds = %loopentry.1.preheader, %no_exit.1
+ br bool false, label %no_exit.1, label %loopexit.0.loopexit1
+
+no_exit.1: ; preds = %loopentry.1
+ %tmp.53 = load int* null ; <int> [#uses=1]
+ br bool false, label %shortcirc_next.2, label %loopentry.1
+
+shortcirc_next.2: ; preds = %no_exit.1
+ %tmp.563 = call int %wins( int 0, int %tmp.53, int 3 ) ; <int> [#uses=0]
+ ret int 0
+
+loopexit.0.loopexit1: ; preds = %loopentry.1
+ br label %loopexit.0
+
+loopexit.0: ; preds = %loopexit.0.loopexit, %loopexit.0.loopexit1
+ ret int 0
+}
+
+declare int %wins(int, int, int)
+
+declare ushort %ab_code()
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll b/llvm/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll
new file mode 100644
index 00000000000..3efcea56acc
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract-single -disable-output
+
+void %ab() {
+entry:
+ br label %codeReplTail
+
+then.1: ; preds = %codeReplTail
+ br label %loopentry.1
+
+loopentry.1: ; preds = %loopentry.1.preheader, %no_exit.1
+ br bool false, label %no_exit.1, label %loopexit.0.loopexit1
+
+no_exit.1: ; preds = %loopentry.1
+ br label %loopentry.1
+
+loopexit.0.loopexit: ; preds = %codeReplTail
+ ret void
+
+loopexit.0.loopexit1: ; preds = %loopentry.1
+ ret void
+
+codeReplTail: ; preds = %codeRepl, %codeReplTail
+ switch ushort 0, label %codeReplTail [
+ ushort 0, label %loopexit.0.loopexit
+ ushort 1, label %then.1
+ ]
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll b/llvm/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll
new file mode 100644
index 00000000000..67756b5ab54
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll
@@ -0,0 +1,47 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+
+void %sendMTFValues() {
+entry:
+ br bool false, label %then.1, label %endif.1
+
+then.1: ; preds = %entry
+ br bool false, label %loopentry.6.preheader, label %else.0
+
+endif.1: ; preds = %entry
+ ret void
+
+else.0: ; preds = %then.1
+ ret void
+
+loopentry.6.preheader: ; preds = %then.1
+ br bool false, label %endif.7.preheader, label %loopexit.9
+
+endif.7.preheader: ; preds = %loopentry.6.preheader
+ %tmp.183 = add int 0, -1 ; <int> [#uses=1]
+ br label %endif.7
+
+endif.7: ; preds = %endif.7.preheader, %loopexit.15
+ br bool false, label %loopentry.10, label %loopentry.12
+
+loopentry.10: ; preds = %endif.7
+ br label %loopentry.12
+
+loopentry.12: ; preds = %endif.7, %loopentry.10
+ %ge.2.1 = phi int [ 0, %loopentry.10 ], [ %tmp.183, %endif.7 ] ; <int> [#uses=0]
+ br bool false, label %loopexit.14, label %no_exit.11
+
+no_exit.11: ; preds = %loopentry.12
+ ret void
+
+loopexit.14: ; preds = %loopentry.12
+ br bool false, label %loopexit.15, label %no_exit.14
+
+no_exit.14: ; preds = %loopexit.14
+ ret void
+
+loopexit.15: ; preds = %loopexit.14
+ br bool false, label %endif.7, label %loopexit.9
+
+loopexit.9: ; preds = %loopentry.6.preheader, %loopexit.15
+ ret void
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll b/llvm/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll
new file mode 100644
index 00000000000..23ca986bc7d
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+
+ %struct.node_t = type { double*, %struct.node_t*, %struct.node_t**, double**, double*, int, int }
+ %struct.table_t = type { [1 x %struct.node_t**], [1 x %struct.node_t**] }
+
+implementation ; Functions:
+
+void %make_tables() {
+entry:
+ %tmp.0.i = malloc %struct.node_t ; <%struct.node_t*> [#uses=1]
+ br bool false, label %no_exit.i, label %loopexit.i
+
+no_exit.i: ; preds = %entry, %no_exit.i
+ %prev_node.0.i.1 = phi %struct.node_t* [ %tmp.16.i, %no_exit.i ], [ %tmp.0.i, %entry ] ; <%struct.node_t*> [#uses=0]
+ %tmp.16.i = malloc %struct.node_t ; <%struct.node_t*> [#uses=2]
+ br bool false, label %no_exit.i, label %loopexit.i
+
+loopexit.i: ; preds = %entry, %no_exit.i
+ %cur_node.0.i.0 = phi %struct.node_t* [ null, %entry ], [ %tmp.16.i, %no_exit.i ] ; <%struct.node_t*> [#uses=0]
+ ret void
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll b/llvm/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll
new file mode 100644
index 00000000000..0ff309191ad
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+
+
+void %maketree() {
+entry:
+ br bool false, label %no_exit.1, label %loopexit.0
+
+no_exit.1: ; preds = %entry, %expandbox.entry, %endif
+ br bool false, label %endif, label %expandbox.entry
+
+expandbox.entry: ; preds = %no_exit.1
+ br bool false, label %loopexit.1, label %no_exit.1
+
+endif: ; preds = %no_exit.1
+ br bool false, label %loopexit.1, label %no_exit.1
+
+loopexit.1: ; preds = %expandbox.entry, %endif
+ %ic.i.0.0.4 = phi int [ 0, %expandbox.entry ], [ 0, %endif ] ; <int> [#uses=0]
+ ret void
+
+loopexit.0: ; preds = %entry
+ ret void
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll b/llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
new file mode 100644
index 00000000000..70d1e0aa8c1
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
@@ -0,0 +1,196 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -loop-extract -disable-output
+
+implementation ; Functions:
+
+declare int %_IO_getc()
+
+declare void %__errno_location()
+
+void %yylex() {
+entry:
+ switch uint 0, label %label.126 [
+ uint 0, label %return
+ uint 61, label %combine
+ uint 33, label %combine
+ uint 94, label %combine
+ uint 37, label %combine
+ uint 47, label %combine
+ uint 42, label %combine
+ uint 62, label %combine
+ uint 60, label %combine
+ uint 58, label %combine
+ uint 124, label %combine
+ uint 38, label %combine
+ uint 45, label %combine
+ uint 43, label %combine
+ uint 34, label %string_constant
+ uint 39, label %char_constant
+ uint 46, label %loopexit.2
+ uint 57, label %loopexit.2
+ uint 56, label %loopexit.2
+ uint 55, label %loopexit.2
+ uint 54, label %loopexit.2
+ uint 53, label %loopexit.2
+ uint 52, label %loopexit.2
+ uint 51, label %loopexit.2
+ uint 50, label %loopexit.2
+ uint 49, label %loopexit.2
+ uint 48, label %loopexit.2
+ uint 95, label %letter
+ uint 122, label %letter
+ uint 121, label %letter
+ uint 120, label %letter
+ uint 119, label %letter
+ uint 118, label %letter
+ uint 117, label %letter
+ uint 116, label %letter
+ uint 115, label %letter
+ uint 114, label %letter
+ uint 113, label %letter
+ uint 112, label %letter
+ uint 111, label %letter
+ uint 110, label %letter
+ uint 109, label %letter
+ uint 108, label %letter
+ uint 107, label %letter
+ uint 106, label %letter
+ uint 105, label %letter
+ uint 104, label %letter
+ uint 103, label %letter
+ uint 102, label %letter
+ uint 101, label %letter
+ uint 100, label %letter
+ uint 99, label %letter
+ uint 98, label %letter
+ uint 97, label %letter
+ uint 90, label %letter
+ uint 89, label %letter
+ uint 88, label %letter
+ uint 87, label %letter
+ uint 86, label %letter
+ uint 85, label %letter
+ uint 84, label %letter
+ uint 83, label %letter
+ uint 82, label %letter
+ uint 81, label %letter
+ uint 80, label %letter
+ uint 79, label %letter
+ uint 78, label %letter
+ uint 77, label %letter
+ uint 75, label %letter
+ uint 74, label %letter
+ uint 73, label %letter
+ uint 72, label %letter
+ uint 71, label %letter
+ uint 70, label %letter
+ uint 69, label %letter
+ uint 68, label %letter
+ uint 67, label %letter
+ uint 66, label %letter
+ uint 65, label %letter
+ uint 64, label %label.13
+ uint 76, label %label.12
+ uint 36, label %label.11
+ uint 4294967295, label %label.10
+ ]
+
+label.10: ; preds = %entry
+ ret void
+
+label.11: ; preds = %entry
+ ret void
+
+label.12: ; preds = %entry
+ ret void
+
+label.13: ; preds = %entry
+ ret void
+
+letter: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
+ ret void
+
+loopexit.2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
+ switch int 0, label %shortcirc_next.14 [
+ int 48, label %then.20
+ int 46, label %endif.38
+ ]
+
+then.20: ; preds = %loopexit.2
+ switch int 0, label %else.4 [
+ int 120, label %then.21
+ int 88, label %then.21
+ ]
+
+then.21: ; preds = %then.20, %then.20
+ ret void
+
+else.4: ; preds = %then.20
+ ret void
+
+shortcirc_next.14: ; preds = %loopexit.2
+ ret void
+
+endif.38: ; preds = %loopexit.2
+ br bool false, label %then.40, label %then.39
+
+then.39: ; preds = %endif.38
+ ret void
+
+then.40: ; preds = %endif.38
+ invoke void %__errno_location( )
+ to label %switchexit.2 unwind label %LongJmpBlkPre
+
+loopentry.6: ; preds = %endif.52
+ switch uint 0, label %switchexit.2 [
+ uint 73, label %label.82
+ uint 105, label %label.82
+ uint 76, label %label.80
+ uint 108, label %label.80
+ uint 70, label %label.78
+ uint 102, label %label.78
+ ]
+
+label.78: ; preds = %loopentry.6, %loopentry.6
+ ret void
+
+label.80: ; preds = %loopentry.6, %loopentry.6
+ ret void
+
+label.82: ; preds = %loopentry.6, %loopentry.6
+ %c.0.15.5 = phi int [ %tmp.79417, %loopentry.6 ], [ %tmp.79417, %loopentry.6 ] ; <int> [#uses=0]
+ ret void
+
+switchexit.2: ; preds = %then.40, %loopentry.6
+ br bool false, label %endif.51, label %loopexit.6
+
+endif.51: ; preds = %switchexit.2
+ br bool false, label %endif.52, label %then.52
+
+then.52: ; preds = %endif.51
+ ret void
+
+endif.52: ; preds = %endif.51
+ %tmp.79417 = invoke int %_IO_getc( )
+ to label %loopentry.6 unwind label %LongJmpBlkPre ; <int> [#uses=2]
+
+loopexit.6: ; preds = %switchexit.2
+ ret void
+
+char_constant: ; preds = %entry
+ ret void
+
+string_constant: ; preds = %entry
+ ret void
+
+combine: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
+ ret void
+
+label.126: ; preds = %entry
+ ret void
+
+return: ; preds = %entry
+ ret void
+
+LongJmpBlkPre: ; preds = %then.40, %endif.52
+ ret void
+}
diff --git a/llvm/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll b/llvm/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll
new file mode 100644
index 00000000000..c9c23d48e52
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -extract-blocks -disable-output
+
+implementation
+
+void %test1() {
+no_exit.0.i:
+ br bool false, label %yylex.entry, label %yylex.entry
+
+yylex.entry:
+ %tmp.1027 = phi int [ 0, %no_exit.0.i ], [ 0, %no_exit.0.i ]
+ ret void
+}
+
+void %test2() {
+no_exit.0.i:
+ switch uint 0, label %yylex.entry [
+ uint 0, label %yylex.entry
+ uint 1, label %foo
+ ]
+
+yylex.entry:
+ %tmp.1027 = phi int [ 0, %no_exit.0.i ], [ 0, %no_exit.0.i ]
+ ret void
+foo:
+ ret void
+}
+
diff --git a/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll b/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll
new file mode 100644
index 00000000000..4ada2aeb288
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | opt -extract-blocks -disable-output
+int %foo() {
+ br label %EB
+EB:
+ %V = invoke int %foo() to label %Cont unwind label %Unw
+Cont:
+ ret int %V
+Unw:
+ unwind
+}
diff --git a/llvm/test/Transforms/CodeExtractor/dg.exp b/llvm/test/Transforms/CodeExtractor/dg.exp
new file mode 100644
index 00000000000..142de8a6c8f
--- /dev/null
+++ b/llvm/test/Transforms/CodeExtractor/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm-dg.exp
+
+llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext $llvmgcc_version
OpenPOWER on IntegriCloud