@@ -1493,36 +1493,6 @@ class CopyInOutExplicitInterface {
14931493 return !actualTreatAsContiguous && dummyNeedsContiguity;
14941494 }
14951495
1496- // Returns true, if actual and dummy have polymorphic differences
1497- bool HavePolymorphicDifferences () const {
1498- bool dummyIsAssumedRank{dummyObj_.type .attrs ().test (
1499- characteristics::TypeAndShape::Attr::AssumedRank)};
1500- bool actualIsAssumedRank{semantics::IsAssumedRank (actual_)};
1501- bool dummyIsAssumedShape{dummyObj_.type .attrs ().test (
1502- characteristics::TypeAndShape::Attr::AssumedShape)};
1503- bool actualIsAssumedShape{semantics::IsAssumedShape (actual_)};
1504- if ((actualIsAssumedRank && dummyIsAssumedRank) ||
1505- (actualIsAssumedShape && dummyIsAssumedShape)) {
1506- // Assumed-rank and assumed-shape arrays are represented by descriptors,
1507- // so don't need to do polymorphic check.
1508- } else if (!dummyObj_.ignoreTKR .test (common::IgnoreTKR::Type)) {
1509- // flang supports limited cases of passing polymorphic to non-polimorphic.
1510- // These cases require temporary of non-polymorphic type. (For example,
1511- // the actual argument could be polymorphic array of child type,
1512- // while the dummy argument could be non-polymorphic array of parent
1513- // type.)
1514- bool dummyIsPolymorphic{dummyObj_.type .type ().IsPolymorphic ()};
1515- auto actualType{
1516- characteristics::TypeAndShape::Characterize (actual_, fc_)};
1517- bool actualIsPolymorphic{
1518- actualType && actualType->type ().IsPolymorphic ()};
1519- if (actualIsPolymorphic && !dummyIsPolymorphic) {
1520- return true ;
1521- }
1522- }
1523- return false ;
1524- }
1525-
15261496 bool HaveArrayOrAssumedRankArgs () const {
15271497 bool dummyTreatAsArray{dummyObj_.ignoreTKR .test (common::IgnoreTKR::Rank)};
15281498 return IsArrayOrAssumedRank (actual_) &&
@@ -1611,9 +1581,6 @@ bool MayNeedCopy(const ActualArgument *actual,
16111581 if (check.HaveContiguityDifferences ()) {
16121582 return true ;
16131583 }
1614- if (check.HavePolymorphicDifferences ()) {
1615- return true ;
1616- }
16171584 } else { // Implicit interface
16181585 if (ExtractCoarrayRef (*actual)) {
16191586 // Coindexed actual args may need copy-in and copy-out with implicit
0 commit comments