Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad machine code: Virtual register defs don't dominate all uses. #50858

Closed
petrhosek opened this issue Aug 18, 2021 · 6 comments
Closed

Bad machine code: Virtual register defs don't dominate all uses. #50858

petrhosek opened this issue Aug 18, 2021 · 6 comments
Assignees
Labels
bugzilla Issues migrated from bugzilla llvm:codegen

Comments

@petrhosek
Copy link
Member

Bugzilla Link 51516
Resolution FIXED
Resolved on Aug 23, 2021 12:25
Version trunk
OS All
Attachments Clang crash reproducer
CC @RKSimon,@rampitec

Extended Description

This appears to have been introduced by https://reviews.llvm.org/D106408.

The error we see when running the attached Clang crash reproducer is:

# Machine code for function _ZN2nl5Weave20WeaveExchangeManager12AllocContextEv: NoPHIs, TracksLiveness, TiedOpsRewritten
Frame Objects:
  fi#0: size=8, align=8, at location [SP]
  fi#1: size=8, align=8, at location [SP]
  fi#2: variable sized, align=32, at location [SP]
  fi#3: size=8, align=8, at location [SP]
  fi#4: size=8, align=8, at location [SP]
Function Live Ins: $x0 in %33

bb.0.entry:
  successors: %bb.2(0x50000000), %bb.1(0x30000000); %bb.2(62.50%), %bb.1(37.50%)
  liveins: $x0
  %179:gpr64common = MOVbaseTLS
  %36:gpr64 = LDURXi %179:gpr64common, -16 :: (volatile load (s64) from %ir.2)
  STRXui %36:gpr64, %stack.0.StackGuardSlot, 0 :: (volatile store (s64) into %stack.0.StackGuardSlot)
  %37:gpr64common = LOADgot target-flags(aarch64-got) @​__asan_option_detect_stack_use_after_return
  %38:gpr32 = LDRWui %37:gpr64common, 0 :: (dereferenceable load (s32) from @​__asan_option_detect_stack_use_after_return)
  %33:gpr64common = COPY $x0
  CBNZW %38:gpr32, %bb.2

bb.1:
; predecessors: %bb.0
  successors: %bb.3(0x80000000); %bb.3(100.00%)

  STRXui %179:gpr64common, %stack.3, 0 :: (store (s64) into %stack.3)
  %1:gpr64common = COPY $xzr
  B %bb.3

bb.2 (%ir-block.5):
; predecessors: %bb.0
  successors: %bb.3(0x80000000); %bb.3(100.00%)

  STRXui %179:gpr64common, %stack.3, 0 :: (store (s64) into %stack.3)
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
  dead $w0 = MOVi32imm 288, implicit-def $x0
  BL @&#8203;__asan_stack_malloc_3, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, implicit-def $x0
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
  %1:gpr64common = COPY $x0

bb.3 (%ir-block.7):
; predecessors: %bb.2, %bb.1
  successors: %bb.4(0x30000000), %bb.5(0x50000000); %bb.4(37.50%), %bb.5(62.50%)

  %3:gpr64common = COPY %1:gpr64common
  CBNZX %1:gpr64common, %bb.5
  B %bb.4

