From b266bcb13557f6a9fcf58a2d2be271a631aee72f Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Thu, 16 Sep 2021 08:51:12 -0400 Subject: [PATCH] [OpenMP] Implement __assert_fail in the new device runtime This patch implements the `__assert_fail` function in the new device runtime. This allows users and developers to use the standars assert function inside of the device. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D109886 --- openmp/libomptarget/DeviceRTL/include/Debug.h | 2 ++ openmp/libomptarget/DeviceRTL/src/Debug.cpp | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/openmp/libomptarget/DeviceRTL/include/Debug.h b/openmp/libomptarget/DeviceRTL/include/Debug.h index b304bff..4e2a699 100644 --- a/openmp/libomptarget/DeviceRTL/include/Debug.h +++ b/openmp/libomptarget/DeviceRTL/include/Debug.h @@ -17,6 +17,8 @@ /// { extern "C" { void __assert_assume(bool cond, const char *exp, const char *file, int line); +void __assert_fail(const char *assertion, const char *file, unsigned line, + const char *function); } #define ASSERT(e) __assert_assume(e, #e, __FILE__, __LINE__) diff --git a/openmp/libomptarget/DeviceRTL/src/Debug.cpp b/openmp/libomptarget/DeviceRTL/src/Debug.cpp index 69d04d6..af78836 100644 --- a/openmp/libomptarget/DeviceRTL/src/Debug.cpp +++ b/openmp/libomptarget/DeviceRTL/src/Debug.cpp @@ -26,6 +26,13 @@ void __assert_assume(bool cond, const char *exp, const char *file, int line) { __builtin_assume(cond); } + +void __assert_fail(const char *assertion, const char *file, unsigned line, + const char *function) { + PRINTF("%s:%u: %s: Assertion `%s' failed.\n", file, line, function, + assertion); + __builtin_trap(); +} } #pragma omp end declare target -- 2.7.4