mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Pointer arithmetic should be done with the index the same size as the pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43120 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
70ba3d4803
commit
90bfc2d105
@ -4134,6 +4134,13 @@ SDOperand SelectionDAGLegalize::ExpandEXTRACT_VECTOR_ELT(SDOperand Op) {
|
||||
unsigned EltSize = MVT::getSizeInBits(Op.getValueType())/8;
|
||||
Idx = DAG.getNode(ISD::MUL, Idx.getValueType(), Idx,
|
||||
DAG.getConstant(EltSize, Idx.getValueType()));
|
||||
|
||||
if (MVT::getSizeInBits(Idx.getValueType()) >
|
||||
MVT::getSizeInBits(TLI.getPointerTy()))
|
||||
Idx = DAG.getNode(ISD::TRUNCATE, TLI.getPointerTy(), StackPtr);
|
||||
else
|
||||
Idx = DAG.getNode(ISD::SIGN_EXTEND, TLI.getPointerTy(), StackPtr);
|
||||
|
||||
StackPtr = DAG.getNode(ISD::ADD, Idx.getValueType(), Idx, StackPtr);
|
||||
|
||||
Op = DAG.getLoad(Op.getValueType(), Ch, StackPtr, NULL, 0);
|
||||
|
22
test/CodeGen/PowerPC/2007-10-18-PtrArithmetic.ll
Normal file
22
test/CodeGen/PowerPC/2007-10-18-PtrArithmetic.ll
Normal file
@ -0,0 +1,22 @@
|
||||
; RUN: llvm-as < %s | llc -march=ppc64 -mattr=+altivec
|
||||
%struct.inoutprops = type <{ i8, [3 x i8] }>
|
||||
|
||||
define void @bork(float* %argA, float* %argB, float* %res, i8 %inoutspec.0) {
|
||||
entry:
|
||||
%.mask = and i8 %inoutspec.0, -16 ; <i8> [#uses=1]
|
||||
%tmp6 = icmp eq i8 %.mask, 16 ; <i1> [#uses=1]
|
||||
br i1 %tmp6, label %cond_true, label %UnifiedReturnBlock
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp89 = bitcast float* %res to <4 x i32>* ; <<4 x i32>*> [#uses=1]
|
||||
%tmp1011 = bitcast float* %argA to <4 x i32>* ; <<4 x i32>*> [#uses=1]
|
||||
%tmp14 = load <4 x i32>* %tmp1011, align 16 ; <<4 x i32>> [#uses=1]
|
||||
%tmp1516 = bitcast float* %argB to <4 x i32>* ; <<4 x i32>*> [#uses=1]
|
||||
%tmp18 = load <4 x i32>* %tmp1516, align 16 ; <<4 x i32>> [#uses=1]
|
||||
%tmp19 = sdiv <4 x i32> %tmp14, %tmp18 ; <<4 x i32>> [#uses=1]
|
||||
store <4 x i32> %tmp19, <4 x i32>* %tmp89, align 16
|
||||
ret void
|
||||
|
||||
UnifiedReturnBlock: ; preds = %entry
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user