mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 20:06:05 +00:00
[flang] Address TODO from previous changes to IsSaved()
An earlier fix to evaluate::IsSaved() needed to preserve its treatment of named constants in modules and main programs -- i.e. they would appear to be saved -- until a correction was added to the lowering code. This TODO can now be resolved. Differential Revision: https://reviews.llvm.org/D114756
This commit is contained in:
parent
c0b33a65f2
commit
8bc593cbbb
@ -1207,10 +1207,8 @@ bool IsSaved(const Symbol &original) {
|
||||
return false; // this is a component
|
||||
} else if (symbol.attrs().test(Attr::SAVE)) {
|
||||
return true; // explicit SAVE attribute
|
||||
} else if (symbol.test(Symbol::Flag::InDataStmt)) {
|
||||
return true;
|
||||
} else if (IsDummy(symbol) || IsFunctionResult(symbol) ||
|
||||
IsAutomatic(symbol)) {
|
||||
IsAutomatic(symbol) || IsNamedConstant(symbol)) {
|
||||
return false;
|
||||
} else if (scopeKind == Scope::Kind::Module ||
|
||||
(scopeKind == Scope::Kind::MainProgram &&
|
||||
@ -1228,13 +1226,8 @@ bool IsSaved(const Symbol &original) {
|
||||
// -fno-automatic/-save/-Msave option applies to objects in
|
||||
// executable subprograms unless they are explicitly RECURSIVE.
|
||||
return true;
|
||||
} else if (IsNamedConstant(symbol)) {
|
||||
// TODO: lowering needs named constants in modules to be static,
|
||||
// so this test for a named constant has lower precedence for the
|
||||
// time being; when lowering is corrected, this case should be
|
||||
// moved up above module logic, since named constants don't really
|
||||
// have implied SAVE attributes.
|
||||
return false;
|
||||
} else if (symbol.test(Symbol::Flag::InDataStmt)) {
|
||||
return true;
|
||||
} else if (const auto *object{symbol.detailsIf<ObjectEntityDetails>()};
|
||||
object && object->init()) {
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user