brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 7ec2762 Raw
47 lines · plain
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This file contains the definition of error handling macros for reporting11/// fatal error conditions and validating Offload API calls.12///13//===----------------------------------------------------------------------===//14 15#ifndef MATHTEST_ERRORHANDLING_HPP16#define MATHTEST_ERRORHANDLING_HPP17 18#include "mathtest/OffloadForward.hpp"19 20#include "llvm/ADT/Twine.h"21 22#define FATAL_ERROR(Message)                                                   \23  mathtest::detail::reportFatalError(Message, __FILE__, __LINE__, __func__)24 25#define OL_CHECK(ResultExpr)                                                   \26  do {                                                                         \27    ol_result_t Result = (ResultExpr);                                         \28    if (Result != OL_SUCCESS)                                                  \29      mathtest::detail::reportOffloadError(#ResultExpr, Result, __FILE__,      \30                                           __LINE__, __func__);                \31                                                                               \32  } while (false)33 34namespace mathtest {35namespace detail {36 37[[noreturn]] void reportFatalError(const llvm::Twine &Message, const char *File,38                                   int Line, const char *FuncName);39 40[[noreturn]] void reportOffloadError(const char *ResultExpr, ol_result_t Result,41                                     const char *File, int Line,42                                     const char *FuncName);43} // namespace detail44} // namespace mathtest45 46#endif // MATHTEST_ERRORHANDLING_HPP47