diff options
| author | Nikita Popov <npopov@redhat.com> | 2024-05-30 11:44:13 +0200 |
|---|---|---|
| committer | Nikita Popov <npopov@redhat.com> | 2024-05-30 11:47:07 +0200 |
| commit | b2bd024384b484647da9fd9863bf6f77b5731949 (patch) | |
| tree | 365c0359b8e89bb21cc0934471b5140ccb7baaec /clang/lib/CodeGen/CGExprAgg.cpp | |
| parent | 3fee8b346928a24975ebbd6984b583c01ec82955 (diff) | |
| download | llvm-b2bd024384b484647da9fd9863bf6f77b5731949.zip llvm-b2bd024384b484647da9fd9863bf6f77b5731949.tar.gz llvm-b2bd024384b484647da9fd9863bf6f77b5731949.tar.bz2 | |
[CGExprAgg] Don't create zero index GEP
With opaque pointers, we no longer need a zero-index GEP to get
the first element.
Diffstat (limited to 'clang/lib/CodeGen/CGExprAgg.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExprAgg.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index 7a92fc3..5b2039a 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -448,11 +448,7 @@ AggExprEmitter::VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E) { AggValueSlot Dest = EnsureSlot(E->getType()); LValue DestLV = CGF.MakeAddrLValue(Dest.getAddress(), E->getType()); LValue Start = CGF.EmitLValueForFieldInitialization(DestLV, *Field); - llvm::Value *Zero = llvm::ConstantInt::get(CGF.PtrDiffTy, 0); - llvm::Value *IdxStart[] = { Zero, Zero }; - llvm::Value *ArrayStart = Builder.CreateInBoundsGEP( - ArrayPtr.getElementType(), ArrayPtr.emitRawPointer(CGF), IdxStart, - "arraystart"); + llvm::Value *ArrayStart = ArrayPtr.emitRawPointer(CGF); CGF.EmitStoreThroughLValue(RValue::get(ArrayStart), Start); ++Field; @@ -467,6 +463,7 @@ AggExprEmitter::VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E) { Ctx.hasSameType(Field->getType()->getPointeeType(), ArrayType->getElementType())) { // End pointer. + llvm::Value *Zero = llvm::ConstantInt::get(CGF.PtrDiffTy, 0); llvm::Value *IdxEnd[] = { Zero, Size }; llvm::Value *ArrayEnd = Builder.CreateInBoundsGEP( ArrayPtr.getElementType(), ArrayPtr.emitRawPointer(CGF), IdxEnd, |
