A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/CIRGenModule_8cpp_source.html below:

clang: lib/CIR/CodeGen/CIRGenModule.cpp Source File

21#include "mlir/IR/BuiltinOps.h" 22#include "mlir/IR/Location.h" 23#include "mlir/IR/MLIRContext.h" 25using namespace clang

;

28

CIRGenModule::CIRGenModule(mlir::MLIRContext &mlirContext,

32

: builder(mlirContext, *this), astContext(astContext),

33

langOpts(astContext.getLangOpts()),

34

theModule{

mlir

::ModuleOp::create(

mlir

::UnknownLoc::get(&mlirContext))},

35

diags(diags), target(astContext.getTargetInfo()), genTypes(*this) {

58

assert(cLoc.

isValid

() &&

"expected valid source location"

);

62 return

mlir::FileLineColLoc::get(builder.getStringAttr(filename),

67

assert(cRange.

isValid

() &&

"expected a valid source range"

);

70

mlir::Attribute metadata;

71 return

mlir::FusedLoc::get({begin, end}, metadata, builder.getContext());

75 const auto

*global = cast<ValueDecl>(gd.

getDecl

());

77 if

(

const auto

*fd = dyn_cast<FunctionDecl>(global)) {

80 if

(fd->hasAttr<AnnotateAttr>())

81 errorNYI

(fd->getSourceRange(),

"deferredAnnotations"

);

82 if

(!fd->doesThisDeclarationHaveABody()) {

83 if

(!fd->doesDeclarationForceExternallyVisibleDefinition())

87 "function declaration that forces code gen"

);

91

assert(cast<VarDecl>(global)->isFileVarDecl() &&

92 "Cannot emit local var decl as global"

);

100

mlir::Operation *op) {

101 auto const

*funcDecl = cast<FunctionDecl>(gd.

getDecl

());

103 auto

funcOp = builder.create<cir::FuncOp>(

104 getLoc

(funcDecl->getSourceRange()), identifier->getName());

105

theModule.push_back(funcOp);

107 errorNYI

(funcDecl->getSourceRange().getBegin(),

108 "function definition with a non-identifier for a name"

);

117

identifier->getName(),

type

);

125

mlir::Attribute initializer;

126 if

(

APValue

*value = initDecl->evaluateValue()) {

127 switch

(value->getKind()) {

129

initializer = builder.getAttr<cir::IntAttr>(

type

, value->getInt());

133

initializer = builder.getAttr<cir::FPAttr>(

type

, value->getFloat());

137 if

(value->getLValueBase()) {

139 "non-null pointer initialization"

);

141 if

(

auto

ptrType = mlir::dyn_cast<cir::PointerType>(

type

)) {

143

ptrType, value->getLValueOffset().getQuantity());

146 "non-pointer variable initialized with a pointer"

);

158

varOp.setInitialValueAttr(initializer);

160

theModule.push_back(varOp);

163 "variable definition with a non-identifier for a name"

);

168

mlir::Operation *op) {

169 const auto

*

decl

= cast<ValueDecl>(gd.

getDecl

());

170 if

(

const auto

*fd = dyn_cast<FunctionDecl>(

decl

)) {

174 if

(

const auto

*method = dyn_cast<CXXMethodDecl>(

decl

)) {

178 errorNYI

(method->getSourceRange(),

"member function"

);

182 if

(fd->isMultiVersion())

183 errorNYI

(fd->getSourceRange(),

"multiversion functions"

);

188 if

(

const auto

*vd = dyn_cast<VarDecl>(

decl

))

191

llvm_unreachable(

"Invalid argument to CIRGenModule::emitGlobalDefinition"

);

198 if

(

decl

->isTemplated())

201 switch

(

decl

->getKind()) {

203 errorNYI

(

decl

->getBeginLoc(),

"declaration of kind"

,

204 decl

->getDeclKindName());

207 case

Decl::Function: {

208 auto

*fd = cast<FunctionDecl>(

decl

);

210 if

(!fd->isConsteval())

216 auto

*vd = cast<VarDecl>(

decl

);

224

llvm::StringRef feature) {

227 return

diags.

Report

(loc, diagID) << feature;

231

llvm::StringRef feature) {

Defines the clang::ASTContext interface.

Defines the SourceManager interface.

mlir::TypedAttr getConstPtrAttr(mlir::Type type, int64_t value)

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

SourceManager & getSourceManager()

DiagnosticBuilder errorNYI(SourceLocation, llvm::StringRef)

Helpers to emit "not yet implemented" error diagnostics.

void emitTopLevelDecl(clang::Decl *decl)

void emitGlobalDefinition(clang::GlobalDecl gd, mlir::Operation *op=nullptr)

void emitGlobalVarDefinition(const clang::VarDecl *vd, bool isTentative=false)

mlir::Location getLoc(clang::SourceLocation cLoc)

Helpers to convert the presumed location of Clang's SourceLocation to an MLIR Location.

mlir::MLIRContext & getMLIRContext()

void emitGlobal(clang::GlobalDecl gd)

Emit code for a single global function or variable declaration.

void emitGlobalFunctionDefinition(clang::GlobalDecl gd, mlir::Operation *op)

mlir::Type convertType(clang::QualType type)

Convert a Clang type into a mlir::Type.

CodeGenOptions - Track various options which control how the code is optimized and passed to the back...

Decl - This represents one declaration (or definition), e.g.

A little helper class used to produce diagnostics.

Concrete class used by the front-end to report problems and issues.

DiagnosticBuilder Report(SourceLocation Loc, unsigned DiagID)

Issue the message to the client.

unsigned getCustomDiagID(Level L, const char(&FormatString)[N])

Return an ID for a diagnostic with the specified format string and level.

This represents one expression.

GlobalDecl - represents a global declaration.

const Decl * getDecl() const

One of these records is kept for each identifier that is lexed.

IdentifierInfo * getIdentifier() const

Get the identifier that names this declaration, if there is one.

Represents an unpacked "presumed" location which can be presented to the user.

unsigned getColumn() const

Return the presumed column number of this location.

const char * getFilename() const

Return the presumed filename of this location.

unsigned getLine() const

Return the presumed line number of this location.

Encodes a location in the source.

bool isValid() const

Return true if this is a valid SourceLocation object.

This class handles loading and caching of source files into memory.

PresumedLoc getPresumedLoc(SourceLocation Loc, bool UseLineDirectives=true) const

Returns the "presumed" location of a SourceLocation specifies.

A trivial tuple used to represent a source range.

SourceLocation getEnd() const

SourceLocation getBegin() const

SourceRange getSourceRange() const LLVM_READONLY

SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...

Represents a variable declaration or definition.

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

const Expr * getAnyInitializer() const

Get the initializer for this variable, no matter which declaration it is attached to.

const internal::VariadicAllOfMatcher< Type > type

Matches Types in the clang AST.

const internal::VariadicAllOfMatcher< Decl > decl

Matches declarations.

The JSON file list parser is used to communicate input to InstallAPI.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4