[flang-commits] [flang] [flang] Fixed repacking for TARGET and INTENT(OUT) (PR #131972)

Slava Zakharin via flang-commits flang-commits at lists.llvm.org
Wed Mar 19 08:12:44 PDT 2025


================
@@ -1011,10 +1018,16 @@ static void deallocateIntentOut(Fortran::lower::AbstractConverter &converter,
 
 static bool needsRepack(Fortran::lower::AbstractConverter &converter,
                         const Fortran::semantics::Symbol &sym) {
+  const auto &attrs = sym.attrs();
   if (!converter.getLoweringOptions().getRepackArrays() ||
       !converter.isRegisteredDummySymbol(sym) ||
       !Fortran::semantics::IsAssumedShape(sym) ||
-      Fortran::evaluate::IsSimplyContiguous(sym, converter.getFoldingContext()))
+      Fortran::evaluate::IsSimplyContiguous(sym,
+                                            converter.getFoldingContext()) ||
+      // TARGET dummy may be accessed indirectly, so it is unsafe
+      // to repack it. Some compilers provide options to override
+      // this.
+      attrs.test(Fortran::semantics::Attr::TARGET))
----------------
vzakhari wrote:

Thanks! I will add it.

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


More information about the flang-commits mailing list