Lines Matching full: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 { struct
115 Shape *Next; // The shape that will appear in the code right after this one argument
116 Shape *Natural; // The shape that control flow gets to naturally (if there is argument
128 Shape(ShapeKind KindInit) : Id(-1), Next(nullptr), Kind(KindInit) {} in Shape() argument
134 struct SimpleShape : public Shape {
137 SimpleShape() : Shape(SK_Simple), Inner(nullptr) {} in SimpleShape()
139 static bool classof(const Shape *S) { return S->getKind() == SK_Simple; } in classof()
143 /// A shape that may be implemented with a labeled loop.
145 struct LabeledShape : public Shape {
148 LabeledShape(ShapeKind KindInit) : Shape(KindInit), Labeled(false) {} in LabeledShape()
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; } in classof()
177 Shape *Inner;
181 static bool classof(const Shape *S) { return S->getKind() == SK_Loop; } in classof()