diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp index aef2898919f3f..313508eb42313 100644 --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -8976,7 +8976,7 @@ void ResolveNamesVisitor::FinishSpecificationPart( if (inDeviceSubprogram && IsDummy(symbol) && symbol.has()) { auto *dummy{symbol.detailsIf()}; - if (!dummy->cudaDataAttr()) { + if (!dummy->cudaDataAttr() && !IsValue(symbol)) { // Implicitly set device attribute if none is set in device context. dummy->set_cudaDataAttr(common::CUDADataAttr::Device); } diff --git a/flang/test/Semantics/modfile55.cuf b/flang/test/Semantics/modfile55.cuf index 6c0d152a382a8..cf01bdd5f58f6 100644 --- a/flang/test/Semantics/modfile55.cuf +++ b/flang/test/Semantics/modfile55.cuf @@ -29,7 +29,6 @@ end !contains !attributes(global) subroutine globsub(x,y,z) !real(4),value::x -!attributes(device) x !real(4)::y !attributes(device) y !real(4)::z