class Context

Declaration

class Context { /* full declaration omitted */ };

Description

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.

Declared at: clang/include/clang/Basic/Builtins.h:71

Member Variables

private llvm::ArrayRef<Info> TSRecords
private llvm::ArrayRef<Info> AuxTSRecords

Method Overview

Methods

Context()

Declared at: clang/include/clang/Basic/Builtins.h:76

void InitializeTarget(
    const clang::TargetInfo& Target,
    const clang::TargetInfo* AuxTarget)

Description

Perform target-specific initialization

Declared at: clang/include/clang/Basic/Builtins.h:80

Parameters

const clang::TargetInfo& Target
const clang::TargetInfo* AuxTarget
Target info to incorporate builtins from. May be nullptr.

bool allowTypeMismatch(unsigned int ID) const

Description

Determines whether a declaration of this builtin should be recognized even if the type doesn't match the specified signature.

Declared at: clang/include/clang/Basic/Builtins.h:190

Parameters

unsigned int ID

bool canBeRedeclared(unsigned int ID) const

Description

Returns true if this is a builtin that can be redeclared. Returns true for non-builtins.

Declared at: clang/include/clang/Basic/Builtins.h:259

Parameters

unsigned int ID

unsigned int getAuxBuiltinID(
    unsigned int ID) const

Description

Return real builtin ID (i.e. ID it would have during compilation for AuxTarget).

Declared at: clang/include/clang/Basic/Builtins.h:251

Parameters

unsigned int ID

const char* getHeaderName(unsigned int ID) const

Description

If this is a library function that comes from a specific header, retrieve that header name.

Declared at: clang/include/clang/Basic/Builtins.h:210

Parameters

unsigned int ID

const char* getName(unsigned int ID) const

Description

Return the identifier name for the specified builtin, e.g. "__builtin_abs".

Declared at: clang/include/clang/Basic/Builtins.h:89

Parameters

unsigned int ID

const clang::Builtin::Info& getRecord(
    unsigned int ID) const

Declared at: clang/include/clang/Basic/Builtins.h:262

Parameters

unsigned int ID

const char* getRequiredFeatures(
    unsigned int ID) const

Declared at: clang/include/clang/Basic/Builtins.h:238

Parameters

unsigned int ID

unsigned int getRequiredVectorWidth(
    unsigned int ID) const

Declared at: clang/include/clang/Basic/Builtins.h:242

Parameters

unsigned int ID

const char* getTypeString(unsigned int ID) const

Description

Get the type descriptor string for the specified builtin.

Declared at: clang/include/clang/Basic/Builtins.h:94

Parameters

unsigned int ID

bool hasCustomTypechecking(unsigned int ID) const

Description

Determines whether this builtin has custom typechecking.

Declared at: clang/include/clang/Basic/Builtins.h:184

Parameters

unsigned int ID

bool hasPtrArgsOrResult(unsigned int ID) const

Description

Determines whether this builtin has a result or any arguments which are pointer types.

Declared at: clang/include/clang/Basic/Builtins.h:197

Parameters

unsigned int ID

bool hasReferenceArgsOrResult(
    unsigned int ID) const

Description

Return true if this builtin has a result or any arguments which are reference types.

Declared at: clang/include/clang/Basic/Builtins.h:203

Parameters

unsigned int ID

void initializeBuiltins(
    clang::IdentifierTable& Table,
    const clang::LangOptions& LangOpts)

Description

Mark the identifiers for all the builtins with their appropriate builtin ID # and mark any non-portable builtin identifiers as such.

Declared at: clang/include/clang/Basic/Builtins.h:85

Parameters

clang::IdentifierTable& Table
const clang::LangOptions& LangOpts

bool isAuxBuiltinID(unsigned int ID) const

Description

Return true if builtin ID belongs to AuxTarget.

Declared at: clang/include/clang/Basic/Builtins.h:245

Parameters

unsigned int ID

static bool isBuiltinFunc(llvm::StringRef Name)

Description

Returns true if this is a libc/libm function without the '__builtin_' prefix.

Declared at: clang/include/clang/Basic/Builtins.h:255

Parameters

llvm::StringRef Name

bool isConst(unsigned int ID) const

Description

Return true if this function has no side effects and doesn't read memory.

Declared at: clang/include/clang/Basic/Builtins.h:110

Parameters

unsigned int ID

bool isConstWithoutErrno(unsigned int ID) const

Description

Return true if this function has no side effects and doesn't read memory, except for possibly errno. Such functions can be const when the MathErrno lang option is disabled.

Declared at: clang/include/clang/Basic/Builtins.h:234

Parameters

