xref: /llvm-project/offload/DeviceRTL/src/Debug.cpp (revision 2d9f40694324a72c2b7a3d6a9cfcc7ce8069afc1)
1330d8983SJohannes Doerfert //===--- Debug.cpp -------- Debug utilities ----------------------- C++ -*-===//
2330d8983SJohannes Doerfert //
3330d8983SJohannes Doerfert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4330d8983SJohannes Doerfert // See https://llvm.org/LICENSE.txt for license information.
5330d8983SJohannes Doerfert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6330d8983SJohannes Doerfert //
7330d8983SJohannes Doerfert //===----------------------------------------------------------------------===//
8330d8983SJohannes Doerfert //
9330d8983SJohannes Doerfert // This file contains debug utilities
10330d8983SJohannes Doerfert //
11330d8983SJohannes Doerfert //===----------------------------------------------------------------------===//
12330d8983SJohannes Doerfert 
13330d8983SJohannes Doerfert #include "Shared/Environment.h"
14330d8983SJohannes Doerfert 
15330d8983SJohannes Doerfert #include "Configuration.h"
16330d8983SJohannes Doerfert #include "Debug.h"
1708533a3eSJohannes Doerfert #include "DeviceTypes.h"
18330d8983SJohannes Doerfert #include "Interface.h"
19330d8983SJohannes Doerfert #include "Mapping.h"
20330d8983SJohannes Doerfert #include "State.h"
21330d8983SJohannes Doerfert 
22330d8983SJohannes Doerfert using namespace ompx;
23330d8983SJohannes Doerfert 
24330d8983SJohannes Doerfert #pragma omp begin declare target device_type(nohost)
25330d8983SJohannes Doerfert 
26330d8983SJohannes Doerfert extern "C" {
27330d8983SJohannes Doerfert void __assert_assume(bool condition) { __builtin_assume(condition); }
28330d8983SJohannes Doerfert 
297ebd97b8SJoseph Huber #ifndef OMPTARGET_HAS_LIBC
303c50cbfdSJoseph Huber [[gnu::weak]] void __assert_fail(const char *expr, const char *file,
313c50cbfdSJoseph Huber                                  unsigned line, const char *function) {
32330d8983SJohannes Doerfert   __assert_fail_internal(expr, nullptr, file, line, function);
33330d8983SJohannes Doerfert }
347ebd97b8SJoseph Huber #endif
357ebd97b8SJoseph Huber 
36330d8983SJohannes Doerfert void __assert_fail_internal(const char *expr, const char *msg, const char *file,
37330d8983SJohannes Doerfert                             unsigned line, const char *function) {
38330d8983SJohannes Doerfert   if (msg) {
39*2d9f4069SJoseph Huber     printf("%s:%u: %s: Assertion %s (`%s`) failed.\n", file, line, function,
40330d8983SJohannes Doerfert            msg, expr);
41330d8983SJohannes Doerfert   } else {
42*2d9f4069SJoseph Huber     printf("%s:%u: %s: Assertion `%s` failed.\n", file, line, function, expr);
43330d8983SJohannes Doerfert   }
44330d8983SJohannes Doerfert   __builtin_trap();
45330d8983SJohannes Doerfert }
46330d8983SJohannes Doerfert }
47330d8983SJohannes Doerfert 
48330d8983SJohannes Doerfert #pragma omp end declare target
49