================
@@ -44,3 +44,100 @@ void l0() {
 // OGCG:   br label %[[FOR_COND:.*]]
 // OGCG: [[FOR_COND]]:
 // OGCG:   br label %[[FOR_COND]]
+
+void l1() {
+  for (int i = 0; ; ) {
+  }
+}
+
+// CIR:      cir.func @l1
+// CIR-NEXT:   cir.scope {
+// CIR-NEXT:     %[[I:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] 
{alignment = 4 : i64}
+// CIR-NEXT:     %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i
+// CIR-NEXT:     cir.store %[[ZERO]], %[[I]] : !s32i, !cir.ptr<!s32i>
+// CIR-NEXT:     cir.for : cond {
+// CIR-NEXT:       %[[TRUE:.*]] = cir.const #true
+// CIR-NEXT:       cir.condition(%[[TRUE]])
+// CIR-NEXT:     } body {
+// CIR-NEXT:       cir.yield
+// CIR-NEXT:     } step {
+// CIR-NEXT:       cir.yield
+// CIR-NEXT:     }
+// CIR-NEXT:   }
+// CIR-NEXT:   cir.return
+// CIR-NEXT: }
+
+// LLVM: define void @l1()
+// LLVM:   %[[I:.*]] = alloca i32, i64 1, align 4
+// LLVM:   br label %[[LABEL1:.*]]
+// LLVM: [[LABEL1]]:
+// LLVM:   store i32 0, ptr %[[I]], align 4
+// LLVM:   br label %[[LABEL2:.*]]
+// LLVM: [[LABEL2]]:
+// LLVM:   br i1 true, label %[[LABEL3:.*]], label %[[LABEL5:.*]]
+// LLVM: [[LABEL3]]:
+// LLVM:   br label %[[LABEL4:.*]]
+// LLVM: [[LABEL4]]:
+// LLVM:   br label %[[LABEL2]]
+// LLVM: [[LABEL5]]:
+// LLVM:   br label %[[LABEL6:.*]]
+// LLVM: [[LABEL6]]:
+// LLVM:   ret void
+
+// OGCG: define{{.*}} void @_Z2l1v()
+// OGCG: entry:
+// OGCG:   %[[I:.*]] = alloca i32, align 4
+// OGCG:   store i32 0, ptr %[[I]], align 4
+// OGCG:   br label %[[FOR_COND:.*]]
+// OGCG: [[FOR_COND]]:
+// OGCG:   br label %[[FOR_COND]]
+
+void l2() {
+  for (;;) {
----------------
mmha wrote:

Can you add another test without any braces so we have a for loop body without 
a `CompoundStmt`?

https://github.com/llvm/llvm-project/pull/132468
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to