[flang-commits] [flang] [Flang][Runtime] Improve runtime implementation of the RENAME intrinsic (PR #99445)
via flang-commits
flang-commits at lists.llvm.org
Thu Jul 18 01:14:03 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-runtime
Author: Michael Klemm (mjklemm)
<details>
<summary>Changes</summary>
The RENAME implementation in the Fortran runtime had a few glitches that had to be addressed:
- Wrong usage of RTDECL (fixed)
- Issue fatal error when trying to use RENAME on a target device (fixed)
---
Full diff: https://github.com/llvm/llvm-project/pull/99445.diff
1 Files Affected:
- (modified) flang/runtime/misc-intrinsic.cpp (+5-2)
``````````diff
diff --git a/flang/runtime/misc-intrinsic.cpp b/flang/runtime/misc-intrinsic.cpp
index 2f7fcd2e2341f..36264eca99d70 100644
--- a/flang/runtime/misc-intrinsic.cpp
+++ b/flang/runtime/misc-intrinsic.cpp
@@ -56,10 +56,10 @@ static RT_API_ATTRS void TransferImpl(Descriptor &result,
extern "C" {
RT_EXT_API_GROUP_BEGIN
-void RTDECL(Rename)(const Descriptor &path1, const Descriptor &path2,
+void RTDEF(Rename)(const Descriptor &path1, const Descriptor &path2,
const Descriptor *status, const char *sourceFile, int line) {
Terminator terminator{sourceFile, line};
-
+#if !defined(RT_DEVICE_COMPILATION)
char *pathSrc{EnsureNullTerminated(
path1.OffsetElement(), path1.ElementBytes(), terminator)};
char *pathDst{EnsureNullTerminated(
@@ -84,6 +84,9 @@ void RTDECL(Rename)(const Descriptor &path1, const Descriptor &path2,
if (pathDst != path2.OffsetElement()) {
FreeMemory(pathDst);
}
+#else // !defined(RT_DEVICE_COMPILATION)
+ terminator.Crash("RENAME intrinsic is only supported on host devices");
+#endif // !defined(RT_DEVICE_COMPILATION)
}
void RTDEF(Transfer)(Descriptor &result, const Descriptor &source,
``````````
</details>
https://github.com/llvm/llvm-project/pull/99445
More information about the flang-commits
mailing list