Skip to content

Commit 6c0af92

Browse files
committed
[CodeGen] Avoid some pointer element type accesses
1 parent 7ed1abd commit 6c0af92

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

clang/lib/CodeGen/CGCall.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3513,8 +3513,7 @@ void CodeGenFunction::EmitFunctionEpilog(const CGFunctionInfo &FI,
35133513
--EI;
35143514
llvm::Value *ArgStruct = &*EI;
35153515
llvm::Value *SRet = Builder.CreateStructGEP(
3516-
EI->getType()->getPointerElementType(), ArgStruct,
3517-
RetAI.getInAllocaFieldIndex());
3516+
FI.getArgStruct(), ArgStruct, RetAI.getInAllocaFieldIndex());
35183517
llvm::Type *Ty =
35193518
cast<llvm::GetElementPtrInst>(SRet)->getResultElementType();
35203519
RV = Builder.CreateAlignedLoad(Ty, SRet, getPointerAlign(), "sret");

clang/lib/CodeGen/CGOpenMPRuntime.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9990,6 +9990,7 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
99909990
cast<VarDecl>(cast<DeclRefExpr>(D->getMapperVarRef())->getDecl());
99919991
SourceLocation Loc = D->getLocation();
99929992
CharUnits ElementSize = C.getTypeSizeInChars(Ty);
9993+
llvm::Type *ElemTy = CGM.getTypes().ConvertTypeForMem(Ty);
99939994

99949995
// Prepare mapper function arguments and attributes.
99959996
ImplicitParamDecl HandleArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr,
@@ -10044,8 +10045,7 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
1004410045
Size, MapperCGF.Builder.getInt64(ElementSize.getQuantity()));
1004510046
llvm::Value *PtrBegin = MapperCGF.Builder.CreateBitCast(
1004610047
BeginIn, CGM.getTypes().ConvertTypeForMem(PtrTy));
10047-
llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(
10048-
PtrBegin->getType()->getPointerElementType(), PtrBegin, Size);
10048+
llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(ElemTy, PtrBegin, Size);
1004910049
llvm::Value *MapType = MapperCGF.EmitLoadOfScalar(
1005010050
MapperCGF.GetAddrOfLocalVar(&TypeArg), /*Volatile=*/false,
1005110051
C.getPointerType(Int64Ty), Loc);
@@ -10077,10 +10077,10 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
1007710077
llvm::PHINode *PtrPHI = MapperCGF.Builder.CreatePHI(
1007810078
PtrBegin->getType(), 2, "omp.arraymap.ptrcurrent");
1007910079
PtrPHI->addIncoming(PtrBegin, EntryBB);
10080-
Address PtrCurrent =
10081-
Address::deprecated(PtrPHI, MapperCGF.GetAddrOfLocalVar(&BeginArg)
10082-
.getAlignment()
10083-
.alignmentOfArrayElement(ElementSize));
10080+
Address PtrCurrent(PtrPHI, ElemTy,
10081+
MapperCGF.GetAddrOfLocalVar(&BeginArg)
10082+
.getAlignment()
10083+
.alignmentOfArrayElement(ElementSize));
1008410084
// Privatize the declared variable of mapper to be the current array element.
1008510085
CodeGenFunction::OMPPrivateScope Scope(MapperCGF);
1008610086
Scope.addPrivate(MapperVarDecl, PtrCurrent);
@@ -10202,7 +10202,6 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
1020210202

1020310203
// Update the pointer to point to the next element that needs to be mapped,
1020410204
// and check whether we have mapped all elements.
10205-
llvm::Type *ElemTy = PtrPHI->getType()->getPointerElementType();
1020610205
llvm::Value *PtrNext = MapperCGF.Builder.CreateConstGEP1_32(
1020710206
ElemTy, PtrPHI, /*Idx0=*/1, "omp.arraymap.next");
1020810207
PtrPHI->addIncoming(PtrNext, LastBB);

clang/lib/CodeGen/CodeGenFunction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
11041104
llvm::Function::arg_iterator EI = CurFn->arg_end();
11051105
--EI;
11061106
llvm::Value *Addr = Builder.CreateStructGEP(
1107-
EI->getType()->getPointerElementType(), &*EI, Idx);
1107+
CurFnInfo->getArgStruct(), &*EI, Idx);
11081108
llvm::Type *Ty =
11091109
cast<llvm::GetElementPtrInst>(Addr)->getResultElementType();
11101110
ReturnValuePointer = Address(Addr, Ty, getPointerAlign());

0 commit comments

Comments
 (0)