diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2021-02-13 17:43:17 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2021-03-11 10:41:23 +0100 |
commit | 68e01339cc5bc3d8a885bc9413611fbc6ca151e4 (patch) | |
tree | c6aa1157bce0ae59cc7e98442e344cce8f8b35e7 /clang/lib/CodeGen/CodeGenFunction.cpp | |
parent | 0070c9ee2d2ce8513fa36375dca407d40150a576 (diff) | |
download | llvm-68e01339cc5bc3d8a885bc9413611fbc6ca151e4.zip llvm-68e01339cc5bc3d8a885bc9413611fbc6ca151e4.tar.gz llvm-68e01339cc5bc3d8a885bc9413611fbc6ca151e4.tar.bz2 |
[CGBuilder] Remove type-less CreateAlignedLoad() APIs (NFC)
These are incompatible with opaque pointers. This is in preparation
of dropping this API on the IRBuilder side as well.
Instead explicitly pass the loaded type.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index f03208f..3a7d1ab 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -1062,8 +1062,10 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy, llvm::Function::arg_iterator EI = CurFn->arg_end(); --EI; llvm::Value *Addr = Builder.CreateStructGEP(nullptr, &*EI, Idx); + llvm::Type *Ty = + cast<llvm::GetElementPtrInst>(Addr)->getResultElementType(); ReturnValuePointer = Address(Addr, getPointerAlign()); - Addr = Builder.CreateAlignedLoad(Addr, getPointerAlign(), "agg.result"); + Addr = Builder.CreateAlignedLoad(Ty, Addr, getPointerAlign(), "agg.result"); ReturnValue = Address(Addr, CGM.getNaturalTypeAlignment(RetTy)); } else { ReturnValue = CreateIRTemp(RetTy, "retval"); |