Rather than having a number of static local variables, we now use a single `OffloadContext` struct to store global state. This is initialised by `olInit`, but is never deleted (de-initialization of Offload isn't yet implemented). The error reporting mechanism has not been moved to the struct, since that's going to cause issues with teardown (error messages must outlive liboffload).
43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
//===- offload_lib.cpp - Entry points for the new LLVM/Offload API --------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file pulls in the tablegen'd API entry point functions.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "OffloadImpl.hpp"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
#include <OffloadAPI.h>
|
|
#include <OffloadPrint.hpp>
|
|
|
|
llvm::StringSet<> &errorStrs() {
|
|
static llvm::StringSet<> ErrorStrs;
|
|
return ErrorStrs;
|
|
}
|
|
|
|
ErrSetT &errors() {
|
|
static ErrSetT Errors{};
|
|
return Errors;
|
|
}
|
|
|
|
ol_code_location_t *¤tCodeLocation() {
|
|
thread_local ol_code_location_t *CodeLoc = nullptr;
|
|
return CodeLoc;
|
|
}
|
|
|
|
namespace llvm {
|
|
namespace offload {
|
|
// Pull in the declarations for the implementation functions. The actual entry
|
|
// points in this file wrap these.
|
|
#include "OffloadImplFuncDecls.inc"
|
|
} // namespace offload
|
|
} // namespace llvm
|
|
|
|
// Pull in the tablegen'd entry point definitions.
|
|
#include "OffloadEntryPoints.inc"
|