|
clang 22.0.0git
|
AsmStmt is the base class for GCCAsmStmt and MSAsmStmt. More...
#include "clang/AST/Stmt.h"
Public Types | |
| using | inputs_iterator = ExprIterator |
| using | const_inputs_iterator = ConstExprIterator |
| using | inputs_range = llvm::iterator_range<inputs_iterator> |
| using | inputs_const_range = llvm::iterator_range<const_inputs_iterator> |
| using | outputs_iterator = ExprIterator |
| using | const_outputs_iterator = ConstExprIterator |
| using | outputs_range = llvm::iterator_range<outputs_iterator> |
| using | outputs_const_range = llvm::iterator_range<const_outputs_iterator> |
| Public Types inherited from clang::Stmt | |
| enum | StmtClass { NoStmtClass = 0 } |
| enum | Likelihood { LH_Unlikely = -1 , LH_None , LH_Likely } |
| The likelihood of a branch being taken. More... | |
| using | child_iterator = StmtIterator |
| Child Iterators: All subclasses must implement 'children' to permit easy iteration over the substatements/subexpressions of an AST node. | |
| using | const_child_iterator = ConstStmtIterator |
| using | child_range = llvm::iterator_range<child_iterator> |
| using | const_child_range = llvm::iterator_range<const_child_iterator> |
Public Member Functions | |
| 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 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) |
Protected Member Functions | |
| AsmStmt (StmtClass SC, SourceLocation asmloc, bool issimple, bool isvolatile, unsigned numoutputs, unsigned numinputs, unsigned numclobbers) | |
| Protected Member Functions inherited from clang::Stmt | |
| void * | operator new (size_t bytes) noexcept |
| void | operator delete (void *data) noexcept |
| Stmt (StmtClass SC, EmptyShell) | |
| Construct an empty statement. | |
Friends | |
| class | ASTStmtReader |
Additional Inherited Members | |
| Protected Types inherited from clang::Stmt | |
| enum | { NumExprBits = NumStmtBits + 5 + llvm::BitWidth<ExprDependence> } |
| enum | { NumCallExprBits = 25 } |
| enum | { NumOverloadExprBits = NumExprBits + 1 } |
| template<typename T> | |
| using | ConstCastIterator = CastIterator<T, const T *const, const Stmt *const> |
| Const iterator for iterating over Stmt * arrays that contain only T *. | |
| using | ExprIterator = CastIterator<Expr> |
| using | ConstExprIterator = ConstCastIterator<Expr> |
AsmStmt is the base class for GCCAsmStmt and MSAsmStmt.
| using clang::AsmStmt::inputs_const_range = llvm::iterator_range<const_inputs_iterator> |
| using clang::AsmStmt::inputs_range = llvm::iterator_range<inputs_iterator> |
| using clang::AsmStmt::outputs_const_range = llvm::iterator_range<const_outputs_iterator> |
| using clang::AsmStmt::outputs_range = llvm::iterator_range<outputs_iterator> |
|
inlineprotected |
Definition at line 3235 of file Stmt.h.
References AsmLoc, IsSimple, IsVolatile, NumClobbers, NumInputs, NumOutputs, and clang::Stmt::Stmt().
Referenced by clang::GCCAsmStmt::GCCAsmStmt(), clang::GCCAsmStmt::GCCAsmStmt(), clang::MSAsmStmt::MSAsmStmt(), and clang::MSAsmStmt::MSAsmStmt().
|
inlineexplicit |
Build an empty inline-assembly statement.
Definition at line 3243 of file Stmt.h.
References clang::Empty, and clang::Stmt::Stmt().
|
inline |
|
inline |
Definition at line 3321 of file Stmt.h.
References Exprs, and NumOutputs.
|
inline |
|
inline |
|
inline |
Definition at line 3364 of file Stmt.h.
References Exprs, NumInputs, and NumOutputs.
|
inline |
Definition at line 3368 of file Stmt.h.
References Exprs, NumInputs, and NumOutputs.
Definition at line 3299 of file Stmt.h.
References clang::Stmt::Stmt(), and clang::T.
|
inline |
|
inline |
Definition at line 3325 of file Stmt.h.
References Exprs, NumInputs, and NumOutputs.
|
inline |
|
inline |
Definition at line 3356 of file Stmt.h.
References Exprs, and NumOutputs.
| std::string AsmStmt::generateAsmString | ( | const ASTContext & | C | ) | const |
Assemble final IR asm string.
Definition at line 453 of file Stmt.cpp.
References clang::C.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt().
|
inline |
Definition at line 3245 of file Stmt.h.
References AsmLoc.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt(), UpdateAsmCallInst(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
| std::string AsmStmt::getClobber | ( | unsigned | i | ) | const |
Definition at line 493 of file Stmt.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt().
|
inline |
| std::string AsmStmt::getInputConstraint | ( | unsigned | i | ) | const |
getInputConstraint - Return the specified input constraint.
Unlike output constraints, these can be empty.
Definition at line 477 of file Stmt.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt().
Definition at line 485 of file Stmt.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt().
|
inline |
Definition at line 3296 of file Stmt.h.
References NumClobbers.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3286 of file Stmt.h.
References NumInputs.
Referenced by clang::GCCAsmStmt::AnalyzeAsmString(), clang::CodeGen::CodeGenFunction::EmitAsmStmt(), clang::GCCAsmStmt::getNamedOperand(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3264 of file Stmt.h.
References NumOutputs.
Referenced by clang::GCCAsmStmt::AnalyzeAsmString(), clang::CodeGen::CodeGenFunction::EmitAsmStmt(), clang::GCCAsmStmt::getNamedOperand(), getNumPlusOperands(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
| unsigned AsmStmt::getNumPlusOperands | ( | ) | const |
getNumPlusOperands - Return the number of output operands that have a "+" constraint.
Definition at line 503 of file Stmt.cpp.
References getNumOutputs(), and isOutputPlusConstraint().
Referenced by clang::GCCAsmStmt::AnalyzeAsmString(), and clang::GCCAsmStmt::getNamedOperand().
| std::string AsmStmt::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 461 of file Stmt.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt(), and isOutputPlusConstraint().
Definition at line 469 of file Stmt.cpp.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt(), and EmitAsmStores().
|
inline |
Definition at line 3319 of file Stmt.h.
References begin_inputs(), and end_inputs().
Referenced by clang::ASTNodeImporter::VisitGCCAsmStmt(), and clang::ento::ExprEngine::VisitGCCAsmStmt().
|
inline |
Definition at line 3329 of file Stmt.h.
References begin_inputs(), and end_inputs().
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).
Definition at line 3274 of file Stmt.h.
References getOutputConstraint().
Referenced by getNumPlusOperands().
|
inline |
Definition at line 3248 of file Stmt.h.
References IsSimple.
Referenced by clang::GCCAsmStmt::AnalyzeAsmString(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3251 of file Stmt.h.
References IsVolatile.
Referenced by clang::CodeGen::CodeGenFunction::EmitAsmStmt(), and clang::ASTNodeImporter::VisitGCCAsmStmt().
|
inline |
Definition at line 3348 of file Stmt.h.
References begin_outputs(), and end_outputs().
Referenced by clang::ASTNodeImporter::VisitGCCAsmStmt(), and clang::ento::ExprEngine::VisitGCCAsmStmt().
|
inline |
Definition at line 3360 of file Stmt.h.
References begin_outputs(), and end_outputs().
|
inline |
|
inline |
|
inline |
Definition at line 3252 of file Stmt.h.
References IsVolatile, and V.
|
friend |
|
protected |
Definition at line 3219 of file Stmt.h.
Referenced by AsmStmt(), getAsmLoc(), clang::GCCAsmStmt::getBeginLoc(), clang::MSAsmStmt::getBeginLoc(), and setAsmLoc().
Definition at line 3233 of file Stmt.h.
Referenced by begin_inputs(), begin_inputs(), clang::GCCAsmStmt::begin_labels(), clang::GCCAsmStmt::begin_labels(), begin_outputs(), begin_outputs(), children(), children(), clang::MSAsmStmt::children(), clang::MSAsmStmt::children(), end_inputs(), end_inputs(), clang::GCCAsmStmt::end_labels(), clang::GCCAsmStmt::end_labels(), end_outputs(), end_outputs(), clang::GCCAsmStmt::GCCAsmStmt(), clang::MSAsmStmt::getAllExprs(), clang::GCCAsmStmt::getInputExpr(), clang::MSAsmStmt::getInputExpr(), clang::GCCAsmStmt::getLabelExpr(), clang::GCCAsmStmt::getOutputExpr(), clang::MSAsmStmt::getOutputExpr(), clang::GCCAsmStmt::setInputExpr(), and clang::MSAsmStmt::setInputExpr().
|
protected |
True if the assembly statement does not have any input or output operands.
Definition at line 3223 of file Stmt.h.
Referenced by AsmStmt(), isSimple(), and setSimple().
|
protected |
If true, treat this inline assembly as having side effects.
This assembly statement should not be optimized, deleted or moved.
Definition at line 3227 of file Stmt.h.
Referenced by AsmStmt(), isVolatile(), and setVolatile().
|
protected |
Definition at line 3231 of file Stmt.h.
Referenced by AsmStmt(), clang::GCCAsmStmt::GCCAsmStmt(), clang::MSAsmStmt::getClobbers(), and getNumClobbers().
|
protected |
Definition at line 3230 of file Stmt.h.
Referenced by AsmStmt(), clang::GCCAsmStmt::begin_labels(), clang::GCCAsmStmt::begin_labels(), children(), children(), clang::MSAsmStmt::children(), clang::MSAsmStmt::children(), end_inputs(), end_inputs(), clang::GCCAsmStmt::end_labels(), clang::GCCAsmStmt::end_labels(), clang::GCCAsmStmt::GCCAsmStmt(), clang::MSAsmStmt::getAllConstraints(), clang::MSAsmStmt::getAllExprs(), clang::MSAsmStmt::getInputConstraint(), clang::GCCAsmStmt::getLabelExpr(), clang::GCCAsmStmt::getLabelIdentifier(), clang::GCCAsmStmt::getNamedOperand(), and getNumInputs().
|
protected |
Definition at line 3229 of file Stmt.h.
Referenced by AsmStmt(), begin_inputs(), begin_inputs(), clang::GCCAsmStmt::begin_labels(), clang::GCCAsmStmt::begin_labels(), children(), children(), clang::MSAsmStmt::children(), clang::MSAsmStmt::children(), end_inputs(), end_inputs(), clang::GCCAsmStmt::end_labels(), clang::GCCAsmStmt::end_labels(), end_outputs(), end_outputs(), clang::GCCAsmStmt::GCCAsmStmt(), clang::MSAsmStmt::getAllConstraints(), clang::MSAsmStmt::getAllExprs(), clang::MSAsmStmt::getInputConstraint(), clang::GCCAsmStmt::getInputConstraintExpr(), clang::GCCAsmStmt::getInputConstraintExpr(), clang::GCCAsmStmt::getInputExpr(), clang::MSAsmStmt::getInputExpr(), clang::GCCAsmStmt::getInputIdentifier(), clang::GCCAsmStmt::getLabelExpr(), clang::GCCAsmStmt::getLabelIdentifier(), clang::GCCAsmStmt::getNamedOperand(), getNumOutputs(), clang::MSAsmStmt::getOutputConstraint(), clang::GCCAsmStmt::setInputExpr(), and clang::MSAsmStmt::setInputExpr().