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

    <tr>
        <th>Summary</th>
        <td>
            Segfault when combining IBT + SLH
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    `clang` segfaults when compiling `llvm-test-suite/SingleSource/Benchmarks/Misc/evalloop.c` with the flags: `-O1 -fcf-protection=branch -mllvm -x86-speculative-load-hardening`:
```
Stack dump:
0.      Program arguments: clang -O1 -fcf-protection=branch -mllvm -x86-speculative-load-hardening -c /afs/cs.stanford.edu/u/nmosier/llsct2/llvm-test-suite/SingleSource/Benchmarks/Misc/evalloop.c
1. <eof> parser at end of file
2.      Code generation
3. Running pass 'Function Pass Manager' on module '/afs/cs.stanford.edu/u/nmosier/llsct2/llvm-test-suite/SingleSource/Benchmarks/Misc/evalloop.c'.
4. Running pass 'X86 speculative load hardening' on function '@eval'
 #0 0x00007fe2d21ae4f5 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00007fe2d21abbe4 llvm::sys::CleanupOnSignal(unsigned long) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x102ebe4)
 #2 0x00007fe2d20874e8 llvm::CrashRecoveryContext::HandleExit(int) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0xf0a4e8)
 #3 0x00007fe2d21a3f42 llvm::sys::Process::Exit(int, bool) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x1026f42)
 #4 0x0000562b5af6f34c (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/clang-15+0x1934c)
 #5 0x00007fe2d209f6f0 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0xf226f0)
 #6 0x00007fe2d209f8ae (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0xf228ae)
 #7 0x00007fe2d5ab9c20 (anonymous namespace)::X86SpeculativeLoadHardeningPass::tracePredStateThroughIndirectBranches(llvm::MachineFunction&) X86SpeculativeLoadHardening.cpp:0:0
 #8 0x00007fe2d5ac2094 (anonymous namespace)::X86SpeculativeLoadHardeningPass::runOnMachineFunction(llvm::MachineFunction&) X86SpeculativeLoadHardening.cpp:0:0
 #9 0x00007fe2d263a7c1 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x14bd7c1)
#10 0x00007fe2d23401ce llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x11c31ce)
#11 0x00007fe2d23404f4 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x11c34f4)
#12 0x00007fe2d2340b4c llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0x11c3b4c)
#13 0x00007fe2db377e6f (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) BackendUtil.cpp:0:0
#14 0x00007fe2db37847e clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x1dca47e)
#15 0x00007fe2db78823f clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x21da23f)
#16 0x00007fe2da1c973d clang::ParseAST(clang::Sema&, bool, bool) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0xc1b73d)
#17 0x00007fe2dc062ae1 clang::FrontendAction::Execute() (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x2ab4ae1)
#18 0x00007fe2dbfe16a1 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x2a336a1)
#19 0x00007fe2dc0e4ea9 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x2b36ea9)
#20 0x0000562b5af70eb8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/clang-15+0x1aeb8)
#21 0x0000562b5af6b64b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#22 0x00007fe2dbc51789 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#23 0x00007fe2d2087367 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libLLVM-15.so+0xf0a367)
#24 0x00007fe2dbc5307f clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x26a507f)
#25 0x00007fe2dbc19614 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x266b614)
#26 0x00007fe2dbc1a13d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x266c13d)
#27 0x00007fe2dbc2b438 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/../lib/libclang-cpp.so.15+0x267d438)
#28 0x0000562b5af6d665 clang_main(int, char**) (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/clang-15+0x17665)
#29 0x00007fe2d0d421b7 __libc_start_call_main libc-start.c:0:0
#30 0x00007fe2d0d4226c __libc_start_main@GLIBC_2.2.5 (/home/linuxbrew/.linuxbrew/opt/glibc/lib/libc.so.6+0x2926c)
#31 0x0000562b5af68b55 _start (/home/linuxbrew/.linuxbrew/Cellar/llvm/15.0.4/bin/clang-15+0x12b55)
clang-15: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Homebrew clang version 15.0.4
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/linuxbrew/.linuxbrew/bin
```
[evalloop.zip](https://github.com/llvm/llvm-project/files/10377508/evalloop.zip)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1v27jS_jXKDWFDor4vcuE49aZFigZ1drF3BkWNbL6lSL0klY_z6w9IybHoONscnMa7wAnsQCJH1DzPDGeGpInWbCsALoP0KkivL0hvdlJdilZqBuqikvXzZZCFlBOxDbIQadg2pOdGo8cdCERl2zHOxBYFWcj5QzszoM1M98xAgFdrJrYc1rJX1N5egaC7lqgfOsCrr0zTAK_ggXAuZTendvhHZnbI7AA1nGx1EC_suLNvEZo1tJl1ShqghkkRxNeVIoLu0Ky1r0WzpyKb6Q5oz4lhDzDjktSzHVE1COZUD-JFEF4H4cJeDx93uzaE_kB133YvEuEcub87JbeKtIiobd-CME4hRwX6BTqhGUUBXpHGskH1XBsiGqnqOdR9gFf2O5ohwCvONTXYXfx3JDuA0RwF8RJkE8SfUEeUBoWIQSBqJBvUMA6DHB6JWMoa0BYEKOKQus54jr73wiHpiNYowPmqF44KdGcbvhJBtlb7HEmBWln3HKzU-UHjfD7onLzW-c8iQxMjIWskdHCcQflmD8yqn4R2aHvlxkQBjkMUPoVhGOYN4BpHBJImRXeKCePc614RCmu2FYTfEFFzi654kKwO8CLAJRq69Jx21glD930ZOzoau6ogQZYR66_xQj_r4WLJgYi--yaG0QJc9MJN7hpxaZGUKMBFgFc72VrOOBP9U6XgMcCr-fRmCZwTNdIe4FWUzsN5EuBVxYSVnbuHq-H_7e0fX2dROtcywFfhUxRiqCAJcHkAgD0AYZEnUEwALBXRu-9A5QOo56UUBp7M0DNw9emJmQAXTJjzQGhCkkDhIYiPTBA3CT5lgjslKejxZqr3ElVS8rOZIGsS7AFIRgBphquUNFkTJ_TXqOLC4SxKh1eXcUK9F6e-7csma8IJcwo6qcymIYbwDSgl7cQ4dN8_MgGISqFNgLPz0thgnDWhByY7BlMQOI8mBQFPk3yqSUqqkuLQakKEFM-t7DUSpAXdEeqec2T-WWTrQ5y7laS-2Uc5G64HIWMj1Z2Cem2Igfudkv1291nUTAE1Vy69gfZs9JXQHROwD_3OTiX6i5edjnKFj4jisEx-CSLVi2_ilZK_HkDpOUcWk5xG6M23HOl3UrEjjc4QOZKqzmn04mk2-fiZLU7CiMIE1urOItln-n8coIjGEQUPUHQMKGmSdwD66soX33HGpjOCSZrEA4OPwVQJnYDhsCX0ecxNB1if246_QPu7IVWTjGEhebm2ivMcsuZngeBTy8xCa2gr_nwDvNtbbtoe4GJYxbieK0J_gKgXoz8ukTb10NML9v89bDqjgng5yVTkcdM9KmZgo40C0noP1eBWRZsaOBj4yYPxJ_vBJRqV-N0w_jqmWC6SIy6KJAc0QWHxjYN8603XGx_kNSNbIbVhVH8SWyZgTKITkRsgNag1EEV33zpLhvby7UTULgJ-A_ETqXuitmB-InRLxPaUyIG1tVFMbL9D4zfv_XNxNOA_wpwfMF-G6op23VzL-b7IqilJcj-oeWVWlRcFjpsT_Cyl0H27nx1DeX2viNDcret-F-zIgxbr-31F_mEx4RRGHNUEx42H0au-SETLPK6nGO_sOnaxvvcRrKElXu34oTXkKSw0qvK49qB45RsNM0wgmkJZKUv6iz-PywmgvV37Fue0A6kSAn5F4FVqVQNRRiI_TrQd46A-C7u4p-Cpv5-hxdtoz-toJI4z4gMsfetAAqT0ou4A5YDzQVLyGtYrHoa1_rmAVXEGpJwCw6G_CsxDqApEabRpCfPrgIVS5NlG33hJd0Ttg_TCRbol8tvwEk32Mj5gVUmgKjwg0dFytsqSCu3Nsozu3QSfwFm3hPM_gBo51j4nUDmvqxV7AHUyGWOv1qpoGuVF6YBP8tN-n2ijHHeud5ixLk1YEUo4rwj9sWmE1ePgL8O7R99ZRkvZtkTUx5P_pI0OjUNWJdxrPCTTMVdNUt1mQ5-eomi4qYhm1OY1ZpVyJHnCtmFjFGFG77uPhiOc28kg1aTfiiwOgdd5yUC9eyTAOSdtVRO3NbjnChf7TasvsjptkPh4XynO8nftK33vxZo04GrC99ruXFtPcZZ7rp4ceV0c5l5m_9_zmrNF0IykYe7VINivs2hUZlHypjVc_CevMvjeRF6yOHrQCrxVPP-F6OJol-zMfGVVFnnrU5wd8UUiv2Z7D19fZKXfJuuLrG6ZNm8tI14F_hef6wiz7jZuz76X39Ex_1aWaeSXkzj3WcZVEhdvIbqeXHuFzIkK5i3rnJHl89VLWV4nsV9mFEdlRp1l6YBhXzHtcbmQt_i4CijPstRTzatRwzrBUZWjzcaC22hDlNnYOsOpiWzjzDXO6ass6h9d2ZFwRv2RHNYk_O3289Vyg-d4nr4TouxMgFdbO5RHv6U9G1gvceZt_8THpV1RpSkaFPkIYnGVHoh96YoXaDiMeDnvbcY1CqKjrzaEcaiHA2t4YjYA1YBytwvfa0CzB2Qk0gCITdYH44tuZAtW23HwB1CaSYFGTZ3IsI9iFXgqsk2WzHrxQ8hHMXNQZ1vRj3I7BaRGrayBW-lOavY0dLmFB-dQXzOH5B3cWYpOHZIH6dXLceq_WBek1wEudsZ0bhMbr6yZmdn11ZzK9kC9O7ftlPw_oNYTGsZBW4uEcZ6nYTE9pLWj7um5qC_juoxLcgGXUZbHcZiUUXaxu0wSnEQxTfK8zJumTJIyKylUWZrHJIW6umCXOMRxGIUlxmkaZXMSliTGpIlxiXMapUESQksYn1vV5lJtL5jWPVymZRlmF5xUwLX7LQTGAh6R6wwwDtLrC3Xp4FT9VgdJyJk2-jCKYYbD5Xr8dcTLjyMq5s6aP1_dowBfofXtzUWv-OV_zJzTw1Ln9Px3AAAA___MMkvQ">