; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - -filetype=obj | spirv-val %}

; int foo() { return true; }
;
; int process() {
;   int val = 0;
;   int i = 0;
;
;   do {
;     ++i;
;     if (i > 5) {
;       break;
;       break;       // No SPIR-V should be emitted for this statement.
;       val = i;     // No SPIR-V should be emitted for this statement.
;       while(true); // No SPIR-V should be emitted for this statement.
;     }
;
;     val = i;
;     {
;       {
;         break;
;       }
;     }
;     val = val * 2; // No SPIR-V should be emitted for this statement.
;
;   } while (i < 10);
;
;   ////////////////////////////////////////////////////////////////////////////////
;   // Nested do-while loops with break statements                                //
;   // Each break statement should branch to the corresponding loop's break block //
;   ////////////////////////////////////////////////////////////////////////////////
;
;   do {
;     ++i;
;
;     do {
;       ++val;
;       break;
;     } while (i < 10);
;
;     --i;
;
;     {
;       break;
;     }
;
;   } while(val < 10);
;
;   return val;
; }
;
; [numthreads(1, 1, 1)]
; void main() {
;   process();
; }

target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-G1"
target triple = "spirv-unknown-vulkan1.3-compute"

; Function Attrs: convergent noinline nounwind optnone
define spir_func noundef i32 @_Z3foov() #0 {
entry:
  %0 = call token @llvm.experimental.convergence.entry()
  ret i32 1
}

; Function Attrs: convergent nocallback nofree nosync nounwind willreturn memory(none)
declare token @llvm.experimental.convergence.entry() #1

; Function Attrs: convergent noinline nounwind optnone
define spir_func noundef i32 @_Z7processv() #0 {
entry:
  %0 = call token @llvm.experimental.convergence.entry()
  %val = alloca i32, align 4
  %i = alloca i32, align 4
  store i32 0, ptr %val, align 4
  store i32 0, ptr %i, align 4
  br label %do.body

do.body:                                          ; preds = %do.cond, %entry
  %1 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %0) ]
  %2 = load i32, ptr %i, align 4
  %inc = add nsw i32 %2, 1
  store i32 %inc, ptr %i, align 4
  %3 = load i32, ptr %i, align 4
  %cmp = icmp sgt i32 %3, 5
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %do.body
  br label %do.end

if.end:                                           ; preds = %do.body
  %4 = load i32, ptr %i, align 4
  store i32 %4, ptr %val, align 4
  br label %do.end

do.cond:                                          ; No predecessors!
  %5 = load i32, ptr %i, align 4
  %cmp1 = icmp slt i32 %5, 10
  br i1 %cmp1, label %do.body, label %do.end

do.end:                                           ; preds = %do.cond, %if.end, %if.then
  br label %do.body2

do.body2:                                         ; preds = %do.cond9, %do.end
  %6 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %0) ]
  %7 = load i32, ptr %i, align 4
  %inc3 = add nsw i32 %7, 1
  store i32 %inc3, ptr %i, align 4
  br label %do.body4

do.body4:                                         ; preds = %do.cond6, %do.body2
  %8 = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %6) ]
  %9 = load i32, ptr %val, align 4
  %inc5 = add nsw i32 %9, 1
  store i32 %inc5, ptr %val, align 4
  br label %do.end8

do.cond6:                                         ; No predecessors!
  %10 = load i32, ptr %i, align 4
  %cmp7 = icmp slt i32 %10, 10
  br i1 %cmp7, label %do.body4, label %do.end8

do.end8:                                          ; preds = %do.cond6, %do.body4
  %11 = load i32, ptr %i, align 4
  %dec = add nsw i32 %11, -1
  store i32 %dec, ptr %i, align 4
  br label %do.end11

do.cond9:                                         ; No predecessors!
  %12 = load i32, ptr %val, align 4
  %cmp10 = icmp slt i32 %12, 10
  br i1 %cmp10, label %do.body2, label %do.end11

do.end11:                                         ; preds = %do.cond9, %do.end8
  %13 = load i32, ptr %val, align 4
  ret i32 %13
}

; Function Attrs: convergent nocallback nofree nosync nounwind willreturn memory(none)
declare token @llvm.experimental.convergence.loop() #1

; Function Attrs: convergent noinline norecurse nounwind optnone
define internal spir_func void @main() #2 {
entry:
  %0 = call token @llvm.experimental.convergence.entry()
  %call1 = call spir_func noundef i32 @_Z7processv() #4 [ "convergencectrl"(token %0) ]
  ret void
}

; Function Attrs: convergent norecurse
define void @main.1() #3 {
entry:
  call void @main()
  ret void
}

attributes #0 = { convergent noinline nounwind optnone "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
attributes #1 = { convergent nocallback nofree nosync nounwind willreturn memory(none) }
attributes #2 = { convergent noinline norecurse nounwind optnone "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
attributes #3 = { convergent norecurse "frame-pointer"="all" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
attributes #4 = { convergent }

!llvm.module.flags = !{!0, !1, !2}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 4, !"dx.disable_optimizations", i32 1}
!2 = !{i32 7, !"frame-pointer", i32 2}
