From 7a258c6a3778b78935422a9ed0b6822fae123f32 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 4 Mar 2022 10:30:50 +0100 Subject: [Bitcode] Move x86_intrcc upgrade to bitcode reader This upgrade requires access the legacy pointer element type, so it needs to happen inside the bitcode reader. --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp') diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index debb530..cba5680 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3601,6 +3601,16 @@ Error BitcodeReader::parseFunctionRecord(ArrayRef Record) { } } + if (Func->getCallingConv() == CallingConv::X86_INTR && + !Func->arg_empty() && !Func->hasParamAttribute(0, Attribute::ByVal)) { + unsigned ParamTypeID = getContainedTypeID(FTyID, 1); + Type *ByValTy = getPtrElementTypeByID(ParamTypeID); + if (!ByValTy) + return error("Missing param element type for x86_intrcc upgrade"); + Attribute NewAttr = Attribute::getWithByValType(Context, ByValTy); + Func->addParamAttr(0, NewAttr); + } + MaybeAlign Alignment; if (Error Err = parseAlignmentValue(Record[5], Alignment)) return Err; -- cgit v1.1