clang 22.0.0git
|
This represents a GCC inline-assembly statement extension. More...
#include "clang/AST/Stmt.h"
Classes | |
class | AsmStringPiece |
AsmStringPiece - this is part of a decomposed asm string specification (for use with the AnalyzeAsmString function below). More... |
Public Member Functions | |
GCCAsmStmt (const ASTContext &C, SourceLocation asmloc, bool issimple, bool isvolatile, unsigned numoutputs, unsigned numinputs, IdentifierInfo **names, Expr **constraints, Expr **exprs, Expr *asmstr, unsigned numclobbers, Expr **clobbers, unsigned numlabels, SourceLocation rparenloc) | |
GCCAsmStmt (EmptyShell Empty) | |
Build an empty inline-assembly statement. | |
SourceLocation | getRParenLoc () const |
void | setRParenLoc (SourceLocation L) |
const Expr * | getAsmStringExpr () const |
Expr * | getAsmStringExpr () |
void | setAsmStringExpr (Expr *E) |
std::string | getAsmString () const |
unsigned | AnalyzeAsmString (SmallVectorImpl< AsmStringPiece > &Pieces, const ASTContext &C, unsigned &DiagOffs) const |
AnalyzeAsmString - Analyze the asm string of the current asm, decomposing it into pieces. | |
std::string | generateAsmString (const ASTContext &C) const |
Assemble final IR asm string. | |
IdentifierInfo * | getOutputIdentifier (unsigned i) const |
StringRef | getOutputName (unsigned i) const |
std::string | getOutputConstraint (unsigned i) const |
getOutputConstraint - Return the constraint string for the specified output operand. | |
const Expr * | getOutputConstraintExpr (unsigned i) const |
Expr * | getOutputConstraintExpr (unsigned i) |
Expr * | getOutputExpr (unsigned i) |
const Expr * | getOutputExpr (unsigned i) const |
IdentifierInfo * | getInputIdentifier (unsigned i) const |
StringRef | getInputName (unsigned i) const |
std::string | getInputConstraint (unsigned i) const |
getInputConstraint - Return the specified input constraint. | |
const Expr * | getInputConstraintExpr (unsigned i) const |
Expr * | getInputConstraintExpr (unsigned i) |
Expr * | getInputExpr (unsigned i) |
void | setInputExpr (unsigned i, Expr *E) |
const Expr * | getInputExpr (unsigned i) const |
bool | isAsmGoto () const |
unsigned | getNumLabels () const |
IdentifierInfo * | getLabelIdentifier (unsigned i) const |
AddrLabelExpr * | getLabelExpr (unsigned i) const |
StringRef | getLabelName (unsigned i) const |
labels_iterator | begin_labels () |
labels_iterator | end_labels () |
labels_range | labels () |
const_labels_iterator | begin_labels () const |
const_labels_iterator | end_labels () const |
labels_const_range | labels () const |
int | getNamedOperand (StringRef SymbolicName) const |
getNamedOperand - Given a symbolic operand reference like %[foo], translate this into a numeric value needed to reference the same operand. | |
std::string | getClobber (unsigned i) const |
Expr * | getClobberExpr (unsigned i) |
const Expr * | getClobberExpr (unsigned i) const |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
Public Member Functions inherited from clang::AsmStmt | |
AsmStmt (StmtClass SC, EmptyShell Empty) | |
Build an empty inline-assembly statement. | |
SourceLocation | getAsmLoc () const |
void | setAsmLoc (SourceLocation L) |
bool | isSimple () const |
void | setSimple (bool V) |
bool | isVolatile () const |
void | setVolatile (bool V) |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
std::string | generateAsmString (const ASTContext &C) const |
Assemble final IR asm string. | |
unsigned | getNumOutputs () const |
std::string | getOutputConstraint (unsigned i) const |
getOutputConstraint - Return the constraint string for the specified output operand. | |
bool | isOutputPlusConstraint (unsigned i) const |
isOutputPlusConstraint - Return true if the specified output constraint is a "+" constraint (which is both an input and an output) or false if it is an "=" constraint (just an output). | |
const Expr * | getOutputExpr (unsigned i) const |
unsigned | getNumPlusOperands () const |
getNumPlusOperands - Return the number of output operands that have a "+" constraint. | |
unsigned | getNumInputs () const |
std::string | getInputConstraint (unsigned i) const |
getInputConstraint - Return the specified input constraint. | |
const Expr * | getInputExpr (unsigned i) const |
unsigned | getNumClobbers () const |
std::string | getClobber (unsigned i) const |
inputs_iterator | begin_inputs () |
inputs_iterator | end_inputs () |
inputs_range | inputs () |
const_inputs_iterator | begin_inputs () const |
const_inputs_iterator | end_inputs () const |
inputs_const_range | inputs () const |
outputs_iterator | begin_outputs () |
outputs_iterator | end_outputs () |
outputs_range | outputs () |
const_outputs_iterator | begin_outputs () const |
const_outputs_iterator | end_outputs () const |
outputs_const_range | outputs () const |
child_range | children () |
const_child_range | children () const |
Public Member Functions inherited from clang::Stmt | |
void * | operator new (size_t bytes, const ASTContext &C, unsigned alignment=8) |
void * | operator new (size_t bytes, const ASTContext *C, unsigned alignment=8) |
void * | operator new (size_t bytes, void *mem) noexcept |
void | operator delete (void *, const ASTContext &, unsigned) noexcept |
void | operator delete (void *, const ASTContext *, unsigned) noexcept |
void | operator delete (void *, size_t) noexcept |
void | operator delete (void *, void *) noexcept |
Stmt ()=delete | |
Stmt (const Stmt &)=delete | |
Stmt (Stmt &&)=delete | |
Stmt & | operator= (const Stmt &)=delete |
Stmt & | operator= (Stmt &&)=delete |
Stmt (StmtClass SC) | |
StmtClass | getStmtClass () const |
const char * | getStmtClassName () const |
SourceRange | getSourceRange () const LLVM_READONLY |
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpreted by SourceManager. | |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
void | dump () const |
Dumps the specified AST fragment and all subtrees to llvm::errs() . | |
void | dump (raw_ostream &OS, const ASTContext &Context) const |
int64_t | getID (const ASTContext &Context) const |
void | dumpColor () const |
dumpColor - same as dump(), but forces color highlighting. | |
void | dumpPretty (const ASTContext &Context) const |
dumpPretty/printPretty - These two methods do a "pretty print" of the AST back to its original source language syntax. | |
void | printPretty (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const |
void | printPrettyControlled (raw_ostream &OS, PrinterHelper *Helper, const PrintingPolicy &Policy, unsigned Indentation=0, StringRef NewlineSymbol="\n", const ASTContext *Context=nullptr) const |
void | printJson (raw_ostream &Out, PrinterHelper *Helper, const PrintingPolicy &Policy, bool AddQuotes) const |
Pretty-prints in JSON format. | |
void | viewAST () const |
viewAST - Visualize an AST rooted at this Stmt* using GraphViz. | |
Stmt * | IgnoreContainers (bool IgnoreCaptured=false) |
Skip no-op (attributed, compound) container stmts and skip captured stmt at the top, if IgnoreCaptured is true. | |
const Stmt * | IgnoreContainers (bool IgnoreCaptured=false) const |
const Stmt * | stripLabelLikeStatements () const |
Strip off all label-like statements. | |
Stmt * | stripLabelLikeStatements () |
child_range | children () |
const_child_range | children () const |
child_iterator | child_begin () |
child_iterator | child_end () |
const_child_iterator | child_begin () const |
const_child_iterator | child_end () const |
void | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Context, bool Canonical, bool ProfileLambdaExpr=false) const |
Produce a unique representation of the given statement. | |
void | ProcessODRHash (llvm::FoldingSetNodeID &ID, ODRHash &Hash) const |
Calculate a unique representation for a statement that is stable across compiler invocations. |
Static Public Member Functions | |
static std::string | ExtractStringFromGCCAsmStmtComponent (const Expr *E) |
static bool | classof (const Stmt *T) |
Static Public Member Functions inherited from clang::AsmStmt | |
static bool | classof (const Stmt *T) |
Static Public Member Functions inherited from clang::Stmt | |
static void | addStmtClass (const StmtClass s) |
static void | EnableStatistics () |
static void | PrintStats () |
static Likelihood | getLikelihood (ArrayRef< const Attr * > Attrs) |
static Likelihood | getLikelihood (const Stmt *S) |
static const Attr * | getLikelihoodAttr (const Stmt *S) |
static Likelihood | getLikelihood (const Stmt *Then, const Stmt *Else) |
static std::tuple< bool, const Attr *, const Attr * > | determineLikelihoodConflict (const Stmt *Then, const Stmt *Else) |
Friends | |
class | ASTStmtReader |
using clang::GCCAsmStmt::labels_const_range = llvm::iterator_range<const_labels_iterator> |
using clang::GCCAsmStmt::labels_range = llvm::iterator_range<labels_iterator> |
GCCAsmStmt::GCCAsmStmt | ( | const ASTContext & | C, |
SourceLocation | asmloc, | ||
bool | issimple, | ||
bool | isvolatile, | ||
unsigned | numoutputs, | ||
unsigned | numinputs, | ||
IdentifierInfo ** | names, | ||
Expr ** | constraints, | ||
Expr ** | exprs, | ||
Expr * | asmstr, | ||
unsigned | numclobbers, | ||
Expr ** | clobbers, | ||
unsigned | numlabels, | ||
SourceLocation | rparenloc ) |
Definition at line 893 of file Stmt.cpp.
References clang::AsmStmt::AsmStmt(), clang::C, clang::AsmStmt::Exprs, clang::AsmStmt::NumClobbers, clang::NumConstraints, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
Referenced by getInputExpr(), and getOutputExpr().
|
inlineexplicit |
Build an empty inline-assembly statement.
Definition at line 3415 of file Stmt.h.
References clang::AsmStmt::AsmStmt(), and clang::Empty.
unsigned GCCAsmStmt::AnalyzeAsmString | ( | SmallVectorImpl< AsmStringPiece > & | Pieces, |
const ASTContext & | C, | ||
unsigned & | DiagOffs ) const |
AnalyzeAsmString - Analyze the asm string of the current asm, decomposing it into pieces.
If the asm string is erroneous, emit errors and return true, otherwise return false. This handles canonicalization and translation of strings from GCC syntax to LLVM IR syntax, and handles
If the asm string is erroneous, emit errors and return true, otherwise return false.
Definition at line 628 of file Stmt.cpp.
References clang::C, getAsmString(), getAsmStringExpr(), clang::Stmt::getBeginLoc(), clang::Stmt::getEndLoc(), getNamedOperand(), clang::AsmStmt::getNumInputs(), getNumLabels(), clang::AsmStmt::getNumOutputs(), clang::AsmStmt::getNumPlusOperands(), clang::TargetInfo::handleAsmEscapedChar(), clang::isDigit(), clang::isLetter(), clang::AsmStmt::isSimple(), clang::Result, and SM.
Referenced by generateAsmString().
|
inline |
Definition at line 3560 of file Stmt.h.
References clang::AsmStmt::Exprs, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
|
inline |
Definition at line 3572 of file Stmt.h.
References clang::AsmStmt::Exprs, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
|
inline |
Definition at line 3564 of file Stmt.h.
References clang::AsmStmt::Exprs, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
|
inline |
Definition at line 3576 of file Stmt.h.
References clang::AsmStmt::Exprs, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
|
static |
Definition at line 512 of file Stmt.cpp.
References clang::C, clang::cast(), clang::APValue::getArrayInitializedElt(), clang::APValue::getArraySize(), clang::Expr::getDependence(), and clang::APValue::isArray().
Referenced by clang::Sema::ActOnGCCAsmStmt(), clang::FileScopeAsmDecl::getAsmString(), getAsmString(), getClobber(), getClobberConflictLocation(), getInputConstraint(), and getOutputConstraint().
std::string GCCAsmStmt::generateAsmString | ( | const ASTContext & | C | ) | const |
Assemble final IR asm string.
Assemble final IR asm string (GCC-style).
Definition at line 830 of file Stmt.cpp.
References AnalyzeAsmString(), and clang::C.
std::string GCCAsmStmt::getAsmString | ( | ) | const |
Definition at line 532 of file Stmt.cpp.
References ExtractStringFromGCCAsmStmtComponent(), and getAsmStringExpr().
Referenced by AnalyzeAsmString(), and clang::TrivialFunctionAnalysisVisitor::VisitGCCAsmStmt().
|
inline |
Definition at line 3422 of file Stmt.h.
Referenced by AnalyzeAsmString(), getAsmString(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3605 of file Stmt.h.
References clang::AsmStmt::AsmLoc.
std::string GCCAsmStmt::getClobber | ( | unsigned | i | ) | const |
Definition at line 536 of file Stmt.cpp.
References ExtractStringFromGCCAsmStmtComponent(), and getClobberExpr().
Definition at line 3602 of file Stmt.h.
Referenced by getClobber(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
std::string GCCAsmStmt::getInputConstraint | ( | unsigned | i | ) | const |
getInputConstraint - Return the specified input constraint.
Unlike output constraints, these can be empty.
Definition at line 569 of file Stmt.cpp.
References ExtractStringFromGCCAsmStmtComponent(), and getInputConstraintExpr().
Definition at line 3526 of file Stmt.h.
References clang::AsmStmt::NumOutputs.
Definition at line 3523 of file Stmt.h.
References clang::AsmStmt::NumOutputs.
Referenced by getInputConstraint(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
Definition at line 551 of file Stmt.cpp.
References clang::cast(), clang::AsmStmt::Exprs, and clang::AsmStmt::NumOutputs.
Referenced by getInputExpr().
Definition at line 3533 of file Stmt.h.
References GCCAsmStmt(), and getInputExpr().
|
inline |
Definition at line 3510 of file Stmt.h.
References clang::AsmStmt::NumOutputs.
Referenced by getInputName(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3514 of file Stmt.h.
References getInputIdentifier().
Referenced by getNamedOperand().
AddrLabelExpr * GCCAsmStmt::getLabelExpr | ( | unsigned | i | ) | const |
Definition at line 559 of file Stmt.cpp.
References clang::cast(), clang::AsmStmt::Exprs, clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
Referenced by getLabelName().
|
inline |
Definition at line 3549 of file Stmt.h.
References clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
StringRef GCCAsmStmt::getLabelName | ( | unsigned | i | ) | const |
Definition at line 563 of file Stmt.cpp.
References clang::AddrLabelExpr::getLabel(), getLabelExpr(), and clang::NamedDecl::getName().
Referenced by getNamedOperand().
int GCCAsmStmt::getNamedOperand | ( | StringRef | SymbolicName | ) | const |
getNamedOperand - Given a symbolic operand reference like %[foo], translate this into a numeric value needed to reference the same operand.
This returns -1 if the operand name is invalid.
Definition at line 605 of file Stmt.cpp.
References getInputName(), getLabelName(), clang::AsmStmt::getNumInputs(), getNumLabels(), clang::AsmStmt::getNumOutputs(), clang::AsmStmt::getNumPlusOperands(), getOutputName(), clang::AsmStmt::NumInputs, and clang::AsmStmt::NumOutputs.
Referenced by AnalyzeAsmString().
|
inline |
Definition at line 3545 of file Stmt.h.
Referenced by AnalyzeAsmString(), getNamedOperand(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
std::string GCCAsmStmt::getOutputConstraint | ( | unsigned | i | ) | const |
getOutputConstraint - Return the constraint string for the specified output operand.
All output constraints are known to be non-empty (either '=' or '+').
Definition at line 547 of file Stmt.cpp.
References ExtractStringFromGCCAsmStmtComponent(), and getOutputConstraintExpr().
Definition at line 3497 of file Stmt.h.
Referenced by getOutputConstraint(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
Definition at line 540 of file Stmt.cpp.
References clang::cast(), and clang::AsmStmt::Exprs.
Referenced by getOutputExpr().
Definition at line 3504 of file Stmt.h.
References GCCAsmStmt(), and getOutputExpr().
|
inline |
Definition at line 3486 of file Stmt.h.
Referenced by getOutputName(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3488 of file Stmt.h.
References getOutputIdentifier().
Referenced by getNamedOperand().
|
inline |
Definition at line 3417 of file Stmt.h.
Referenced by clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3541 of file Stmt.h.
Referenced by runOnBlock().
|
inline |
Definition at line 3568 of file Stmt.h.
References begin_labels(), and end_labels().
Referenced by clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3580 of file Stmt.h.
References begin_labels(), and end_labels().
Definition at line 555 of file Stmt.cpp.
References clang::AsmStmt::Exprs, and clang::AsmStmt::NumOutputs.
|
inline |
|
friend |
Definition at line 3396 of file Stmt.h.
References ASTStmtReader, and clang::C.
Referenced by ASTStmtReader.