mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	extractor has extracted hundreds of loops from the SPEC benchmarks without crashing and without misoptimizing the programs. This testcase could be reduced substantially more by hand, but I don't have time to work on it right now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12495 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			197 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llvm-as < %s | opt -loop-extract -disable-output
 | |
| 
 | |
| implementation   ; Functions:
 | |
| 
 | |
| declare int %_IO_getc()
 | |
| 
 | |
| declare void %__errno_location()
 | |
| 
 | |
| void %yylex() {
 | |
| entry:
 | |
| 	switch uint 0, label %label.126 [
 | |
| 		 uint 0, label %return
 | |
| 		 uint 61, label %combine
 | |
| 		 uint 33, label %combine
 | |
| 		 uint 94, label %combine
 | |
| 		 uint 37, label %combine
 | |
| 		 uint 47, label %combine
 | |
| 		 uint 42, label %combine
 | |
| 		 uint 62, label %combine
 | |
| 		 uint 60, label %combine
 | |
| 		 uint 58, label %combine
 | |
| 		 uint 124, label %combine
 | |
| 		 uint 38, label %combine
 | |
| 		 uint 45, label %combine
 | |
| 		 uint 43, label %combine
 | |
| 		 uint 34, label %string_constant
 | |
| 		 uint 39, label %char_constant
 | |
| 		 uint 46, label %loopexit.2
 | |
| 		 uint 57, label %loopexit.2
 | |
| 		 uint 56, label %loopexit.2
 | |
| 		 uint 55, label %loopexit.2
 | |
| 		 uint 54, label %loopexit.2
 | |
| 		 uint 53, label %loopexit.2
 | |
| 		 uint 52, label %loopexit.2
 | |
| 		 uint 51, label %loopexit.2
 | |
| 		 uint 50, label %loopexit.2
 | |
| 		 uint 49, label %loopexit.2
 | |
| 		 uint 48, label %loopexit.2
 | |
| 		 uint 95, label %letter
 | |
| 		 uint 122, label %letter
 | |
| 		 uint 121, label %letter
 | |
| 		 uint 120, label %letter
 | |
| 		 uint 119, label %letter
 | |
| 		 uint 118, label %letter
 | |
| 		 uint 117, label %letter
 | |
| 		 uint 116, label %letter
 | |
| 		 uint 115, label %letter
 | |
| 		 uint 114, label %letter
 | |
| 		 uint 113, label %letter
 | |
| 		 uint 112, label %letter
 | |
| 		 uint 111, label %letter
 | |
| 		 uint 110, label %letter
 | |
| 		 uint 109, label %letter
 | |
| 		 uint 108, label %letter
 | |
| 		 uint 107, label %letter
 | |
| 		 uint 106, label %letter
 | |
| 		 uint 105, label %letter
 | |
| 		 uint 104, label %letter
 | |
| 		 uint 103, label %letter
 | |
| 		 uint 102, label %letter
 | |
| 		 uint 101, label %letter
 | |
| 		 uint 100, label %letter
 | |
| 		 uint 99, label %letter
 | |
| 		 uint 98, label %letter
 | |
| 		 uint 97, label %letter
 | |
| 		 uint 90, label %letter
 | |
| 		 uint 89, label %letter
 | |
| 		 uint 88, label %letter
 | |
| 		 uint 87, label %letter
 | |
| 		 uint 86, label %letter
 | |
| 		 uint 85, label %letter
 | |
| 		 uint 84, label %letter
 | |
| 		 uint 83, label %letter
 | |
| 		 uint 82, label %letter
 | |
| 		 uint 81, label %letter
 | |
| 		 uint 80, label %letter
 | |
| 		 uint 79, label %letter
 | |
| 		 uint 78, label %letter
 | |
| 		 uint 77, label %letter
 | |
| 		 uint 75, label %letter
 | |
| 		 uint 74, label %letter
 | |
| 		 uint 73, label %letter
 | |
| 		 uint 72, label %letter
 | |
| 		 uint 71, label %letter
 | |
| 		 uint 70, label %letter
 | |
| 		 uint 69, label %letter
 | |
| 		 uint 68, label %letter
 | |
| 		 uint 67, label %letter
 | |
| 		 uint 66, label %letter
 | |
| 		 uint 65, label %letter
 | |
| 		 uint 64, label %label.13
 | |
| 		 uint 76, label %label.12
 | |
| 		 uint 36, label %label.11
 | |
| 		 uint 4294967295, label %label.10
 | |
| 	]
 | |
| 
 | |
| label.10:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| label.11:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| label.12:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| label.13:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| letter:		; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
 | |
| 	ret void
 | |
| 
 | |
| loopexit.2:		; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
 | |
| 	switch int 0, label %shortcirc_next.14 [
 | |
| 		 int 48, label %then.20
 | |
| 		 int 46, label %endif.38
 | |
| 	]
 | |
| 
 | |
| then.20:		; preds = %loopexit.2
 | |
| 	switch int 0, label %else.4 [
 | |
| 		 int 120, label %then.21
 | |
| 		 int 88, label %then.21
 | |
| 	]
 | |
| 
 | |
| then.21:		; preds = %then.20, %then.20
 | |
| 	ret void
 | |
| 
 | |
| else.4:		; preds = %then.20
 | |
| 	ret void
 | |
| 
 | |
| shortcirc_next.14:		; preds = %loopexit.2
 | |
| 	ret void
 | |
| 
 | |
| endif.38:		; preds = %loopexit.2
 | |
| 	br bool false, label %then.40, label %then.39
 | |
| 
 | |
| then.39:		; preds = %endif.38
 | |
| 	ret void
 | |
| 
 | |
| then.40:		; preds = %endif.38
 | |
| 	invoke void %__errno_location( )
 | |
| 			to label %switchexit.2 unwind label %LongJmpBlkPre
 | |
| 
 | |
| loopentry.6:		; preds = %endif.52
 | |
| 	switch uint 0, label %switchexit.2 [
 | |
| 		 uint 73, label %label.82
 | |
| 		 uint 105, label %label.82
 | |
| 		 uint 76, label %label.80
 | |
| 		 uint 108, label %label.80
 | |
| 		 uint 70, label %label.78
 | |
| 		 uint 102, label %label.78
 | |
| 	]
 | |
| 
 | |
| label.78:		; preds = %loopentry.6, %loopentry.6
 | |
| 	ret void
 | |
| 
 | |
| label.80:		; preds = %loopentry.6, %loopentry.6
 | |
| 	ret void
 | |
| 
 | |
| label.82:		; preds = %loopentry.6, %loopentry.6
 | |
| 	%c.0.15.5 = phi int [ %tmp.79417, %loopentry.6 ], [ %tmp.79417, %loopentry.6 ]		; <int> [#uses=0]
 | |
| 	ret void
 | |
| 
 | |
| switchexit.2:		; preds = %then.40, %loopentry.6
 | |
| 	br bool false, label %endif.51, label %loopexit.6
 | |
| 
 | |
| endif.51:		; preds = %switchexit.2
 | |
| 	br bool false, label %endif.52, label %then.52
 | |
| 
 | |
| then.52:		; preds = %endif.51
 | |
| 	ret void
 | |
| 
 | |
| endif.52:		; preds = %endif.51
 | |
| 	%tmp.79417 = invoke int %_IO_getc( )
 | |
| 			to label %loopentry.6 unwind label %LongJmpBlkPre		; <int> [#uses=2]
 | |
| 
 | |
| loopexit.6:		; preds = %switchexit.2
 | |
| 	ret void
 | |
| 
 | |
| char_constant:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| string_constant:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| combine:		; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
 | |
| 	ret void
 | |
| 
 | |
| label.126:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| return:		; preds = %entry
 | |
| 	ret void
 | |
| 
 | |
| LongJmpBlkPre:		; preds = %then.40, %endif.52
 | |
| 	ret void
 | |
| }
 |