# RUN: llc -o - %s -mtriple=x86_64-- -run-pass=branch-folder | FileCheck %s
# Branch folder should ignore the DBG_VALUE between block bb.2 and bb.3,
# set these blocks as bb.3, so that bb.6 will succeed to merge between bb.2 and bb.3.
# if the DBG_VALUE is not ignored, bb.6 will merge between bb.1 and bb.2, the result is
# different with Codegen without -g.
#
# Generated with
#
# clang++ -g -w -O1 -S -emit-llvm test.cc
# llc -stop-before=branch-folder test.ll
#
# template <typename, typename = int> class e;
# class allocator {
# public:
#   ~allocator();
# };
# template <typename, typename> class e {
# public:
#   e(char *, allocator = allocator());
# };
# template <typename b, typename c, typename d> bool operator==(e<c, d>, b);
# class f {
# public:
#   f(int *, int *, int *, int, int, int, int);
#   e<char> g();
#   void j();
# };
# int h, i;
# class k {
#   void l();
#   bool m_fn4();
#   int m;
#   int n;
#   int q;
#   int fmap;
# };
# void k::l() {
#   e<char> o = "";
#   for (;;) {
#     int p = 0;
#     for (;;) {
#       if (m_fn4())
#         break;
#       f a(&q, &fmap, &m, n, h, i, 0);
#       if (a.g() == "")
#         a.j();
#     }
#   }
# }

--- |

  define dso_local void @l() {
    ret void
  }

...
---
name:            l
body:             |
  bb.0:
    ; CHECK: bb.0:
    ; CHECK-NEXT: successors: %bb.1({{.*}}), %bb.7
    successors: %bb.1, %bb.3

  bb.1:
    $rdi = MOV64rr $rsp

  bb.2:
    ; CHECK: bb.2:
    ; CHECK-NEXT: successors: %bb.3
    successors: %bb.2, %bb.4
    DBG_VALUE
    CFI_INSTRUCTION def_cfa_offset 8
    ; CHECK: bb.3
    ; CHECK-NEXT: successors: %bb.2({{.*}}), %bb.4
    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
    JCC_1 %bb.2, 5, implicit killed $eflags
    JMP_1 %bb.4

  bb.3 (landing-pad):
    ; CHECK: bb.4:
    ; CHECK-NEXT: successors: %bb.5({{.*}}), %bb.6
    successors:

  bb.4:
    successors: %bb.5, %bb.6
    JCC_1 %bb.6, 4, implicit killed $eflags
    ; CHECK: JCC_1 %bb.6, 4, implicit $eflags
    JMP_1 %bb.5

  bb.5:
    ; CHECK: bb.5:
    ; CHECK-NEXT: successors: %bb.6
    $rdi = COPY renamable $r12

  bb.6:
    ; CHECK: bb.6:
    ; CHECK-NEXT: successors: %bb.3
    successors: %bb.2, %bb.4
    ; CHECK: JMP_1 %bb.3

  ; CHECK: bb.7 (landing-pad):
    $rdi = COPY renamable $rbx
    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
    JCC_1 %bb.2, 5, implicit killed $eflags
    JMP_1 %bb.4

...
