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

    <tr>
        <th>Summary</th>
        <td>
            A/F: "Assertion `!empty()' failed." after 6704faf
        </td>
    </tr>

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

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

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

<pre>
    Several of our internal tests started to hit an assertion failure in the compiler which I bisected back to commit 6704faf6f8a26c21c71fd0efad6af6a8d6ee52b4. Consider the following code:

```c++
#define c() 0
struct d {
  d();
  long a : 24;
  long b : 23;
} f;
long e;
void h() {
  f.b = e;
 long g = c();
  f.a = g;
}
```
When compiled with a compiler that includes 6704faf6f8a26c21c71fd0efad6af6a8d6ee52b4, it hits an assertion failure:
```
$ ~/src/upstream/6704faf6f8a2-linux/bin/clang -c -O2 repro.cpp -march=btver2 
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/ADT/ArrayRef.h:169: const T &llvm::ArrayRef<llvm::Value *>::front() const [T = llvm::Value *]: Assertion `!empty()' failed.                          
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump: 
0.      Program arguments: /home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang -c -O2 repro.cpp -march=btver2          
1.      <eof> parser at end of file 
2.      Optimizer 
 #0 0x00000000033ead87 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x33ead87)     
 #1 0x00000000033e87ee llvm::sys::RunSignalHandlers() (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x33e87ee)
 #2 0x00000000033ea16d llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x33ea16d) 
 #3 0x0000000003356058 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #4 0x00007f3230250420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420) 
 #5 0x00007f322fd1300b raise /build/glibc-wuryBv/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 
 #6 0x00007f322fcf2859 abort /build/glibc-wuryBv/glibc-2.31/stdlib/abort.c:81:7
 #7 0x00007f322fcf2729 get_sysdep_segment_value /build/glibc-wuryBv/glibc-2.31/intl/loadmsgcat.c:509:8 
 #8 0x00007f322fcf2729 _nl_load_domain /build/glibc-wuryBv/glibc-2.31/intl/loadmsgcat.c:970:34 
 #9 0x00007f322fd03fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#10 0x0000000004a0d29a llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&)::$_154::operator()(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::Store[32/1950]
