Home | History | Annotate | Download | only in WebAssembly

Lines Matching refs:Shape

35 struct Shape;
51 Shape
52 *Ancestor; // If not nullptr, this shape is the relevant one for purposes
80 // Branches become processed after we finish the shape relevant to them. For
82 // continues and are now processed. When we calculate what shape to generate
89 Shape *Parent; // The shape we are directly inside
110 /// Represents a structured control flow shape
112 struct Shape {
115 Shape *Next; // The shape that will appear in the code right after this one
116 Shape *Natural; // The shape that control flow gets to naturally (if there is
128 Shape(ShapeKind KindInit) : Id(-1), Next(nullptr), Kind(KindInit) {}
134 struct SimpleShape : public Shape {
137 SimpleShape() : Shape(SK_Simple), Inner(nullptr) {}
139 static bool classof(const Shape *S) { return S->getKind() == SK_Simple; }
143 /// A shape that may be implemented with a labeled loop.
145 struct LabeledShape : public Shape {
148 LabeledShape(ShapeKind KindInit) : Shape(KindInit), Labeled(false) {}
153 typedef std::map<int, Shape *> IdShapeMap;
156 /// Multiple: A shape with more than one entry. If the next block to
158 /// the next shape, otherwise we continue immediately to the
159 /// next shape.
162 IdShapeMap InnerMap; // entry block ID -> shape
170 static bool classof(const Shape *S) { return S->getKind() == SK_Multiple; }
177 Shape *Inner;
181 static bool classof(const Shape *S) { return S->getKind() == SK_Loop; }