xref: /llvm-project/llvm/test/CodeGen/X86/gcc_except_table_bb_sections_nolpads.ll (revision df2213f345475786731a2c3b2a121329f14e8950)
1;; Verify that @LPStart is omitted when there are no landing pads. This test
2;; uses an unkown personality to force emitting the exception table.
3
4; RUN: llc -basic-block-sections=all -mtriple=x86_64 < %s | FileCheck %s
5
6declare void @throwit()
7declare i32 @__unknown_ehpersonality(...)
8
9define void @foo(i1 %cond) uwtable personality ptr @__unknown_ehpersonality {
10entry:
11  br i1 %cond, label %cond.true, label %cond.false
12
13cond.true:                                        ; preds = %entry
14  call void @throwit()
15  unreachable
16
17cond.false:                                         ; preds = %entry
18  ret void
19}
20
21; CHECK:      GCC_except_table0:
22; CHECK-NEXT: .Lexception0:
23; CHECK-NEXT:   .byte	255                             # @LPStart Encoding = omit
24; CHECK-NEXT:   .byte	255                             # @TType Encoding = omit
25; CHECK-NEXT:   .byte	1                               # Call site Encoding = uleb128
26; CHECK-NEXT:   .uleb128 .Laction_table_base0-.Lcst_begin0
27; CHECK-NEXT: .Lcst_begin0:
28; CHECK-NEXT: .Lexception1:
29; CHECK-NEXT:   .byte	255                             # @LPStart Encoding = omit
30; CHECK-NEXT:   .byte	255                             # @TType Encoding = omit
31; CHECK-NEXT:   .byte	1                               # Call site Encoding = uleb128
32; CHECK-NEXT:   .uleb128 .Laction_table_base0-.Lcst_begin1
33; CHECK-NEXT: .Lcst_begin1:
34; CHECK-NEXT: .Lexception2:
35; CHECK-NEXT:   .byte	255                             # @LPStart Encoding = omit
36; CHECK-NEXT:   .byte	255                             # @TType Encoding = omit
37; CHECK-NEXT:   .byte	1                               # Call site Encoding = uleb128
38; CHECK-NEXT:   .uleb128 .Laction_table_base0-.Lcst_begin2
39; CHECK-NEXT: .Lcst_begin2:
40; CHECK-NEXT:   .uleb128 foo.__part.2-foo.__part.2      # >> Call Site 1 <<
41; CHECK-NEXT:   .uleb128 .LBB_END0_2-foo.__part.2       #   Call between foo.__part.2 and .LBB_END0_2
42; CHECK-NEXT:   .byte	0                               #     has no landing pad
43; CHECK-NEXT:   .byte	0                               #   On action: cleanup
44; CHECK-NEXT: .Laction_table_base0:
45