mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
Eliminate the restriction that the array size in an alloca must be i32.
This will help reduce the amount of casting required on 64-bit targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104911 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -2643,12 +2643,13 @@ void SelectionDAGBuilder::visitAlloca(const AllocaInst &I) {
|
||||
|
||||
SDValue AllocSize = getValue(I.getArraySize());
|
||||
|
||||
AllocSize = DAG.getNode(ISD::MUL, getCurDebugLoc(), AllocSize.getValueType(),
|
||||
AllocSize,
|
||||
DAG.getConstant(TySize, AllocSize.getValueType()));
|
||||
|
||||
EVT IntPtr = TLI.getPointerTy();
|
||||
AllocSize = DAG.getZExtOrTrunc(AllocSize, getCurDebugLoc(), IntPtr);
|
||||
if (AllocSize.getValueType() != IntPtr)
|
||||
AllocSize = DAG.getZExtOrTrunc(AllocSize, getCurDebugLoc(), IntPtr);
|
||||
|
||||
AllocSize = DAG.getNode(ISD::MUL, getCurDebugLoc(), IntPtr,
|
||||
AllocSize,
|
||||
DAG.getConstant(TySize, IntPtr));
|
||||
|
||||
// Handle alignment. If the requested alignment is less than or equal to
|
||||
// the stack alignment, ignore it. If the size is greater than or equal to
|
||||
|
Reference in New Issue
Block a user