diff options
author | Nikita Popov <npopov@redhat.com> | 2022-03-04 10:30:50 +0100 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-03-04 10:30:50 +0100 |
commit | 7a258c6a3778b78935422a9ed0b6822fae123f32 (patch) | |
tree | 39a5d6875a896774f521b41c91f3eff7f7b768cb /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | e3a9f68e2c1d5af6f3d1a275b1887e36171f94f3 (diff) | |
download | llvm-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.cpp | 10 |
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; |