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

    <tr>
        <th>Summary</th>
        <td>
            Crash in PGOIndirectCallPromotion: cannot guarantee tail call due to mismatched parameter types
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            PGO,
            crash
      </td>
    </tr>

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

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

<pre>
    reduced.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"

define ptr @foo(ptr %msg, ptr %ptr, ptr %ctx, i64 %data.coerce, ptr %table, i64 %hasbits) {
entry:
  %0 = load ptr, ptr null, align 8
  ret ptr null

1:                                                ; No predecessors!
  %call11.i = musttail call ptr %0(ptr null, ptr null, ptr null, i64 0, ptr null, i64 0), !prof !0
  ret ptr %call11.i
}

define ptr @bar(ptr %this, i64 %tag, ptr %ptr, ptr %containing_type, ptr %metadata, ptr %ctx) {
entry:
  ret ptr null
}

!0 = !{!"VP", i32 0, i64 2024, i64 16434608426314478903, i64 947, i64 12345, i64 18}
```

Crash:
```
$ opt -debug -pass-remarks=pgo-icall-prom -passes=pgo-icall-prom -S < reduced.ll

Work on callsite   %call11.i = musttail call ptr %0(ptr null, ptr null, ptr null, i64 0, ptr null, i64 0), !prof !0 Num_targets: 2
 Candidate 0 Count=947  Target_func: 16434608426314478903
 Candidate 1 Count=18  Target_func: 12345
 Not promote: Cold target.

Work on callsite #0  %call11.i = musttail call ptr %0(ptr null, ptr null, ptr null, i64 0, ptr null, i64 0), !prof !0 Num_targets: 2 Num_candidates: 1
 Candidate 0 Count=947  Target_func: 16434608426314478903
remark: <unknown>:0:0: Promote indirect call to bar with count 947 out of 2024
cannot guarantee tail call due to mismatched parameter types
  %6 = musttail call ptr @bar(ptr null, i64 %3, ptr null, ptr %4, ptr null, ptr %5)
LLVM ERROR: Broken module found, compilation aborted!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/rupprecht/dev/opt -debug -pass-remarks=pgo-icall-prom -passes=pgo-icall-prom -S
 #0 0x0000560e41005e5a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/rupprecht/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:11
...
 #8 0x0000560e40f236a4 llvm::report_fatal_error(llvm::Twine const&, bool) /home/rupprecht/src/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
 #9 0x0000560e40f23512 /home/rupprecht/src/llvm-project/llvm/lib/Support/ErrorHandling.cpp:83:3
