1 ; RUN: llc -march=hexagon -O2 -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s
3 ; The purpose of this test is to make sure that the packetizer is ignoring
4 ; CFI instructions while forming packet for allocframe. Refer to 7d7d99622
5 ; which replaced PROLOG_LABEL with CFI_INSTRUCTION.
7 @g0 = external constant ptr
15 ; But we can put more instructions in the first packet.
20 ; CHECK-NEXT: allocframe(#0)
23 define i32 @f0() personality ptr @f3 {
25 %v0 = tail call ptr @f1(i32 4) #1
26 store i32 20, ptr %v0, align 4, !tbaa !0
27 invoke void @f2(ptr %v0, ptr @g0, ptr null) #2
28 to label %b4 unwind label %b1
31 %v2 = landingpad { ptr, i32 }
33 %v3 = extractvalue { ptr, i32 } %v2, 1
34 %v4 = tail call i32 @llvm.eh.typeid.for(ptr @g0) #1
35 %v5 = icmp eq i32 %v3, %v4
36 br i1 %v5, label %b2, label %b3
39 %v6 = extractvalue { ptr, i32 } %v2, 0
40 %v7 = tail call ptr @f4(ptr %v6) #1
41 tail call void @f5() #1
45 resume { ptr, i32 } %v2
53 declare void @f2(ptr, ptr, ptr)
57 ; Function Attrs: nounwind readnone
58 declare i32 @llvm.eh.typeid.for(ptr) #0
64 attributes #0 = { nounwind readnone }
65 attributes #1 = { nounwind }
66 attributes #2 = { noreturn }
70 !2 = !{!"omnipotent char", !3}
71 !3 = !{!"Simple C/C++ TBAA"}