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