75 lines · plain
1# RUN: llc -mtriple=hexagon -run-pass hexagon-early-if %s -o - | FileCheck %s2 3# Test that the LIFETIME_END instruction is not speculated and moved to a4# different basic block.5 6# CHECK: bb.1.b1:7# CHECK: LIFETIME_END8# CHECK: bb.2.b2:9 10--- |11 12 %s.0 = type { %s.1 }13 %s.1 = type { %s.2 }14 %s.2 = type { %s.3 }15 %s.3 = type { %s.4 }16 %s.4 = type { %s.5 }17 %s.5 = type { i32, i32, ptr }18 19 declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #020 21 define hidden fastcc void @f0() {22 b0:23 %v0 = alloca %s.0, align 424 %v1 = load i8, ptr undef, align 125 %v2 = add i8 %v1, -10226 %v3 = icmp ult i8 %v2, 127 br i1 %v3, label %b1, label %b228 29 b1: ; preds = %b030 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %v0)31 br label %b232 33 b2: ; preds = %b1, %b034 ret void35 }36 37 attributes #0 = { argmemonly nounwind }38 39...40---41name: f042alignment: 1643registers:44 - { id: 0, class: intregs, preferred-register: '' }45 - { id: 1, class: intregs, preferred-register: '' }46 - { id: 2, class: predregs, preferred-register: '' }47 - { id: 3, class: predregs, preferred-register: '' }48liveins:49frameInfo:50 maxAlignment: 451fixedStack:52stack:53 - { id: 0, name: v0, type: default, offset: 0, size: 12, alignment: 4 }54constants:55body: |56 bb.0.b0:57 successors: %bb.1.b1(0x40000000), %bb.2.b2(0x40000000)58 59 %1 = IMPLICIT_DEF60 %0 = L2_loadrb_io killed %1, 0 :: (load (s8) from `ptr undef`)61 %2 = C2_cmpeqi killed %0, 10262 %3 = COPY killed %263 J2_jumpf killed %3, %bb.2.b2, implicit-def dead $pc64 J2_jump %bb.1.b1, implicit-def dead $pc65 66 bb.1.b1:67 successors: %bb.2.b2(0x80000000)68 69 LIFETIME_END %stack.0.v070 71 bb.2.b2:72 PS_jmpret $r31, implicit-def dead $pc73 74...75