<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56625>56625</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm trampoline is causing compiler crash on M1 mac
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Chronostasys
      </td>
    </tr>
</table>

<pre>
    I created a simple .ll file which calls trampoline functions, and clang(14.0.6) crashed on it:  
```
Stack dump:
0.      Program arguments: /opt/homebrew/Cellar/llvm/14.0.6_1/bin/clang-14 -cc1 -triple arm64-apple-macosx12.0.0 -Wundef-prefix=TARGET_OS_ -Werror=undef-prefix -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name a.ll -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -funwind-tables=2 -fcompatibility-qualified-id-block-type-checking -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +fp-armv8 -target-feature +neon -target-feature +crc -target-feature +crypto -target-feature +dotprod -target-feature +fp16fml -target-feature +ras -target-feature +lse -target-feature +rdm -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 764 -fcoverage-compilation-dir=/Users/bobli/src/calc -resource-dir /opt/homebrew/Cellar/llvm/14.0.6_1/lib/clang/14.0.6 -fdebug-compilation-dir=/Users/bobli/src/calc -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcolor-diagnostics -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /var/folders/bm/4rksdqgn30g5zn2yscfr0p7w0000gn/T/a-5b76d2.o -x ir a.ll
1.      Code generation
2.      Running pass 'Function Pass Manager' on module 'a.ll'.
3.      Running pass 'AArch64 Instruction Selection' on function '@main'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  libLLVM.dylib            0x0000000112f50d14 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  libLLVM.dylib            0x00000001158e2d64 SignalHandler(int) + 304
2  libsystem_platform.dylib 0x00000001af9284e4 _sigtramp + 56
3  libLLVM.dylib            0x0000000113506de0 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) + 2008
4  libLLVM.dylib            0x0000000113506de0 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) + 2008
5  libLLVM.dylib            0x0000000113506494 llvm::SelectionDAG::Legalize() + 336
6  libLLVM.dylib            0x000000011369c89c llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 664
7  libLLVM.dylib            0x000000011369becc llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 4916
8  libLLVM.dylib            0x000000011369a020 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1784
9  libLLVM.dylib            0x0000000113279810 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 296
10 libLLVM.dylib            0x0000000113089728 llvm::FPPassManager::runOnModule(llvm::Module&) + 1100
11 libLLVM.dylib            0x0000000113081fbc llvm::legacy::PassManagerImpl::run(llvm::Module&) + 864
12 libclang-cpp.dylib       0x0000000109c31cb0 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream> >) + 1344
13 libclang-cpp.dylib       0x0000000109f04ff4 clang::CodeGenAction::ExecuteAction() + 1604
14 libclang-cpp.dylib       0x000000010a48d158 clang::FrontendAction::Execute() + 96
15 libclang-cpp.dylib       0x000000010a40add8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 556
16 libclang-cpp.dylib       0x000000010a4d5fd0 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 512
17 clang-14                 0x0000000104ec3030 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1284
18 clang-14                 0x0000000104ec1c7c ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 804
19 clang-14                 0x0000000104ec12fc main + 11884
20 dyld                     0x000000010529d0f4 start + 520
clang-14: error: unable to execute command: Trace/BPT trap: 5
clang-14: error: clang frontend command failed due to signal (use -v to see invocation)
Homebrew clang version 14.0.6
Target: arm64-apple-darwin21.3.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin
clang-14: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```

source file
```llvm
declare void @llvm.init.trampoline(i8*, i8*, i8*);
declare i8* @llvm.adjust.trampoline(i8*);
declare void @__enable_execute_stack(i8* %tramp)

define i32 @foo(i32* nest %ptr, i32 %val) {
    %x = load i32, i32* %ptr
    %sum = add i32 %x, %val
    ret i32 %sum
}

define i32 @main(i32, i8**) {
    %closure = alloca i32
    store i32 13, i32* %closure
    %closure_ptr = bitcast i32* %closure to i8*

    %tramp_buf = alloca [72 x i8], align 16
    %tramp_ptr = getelementptr [72 x i8], [72 x i8]* %tramp_buf, i32 0, i32 0
    call void @__enable_execute_stack(i8* %tramp_ptr)
    call void @llvm.init.trampoline(
            i8* %tramp_ptr,
            i8* bitcast (i32 (i32*, i32)* @foo to i8*),
            i8* %closure_ptr)
    %ptr = call i8* @llvm.adjust.trampoline(i8* %tramp_ptr)
    %fp = bitcast i8* %ptr to i32(i32)*
    %res = call i32 %fp (i32 13)

    ret i32 1
}
```

