[llvm] ce4fcea - ARM: skip debug instructions when matching jump-table patterns.
Tim Northover via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 26 05:25:56 PST 2023
Author: Tim Northover
Date: 2023-01-26T13:00:36Z
New Revision: ce4fcea59e1d5829b4355b6401d7265be23f617a
URL: https://github.com/llvm/llvm-project/commit/ce4fcea59e1d5829b4355b6401d7265be23f617a
DIFF: https://github.com/llvm/llvm-project/commit/ce4fcea59e1d5829b4355b6401d7265be23f617a.diff
LOG: ARM: skip debug instructions when matching jump-table patterns.
When working out whether we can see a compressible jump-table pattern during
ConstantIslands, we were stopping when we saw a debug instruction. Instead it's
better to keep iterating backwards to the first real instruction.
Added:
llvm/test/CodeGen/ARM/jump-table-dbg-value.mir
Modified:
llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
index 386a74877bc17..0fa7258ad1edf 100644
--- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
@@ -2278,9 +2278,12 @@ bool ARMConstantIslands::optimizeThumb2JumpTables() {
// %t = tLDRr %base, %idx
Register BaseReg = User.MI->getOperand(0).getReg();
- if (User.MI->getIterator() == User.MI->getParent()->begin())
+ MachineBasicBlock *UserMBB = User.MI->getParent();
+ MachineBasicBlock::iterator Shift = User.MI->getIterator();
+ if (Shift == UserMBB->begin())
continue;
- MachineInstr *Shift = User.MI->getPrevNode();
+
+ Shift = prev_nodbg(Shift, UserMBB->begin());
if (Shift->getOpcode() != ARM::tLSLri ||
Shift->getOperand(3).getImm() != 2 ||
!Shift->getOperand(2).isKill())
diff --git a/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir b/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir
new file mode 100644
index 0000000000000..1eda8a1e13dc1
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/jump-table-dbg-value.mir
@@ -0,0 +1,1064 @@
+# RUN: llc -run-pass=arm-cp-islands %s -o - | FileCheck %s
+--- |
+ ; ModuleID = '/Users/tim/simpler.ll'
+ source_filename = "src/app/ofw/thresholding.c"
+ target datalayout = "e-m:o-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
+ target triple = "thumbv6m-apple-unknown-macho"
+
+ ; Function Attrs: minsize nounwind optsize
+ define hidden arm_aapcscc void @handle_notify_event(i8 noundef zeroext %0) unnamed_addr #0 !dbg !317 {
+ call void @llvm.dbg.value(metadata i8 %0, metadata !322, metadata !DIExpression()), !dbg !323
+ %2 = zext i8 %0 to i32, !dbg !324
+ switch i32 %2, label %34 [
+ i32 0, label %35
+ i32 1, label %3
+ i32 3, label %4
+ i32 4, label %5
+ i32 5, label %6
+ i32 6, label %7
+ i32 7, label %8
+ i32 19, label %9
+ i32 20, label %10
+ i32 21, label %11
+ i32 22, label %12
+ i32 23, label %13
+ i32 68, label %14
+ i32 69, label %15
+ i32 70, label %16
+ i32 71, label %17
+ i32 73, label %18
+ i32 74, label %19
+ i32 75, label %20
+ i32 76, label %21
+ i32 77, label %22
+ i32 78, label %23
+ i32 79, label %24
+ i32 80, label %25
+ i32 81, label %26
+ i32 82, label %27
+ i32 83, label %28
+ i32 84, label %29
+ i32 85, label %30
+ i32 86, label %31
+ i32 87, label %32
+ i32 88, label %33
+ ], !dbg !324
+
+ 3: ; preds = %1
+ tail call arm_aapcscc void @system_set_spmi_event_low(i8 noundef zeroext 0) #3, !dbg !325
+ br label %35, !dbg !327
+
+ 4: ; preds = %1
+ tail call arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext 0) #3, !dbg !328
+ br label %35, !dbg !329
+
+ 5: ; preds = %1
+ tail call arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext 1) #3, !dbg !330
+ br label %35, !dbg !331
+
+ 6: ; preds = %1
+ tail call arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext 2) #3, !dbg !332
+ br label %35, !dbg !333
+
+ 7: ; preds = %1
+ tail call arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext 3) #3, !dbg !334
+ br label %35, !dbg !335
+
+ 8: ; preds = %1
+ tail call arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext 4) #3, !dbg !336
+ br label %35, !dbg !337
+
+ 9: ; preds = %1
+ tail call arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext 0) #3, !dbg !338
+ br label %35, !dbg !339
+
+ 10: ; preds = %1
+ tail call arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext 1) #3, !dbg !340
+ br label %35, !dbg !341
+
+ 11: ; preds = %1
+ tail call arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext 2) #3, !dbg !342
+ br label %35, !dbg !343
+
+ 12: ; preds = %1
+ tail call arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext 3) #3, !dbg !344
+ br label %35, !dbg !345
+
+ 13: ; preds = %1
+ tail call arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext 4) #3, !dbg !346
+ br label %35, !dbg !347
+
+ 14: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 0, i32 noundef 0) #3, !dbg !348
+ br label %35, !dbg !349
+
+ 15: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 1, i32 noundef 0) #3, !dbg !350
+ br label %35, !dbg !351
+
+ 16: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 2, i32 noundef 0) #3, !dbg !352
+ br label %35, !dbg !353
+
+ 17: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 3, i32 noundef 0) #3, !dbg !354
+ br label %35, !dbg !355
+
+ 18: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 0, i32 noundef 1) #3, !dbg !356
+ br label %35, !dbg !357
+
+ 19: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 1, i32 noundef 1) #3, !dbg !358
+ br label %35, !dbg !359
+
+ 20: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 2, i32 noundef 1) #3, !dbg !360
+ br label %35, !dbg !361
+
+ 21: ; preds = %1
+ tail call arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef 3, i32 noundef 1) #3, !dbg !362
+ br label %35, !dbg !363
+
+ 22: ; preds = %1
+ tail call arm_aapcscc void @system_change_gpio_trigger_state(i32 noundef 21, i32 noundef 0) #3, !dbg !364
+ br label %35, !dbg !365
+
+ 23: ; preds = %1
+ tail call arm_aapcscc void @system_change_gpio_trigger_state(i32 noundef 22, i32 noundef 0) #3, !dbg !366
+ br label %35, !dbg !367
+
+ 24: ; preds = %1
+ tail call arm_aapcscc void @system_change_gpio_trigger_state(i32 noundef 21, i32 noundef 1) #3, !dbg !368
+ br label %35, !dbg !369
+
+ 25: ; preds = %1
+ tail call arm_aapcscc void @system_change_gpio_trigger_state(i32 noundef 22, i32 noundef 1) #3, !dbg !370
+ br label %35, !dbg !371
+
+ 26: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 0, i32 noundef 0) #3, !dbg !372
+ br label %35, !dbg !373
+
+ 27: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 1, i32 noundef 0) #3, !dbg !374
+ br label %35, !dbg !375
+
+ 28: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 2, i32 noundef 0) #3, !dbg !376
+ br label %35, !dbg !377
+
+ 29: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 3, i32 noundef 0) #3, !dbg !378
+ br label %35, !dbg !379
+
+ 30: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 0, i32 noundef 1) #3, !dbg !380
+ br label %35, !dbg !381
+
+ 31: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 1, i32 noundef 1) #3, !dbg !382
+ br label %35, !dbg !383
+
+ 32: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 2, i32 noundef 1) #3, !dbg !384
+ br label %35, !dbg !385
+
+ 33: ; preds = %1
+ tail call arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef 3, i32 noundef 1) #3, !dbg !386
+ br label %35, !dbg !387
+
+ 34: ; preds = %1
+ tail call arm_aapcscc void @assert_handler(i16 noundef zeroext 11) #3, !dbg !388
+ br label %35, !dbg !392
+
+ 35: ; preds = %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %1
+ ret void, !dbg !393
+ }
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !394 arm_aapcscc void @system_set_spmi_event_low(i8 noundef zeroext) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !398 arm_aapcscc void @system_assert_virtual_wire(i8 noundef zeroext) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !399 arm_aapcscc void @system_deassert_virtual_wire(i8 noundef zeroext) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !400 arm_aapcscc void @system_change_cpu_gpu_trigger_state(i32 noundef, i32 noundef) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !405 arm_aapcscc void @system_change_gpio_trigger_state(i32 noundef, i32 noundef) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !409 arm_aapcscc void @system_change_throttle_trigger_state(i32 noundef, i32 noundef) local_unnamed_addr #1
+
+ ; Function Attrs: minsize optsize
+ declare !dbg !413 arm_aapcscc void @assert_handler(i16 noundef zeroext) local_unnamed_addr #1
+
+ ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+ declare void @llvm.dbg.value(metadata, metadata, metadata) #2
+
+ attributes #0 = { minsize nounwind optsize "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m0" "target-features"="+armv6-m,+soft-float,+strict-align,+thumb-mode,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-dsp,-fp-armv8,-fp-armv8d16,-fp-armv8d16sp,-fp-armv8sp,-fp16,-fp16fml,-fp64,-fpregs,-fullfp16,-hwdiv,-hwdiv-arm,-i8mm,-lob,-mve,-mve.fp,-neon,-pacbti,-ras,-sb,-sha2,-vfp2,-vfp2sp,-vfp3,-vfp3d16,-vfp3d16sp,-vfp3sp,-vfp4,-vfp4d16,-vfp4d16sp,-vfp4sp" "use-soft-float"="true" }
+ attributes #1 = { minsize optsize "frame-pointer"="all" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m0" "target-features"="+armv6-m,+soft-float,+strict-align,+thumb-mode,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-dsp,-fp-armv8,-fp-armv8d16,-fp-armv8d16sp,-fp-armv8sp,-fp16,-fp16fml,-fp64,-fpregs,-fullfp16,-hwdiv,-hwdiv-arm,-i8mm,-lob,-mve,-mve.fp,-neon,-pacbti,-ras,-sb,-sha2,-vfp2,-vfp2sp,-vfp3,-vfp3d16,-vfp3d16sp,-vfp3sp,-vfp4,-vfp4d16,-vfp4d16sp,-vfp4sp" "use-soft-float"="true" }
+ attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+ attributes #3 = { minsize nobuiltin nounwind optsize "no-builtins" }
+
+ !llvm.dbg.cu = !{!0}
+ !llvm.module.flags = !{!307, !308, !309, !310, !311, !312, !313, !314, !315}
+ !llvm.ident = !{!316}
+
+ !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "Apple clang version 14.0.3 (clang-1403.0.22.8)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !299, globals: !306, splitDebugInlining: false, nameTableKind: None, sysroot: "thing", sdk: "thing")
+ !1 = !DIFile(filename: "thing", directory: "thing")
+ !2 = !{!3, !39, !130, !134, !148, !160, !177, !184, !188, !192, !198}
+ !3 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 272, baseType: !5, size: 8, elements: !6)
+ !4 = !DIFile(filename: "thing", directory: "thing")
+ !5 = !DIBasicType(name: "thing", size: 8, encoding: DW_ATE_unsigned_char)
+ !6 = !{!7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27, !28, !29, !30, !31, !32, !33, !34, !35, !36, !37, !38}
+ !7 = !DIEnumerator(name: "thing", value: 0)
+ !8 = !DIEnumerator(name: "thing", value: 1)
+ !9 = !DIEnumerator(name: "thing", value: 2)
+ !10 = !DIEnumerator(name: "thing", value: 3)
+ !11 = !DIEnumerator(name: "thing", value: 3)
+ !12 = !DIEnumerator(name: "thing", value: 4)
+ !13 = !DIEnumerator(name: "thing", value: 5)
+ !14 = !DIEnumerator(name: "thing", value: 6)
+ !15 = !DIEnumerator(name: "thing", value: 20)
+ !16 = !DIEnumerator(name: "thing", value: 21)
+ !17 = !DIEnumerator(name: "thing", value: 22)
+ !18 = !DIEnumerator(name: "thing", value: 23)
+ !19 = !DIEnumerator(name: "thing", value: 24)
+ !20 = !DIEnumerator(name: "thing", value: 100)
+ !21 = !DIEnumerator(name: "thing", value: 101)
+ !22 = !DIEnumerator(name: "thing", value: 102)
+ !23 = !DIEnumerator(name: "thing", value: 103)
+ !24 = !DIEnumerator(name: "thing", value: 104)
+ !25 = !DIEnumerator(name: "thing", value: 105)
+ !26 = !DIEnumerator(name: "thing", value: 106)
+ !27 = !DIEnumerator(name: "thing", value: 150)
+ !28 = !DIEnumerator(name: "thing", value: 151)
+ !29 = !DIEnumerator(name: "thing", value: 152)
+ !30 = !DIEnumerator(name: "thing", value: 153)
+ !31 = !DIEnumerator(name: "thing", value: 170)
+ !32 = !DIEnumerator(name: "thing", value: 171)
+ !33 = !DIEnumerator(name: "thing", value: 172)
+ !34 = !DIEnumerator(name: "thing", value: 173)
+ !35 = !DIEnumerator(name: "thing", value: 180)
+ !36 = !DIEnumerator(name: "thing", value: 181)
+ !37 = !DIEnumerator(name: "thing", value: 190)
+ !38 = !DIEnumerator(name: "thing", value: 191)
+ !39 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 423, baseType: !5, size: 8, elements: !40)
+ !40 = !{!41, !42, !43, !44, !45, !46, !47, !48, !49, !50, !51, !52, !53, !54, !55, !56, !57, !58, !59, !60, !61, !62, !63, !64, !65, !66, !67, !68, !69, !70, !71, !72, !73, !74, !75, !76, !77, !78, !79, !80, !81, !82, !83, !84, !85, !86, !87, !88, !89, !90, !91, !92, !93, !94, !95, !96, !97, !98, !99, !100, !101, !102, !103, !104, !105, !106, !107, !108, !109, !110, !111, !112, !113, !114, !115, !116, !117, !118, !119, !120, !121, !122, !123, !124, !125, !126, !127, !128, !129}
+ !41 = !DIEnumerator(name: "thing", value: 0)
+ !42 = !DIEnumerator(name: "thing", value: 1)
+ !43 = !DIEnumerator(name: "thing", value: 2)
+ !44 = !DIEnumerator(name: "thing", value: 3)
+ !45 = !DIEnumerator(name: "thing", value: 4)
+ !46 = !DIEnumerator(name: "thing", value: 5)
+ !47 = !DIEnumerator(name: "thing", value: 6)
+ !48 = !DIEnumerator(name: "thing", value: 7)
+ !49 = !DIEnumerator(name: "thing", value: 8)
+ !50 = !DIEnumerator(name: "thing", value: 9)
+ !51 = !DIEnumerator(name: "thing", value: 10)
+ !52 = !DIEnumerator(name: "thing", value: 11)
+ !53 = !DIEnumerator(name: "thing", value: 12)
+ !54 = !DIEnumerator(name: "thing", value: 13)
+ !55 = !DIEnumerator(name: "thing", value: 14)
+ !56 = !DIEnumerator(name: "thing", value: 15)
+ !57 = !DIEnumerator(name: "thing", value: 16)
+ !58 = !DIEnumerator(name: "thing", value: 17)
+ !59 = !DIEnumerator(name: "thing", value: 18)
+ !60 = !DIEnumerator(name: "thing", value: 19)
+ !61 = !DIEnumerator(name: "thing", value: 20)
+ !62 = !DIEnumerator(name: "thing", value: 21)
+ !63 = !DIEnumerator(name: "thing", value: 22)
+ !64 = !DIEnumerator(name: "thing", value: 23)
+ !65 = !DIEnumerator(name: "thing", value: 24)
+ !66 = !DIEnumerator(name: "thing", value: 25)
+ !67 = !DIEnumerator(name: "thing", value: 26)
+ !68 = !DIEnumerator(name: "thing", value: 27)
+ !69 = !DIEnumerator(name: "thing", value: 28)
+ !70 = !DIEnumerator(name: "thing", value: 29)
+ !71 = !DIEnumerator(name: "thing", value: 30)
+ !72 = !DIEnumerator(name: "thing", value: 31)
+ !73 = !DIEnumerator(name: "thing", value: 32)
+ !74 = !DIEnumerator(name: "thing", value: 33)
+ !75 = !DIEnumerator(name: "thing", value: 34)
+ !76 = !DIEnumerator(name: "thing", value: 35)
+ !77 = !DIEnumerator(name: "thing", value: 36)
+ !78 = !DIEnumerator(name: "thing", value: 37)
+ !79 = !DIEnumerator(name: "thing", value: 38)
+ !80 = !DIEnumerator(name: "thing", value: 39)
+ !81 = !DIEnumerator(name: "thing", value: 40)
+ !82 = !DIEnumerator(name: "thing", value: 41)
+ !83 = !DIEnumerator(name: "thing", value: 42)
+ !84 = !DIEnumerator(name: "thing", value: 43)
+ !85 = !DIEnumerator(name: "thing", value: 44)
+ !86 = !DIEnumerator(name: "thing", value: 45)
+ !87 = !DIEnumerator(name: "thing", value: 46)
+ !88 = !DIEnumerator(name: "thing", value: 47)
+ !89 = !DIEnumerator(name: "thing", value: 48)
+ !90 = !DIEnumerator(name: "thing", value: 49)
+ !91 = !DIEnumerator(name: "thing", value: 50)
+ !92 = !DIEnumerator(name: "thing", value: 51)
+ !93 = !DIEnumerator(name: "thing", value: 52)
+ !94 = !DIEnumerator(name: "thing", value: 53)
+ !95 = !DIEnumerator(name: "thing", value: 54)
+ !96 = !DIEnumerator(name: "thing", value: 55)
+ !97 = !DIEnumerator(name: "thing", value: 56)
+ !98 = !DIEnumerator(name: "thing", value: 57)
+ !99 = !DIEnumerator(name: "thing", value: 58)
+ !100 = !DIEnumerator(name: "thing", value: 59)
+ !101 = !DIEnumerator(name: "thing", value: 60)
+ !102 = !DIEnumerator(name: "thing", value: 61)
+ !103 = !DIEnumerator(name: "thing", value: 62)
+ !104 = !DIEnumerator(name: "thing", value: 63)
+ !105 = !DIEnumerator(name: "thing", value: 64)
+ !106 = !DIEnumerator(name: "thing", value: 65)
+ !107 = !DIEnumerator(name: "thing", value: 66)
+ !108 = !DIEnumerator(name: "thing", value: 67)
+ !109 = !DIEnumerator(name: "thing", value: 68)
+ !110 = !DIEnumerator(name: "thing", value: 69)
+ !111 = !DIEnumerator(name: "thing", value: 70)
+ !112 = !DIEnumerator(name: "thing", value: 71)
+ !113 = !DIEnumerator(name: "thing", value: 72)
+ !114 = !DIEnumerator(name: "thing", value: 73)
+ !115 = !DIEnumerator(name: "thing", value: 74)
+ !116 = !DIEnumerator(name: "thing", value: 75)
+ !117 = !DIEnumerator(name: "thing", value: 76)
+ !118 = !DIEnumerator(name: "thing", value: 77)
+ !119 = !DIEnumerator(name: "thing", value: 78)
+ !120 = !DIEnumerator(name: "thing", value: 79)
+ !121 = !DIEnumerator(name: "thing", value: 80)
+ !122 = !DIEnumerator(name: "thing", value: 81)
+ !123 = !DIEnumerator(name: "thing", value: 82)
+ !124 = !DIEnumerator(name: "thing", value: 83)
+ !125 = !DIEnumerator(name: "thing", value: 84)
+ !126 = !DIEnumerator(name: "thing", value: 85)
+ !127 = !DIEnumerator(name: "thing", value: 86)
+ !128 = !DIEnumerator(name: "thing", value: 87)
+ !129 = !DIEnumerator(name: "thing", value: 88)
+ !130 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 517, baseType: !5, size: 8, elements: !131)
+ !131 = !{!132, !133}
+ !132 = !DIEnumerator(name: "thing", value: 0)
+ !133 = !DIEnumerator(name: "thing", value: 1)
+ !134 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !135, line: 23, baseType: !136, size: 32, elements: !137)
+ !135 = !DIFile(filename: "thing", directory: "thing")
+ !136 = !DIBasicType(name: "thing", size: 32, encoding: DW_ATE_unsigned)
+ !137 = !{!138, !139, !140, !141, !142, !143, !144, !145, !146, !147}
+ !138 = !DIEnumerator(name: "thing", value: 0)
+ !139 = !DIEnumerator(name: "thing", value: 1)
+ !140 = !DIEnumerator(name: "thing", value: 2)
+ !141 = !DIEnumerator(name: "thing", value: 3)
+ !142 = !DIEnumerator(name: "thing", value: 4)
+ !143 = !DIEnumerator(name: "thing", value: 5)
+ !144 = !DIEnumerator(name: "thing", value: 6)
+ !145 = !DIEnumerator(name: "thing", value: 7)
+ !146 = !DIEnumerator(name: "thing", value: 8)
+ !147 = !DIEnumerator(name: "thing", value: 9)
+ !148 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !149, line: 4, baseType: !136, size: 32, elements: !150)
+ !149 = !DIFile(filename: "thing", directory: "thing")
+ !150 = !{!151, !152, !153, !154, !155, !156, !157, !158, !159}
+ !151 = !DIEnumerator(name: "thing", value: 0)
+ !152 = !DIEnumerator(name: "thing", value: 1)
+ !153 = !DIEnumerator(name: "thing", value: 2)
+ !154 = !DIEnumerator(name: "thing", value: 3)
+ !155 = !DIEnumerator(name: "thing", value: 4)
+ !156 = !DIEnumerator(name: "thing", value: 5)
+ !157 = !DIEnumerator(name: "thing", value: 6)
+ !158 = !DIEnumerator(name: "thing", value: 7)
+ !159 = !DIEnumerator(name: "thing", value: 8)
+ !160 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 1287, baseType: !5, size: 8, align: 8, elements: !161)
+ !161 = !{!162, !163, !164, !165, !166, !167, !168, !169, !170, !171, !172, !173, !174, !175, !176}
+ !162 = !DIEnumerator(name: "thing", value: 0)
+ !163 = !DIEnumerator(name: "thing", value: 1)
+ !164 = !DIEnumerator(name: "thing", value: 2)
+ !165 = !DIEnumerator(name: "thing", value: 3)
+ !166 = !DIEnumerator(name: "thing", value: 4)
+ !167 = !DIEnumerator(name: "thing", value: 5)
+ !168 = !DIEnumerator(name: "thing", value: 6)
+ !169 = !DIEnumerator(name: "thing", value: 7)
+ !170 = !DIEnumerator(name: "thing", value: 8)
+ !171 = !DIEnumerator(name: "thing", value: 9)
+ !172 = !DIEnumerator(name: "thing", value: 10)
+ !173 = !DIEnumerator(name: "thing", value: 11)
+ !174 = !DIEnumerator(name: "thing", value: 12)
+ !175 = !DIEnumerator(name: "thing", value: 13)
+ !176 = !DIEnumerator(name: "thing", value: 14)
+ !177 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !178, line: 8, baseType: !136, size: 32, elements: !179)
+ !178 = !DIFile(filename: "thing", directory: "thing")
+ !179 = !{!180, !181, !182, !183}
+ !180 = !DIEnumerator(name: "thing", value: 0)
+ !181 = !DIEnumerator(name: "thing", value: 1)
+ !182 = !DIEnumerator(name: "thing", value: 2)
+ !183 = !DIEnumerator(name: "thing", value: 3)
+ !184 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !178, line: 22, baseType: !136, size: 32, elements: !185)
+ !185 = !{!186, !187}
+ !186 = !DIEnumerator(name: "thing", value: 0)
+ !187 = !DIEnumerator(name: "thing", value: 1)
+ !188 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !178, line: 27, baseType: !136, size: 32, elements: !189)
+ !189 = !{!190, !191}
+ !190 = !DIEnumerator(name: "thing", value: 21)
+ !191 = !DIEnumerator(name: "thing", value: 22)
+ !192 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !178, line: 15, baseType: !136, size: 32, elements: !193)
+ !193 = !{!194, !195, !196, !197}
+ !194 = !DIEnumerator(name: "thing", value: 0)
+ !195 = !DIEnumerator(name: "thing", value: 1)
+ !196 = !DIEnumerator(name: "thing", value: 2)
+ !197 = !DIEnumerator(name: "thing", value: 3)
+ !198 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 895, baseType: !136, size: 32, elements: !199)
+ !199 = !{!200, !201, !202, !203, !204, !205, !206, !207, !208, !209, !210, !211, !212, !213, !214, !215, !216, !217, !218, !219, !220, !221, !222, !223, !224, !225, !226, !227, !228, !229, !230, !231, !232, !233, !234, !235, !236, !237, !238, !239, !240, !241, !242, !243, !244, !245, !246, !247, !248, !249, !250, !251, !252, !253, !254, !255, !256, !257, !258, !259, !260, !261, !262, !263, !264, !265, !266, !267, !268, !269, !270, !271, !272, !273, !274, !275, !276, !277, !278, !279, !280, !281, !282, !283, !284, !285, !286, !287, !288, !289, !290, !291, !292, !293, !294, !295, !296, !297, !298}
+ !200 = !DIEnumerator(name: "thing", value: 0)
+ !201 = !DIEnumerator(name: "thing", value: 1)
+ !202 = !DIEnumerator(name: "thing", value: 2)
+ !203 = !DIEnumerator(name: "thing", value: 3)
+ !204 = !DIEnumerator(name: "thing", value: 4)
+ !205 = !DIEnumerator(name: "thing", value: 5)
+ !206 = !DIEnumerator(name: "thing", value: 6)
+ !207 = !DIEnumerator(name: "thing", value: 7)
+ !208 = !DIEnumerator(name: "thing", value: 8)
+ !209 = !DIEnumerator(name: "thing", value: 9)
+ !210 = !DIEnumerator(name: "thing", value: 10)
+ !211 = !DIEnumerator(name: "thing", value: 11)
+ !212 = !DIEnumerator(name: "thing", value: 12)
+ !213 = !DIEnumerator(name: "thing", value: 13)
+ !214 = !DIEnumerator(name: "thing", value: 14)
+ !215 = !DIEnumerator(name: "thing", value: 15)
+ !216 = !DIEnumerator(name: "thing", value: 16)
+ !217 = !DIEnumerator(name: "thing", value: 17)
+ !218 = !DIEnumerator(name: "thing", value: 18)
+ !219 = !DIEnumerator(name: "thing", value: 19)
+ !220 = !DIEnumerator(name: "thing", value: 20)
+ !221 = !DIEnumerator(name: "thing", value: 21)
+ !222 = !DIEnumerator(name: "thing", value: 22)
+ !223 = !DIEnumerator(name: "thing", value: 23)
+ !224 = !DIEnumerator(name: "thing", value: 24)
+ !225 = !DIEnumerator(name: "thing", value: 25)
+ !226 = !DIEnumerator(name: "thing", value: 26)
+ !227 = !DIEnumerator(name: "thing", value: 27)
+ !228 = !DIEnumerator(name: "thing", value: 28)
+ !229 = !DIEnumerator(name: "thing", value: 29)
+ !230 = !DIEnumerator(name: "thing", value: 30)
+ !231 = !DIEnumerator(name: "thing", value: 31)
+ !232 = !DIEnumerator(name: "thing", value: 32)
+ !233 = !DIEnumerator(name: "thing", value: 33)
+ !234 = !DIEnumerator(name: "thing", value: 34)
+ !235 = !DIEnumerator(name: "thing", value: 35)
+ !236 = !DIEnumerator(name: "thing", value: 36)
+ !237 = !DIEnumerator(name: "thing", value: 37)
+ !238 = !DIEnumerator(name: "thing", value: 38)
+ !239 = !DIEnumerator(name: "thing", value: 39)
+ !240 = !DIEnumerator(name: "thing", value: 40)
+ !241 = !DIEnumerator(name: "thing", value: 41)
+ !242 = !DIEnumerator(name: "thing", value: 42)
+ !243 = !DIEnumerator(name: "thing", value: 43)
+ !244 = !DIEnumerator(name: "thing", value: 44)
+ !245 = !DIEnumerator(name: "thing", value: 45)
+ !246 = !DIEnumerator(name: "thing", value: 46)
+ !247 = !DIEnumerator(name: "thing", value: 47)
+ !248 = !DIEnumerator(name: "thing", value: 48)
+ !249 = !DIEnumerator(name: "thing", value: 49)
+ !250 = !DIEnumerator(name: "thing", value: 50)
+ !251 = !DIEnumerator(name: "thing", value: 51)
+ !252 = !DIEnumerator(name: "thing", value: 52)
+ !253 = !DIEnumerator(name: "thing", value: 53)
+ !254 = !DIEnumerator(name: "thing", value: 54)
+ !255 = !DIEnumerator(name: "thing", value: 55)
+ !256 = !DIEnumerator(name: "thing", value: 56)
+ !257 = !DIEnumerator(name: "thing", value: 57)
+ !258 = !DIEnumerator(name: "thing", value: 58)
+ !259 = !DIEnumerator(name: "thing", value: 59)
+ !260 = !DIEnumerator(name: "thing", value: 60)
+ !261 = !DIEnumerator(name: "thing", value: 61)
+ !262 = !DIEnumerator(name: "thing", value: 62)
+ !263 = !DIEnumerator(name: "thing", value: 63)
+ !264 = !DIEnumerator(name: "thing", value: 64)
+ !265 = !DIEnumerator(name: "thing", value: 65)
+ !266 = !DIEnumerator(name: "thing", value: 66)
+ !267 = !DIEnumerator(name: "thing", value: 67)
+ !268 = !DIEnumerator(name: "thing", value: 68)
+ !269 = !DIEnumerator(name: "thing", value: 69)
+ !270 = !DIEnumerator(name: "thing", value: 70)
+ !271 = !DIEnumerator(name: "thing", value: 71)
+ !272 = !DIEnumerator(name: "thing", value: 72)
+ !273 = !DIEnumerator(name: "thing", value: 73)
+ !274 = !DIEnumerator(name: "thing", value: 74)
+ !275 = !DIEnumerator(name: "thing", value: 75)
+ !276 = !DIEnumerator(name: "thing", value: 76)
+ !277 = !DIEnumerator(name: "thing", value: 77)
+ !278 = !DIEnumerator(name: "thing", value: 78)
+ !279 = !DIEnumerator(name: "thing", value: 79)
+ !280 = !DIEnumerator(name: "thing", value: 80)
+ !281 = !DIEnumerator(name: "thing", value: 81)
+ !282 = !DIEnumerator(name: "thing", value: 82)
+ !283 = !DIEnumerator(name: "thing", value: 83)
+ !284 = !DIEnumerator(name: "thing", value: 84)
+ !285 = !DIEnumerator(name: "thing", value: 85)
+ !286 = !DIEnumerator(name: "thing", value: 86)
+ !287 = !DIEnumerator(name: "thing", value: 87)
+ !288 = !DIEnumerator(name: "thing", value: 88)
+ !289 = !DIEnumerator(name: "thing", value: 89)
+ !290 = !DIEnumerator(name: "thing", value: 90)
+ !291 = !DIEnumerator(name: "thing", value: 91)
+ !292 = !DIEnumerator(name: "thing", value: 92)
+ !293 = !DIEnumerator(name: "thing", value: 93)
+ !294 = !DIEnumerator(name: "thing", value: 94)
+ !295 = !DIEnumerator(name: "thing", value: 95)
+ !296 = !DIEnumerator(name: "thing", value: 96)
+ !297 = !DIEnumerator(name: "thing", value: 97)
+ !298 = !DIEnumerator(name: "thing", value: 65535)
+ !299 = !{!300, !302, !305}
+ !300 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !301, line: 39, baseType: !302)
+ !301 = !DIFile(filename: "thing", directory: "thing")
+ !302 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !303, line: 193, baseType: !304)
+ !303 = !DIFile(filename: "thing", directory: "thing")
+ !304 = !DIBasicType(name: "thing", size: 32, encoding: DW_ATE_signed)
+ !305 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 32)
+ !306 = !{}
+ !307 = !{i32 7, !"Dwarf Version", i32 4}
+ !308 = !{i32 2, !"Debug Info Version", i32 3}
+ !309 = !{i32 1, !"wchar_size", i32 4}
+ !310 = !{i32 1, !"min_enum_size", i32 4}
+ !311 = !{i32 8, !"branch-target-enforcement", i32 0}
+ !312 = !{i32 8, !"sign-return-address", i32 0}
+ !313 = !{i32 8, !"sign-return-address-all", i32 0}
+ !314 = !{i32 8, !"sign-return-address-with-bkey", i32 0}
+ !315 = !{i32 7, !"frame-pointer", i32 2}
+ !316 = !{!"Apple clang version 14.0.3 (clang-1403.0.22.8)"}
+ !317 = distinct !DISubprogram(name: "thing", scope: !1, file: !1, line: 62, type: !318, scopeLine: 62, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !321)
+ !318 = !DISubroutineType(types: !319)
+ !319 = !{null, !320}
+ !320 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !4, line: 513, baseType: !39)
+ !321 = !{!322}
+ !322 = !DILocalVariable(name: "thing", arg: 1, scope: !317, file: !1, line: 62, type: !320)
+ !323 = !DILocation(line: 0, scope: !317)
+ !324 = !DILocation(line: 63, column: 5, scope: !317)
+ !325 = !DILocation(line: 68, column: 13, scope: !326)
+ !326 = distinct !DILexicalBlock(scope: !317, file: !1, line: 63, column: 20)
+ !327 = !DILocation(line: 69, column: 13, scope: !326)
+ !328 = !DILocation(line: 72, column: 13, scope: !326)
+ !329 = !DILocation(line: 73, column: 13, scope: !326)
+ !330 = !DILocation(line: 76, column: 13, scope: !326)
+ !331 = !DILocation(line: 77, column: 13, scope: !326)
+ !332 = !DILocation(line: 80, column: 13, scope: !326)
+ !333 = !DILocation(line: 81, column: 13, scope: !326)
+ !334 = !DILocation(line: 84, column: 13, scope: !326)
+ !335 = !DILocation(line: 85, column: 13, scope: !326)
+ !336 = !DILocation(line: 88, column: 13, scope: !326)
+ !337 = !DILocation(line: 89, column: 13, scope: !326)
+ !338 = !DILocation(line: 92, column: 13, scope: !326)
+ !339 = !DILocation(line: 93, column: 13, scope: !326)
+ !340 = !DILocation(line: 96, column: 13, scope: !326)
+ !341 = !DILocation(line: 97, column: 13, scope: !326)
+ !342 = !DILocation(line: 100, column: 13, scope: !326)
+ !343 = !DILocation(line: 101, column: 13, scope: !326)
+ !344 = !DILocation(line: 104, column: 13, scope: !326)
+ !345 = !DILocation(line: 105, column: 13, scope: !326)
+ !346 = !DILocation(line: 108, column: 13, scope: !326)
+ !347 = !DILocation(line: 109, column: 13, scope: !326)
+ !348 = !DILocation(line: 112, column: 13, scope: !326)
+ !349 = !DILocation(line: 113, column: 13, scope: !326)
+ !350 = !DILocation(line: 116, column: 13, scope: !326)
+ !351 = !DILocation(line: 117, column: 13, scope: !326)
+ !352 = !DILocation(line: 120, column: 13, scope: !326)
+ !353 = !DILocation(line: 121, column: 13, scope: !326)
+ !354 = !DILocation(line: 124, column: 13, scope: !326)
+ !355 = !DILocation(line: 125, column: 13, scope: !326)
+ !356 = !DILocation(line: 128, column: 13, scope: !326)
+ !357 = !DILocation(line: 129, column: 13, scope: !326)
+ !358 = !DILocation(line: 132, column: 13, scope: !326)
+ !359 = !DILocation(line: 133, column: 13, scope: !326)
+ !360 = !DILocation(line: 136, column: 13, scope: !326)
+ !361 = !DILocation(line: 137, column: 13, scope: !326)
+ !362 = !DILocation(line: 140, column: 13, scope: !326)
+ !363 = !DILocation(line: 141, column: 13, scope: !326)
+ !364 = !DILocation(line: 144, column: 13, scope: !326)
+ !365 = !DILocation(line: 145, column: 13, scope: !326)
+ !366 = !DILocation(line: 148, column: 13, scope: !326)
+ !367 = !DILocation(line: 149, column: 13, scope: !326)
+ !368 = !DILocation(line: 152, column: 13, scope: !326)
+ !369 = !DILocation(line: 153, column: 13, scope: !326)
+ !370 = !DILocation(line: 156, column: 13, scope: !326)
+ !371 = !DILocation(line: 157, column: 13, scope: !326)
+ !372 = !DILocation(line: 160, column: 13, scope: !326)
+ !373 = !DILocation(line: 161, column: 13, scope: !326)
+ !374 = !DILocation(line: 164, column: 13, scope: !326)
+ !375 = !DILocation(line: 165, column: 13, scope: !326)
+ !376 = !DILocation(line: 168, column: 13, scope: !326)
+ !377 = !DILocation(line: 169, column: 13, scope: !326)
+ !378 = !DILocation(line: 172, column: 13, scope: !326)
+ !379 = !DILocation(line: 173, column: 13, scope: !326)
+ !380 = !DILocation(line: 176, column: 13, scope: !326)
+ !381 = !DILocation(line: 177, column: 13, scope: !326)
+ !382 = !DILocation(line: 180, column: 13, scope: !326)
+ !383 = !DILocation(line: 181, column: 13, scope: !326)
+ !384 = !DILocation(line: 184, column: 13, scope: !326)
+ !385 = !DILocation(line: 185, column: 13, scope: !326)
+ !386 = !DILocation(line: 188, column: 13, scope: !326)
+ !387 = !DILocation(line: 189, column: 13, scope: !326)
+ !388 = !DILocation(line: 192, column: 13, scope: !389)
+ !389 = distinct !DILexicalBlock(scope: !390, file: !1, line: 192, column: 13)
+ !390 = distinct !DILexicalBlock(scope: !391, file: !1, line: 192, column: 13)
+ !391 = distinct !DILexicalBlock(scope: !326, file: !1, line: 192, column: 13)
+ !392 = !DILocation(line: 193, column: 5, scope: !326)
+ !393 = !DILocation(line: 194, column: 1, scope: !317)
+ !394 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 37, type: !395, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !395 = !DISubroutineType(types: !396)
+ !396 = !{null, !397}
+ !397 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !303, line: 266, baseType: !5)
+ !398 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 38, type: !395, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !399 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 39, type: !395, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !400 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 40, type: !401, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !401 = !DISubroutineType(types: !402)
+ !402 = !{null, !403, !404}
+ !403 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !178, line: 13, baseType: !177)
+ !404 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !178, line: 25, baseType: !184)
+ !405 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 41, type: !406, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !406 = !DISubroutineType(types: !407)
+ !407 = !{null, !408, !404}
+ !408 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !178, line: 30, baseType: !188)
+ !409 = !DISubprogram(name: "thing", scope: !178, file: !178, line: 42, type: !410, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !410 = !DISubroutineType(types: !411)
+ !411 = !{null, !412, !404}
+ !412 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !178, line: 20, baseType: !192)
+ !413 = !DISubprogram(name: "thing", scope: !414, file: !414, line: 29, type: !415, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !306)
+ !414 = !DIFile(filename: "thing", directory: "thing")
+ !415 = !DISubroutineType(types: !416)
+ !416 = !{null, !417}
+ !417 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !418)
+ !418 = !DIDerivedType(tag: DW_TAG_typedef, name: "thing", file: !303, line: 243, baseType: !419)
+ !419 = !DIBasicType(name: "thing", size: 16, encoding: DW_ATE_unsigned)
+
+...
+---
+name: handle_notify_event
+alignment: 2
+exposesReturnsTwice: false
+legalized: false
+regBankSelected: false
+selected: false
+failedISel: false
+tracksRegLiveness: true
+hasWinCFI: false
+callsEHReturn: false
+callsUnwindInit: false
+hasEHCatchret: false
+hasEHScopes: false
+hasEHFunclets: false
+failsVerification: false
+tracksDebugUserValues: true
+registers: []
+liveins:
+ - { reg: '$r0', virtual-reg: '' }
+frameInfo:
+ isFrameAddressTaken: false
+ isReturnAddressTaken: false
+ hasStackMap: false
+ hasPatchPoint: false
+ stackSize: 8
+ offsetAdjustment: 0
+ maxAlignment: 4
+ adjustsStack: true
+ hasCalls: true
+ stackProtector: ''
+ functionContext: ''
+ maxCallFrameSize: 0
+ cvBytesOfCalleeSavedRegisters: 0
+ hasOpaqueSPAdjustment: false
+ hasVAStart: false
+ hasMustTailInVarArgFunc: false
+ hasTailCall: false
+ localFrameSize: 0
+ savePoint: ''
+ restorePoint: ''
+fixedStack: []
+stack:
+ - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
+ stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
+ debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
+ - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
+ stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
+ debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
+callSites: []
+debugValueSubstitutions: []
+constants: []
+machineFunctionInfo: {}
+jumpTable:
+ kind: inline
+ entries:
+ - id: 0
+ blocks: [ '%bb.37', '%bb.5', '%bb.36', '%bb.38', '%bb.40',
+ '%bb.41', '%bb.42', '%bb.43', '%bb.36', '%bb.36',
+ '%bb.36', '%bb.36', '%bb.36', '%bb.36', '%bb.36',
+ '%bb.36', '%bb.36', '%bb.36', '%bb.36', '%bb.44',
+ '%bb.46', '%bb.47', '%bb.48', '%bb.49' ]
+ - id: 1
+ blocks: [ '%bb.2', '%bb.6', '%bb.7', '%bb.8', '%bb.36',
+ '%bb.10', '%bb.11', '%bb.14', '%bb.15', '%bb.17',
+ '%bb.18', '%bb.21', '%bb.22', '%bb.24', '%bb.25',
+ '%bb.26', '%bb.27', '%bb.29', '%bb.30', '%bb.33',
+ '%bb.34' ]
+body: |
+ bb.0 (%ir-block.1):
+ successors: %bb.3(0x307c1f08), %bb.1(0x4f83e0f8)
+ liveins: $r0, $lr
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(), debug-location !323
+ frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r7, killed $lr, implicit-def $sp, implicit $sp
+ frame-setup CFI_INSTRUCTION def_cfa_offset 8
+ frame-setup CFI_INSTRUCTION offset $lr, -4
+ frame-setup CFI_INSTRUCTION offset $r7, -8
+ $r7 = frame-setup tADDrSPi $sp, 0, 14 /* CC::al */, $noreg
+ frame-setup CFI_INSTRUCTION def_cfa_register $r7
+ $r1 = tMOVr $r0, 14 /* CC::al */, $noreg, debug-location !324
+ renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 68, 14 /* CC::al */, $noreg, debug-location !324
+ tCMPi8 renamable $r1, 20, 14 /* CC::al */, $noreg, implicit-def $cpsr, debug-location !324
+ tBcc %bb.3, 8 /* CC::hi */, killed $cpsr, debug-location !324
+
+ bb.1 (%ir-block.1):
+ successors: %bb.2(0x064cbe24), %bb.6(0x064cbe24), %bb.7(0x064cbe24), %bb.8(0x064cbe24), %bb.36(0x0201253a), %bb.10(0x064cbe24), %bb.11(0x064cbe24), %bb.14(0x064cbe24), %bb.15(0x064cbe24), %bb.17(0x064cbe24), %bb.18(0x064cbe24), %bb.21(0x064cbe24), %bb.22(0x064cbe24), %bb.24(0x064cbe24), %bb.25(0x064cbe24), %bb.26(0x064cbe24), %bb.27(0x064cbe24), %bb.29(0x064cbe24), %bb.30(0x064cbe24), %bb.33(0x064cbe24), %bb.34(0x064cbe24)
+ liveins: $r1
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(), debug-location !323
+ renamable $r0, dead $cpsr = tLSLri killed renamable $r1, 2, 14 /* CC::al */, $noreg
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1 = tLEApcrelJT %jump-table.1, 14 /* CC::al */, $noreg
+ renamable $r0 = tLDRr renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg :: (load (s32) from jump-table)
+ renamable $r0, dead $cpsr = tADDrr killed renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg
+ tBR_JTr killed renamable $r0, %jump-table.1
+ ; CHECK: tTBB_JT $pc, killed $r1, %jump-table.1, 0
+
+ bb.2 (%ir-block.14):
+ successors: %bb.12(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.12, 14 /* CC::al */, $noreg
+
+ bb.3 (%ir-block.1):
+ successors: %bb.36(0x04ec4ec5), %bb.4(0x7b13b13b)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(), debug-location !323
+ tCMPi8 renamable $r0, 23, 14 /* CC::al */, $noreg, implicit-def $cpsr
+ tBcc %bb.36, 8 /* CC::hi */, killed $cpsr
+
+ bb.4 (%ir-block.1):
+ successors: %bb.37(0x0a7e91a6), %bb.5(0x0a7e91a6), %bb.36(0x02112c34), %bb.38(0x0a7e91a6), %bb.40(0x0a7e91a6), %bb.41(0x0a7e91a6), %bb.42(0x0a7e91a6), %bb.43(0x0a7e91a6), %bb.44(0x0a7e91a6), %bb.46(0x0a7e91a6), %bb.47(0x0a7e91a6), %bb.48(0x0a7e91a6), %bb.49(0x0a7e91a6)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(), debug-location !323
+ renamable $r0, dead $cpsr = tLSLri killed renamable $r0, 2, 14 /* CC::al */, $noreg
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1 = tLEApcrelJT %jump-table.0, 14 /* CC::al */, $noreg
+ renamable $r0 = tLDRr renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg :: (load (s32) from jump-table)
+ renamable $r0, dead $cpsr = tADDrr killed renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg
+ tBR_JTr killed renamable $r0, %jump-table.0
+ ; CHECK: tTBB_JT $pc, killed $r0, %jump-table.0, 1
+
+ bb.5 (%ir-block.3):
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tBL 14 /* CC::al */, $noreg, @system_set_spmi_event_low, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp, debug-location !325
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.6 (%ir-block.15):
+ successors: %bb.9(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+ tB %bb.9, 14 /* CC::al */, $noreg
+
+ bb.7 (%ir-block.16):
+ successors: %bb.9(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.9, 14 /* CC::al */, $noreg
+
+ bb.8 (%ir-block.17):
+ successors: %bb.9(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+
+ bb.9 (%ir-block.35):
+ successors: %bb.13(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.13, 14 /* CC::al */, $noreg
+
+ bb.10 (%ir-block.18):
+ successors: %bb.16(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.16, 14 /* CC::al */, $noreg
+
+ bb.11 (%ir-block.19):
+ successors: %bb.12(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+
+ bb.12 (%ir-block.35):
+ successors: %bb.13(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ $r1 = tMOVr $r0, 14 /* CC::al */, $noreg, debug-location !DILocation(line: 0, scope: !326)
+ tB %bb.13, 14 /* CC::al */, $noreg
+
+ bb.14 (%ir-block.20):
+ successors: %bb.16(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.16, 14 /* CC::al */, $noreg
+
+ bb.15 (%ir-block.21):
+ successors: %bb.16(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+
+ bb.16 (%ir-block.35):
+ successors: %bb.13(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+
+ bb.13 (%ir-block.35):
+ liveins: $r0, $r1
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ tBL 14 /* CC::al */, $noreg, @system_change_cpu_gpu_trigger_state, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit-def $sp, debug-location !DILocation(line: 0, scope: !326)
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.17 (%ir-block.22):
+ successors: %bb.19(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 21, 14 /* CC::al */, $noreg
+ tB %bb.19, 14 /* CC::al */, $noreg
+
+ bb.18 (%ir-block.23):
+ successors: %bb.19(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 22, 14 /* CC::al */, $noreg
+
+ bb.19 (%ir-block.35):
+ successors: %bb.20(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.20, 14 /* CC::al */, $noreg
+
+ bb.21 (%ir-block.24):
+ successors: %bb.23(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 21, 14 /* CC::al */, $noreg
+ tB %bb.23, 14 /* CC::al */, $noreg
+
+ bb.22 (%ir-block.25):
+ successors: %bb.23(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 22, 14 /* CC::al */, $noreg
+
+ bb.23 (%ir-block.35):
+ successors: %bb.20(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+
+ bb.20 (%ir-block.35):
+ liveins: $r0, $r1
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ tBL 14 /* CC::al */, $noreg, @system_change_gpio_trigger_state, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit-def $sp, debug-location !DILocation(line: 0, scope: !326)
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.24 (%ir-block.26):
+ successors: %bb.31(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.31, 14 /* CC::al */, $noreg
+
+ bb.25 (%ir-block.27):
+ successors: %bb.28(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+ tB %bb.28, 14 /* CC::al */, $noreg
+
+ bb.26 (%ir-block.28):
+ successors: %bb.28(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.28, 14 /* CC::al */, $noreg
+
+ bb.27 (%ir-block.29):
+ successors: %bb.28(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+
+ bb.28 (%ir-block.35):
+ successors: %bb.32(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.32, 14 /* CC::al */, $noreg
+
+ bb.29 (%ir-block.30):
+ successors: %bb.35(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.35, 14 /* CC::al */, $noreg
+
+ bb.30 (%ir-block.31):
+ successors: %bb.31(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+
+ bb.31 (%ir-block.35):
+ successors: %bb.32(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ $r1 = tMOVr $r0, 14 /* CC::al */, $noreg, debug-location !DILocation(line: 0, scope: !326)
+ tB %bb.32, 14 /* CC::al */, $noreg
+
+ bb.33 (%ir-block.32):
+ successors: %bb.35(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.35, 14 /* CC::al */, $noreg
+
+ bb.34 (%ir-block.33):
+ successors: %bb.35(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+
+ bb.35 (%ir-block.35):
+ successors: %bb.32(0x80000000)
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r1, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+
+ bb.32 (%ir-block.35):
+ liveins: $r0, $r1
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ tBL 14 /* CC::al */, $noreg, @system_change_throttle_trigger_state, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit-def $sp, debug-location !DILocation(line: 0, scope: !326)
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.36 (%ir-block.34):
+ successors: %bb.37(0x80000000)
+
+ renamable $r0, dead $cpsr = tMOVi8 11, 14 /* CC::al */, $noreg
+ tBL 14 /* CC::al */, $noreg, @assert_handler, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp, debug-location !388
+
+ bb.37 (%ir-block.35):
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.38 (%ir-block.4):
+ successors: %bb.39(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.39, 14 /* CC::al */, $noreg
+
+ bb.40 (%ir-block.5):
+ successors: %bb.39(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+ tB %bb.39, 14 /* CC::al */, $noreg
+
+ bb.41 (%ir-block.6):
+ successors: %bb.39(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.39, 14 /* CC::al */, $noreg
+
+ bb.42 (%ir-block.7):
+ successors: %bb.39(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+ tB %bb.39, 14 /* CC::al */, $noreg
+
+ bb.43 (%ir-block.8):
+ successors: %bb.39(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 4, 14 /* CC::al */, $noreg
+
+ bb.39 (%ir-block.4):
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ tBL 14 /* CC::al */, $noreg, @system_assert_virtual_wire, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp, debug-location !DILocation(line: 0, scope: !326)
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+ bb.44 (%ir-block.9):
+ successors: %bb.45(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
+ tB %bb.45, 14 /* CC::al */, $noreg
+
+ bb.46 (%ir-block.10):
+ successors: %bb.45(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
+ tB %bb.45, 14 /* CC::al */, $noreg
+
+ bb.47 (%ir-block.11):
+ successors: %bb.45(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg
+ tB %bb.45, 14 /* CC::al */, $noreg
+
+ bb.48 (%ir-block.12):
+ successors: %bb.45(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg
+ tB %bb.45, 14 /* CC::al */, $noreg
+
+ bb.49 (%ir-block.13):
+ successors: %bb.45(0x80000000)
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ renamable $r0, dead $cpsr = tMOVi8 4, 14 /* CC::al */, $noreg
+
+ bb.45 (%ir-block.9):
+ liveins: $r0
+
+ DBG_VALUE $r0, $noreg, !322, !DIExpression(DW_OP_LLVM_entry_value, 1), debug-location !323
+ tBL 14 /* CC::al */, $noreg, @system_deassert_virtual_wire, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit-def $sp, debug-location !DILocation(line: 0, scope: !326)
+ frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc, implicit-def $sp, implicit $sp, debug-location !393
+
+...
More information about the llvm-commits
mailing list