Skip to content

Commit 38d7efc

Browse files
committed
Fix CUDA implicit data transfer entity creation
1 parent fa24875 commit 38d7efc

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

flang/lib/Lower/Bridge.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4778,7 +4778,13 @@ class FirConverter : public Fortran::lower::AbstractConverter {
47784778
nbDeviceResidentObject <= 1 &&
47794779
"Only one reference to the device resident object is supported");
47804780
auto addr = getSymbolAddress(sym);
4781-
hlfir::Entity entity{addr};
4781+
mlir::Value baseValue;
4782+
if (auto declareOp = llvm::dyn_cast<hlfir::DeclareOp>(addr.getDefiningOp()))
4783+
baseValue = declareOp.getBase();
4784+
else
4785+
baseValue = addr;
4786+
4787+
hlfir::Entity entity{baseValue};
47824788
auto [temp, cleanup] =
47834789
hlfir::createTempFromMold(loc, builder, entity);
47844790
auto needCleanup = fir::getIntIfConstant(cleanup);

0 commit comments

Comments
 (0)