system info
```
Hardware Overview:

  Model Name:   MacBook Pro
  Model Identifier:     MacBookPro18,1
  Chip: Apple M1 Pro
  Total Number of Cores:        10 (8 performance and 2 efficiency)
  Memory:       16 GB
  System Firmware Version:      7429.81.3
  OS Loader Version:    7429.81.3
```


clang info 
```
Homebrew clang version 14.0.6
Target: arm64-apple-darwin21.3.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWUlz27gS_jX2BUUVFy3UwQdZthNXxeNU7Jep9y4qEAQlTMBlQFK28uvf1-AiyqYTzW1UiUwBjcaH3huM8vhwdc-EkbySMeOsVGmhJZtozRKFh5edEjsmuNYlqwxPi1yrTLKkzkSl8qy88NeMZzETmmfbCz_0phN3Mr_wl-DJyx145hlT1UWwYuzCvblwVxdzt_1nfz5VXPxgcZ0WoGmG3Amzn68m32JLxs22TmVWlcTlwr_LiwrfuzyVkZEveFxLrbnBg9b7FH8aEBsPj5HK8G3ROd6UOUJ4zKmMokNyk86nDi_w7KRc5OWr52Ohy5w_6yyWiVMYmajXi-DmefXt0-3z5vFpgzlpTG4wOKTBcCzxKEiMTh79JRxVcqcu-VYOlvyCRqaqokHmpEZq_upA5MzpfuA7xzqSOHNiLIuAOTESC4WW3Di8rJxIJrmRTgSBSqikpyOpOHtpVKKkscOCm9jZc11LJ-OpBM-Uq8whjdsBxskA7Obttk6ax1KzQgnm4MvRco-fPmgSqEg6Ra6yStIZMxADUsKcJCkckWcwGwEDuIEhOEmWOyaH5BT0kfJqh6E6e1FZ7FSEFSq-AdNE5GmBfSOlVXVw_q65JvCxo2InAqQfTnUopCN2UvwAJyzYq7KjVhmZaOnsVBzLzCkrMAJgHETjzBBABYOSlSOKmrXK9_rBBI5QGwkzu96Hkxkfm8CxYDr7cGwuk3TM9-PCiPHhQ1HlYzNxXhUmj8f39-ZJqsem4HNjw7qUo9RxOjosilGwP8Uo-U_xcxRlrTUhHZsrd9wfG-fyCJ9HisXcwDYKgdEE_pC_ODuuE6cPCA5CD3wDy8kvUjJ08m4wdGDjuvES9QrDsR4IL3FeuMmsycQyqrdbaZyqpgEYntZx1G8PG_qBSbhNCfNni_nUmiV-w10dsk-lG8-IFZk9osx_ShBTzMkjrfC3NIJiD9eQppFlXhshifqfxjCtoi6G9RMAYw_wz5EkjSi0QsBh3pKRg8ChYGyVFFVuGJwhsU5GUpeZgOM78rVCSJGd95VqmzVKoyC0VSVc39nqPIKLxeABMatq5yDQvWITJ9lmtehECYTTiT-hXVJENuvIcO8tTZC1QMga-GLFt1lewnUB42az-bRebz6vvt9ubv5cfbvzN-u7-83q6YEWMScnke6t-JJcx-3hSYxT86OM_95mgbud_cz8QykS4xaLFxefLaWGZ_znzixazGN_Ak98ZVAQhb8mF3ltLlpDCmwrM6ifRN1M-u3ktzqzNlXwsgSSxV2bHdlXGnjgGUwG2BaUCxFHa03GvrCb-ItJwyv4gNdqZcQOxneflZWpG7ZPUkv71PLssjHRX0xdiuX09Ca_MtJJXlesPKRRrlkT-ZGzZVaSKg95zXZ8L5nNFw2R-omMoTKaM-zr6vkzg4GUsmLVTjKZ7ZXJM_JERoEVOf3Ll-8Pm6f_Plw_frn_3-23DS3BMEOMsxmCHlAN-MtjsmcM9k3rJvEBT2zwcV_d5uN5fjJzYyRw6x1YG6zKQ9k8fDVgbI_5jEwjcaAjkeEvGxgRIgKMYU7FCmipOkGwYbN5q-PzIMxC6cfQxBMZv_6M0KNJq-GAY-BOW8uwLAGxkummgHsiM6ct9yNLniz9cCqnbAOHstXVCa7gPFzBzJ3H0iVNciTfQ5rXZaPcwopj2YiiN5qb1acvcstJt81M9-uxOJHd080fMPoLf9WdznfdsEE2_dcim52PbLocmtMQxOnm2LrXb9CqZn7mNvOlCJfig23u8aMZpejySWarLL5FVCYExz3n89amFmfvGUnx-z2b0ZXW17xU4toG_BMp91EMNVxZWfdpEE2XXiuG8GxI3PXd30IydfaYPXCxQ_3W7X4C6d1cj8lbhK2Ylmdi8hfL0BtiesOcYvcA1iieESD-sosq7nk43HC58MMBjruvtHWXNQaCsZnjVB7t0FEMntv2VZ537vZeEg2tRcPsxaENrUcg9-gLezC_BhF2Fuv5hKFpvkRRnAA5YnCXIvBE5LY9pOVJbnDd9DGPdVXUML9wMH1zLA5usy2U1gb3AclnyVEHPKE3ErvHoumcjoZ8Qtp632-onm1d-BuiL3gaIxlYPprPbPtNJqfDnRBXbxi2Qli1ZrZmZRU3MxvUhvYB5evftdwUFYxlfZr6ihejKrnpEuDYavSwvNbVBt2drORvOAS3DP97YwumnaKD8xSduNMkmY7Ivj1fo_tXKepKdkfuA6E377Ir1QFnbMenYYysPdzuDvVKdZTncL_BTr0Lz87cx-VxHJ4ei6pyeA1MgGdCjp_sY2BHZ5r1Vcr8TDDxLIlPnanZ9ohp3zb1pxDeYT7m15nntyAWrL9LefsZgJhKEbgBQAhv01Sjg3ixMoYfyAGCtdihbGz9ZGUtC8Z_MoaBfa7iARbP7yK9F54LxhMLwToxrL3nPNenBUWK7vK7bX-aODeC7BjeejNcnr2_nwhGgmiDdNgdAUkReozfLX_DYuYvYxeOA8WYqtGI38b5DgHdjbXXTCtWZ9T6UrEtm0PjKGmKipUm2yr57vrrM13p0b0bm_2CmR1kSWugHSeWcBhLjM7C7mM7Qk2VXk13DXs7JiXK7aOxLZtNPrdNb8u467Dbm0NL0sRa2nx4R9fcBvjeJJi0h3_eISzFzN5NEXWRl-q1mbJWrIHwRpmP7g2bgbbhppvCd0LIcoqJK3bsRllakr-wWxJP3xFSw2YkemghyxJSaZp9SKMkq3HAZzBvdaMyZLVyMnon2nw3POw17Bsqi9gOxRJo0buRjzC0fjQzUZmqJsfLWmpRwtaX3j6gAr8-5WQnelY8_qsux5m9X9qB2Gyktb9Na3wbe8PQrYQmZpZfbxAdl4RullXgE48kz2lB4NOKTJZk9TNKcYSdSPzZnmvrkosWBvkMhl-Rom6YzmEXdvmatVxaBkPask4tNcJ3x_WVVrTce1KDjredx5IW9eLmY_ht0OsANBJbjcEVOrfdt4Wh6ZbS4u1JSsSkhq0XnB6mXTnGjYoByzFSleBl9X6VbcQtrMEZWiZWO5uoToagLmbXC5-90qLZjb31pzsb1nUCJ0u73eHDqCrofsCOvOXwZmB1snenaPf40G9EryP-qbXZ-qizuHdMPvCbI3X3GWO6_oisk35jCaw36F6Py9bXYO1HhdDohyxPdXxyoMa-reDt2c705I8lhImkODWj8OhIFjAdIuyPcrLU0OVSj6VxHmLXyIKMefnW9jo389562Gh4tJcriKNJPkr1mZv4hcLSIzLMXiHgB2-M_cG-0viDp7Y8c5doAK_z_Ae9dzoluY9hwvbtyQkh6DwIZO111Oudat5iLVeUsNiDN-T1nCMhsT_qNJKG5Qlbw7HLhtyzdyQhK6ShiyKqvuxbNZ_JJFFCyQwd2VE1DzLNzaFdOmef-ojy1MjkTpnUHv17d-VKlIupv5yEyJ4d9eMT-5JTl_RLulHhDzKl1cD4u71_e6bv4V7GV0G8DJb8slKVllf2RcLgdadCN8frktK8aKvk5v0m3b5CyykXl7XRV7uqKqxK_Tv826pqV0cTrDjube9WUQf8hWITP1VZ1pIuq2fzuT-73F2JMEqkiOOF5GEczxfozedJwqXkPibC4FLzSOryCrETQfNSXfmu77sL33UDfzZzJ0G8COWMLwM0JVHscri_RDLSExsEcrO9NPZ0TlRvS4oNqkQV0k-i30dUl7Ljz-tql5ur9Q7VH8ofDqe7tJivLOD_A9GgKBQ">