bb.4 (%ir-block.10):
; predecessors: %bb.3
  successors: %bb.5(0x80000000); %bb.5(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
  %44:gpr64common = SUBXri $sp, 288, 0
  %3:gpr64common = ANDXri %44:gpr64common, 7930
  $sp = COPY %3:gpr64common
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp

bb.5 (%ir-block.12):
; predecessors: %bb.3, %bb.4
  successors: %bb.6(0x80000000); %bb.6(100.00%)

  %10:gpr64common = COPY $xzr
  STRXui %3:gpr64common, %stack.1.asan_local_stack_base, 0 :: (store (s64) into %ir.asan_local_stack_base)
  dead %187:gpr64sp = ADDXri %3:gpr64common, 32, 0
  undef %49.sub_32:gpr64 = MOVi32imm 1102416563
  %50:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;___asan_gen_.74, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;___asan_gen_.74
  %51:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;_ZN2nl5Weave20WeaveExchangeManager12AllocContextEv, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;_ZN2nl5Weave20WeaveExchangeManager12AllocContextEv
  %5:gpr64common = UBFMXri %3:gpr64common, 3, 63
  %53:gpr64 = MOVi64imm -506381209984437775
  %54:gpr64 = MOVi64imm -506381209866536712
  %55:gpr64 = MOVi64imm -868082073972705032
  %56:gpr32 = MOVi32imm -202116109
  %57:gpr64common = nuw ADDXri %33:gpr64common, 836, 0, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  STRXui %49:gpr64, %3:gpr64common, 0 :: (store (s64) into %ir.16)
  STRXui %50:gpr64, %3:gpr64common, 1 :: (store (s64) into %ir.18)
  %59:gpr64common = nuw ADDXri %33:gpr64common, 648, 0, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  STRXui %51:gpr64, %3:gpr64common, 2 :: (store (s64) into %ir.20)
  %73:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;130, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;130
  STRXui %53:gpr64, %5:gpr64common, 0 :: (store (s64) into %ir.23, align 1)
  STRXui %54:gpr64, %5:gpr64common, 1 :: (store (s64) into %ir.25, align 1)
  STRXui %54:gpr64, %5:gpr64common, 2 :: (store (s64) into %ir.27, align 1)
  STRXui %55:gpr64, %5:gpr64common, 3 :: (store (s64) into %ir.29, align 1)
  %161:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;123, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;123
  STRWui %56:gpr32, %5:gpr64common, 8 :: (store (s32) into %ir.31, align 1)
  %9:gpr64common = UBFMXri %57:gpr64common, 3, 63, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  %8:gpr64common = UBFMXri %59:gpr64common, 3, 63, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  %165:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;122, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;122

bb.6.for.body:
; predecessors: %bb.5, %bb.39
  successors: %bb.8(0x7ffff800), %bb.7(0x00000800); %bb.8(100.00%), %bb.7(0.00%)

  %62:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %169:gpr64common = ADDXri %62:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %13:gpr64common = ANDSXri %169:gpr64common, 4098, implicit-def $nzcv, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  Bcc 0, %bb.8, implicit killed $nzcv, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  B %bb.7, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.7.handler.type_mismatch4:
; predecessors: %bb.6
  successors: %bb.8(0x80000000); %bb.8(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  $x1 = ADDXri %62:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %172:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;122, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;122, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  $x0 = COPY %172:gpr64, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %169:gpr64common = ADDXri %62:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %173:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;122, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;122
  %165:gpr64 = COPY %173:gpr64
  %177:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;123, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;123
  %161:gpr64 = COPY %177:gpr64
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.8.cont5:
; predecessors: %bb.6, %bb.7
  successors: %bb.10(0x7ffff800), %bb.9(0x00000800); %bb.10(100.00%), %bb.9(0.00%)

  CBZX %13:gpr64common, %bb.10, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  B %bb.9, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.9.handler.type_mismatch6:
; predecessors: %bb.8
  successors: %bb.10(0x80000000); %bb.10(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  $x1 = ADDXri %62:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %174:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;123, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;123, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  $x0 = COPY %174:gpr64, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %169:gpr64common = ADDXri %62:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %176:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;122, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;122
  %165:gpr64 = COPY %176:gpr64
  %175:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;123, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;123
  %161:gpr64 = COPY %175:gpr64
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.10.cont7:
; predecessors: %bb.8, %bb.9
  successors: %bb.11(0x00000000), %bb.12(0x80000000); %bb.11(0.00%), %bb.12(100.00%)

  %68:gpr32 = LDRBBui %8:gpr64common, 0, debug-location !&#8203;5347 :: (load (s8) from %ir.44); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  CBZW %68:gpr32, %bb.12, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  B %bb.11, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.11 (%ir-block.47):
; predecessors: %bb.10

  %152:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  %153:gpr64sp = ADDXri %152:gpr64common, 648, 0, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  $x0 = COPY %153:gpr64sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  nomerge BL @&#8203;__asan_report_load8, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5347; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17

bb.12 (%ir-block.51):
; predecessors: %bb.10
  successors: %bb.13(0x04000000), %bb.36(0x7c000000); %bb.13(3.12%), %bb.36(96.88%)

  %69:gpr64 = LDRXui %62:gpr64common, 81, debug-location !&#8203;5347 :: (load (s64) from %ir.52, !tbaa !&#8203;5350); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:17
  CBNZX %69:gpr64, %bb.36, debug-location !&#8203;5352; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:13
  B %bb.13, debug-location !&#8203;5352; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:558:13

bb.13.if.then:
; predecessors: %bb.12
  successors: %bb.15(0x7ffff800), %bb.14(0x00000800); %bb.15(100.00%), %bb.14(0.00%)

  %189:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  STURXi $xzr, %5:gpr64common, 12, debug-location !&#8203;5353 :: (store (s64) into %ir.62 + 8, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  STURXi $xzr, %5:gpr64common, 4, debug-location !&#8203;5353 :: (store (s64) into %ir.62, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  %183:gpr64common = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  STRXui %183:gpr64common, %stack.4, 0 :: (store (s64) into %stack.4)
  STURXi $xzr, %5:gpr64common, 20, debug-location !&#8203;5353 :: (store (s64) into %ir.66, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  $x0 = ADDXri %3:gpr64common, 32, 0, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  dead $w2 = MOVi32imm 192, implicit-def $x2, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  $w1 = COPY $wzr, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  BL @&#8203;__asan_memset, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $w1, implicit $x2, implicit-def $sp, implicit-def dead $x0, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  CBZX %13:gpr64common, %bb.15, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  B %bb.14, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17

bb.14.handler.type_mismatch11:
; predecessors: %bb.13
  successors: %bb.16(0x80000000); %bb.16(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  %92:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;124, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;124, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  $x1 = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  $x0 = COPY %92:gpr64, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  $x0 = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  $x1 = ADDXri %3:gpr64common, 32, 0, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  BL @&#8203;_ZN2nl5Weave15ExchangeContextaSEOS1_, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, implicit-def dead $x0, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5355; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17
  %94:gpr64 = MOVi64imm -506381209866536712
  STURXi %94:gpr64, %5:gpr64common, 4, debug-location !&#8203;5356 :: (store (s64) into %ir.73, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13
  STURXi %94:gpr64, %5:gpr64common, 12, debug-location !&#8203;5356 :: (store (s64) into %ir.75, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13
  STURXi %94:gpr64, %5:gpr64common, 20, debug-location !&#8203;5356 :: (store (s64) into %ir.77, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  %95:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;125, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;125, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  $x1 = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  $x0 = COPY %95:gpr64, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17
  B %bb.16, debug-location !&#8203;5357; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:17

bb.15.cont14.critedge:
; predecessors: %bb.13
  successors: %bb.16(0x80000000); %bb.16(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  $x0 = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  dead $w2 = MOVi32imm 32, implicit-def $x2, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  $w1 = COPY $wzr, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  BL @&#8203;__asan_memset, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $w1, implicit $x2, implicit-def $sp, implicit-def dead $x0, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5369; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  $x0 = ADDXri %189:gpr64common, 680, 0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  %188:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  %186:gpr64sp = ADDXri %3:gpr64common, 32, 0
  $x1 = nuw ADDXri %186:gpr64sp, 32, 0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  BL @&#8203;_ZN2nl4Inet9IPAddressaSERKS1_, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, implicit-def dead $x0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  %105:gpr64sp = nuw ADDXri %186:gpr64sp, 48, 0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  %189:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  $x0 = ADDXri %189:gpr64common, 696, 0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  dead $w2 = MOVi32imm 141, implicit-def $x2, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  $x1 = COPY %105:gpr64sp, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  BL @&#8203;__asan_memcpy, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2, implicit-def $sp, implicit-def dead $x0, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5370; arm64-asan-ubsan/gen/third_party/openweave-core/src/include/Weave/Core/WeaveExchangeMgr.h:120:21 @[ ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:17 ]
  %110:gpr64 = MOVi64imm -506381209866536712
  STURXi %110:gpr64, %5:gpr64common, 4, debug-location !&#8203;5356 :: (store (s64) into %ir.87, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13
  STURXi %110:gpr64, %5:gpr64common, 12, debug-location !&#8203;5356 :: (store (s64) into %ir.89, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13
  STURXi %110:gpr64, %5:gpr64common, 20, debug-location !&#8203;5356 :: (store (s64) into %ir.91, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:13

bb.16.cont14:
; predecessors: %bb.14, %bb.15
  successors: %bb.20(0x7ffff800), %bb.17(0x00000800); %bb.20(100.00%), %bb.17(0.00%)

  CBZX %13:gpr64common, %bb.20, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  B %bb.17, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29

bb.17.handler.type_mismatch16:
; predecessors: %bb.16
  successors: %bb.18(0x00000000), %bb.19(0x80000000); %bb.18(0.00%), %bb.19(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %111:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;126, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;126, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %188:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19
  $x1 = ADDXri %189:gpr64common, 648, 0, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  $x0 = COPY %111:gpr64, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %114:gpr32 = LDRBBui %8:gpr64common, 0, debug-location !&#8203;5372 :: (load (s8) from %ir.96); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  CBZW %114:gpr32, %bb.19, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  B %bb.18, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29

bb.18 (%ir-block.99):
; predecessors: %bb.17

  %112:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %18:gpr64sp = ADDXri %112:gpr64common, 648, 0, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  $x0 = COPY %18:gpr64sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  nomerge BL @&#8203;__asan_report_store8, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29

bb.19 (%ir-block.100):
; predecessors: %bb.17
  successors: %bb.23(0x80000000); %bb.23(100.00%)

  STRXui %33:gpr64common, %188:gpr64common, 81, debug-location !&#8203;5372 :: (store (s64) into %ir.101, !tbaa !&#8203;5350); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  %115:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;127, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;127, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  $x0 = COPY %115:gpr64, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  %182:gpr64common = LDRXui %stack.4, 0 :: (load (s64) from %stack.4)
  $x1 = COPY %182:gpr64common, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17
  B %bb.23, debug-location !&#8203;5373; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:17

bb.20.cont19.critedge:
; predecessors: %bb.16
  successors: %bb.21(0x00000000), %bb.22(0x80000000); %bb.21(0.00%), %bb.22(100.00%)

  %118:gpr32 = LDRBBui %8:gpr64common, 0, debug-location !&#8203;5372 :: (load (s8) from %ir.105); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  CBZW %118:gpr32, %bb.22, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  B %bb.21, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29

bb.21 (%ir-block.108):
; predecessors: %bb.20

  %116:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %19:gpr64sp = ADDXri %116:gpr64common, 648, 0, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  $x0 = COPY %19:gpr64sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  nomerge BL @&#8203;__asan_report_store8, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5372; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29

bb.22 (%ir-block.109):
; predecessors: %bb.20
  successors: %bb.23(0x80000000); %bb.23(100.00%)

  STRXui %33:gpr64common, %189:gpr64common, 81, debug-location !&#8203;5372 :: (store (s64) into %ir.110, !tbaa !&#8203;5350); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:561:29
  %182:gpr64common = ADDXri %188:gpr64common, 648, 0, debug-location !&#8203;5353; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:560:19

bb.23.cont19:
; predecessors: %bb.19, %bb.22
  successors: %bb.25(0x7ffff800), %bb.24(0x00000800); %bb.25(100.00%), %bb.24(0.00%)

  %119:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  %171:gpr64common = ADDXri %119:gpr64common, 836, 0, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  $xzr = ANDSXri %171:gpr64common, 4097, implicit-def $nzcv, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  Bcc 0, %bb.25, implicit killed $nzcv, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  B %bb.24, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27

bb.24.handler.type_mismatch20:
; predecessors: %bb.23
  successors: %bb.25(0x80000000); %bb.25(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  %122:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;128, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;128, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  $x1 = ADDXri %119:gpr64common, 836, 0, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  $x0 = COPY %122:gpr64, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  %171:gpr64common = ADDXri %119:gpr64common, 836, 0, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27

bb.25.cont21:
; predecessors: %bb.23, %bb.24
  successors: %bb.26(0x000053e3), %bb.28(0x7fffac1d); %bb.26(0.00%), %bb.28(100.00%)

  %125:gpr32 = LDRSBWui %9:gpr64common, 0, debug-location !&#8203;5374 :: (load (s8) from %ir.120); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  CBZW %125:gpr32, %bb.28, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  B %bb.26, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27

bb.26 (%ir-block.123):
; predecessors: %bb.25
  successors: %bb.27(0x00000000), %bb.28(0x80000000); %bb.27(0.00%), %bb.28(100.00%)

  %127:gpr32common = ANDWri %171.sub_32:gpr64common, 2, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  dead $wzr = SUBSWrr %127:gpr32common, %125:gpr32, implicit-def $nzcv, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  Bcc 11, %bb.28, implicit killed $nzcv, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  B %bb.27, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27

bb.27 (%ir-block.127):
; predecessors: %bb.26

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  $x0 = COPY %171:gpr64common, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  nomerge BL @&#8203;__asan_report_store1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5374; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27

bb.28 (%ir-block.128):
; predecessors: %bb.25, %bb.26
  successors: %bb.29(0x00000000), %bb.30(0x80000000); %bb.29(0.00%), %bb.30(100.00%)

  %129:gpr32 = MOVi32imm 1
  %24:gpr64common = nuw ADDXri %33:gpr64common, 3720, 0, debug-location !&#8203;5376; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:13
  STRBBui %129:gpr32, %119:gpr64common, 836, debug-location !&#8203;5374 :: (store (s8) into %ir.sunkaddr93, align 4, !tbaa !&#8203;5375); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:562:27
  %131:gpr64common = UBFMXri %24:gpr64common, 3, 63, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  %132:gpr32 = LDRBBui %131:gpr64common, 0, debug-location !&#8203;5377 :: (load (s8) from %ir.131); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  CBZW %132:gpr32, %bb.30, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  B %bb.29, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27

bb.29 (%ir-block.134):
; predecessors: %bb.28

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  $x0 = COPY %24:gpr64common, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  nomerge BL @&#8203;__asan_report_load8, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27

bb.30 (%ir-block.136):
; predecessors: %bb.28
  successors: %bb.31(0x00000000), %bb.32(0x80000000); %bb.31(0.00%), %bb.32(100.00%)

  %133:gpr64common = LDRXui %33:gpr64common, 465, debug-location !&#8203;5377 :: (dereferenceable load (s64) from %ir.138, !tbaa !&#8203;5081); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  %134:gpr64common = ADDXri %133:gpr64common, 1, 0, debug-location !&#8203;5377; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  STRXui %134:gpr64common, %33:gpr64common, 465, debug-location !&#8203;5377 :: (store (s64) into %ir.138, !tbaa !&#8203;5081); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:563:27
  %135:gpr64common = UBFMXri %33:gpr64common, 3, 63, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  %136:gpr32 = LDRBBui %135:gpr64common, 0, debug-location !&#8203;5378 :: (load (s8) from %ir.142); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  CBZW %136:gpr32, %bb.32, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  B %bb.31, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13

bb.31 (%ir-block.145):
; predecessors: %bb.30

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  $x0 = COPY %33:gpr64common, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  nomerge BL @&#8203;__asan_report_load8, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5378; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13

bb.32 (%ir-block.148):
; predecessors: %bb.30
  successors: %bb.33(0x7ffffc00), %bb.34(0x00000400); %bb.33(100.00%), %bb.34(0.00%)

  %25:gpr64 = LDRXui %33:gpr64common, 0, debug-location !&#8203;5378 :: (dereferenceable load (s64) from %ir.149, !tbaa !&#8203;5064); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:13
  $xzr = ANDSXri %25:gpr64, 4098, implicit-def $nzcv, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  Bcc 1, %bb.34, implicit killed $nzcv, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  B %bb.33, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27

bb.33 (%ir-block.148):
; predecessors: %bb.32
  successors: %bb.35(0x7ffffc00), %bb.34(0x00000400); %bb.35(100.00%), %bb.34(0.00%)

  CBNZX %25:gpr64, %bb.35, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  B %bb.34, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27

bb.34.handler.type_mismatch28:
; predecessors: %bb.32, %bb.33
  successors: %bb.35(0x80000000); %bb.35(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  %139:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;129, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;129, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  $x0 = COPY %139:gpr64, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  $x1 = COPY %25:gpr64, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  BL @&#8203;__ubsan_handle_type_mismatch_v1, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27

bb.35.cont29:
; predecessors: %bb.33, %bb.34
  successors: %bb.41(0x80000000); %bb.41(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  $x0 = COPY %25:gpr64, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  BL @&#8203;_ZN2nl5Weave17WeaveMessageLayer33SignalMessageLayerActivityChangedEv, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5379; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:564:27
  B %bb.41

bb.36.for.inc:
; predecessors: %bb.12
  successors: %bb.37(0x7ffffc00), %bb.38(0x00000400); %bb.37(100.00%), %bb.38(0.00%)

  %70:gpr64common = ADDXrr %33:gpr64common, %10:gpr64common, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  dead $xzr = ADDSXri %169:gpr64common, 193, 0, implicit-def $nzcv, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  %27:gpr64common = ADDXri %70:gpr64common, 840, 0, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  Bcc 8, %bb.38, implicit killed $nzcv, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  B %bb.37, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68

bb.37.for.inc:
; predecessors: %bb.36
  successors: %bb.39(0x7ffffc00), %bb.38(0x00000400); %bb.39(100.00%), %bb.38(0.00%)

  CBNZX %27:gpr64common, %bb.39, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  B %bb.38, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68

bb.38.handler.pointer_overflow:
; predecessors: %bb.36, %bb.37
  successors: %bb.39(0x80000000); %bb.39(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  %163:gpr64 = COPY %161:gpr64
  %167:gpr64 = COPY %165:gpr64
  $x0 = COPY %73:gpr64, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  $x1 = COPY %169:gpr64common, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  $x2 = COPY %27:gpr64common, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  BL @&#8203;__ubsan_handle_pointer_overflow, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2, implicit-def $sp, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68
  %165:gpr64 = COPY %167:gpr64
  %161:gpr64 = COPY %163:gpr64
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5380; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:68

bb.39.cont31:
; predecessors: %bb.37, %bb.38
  successors: %bb.40(0x04000000), %bb.6(0x7c000000); %bb.40(3.12%), %bb.6(96.88%)

  %10:gpr64common = nuw nsw ADDXri %10:gpr64common, 192, 0, debug-location !&#8203;5381; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:23
  %9:gpr64common = nuw nsw ADDXri %9:gpr64common, 24, 0, debug-location !&#8203;5381; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:23
  dead $xzr = SUBSXri %10:gpr64common, 3072, 0, implicit-def $nzcv, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  %8:gpr64common = nuw nsw ADDXri %8:gpr64common, 24, 0, debug-location !&#8203;5381; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:23
  Bcc 1, %bb.6, implicit killed $nzcv, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5
  B %bb.40, debug-location !&#8203;5346; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:557:5

bb.40.for.end:
; predecessors: %bb.39
  successors: %bb.41(0x80000000); %bb.41(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  %79:gpr64 = MOVaddr target-flags(aarch64-page) @&#8203;___asan_gen_.68, target-flags(aarch64-pageoff, aarch64-nc) @&#8203;___asan_gen_.68, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  %80:gpr64 = MOVaddr target-flags(aarch64-page) @.str.2, target-flags(aarch64-pageoff, aarch64-nc) @.str.2, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  $w0 = MOVi32imm 5, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  $w1 = MOVi32imm 1, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  $w3 = MOVi32imm 572, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  $x2 = COPY %79:gpr64, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  $x4 = COPY %80:gpr64, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  BL @&#8203;_ZN2nl5Weave7Logging3LogEhhPKcjS3_z, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $w0, implicit $w1, implicit $x2, implicit $w3, implicit $x4, implicit-def $sp, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5384; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:572:5
  %182:gpr64common = COPY $xzr

bb.41.cleanup32:
; predecessors: %bb.40, %bb.35
  successors: %bb.42(0x50000000), %bb.43(0x30000000); %bb.42(62.50%), %bb.43(37.50%)

  undef %141.sub_32:gpr64 = MOVi32imm 1172321806
  STRXui %141:gpr64, %3:gpr64common, 0, debug-location !&#8203;5386 :: (store (s64) into %ir.165); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  CBZX %1:gpr64common, %bb.43, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  B %bb.42, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1

bb.42 (%ir-block.168):
; predecessors: %bb.41
  successors: %bb.44(0x80000000); %bb.44(100.00%)

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  dead $w1 = MOVi32imm 64, implicit-def $x1, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  $x0 = COPY %5:gpr64common, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  BL @&#8203;__asan_set_shadow_f5, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $sp, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  %146:gpr64common = LDRXui %1:gpr64common, 63, debug-location !&#8203;5386 :: (load (s64) from %ir.170); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  STRBBui $wzr, %146:gpr64common, 0, debug-location !&#8203;5386 :: (store (s8) into %ir.172); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  %180:gpr64common = LDRXui %stack.3, 0 :: (load (s64) from %stack.3)
  B %bb.44, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1

bb.43 (%ir-block.173):
; predecessors: %bb.41
  successors: %bb.44(0x80000000); %bb.44(100.00%)

  %142:fpr128 = MOVIv2d_ns 0, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  STRQui %142:fpr128, %5:gpr64common, 0, debug-location !&#8203;5386 :: (store (s128) into %ir.sunkaddr96, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  STRQui %142:fpr128, %5:gpr64common, 1, debug-location !&#8203;5386 :: (store (s128) into %ir.177, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  STRWui $wzr, %5:gpr64common, 8, debug-location !&#8203;5386 :: (store (s32) into %ir.181, align 1); ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  %180:gpr64common = LDRXui %stack.3, 0 :: (load (s64) from %stack.3)

bb.44 (%ir-block.182):
; predecessors: %bb.43, %bb.42
  successors: %bb.45(0x7fffffff), %bb.46(0x00000001); %bb.45(100.00%), %bb.46(0.00%)

  %149:gpr64 = LDURXi %180:gpr64common, -16 :: (volatile load (s64) from %ir.185)
  %150:gpr64 = LDRXui %stack.0.StackGuardSlot, 0 :: (volatile dereferenceable load (s64) from %ir.StackGuardSlot)
  dead $xzr = SUBSXrr %149:gpr64, %150:gpr64, implicit-def $nzcv
  Bcc 1, %bb.46, implicit killed $nzcv
  B %bb.45

bb.45.SP_return:
; predecessors: %bb.44

  $x0 = COPY %182:gpr64common, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1
  RET_ReallyLR implicit $x0, debug-location !&#8203;5386; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:574:1

bb.46.CallStackCheckFailBlk:
; predecessors: %bb.44

  ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5344; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:0
  BL @&#8203;__stack_chk_fail, <regmask $fp $lr $b8 $b9 $b10 $b11 $b12 $b13 $b14 $b15 $d8 $d9 $d10 $d11 $d12 $d13 $d14 $d15 $h8 $h9 $h10 $h11 $h12 $h13 $h14 $h15 $s8 $s9 $s10 $s11 $s12 $s13 $s14 and 58 more...>, implicit-def dead $lr, implicit $sp, implicit-def $sp, debug-location !&#8203;5344; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:0
  ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp, debug-location !&#8203;5344; ../../third_party/openweave-core/src/lib/core/WeaveExchangeMgr.cpp:0

# End machine code for function _ZN2nl5Weave20WeaveExchangeManager12AllocContextEv.

*** Bad machine code: Virtual register defs don't dominate all uses. ***
- function:    _ZN2nl5Weave20WeaveExchangeManager12AllocContextEv
- v. register: %188
@petrhosek
Copy link
Member Author

assigned to @rampitec

@rampitec
Copy link
Collaborator

Reduced testcase

@rampitec
Copy link
Collaborator

RA tries to rematerialize this instruction:

832B %56:gpr64sp = ADDXri %55:gpr64common, 648, 0

to the slot 1648e here:

1648B STRXui %22:gpr64common, %55:gpr64common, 81 :: (store (s64) into %ir.47)

The use of %55 is checked by the LiveRangeEdit::allUsesAvailableAt(). Register is dead at the use slot:

%55 [816r,1216B:0)[1456B,1520B:0)[1632B,1648r:0) 0@816r weight:1.443001e-03

The problem is that use index is right after the reg slot and then register is killed. allUsesAvailableAt() takes 1648e as a UseIdx, but the first thing it does:

UseIdx = UseIdx.getRegSlot(true);

which adjusts the index right before register is killed and function thinks it is alive. After the rematerialization we have an instruction with the dead use:

1648B STRXui %22:gpr64common, %55:gpr64common, 81 :: (store (s64) into %ir.47)
1656B %96:gpr64sp = ADDXri %55:gpr64common, 648, 0

%55 [816r,1216B:0)[1456B,1520B:0)[1632B,1648r:0) 0@816r weight:1.443001e-03

I believe the solution is to add a check li.liveAt(UseIdx) with the original index before it adjusted.

Ideally I would want to reproduce it without the whole big change https://reviews.llvm.org/D106408, it shall be reproducible with AMDGPU BE.

@rampitec
Copy link
Collaborator

Reduced MIR testcase
Hm... It looks like I cannot trigger this using AMDGPU. It should be possible, but to get to this RA needs make a very non-trivial work first. I have managed to reduce a MIR testcase for aarch64 though. The caveat it needs https://reviews.llvm.org/D106408 to be exploited.

@rampitec
Copy link
Collaborator

Proposed fix: https://reviews.llvm.org/D108475

@rampitec
Copy link
Collaborator

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 11, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla llvm:codegen
Projects
None yet
Development

No branches or pull requests

2 participants