lvm::slpvectorizer::BoUpSLP&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&) const SLPVectorizer.cpp:0:0
#11 0x0000000004a0c5cb llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x4a0c5cb)
#12 0x0000000004a08a0f llvm::SLPVectorizerPass::vectorizeStoreChains(llvm::slpvectorizer::BoUpSLP&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x4a08a0f)
#13 0x0000000004a0748b llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::Opti
mizationRemarkEmitter*) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x4a0748b)
#14 0x0000000004a06957 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x4a06957)
#15 0x000000000467e8ad llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x467e8ad)
#16 0x0000000002e2cc66 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x2e2cc66)
#17 0x0000000000efcc1d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream
/6704faf6f8a2-linux/bin/clang+0xefcc1d)
#18 0x0000000002e31210 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x2e31210)
#19 0x0000000000efc9ed llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0xefc9ed)
#20 0x0000000002e2be26 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x2e2be26)
#21 0x00000000035dfd08 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm
::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0 
#22 0x00000000035d7051 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::Intrusi
veRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x35d7051)
#23 0x0000000003babfb6 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3babfb6)
#24 0x00000000054cfb76 clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x54cfb76)
#25 0x0000000003e620b0 clang::FrontendAction::Execute() (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3e620b0)
#26 0x0000000003dc9ce8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3dc9ce8)
#27 0x0000000003f2e707 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3f2e707)
#28 0x0000000000b77275 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0xb77275)
#29 0x0000000000b73c10 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x0000000003c03e69 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) Job.c
pp:0:0
#31 0x0000000003355d99 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3355d99)
#32 0x0000000003c03780 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3c0378
0)
#33 0x0000000003bbc29d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3bbc29d)
#34 0x0000000003bbc837 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3bbc837)
#35 0x0000000003be0397 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0x3be0397)
#36 0x0000000000b72b1b clang_main(int, char**, llvm::ToolContext const&) (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0xb72b1b)
#37 0x0000000000b83a17 main (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0xb83a17) 
#38 0x00007f322fcf4083 __libc_start_main /build/glibc-wuryBv/glibc-2.31/csu/../csu/libc-start.c:342:3 
#39 0x0000000000b713be _start (/home/dyung/src/upstream/6704faf6f8a2-linux/bin/clang+0xb713be) 
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 19.0.0 (https://github.com/llvm/llvm-project.git 6704faf6f8a26c21c71fd0efad6af6a8d6ee52b4)
```
@fhahn this was your change, can you take a look?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWt9z27aT_2voF4w1JChR1IMfZDm6ppNOPLHbe9SAwFLChQR4ACjbfbi__QYAKRG0nMit0mn7zSiyCALYz352sVj8IFrzrQC4iWa30ezuirRmJ9UNe2nF9qqQ7OXmAfagSIVkiWSrEBcGlCAVMqCNRtoQZYAhI9GOG0QEIlqDMlwKVBJetQoQF8jsAFFZN7wChZ52nO7QR1RwDdQ2Lgj9anugsq65Qdk8npakzMqc4IzihM6TksVQEpaRMiM5ywBmuJhO0EoKzRko138pq0o-cbFFVDKI0mUU30Vx_53F_kMjfGs_vhSnDEouANEI5xFeoNi_0Ea11CCGonlXFSHmq0TpoaSSYosIitIlwtNxeeHL00N5NL9D5eHJ1YHD415yhnYdiIHQcmL7uRvU9L1vXSl9BamcEPdmOxQ7osA__vcORG8Thp642SFytJHZEYO4oFXLQJ9tkQivEDfWE_RJVzgaJcQS4Sn6vwivtaIRXreNNgpIHeH1UPB1xUX7HOF1wUWE17QiYouuKbr-jJGCRskJbRp0XRNFd1F6V5g9KIy8AFfZ2iPC652sIcJr5-KnZFbVvt7QCojYbLnpCiK87tg4FizvHu23UuTlC5STXZQuk2xhpVAptEGPKMKZq5suo3TZV4zS1bHwN1K1gCK8jNIPvqRUUpjOEXw_0ez20Rn1VLPZnRW4PDBtOcUJ1I156ZwDzx39wCbozX-epftPH5YPH5BuCzsMCSrarWVWKuPGtzGNtuLxOsLrLTe7tphQWR8JsX-uGyX_B6jljWvdgo7wGhHBemfyoUARvXPD3ihCwbpN40xIQWtgSMtW-WLbkmgtKSc2UqhWIE0Vb8zEQ34wNnawtm6cdV1Z3Cl6r-RWkRoRtW1rEEaf6QB_3ulGvCYdoChdgSyj9ANqiNKgEDEIBLOhteQVdLVxV_tzY3jNfwfVlaMIpzGKn-P-X5oCYfl84Bb6Rfsf94oL47h59ATnx0qKPG1kr2zmhqx1uAVy_vKn2YnwbfzcQbO9HmmwCiQjBfI5wCkFvrTigW8FqX4iglWgdB8aL4rRSrdD5AAPj_lNMnYK3sqGh7b53IGMcN4KN5EyF55_AJtJxlyvB6hpCHWWxbMcrezA-gJU7kG9BARGOO_MHNRZSWHg2VgvjtJl7P4fREw7EfMyxWmMZ_EUx2izUaCNVLBRplOy4kWE1895tsmmXonrrWj9i8bsFBA20XISO2WS6RTHoSqzgRxcsiSN4wIpwrUNceui5RWzEafiBb1-atXL7f7wiCdpYnntzLCeTOzTi2bQ2MjTCv7sC_YOjufXdT2hUbqcJTZoD6BkARRa4ny2QKSQTtfzoBjm-XCtnJTcSpkfhczHQuZ4gbZgNh74RsPWxqvNvovyZ8nlwlgCKklYrbeUeNGz2E5I-UDD_JTwjag2tuWGyZpw8edkLubWj9LpQOgitHCcliw7w3modZusGwMlyw5j1UaSIBZOSczwggzG6sOn-9-AGqlsCL0nuhu5-77swfqwDiLjyRna1fsotOkmabwaBoSqOXSofNGt_LV5-HTvQuvCF0V4uklmU_8gG1DESNXPzrk2rOsMTJSuDo8N4SpKV4fA4oavD9ZjGBfVNZrdpjjC62Qxi2164dPV92nsOrrj2qxk3RDlpvKDYqSqJHUUnK2t-_h0yIvpUqNA8ddBzLpJMnITOqPF381NLjlZdCoGQwWPOMhJXL6Xg9WOcBES8RerZVEHaqUjtebT_AzTqlZ8rJsq0GTdCmrT5y4hGvRBSUXUh72sWv9-Gb5_JGoL5lERoUup6o-ilG_U-cQLRdTLyRrL5RfQbWX0qzefpGxONrmTNRd2ED0qm8OMO9S6rRuLeEXo7vX7O6iJYMBu-QmZNvH0JNf8d2I7-QI1UV8_1NwYm0ksL29ba7rAttORbbPFbH6Wbc-z61KQ6kVz_QsRZGudd3WikR3GP8CPrSqBrrNA12wOORlmnQwM4VWX2BOtf5EMqtOIvzMr_CEK-oXpP4BbT13AbTbkFgOmNMsGWB2f38L5L6esYySgbD6kLIaS0uQS7vjDqP6nmqgj_DxDeTMEdspD104TnMQDwL9I1lbwKHtwlv8lI41LvE6p7hu8S_GuyY_xTKdQoPFi7JkLeJ9n9iquzuTpDxDxlmP9vdj13A3JxfEoUhaAz4mUpyj9NzHVMRFQFe5izVjJ4tzKJEKKl1q2GglSg27c1lu3JLLZ01JrqIvq5Seomj5j_tKKbqfPpVr3vIGKC4hw3m9a27Sa0K8g2PIQKA_rplbw_21h05iQEEWeNs2T4gY2vbqDRgxK0lZmw6ACA99p2AXZ7Byxj1JWn1vTtGbNKzhDpqf0VNuh2NdMrKTQbX1IRrvSXw2vhqtAdDQZHplsHs-SYb_WPF0vHkRogDtOtkJqw6n-ILbOPmNkPwFhoB6AKLr77HJvPVixBlVXksF_gfhOLb9u-E6lT0RsT1UZrkwVF1u7Xj0R9rrk_1uudmzyURjV6m5tsIcvUK6EuR-5wL7scnFrxYcXbaDuJum_3mfP8JxLbtN6rwoiRbhLW5CiLLJvgfKe5LZs3aKyckHhV8FH_rh8eOy2bi8f8TqYgR7Bcmw2pWUxD_S4J0rD8uExRPkANen8sZCyOv69KN4OToA3WFKlkOG4iId418qyd3BzHwKegbYGfsBJg5cfAAzWJSmjCwp5GCL8SexHoQ0RFAKI_eDM39bo8l7hMQZKBCuFtMQwj-dBUPVwj7rsJSWvob_S9fJD02MLwAfpc1zM53g-Q5Qmm5pw8daGH90R1cfZfp8vLMMrtJecXV4HjzBQYTFSIaVJjHrSV8mjG2sDRR5qUlV-T8BtgZ3SZzR72D66SBPsvzLF929suY5OKakdfwtHyqDfssu2N8rx6t72txm6vJCSqioI_bophUV69Bcvu_OdVbKSdU0EGw_ik_Y7TCfSzZmkGm3i9lPlYQI5NNhs6PNzkviHgmhO7WTDLSbHYlDZFmyMItzo_vWou-EmeP_eVlkeg-TysM_tm7hjBFcp7w8Zf5bFhHriTxlidNo6m7HFYmCDUyeBh6T0gZRQvQQ8fttmlz7zdGiH7j46naVxOs-DoP4f5xcXJdzx2d2gCGgf5TAFxQv2Ju0ulJNXk2pviyDujxraCm-lud-ougwyjB_BjFc54GQ65iRP5-_l5GdZ6LcJ-VkWn7g2byX1ryL5-CStO0A7l8PhcuuHMpmnwTSchplaAXG6eJPJu8HvILc4kVS8ZYG_kMkLZ-WOmoC7bDT_4yIpPM4-iemxu0C0fH009cbsftG0xaIKYIcbzEWekmSOunsHl5Pruj1eNLGCx3cfpnGeos2m4oUN2kSZzXtuP1Dd9jdO_E_30vXj7kGkU2y_B_LH-VqSFoC85MtSbjs-qn64_QhKuc1f7yOo7JYM7uKt9WF_T9BfBoVnbtxNWpSkU4uu1YCu98hIpAEQH-Tyi4EYtAeluRQoWUziSWwbvu_i4GT7jivAR7caXSidxuWO7AQyO67RE9HoRbbKDgOxddtSlAhbhAz5CoigSsqvUbq-YjcpW6QLcgU3yTxJ4yzJ49nV7qYgjEAyTRnDUBZZgjGbZSRPy2k2yxLGrvgNjvE0nibTGKdxPJsUJSNJjgktkgVN5iSaxlATXk2srhOptlfueuRNnmfT-KoiBVTaXcLGWMATci8jjKPZ3ZW6cfwU7VZH07ji2uhjL4abCm4st2t_vRGfdxc0whiR0oDqub5qVXXzx-94Oj3-PwAA__8SWgDD">