summaryrefslogtreecommitdiff
path: root/test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2009-06-04 20:25:48 +0000
committerEvan Cheng <evan.cheng@apple.com>2009-06-04 20:25:48 +0000
commitcd0c4ac7fb29ce5fb569a7ed6c5daf44fac06971 (patch)
tree28d1df80df2ce9f5058b50485764df25974e1618 /test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll
parent8eeb96d2d56f05fe6cf95a835f66c72410215be2 (diff)
downloadllvm-cd0c4ac7fb29ce5fb569a7ed6c5daf44fac06971.tar.gz
llvm-cd0c4ac7fb29ce5fb569a7ed6c5daf44fac06971.tar.bz2
llvm-cd0c4ac7fb29ce5fb569a7ed6c5daf44fac06971.tar.xz
A value defined by an implicit_def can be liven to a use BB. This is unfortunate. But register allocator still has to add it to the live-in set of the use BB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72888 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll')
-rw-r--r--test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll263
1 files changed, 263 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll b/test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll
new file mode 100644
index 0000000000..5eaae7aa9b
--- /dev/null
+++ b/test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll
@@ -0,0 +1,263 @@
+; RUN: llvm-as < %s | llc -mtriple=arm-apple-darwin -mattr=+v6
+
+ %struct.anon = type { i16, i16 }
+ %struct.cab_archive = type { i32, i16, i16, i16, i16, i8, %struct.cab_folder*, %struct.cab_file* }
+ %struct.cab_file = type { i32, i16, i64, i8*, i32, i32, i32, %struct.cab_folder*, %struct.cab_file*, %struct.cab_archive*, %struct.cab_state* }
+ %struct.cab_folder = type { i16, i16, %struct.cab_archive*, i64, %struct.cab_folder* }
+ %struct.cab_state = type { i8*, i8*, [38912 x i8], i16, i16, i8*, i16 }
+ %struct.qtm_model = type { i32, i32, %struct.anon* }
+ %struct.qtm_stream = type { i32, i32, i8, i8*, i32, i32, i32, i16, i16, i16, i8, i32, i8*, i8*, i8*, i8*, i8*, i32, i32, i8, [42 x i32], [42 x i8], [27 x i8], [27 x i8], %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, %struct.qtm_model, [65 x %struct.anon], [65 x %struct.anon], [65 x %struct.anon], [65 x %struct.anon], [25 x %struct.anon], [37 x %struct.anon], [43 x %struct.anon], [28 x %struct.anon], [8 x %struct.anon], %struct.cab_file*, i32 (%struct.cab_file*, i8*, i32)* }
+
+declare fastcc i32 @qtm_read_input(%struct.qtm_stream* nocapture) nounwind
+
+define fastcc i32 @qtm_decompress(%struct.qtm_stream* %qtm, i64 %out_bytes) nounwind {
+entry:
+ br i1 undef, label %bb245, label %bb3
+
+bb3: ; preds = %entry
+ br i1 undef, label %bb5, label %bb4
+
+bb4: ; preds = %bb3
+ ret i32 undef
+
+bb5: ; preds = %bb3
+ br i1 undef, label %bb245, label %bb14
+
+bb14: ; preds = %bb5
+ br label %bb238
+
+bb28: ; preds = %bb215
+ br label %bb31
+
+bb29: ; preds = %bb31
+ br i1 undef, label %bb31, label %bb32
+
+bb31: ; preds = %bb29, %bb28
+ br i1 undef, label %bb29, label %bb32
+
+bb32: ; preds = %bb31, %bb29
+ br label %bb33
+
+bb33: ; preds = %bb33, %bb32
+ br i1 undef, label %bb34, label %bb33
+
+bb34: ; preds = %bb33
+ br i1 undef, label %bb35, label %bb36
+
+bb35: ; preds = %bb34
+ br label %bb36
+
+bb36: ; preds = %bb46, %bb35, %bb34
+ br i1 undef, label %bb40, label %bb37
+
+bb37: ; preds = %bb36
+ br i1 undef, label %bb77, label %bb60
+
+bb40: ; preds = %bb36
+ br i1 undef, label %bb46, label %bb41
+
+bb41: ; preds = %bb40
+ br i1 undef, label %bb45, label %bb42
+
+bb42: ; preds = %bb41
+ ret i32 undef
+
+bb45: ; preds = %bb41
+ br label %bb46
+
+bb46: ; preds = %bb45, %bb40
+ br label %bb36
+
+bb60: ; preds = %bb60, %bb37
+ br label %bb60
+
+bb77: ; preds = %bb37
+ switch i32 undef, label %bb197 [
+ i32 5, label %bb108
+ i32 6, label %bb138
+ ]
+
+bb108: ; preds = %bb77
+ br label %bb111
+
+bb109: ; preds = %bb111
+ br i1 undef, label %bb111, label %bb112
+
+bb111: ; preds = %bb109, %bb108
+ br i1 undef, label %bb109, label %bb112
+
+bb112: ; preds = %bb111, %bb109
+ br label %bb113
+
+bb113: ; preds = %bb113, %bb112
+ br i1 undef, label %bb114, label %bb113
+
+bb114: ; preds = %bb113
+ br i1 undef, label %bb115, label %bb116
+
+bb115: ; preds = %bb114
+ br label %bb116
+
+bb116: ; preds = %bb115, %bb114
+ br i1 undef, label %bb120, label %bb117
+
+bb117: ; preds = %bb116
+ br label %bb136
+
+bb120: ; preds = %bb116
+ ret i32 undef
+
+bb128: ; preds = %bb136
+ br i1 undef, label %bb134, label %bb129
+
+bb129: ; preds = %bb128
+ br i1 undef, label %bb133, label %bb130
+
+bb130: ; preds = %bb129
+ br i1 undef, label %bb132, label %bb131
+
+bb131: ; preds = %bb130
+ ret i32 undef
+
+bb132: ; preds = %bb130
+ br label %bb133
+
+bb133: ; preds = %bb132, %bb129
+ br label %bb134
+
+bb134: ; preds = %bb133, %bb128
+ br label %bb136
+
+bb136: ; preds = %bb134, %bb117
+ br i1 undef, label %bb198, label %bb128
+
+bb138: ; preds = %bb77
+ %0 = trunc i32 undef to i16 ; <i16> [#uses=1]
+ br label %bb141
+
+bb139: ; preds = %bb141
+ %scevgep441442881 = load i16* undef ; <i16> [#uses=1]
+ %1 = icmp ugt i16 %scevgep441442881, %0 ; <i1> [#uses=1]
+ br i1 %1, label %bb141, label %bb142
+
+bb141: ; preds = %bb139, %bb138
+ br i1 undef, label %bb139, label %bb142
+
+bb142: ; preds = %bb141, %bb139
+ br label %bb143
+
+bb143: ; preds = %bb143, %bb142
+ br i1 undef, label %bb144, label %bb143
+
+bb144: ; preds = %bb143
+ br i1 undef, label %bb145, label %bb146
+
+bb145: ; preds = %bb144
+ unreachable
+
+bb146: ; preds = %bb156, %bb144
+ br i1 undef, label %bb150, label %bb147
+
+bb147: ; preds = %bb146
+ br i1 undef, label %bb157, label %bb148
+
+bb148: ; preds = %bb147
+ br i1 undef, label %bb149, label %bb157
+
+bb149: ; preds = %bb148
+ br label %bb150
+
+bb150: ; preds = %bb149, %bb146
+ br i1 undef, label %bb156, label %bb152
+
+bb152: ; preds = %bb150
+ unreachable
+
+bb156: ; preds = %bb150
+ br label %bb146
+
+bb157: ; preds = %bb148, %bb147
+ br i1 undef, label %bb167, label %bb160
+
+bb160: ; preds = %bb157
+ ret i32 undef
+
+bb167: ; preds = %bb157
+ br label %bb170
+
+bb168: ; preds = %bb170
+ br i1 undef, label %bb170, label %bb171
+
+bb170: ; preds = %bb168, %bb167
+ br i1 undef, label %bb168, label %bb171
+
+bb171: ; preds = %bb170, %bb168
+ br label %bb172
+
+bb172: ; preds = %bb172, %bb171
+ br i1 undef, label %bb173, label %bb172
+
+bb173: ; preds = %bb172
+ br i1 undef, label %bb174, label %bb175
+
+bb174: ; preds = %bb173
+ unreachable
+
+bb175: ; preds = %bb179, %bb173
+ br i1 undef, label %bb179, label %bb176
+
+bb176: ; preds = %bb175
+ br i1 undef, label %bb186, label %bb177
+
+bb177: ; preds = %bb176
+ br i1 undef, label %bb178, label %bb186
+
+bb178: ; preds = %bb177
+ br label %bb179
+
+bb179: ; preds = %bb178, %bb175
+ br label %bb175
+
+bb186: ; preds = %bb177, %bb176
+ br label %bb195
+
+bb187: ; preds = %bb195
+ br i1 undef, label %bb193, label %bb189
+
+bb189: ; preds = %bb187
+ %2 = tail call fastcc i32 @qtm_read_input(%struct.qtm_stream* %qtm) nounwind ; <i32> [#uses=0]
+ ret i32 undef
+
+bb193: ; preds = %bb187
+ br label %bb195
+
+bb195: ; preds = %bb193, %bb186
+ br i1 undef, label %bb198, label %bb187
+
+bb197: ; preds = %bb77
+ ret i32 -124
+
+bb198: ; preds = %bb195, %bb136
+ br i1 undef, label %bb211.preheader, label %bb214
+
+bb211.preheader: ; preds = %bb198
+ br label %bb211
+
+bb211: ; preds = %bb211, %bb211.preheader
+ br i1 undef, label %bb214, label %bb211
+
+bb214: ; preds = %bb211, %bb198
+ br label %bb215
+
+bb215: ; preds = %bb238, %bb214
+ br i1 undef, label %bb28, label %bb216
+
+bb216: ; preds = %bb215
+ br label %bb238
+
+bb238: ; preds = %bb216, %bb14
+ br label %bb215
+
+bb245: ; preds = %bb5, %entry
+ ret i32 undef
+}