2014-09-23 16:48:01 +08:00
|
|
|
; RUN: llvm-dis < %s.bc| FileCheck %s
|
2014-07-29 09:10:57 +08:00
|
|
|
|
|
|
|
; TerminatorOperations.3.2.ll.bc was generated by passing this file to llvm-as-3.2.
|
|
|
|
; The test checks that LLVM does not misread terminator instructions from
|
|
|
|
; older bitcode files.
|
|
|
|
|
|
|
|
define i32 @condbr(i1 %cond){
|
|
|
|
entry:
|
|
|
|
; CHECK: br i1 %cond, label %TrueLabel, label %FalseLabel
|
|
|
|
br i1 %cond, label %TrueLabel, label %FalseLabel
|
2014-09-23 16:48:01 +08:00
|
|
|
|
2014-07-29 09:10:57 +08:00
|
|
|
TrueLabel:
|
|
|
|
ret i32 1
|
2014-09-23 16:48:01 +08:00
|
|
|
|
2014-07-29 09:10:57 +08:00
|
|
|
FalseLabel:
|
|
|
|
ret i32 0
|
|
|
|
}
|
|
|
|
|
|
|
|
define i32 @uncondbr(){
|
|
|
|
entry:
|
|
|
|
; CHECK: br label %uncondLabel
|
|
|
|
br label %uncondLabel
|
2014-09-23 16:48:01 +08:00
|
|
|
|
2014-07-29 09:10:57 +08:00
|
|
|
uncondLabel:
|
|
|
|
ret i32 1
|
|
|
|
}
|
|
|
|
|
|
|
|
define i32 @indirectbr(i8* %Addr){
|
|
|
|
entry:
|
|
|
|
; CHECK: indirectbr i8* %Addr, [label %bb1, label %bb2]
|
|
|
|
indirectbr i8* %Addr, [ label %bb1, label %bb2 ]
|
2014-09-23 16:48:01 +08:00
|
|
|
|
2014-07-29 09:10:57 +08:00
|
|
|
bb1:
|
|
|
|
ret i32 1
|
2014-09-23 16:48:01 +08:00
|
|
|
|
2014-07-29 09:10:57 +08:00
|
|
|
bb2:
|
|
|
|
ret i32 0
|
|
|
|
}
|
|
|
|
|
|
|
|
define void @unreachable(){
|
|
|
|
entry:
|
|
|
|
; CHECK: unreachable
|
|
|
|
unreachable
|
2014-09-23 16:48:01 +08:00
|
|
|
|
|
|
|
ret void
|
|
|
|
}
|
|
|
|
|
|
|
|
define i32 @retInstr(){
|
|
|
|
entry:
|
|
|
|
; CHECK: ret i32 1
|
|
|
|
ret i32 1
|
|
|
|
}
|
2014-07-29 09:10:57 +08:00
|
|
|
|
2014-09-23 16:48:01 +08:00
|
|
|
define void @retInstr2(){
|
|
|
|
entry:
|
|
|
|
; CHECK: ret void
|
2014-07-29 09:10:57 +08:00
|
|
|
ret void
|
|
|
|
}
|
|
|
|
|
2014-09-23 16:48:01 +08:00
|
|
|
define i32 @switchInstr(i32 %x){
|
|
|
|
entry:
|
|
|
|
; CHECK: switch i32 %x, label %label3 [
|
|
|
|
switch i32 %x, label %label3 [
|
|
|
|
; CHECK-NEXT: i32 1, label %label1
|
|
|
|
i32 1, label %label1
|
|
|
|
; CHECK-NEXT: i32 2, label %label2
|
|
|
|
i32 2, label %label2
|
|
|
|
]
|
|
|
|
label1:
|
|
|
|
ret i32 1
|
|
|
|
label2:
|
|
|
|
ret i32 2
|
|
|
|
label3:
|
|
|
|
ret i32 0
|
|
|
|
}
|
|
|
|
|