Skip to content

Revert "Revert "Revert "[Flang][Driver] Add a flag to control zero initializa…" #123330

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 17, 2025

Conversation

kiranchandramohan
Copy link
Contributor

Reverts #123097

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

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' flang:driver flang Flang issues not falling into any other category flang:fir-hlfir labels Jan 17, 2025
@kiranchandramohan kiranchandramohan merged commit 8a229f5 into main Jan 17, 2025
5 of 7 checks passed
@kiranchandramohan kiranchandramohan deleted the revert-123097-zero-init3 branch January 17, 2025 12:28
@llvmbot
Copy link
Member

llvmbot commented Jan 17, 2025

@llvm/pr-subscribers-clang-driver

Author: Kiran Chandramohan (kiranchandramohan)

Changes

Reverts llvm/llvm-project#123097

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


Full diff: https://github.com/llvm/llvm-project/pull/123330.diff

9 Files Affected:

  • (modified) clang/include/clang/Driver/Options.td (-5)
  • (modified) clang/lib/Driver/ToolChains/Flang.cpp (+2-4)
  • (modified) flang/include/flang/Lower/LoweringOptions.def (-3)
  • (modified) flang/lib/Frontend/CompilerInvocation.cpp (-8)
  • (modified) flang/lib/Lower/ConvertVariable.cpp (+1-5)
  • (removed) flang/test/Driver/fno-zero-init.f90 (-9)
  • (removed) flang/test/Lower/zero_init.f90 (-20)
  • (removed) flang/test/Lower/zero_init_default_init.f90 (-22)
  • (modified) flang/tools/bbc/bbc.cpp (-6)
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;

@llvmbot
Copy link
Member

llvmbot commented Jan 17, 2025

@llvm/pr-subscribers-flang-fir-hlfir

Author: Kiran Chandramohan (kiranchandramohan)

Changes

Reverts llvm/llvm-project#123097

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


Full diff: https://github.com/llvm/llvm-project/pull/123330.diff

9 Files Affected:

  • (modified) clang/include/clang/Driver/Options.td (-5)
  • (modified) clang/lib/Driver/ToolChains/Flang.cpp (+2-4)
  • (modified) flang/include/flang/Lower/LoweringOptions.def (-3)
  • (modified) flang/lib/Frontend/CompilerInvocation.cpp (-8)
  • (modified) flang/lib/Lower/ConvertVariable.cpp (+1-5)
  • (removed) flang/test/Driver/fno-zero-init.f90 (-9)
  • (removed) flang/test/Lower/zero_init.f90 (-20)
  • (removed) flang/test/Lower/zero_init_default_init.f90 (-22)
  • (modified) flang/tools/bbc/bbc.cpp (-6)
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;

@llvmbot
Copy link
Member

llvmbot commented Jan 17, 2025

@llvm/pr-subscribers-clang

Author: Kiran Chandramohan (kiranchandramohan)

Changes

Reverts llvm/llvm-project#123097

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


Full diff: https://github.com/llvm/llvm-project/pull/123330.diff

9 Files Affected:

  • (modified) clang/include/clang/Driver/Options.td (-5)
  • (modified) clang/lib/Driver/ToolChains/Flang.cpp (+2-4)
  • (modified) flang/include/flang/Lower/LoweringOptions.def (-3)
  • (modified) flang/lib/Frontend/CompilerInvocation.cpp (-8)
  • (modified) flang/lib/Lower/ConvertVariable.cpp (+1-5)
  • (removed) flang/test/Driver/fno-zero-init.f90 (-9)
  • (removed) flang/test/Lower/zero_init.f90 (-20)
  • (removed) flang/test/Lower/zero_init_default_init.f90 (-22)
  • (modified) flang/tools/bbc/bbc.cpp (-6)
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;

@llvmbot
Copy link
Member

llvmbot commented Jan 17, 2025

@llvm/pr-subscribers-flang-driver

Author: Kiran Chandramohan (kiranchandramohan)

Changes

Reverts llvm/llvm-project#123097

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


Full diff: https://github.com/llvm/llvm-project/pull/123330.diff

9 Files Affected:

  • (modified) clang/include/clang/Driver/Options.td (-5)
  • (modified) clang/lib/Driver/ToolChains/Flang.cpp (+2-4)
  • (modified) flang/include/flang/Lower/LoweringOptions.def (-3)
  • (modified) flang/lib/Frontend/CompilerInvocation.cpp (-8)
  • (modified) flang/lib/Lower/ConvertVariable.cpp (+1-5)
  • (removed) flang/test/Driver/fno-zero-init.f90 (-9)
  • (removed) flang/test/Lower/zero_init.f90 (-20)
  • (removed) flang/test/Lower/zero_init_default_init.f90 (-22)
  • (modified) flang/tools/bbc/bbc.cpp (-6)
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;

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 17, 2025

LLVM Buildbot has detected a new failure on builder openmp-offload-libc-amdgpu-runtime running on omp-vega20-1 while building clang,flang at step 7 "Add check check-offload".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/73/builds/11896

Here is the relevant piece of the build log for the reference
Step 7 (Add check check-offload) failure: 1200 seconds without output running [b'ninja', b'-j 32', b'check-offload'], attempting to kill
...
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/test_libc.cpp (989 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/bug50022.cpp (990 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/bug53727.cpp (991 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/bug47654.cpp (992 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/wtime.c (993 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu :: offloading/bug49021.cpp (994 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu :: offloading/std_complex_arithmetic.cpp (995 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/complex_reduction.cpp (996 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/std_complex_arithmetic.cpp (997 of 999)
PASS: libomptarget :: x86_64-unknown-linux-gnu-LTO :: offloading/bug49021.cpp (998 of 999)
command timed out: 1200 seconds without output running [b'ninja', b'-j 32', b'check-offload'], attempting to kill
process killed by signal 9
program finished with exit code -1
elapsedTime=1235.270877

@jeanPerier
Copy link
Contributor

The determinism of the failure with this patch is disturbing and I think I now know why: you are adding a test with module m1 (in flang/test/Lower/zero_init.f90), which is likely the source of the clash since module_use.f90 is reading a module also named m1.

This means your patch to module_use.f90 test did not fix the issue. I am just realizing -J in bbc is the path for intrinsic modules, so -I is probably the one needed, but maybe the best is just to cd into %t and run the test there (there is a precedent for doing cd %t in test/Lower/OpenMP/cfg-conversion-omp.private.f90).

@kiranchandramohan
Copy link
Contributor Author

Thanks @jeanPerier for looking into this in detail. That makes sense. I have #123364 to make the changes for module_use.f90.

@tarunprabhu
Copy link
Contributor

Ah, I think I mixed up gfortran and flang flags. -J in both is the output directory of the module. But in gfortran, it also causes the argument to -J to be added to the list of directories in which to search for modules (what -I usually does). I am not sure if flang behaves the same way for -J.

In any event, it wou seem that -J does not apply to bbc. I suggested it earlier because I assumed that the flags for both flang and bbc would be identical. Apologies for the confusion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang Clang issues not falling into any other category flang:driver flang:fir-hlfir flang Flang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants