-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Description
GCCAsmStmt
stores its arguments in separately allocated array
llvm-project/clang/include/clang/AST/Stmt.h
Lines 3305 to 3311 in b936ef1
StringLiteral *AsmStr; | |
// FIXME: If we wanted to, we could allocate all of these in one big array. | |
StringLiteral **Constraints = nullptr; | |
StringLiteral **Clobbers = nullptr; | |
IdentifierInfo **Names = nullptr; | |
unsigned NumLabels = 0; |
And is not considered to have any children.
Instead, we should store all these statements (contiguously) within the Exprs
of ASmStmt
and make sure that's returned from children()
llvm-project/clang/include/clang/AST/Stmt.h
Line 3160 in b936ef1
Stmt **Exprs = nullptr; |
However, we should also make sure that the order of the children - and therefore the order of elements
in Expr makes sense,
ie Template, OutputConstraint0, OutputExpr0, ... OutputConstraintN, OutputExprN, InputConstraint0, InputExpr0, ... InputConstraintN, InputExprN, Label0, ...
Constructors, Getter, Setters, etc of GCCAsmStmt needs to be adapted to understand this order