Fix ASAN error caused by commit r364512.

This patch intends to fix ASAN stack-use-after-scope error.
This is at least a short-term fix to unbreak LLVM's mainline.

Differential Revision: https://reviews.llvm.org/D63905

llvm-svn: 364611
This commit is contained in:
Rumeet Dhindsa 2019-06-27 23:37:04 +00:00
parent 4fcf0004fa
commit ddc2804e1a
1 changed files with 6 additions and 4 deletions

View File

@ -1560,14 +1560,16 @@ bool IRTranslator::translateCall(const User &U, MachineIRBuilder &MIRBuilder) {
ArrayRef<Register> Res = getOrCreateVRegs(CI);
SmallVector<ArrayRef<Register>, 8> Args;
SmallVector<Register, 8> InVRegs;
Register SwiftErrorVReg = 0;
for (auto &Arg: CI.arg_operands()) {
if (CLI->supportSwiftError() && isSwiftError(Arg)) {
LLT Ty = getLLTForType(*Arg->getType(), *DL);
Register InVReg = MRI->createGenericVirtualRegister(Ty);
MIRBuilder.buildCopy(InVReg, SwiftError.getOrCreateVRegUseAt(
&CI, &MIRBuilder.getMBB(), Arg));
Args.push_back(InVReg);
InVRegs.push_back(MRI->createGenericVirtualRegister(Ty));
MIRBuilder.buildCopy(
InVRegs.back(),
SwiftError.getOrCreateVRegUseAt(&CI, &MIRBuilder.getMBB(), Arg));
Args.emplace_back(llvm::makeArrayRef(InVRegs.back()));
SwiftErrorVReg =
SwiftError.getOrCreateVRegDefAt(&CI, &MIRBuilder.getMBB(), Arg);
continue;