mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35412 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			57 lines
		
	
	
		
			796 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			796 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
 | 
						|
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
 | 
						|
; RUN: diff %t1.ll %t2.ll
 | 
						|
 | 
						|
 | 
						|
;; This is an irreducible flow graph
 | 
						|
 | 
						|
 | 
						|
define void @"irreducible"(i1 %cond)
 | 
						|
begin
 | 
						|
	br i1 %cond, label %X, label %Y
 | 
						|
 | 
						|
X:
 | 
						|
	br label %Y
 | 
						|
Y:
 | 
						|
	br label %X
 | 
						|
end
 | 
						|
 | 
						|
;; This is a pair of loops that share the same header
 | 
						|
 | 
						|
define void @"sharedheader"(i1 %cond)
 | 
						|
begin
 | 
						|
	br label %A
 | 
						|
A:
 | 
						|
	br i1 %cond, label %X, label %Y
 | 
						|
 | 
						|
X:
 | 
						|
	br label %A
 | 
						|
Y:
 | 
						|
	br label %A
 | 
						|
end
 | 
						|
 | 
						|
;; This is a simple nested loop
 | 
						|
define void @"nested"(i1 %cond1, i1 %cond2, i1 %cond3)
 | 
						|
begin
 | 
						|
	br label %Loop1
 | 
						|
 | 
						|
Loop1:
 | 
						|
	br label %Loop2
 | 
						|
 | 
						|
Loop2:
 | 
						|
	br label %Loop3
 | 
						|
 | 
						|
Loop3:
 | 
						|
	br i1 %cond3, label %Loop3, label %L3Exit
 | 
						|
 | 
						|
L3Exit:
 | 
						|
	br i1 %cond2, label %Loop2, label %L2Exit
 | 
						|
 | 
						|
L2Exit:
 | 
						|
	br i1 %cond1, label %Loop1, label %L1Exit
 | 
						|
 | 
						|
L1Exit:
 | 
						|
	ret void
 | 
						|
end
 | 
						|
 |