[flang-commits] [flang] 45760be - [flang] Attempt to silence new GCC warnings
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Wed Aug 2 08:17:18 PDT 2023
Author: Peter Klausler
Date: 2023-08-02T07:58:00-07:00
New Revision: 45760be33b827fbd05f58e7c480ea4448ecd315b
URL: https://github.com/llvm/llvm-project/commit/45760be33b827fbd05f58e7c480ea4448ecd315b
DIFF: https://github.com/llvm/llvm-project/commit/45760be33b827fbd05f58e7c480ea4448ecd315b.diff
LOG: [flang] Attempt to silence new GCC warnings
Restructure three code sites that are now eliciting new warnings
from the latest GCC compiler. One of these looks like a
legitimate problem with a reference to an expression temporary.
Fixes https://github.com/llvm/llvm-project/issues/64200.
Differential Revision: https://reviews.llvm.org/D156750
Added:
Modified:
flang/lib/Lower/ConvertCall.cpp
flang/lib/Lower/OpenMP.cpp
flang/lib/Semantics/runtime-type-info.cpp
Removed:
################################################################################
diff --git a/flang/lib/Lower/ConvertCall.cpp b/flang/lib/Lower/ConvertCall.cpp
index 8971f0e311cd89..d5f0a88414648f 100644
--- a/flang/lib/Lower/ConvertCall.cpp
+++ b/flang/lib/Lower/ConvertCall.cpp
@@ -1693,11 +1693,12 @@ class ElementalUserCallBuilder
bool canLoadActualArgumentBeforeLoop(unsigned argIdx) const {
using PassBy = Fortran::lower::CallerInterface::PassEntityBy;
- assert(argIdx < caller.getPassedArguments().size() && "bad argument index");
+ const auto &passedArgs{caller.getPassedArguments()};
+ assert(argIdx < passedArgs.size() && "bad argument index");
// If the actual argument does not need to be passed via an address,
// or will be passed in the address of a temporary copy, it can be loaded
// before the elemental loop nest.
- const auto &arg = caller.getPassedArguments()[argIdx];
+ const auto &arg{passedArgs[argIdx]};
return arg.passBy == PassBy::Value ||
arg.passBy == PassBy::BaseAddressValueAttribute;
}
diff --git a/flang/lib/Lower/OpenMP.cpp b/flang/lib/Lower/OpenMP.cpp
index a9cde9ab835e5f..a375648c4e3e36 100644
--- a/flang/lib/Lower/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP.cpp
@@ -2662,8 +2662,8 @@ checkForSymbolMatch(const Fortran::parser::AssignmentStmt &assignmentStmt) {
const auto &expr{std::get<Fortran::parser::Expr>(assignmentStmt.t)};
const auto *e{Fortran::semantics::GetExpr(expr)};
const auto *v{Fortran::semantics::GetExpr(var)};
- const Fortran::semantics::Symbol &varSymbol =
- Fortran::evaluate::GetSymbolVector(*v).front();
+ auto varSyms{Fortran::evaluate::GetSymbolVector(*v)};
+ const Fortran::semantics::Symbol &varSymbol{*varSyms.front()};
for (const Fortran::semantics::Symbol &symbol :
Fortran::evaluate::GetSymbolVector(*e))
if (varSymbol == symbol)
diff --git a/flang/lib/Semantics/runtime-type-info.cpp b/flang/lib/Semantics/runtime-type-info.cpp
index 9612c2368e9e9e..2e95d4c70e77f3 100644
--- a/flang/lib/Semantics/runtime-type-info.cpp
+++ b/flang/lib/Semantics/runtime-type-info.cpp
@@ -202,7 +202,8 @@ static SomeExpr SaveDerivedPointerTarget(Scope &scope, SourceName name,
if (x.empty()) {
return SomeExpr{evaluate::NullPointer{}};
} else {
- const auto &derivedType{x.front().GetType().GetDerivedTypeSpec()};
+ auto dyType{x.front().GetType()};
+ const auto &derivedType{dyType.GetDerivedTypeSpec()};
ObjectEntityDetails object;
DeclTypeSpec typeSpec{DeclTypeSpec::TypeDerived, derivedType};
if (const DeclTypeSpec * spec{scope.FindType(typeSpec)}) {
More information about the flang-commits
mailing list