About stack maps and experimental.patchpoint

I have filed a new bug report against experimental.patchpoint because I am getting crashes with it on x86-64. I don’t know if the test case I attached in the bug report is breaking some assumption (-verify does not show any IR level issues). Patchpoint was originally added to LLVM in 2013. Why is it still experimental? What are the known issues with it?

I have seen the StackMaps Documentation but it doesn’t seem to point to any known limitations other than that it is not supported on all targets.

I was able to create a smaller test case that shows the crash in my bug report. See below.
If I comment out the call to @R_KIDpn_15 the crash disappears. I thought a patch point can be followed by any code including calls. Is this a bug in the code generator or my misunderstanding of something fundamental about the patch point intrinsic?

; ModuleID = 'llc_crash.ll'
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: nounwind
define void @R_KIDpn_16(i8* %a0, i64 %a32) local_unnamed_addr #0 {
  call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 15, i8* null, i32 0) #2
  call void @R_KIDpn_15(i8* nonnull %a0)
  ret void

; Function Attrs: nounwind
declare void @R_KIDpn_15(i8*) local_unnamed_addr #0

; Function Attrs: nofree nosync willreturn
declare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...) #1

attributes #0 = { nounwind "target-cpu"="x86-64" }
attributes #1 = { nofree nosync willreturn }
attributes #2 = { nounwind }

!llvm.module.flags = !{!0}

!0 = !{i32 2, !"Debug Info Version", i32 3}