clang 10.0.0git

Public Member Functions | Static Public Member Functions | List of all members
clang::Builtin::Context Class Reference

Holds information about both target-independent and target-specific builtins, allowing easy queries by clients. More...

`#include "clang/Basic/Builtins.h"`

## Public Member Functions
| Context ()
void | InitializeTarget (const TargetInfo &Target, const TargetInfo *AuxTarget)
| Perform target-specific initialization. More...
void | initializeBuiltins (IdentifierTable &Table, const LangOptions &LangOpts)
| Mark the identifiers for all the builtins with their appropriate builtin ID # and mark any non-portable builtin identifiers as such. More...
const char * | getName (unsigned ID) const
| Return the identifier name for the specified builtin, e.g. More...
const char * | getTypeString (unsigned ID) const
| Get the type descriptor string for the specified builtin. More...
bool | isTSBuiltin (unsigned ID) const
| Return true if this function is a target-specific builtin. More...
bool | isPure (unsigned ID) const
| Return true if this function has no side effects. More...
bool | isConst (unsigned ID) const
| Return true if this function has no side effects and doesn't read memory. More...
bool | isNoThrow (unsigned ID) const
| Return true if we know this builtin never throws an exception. More...
bool | isNoReturn (unsigned ID) const
| Return true if we know this builtin never returns. More...
bool | isReturnsTwice (unsigned ID) const
| Return true if we know this builtin can return twice. More...
bool | isUnevaluated (unsigned ID) const
| Returns true if this builtin does not perform the side-effects of its arguments. More...
bool | isLibFunction (unsigned ID) const
| Return true if this is a builtin for a libc/libm function, with a "__builtin_" prefix (e.g. More...
bool | isPredefinedLibFunction (unsigned ID) const
| Determines whether this builtin is a predefined libc/libm function, such as "malloc", where we know the signature a priori. More...
bool | isHeaderDependentFunction (unsigned ID) const
| Returns true if this builtin requires appropriate header in other compilers. More...
bool | isPredefinedRuntimeFunction (unsigned ID) const
| Determines whether this builtin is a predefined compiler-rt/libgcc function, such as "__clear_cache", where we know the signature a priori. More...
bool | hasCustomTypechecking (unsigned ID) const
| Determines whether this builtin has custom typechecking. More...
bool | hasPtrArgsOrResult (unsigned ID) const
| Determines whether this builtin has a result or any arguments which are pointer types. More...
bool | hasReferenceArgsOrResult (unsigned ID) const
| Return true if this builtin has a result or any arguments which are reference types. More...
void | forgetBuiltin (unsigned ID, IdentifierTable &Table)
| Completely forget that the given ID was ever considered a builtin, e.g., because the user provided a conflicting signature. More...
const char * | getHeaderName (unsigned ID) const
| If this is a library function that comes from a specific header, retrieve that header name. More...
bool | isPrintfLike (unsigned ID, unsigned &FormatIdx, bool &HasVAListArg)
| 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. More...
bool | isScanfLike (unsigned ID, unsigned &FormatIdx, bool &HasVAListArg)
| 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. More...
bool | performsCallback (unsigned ID, llvm::SmallVectorImpl< int > &Encoding) const
| Determine whether this builtin has callback behavior (see llvm::AbstractCallSites for details). More...
bool | isConstWithoutErrno (unsigned ID) const
| Return true if this function has no side effects and doesn't read memory, except for possibly errno. More...
const char * | getRequiredFeatures (unsigned ID) const
unsigned | getRequiredVectorWidth (unsigned ID) const
bool | isAuxBuiltinID (unsigned ID) const
| Return true if builtin ID belongs to AuxTarget. More...
unsigned | getAuxBuiltinID (unsigned ID) const
| Return real builtin ID (i.e. More...
bool | canBeRedeclared (unsigned ID) const
| Returns true if this is a builtin that can be redeclared. More...

## Static Public Member Functions
static bool | isBuiltinFunc (llvm::StringRef Name)
| Returns true if this is a libc/libm function without the '__builtin_' prefix. More...

## Detailed 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.

Definition at line 65 of file Builtins.h.

## Constructor & Destructor Documentation

## ◆ Context()

clang::Builtin::Context::Context | ( |  | ) |
| inline

Definition at line 70 of file Builtins.h.

References clang::Target.

## Member Function Documentation

## ◆ canBeRedeclared()

bool Builtin::Context::canBeRedeclared | ( | unsigned | ID | ) | const

Returns true if this is a builtin that can be redeclared.

Returns true for non-builtins.

Definition at line 188 of file Builtins.cpp.

References hasCustomTypechecking(), hasReferenceArgsOrResult(), and clang::Builtin::NotBuiltin.

Referenced by clang::ASTContext::canBuiltinBeRedeclared().

## ◆ forgetBuiltin()

void Builtin::Context::forgetBuiltin | ( | unsigned | ID,
|  | IdentifierTable & | Table
| ) |  |

Completely forget that the given ID was ever considered a builtin, e.g., because the user provided a conflicting signature.

Definition at line 108 of file Builtins.cpp.

References clang::IdentifierTable::get().

## ◆ getAuxBuiltinID()

unsigned clang::Builtin::Context::getAuxBuiltinID | ( | unsigned | ID | ) | const
| inline

Return real builtin ID (i.e.

ID it would have during compilation for AuxTarget).

Definition at line 221 of file Builtins.h.

References BuiltinInfo, and clang::Builtin::Info::Name.

## ◆ getHeaderName()

const char* clang::Builtin::Context::getHeaderName | ( | unsigned | ID | ) | const
| inline

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

Definition at line 180 of file Builtins.h.

Referenced by emitReplacement(), and getHeaderName().

## ◆ getName()

const char* clang::Builtin::Context::getName | ( | unsigned | ID | ) | const
| inline

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

"__builtin_abs".

Definition at line 83 of file Builtins.h.

Referenced by emitReplacement().

## ◆ getRequiredFeatures()

const char* clang::Builtin::Context::getRequiredFeatures | ( | unsigned | ID | ) | const
| inline

Definition at line 208 of file Builtins.h.

Referenced by clang::CodeGen::CodeGenFunction::checkTargetFeatures().

## ◆ getRequiredVectorWidth()

unsigned Builtin::Context::getRequiredVectorWidth | ( | unsigned | ID | ) | const

Definition at line 112 of file Builtins.cpp.

## ◆ getTypeString()

const char* clang::Builtin::Context::getTypeString | ( | unsigned | ID | ) | const
| inline

Get the type descriptor string for the specified builtin.

Definition at line 88 of file Builtins.h.

Referenced by clang::ASTContext::GetBuiltinType().

## ◆ hasCustomTypechecking()

bool clang::Builtin::Context::hasCustomTypechecking | ( | unsigned | ID | ) | const
| inline

Determines whether this builtin has custom typechecking.

Definition at line 157 of file Builtins.h.

References clang::Builtin::Info::Attributes.

Referenced by canBeRedeclared().

## ◆ hasPtrArgsOrResult()

bool clang::Builtin::Context::hasPtrArgsOrResult | ( | unsigned | ID | ) | const
| inline

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

Definition at line 163 of file Builtins.h.

## ◆ hasReferenceArgsOrResult()

bool clang::Builtin::Context::hasReferenceArgsOrResult | ( | unsigned | ID | ) | const
| inline

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

Definition at line 169 of file Builtins.h.

Referenced by canBeRedeclared().

## ◆ initializeBuiltins()

void Builtin::Context::initializeBuiltins | ( | IdentifierTable & | Table,
|  | const LangOptions & | LangOpts
| ) |  |

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

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

Definition at line 89 of file Builtins.cpp.

References clang::Builtin::FirstTSBuiltin, clang::IdentifierTable::get(), and clang::Builtin::NotBuiltin.

Referenced by clang::FrontendAction::BeginSourceFile(), and clang::createChainedIncludesSource().

## ◆ InitializeTarget()

void Builtin::Context::InitializeTarget | ( | const TargetInfo & | Target,
|  | const TargetInfo * | AuxTarget
| ) |  |

Perform target-specific initialization.

Parameters

  AuxTarget | Target info to incorporate builtins from. May be nullptr.

Definition at line 42 of file Builtins.cpp.

References clang::TargetInfo::getTargetBuiltins().

## ◆ isAuxBuiltinID()

bool clang::Builtin::Context::isAuxBuiltinID | ( | unsigned | ID | ) | const
| inline

Return true if builtin ID belongs to AuxTarget.

Definition at line 215 of file Builtins.h.

References clang::Builtin::FirstTSBuiltin.

## ◆ isBuiltinFunc()

bool Builtin::Context::isBuiltinFunc | ( | llvm::StringRef | Name | ) |
| static

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

Definition at line 50 of file Builtins.cpp.

References clang::ALL_OCLC_LANGUAGES, clang::Builtin::Info::Attributes, clang::CXX_LANG, clang::Builtin::FirstTSBuiltin, clang::GNU_LANG, clang::Builtin::Info::HeaderName, clang::LangOptions::isNoBuiltinFunc(), clang::Builtin::Info::Langs, clang::MS_LANG, clang::Builtin::Info::Name, clang::Builtin::NotBuiltin, clang::OBJC_LANG, clang::OCLC1X_LANG, clang::OCLC20_LANG, and clang::OMP_LANG.

Referenced by getAllNoBuiltinFuncValues().

## ◆ isConst()

bool clang::Builtin::Context::isConst | ( | unsigned | ID | ) | const
| inline

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

Definition at line 104 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isConstWithoutErrno()

bool clang::Builtin::Context::isConstWithoutErrno | ( | unsigned | ID | ) | const
| inline

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.

Definition at line 204 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isHeaderDependentFunction()

bool clang::Builtin::Context::isHeaderDependentFunction | ( | unsigned | ID | ) | const
| inline

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.

Definition at line 145 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isLibFunction()

bool clang::Builtin::Context::isLibFunction | ( | unsigned | ID | ) | const
| inline

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

__builtin_abs).

Definition at line 131 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isNoReturn()

bool clang::Builtin::Context::isNoReturn | ( | unsigned | ID | ) | const
| inline

Return true if we know this builtin never returns.

Definition at line 114 of file Builtins.h.

References clang::Builtin::Info::Attributes.

Referenced by clang::ASTContext::GetBuiltinType().

## ◆ isNoThrow()

bool clang::Builtin::Context::isNoThrow | ( | unsigned | ID | ) | const
| inline

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

Definition at line 109 of file Builtins.h.

References clang::Builtin::Info::Attributes.

Referenced by clang::ASTContext::GetBuiltinType().

## ◆ isPredefinedLibFunction()

bool clang::Builtin::Context::isPredefinedLibFunction | ( | unsigned | ID | ) | const
| inline

Determines whether this builtin is a predefined libc/libm function, such as "malloc", where we know the signature a priori.

Definition at line 138 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isPredefinedRuntimeFunction()

bool clang::Builtin::Context::isPredefinedRuntimeFunction | ( | unsigned | ID | ) | const
| inline

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

Definition at line 152 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isPrintfLike()

bool Builtin::Context::isPrintfLike | ( | unsigned | ID,
|  | unsigned & | FormatIdx,
|  | bool & | HasVAListArg
| ) |  |

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.

Definition at line 151 of file Builtins.cpp.

## ◆ isPure()

bool clang::Builtin::Context::isPure | ( | unsigned | ID | ) | const
| inline

Return true if this function has no side effects.

Definition at line 98 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isReturnsTwice()

bool clang::Builtin::Context::isReturnsTwice | ( | unsigned | ID | ) | const
| inline

Return true if we know this builtin can return twice.

Definition at line 119 of file Builtins.h.

References clang::Builtin::Info::Attributes.

## ◆ isScanfLike()

bool Builtin::Context::isScanfLike | ( | unsigned | ID,
|  | unsigned & | FormatIdx,
|  | bool & | HasVAListArg
| ) |  |

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.

Definition at line 156 of file Builtins.cpp.

## ◆ isTSBuiltin()

bool clang::Builtin::Context::isTSBuiltin | ( | unsigned | ID | ) | const
| inline

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

Definition at line 93 of file Builtins.h.

References clang::Builtin::FirstTSBuiltin.

## ◆ isUnevaluated()

bool clang::Builtin::Context::isUnevaluated | ( | unsigned | ID | ) | const
| inline

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

Definition at line 125 of file Builtins.h.

References clang::Builtin::Info::Attributes.

Referenced by clang::CallExpr::isUnevaluatedBuiltinCall().

## ◆ performsCallback()

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

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.

Definition at line 161 of file Builtins.cpp.

The documentation for this class was generated from the following files:

- include/clang/Basic/Builtins.h
- lib/Basic/Builtins.cpp