[clang-tools-extra] [flang] [clang] [llvm] [flang] add SYSTEM runtime and lowering intrinsics support (PR #74309)

Yi Wu via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 29 02:53:47 PST 2024


================
@@ -5934,6 +5938,40 @@ IntrinsicLibrary::genSum(mlir::Type resultType,
                       resultType, args);
 }
 
+// SYSTEM
+void IntrinsicLibrary::genSystem(llvm::ArrayRef<fir::ExtendedValue> args) {
+  assert(args.size() == 2);
+  mlir::Value command = fir::getBase(args[0]);
+  const fir::ExtendedValue &exitstat = args[1];
+
+  if (!command)
+    fir::emitFatalError(loc, "expected COMMAND parameter");
+
+  mlir::Type boxNoneTy = fir::BoxType::get(builder.getNoneType());
+
+  mlir::Value waitBool = builder.createBool(loc, true);
+  mlir::Value exitstatBox =
+      isStaticallyPresent(exitstat)
+          ? fir::getBase(exitstat)
+          : builder.create<fir::AbsentOp>(loc, boxNoneTy).getResult();
----------------
yi-wu-arm wrote:

If I understand correctly, it will pass a null descriptor, which will be handle by an `if(exitstat)` here: https://github.com/llvm/llvm-project/blob/ba5d92eb9c18a9037dd06a74f90ceba3f4e3ace9/flang/runtime/execute.cpp#L123

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


More information about the cfe-commits mailing list