| ; RUN: llvm-dis < %s.bc| FileCheck %s |
| |
| ; 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 |
| |
| TrueLabel: |
| ret i32 1 |
| |
| FalseLabel: |
| ret i32 0 |
| } |
| |
| define i32 @uncondbr(){ |
| entry: |
| ; CHECK: br label %uncondLabel |
| br label %uncondLabel |
| |
| 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 ] |
| |
| bb1: |
| ret i32 1 |
| |
| bb2: |
| ret i32 0 |
| } |
| |
| define void @unreachable(){ |
| entry: |
| ; CHECK: unreachable |
| unreachable |
| |
| ret void |
| } |
| |
| define i32 @retInstr(){ |
| entry: |
| ; CHECK: ret i32 1 |
| ret i32 1 |
| } |
| |
| define void @retInstr2(){ |
| entry: |
| ; CHECK: ret void |
| ret void |
| } |
| |
| 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 |
| } |
| |