aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/CodeExtractor
diff options
context:
space:
mode:
authorDan Gohman <djg@cray.com>2007-07-18 16:29:46 +0000
committerDan Gohman <djg@cray.com>2007-07-18 16:29:46 +0000
commitf17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc (patch)
treeebb79ea1ee5e3bc1fdf38541a811a8b804f0679a /test/Transforms/CodeExtractor
downloadexternal_llvm-f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc.zip
external_llvm-f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc.tar.gz
external_llvm-f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc.tar.bz2
It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/CodeExtractor')
-rw-r--r--test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll75
-rw-r--r--test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll34
-rw-r--r--test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll27
-rw-r--r--test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll47
-rw-r--r--test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll21
-rw-r--r--test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll23
-rw-r--r--test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll196
-rw-r--r--test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll27
-rw-r--r--test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll10
-rw-r--r--test/Transforms/CodeExtractor/dg.exp3
10 files changed, 463 insertions, 0 deletions
diff --git a/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll b/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
new file mode 100644
index 0000000..3100d64
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll b/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll
new file mode 100644
index 0000000..186466d
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll b/test/Transforms/CodeExtractor/2004-03-14-NoSwitchSupport.ll
new file mode 100644
index 0000000..3efcea5
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll b/test/Transforms/CodeExtractor/2004-03-17-MissedLiveIns.ll
new file mode 100644
index 0000000..67756b5
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll b/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll
new file mode 100644
index 0000000..23ca986
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll b/test/Transforms/CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.ll
new file mode 100644
index 0000000..0ff3091
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll b/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
new file mode 100644
index 0000000..70d1e0a
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll b/test/Transforms/CodeExtractor/2004-08-12-BlockExtractPHI.ll
new file mode 100644
index 0000000..c9c23d4
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll b/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll
new file mode 100644
index 0000000..4ada2ae
--- /dev/null
+++ b/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/test/Transforms/CodeExtractor/dg.exp b/test/Transforms/CodeExtractor/dg.exp
new file mode 100644
index 0000000..879685c
--- /dev/null
+++ b/test/Transforms/CodeExtractor/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]]