#10 0x0000560e4053e334 llvm::VerifierPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/rupprecht/src/llvm-project/llvm/lib/IR/Verifier.cpp:0:5
#11 0x0000560e3d50a104 llvm::detail::PassModel<llvm::Module, llvm::VerifierPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/rupprecht/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:88:17
#12 0x0000560e404e7de7 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/rupprecht/src/llvm-project/llvm/include/llvm/IR/PassManager.h:521:33
#13 0x0000560e3d4dee5b llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) /home/rupprecht/src/llvm-project/llvm/tools/opt/NewPMDriver.cpp:526:3
#14 0x0000560e3d50db18 main /home/rupprecht/src/llvm-project/llvm/tools/opt/opt.cpp:711:12
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdV21zozYQ_jX4i8YeEC_GH_whl5c20yTnSdLrR4-ANVYDiJFEEv_7rgTYkNh3be46vWnGEXpZtPs8u1otich2SwlZk0I2KwrHP3PcC8c9cyK3-9mhZjIHTTKmWcF2otHE8S-IQylMS3wHpjWdu9jxqW3M0BsPTS8KbDPlfWcTm5c8Gk-r2HSi_h1ce8BpVDDSryWvC-h1v8bRGgWb6qkSL9W04FXzOs2rZv9W22aw4RWQWkviBO5GCIfGdkDDUuUOPSfdCB-DUapfzQhtNSODfJYKkCkMZDRLChhIbZlKuFYOXRBn_qlVD5WWuz2vxIi5FkEhWEYGOqsG-cc-K3hekbiXl4h7vzyAZfgl__DP8T-RO0FqdDikoJSQaKs3sCxlReF5M24NLBulNeMFMbM9ZLdjr7f2VN8w4p6YXJg-Kq6l2Jin-xbrwJIO8vzitEsTJg8u1VuuBh7R7CseFhXCq3iVr_WuHvq1BM2Mx9-Gw1fcesRNY5sNzi5yPbMLtpR-WZlgNeb6tKXL2E1dGvR9Lwr8IHLjgEa-FwTzeOH6_doimO_FqB-E-0F80D0-x217LpnanjrqDg2IqDWZZpA0OZnWTKmphJLJJ4Xm17mYcuOcKXqvbJfh2MIDgj0ng9QyMOAPIZ-IqGxgKa6B_JfBR-6act0mGGXOVJc8yDmrMo5RAMQl56KpNJqFjBPyaGXXm6ZKjfxRD73dwttv4cXvd7DOa1-5ExhHSKDQYJbORZGR1rjZVxl0qO_-VCzaibQnwM55P4zZNh6NDAZZdwE4_iVOuN0_WbUkEo66JKS6pUALgumCvHC9JalRbQ4RMRca4rDnzu6PdlfoiLxhklUagBxIzBowu5RclUynW8AcjkKYMUASk0bUIJ1Gp5wwTFpDZvEd_5hLcD44MR8aZ1iVNzdfbsnl_f3ne4P_kxRPUJFSZA1emRvEmpm3UlHWvGCaY_CwREgN2f4KWN1cnj1cEtUkJdeEEXP-JdQoZBBvta6NGx16hb8cGWwSvBJLHBTFc_8wp_9PpBuHXKkG6aBXBP2NfkiLJkPutkBSk4DQEemTliyFLrIfNE4gv2W9z03urL240Jk5kkwwPpoSU68NJ9x5K0rM21eyqfFOS7dGawbP2P6QDNZ50h4t99XFvzByIfDwCSEjFjVa6p-pnWo7K8krbXE8GmDo4YOQZC9robQEhlxF1uMY-eZOOYpDyfQ9pT3RPMH2AaXRN9j7veKvZgILB1aoGbfHJ4zmpqbqfDubzQ5w4iEcd0P9iAUDOK3P1xtT7a1BSiFHQB5fzOWLt6fSHZBEiOLHILk02n7FeMFqLp-ldW3rw9DAOZi_eGt-6NF_SXfsm5K0vxl9bxQIbuiD7w-Z-wKSbzjIFcZUx2VTjci7teex4-0wfYaO2ymublnFcpCY1d69gunNvPVxlq_vsekt7PC5B2YNPG8Az89Cl3nuEF4GJo91oY4Q0TIojtk6wjYiZbSykqBAPkPWwgf1EVJs2v9ZmO6y3GHCkm65avVd43Ui0YSZKcBi-9UzP_BPR-EVwDyD-ZCvwz7fZP3_SJ4lLaT203JwKP1R1AYZQJgM01lTmT1WvAY82eOk_ICflFV-D5sxzhPw2_rklqVbu8_ZsdUbnkgmd9fVRlyXdfFeCnPl50bXjb7ixZFNvmv5BJwzKdnOzA79dZA1LvumuKWwaHJevZPHy3atzRVgR615v_G23jgl1SeFXq69Qv7u8yPRZXSrtjTA9g5eVrcXkj_vU2FIo3GuD94kwyzB2r3EL8bvVo5tp3TuefaGe_MpNoGlF0WLmMZxvJhkSz9b-As20VwXsLSfb1g8kNUvn6-76vYcy5a24sXCzhRH31PBThpZLD9e7oULGi0m2-XcDVyIN_48CRPsZuBGfphEkC0iL0kSmBQsgUItnRC_himC6b6F8WELRDMMLyZ8iXU59Tzf9eb4CGcsjHx3DmkQRmFEF3OsprG448XMGDQTMp_IpbUNqz-FiwVXWh0WMY6xTgKwenF_1uitkMu9JycWyNKi-At_NsCU">