77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; 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
 | |
| }
 | |
| 
 |