Author: Valentin Clement (バレンタイン クレメン) Date: 2024-04-30T20:04:54-07:00 New Revision: 1d433cb330f33ed6f300342ea18c7852c37b81d9
URL: https://github.com/llvm/llvm-project/commit/1d433cb330f33ed6f300342ea18c7852c37b81d9 DIFF: https://github.com/llvm/llvm-project/commit/1d433cb330f33ed6f300342ea18c7852c37b81d9.diff LOG: Revert "[flang][cuda] Update attribute compatibily check for unified matching…" This reverts commit 86e5d6f1d83279557170c0b8e8a6a1ec6e4414d2. Added: Modified: flang/include/flang/Common/Fortran.h flang/lib/Common/Fortran.cpp flang/lib/Evaluate/characteristics.cpp flang/lib/Semantics/check-call.cpp flang/test/Semantics/cuf13.cuf Removed: ################################################################################ diff --git a/flang/include/flang/Common/Fortran.h b/flang/include/flang/Common/Fortran.h index 3b965fe60c2f02..2a53452a2774ff 100644 --- a/flang/include/flang/Common/Fortran.h +++ b/flang/include/flang/Common/Fortran.h @@ -114,8 +114,8 @@ static constexpr IgnoreTKRSet ignoreTKRAll{IgnoreTKR::Type, IgnoreTKR::Kind, IgnoreTKR::Rank, IgnoreTKR::Device, IgnoreTKR::Managed}; std::string AsFortran(IgnoreTKRSet); -bool AreCompatibleCUDADataAttrs(std::optional<CUDADataAttr>, - std::optional<CUDADataAttr>, IgnoreTKRSet, bool allowUnifiedMatchingRule); +bool AreCompatibleCUDADataAttrs( + std::optional<CUDADataAttr>, std::optional<CUDADataAttr>, IgnoreTKRSet); static constexpr char blankCommonObjectName[] = "__BLNK__"; diff --git a/flang/lib/Common/Fortran.cpp b/flang/lib/Common/Fortran.cpp index c8efe0bb234328..8ada8fe210a30f 100644 --- a/flang/lib/Common/Fortran.cpp +++ b/flang/lib/Common/Fortran.cpp @@ -97,12 +97,8 @@ std::string AsFortran(IgnoreTKRSet tkr) { return result; } -/// Check compatibilty of CUDA attribute. -/// When `allowUnifiedMatchingRule` is enabled, argument `x` represents the -/// dummy argument attribute while `y` represents the actual argument attribute. bool AreCompatibleCUDADataAttrs(std::optional<CUDADataAttr> x, - std::optional<CUDADataAttr> y, IgnoreTKRSet ignoreTKR, - bool allowUnifiedMatchingRule) { + std::optional<CUDADataAttr> y, IgnoreTKRSet ignoreTKR) { if (!x && !y) { return true; } else if (x && y && *x == *y) { @@ -118,24 +114,6 @@ bool AreCompatibleCUDADataAttrs(std::optional<CUDADataAttr> x, x.value_or(CUDADataAttr::Managed) == CUDADataAttr::Managed && y.value_or(CUDADataAttr::Managed) == CUDADataAttr::Managed) { return true; - } else if (allowUnifiedMatchingRule) { - if (!x) { // Dummy argument has no attribute -> host - if (y && *y == CUDADataAttr::Managed || *y == CUDADataAttr::Unified) { - return true; - } - } else { - if (*x == CUDADataAttr::Device && y && - (*y == CUDADataAttr::Managed || *y == CUDADataAttr::Unified)) { - return true; - } else if (*x == CUDADataAttr::Managed && y && - *y == CUDADataAttr::Unified) { - return true; - } else if (*x == CUDADataAttr::Unified && y && - *y == CUDADataAttr::Managed) { - return true; - } - } - return false; } else { return false; } diff --git a/flang/lib/Evaluate/characteristics.cpp b/flang/lib/Evaluate/characteristics.cpp index ab03ca5ed2d5a2..20f7476425ace6 100644 --- a/flang/lib/Evaluate/characteristics.cpp +++ b/flang/lib/Evaluate/characteristics.cpp @@ -362,9 +362,8 @@ bool DummyDataObject::IsCompatibleWith(const DummyDataObject &actual, } } if (!attrs.test(Attr::Value) && - !common::AreCompatibleCUDADataAttrs(cudaDataAttr, actual.cudaDataAttr, - ignoreTKR, - /*allowUnifiedMatchingRule=*/false)) { + !common::AreCompatibleCUDADataAttrs( + cudaDataAttr, actual.cudaDataAttr, ignoreTKR)) { if (whyNot) { *whyNot = "incompatible CUDA data attributes"; } @@ -1755,9 +1754,8 @@ bool DistinguishUtils::Distinguishable( } else if (y.attrs.test(Attr::Allocatable) && x.attrs.test(Attr::Pointer) && x.intent != common::Intent::In) { return true; - } else if (!common::AreCompatibleCUDADataAttrs(x.cudaDataAttr, y.cudaDataAttr, - x.ignoreTKR | y.ignoreTKR, - /*allowUnifiedMatchingRule=*/false)) { + } else if (!common::AreCompatibleCUDADataAttrs( + x.cudaDataAttr, y.cudaDataAttr, x.ignoreTKR | y.ignoreTKR)) { return true; } else if (features_.IsEnabled( common::LanguageFeature::DistinguishableSpecifics) && diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp index f0da779785142a..db0949e905a658 100644 --- a/flang/lib/Semantics/check-call.cpp +++ b/flang/lib/Semantics/check-call.cpp @@ -897,9 +897,8 @@ static void CheckExplicitDataArg(const characteristics::DummyDataObject &dummy, actualDataAttr = common::CUDADataAttr::Device; } } - if (!common::AreCompatibleCUDADataAttrs(dummyDataAttr, actualDataAttr, - dummy.ignoreTKR, - /*allowUnifiedMatchingRule=*/true)) { + if (!common::AreCompatibleCUDADataAttrs( + dummyDataAttr, actualDataAttr, dummy.ignoreTKR)) { auto toStr{[](std::optional<common::CUDADataAttr> x) { return x ? "ATTRIBUTES("s + parser::ToUpperCaseLetters(common::EnumToString(*x)) + ")"s diff --git a/flang/test/Semantics/cuf13.cuf b/flang/test/Semantics/cuf13.cuf index 6db829002fae67..7c6673e21bf11b 100644 --- a/flang/test/Semantics/cuf13.cuf +++ b/flang/test/Semantics/cuf13.cuf @@ -6,10 +6,6 @@ module matching module procedure sub_device end interface - interface subman - module procedure sub_host - end interface - contains subroutine sub_host(a) integer :: a(:) @@ -25,13 +21,8 @@ program m use matching integer, pinned, allocatable :: a(:) - integer, managed, allocatable :: b(:) logical :: plog allocate(a(100), pinned = plog) - allocate(b(200)) call sub(a) - - call subman(b) - end _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits