// RUN: mlir-translate -mlir-to-cpp -declare-variables-at-top %s | FileCheck %s -check-prefix=CPP-DECLTOP

// simple(10, true)  -> 20
// simple(10, false) -> 30
func @simple(i64, i1) -> i64 {
^bb0(%a: i64, %cond: i1):
  cond_br %cond, ^bb1, ^bb2
^bb1:
  br ^bb3(%a: i64)
^bb2:
  %b = emitc.call "add"(%a, %a) : (i64, i64) -> i64
  br ^bb3(%b: i64)
^bb3(%c: i64):
  br ^bb4(%c, %a : i64, i64)
^bb4(%d : i64, %e : i64):
  %0 = emitc.call "add"(%d, %e) : (i64, i64) -> i64
  return %0 : i64
}
  // CPP-DECLTOP: int64_t simple(int64_t [[A:[^ ]*]], bool [[COND:[^ ]*]]) {
    // CPP-DECLTOP-NEXT: int64_t [[B:[^ ]*]];
    // CPP-DECLTOP-NEXT: int64_t [[V0:[^ ]*]];
    // CPP-DECLTOP-NEXT: int64_t [[C:[^ ]*]];
    // CPP-DECLTOP-NEXT: int64_t [[D:[^ ]*]];
    // CPP-DECLTOP-NEXT: int64_t [[E:[^ ]*]];
    // CPP-DECLTOP-NEXT: [[BB0:[^ ]*]]:
    // CPP-DECLTOP-NEXT: if ([[COND]]) {
    // CPP-DECLTOP-NEXT: goto [[BB1:[^ ]*]];
    // CPP-DECLTOP-NEXT: } else {
    // CPP-DECLTOP-NEXT: goto [[BB2:[^ ]*]];
    // CPP-DECLTOP-NEXT: }
    // CPP-DECLTOP-NEXT: [[BB1]]:
    // CPP-DECLTOP-NEXT: [[C]] = [[A]];
    // CPP-DECLTOP-NEXT: goto [[BB3:[^ ]*]];
    // CPP-DECLTOP-NEXT: [[BB2]]:
    // CPP-DECLTOP-NEXT: [[B]] = add([[A]], [[A]]);
    // CPP-DECLTOP-NEXT: [[C]] = [[B]];
    // CPP-DECLTOP-NEXT: goto [[BB3]];
    // CPP-DECLTOP-NEXT: [[BB3]]:
    // CPP-DECLTOP-NEXT: [[D]] = [[C]];
    // CPP-DECLTOP-NEXT: [[E]] = [[A]];
    // CPP-DECLTOP-NEXT: goto [[BB4:[^ ]*]];
    // CPP-DECLTOP-NEXT: [[BB4]]:
    // CPP-DECLTOP-NEXT: [[V0]] = add([[D]], [[E]]);
    // CPP-DECLTOP-NEXT: return [[V0]];


func @block_labels0() {
^bb1:
    br ^bb2
^bb2:
    return
}
// CPP-DECLTOP: void block_labels0() {
  // CPP-DECLTOP-NEXT: label1:
  // CPP-DECLTOP-NEXT: goto label2;
  // CPP-DECLTOP-NEXT: label2:
  // CPP-DECLTOP-NEXT: return;
  // CPP-DECLTOP-NEXT: }


// Repeat the same function to make sure the names of the block labels get reset.
func @block_labels1() {
^bb1:
    br ^bb2
^bb2:
    return
}
// CPP-DECLTOP: void block_labels1() {
  // CPP-DECLTOP-NEXT: label1:
  // CPP-DECLTOP-NEXT: goto label2;
  // CPP-DECLTOP-NEXT: label2:
  // CPP-DECLTOP-NEXT: return;
  // CPP-DECLTOP-NEXT: }
