aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-03-04 10:30:50 +0100
committerNikita Popov <npopov@redhat.com>2022-03-04 10:30:50 +0100
commit7a258c6a3778b78935422a9ed0b6822fae123f32 (patch)
tree39a5d6875a896774f521b41c91f3eff7f7b768cb /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parente3a9f68e2c1d5af6f3d1a275b1887e36171f94f3 (diff)
downloadllvm-7a258c6a3778b78935422a9ed0b6822fae123f32.zip
llvm-7a258c6a3778b78935422a9ed0b6822fae123f32.tar.gz
llvm-7a258c6a3778b78935422a9ed0b6822fae123f32.tar.bz2
[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.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp10
1 files changed, 10 insertions, 0 deletions
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<uint64_t> 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;