//===--- Builtins.h - Builtin function header -------------------*- 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 // //===----------------------------------------------------------------------===// /// /// \file /// Defines enum values for all the target-independent builtin /// functions. /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_BASIC_BUILTINS_H #define LLVM_CLANG_BASIC_BUILTINS_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include <cstring> // VC++ defines 'alloca' as an object-like macro, which interferes with our // builtins. #undef alloca namespace clang { class TargetInfo; class IdentifierTable; class LangOptions; enum LanguageID : uint16_t { … }; struct HeaderDesc { … }; namespace Builtin { enum ID { … }; struct Info { … }; /// Holds information about both target-independent and /// target-specific builtins, allowing easy queries by clients. /// /// Builtins from an optional auxiliary target are stored in /// AuxTSRecords. Their IDs are shifted up by TSRecords.size() and need to /// be translated back with getAuxBuiltinID() before use. class Context { … }; /// Returns true if the required target features of a builtin function are /// enabled. /// \p TargetFeatureMap maps a target feature to true if it is enabled and /// false if it is disabled. bool evaluateRequiredTargetFeatures( llvm::StringRef RequiredFatures, const llvm::StringMap<bool> &TargetFetureMap); } // namespace Builtin /// Kinds of BuiltinTemplateDecl. enum BuiltinTemplateKind : int { … }; } // end namespace clang #endif