| ; Ensure that llvm-reduce doesn't try to remove the first BB of a |
| ; function when the second BB has multiple predecessors, since that |
| ; results in invalid IR. This issue was fixed by: |
| ; https://reviews.llvm.org/D131026 |
| |
| ; RUN: llvm-reduce --delta-passes=basic-blocks --test %python --test-arg %p/Inputs/remove-bbs.py -abort-on-invalid-reduction %s -o %t |
| |
| define void @f(ptr %x0) { |
| uninteresting: |
| %x2 = alloca ptr, i32 0, align 8 |
| %x3 = alloca ptr, i32 0, align 8 |
| br label %interesting1 |
| |
| ; this block has 2 predecessors and can't become the entry block |
| interesting1: |
| %x5 = icmp ne ptr %x0, null |
| br i1 %x5, label %interesting2, label %interesting1 |
| |
| interesting2: |
| store ptr null, ptr null, align 8 |
| br label %interesting3 |
| |
| interesting3: |
| ret void |
| } |