[flang-commits] [flang] [flang] add simplification for ProductOp intrinsic (PR #169575)

Eugene Epshteyn via flang-commits flang-commits at lists.llvm.org
Wed Nov 26 07:04:21 PST 2025


================
@@ -1671,6 +1671,25 @@ mlir::Value fir::factory::createZeroValue(fir::FirOpBuilder &builder,
                            "numeric or logical type");
 }
 
+mlir::Value fir::factory::createOneValue(fir::FirOpBuilder &builder,
+                                         mlir::Location loc, mlir::Type type) {
+  mlir::Type i1 = builder.getIntegerType(1);
+  if (mlir::isa<fir::LogicalType>(type) || type == i1)
+    return builder.createConvert(loc, type, builder.createBool(loc, true));
+  if (fir::isa_integer(type))
+    return builder.createIntegerConstant(loc, type, 0);
+  if (fir::isa_real(type))
+    return builder.createRealOneConstant(loc, type);
+  if (fir::isa_complex(type)) {
+    fir::factory::Complex complexHelper(builder, loc);
+    mlir::Type partType = complexHelper.getComplexPartType(type);
+    mlir::Value onePart = builder.createRealOneConstant(loc, partType);
+    return complexHelper.createComplex(type, onePart, onePart);
+  }
+  fir::emitFatalError(loc, "internal: trying to generate zero value of non "
----------------
eugeneepshteyn wrote:

"one value"

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


More information about the flang-commits mailing list