mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Don't crash printing the asm for a ConstantExpr PtrToInt just because the int
is narrower than the pointer. This testcase emits: .byte (((17) - 16) & 255) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54517 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -821,12 +821,13 @@ void AsmPrinter::EmitConstantValueOnly(const Constant *CV) { | |||||||
|  |  | ||||||
|       // We can emit the pointer value into this slot if the slot is an |       // We can emit the pointer value into this slot if the slot is an | ||||||
|       // integer slot greater or equal to the size of the pointer. |       // integer slot greater or equal to the size of the pointer. | ||||||
|       if (Ty->isInteger() && |       if (TD->getABITypeSize(Ty) >= TD->getABITypeSize(Op->getType())) | ||||||
|           TD->getABITypeSize(Ty) >= TD->getABITypeSize(Op->getType())) |  | ||||||
|         return EmitConstantValueOnly(Op); |         return EmitConstantValueOnly(Op); | ||||||
|        |  | ||||||
|       assert(0 && "FIXME: Don't yet support this kind of constant cast expr"); |       O << "(("; | ||||||
|       EmitConstantValueOnly(Op); |       EmitConstantValueOnly(Op); | ||||||
|  |       APInt ptrMask = APInt::getAllOnesValue(TD->getABITypeSizeInBits(Ty)); | ||||||
|  |       O << ") & " << ptrMask.toStringUnsigned() << ')'; | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|     case Instruction::Add: |     case Instruction::Add: | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | ; RUN: llvm-as < %s | llc | ||||||
|  | ; PR2603 | ||||||
|  | target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32" | ||||||
|  | target triple = "i386-pc-linux-gnu" | ||||||
|  |         %struct.A = type { i8 } | ||||||
|  |         %struct.B = type { i8, [1 x i8] } | ||||||
|  | @Foo = constant %struct.A { i8 ptrtoint (i8* getelementptr ([1 x i8]* inttoptr (i32 17 to [1 x i8]*), i32 0, i32 -16) to i8) }          ; <%struct.A*> [#uses=0] | ||||||
		Reference in New Issue
	
	Block a user