| //===-------- Debug.h ---- Debug utilities ------------------------ C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef OMPTARGET_DEVICERTL_DEBUG_H |
| #define OMPTARGET_DEVICERTL_DEBUG_H |
| |
| /// Assertion |
| /// |
| /// { |
| 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__) |
| |
| ///} |
| |
| /// Print |
| /// TODO: For now we have to use macros to guard the code because Clang lowers |
| /// `printf` to different function calls on NVPTX and AMDGCN platforms, and it |
| /// doesn't work for AMDGCN. After it can work on AMDGCN, we will remove the |
| /// macro. |
| /// { |
| |
| #ifndef __AMDGCN__ |
| extern "C" { |
| int printf(const char *format, ...); |
| } |
| |
| #define PRINTF(fmt, ...) (void)printf(fmt, __VA_ARGS__); |
| #define PRINT(str) PRINTF("%s", str) |
| #else |
| #define PRINTF(fmt, ...) |
| #define PRINT(str) |
| #endif |
| |
| ///} |
| |
| /// Enter a debugging scope for performing function traces. Enabled with |
| /// FunctionTracting set in the debug kind. |
| #define FunctionTracingRAII() \ |
| DebugEntryRAII Entry(__FILE__, __LINE__, __PRETTY_FUNCTION__); |
| |
| /// An RAII class for handling entries to debug locations. The current location |
| /// and function will be printed on entry. Nested levels increase the |
| /// indentation shown in the debugging output. |
| struct DebugEntryRAII { |
| DebugEntryRAII(const char *File, const unsigned Line, const char *Function); |
| ~DebugEntryRAII(); |
| }; |
| |
| #endif |