Skip to content

Commit c476c4b

Browse files
committed
Merge remote-tracking branch 'intel_llvm/master' into private/vlazarev/llvmspirv_pulldown
2 parents f803376 + 67121d7 commit c476c4b

File tree

5 files changed

+166
-130
lines changed

5 files changed

+166
-130
lines changed

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ static cl::opt<bool>
246246
"CodeGenPrepare."));
247247

248248
static cl::opt<bool> OptimizePhiTypes(
249-
"cgp-optimize-phi-types", cl::Hidden, cl::init(false),
249+
"cgp-optimize-phi-types", cl::Hidden, cl::init(true),
250250
cl::desc("Enable converting phi types in CodeGenPrepare"));
251251

252252
namespace {

llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,11 +1802,8 @@ struct DSEState {
18021802
if (CommonPred)
18031803
WorkList.insert(CommonPred);
18041804
else
1805-
for (BasicBlock *R : PDT.getRoots()) {
1806-
if (!DT.isReachableFromEntry(R))
1807-
continue;
1805+
for (BasicBlock *R : PDT.getRoots())
18081806
WorkList.insert(R);
1809-
}
18101807

18111808
NumCFGTries++;
18121809
// Check if all paths starting from an exit node go through one of the
@@ -1818,6 +1815,12 @@ struct DSEState {
18181815
continue;
18191816
if (Current == DomAccess->getBlock())
18201817
return None;
1818+
1819+
// DomAccess is reachable from the entry, so we don't have to explore
1820+
// unreachable blocks further.
1821+
if (!DT.isReachableFromEntry(Current))
1822+
continue;
1823+
18211824
unsigned CPO = PostOrderNumbers.find(Current)->second;
18221825
// Current block is not on a path starting at DomAccess.
18231826
if (CPO > UpperBound)

llvm/test/CodeGen/Thumb2/mve-float32regloops.ll

Lines changed: 97 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,156 +1649,135 @@ define arm_aapcs_vfpcc void @arm_biquad_cascade_df1_f32(%struct.arm_biquad_casd_
16491649
; CHECK-NEXT: sub sp, #4
16501650
; CHECK-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
16511651
; CHECK-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
1652-
; CHECK-NEXT: .pad #88
1653-
; CHECK-NEXT: sub sp, #88
1654-
; CHECK-NEXT: ldrd r12, r10, [r0]
1655-
; CHECK-NEXT: @ implicit-def: $s2
1652+
; CHECK-NEXT: .pad #16
1653+
; CHECK-NEXT: sub sp, #16
1654+
; CHECK-NEXT: ldrd r6, r9, [r0]
16561655
; CHECK-NEXT: and r7, r3, #3
1657-
; CHECK-NEXT: ldr.w r11, [r0, #8]
1658-
; CHECK-NEXT: lsrs r0, r3, #2
1659-
; CHECK-NEXT: str r0, [sp, #60] @ 4-byte Spill
1660-
; CHECK-NEXT: str r7, [sp, #12] @ 4-byte Spill
1661-
; CHECK-NEXT: str r2, [sp, #56] @ 4-byte Spill
1656+
; CHECK-NEXT: ldr r0, [r0, #8]
1657+
; CHECK-NEXT: lsrs r3, r3, #2
1658+
; CHECK-NEXT: @ implicit-def: $r12
1659+
; CHECK-NEXT: str r7, [sp] @ 4-byte Spill
1660+
; CHECK-NEXT: str r3, [sp, #8] @ 4-byte Spill
1661+
; CHECK-NEXT: str r2, [sp, #4] @ 4-byte Spill
16621662
; CHECK-NEXT: b .LBB19_3
16631663
; CHECK-NEXT: .LBB19_1: @ in Loop: Header=BB19_3 Depth=1
1664-
; CHECK-NEXT: vmov.f32 s14, s7
1665-
; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1666-
; CHECK-NEXT: vmov.f32 s0, s10
1667-
; CHECK-NEXT: vmov.f32 s7, s6
1664+
; CHECK-NEXT: mov r3, r8
1665+
; CHECK-NEXT: mov r7, r5
1666+
; CHECK-NEXT: mov r4, r11
1667+
; CHECK-NEXT: mov r8, r10
16681668
; CHECK-NEXT: .LBB19_2: @ %if.end69
16691669
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1670-
; CHECK-NEXT: vstr s8, [r10]
1671-
; CHECK-NEXT: subs.w r12, r12, #1
1672-
; CHECK-NEXT: vstr s0, [r10, #4]
1673-
; CHECK-NEXT: add.w r11, r11, #128
1674-
; CHECK-NEXT: vstr s14, [r10, #8]
1670+
; CHECK-NEXT: ldr r6, [sp, #12] @ 4-byte Reload
1671+
; CHECK-NEXT: adds r0, #128
1672+
; CHECK-NEXT: ldr r2, [sp, #4] @ 4-byte Reload
1673+
; CHECK-NEXT: strd r7, r4, [r9]
1674+
; CHECK-NEXT: subs r6, #1
1675+
; CHECK-NEXT: strd r3, r8, [r9, #8]
1676+
; CHECK-NEXT: add.w r9, r9, #16
16751677
; CHECK-NEXT: mov r1, r2
1676-
; CHECK-NEXT: vstr s7, [r10, #12]
1677-
; CHECK-NEXT: add.w r10, r10, #16
16781678
; CHECK-NEXT: beq.w .LBB19_13
16791679
; CHECK-NEXT: .LBB19_3: @ %do.body
16801680
; CHECK-NEXT: @ =>This Loop Header: Depth=1
16811681
; CHECK-NEXT: @ Child Loop BB19_5 Depth 2
1682-
; CHECK-NEXT: vldr s7, [r10, #8]
1683-
; CHECK-NEXT: mov r5, r2
1684-
; CHECK-NEXT: ldr r0, [sp, #60] @ 4-byte Reload
1685-
; CHECK-NEXT: vldr s8, [r10]
1686-
; CHECK-NEXT: vldr s10, [r10, #4]
1687-
; CHECK-NEXT: vldr s6, [r10, #12]
1688-
; CHECK-NEXT: wls lr, r0, .LBB19_6
1682+
; CHECK-NEXT: str r6, [sp, #12] @ 4-byte Spill
1683+
; CHECK-NEXT: mov r6, r2
1684+
; CHECK-NEXT: ldrd r5, r11, [r9]
1685+
; CHECK-NEXT: ldrd r8, r10, [r9, #8]
1686+
; CHECK-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
1687+
; CHECK-NEXT: wls lr, r2, .LBB19_6
16891688
; CHECK-NEXT: @ %bb.4: @ %while.body.lr.ph
16901689
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1691-
; CHECK-NEXT: ldrd r5, lr, [sp, #56] @ 8-byte Folded Reload
1690+
; CHECK-NEXT: ldr r6, [sp, #4] @ 4-byte Reload
1691+
; CHECK-NEXT: mov r4, r11
1692+
; CHECK-NEXT: ldr.w lr, [sp, #8] @ 4-byte Reload
1693+
; CHECK-NEXT: mov r3, r5
16921694
; CHECK-NEXT: .LBB19_5: @ %while.body
16931695
; CHECK-NEXT: @ Parent Loop BB19_3 Depth=1
16941696
; CHECK-NEXT: @ => This Inner Loop Header: Depth=2
1695-
; CHECK-NEXT: vmov r4, s8
1696-
; CHECK-NEXT: vldr s8, [r1, #12]
1697-
; CHECK-NEXT: vldrw.u32 q0, [r11, #112]
1698-
; CHECK-NEXT: vmov r0, s10
1699-
; CHECK-NEXT: vldr s10, [r1, #8]
1700-
; CHECK-NEXT: vmov r7, s7
1701-
; CHECK-NEXT: vmov r9, s6
1702-
; CHECK-NEXT: vldrw.u32 q1, [r11]
1703-
; CHECK-NEXT: vstrw.32 q0, [sp, #64] @ 16-byte Spill
1704-
; CHECK-NEXT: vmov r8, s8
1705-
; CHECK-NEXT: vldrw.u32 q0, [r11, #16]
1706-
; CHECK-NEXT: ldr r6, [r1, #4]
1707-
; CHECK-NEXT: vldrw.u32 q7, [r11, #32]
1708-
; CHECK-NEXT: vmul.f32 q1, q1, r8
1709-
; CHECK-NEXT: vmov r3, s10
1710-
; CHECK-NEXT: vldrw.u32 q3, [r11, #48]
1711-
; CHECK-NEXT: vfma.f32 q1, q0, r3
1712-
; CHECK-NEXT: ldr r3, [r1]
1713-
; CHECK-NEXT: vfma.f32 q1, q7, r6
1714-
; CHECK-NEXT: vldrw.u32 q6, [r11, #64]
1715-
; CHECK-NEXT: vfma.f32 q1, q3, r3
1716-
; CHECK-NEXT: vldrw.u32 q5, [r11, #80]
1717-
; CHECK-NEXT: vfma.f32 q1, q6, r4
1718-
; CHECK-NEXT: vldrw.u32 q4, [r11, #96]
1719-
; CHECK-NEXT: vfma.f32 q1, q5, r0
1720-
; CHECK-NEXT: vldrw.u32 q0, [sp, #64] @ 16-byte Reload
1721-
; CHECK-NEXT: vfma.f32 q1, q4, r7
1697+
; CHECK-NEXT: ldr r5, [r1, #12]
1698+
; CHECK-NEXT: vldrw.u32 q1, [r0]
1699+
; CHECK-NEXT: vldrw.u32 q6, [r0, #16]
1700+
; CHECK-NEXT: ldm.w r1, {r2, r7, r11}
1701+
; CHECK-NEXT: vmul.f32 q1, q1, r5
1702+
; CHECK-NEXT: vldrw.u32 q7, [r0, #32]
1703+
; CHECK-NEXT: vfma.f32 q1, q6, r11
1704+
; CHECK-NEXT: vldrw.u32 q4, [r0, #48]
1705+
; CHECK-NEXT: vfma.f32 q1, q7, r7
1706+
; CHECK-NEXT: vldrw.u32 q5, [r0, #64]
1707+
; CHECK-NEXT: vfma.f32 q1, q4, r2
1708+
; CHECK-NEXT: vldrw.u32 q3, [r0, #80]
1709+
; CHECK-NEXT: vfma.f32 q1, q5, r3
1710+
; CHECK-NEXT: vldrw.u32 q2, [r0, #96]
1711+
; CHECK-NEXT: vfma.f32 q1, q3, r4
1712+
; CHECK-NEXT: vldrw.u32 q0, [r0, #112]
1713+
; CHECK-NEXT: vfma.f32 q1, q2, r8
17221714
; CHECK-NEXT: adds r1, #16
1723-
; CHECK-NEXT: vfma.f32 q1, q0, r9
1724-
; CHECK-NEXT: vmov.f32 s2, s8
1725-
; CHECK-NEXT: vstrb.8 q1, [r5], #16
1715+
; CHECK-NEXT: vfma.f32 q1, q0, r10
1716+
; CHECK-NEXT: vmov r10, s6
1717+
; CHECK-NEXT: vstrb.8 q1, [r6], #16
1718+
; CHECK-NEXT: vmov r8, s7
1719+
; CHECK-NEXT: mov r4, r11
1720+
; CHECK-NEXT: mov r3, r5
1721+
; CHECK-NEXT: mov r12, r5
17261722
; CHECK-NEXT: le lr, .LBB19_5
17271723
; CHECK-NEXT: .LBB19_6: @ %while.end
17281724
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1729-
; CHECK-NEXT: ldr r7, [sp, #12] @ 4-byte Reload
1730-
; CHECK-NEXT: cmp r7, #0
1725+
; CHECK-NEXT: ldr r2, [sp] @ 4-byte Reload
1726+
; CHECK-NEXT: cmp r2, #0
17311727
; CHECK-NEXT: beq .LBB19_1
17321728
; CHECK-NEXT: @ %bb.7: @ %if.then
17331729
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1734-
; CHECK-NEXT: vldr s24, [r1]
1735-
; CHECK-NEXT: vmov r0, s8
1736-
; CHECK-NEXT: vldr s0, [r1, #4]
1737-
; CHECK-NEXT: vldrw.u32 q3, [r11]
1738-
; CHECK-NEXT: vldr s3, [r1, #12]
1739-
; CHECK-NEXT: vldrw.u32 q4, [r11, #32]
1740-
; CHECK-NEXT: vldr s1, [r1, #8]
1741-
; CHECK-NEXT: vmov r1, s10
1742-
; CHECK-NEXT: vldrw.u32 q2, [r11, #96]
1743-
; CHECK-NEXT: vmov r6, s3
1744-
; CHECK-NEXT: vmul.f32 q3, q3, r6
1745-
; CHECK-NEXT: vmov r6, s1
1746-
; CHECK-NEXT: vstrw.32 q2, [sp, #32] @ 16-byte Spill
1747-
; CHECK-NEXT: vldrw.u32 q2, [r11, #112]
1748-
; CHECK-NEXT: vldrw.u32 q5, [r11, #48]
1749-
; CHECK-NEXT: vmov r4, s0
1750-
; CHECK-NEXT: vstrw.32 q2, [sp, #64] @ 16-byte Spill
1751-
; CHECK-NEXT: vldrw.u32 q2, [r11, #80]
1752-
; CHECK-NEXT: vldrw.u32 q7, [r11, #64]
1753-
; CHECK-NEXT: vmov r3, s24
1754-
; CHECK-NEXT: vstrw.32 q2, [sp, #16] @ 16-byte Spill
1755-
; CHECK-NEXT: vldrw.u32 q2, [r11, #16]
1756-
; CHECK-NEXT: vmov r2, s7
1757-
; CHECK-NEXT: cmp r7, #1
1758-
; CHECK-NEXT: vfma.f32 q3, q2, r6
1759-
; CHECK-NEXT: vldrw.u32 q2, [sp, #16] @ 16-byte Reload
1760-
; CHECK-NEXT: vfma.f32 q3, q4, r4
1761-
; CHECK-NEXT: vmov lr, s6
1762-
; CHECK-NEXT: vfma.f32 q3, q5, r3
1763-
; CHECK-NEXT: vfma.f32 q3, q7, r0
1764-
; CHECK-NEXT: vfma.f32 q3, q2, r1
1765-
; CHECK-NEXT: vldrw.u32 q2, [sp, #32] @ 16-byte Reload
1766-
; CHECK-NEXT: vfma.f32 q3, q2, r2
1767-
; CHECK-NEXT: vldrw.u32 q2, [sp, #64] @ 16-byte Reload
1768-
; CHECK-NEXT: vfma.f32 q3, q2, lr
1730+
; CHECK-NEXT: ldrd lr, r4, [r1]
1731+
; CHECK-NEXT: vldrw.u32 q0, [r0]
1732+
; CHECK-NEXT: ldrd r7, r1, [r1, #8]
1733+
; CHECK-NEXT: vldrw.u32 q6, [r0, #16]
1734+
; CHECK-NEXT: vldrw.u32 q7, [r0, #32]
1735+
; CHECK-NEXT: vldrw.u32 q4, [r0, #48]
1736+
; CHECK-NEXT: vmul.f32 q0, q0, r1
1737+
; CHECK-NEXT: vldrw.u32 q5, [r0, #64]
1738+
; CHECK-NEXT: vfma.f32 q0, q6, r7
1739+
; CHECK-NEXT: vldrw.u32 q3, [r0, #80]
1740+
; CHECK-NEXT: vfma.f32 q0, q7, r4
1741+
; CHECK-NEXT: vldrw.u32 q2, [r0, #96]
1742+
; CHECK-NEXT: vfma.f32 q0, q4, lr
1743+
; CHECK-NEXT: vldrw.u32 q1, [r0, #112]
1744+
; CHECK-NEXT: vfma.f32 q0, q5, r5
1745+
; CHECK-NEXT: cmp r2, #1
1746+
; CHECK-NEXT: vfma.f32 q0, q3, r11
1747+
; CHECK-NEXT: vfma.f32 q0, q2, r8
1748+
; CHECK-NEXT: vfma.f32 q0, q1, r10
1749+
; CHECK-NEXT: vmov r5, s0
17691750
; CHECK-NEXT: bne .LBB19_9
17701751
; CHECK-NEXT: @ %bb.8: @ %if.then58
17711752
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1772-
; CHECK-NEXT: vstr s12, [r5]
1773-
; CHECK-NEXT: vmov.f32 s8, s24
1774-
; CHECK-NEXT: vmov.f32 s0, s2
1775-
; CHECK-NEXT: vmov.f32 s14, s12
1776-
; CHECK-NEXT: b .LBB19_11
1753+
; CHECK-NEXT: str r5, [r6]
1754+
; CHECK-NEXT: mov r7, lr
1755+
; CHECK-NEXT: mov r4, r12
1756+
; CHECK-NEXT: mov r3, r5
1757+
; CHECK-NEXT: b .LBB19_12
17771758
; CHECK-NEXT: .LBB19_9: @ %if.else
17781759
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1779-
; CHECK-NEXT: cmp r7, #2
1780-
; CHECK-NEXT: vstmia r5, {s12, s13}
1781-
; CHECK-NEXT: bne .LBB19_12
1760+
; CHECK-NEXT: vmov r8, s1
1761+
; CHECK-NEXT: cmp r2, #2
1762+
; CHECK-NEXT: vstr s1, [r6, #4]
1763+
; CHECK-NEXT: str r5, [r6]
1764+
; CHECK-NEXT: bne .LBB19_11
17821765
; CHECK-NEXT: @ %bb.10: @ in Loop: Header=BB19_3 Depth=1
1783-
; CHECK-NEXT: vmov.f32 s8, s0
1784-
; CHECK-NEXT: vmov.f32 s14, s13
1785-
; CHECK-NEXT: vmov.f32 s0, s24
1786-
; CHECK-NEXT: vmov.f32 s7, s12
1787-
; CHECK-NEXT: .LBB19_11: @ %if.end69
1766+
; CHECK-NEXT: mov r7, r4
1767+
; CHECK-NEXT: mov r3, r8
1768+
; CHECK-NEXT: mov r4, lr
1769+
; CHECK-NEXT: mov r8, r5
1770+
; CHECK-NEXT: b .LBB19_12
1771+
; CHECK-NEXT: .LBB19_11: @ %if.else64
17881772
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1789-
; CHECK-NEXT: vmov.f32 s2, s3
1790-
; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1791-
; CHECK-NEXT: b .LBB19_2
1792-
; CHECK-NEXT: .LBB19_12: @ %if.else64
1773+
; CHECK-NEXT: vmov r3, s2
1774+
; CHECK-NEXT: vstr s2, [r6, #8]
1775+
; CHECK-NEXT: .LBB19_12: @ %if.end69
17931776
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1794-
; CHECK-NEXT: vmov.f32 s7, s13
1795-
; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1796-
; CHECK-NEXT: vmov.f32 s2, s3
1797-
; CHECK-NEXT: vstr s14, [r5, #8]
1798-
; CHECK-NEXT: vmov.f32 s8, s1
1777+
; CHECK-NEXT: mov r12, r1
17991778
; CHECK-NEXT: b .LBB19_2
18001779
; CHECK-NEXT: .LBB19_13: @ %do.end
1801-
; CHECK-NEXT: add sp, #88
1780+
; CHECK-NEXT: add sp, #16
18021781
; CHECK-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
18031782
; CHECK-NEXT: add sp, #4
18041783
; CHECK-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11, pc}

llvm/test/CodeGen/X86/atomicf128.ll

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,15 @@ define void @atomic_fetch_swapf128(fp128 %x) nounwind {
1111
; CHECK: ## %bb.0:
1212
; CHECK-NEXT: pushq %rbx
1313
; CHECK-NEXT: movq _fsc128@{{.*}}(%rip), %rsi
14-
; CHECK-NEXT: movaps (%rsi), %xmm1
14+
; CHECK-NEXT: movq (%rsi), %rax
15+
; CHECK-NEXT: movq 8(%rsi), %rdx
1516
; CHECK-NEXT: .p2align 4, 0x90
1617
; CHECK-NEXT: LBB0_1: ## %atomicrmw.start
1718
; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1
1819
; CHECK-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1920
; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rbx
2021
; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rcx
21-
; CHECK-NEXT: movaps %xmm1, -{{[0-9]+}}(%rsp)
22-
; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rax
23-
; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rdx
2422
; CHECK-NEXT: lock cmpxchg16b (%rsi)
25-
; CHECK-NEXT: movq %rdx, -{{[0-9]+}}(%rsp)
26-
; CHECK-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
27-
; CHECK-NEXT: movaps -{{[0-9]+}}(%rsp), %xmm1
2823
; CHECK-NEXT: jne LBB0_1
2924
; CHECK-NEXT: ## %bb.2: ## %atomicrmw.end
3025
; CHECK-NEXT: popq %rbx
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2+
; RUN: opt -dse -enable-dse-memoryssa -S %s | FileCheck %s
3+
4+
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
5+
6+
; Make sure we do not crash when we encounter unreachable blocks while checking
7+
; if all paths to DomAccess go through a killing block.
8+
define void @test(float* %ptr, i1 %c.1, i1 %c.2, i1 %c.3) {
9+
; CHECK-LABEL: @test(
10+
; CHECK-NEXT: bb:
11+
; CHECK-NEXT: br i1 [[C_1:%.*]], label [[BB27:%.*]], label [[BB53:%.*]]
12+
; CHECK: bb10:
13+
; CHECK-NEXT: br label [[BB43:%.*]]
14+
; CHECK: bb22:
15+
; CHECK-NEXT: br i1 [[C_2:%.*]], label [[BB22:%.*]], label [[BB53]]
16+
; CHECK: bb27:
17+
; CHECK-NEXT: br i1 [[C_3:%.*]], label [[BB38:%.*]], label [[BB39:%.*]]
18+
; CHECK: bb38:
19+
; CHECK-NEXT: store float 0.000000e+00, float* [[PTR:%.*]], align 4
20+
; CHECK-NEXT: br label [[BB38]]
21+
; CHECK: bb39:
22+
; CHECK-NEXT: br i1 [[C_2]], label [[BB43]], label [[BB38]]
23+
; CHECK: bb43:
24+
; CHECK-NEXT: store float 0.000000e+00, float* [[PTR]], align 4
25+
; CHECK-NEXT: br label [[BB50:%.*]]
26+
; CHECK: bb50:
27+
; CHECK-NEXT: br i1 [[C_3]], label [[BB27]], label [[BB53]]
28+
; CHECK: bb53:
29+
; CHECK-NEXT: br label [[BB53]]
30+
;
31+
bb:
32+
br i1 %c.1, label %bb27, label %bb53
33+
34+
bb10: ; No predecessors!
35+
br label %bb43
36+
37+
bb22: ; preds = %bb22
38+
br i1 %c.2, label %bb22, label %bb53
39+
40+
bb27: ; preds = %bb50, %bb
41+
br i1 %c.3, label %bb38, label %bb39
42+
43+
bb38: ; preds = %bb39, %bb38, %bb27
44+
store float 0.000000e+00, float* %ptr, align 4
45+
br label %bb38
46+
47+
bb39: ; preds = %bb27
48+
br i1 %c.2, label %bb43, label %bb38
49+
50+
bb43: ; preds = %bb39, %bb10
51+
store float 0.000000e+00, float* %ptr, align 4
52+
br label %bb50
53+
54+
bb50: ; preds = %bb43
55+
br i1 %c.3, label %bb27, label %bb53
56+
57+
bb53: ; preds = %bb53, %bb50, %bb22, %bb
58+
br label %bb53
59+
}

0 commit comments

Comments
 (0)