mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	Factor out the code for sign-extending/truncating gep indices
and use it in x86 address mode folding. Also, make getRegForValue return 0 for illegal types even if it has a ValueMap for them, because Argument values are put in the ValueMap. This fixes PR3181. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60696 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		
							
								
								
									
										17
									
								
								test/CodeGen/X86/fast-isel-gep-sext.ll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								test/CodeGen/X86/fast-isel-gep-sext.ll
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
; RUN: llvm-as < %s | llc -march=x86-64 -fast | grep movslq
 | 
			
		||||
; RUN: llvm-as < %s | llc -march=x86 -fast
 | 
			
		||||
; PR3181
 | 
			
		||||
 | 
			
		||||
; GEP indices are interpreted as signed integers, so they
 | 
			
		||||
; should be sign-extended to 64 bits on 64-bit targets.
 | 
			
		||||
 | 
			
		||||
define i32 @foo(i32 %t3, i32* %t1) nounwind {
 | 
			
		||||
       %t9 = getelementptr i32* %t1, i32 %t3           ; <i32*> [#uses=1]
 | 
			
		||||
       %t15 = load i32* %t9            ; <i32> [#uses=1]
 | 
			
		||||
       ret i32 %t15
 | 
			
		||||
}
 | 
			
		||||
define i32 @bar(i64 %t3, i32* %t1) nounwind {
 | 
			
		||||
       %t9 = getelementptr i32* %t1, i64 %t3           ; <i32*> [#uses=1]
 | 
			
		||||
       %t15 = load i32* %t9            ; <i32> [#uses=1]
 | 
			
		||||
       ret i32 %t15
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user