[flang-commits] [clang] [flang] Revert "Revert "Revert "[Flang][Driver] Add a flag to control zero initializa…" (PR #123330)

Kiran Chandramohan via flang-commits flang-commits at lists.llvm.org
Fri Jan 17 04:27:51 PST 2025


https://github.com/kiranchandramohan created https://github.com/llvm/llvm-project/pull/123330

Reverts llvm/llvm-project#123097

Reverting due to buildbot failure https://lab.llvm.org/buildbot/#/builders/89/builds/14577. 

>From 790a6e1399ee90ae802878dcb00c0e2a1d464d69 Mon Sep 17 00:00:00 2001
From: Kiran Chandramohan <kiranchandramohan at gmail.com>
Date: Fri, 17 Jan 2025 12:27:25 +0000
Subject: [PATCH] =?UTF-8?q?Revert=20"Revert=20"Revert=20"[Flang][Driver]?=
 =?UTF-8?q?=20Add=20a=20flag=20to=20control=20zero=20initializa=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 8c63648117f1e1705943903b149f36ab8a4df1e5.
---
 clang/include/clang/Driver/Options.td         |  5 -----
 clang/lib/Driver/ToolChains/Flang.cpp         |  6 ++---
 flang/include/flang/Lower/LoweringOptions.def |  3 ---
 flang/lib/Frontend/CompilerInvocation.cpp     |  8 -------
 flang/lib/Lower/ConvertVariable.cpp           |  6 +----
 flang/test/Driver/fno-zero-init.f90           |  9 --------
 flang/test/Lower/zero_init.f90                | 20 -----------------
 flang/test/Lower/zero_init_default_init.f90   | 22 -------------------
 flang/tools/bbc/bbc.cpp                       |  6 -----
 9 files changed, 3 insertions(+), 82 deletions(-)
 delete mode 100644 flang/test/Driver/fno-zero-init.f90
 delete mode 100644 flang/test/Lower/zero_init.f90
 delete mode 100644 flang/test/Lower/zero_init_default_init.f90

diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index c4b9743597bb2e..d38dd2b4e3cf09 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -3505,11 +3505,6 @@ def fno_struct_path_tbaa : Flag<["-"], "fno-struct-path-tbaa">, Group<f_Group>;
 def fno_strict_enums : Flag<["-"], "fno-strict-enums">, Group<f_Group>;
 def fno_strict_overflow : Flag<["-"], "fno-strict-overflow">, Group<f_Group>,
   Visibility<[ClangOption, FlangOption]>;
-defm init_global_zero : BoolOptionWithoutMarshalling<"f", "init-global-zero",
-  PosFlag<SetTrue, [], [FlangOption, FC1Option],
-          "Zero initialize globals without default initialization (default)">,
-  NegFlag<SetFalse, [], [FlangOption, FC1Option],
-          "Do not zero initialize globals without default initialization">>;
 def fno_pointer_tbaa : Flag<["-"], "fno-pointer-tbaa">, Group<f_Group>;
 def fno_temp_file : Flag<["-"], "fno-temp-file">, Group<f_Group>,
   Visibility<[ClangOption, CC1Option, CLOption, DXCOption]>, HelpText<
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index 9c1fd28a3a8a26..86ed25badfa2b7 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -155,10 +155,8 @@ void Flang::addCodegenOptions(const ArgList &Args,
                    options::OPT_flang_deprecated_no_hlfir,
                    options::OPT_fno_ppc_native_vec_elem_order,
                    options::OPT_fppc_native_vec_elem_order,
-                   options::OPT_finit_global_zero,
-                   options::OPT_fno_init_global_zero, options::OPT_ftime_report,
-                   options::OPT_ftime_report_EQ, options::OPT_funroll_loops,
-                   options::OPT_fno_unroll_loops});
+                   options::OPT_ftime_report, options::OPT_ftime_report_EQ,
+                   options::OPT_funroll_loops, options::OPT_fno_unroll_loops});
 }
 
 void Flang::addPicOptions(const ArgList &Args, ArgStringList &CmdArgs) const {
diff --git a/flang/include/flang/Lower/LoweringOptions.def b/flang/include/flang/Lower/LoweringOptions.def
index 396c91948be36b..5a6debfdffe030 100644
--- a/flang/include/flang/Lower/LoweringOptions.def
+++ b/flang/include/flang/Lower/LoweringOptions.def
@@ -44,8 +44,5 @@ ENUM_LOWERINGOPT(IntegerWrapAround, unsigned, 1, 0)
 /// If false, assume that the shapes/types/allocation-status match.
 ENUM_LOWERINGOPT(ReallocateLHS, unsigned, 1, 1)
 
-/// If true, initialize globals without initialization to zero.
-/// On by default.
-ENUM_LOWERINGOPT(InitGlobalZero, unsigned, 1, 1)
 #undef LOWERINGOPT
 #undef ENUM_LOWERINGOPT
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 3c6da4687f65d3..15b1e1e0a24881 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -1377,14 +1377,6 @@ bool CompilerInvocation::createFromArgs(
     invoc.loweringOpts.setNoPPCNativeVecElemOrder(true);
   }
 
-  // -f[no-]init-global-zero
-  if (args.hasFlag(clang::driver::options::OPT_finit_global_zero,
-                   clang::driver::options::OPT_fno_init_global_zero,
-                   /*default=*/true))
-    invoc.loweringOpts.setInitGlobalZero(true);
-  else
-    invoc.loweringOpts.setInitGlobalZero(false);
-
   // Preserve all the remark options requested, i.e. -Rpass, -Rpass-missed or
   // -Rpass-analysis. This will be used later when processing and outputting the
   // remarks generated by LLVM in ExecuteCompilerInvocation.cpp.
diff --git a/flang/lib/Lower/ConvertVariable.cpp b/flang/lib/Lower/ConvertVariable.cpp
index 87236dc293ebbc..9ee42d5cd88002 100644
--- a/flang/lib/Lower/ConvertVariable.cpp
+++ b/flang/lib/Lower/ConvertVariable.cpp
@@ -635,11 +635,7 @@ static fir::GlobalOp defineGlobal(Fortran::lower::AbstractConverter &converter,
       global.setLinkName(builder.createCommonLinkage());
     Fortran::lower::createGlobalInitialization(
         builder, global, [&](fir::FirOpBuilder &builder) {
-          mlir::Value initValue;
-          if (converter.getLoweringOptions().getInitGlobalZero())
-            initValue = builder.create<fir::ZeroOp>(loc, symTy);
-          else
-            initValue = builder.create<fir::UndefOp>(loc, symTy);
+          mlir::Value initValue = builder.create<fir::ZeroOp>(loc, symTy);
           builder.create<fir::HasValueOp>(loc, initValue);
         });
   }
diff --git a/flang/test/Driver/fno-zero-init.f90 b/flang/test/Driver/fno-zero-init.f90
deleted file mode 100644
index 2ffa10dd040d52..00000000000000
--- a/flang/test/Driver/fno-zero-init.f90
+++ /dev/null
@@ -1,9 +0,0 @@
-! Check that the driver passes through -f[no-]init-global-zero:
-! RUN: %flang -### -S -finit-global-zero %s -o - 2>&1 | FileCheck --check-prefix=CHECK-POS %s
-! RUN: %flang -### -S -fno-init-global-zero %s -o - 2>&1 | FileCheck --check-prefix=CHECK-NEG %s
-! Check that the compiler accepts -f[no-]init-global-zero:
-! RUN: %flang_fc1 -emit-hlfir -finit-global-zero %s -o -
-! RUN: %flang_fc1 -emit-hlfir -fno-init-global-zero %s -o -
-
-! CHECK-POS: "-fc1"{{.*}}"-finit-global-zero"
-! CHECK-NEG: "-fc1"{{.*}}"-fno-init-global-zero"
diff --git a/flang/test/Lower/zero_init.f90 b/flang/test/Lower/zero_init.f90
deleted file mode 100644
index 5ed6f2247de3b2..00000000000000
--- a/flang/test/Lower/zero_init.f90
+++ /dev/null
@@ -1,20 +0,0 @@
-! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s
-! RUN: %flang_fc1 -finit-global-zero -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s
-! RUN: %flang_fc1 -fno-init-global-zero -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-NO-ZERO-INIT %s
-! RUN: bbc -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s
-! RUN: bbc -finit-global-zero -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s
-! RUN: bbc -finit-global-zero=false -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-NO-ZERO-INIT %s
-
-module m1
-  real :: x
-end module m1
-
-!CHECK-DEFAULT: fir.global @_QMm1Ex : f32 {
-!CHECK-DEFAULT:   %[[UNDEF:.*]] = fir.zero_bits f32
-!CHECK-DEFAULT:   fir.has_value %[[UNDEF]] : f32
-!CHECK-DEFAULT: }
-
-!CHECK-NO-ZERO-INIT: fir.global @_QMm1Ex : f32 {
-!CHECK-NO-ZERO-INIT:   %[[UNDEF:.*]] = fir.undefined f32
-!CHECK-NO-ZERO-INIT:   fir.has_value %[[UNDEF]] : f32
-!CHECK-NO-ZERO-INIT: }
diff --git a/flang/test/Lower/zero_init_default_init.f90 b/flang/test/Lower/zero_init_default_init.f90
deleted file mode 100644
index e2d1f545e35a57..00000000000000
--- a/flang/test/Lower/zero_init_default_init.f90
+++ /dev/null
@@ -1,22 +0,0 @@
-! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck %s
-! RUN: %flang_fc1 -finit-global-zero -emit-hlfir -o - %s | FileCheck %s
-! RUN: %flang_fc1 -fno-init-global-zero -emit-hlfir -o - %s | FileCheck %s
-! RUN: bbc -emit-hlfir -o - %s | FileCheck %s
-! RUN: bbc -finit-global-zero -emit-hlfir -o - %s | FileCheck %s
-! RUN: bbc -finit-global-zero=false -emit-hlfir -o - %s | FileCheck %s
-
-! Test that the flag does not affect globals with default init
-
-module m2
-  type val
-    integer :: my_val = 1
-  end type val
-  type(val) :: v1
-end module m2
-
-!CHECK:  fir.global @_QMm2Ev1 : !fir.type<_QMm2Tval{my_val:i32}> {
-!CHECK:    %[[V1:.*]] = fir.undefined !fir.type<_QMm2Tval{my_val:i32}>
-!CHECK:    %[[ONE:.*]] = arith.constant 1 : i32
-!CHECK:    %[[V1_INIT:.*]] = fir.insert_value %[[V1]], %[[ONE]], ["my_val", !fir.type<_QMm2Tval{my_val:i32}>] : (!fir.type<_QMm2Tval{my_val:i32}>, i32) -> !fir.type<_QMm2Tval{my_val:i32}>
-!CHECK:    fir.has_value %[[V1_INIT]] : !fir.type<_QMm2Tval{my_val:i32}>
-!CHECK:  }
diff --git a/flang/tools/bbc/bbc.cpp b/flang/tools/bbc/bbc.cpp
index dafbcd856389a8..7efc460be86795 100644
--- a/flang/tools/bbc/bbc.cpp
+++ b/flang/tools/bbc/bbc.cpp
@@ -234,11 +234,6 @@ static llvm::cl::opt<bool> integerWrapAround(
     llvm::cl::desc("Treat signed integer overflow as two's complement"),
     llvm::cl::init(false));
 
-static llvm::cl::opt<bool> initGlobalZero(
-    "finit-global-zero",
-    llvm::cl::desc("Zero initialize globals without default initialization"),
-    llvm::cl::init(true));
-
 static llvm::cl::opt<bool>
     reallocateLHS("frealloc-lhs",
                   llvm::cl::desc("Follow Fortran 2003 rules for (re)allocating "
@@ -386,7 +381,6 @@ static llvm::LogicalResult convertFortranSourceToMLIR(
   loweringOptions.setNoPPCNativeVecElemOrder(enableNoPPCNativeVecElemOrder);
   loweringOptions.setLowerToHighLevelFIR(useHLFIR || emitHLFIR);
   loweringOptions.setIntegerWrapAround(integerWrapAround);
-  loweringOptions.setInitGlobalZero(initGlobalZero);
   loweringOptions.setReallocateLHS(reallocateLHS);
   std::vector<Fortran::lower::EnvironmentDefault> envDefaults = {};
   Fortran::frontend::TargetOptions targetOpts;



More information about the flang-commits mailing list