diff options
author | yronglin <yronglin777@gmail.com> | 2022-11-17 23:06:21 +0800 |
---|---|---|
committer | Tobias Hieta <tobias@hieta.se> | 2022-11-29 11:05:58 +0100 |
commit | 088f33605d8a61ff519c580a71b1dd57d16a03f8 (patch) | |
tree | 9cb55cd5d29b861b91028dd4663ed88e93c5ed6e /clang/lib | |
parent | abcd0341d8465d55d7293dfc7142fef5055047fa (diff) | |
download | llvm-llvmorg-15.0.6.zip llvm-llvmorg-15.0.6.tar.gz llvm-llvmorg-15.0.6.tar.bz2 |
[CodeGen][ARM] Fix ARMABIInfo::EmitVAAarg crash with empty record type variadic argllvmorg-15.0.6
Fix ARMABIInfo::EmitVAAarg crash with empty record type variadic arg
Open issue: https://github.com/llvm/llvm-project/issues/58794
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D138137
(cherry picked from commit 80f444646c62ccc8b2399d60ac91e62e6e576da6)
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 36e10e4df..44743fa 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -7047,10 +7047,10 @@ Address ARMABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, // Empty records are ignored for parameter passing purposes. if (isEmptyRecord(getContext(), Ty, true)) { - Address Addr = Address(CGF.Builder.CreateLoad(VAListAddr), - getVAListElementType(CGF), SlotSize); - Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty)); - return Addr; + VAListAddr = CGF.Builder.CreateElementBitCast(VAListAddr, CGF.Int8PtrTy); + auto *Load = CGF.Builder.CreateLoad(VAListAddr); + Address Addr = Address(Load, CGF.Int8Ty, SlotSize); + return CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty)); } CharUnits TySize = getContext().getTypeSizeInChars(Ty); |