<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/109333>109333</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LTO error: Instruction does not dominate all uses
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
googlebleh
</td>
</tr>
</table>
<pre>
clang crashes while linking
```
clang: error: unable to execute command: Aborted (core dumped)
clang: error: linker command failed due to signal (use -v to see invocation)
```
I followed the instructions [here](https://llvm.org/docs/HowToSubmitABug.html) and narrowed it down to an LTO bug. File to reproduce is attached. [a.out.0.2.internalize-reduced.bc.tar.gz](https://github.com/user-attachments/files/17066318/a.out.0.2.internalize-reduced.bc.tar.gz)
```
$ opt "-passes=lto<O3>" a.out.0.2.internalize-reduced.bc
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.
Instruction does not dominate all uses!
%.lcssa16 = phi i64 [ %12, %9 ]
%27 = add i64 %.lcssa16, 2
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: opt -passes=lto<O3> reduced-redacted.bc #0 0x00007e899efc4d90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/llvm/llvm-18.1.8.src/lib/Support/Unix/Signals.inc:723:22
#1 0x00007e899efc1d4d llvm::sys::RunSignalHandlers() /usr/src/debug/llvm/llvm-18.1.8.src/lib/Support/Signals.cpp:105:20
#2 0x00007e899efc1d4d SignalHandler /usr/src/debug/llvm/llvm-18.1.8.src/lib/Support/Unix/Signals.inc:403:31
#3 0x00007e899e24c1d0 (/usr/lib/libc.so.6+0x3d1d0)
#4 0x00007e899e2a53f4 __pthread_kill_implementation /usr/src/debug/glibc/glibc/nptl/pthread_kill.c:44:76
#5 0x00007e899e24c120 raise /usr/src/debug/glibc/glibc/signal/../sysdeps/posix/raise.c:27:6
#6 0x00007e899e2334c3 abort /usr/src/debug/glibc/glibc/stdlib/abort.c:81:7
#7 0x00007e899ecaba1b std::mutex::lock() /usr/include/c++/14.1.1/bits/std_mutex.h:117:22
#8 0x00007e899ecaba1b std::lock_guard<std::mutex>::lock_guard(std::mutex&) /usr/include/c++/14.1.1/bits/std_mutex.h:250:23
#9 0x00007e899ecaba1b llvm::install_bad_alloc_error_handler(void (*)(void*, char const*, bool), void*) /usr/src/debug/llvm/llvm-18.1.8.src/lib/Support/ErrorHandling.cpp:131:61
#10 0x00007e899eec070e (/usr/lib/libLLVM.so.18.1+0x6c070e)
#11 0x00007e899f21aa1b (/usr/lib/libLLVM.so.18.1+0xa1aa1b)
#12 0x000055a86e4acf57 llvm::detail::PassModel<llvm::Module, llvm::VerifierPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm:
:Module>&) /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/IR/PassManagerInternal.h:90:3
#13 0x00007e899f1d767e llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/src/debug/llvm/llvm-18.1.8.src/incl
ude/llvm/IR/PassManager.h:547:20
#14 0x000055a86e4b7052 llvm::SmallPtrSetImplBase::isSmall() const /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/ADT/SmallPtrSet.h:195:33
#15 0x000055a86e4b7052 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/ADT/SmallPtrSet.h:83:17
#16 0x000055a86e4b7052 llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl() /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/ADT/SmallPtrSet.h:345:7
#17 0x000055a86e4b7052 llvm::SmallPtrSet<llvm::AnalysisKey*, 2u>::~SmallPtrSet() /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/ADT/SmallPtrSet.h:451:7
#18 0x000055a86e4b7052 llvm::PreservedAnalyses::~PreservedAnalyses() /usr/src/debug/llvm/llvm-18.1.8.src/include/llvm/IR/PassManager.h:172:7
#19 0x000055a86e4b7052 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutpu
tFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /usr/src/debug/llvm/llvm-18.1.8
.src/tools/opt/NewPMDriver.cpp:527:10
#20 0x000055a86e4ab1ed std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::~basic_string() /usr/include/c++/14.1.1/bits/basic_string.h:809:19
#21 0x000055a86e4ab1ed main /usr/src/debug/llvm/llvm-18.1.8.src/tools/opt/opt.cpp:747:3
#22 0x00007e899e234e08 __libc_start_call_main /usr/src/debug/glibc/glibc/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x00007e899e234ecc call_init /usr/src/debug/glibc/glibc/csu/../csu/libc-start.c:128:20
#24 0x00007e899e234ecc __libc_start_main /usr/src/debug/glibc/glibc/csu/../csu/libc-start.c:347:5
#25 0x000055a86e4abfd5 _start (/usr/bin/opt+0x1cfd5)
Aborted (core dumped)
```
This happened after adding `-fsplit-lto-unit` to some parts of my project.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WVtz6ygS_jXkhYpKQjf7wQ_OxTupSeakkuxszZMLAZaZIFABymUe9rdvNZIjy8fJZM5lT6WOLWh1f9183TSYOidrLcQC5Wcovzihnd8au6iNqZWolNieVIa_LpiiusbMUrcVDj9vpRJYSf0odY3iCxQvUREPf-ExyKN0iYW1xsKXTtNKCewNFi-CdV5gZpqGag6Ty8pYLzhGZMaMFZh3TSs4IvP3tIFtYXcq8IZKJTjmXTAAHlEFyjon8OlTGBMCS_1kGPXS6DfNB7Cv8MYoZZ4Fx34LLzhvOwZvOIzys62wAuUXiMy23rcOpUtEVoislHpqImNrRFbcMIfI6hfz_GDuu6qRfnnW1dHWNwqROQawmlobTEiPuXnWAI9qfP3wBVddHeGV7ONkRWsN75jA0mHqPWVbwSPAQSPT-SiOSCS1F1ZTJf8Sp1aAMI8qFnlqo_qvY1Br6bddFTHTILLqnLCnveZGaA_AN1IJ-EzKuCjSZIbI6rPW3okpIhk2rceIkNOWOiccSi-UNyg9_5Ki9BIRgv_ORK_pP8u7365--xes_x-mQ6S0AuIimtZLXUPIWiu1x6bzmOJKema4wOBR1Ct42EoHwZSa8ifpAiGpg3Vo6CtmFOjCpWsVfcWtNZUSjYvw1aZ_-9V0-O5yeX39B36m2oM9T50X-Pr695s9c9b50y0Qm5zjV9MNFKYab4xlAtC1ncfP0m8DyVARn24QKSFI0ugB6sDHkYCYG-GwNsCZRmrqBaZK4Q7iSZJeHGNE8kgx52hSYJRe4HYrsSwyIA3MJQRAIZLPMZBjfImUQZxy3ouPauAF0ksGPy_v7r7cwRKcWfMoNG4M75TAG9P1HjPTtFKFLMO0T-s3fLfXl8v7S-xCXsASdTWw3NgQzA-ICgk2fJy21vwpmEdkJZ3rAllDWknNVMdFiGkoVLii7NFbynbLf-8pewy1BayEoTjC4d-tNbWlDaa27vpUSJeBtUcpiwdmAkMp84GiGJE0xvFLHMdxKWbzudiwjM9jHLCnS5Qu3avrv9wCTQOaB4CHyGwUsvR5bZy3gjaIhOhL7aF0hHy1iKycZVBoRNXVB6FJZlESzaJeQMkKkdV910J8EVn9W8sXGAjF0UVSM5QuS5KidEmGBQYfkgMfEp7xYz7cdbpX9QvVXAnrEJn9CJg7fKyFVUriHPDFIz5yDN8Eyc-JVBZDpNJkRJJOkJCMJTzGIQqD-V6vkhWLnIkKRM7il5QnPH4rlaAmm6qhebrJ8Hrd-q0VlK8fpVJr2bRKAC_7vHrHwRpM7X3q1itEVvuaouBKBitfjBDyrzwhMbZUOvFZU_2Wi8gqiuDp1XHRQma2xoVYBmXBOClRutyzXUxtp2nG0r5wfNq2532kw1vByCwBD0cj5cQIoxVNKuw876ncdF689F-VYY-HRB4KCyIrhshZ-FslWZRECSKrSoZt03m-DmqiLbA2KQ-yavYhALC6rjtqOUrPD2FdfiVDZgcyUCe-CzDJY_g_HQHPjwEeywB0RlSpdUX5mipl2Dq0Zuttn4KIzJ6M5H02LIHu_UB4OMdsS6F3084PA5UxKkid4zex7y8llwApFAWp611BSYEaRbLrTdJkWrQFi8tYHE9j2P8gk8FoSOYiCI-ND0mTSfnckIRC3D6njQbhibZdsctzOitERtkmL_dWgQtPpRr2FOrcjeFCofR8lLgJuzPEdRz7XVi5kcLCG9OZWyucsE-CLzVVr6Gz2J_uR6W7oZrWwh4zBGwdCGs7PdnYdlCKzyrto7Cv-oDnn6TFmA6DyNUdIqsQr97m1dBzhlSYQyak4xJMqvwm4WVRiv2QjWr-NvD_5_j9mMj1kfgwfiFueVbu7dQQuWxK3qqMc7IH_L6hSt16ey_8VdOqM-rEUFtcmBrKcCgT37_my4sHqA2jzb5Qz6G9SPeWO_9G0P89NvNtHdEnsc-gH0nKEXrxj6BPiLIj0a_iFWrvjoKHTv1ch9IsH3dtcKj8tEMfOQPnl-6oSz_XnSxPpu7MPnbn6-LbAz5SlH8M7KNpnJRkinr-MWrbaVBxK1uhpJ4eZe69lbq-E5tpxXqnkD1QWwt_Q9k26Fkem72WlaX29UpvTM_HQylj1Jdwvl5JdUTJJ6d7748LvePU0lr6CqP7TAyRUV0tdajB-_Km9WsPXU946kH9Kvsj9HtSu417J9d3Tf_08x8wp4_DwB_AAZ2jaaG3-k08395cWPkk7NBZ5aGzT8YNgMQH3UuVCD42ves1e3lJkv6hok6ytQuxRek5NIiA-E0YBtbeUmheh-k-om8SoQul3ti9-bekn6j_hvZ-__2--MbzsH2MzibHnG2ofPe09m6iTgNtWj8EuAw77LhXEXJwdMpEPMPrNRyL1s5T69cMevSPQByepZjrvj7EDefIY3pDMMpsiiv9ChdjOLwitfz0sW4PSv8Vxk-D_XDGS8hs2nCQ7JjdSTy-MRRH7adhOfLRfH7IgA3PcW94cgKopN6t7ln8krANz9-a_r-5CD-4Wg33mVvatkILjunGC4sp51LX_a2ia5X0p8qb005Lj4o43ISbRuCWWu-w2eAm3HT-KZgfLslO-CLl83ROT8QiKUlRlvM4JyfbBSlIPN_whCXZvJoVBZnH2axKZ2WcV1kxj0_kgsQki-fJnMR5nJOoyDOep3FZJYWIRSJQFouGShXt7stPwg3eIonnaZqeKFoJ5cIPEYRo8YzDLCIE5RcndhESpepqh7JYSefdqMZLr8Ti-uHL-APB525OTzqrFt9-7zgAf1qQ_wUAAP__XMmtNQ">