mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Recreate the size SDNode instead of reusing the old one in the x86
memcpy lowering code; this ensures that the size node has the desired result type. This fixes a regression from r49572 with @llvm.memcpy.i64 on x86-32. llvm-svn: 49761
This commit is contained in:
parent
f99e30e9ee
commit
cf79877623
@ -4731,7 +4731,7 @@ X86TargetLowering::EmitTargetCodeForMemset(SelectionDAG &DAG,
|
||||
default: // Byte aligned
|
||||
AVT = MVT::i8;
|
||||
ValReg = X86::AL;
|
||||
Count = Size;
|
||||
Count = DAG.getIntPtrConstant(SizeVal);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -4746,7 +4746,7 @@ X86TargetLowering::EmitTargetCodeForMemset(SelectionDAG &DAG,
|
||||
InFlag = Chain.getValue(1);
|
||||
} else {
|
||||
AVT = MVT::i8;
|
||||
Count = Size;
|
||||
Count = DAG.getIntPtrConstant(SizeVal);
|
||||
Chain = DAG.getCopyToReg(Chain, X86::AL, Src, InFlag);
|
||||
InFlag = Chain.getValue(1);
|
||||
}
|
||||
|
13
test/CodeGen/X86/memset64-on-x86-32.ll
Normal file
13
test/CodeGen/X86/memset64-on-x86-32.ll
Normal file
@ -0,0 +1,13 @@
|
||||
; RUN: llvm-as < %s | llc -march=x86 | grep stosb
|
||||
|
||||
target triple = "i386-apple-darwin9"
|
||||
%struct.S = type { [80 x i8] }
|
||||
|
||||
define %struct.S* @bork() {
|
||||
entry:
|
||||
call void @llvm.memset.i64( i8* null, i8 0, i64 80, i32 1 )
|
||||
ret %struct.S* null
|
||||
}
|
||||
|
||||
declare void @llvm.memset.i64(i8*, i8, i64, i32) nounwind
|
||||
|
Loading…
x
Reference in New Issue
Block a user