[flang-commits] [flang] [flang] Silence errors on C_LOC/C_FUNLOC in specification expressions (PR #96108)

via flang-commits flang-commits at lists.llvm.org
Wed Jun 19 14:09:16 PDT 2024


================
@@ -82,6 +82,8 @@ auto IsVariableHelper::operator()(const Symbol &symbol) const -> Result {
   const Symbol &ultimate{symbol.GetUltimate()};
   return !IsNamedConstant(ultimate) &&
       (ultimate.has<semantics::ObjectEntityDetails>() ||
+          (ultimate.has<semantics::EntityDetails>() &&
+              ultimate.attrs().test(semantics::Attr::TARGET)) ||
----------------
jeanPerier wrote:

I am not sure I fully comprehend this change. Is it because IsVariable may be called on a symbol that is not fully resolved as being an object or a procedure yet by name resolution, but its TARGET argument allows telling it cannot be a procedure?

Is it always the case that the TARGET attribute will be set on time (could the symbol appear on a TARGET statement only late in the specification expressions that would be processed after this IsVariable call is made?).

https://github.com/llvm/llvm-project/pull/96108


More information about the flang-commits mailing list