Skip to content

Commit af5bf7f

Browse files
author
git apple-llvm automerger
committed
Merge commit 'ba2be802b04a' from llvm.org/main into next
2 parents 141137c + ba2be80 commit af5bf7f

File tree

2 files changed

+24
-56
lines changed

2 files changed

+24
-56
lines changed

clang/lib/CodeGen/CGOpenMPRuntime.cpp

Lines changed: 16 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4728,44 +4728,25 @@ static void emitDependData(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
47284728
}
47294729
}
47304730

4731-
static SmallVector<llvm::Value *, 4>
4732-
emitDepobjElementsSizes(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4733-
const OMPTaskDataTy::DependData &Data) {
4731+
SmallVector<llvm::Value *, 4> CGOpenMPRuntime::emitDepobjElementsSizes(
4732+
CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4733+
const OMPTaskDataTy::DependData &Data) {
47344734
assert(Data.DepKind == OMPC_DEPEND_depobj &&
47354735
"Expected depobj dependecy kind.");
47364736
SmallVector<llvm::Value *, 4> Sizes;
47374737
SmallVector<LValue, 4> SizeLVals;
47384738
ASTContext &C = CGF.getContext();
4739-
QualType FlagsTy;
4740-
getDependTypes(C, KmpDependInfoTy, FlagsTy);
4741-
RecordDecl *KmpDependInfoRD =
4742-
cast<RecordDecl>(KmpDependInfoTy->getAsTagDecl());
4743-
QualType KmpDependInfoPtrTy = C.getPointerType(KmpDependInfoTy);
4744-
llvm::Type *KmpDependInfoPtrT = CGF.ConvertTypeForMem(KmpDependInfoPtrTy);
47454739
{
47464740
OMPIteratorGeneratorScope IteratorScope(
47474741
CGF, cast_or_null<OMPIteratorExpr>(
47484742
Data.IteratorExpr ? Data.IteratorExpr->IgnoreParenImpCasts()
47494743
: nullptr));
47504744
for (const Expr *E : Data.DepExprs) {
4745+
llvm::Value *NumDeps;
4746+
LValue Base;
47514747
LValue DepobjLVal = CGF.EmitLValue(E->IgnoreParenImpCasts());
4752-
LValue Base = CGF.EmitLoadOfPointerLValue(
4753-
DepobjLVal.getAddress(CGF),
4754-
C.getPointerType(C.VoidPtrTy).castAs<PointerType>());
4755-
Address Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4756-
Base.getAddress(CGF), KmpDependInfoPtrT,
4757-
CGF.ConvertTypeForMem(KmpDependInfoTy));
4758-
Base = CGF.MakeAddrLValue(Addr, KmpDependInfoTy, Base.getBaseInfo(),
4759-
Base.getTBAAInfo());
4760-
Address DepObjAddr = CGF.Builder.CreateGEP(
4761-
Addr, llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
4762-
LValue NumDepsBase = CGF.MakeAddrLValue(
4763-
DepObjAddr, KmpDependInfoTy, Base.getBaseInfo(), Base.getTBAAInfo());
4764-
// NumDeps = deps[i].base_addr;
4765-
LValue BaseAddrLVal = CGF.EmitLValueForField(
4766-
NumDepsBase, *std::next(KmpDependInfoRD->field_begin(), BaseAddr));
4767-
llvm::Value *NumDeps =
4768-
CGF.EmitLoadOfScalar(BaseAddrLVal, E->getExprLoc());
4748+
std::tie(NumDeps, Base) =
4749+
getDepobjElements(CGF, DepobjLVal, E->getExprLoc());
47694750
LValue NumLVal = CGF.MakeAddrLValue(
47704751
CGF.CreateMemTemp(C.getUIntPtrType(), "depobj.size.addr"),
47714752
C.getUIntPtrType());
@@ -4785,19 +4766,13 @@ emitDepobjElementsSizes(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
47854766
return Sizes;
47864767
}
47874768

4788-
static void emitDepobjElements(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
4789-
LValue PosLVal,
4790-
const OMPTaskDataTy::DependData &Data,
4791-
Address DependenciesArray) {
4769+
void CGOpenMPRuntime::emitDepobjElements(CodeGenFunction &CGF,
4770+
QualType &KmpDependInfoTy,
4771+
LValue PosLVal,
4772+
const OMPTaskDataTy::DependData &Data,
4773+
Address DependenciesArray) {
47924774
assert(Data.DepKind == OMPC_DEPEND_depobj &&
47934775
"Expected depobj dependecy kind.");
4794-
ASTContext &C = CGF.getContext();
4795-
QualType FlagsTy;
4796-
getDependTypes(C, KmpDependInfoTy, FlagsTy);
4797-
RecordDecl *KmpDependInfoRD =
4798-
cast<RecordDecl>(KmpDependInfoTy->getAsTagDecl());
4799-
QualType KmpDependInfoPtrTy = C.getPointerType(KmpDependInfoTy);
4800-
llvm::Type *KmpDependInfoPtrT = CGF.ConvertTypeForMem(KmpDependInfoPtrTy);
48014776
llvm::Value *ElSize = CGF.getTypeSize(KmpDependInfoTy);
48024777
{
48034778
OMPIteratorGeneratorScope IteratorScope(
@@ -4806,26 +4781,11 @@ static void emitDepobjElements(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
48064781
: nullptr));
48074782
for (unsigned I = 0, End = Data.DepExprs.size(); I < End; ++I) {
48084783
const Expr *E = Data.DepExprs[I];
4784+
llvm::Value *NumDeps;
4785+
LValue Base;
48094786
LValue DepobjLVal = CGF.EmitLValue(E->IgnoreParenImpCasts());
4810-
LValue Base = CGF.EmitLoadOfPointerLValue(
4811-
DepobjLVal.getAddress(CGF),
4812-
C.getPointerType(C.VoidPtrTy).castAs<PointerType>());
4813-
Address Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4814-
Base.getAddress(CGF), KmpDependInfoPtrT,
4815-
CGF.ConvertTypeForMem(KmpDependInfoTy));
4816-
Base = CGF.MakeAddrLValue(Addr, KmpDependInfoTy, Base.getBaseInfo(),
4817-
Base.getTBAAInfo());
4818-
4819-
// Get number of elements in a single depobj.
4820-
Address DepObjAddr = CGF.Builder.CreateGEP(
4821-
Addr, llvm::ConstantInt::get(CGF.IntPtrTy, -1, /*isSigned=*/true));
4822-
LValue NumDepsBase = CGF.MakeAddrLValue(
4823-
DepObjAddr, KmpDependInfoTy, Base.getBaseInfo(), Base.getTBAAInfo());
4824-
// NumDeps = deps[i].base_addr;
4825-
LValue BaseAddrLVal = CGF.EmitLValueForField(
4826-
NumDepsBase, *std::next(KmpDependInfoRD->field_begin(), BaseAddr));
4827-
llvm::Value *NumDeps =
4828-
CGF.EmitLoadOfScalar(BaseAddrLVal, E->getExprLoc());
4787+
std::tie(NumDeps, Base) =
4788+
getDepobjElements(CGF, DepobjLVal, E->getExprLoc());
48294789

48304790
// memcopy dependency data.
48314791
llvm::Value *Size = CGF.Builder.CreateNUWMul(

clang/lib/CodeGen/CGOpenMPRuntime.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,14 @@ class CGOpenMPRuntime {
920920
LValue DepobjLVal,
921921
SourceLocation Loc);
922922

923+
SmallVector<llvm::Value *, 4>
924+
emitDepobjElementsSizes(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
925+
const OMPTaskDataTy::DependData &Data);
926+
927+
void emitDepobjElements(CodeGenFunction &CGF, QualType &KmpDependInfoTy,
928+
LValue PosLVal, const OMPTaskDataTy::DependData &Data,
929+
Address DependenciesArray);
930+
923931
public:
924932
explicit CGOpenMPRuntime(CodeGenModule &CGM)
925933
: CGOpenMPRuntime(CGM, ".", ".") {}

0 commit comments

Comments
 (0)