Skip to content

Commit 1632048

Browse files
committed
set IP correctly for dc
1 parent 40cd6f5 commit 1632048

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

flang/lib/Lower/Support/Utils.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,13 @@ void privatizeSymbol(
652652
const semantics::Symbol *symToPrivatize, OperandsStructType *clauseOps) {
653653
constexpr bool isDoConcurrent =
654654
std::is_same_v<OpType, fir::LocalitySpecifierOp>;
655+
mlir::OpBuilder::InsertPoint dcIP;
656+
657+
if (isDoConcurrent) {
658+
dcIP = firOpBuilder.saveInsertionPoint();
659+
firOpBuilder.setInsertionPoint(
660+
firOpBuilder.getRegion().getParentOfType<fir::DoConcurrentOp>());
661+
}
655662

656663
const semantics::Symbol *sym =
657664
isDoConcurrent ? &symToPrivatize->GetUltimate() : symToPrivatize;
@@ -824,6 +831,9 @@ void privatizeSymbol(
824831

825832
if (isDoConcurrent)
826833
allPrivatizedSymbols.insert(symToPrivatize);
834+
835+
if (isDoConcurrent)
836+
firOpBuilder.restoreInsertionPoint(dcIP);
827837
}
828838

829839
template void

flang/test/Lower/do_concurrent_local_assoc_entity.f90

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ end subroutine local_assoc
2626
! CHECK-NEXT: fir.yield(%[[LOCAL_ARG]] : !fir.ref<!fir.box<!fir.array<8xf32>>>)
2727
! CHECK-NEXT: }
2828

29-
! CHECK: fir.do_concurrent.loop {{.*}} local(@[[LOCALIZER]] %{{.*}} -> %[[LOCAL_ARG:.*]] : {{.*}}) {
29+
! CHECK: func.func @_QPlocal_assoc()
30+
! CHECK: %[[BOX_REF:.*]] = fir.alloca !fir.box<!fir.array<8xf32>>
31+
! CHECK: %[[ASSOC_DECL:.*]]:2 = hlfir.declare %{{.*}}(%{{.*}}) {uniq_name = "{{.*}}local_assocEa"}
32+
! CHECK: %[[ASSOC_BOX:.*]] = fir.embox %[[ASSOC_DECL]]#0(%{{.*}})
33+
! CHECK: fir.store %[[ASSOC_BOX]] to %[[BOX_REF]]
34+
! CHECK: fir.do_concurrent.loop {{.*}} local(@[[LOCALIZER]] %[[BOX_REF]] -> %[[LOCAL_ARG:.*]] : {{.*}}) {
3035
! CHECK: %[[LOCAL_DECL:.*]]:2 = hlfir.declare %[[LOCAL_ARG]]
3136
! CHECK: %[[LOCAL_LD:.*]] = fir.load %[[LOCAL_DECL]]#0 : !fir.ref<!fir.box<!fir.array<8xf32>>>
3237
! CHECK: hlfir.designate %[[LOCAL_LD]] (%{{.*}})

0 commit comments

Comments
 (0)