unsigned int ID

bool isDirectlyAddressable(unsigned int ID) const

Description

Determines whether this builtin can have its address taken with no special action required.

Declared at: clang/include/clang/Basic/Builtins.h:176

Parameters

unsigned int ID

bool isHeaderDependentFunction(
    unsigned int ID) const

Description

Returns true if this builtin requires appropriate header in other compilers. In Clang it will work even without including it, but we can emit a warning about missing header.

Declared at: clang/include/clang/Basic/Builtins.h:155

Parameters

unsigned int ID

bool isInStdNamespace(unsigned int ID) const

Description

Determines whether this builtin is a C++ standard library function that lives in (possibly-versioned) namespace std, possibly a template specialization, where the signature is determined by the standard library declaration.

Declared at: clang/include/clang/Basic/Builtins.h:170

Parameters

unsigned int ID

bool isLibFunction(unsigned int ID) const

Description

Return true if this is a builtin for a libc/libm function, with a "__builtin_" prefix (e.g. __builtin_abs).

Declared at: clang/include/clang/Basic/Builtins.h:137

Parameters

unsigned int ID

bool isLike(unsigned int ID,
            unsigned int& FormatIdx,
            bool& HasVAListArg,
            const char* Fmt) const

Description

Helper function for isPrintfLike and isScanfLike.

Declared at: clang/include/clang/Basic/Builtins.h:265

Parameters

unsigned int ID
unsigned int& FormatIdx
bool& HasVAListArg
const char* Fmt

bool isNoReturn(unsigned int ID) const

Description

Return true if we know this builtin never returns.

Declared at: clang/include/clang/Basic/Builtins.h:120

Parameters

unsigned int ID

bool isNoThrow(unsigned int ID) const

Description

Return true if we know this builtin never throws an exception.

Declared at: clang/include/clang/Basic/Builtins.h:115

Parameters

unsigned int ID

bool isPredefinedLibFunction(
    unsigned int ID) const

Description

Determines whether this builtin is a predefined libc/libm function, such as "malloc", where we know the signature a priori. In C, such functions behave as if they are predeclared, possibly with a warning on first use. In Objective-C and C++, they do not, but they are recognized as builtins once we see a declaration.

Declared at: clang/include/clang/Basic/Builtins.h:148

Parameters

unsigned int ID

bool isPredefinedRuntimeFunction(
    unsigned int ID) const

Description

Determines whether this builtin is a predefined compiler-rt/libgcc function, such as "__clear_cache", where we know the signature a priori.

Declared at: clang/include/clang/Basic/Builtins.h:162

Parameters

unsigned int ID

bool isPrintfLike(unsigned int ID,
                  unsigned int& FormatIdx,
                  bool& HasVAListArg)

Description

Determine whether this builtin is like printf in its formatting rules and, if so, set the index to the format string argument and whether this function as a va_list argument.

Declared at: clang/include/clang/Basic/Builtins.h:217

Parameters

unsigned int ID
unsigned int& FormatIdx
bool& HasVAListArg

bool isPure(unsigned int ID) const

Description

Return true if this function has no side effects.

Declared at: clang/include/clang/Basic/Builtins.h:104

Parameters

unsigned int ID

bool isReturnsTwice(unsigned int ID) const

Description

Return true if we know this builtin can return twice.

Declared at: clang/include/clang/Basic/Builtins.h:125

Parameters

unsigned int ID

bool isScanfLike(unsigned int ID,
                 unsigned int& FormatIdx,
                 bool& HasVAListArg)

Description

Determine whether this builtin is like scanf in its formatting rules and, if so, set the index to the format string argument and whether this function as a va_list argument.

Declared at: clang/include/clang/Basic/Builtins.h:222

Parameters

unsigned int ID
unsigned int& FormatIdx
bool& HasVAListArg

bool isTSBuiltin(unsigned int ID) const

Description

Return true if this function is a target-specific builtin.

Declared at: clang/include/clang/Basic/Builtins.h:99

Parameters

unsigned int ID

bool isUnevaluated(unsigned int ID) const

Description

Returns true if this builtin does not perform the side-effects of its arguments.

Declared at: clang/include/clang/Basic/Builtins.h:131

Parameters

unsigned int ID

bool performsCallback(
    unsigned int ID,
    llvm::SmallVectorImpl<int>& Encoding) const

Description

Determine whether this builtin has callback behavior (see llvm::AbstractCallSites for details). If so, add the index to the callback callee argument and the callback payload arguments.

Declared at: clang/include/clang/Basic/Builtins.h:227

Parameters

unsigned int ID
llvm::SmallVectorImpl<int>& Encoding