Skip to content

Commit f858541

Browse files
committed
Use fir.convert instead of unrealised cast
1 parent 432a130 commit f858541

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

flang/lib/Lower/OpenMP/OpenMP.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,16 @@ static void processHostEvalClauses(lower::AbstractConverter &converter,
561561
});
562562
break;
563563

564+
case OMPD_teams_workdistribute:
565+
cp.processThreadLimit(stmtCtx, hostInfo.ops);
566+
[[fallthrough]];
567+
case OMPD_target_teams_workdistribute:
568+
cp.processNumTeams(stmtCtx, hostInfo.ops);
569+
processSingleNestedIf([](Directive nestedDir) {
570+
return topDistributeSet.test(nestedDir) || topLoopSet.test(nestedDir);
571+
});
572+
break;
573+
564574
case OMPD_teams_distribute:
565575
case OMPD_teams_distribute_simd:
566576
cp.processThreadLimit(stmtCtx, hostInfo.ops);

flang/lib/Optimizer/OpenMP/LowerWorkdistribute.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -597,8 +597,7 @@ static void reloadCacheAndRecompute(Location loc, RewriterBase &rewriter,
597597
if (isPtr(original.getType())) {
598598
restored = rewriter.create<LLVM::LoadOp>(loc, llvmPtrTy, newArg);
599599
if (!isa<LLVM::LLVMPointerType>(original.getType()))
600-
restored = rewriter.create<UnrealizedConversionCastOp>(loc, original.getType(), ValueRange(restored))
601-
.getResult(0);
600+
restored = rewriter.create<fir::ConvertOp>(loc, original.getType(), restored);
602601
}
603602
else {
604603
restored = rewriter.create<fir::LoadOp>(loc, newArg);
@@ -684,9 +683,7 @@ static SplitResult isolateOp(Operation *splitBeforeOp, bool splitAfter,
684683
getPtrTypeForOmp(original.getType()), original.getLoc());
685684
if (isPtr(original.getType())) {
686685
if (!isa<LLVM::LLVMPointerType>(toStore.getType()))
687-
toStore = rewriter.create<UnrealizedConversionCastOp>(loc, llvmPtrTy,
688-
ValueRange(toStore))
689-
.getResult(0);
686+
toStore = rewriter.create<fir::ConvertOp>(loc, llvmPtrTy, toStore);
690687
rewriter.create<LLVM::StoreOp>(loc, toStore, newArg);
691688
} else {
692689
rewriter.create<fir::StoreOp>(loc, toStore, newArg);

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5047,6 +5047,9 @@ initTargetRuntimeAttrs(llvm::IRBuilderBase &builder,
50475047
omp::LoopNestOp loopOp = castOrGetParentOfType<omp::LoopNestOp>(capturedOp);
50485048
unsigned numLoops = loopOp ? loopOp.getNumLoops() : 0;
50495049

5050+
if (targetOp.getHostEvalVars().empty())
5051+
numLoops = 0;
5052+
50505053
Value numThreads, numTeamsLower, numTeamsUpper, teamsThreadLimit;
50515054
llvm::SmallVector<Value> lowerBounds(numLoops), upperBounds(numLoops),
50525055
steps(numLoops);

0 commit comments

Comments
 (0)