[flang] Rearrange some move(get<>()) calls into get<>(move()) to dodge GCC possibly...
authorpeter klausler <pklausler@nvidia.com>
Tue, 18 Jun 2019 22:15:22 +0000 (15:15 -0700)
committerpeter klausler <pklausler@nvidia.com>
Tue, 18 Jun 2019 22:15:22 +0000 (15:15 -0700)
Original-commit: flang-compiler/f18@f369c6025c593f8a8b2426f2ce03c7ddec9a4ff9
Reviewed-on: https://github.com/flang-compiler/f18/pull/503
Tree-same-pre-rewrite: false

flang/lib/evaluate/tools.cc
flang/lib/evaluate/variable.cc
flang/lib/parser/basic-parsers.h
flang/lib/parser/parse-tree.cc
flang/lib/semantics/expression.cc

index 5d667b8..b5f0747 100644 (file)
@@ -142,8 +142,8 @@ std::optional<Expr<SomeComplex>> ConstructComplex(
     parser::ContextualMessages &messages, std::optional<Expr<SomeType>> &&real,
     std::optional<Expr<SomeType>> &&imaginary, int defaultRealKind) {
   if (auto parts{common::AllPresent(std::move(real), std::move(imaginary))}) {
-    return ConstructComplex(messages, std::move(std::get<0>(*parts)),
-        std::move(std::get<1>(*parts)), defaultRealKind);
+    return ConstructComplex(messages, std::get<0>(std::move(*parts)),
+        std::get<1>(std::move(*parts)), defaultRealKind);
   }
   return std::nullopt;
 }
@@ -187,8 +187,8 @@ std::optional<Expr<SomeType>> MixedComplexLeft(
     auto ri{NumericOperation<Multiply>(messages, AsGenericExpr(std::move(zi)),
         AsGenericExpr(std::move(copy)), defaultRealKind)};
     if (auto parts{common::AllPresent(std::move(rr), std::move(ri))}) {
-      return Package(ConstructComplex(messages, std::move(std::get<0>(*parts)),
-          std::move(std::get<1>(*parts)), defaultRealKind));
+      return Package(ConstructComplex(messages, std::get<0>(std::move(*parts)),
+          std::get<1>(std::move(*parts)), defaultRealKind));
     }
   } else if constexpr (RCAT == TypeCategory::Integer &&
       std::is_same_v<OPR<LargestReal>, Power<LargestReal>>) {
@@ -448,8 +448,8 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
                         : LogicalOperator::Or};
                 return Expr<LogicalResult>{
                     LogicalOperation<LogicalResult::kind>{combine,
-                        std::move(std::get<0>(*parts)),
-                        std::move(std::get<1>(*parts))}};
+                        std::get<0>(std::move(*parts)),
+                        std::get<1>(std::move(*parts))}};
               }
             }
             return std::nullopt;
index 5bb3fbe..3d07183 100644 (file)
@@ -551,7 +551,7 @@ SymbolOrComponent CoarrayRef::GetBaseSymbolOrComponent() const {
     } else if (j == 1) {  // X%Y
       base = Component{DataRef{std::get<const Symbol *>(base)}, *symbol};
     } else {  // X%Y%Z or more
-      base = Component{DataRef{std::move(std::get<Component>(base))}, *symbol};
+      base = Component{DataRef{std::get<Component>(std::move(base))}, *symbol};
     }
     ++j;
   }
index bff3d51..dcbd78d 100644 (file)
@@ -653,7 +653,7 @@ inline auto ApplyHelperMember(
     ApplyArgs<OBJPARSER, PARSER...> &&args, std::index_sequence<J...>) ->
     typename OBJPARSER::resultType {
   ((*std::get<0>(args)).*mfp)(std::move(*std::get<J + 1>(args))...);
-  return std::move(std::get<0>(args));
+  return std::get<0>(std::move(args));
 }
 
 template<typename OBJPARSER, typename... PARSER> class ApplyMemberFunction {
index 7e6b405..89163e6 100644 (file)
@@ -193,11 +193,11 @@ Substring ArrayElement::ConvertToSubstring() {
   auto iter{subscripts.begin()};
   CHECK(iter != subscripts.end());
   auto &triplet{std::get<SubscriptTriplet>(iter->u)};
-  SubstringRange range{
-      std::move(std::get<0>(triplet.t)), std::move(std::get<1>(triplet.t))};
   CHECK(!std::get<2>(triplet.t).has_value());
   CHECK(++iter == subscripts.end());
-  return Substring{std::move(base), std::move(range)};
+  return Substring{std::move(base),
+      SubstringRange{std::get<0>(std::move(triplet.t)),
+          std::get<1>(std::move(triplet.t))}};
 }
 
 // R1544 stmt-function-stmt
index 8dd8cfc..d5e76ed 100644 (file)
@@ -1644,7 +1644,7 @@ MaybeExpr BinaryOperationHelper(ExpressionAnalyzer &context, const PARSED &x) {
     ConformabilityCheck(context.GetContextualMessages(), std::get<0>(*both),
         std::get<1>(*both));
     return NumericOperation<OPR>(context.GetContextualMessages(),
-        std::move(std::get<0>(*both)), std::move(std::get<1>(*both)),
+        std::get<0>(std::move(*both)), std::get<1>(std::move(*both)),
         context.GetDefaultKind(TypeCategory::Real));
   }
   return std::nullopt;
@@ -1722,7 +1722,7 @@ MaybeExpr RelationHelper(
     ConformabilityCheck(context.GetContextualMessages(), std::get<0>(*both),
         std::get<1>(*both));
     return AsMaybeExpr(Relate(context.GetContextualMessages(), opr,
-        std::move(std::get<0>(*both)), std::move(std::get<1>(*both))));
+        std::get<0>(std::move(*both)), std::get<1>(std::move(*both))));
   }
   return std::nullopt;
 }