diff options
| author | Nikita Popov <npopov@redhat.com> | 2022-02-14 14:18:04 +0100 |
|---|---|---|
| committer | Nikita Popov <npopov@redhat.com> | 2022-02-14 15:06:04 +0100 |
| commit | f208644ed3618fb1db195adbd35ae0acf2819f23 (patch) | |
| tree | 19eb41c600f77e0f4876cac8ea7404878609e1e7 /clang/lib/CodeGen/CGExprCXX.cpp | |
| parent | 76032b0e3f58d4abe8d00ac61ff1b2044e076ba7 (diff) | |
[CGBuilder] Remove CreateBitCast() method
Use CreateElementBitCast() instead, or don't work on Address
where not necessary.
Diffstat (limited to 'clang/lib/CodeGen/CGExprCXX.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExprCXX.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGExprCXX.cpp b/clang/lib/CodeGen/CGExprCXX.cpp index f06d21861740..f00e315a152a 100644 --- a/clang/lib/CodeGen/CGExprCXX.cpp +++ b/clang/lib/CodeGen/CGExprCXX.cpp @@ -1736,13 +1736,14 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) { EmitNewInitializer(*this, E, allocType, elementTy, result, numElements, allocSizeWithoutCookie); + llvm::Value *resultPtr = result.getPointer(); if (E->isArray()) { // NewPtr is a pointer to the base element type. If we're // allocating an array of arrays, we'll need to cast back to the // array pointer type. llvm::Type *resultType = ConvertTypeForMem(E->getType()); - if (result.getType() != resultType) - result = Builder.CreateBitCast(result, resultType); + if (resultPtr->getType() != resultType) + resultPtr = Builder.CreateBitCast(resultPtr, resultType); } // Deactivate the 'operator delete' cleanup if we finished @@ -1752,7 +1753,6 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) { cleanupDominator->eraseFromParent(); } - llvm::Value *resultPtr = result.getPointer(); if (nullCheck) { conditional.end(*this); |
