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

    <tr>
        <th>Summary</th>
        <td>
            [AVR] crash in SelectionDAG
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AVR
      </td>
    </tr>

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

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

<pre>
    The following C code leads crash

```
// a.c
void foo(int);
__flash const int *aff1(__flash const int *p) {
 foo(*p);
        return p + 1;
}
```

Command:

```
clang a.c -O3 -Wall -S --target=avr -mmcu=atmega328
```

Crash message:

```
/usr/include/c++/7/bits/stl_vector.h:797: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = llvm::SUnit; _Alloc = std::allocator<llvm::SUnit>; std::vector<_Tp, _Alloc>::reference = llvm::SUnit&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' 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: ./bin/clang a.c -O3 -Wall -S --target=avr -mmcu=atmega328
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'a.c'.
4.      Running pass 'AVR DAG->DAG Instruction Selection' on function '@aff1'
 #0 0x000055fe55588aaa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/clang+0x2171aaa)
 #1 0x000055fe5558677c llvm::sys::CleanupOnSignal(unsigned long) (./bin/clang+0x216f77c)
 #2 0x000055fe554e4ee8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f9b3236b420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f9b31e0800b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f9b31de7859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #6 0x000055fe54229b82 (./bin/clang+0xe12b82)
 #7 0x000055fe565ad63f llvm::ScheduleDAGSDNodes::AddSchedEdges() (./bin/clang+0x319663f)
 #8 0x000055fe565a8aba (anonymous namespace)::ScheduleDAGRRList::Schedule() ScheduleDAGRRList.cpp:0:0
 #9 0x000055fe564ed17a llvm::SelectionDAGISel::CodeGenAndEmitDAG() (./bin/clang+0x30d617a)
#10 0x000055fe564f0219 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (./bin/clang+0x30d9219)
#11 0x000055fe564f22be llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.971) SelectionDAGISel.cpp:0:0
#12 0x000055fe54971bd2 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.72) MachineFunctionPass.cpp:0:0
#13 0x000055fe54eb42a6 llvm::FPPassManager::runOnFunction(llvm::Function&) (./bin/clang+0x1a9d2a6)
#14 0x000055fe54eb4531 llvm::FPPassManager::runOnModule(llvm::Module&) (./bin/clang+0x1a9d531)
#15 0x000055fe54eb4fc2 llvm::legacy::PassManagerImpl::run(llvm::Module&) (./bin/clang+0x1a9dfc2)
#16 0x000055fe5590bf06 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>>) (./bin/clang+0x24f4f06)
#17 0x000055fe566218c9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) crtstuff.c:0:0
#18 0x000055fe57327359 clang::ParseAST(clang::Sema&, bool, bool) (./bin/clang+0x3f10359)
#19 0x000055fe5662241d clang::CodeGenAction::ExecuteAction() (./bin/clang+0x320b41d)
#20 0x000055fe560056a1 clang::FrontendAction::Execute() (./bin/clang+0x2bee6a1)
#21 0x000055fe55f98fea clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (./bin/clang+0x2b81fea)
#22 0x000055fe560db047 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (./bin/clang+0x2cc4047)
#23 0x000055fe5423323c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (./bin/clang+0xe1c23c)
#24 0x000055fe5422e1bf ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#25 0x000055fe55e1d015 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::'lambda'()>(long) Job.cpp:0:0
#26 0x000055fe554e5673 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (./bin/clang+0x20ce673)
#27 0x000055fe55e1f948 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (./bin/clang+0x2a08948)
#28 0x000055fe55dee7eb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (./bin/clang+0x29d77eb)
#29 0x000055fe55def343 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (./bin/clang+0x29d8343)
#30 0x000055fe55df61d9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (./bin/clang+0x29df1d9)
#31 0x000055fe54230ebd clang_main(int, char**) (./bin/clang+0xe19ebd)
#32 0x00007f9b31de9083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#33 0x000055fe5422917e _start (./bin/clang+0xe1217e)
clang-16: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 16.0.0 (git@github.com:llvm/llvm-project.git e4a7b328205e791e9eeafa85f0b19e6d062fe8cc)
Target: avr
Thread model: posix
InstalledDir: /home/benshi/work/llvm-project/build/./bin
clang-16: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /tmp/a-7d51fa.c
clang-16: note: diagnostic msg: /tmp/a-7d51fa.sh
clang-16: note: diagnostic msg:

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWVtT4zgW_jXmRUXKlu8PPJiE0D3VM1AkM_OYkqXjRNu25JVkGubXb0l2gh2SQM9s7ct20ZDodj6dy3eOJKI13wqAGy--9TAuQegd9_3Aw9iLF1ekMzupbg7NV6VkrzfrHaBK1rX8wcUWzRGVDFANhGlEFdE7z194fjH8Tvzhp_-Klx5eIjKj_fdnyRmqpPRwxoXxcO6Ft33PZlPVRO8QlUIbxIVBHi5IVQUezk72tR7OkZcO04dFh_bDqmj4p8B0SqAWefgWBYduL12chu1-z2XTEMG8sLiwQ1oTsbUbRNcPIbr-k9Q1ul6h62tD1BaMFy7Is0LXTUM7-9k0sCUhzi6JtTpFDWhNtnBZuIeXnVYeXnJB646Bh5fUw7fuZ5l6eFlyoz281KbePAM1Us12XlikeeqFBdLG7S0s-i4vnG_WrYfnaFPUtaReeNd3K6hAgaDw6RmyBUXsgPjWixcezj47UfO_YGNeW3DGjW9_cLNDm3WLvHCB6vq56YetfhfceOHtMN31HkQQ20R6Ke-m3NlZP7_xU-Jx8jNrHXbWryXFFnXCBSOzHm3VFBao0BqU4VIgD6ebTdnx2nCxgZcWqHGRIJAXzpHZcX3thXd2Vef2uRVpVAfuY4oqwmtgs95NHr_dFas7pLuy4QYRVHZbpKCVyiAj0c6YVluQLla33Oy6ckZl4-Gl23L_57pV8l8OxJJr3YF2cS0seOd6yOygpwNUEvrdKELBYmoVtEpS0BoY0rJTfbOdSbSWlBMDDKlOIE0Vb80AeWUI_Y5Y17SHCPBn6FHJrSINImrbNSCMhY1mzs-F9f1_EovBrKcKL5yDrLzwDrVEaVCIGASCIVmhitfQD8bD4Lmlwi0I6-5cir4zHDqfOiEsY7ZEa2vPZSeos-2jbfiVCLIFZY0lBWok62qwoyxX4nRQQ3RmqeKPJ7Qo7q0LLIp79FVoo7p-8RXU4D4NK1d7qR5OvcjvKTUd6NHDoY_8F9_3_TiuII7jLCOEjHxdv-r-w6PiwjizrHvbZm-DFPmxkdooII0NCzxHPbsjD2dH5vHwrf-CgzQghFhfPeAIjnAkaUpP4ZjXQETXPogV3wpSezg7xJGNqotSkypN6UQqnkiNIALIkGPgJ6DyGdRrL-YLEay21hry1nTMXAoDL2ZGW-uuvvt_EBEOItIqL0McJmWEfbTZKNBGKtgom80yG2W89PDyJUs2SXRdc9G9XG9F13e0ZqeAsJmWM9_tJYgi7E92Eo3FBOBnvl8iRbi2XrW0TMJseNe8pNerv77-ld4evuJZGNgsMSh0ObPa06-aQWvDvBP8pW94dmhEZ7-6pWfUC4s48MIieEMST5AwSLM4R6SUbqefQ2JYrw03ywnJrJCR2yZjw0UY52WGzxkeAlxmeKKtdDw9iQlLwmrM8HQHNiAXxf1q8ZtkMDhfwZjrumNby4DZBW8LgzxJwmoiNTuSmpGS2PlESPHayE4jQRrQrYuv_B2Up6dvXJtp8wDi3ajTvphPAETAgnQc7AfuWBT3X1dQDxEnGdyDKAS7a7hZFPcfbNxnSZC-BbeNbX8qt_JxkH8ot28t6vqWaE5va0m_6wntHAjVFYaOeS6hynGQT1AFR6hsQfwhKtWJB_EroTsuYA9ggupd3wFWS5SZ5WngDHa0-Ht7WYQTeoryNCgZRmdF2bwyAnkS3TlYqY0PdGLB08DCCTAoI0ySEbDlo526T3E_D-mEAQOSM0ySiQGjYxRxGHwCxa9yiJyRJoemjxDElp9GCOJjBBUdG6iGLaGvQwJ9w_K1ad-86W_hqCie4JjQYZz7ZeUnqJ_i1rWRe0vodxDsoTNtZ4vJUfeCk62Q2nCq78SWCxjS-GjIFyAM1AqIoruH1tpLj-JuMnQgjA9GrV1R9sGgb0RsTw0ZRalRXGyfoJo27xVZHC04KKEYPG7-VsB3gv-7g01rpgcHW9u0PxQ3sNlXOKNJDCrS1WbDoAYDH0y0Z4G7SwVKVEWVP3XxaaJKcJDR_MR-5lLortl7eV-trBURunaFaX9gGVu8WK2HqmVwNqqMNl1VuWx7FO2TvJWGOA3jCYhHWykXq_VUxAoaMpirlLJ--3uepKvAD-MpSedHCsBRwE4422DQ3tlfgHYG9ja-mKywX0YBG0vE02Tl-3FCgrHEpbKKO_jQWORlYbgESMiEQPC07K3yrAIy3V7T8hqULfGJoHB6h-fRXWQSXGZBBZNUjfF096z0o3TCJL3oN1zP9rT9DsY73DYSzwOhNPKjdAJkmmJwGOKQIkqDTUP4lDQLpcirZYBwTndE7YmicNE2R9M2PEfPkrPLeCCgOKQTONFRwQlBWaG9MubB2nn2CNSqIXX9h7sU6On-BDZnG6b4M6iTaRZP0ksMAfOD2MEfMd3-gLdRTgOud7gT2F8-UFLX9lS-qYTF8WalXvZgsXkwuvEau_RJTR8oUDp6JvX0uuXAygPpjThzs6EvL0HQfyltbWcJkltMTkeTwbZhYxTh9rDfdx8tN77v2ffbIcUb4ThT95p3Uzyc1qQpGbEn4YOqcLY_QP4iy9P2SI6Oi3GShiNTnDoU9j1PnViRCurXiTovm-5CuPgUkjSc-Gd65CpVHmXo_9nUZ5VH_CyPsonyJgkuZgAplGeV55iNvOP-vUYnNHg00Q44V-pcGFpM0uhH-8tZmkI52V9-tL8qjMKf3d8vstTnN_eLLO2x81yR9o4MDzZtCbfmdNcqn9fHYPif0koWRpOQObr6YlUSsPwcgsXo8yQFnsh957T5P9TKeerIWRWwSYk1vXqLcOhDOZRY-1y7x-FCtvgod-ZQTiqqwy3b_kYo97MQbTY1Ly0fEGWcnM_eDlHd7S-p-o-u063jitcwwvb3m_jw-K4oSAH1gi9cGQUpHDbhOq6DxAsLBEpZAip6DaFqqLcQHazRX70j93QBL9z072VBGFlZnQZ0_YyMRBoA8VHxNJaEnkFpLgUKkpk_8-3ELTde5I9u58PixO38bMsNgoikZYgz7MeQ5gHkAKQiWVz5ZZBDwvwEV5DRt_JmPVyPF4g8q6HJ3TeiRjJ374FaqflL3-UquroGtuBODR5e7mQDVonu3dDDyx9SfX__brC37V7f7zQrpD1CFYgdTqOo0du3JzD8D35Gj2jDc0ixXhfzL2j95Q4tH759e_jz62_3aPn1290KrR9c8-3v9-jp7vHhaX3A8HjqOSPTNhzOPmkcBihALn8BQ8QclvyUBqyWTdN6eEmuUxYH1eFJ9e9O37_b_owB_ltm2L9iXrGbkOVhTq7gJkjSMIx8jPHV7iZIK1JSiFiOacICGmOcJanvJ2mVVVGZXfEb7OPQDwLfz6IwwjNMkrQkJKiCjPk5rrzIh4bwemadcCbV9so9W93EeR5EVzUpodb7V_D-CG1rnj-ehpdwdeOct-y22ov8mmuj31Yy3NTuCd2OjxfDsxcXk0u9q07VN3__bc3h_E8AAAD__wcjUfo">