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

    <tr>
        <th>Summary</th>
        <td>
            [AVR] clang/llvm crashed with a simple test program
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    [a.ii.txt](https://github.com/user-attachments/files/19367224/a.ii.txt)

with the attached a.ii, run `clang++ a.ii -c -Os --target=avr -mmcu=atmega328`, clang crash with info

```bash+++
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp:30:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:164:38: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 164 | extern const uint16_t __attribute__((__progmem__)) port_to_mode_PGM[];
      | ^~~~~~~~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:165:38: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 165 | extern const uint16_t __attribute__((__progmem__)) port_to_input_PGM[];
      | ^~~~~~~~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:166:38: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 166 | extern const uint16_t __attribute__((__progmem__)) port_to_output_PGM[];
      | ^~~~~~~~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:168:37: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 168 | extern const uint8_t __attribute__((__progmem__)) digital_pin_to_port_PGM[];
      | ^~~~~~~~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:170:37: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 170 | extern const uint8_t __attribute__((__progmem__)) digital_pin_to_bit_mask_PGM[];
      | ^~~~~~~~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:171:37: warning: unknown attribute '__progmem__' ignored [-Wunknown-attributes]
 171 | extern const uint8_t __attribute__((__progmem__)) digital_pin_to_timer_PGM[];
      | ^~~~~~~~~~~

# After AVR pseudo instruction expansion pass
# Machine code for function _ZN14HardwareSerial9availableEv: NoPHIs, TracksLiveness, NoVRegs, TiedOpsRewritten, TracksDebugUserValues
Function Live Ins: $r25r24

bb.0.entry:
  liveins: $r25r24
  $r31r30 = MOVWRdRr killed $r25r24
  $r24 = LDDRdPtrQ $r31r30, 25 :: (volatile dereferenceable load (s8) from %ir._rx_buffer_head, !tbaa !3)
  $r18 = LDDRdPtrQ killed $r31r30, 26 :: (volatile dereferenceable load (s8) from %ir._rx_buffer_tail, !tbaa !14)
  $r24 = SUBRdRr $r24(tied-def 0), $r18, implicit-def $sreg
  $r25 = SBCRdRr $r25(tied-def 0), $r19, implicit-def dead $sreg, implicit killed $sreg
  $r24 = ANDIRdK killed $r24(tied-def 0), 63, implicit-def dead $sreg
  $r25 = ANDIRdK killed undef $r25(tied-def 0), 0, implicit-def dead $sreg
  RET implicit $r25r24, implicit $r1

# End machine code for function _ZN14HardwareSerial9availableEv.

*** Bad machine code: Using an undefined physical register ***
- function: _ZN14HardwareSerial9availableEv
- basic block: %bb.0 entry (0x64af49c64710)
- instruction: $r25 = SBCRdRr $r25(tied-def 0), $r19, implicit-def dead $sreg, implicit killed $sreg
- operand 1:   $r25(tied-def 0)

*** Bad machine code: Using an undefined physical register ***
- function:    _ZN14HardwareSerial9availableEv
- basic block: %bb.0 entry (0x64af49c64710)
- instruction: $r25 = SBCRdRr $r25(tied-def 0), $r19, implicit-def dead $sreg, implicit killed $sreg
- operand 2:   $r19
fatal error: error in backend: Found 2 machine code errors.
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: clang++ a.ii --target=avr -mmcu=atmega328 -c -Os
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '/usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp'.
4.      Running pass 'Verify generated machine code' on function '@_ZN14HardwareSerial9availableEv'
 #0 0x000064af1e026060 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x2800060)
 #1 0x000064af1e02295f llvm::sys::RunSignalHandlers() (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x27fc95f)
 #2 0x000064af1defe80a llvm::CrashRecoveryContext::HandleExit(int) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x26d880a)
 #3 0x000064af1e01cc12 llvm::sys::Process::Exit(int, bool) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x27f6c12)
 #4 0x000064af1c52e321 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x000064af1df180c0 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x26f20c0)
 #6 0x000064af1d15286b (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x192c86b)
 #7 0x000064af1d15290a (anonymous namespace)::MachineVerifier::~MachineVerifier() MachineVerifier.cpp:0:0
 #8 0x000064af1d16e95d (anonymous namespace)::MachineVerifierLegacyPass::runOnMachineFunction(llvm::MachineFunction&) (.part.0) MachineVerifier.cpp:0:0
 #9 0x000064af1d16e9a9 (anonymous namespace)::MachineVerifierLegacyPass::runOnMachineFunction(llvm::MachineFunction&) MachineVerifier.cpp:0:0
#10 0x000064af1d049ab8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#11 0x000064af1d8ec1bd llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x20c61bd)
#12 0x000064af1d8ec719 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x20c6719)
#13 0x000064af1d8ed6d1 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x20c76d1)
#14 0x000064af1e35330f clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x2b2d30f)
#15 0x000064af1eadf191 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x32b9191)
#16 0x000064af20b4b65d clang::ParseAST(clang::Sema&, bool, bool) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x532565d)
#17 0x000064af1ee79649 clang::FrontendAction::Execute() (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x3653649)
#18 0x000064af1edd3afe clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x35adafe)
#19 0x000064af1ef99828 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x3773828)
#20 0x000064af1c53510b cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0xd0f10b)
#21 0x000064af1c526bea ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#22 0x000064af1eb446ad 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
#23 0x000064af1defe740 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x26d8740)
#24 0x000064af1eb46cfe clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#25 0x000064af1eaefe51 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x32c9e51)
#26 0x000064af1eaf0f71 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x32caf71)
#27 0x000064af1eb01444 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0x32db444)
#28 0x000064af1c52ce8e clang_main(int, char**, llvm::ToolContext const&) (/home/wujie/benshi/llvm-project/build/bin/clang-21+0xd06e8e)
#29 0x000064af1c45cc7b main (/home/wujie/benshi/llvm-project/build/bin/clang-21+0xc36c7b)
#30 0x0000724a69c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#31 0x0000724a69c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#32 0x000064af1c526315 _start (/home/wujie/benshi/llvm-project/build/bin/clang-21+0xd00315)
clang++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 21.0.0git (git@github.com:benshi001/llvm-project.git db000cf7c012ebe8d7fb30e47089b61b7ad9c045)
Target: avr
Thread model: posix
InstalledDir: /home/wujie/benshi/llvm-project/build/bin
Build config: +assertions, +expensive-checks
clang++: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWt1u47iSfhrlhrBBUf8XuXCc5EzPdk9nk0wfYG8EiizZPJEoLUk5zs159gUp2ZKcpLtn4MwsdgMHlvlT9fFjsapIimotNhLg0ouuPEIKkHorMPY9Qrzo-oJ2Ztuoy2PxRdHwF9uWLoVYmr3xomuPpFtjWu0FK4_ceuR2I8y2K5asqT1y22lQC2oMZdsapNEeuS1FBfbbz4I4IST0yO1RHMk8vPLw6lmYLTJbQH1X4Mg28cgaqU4iL8asonLjkSuPXLkqtGBo8VWjxcJQtQHjBdd0p9Cirllnn00NGxqQ1IuxleK6I6ao3iKnS8iy6VXbFu5TUL3tNdgPXn2SyEJHQrKq48BRqZoauTEqj9zqLVVgx6J4J2TjkdstVfz5tJDubGPWKMfBWP7L0PgBlKDVkrWtF6wCbFnFq3MpWfVPy60XrPw4tBpSL1ihZ6qkkBv72Mkn2TxLS7wSRWcAeSTJ81Y1mxrqPPdIgsRGNgo48qKrxT-HDotjB22NAq-QH4fIS9YI9gaURKyR2qBOSOPHuUF5fuxghaYeSWdaMo9kqG2UyU2T1w2H_O4fX6yVRtdeYKcDuT-rwItu_n38-zC2oo9mKzoXW0K2nfm76Yo_mq74XHQ1nflfwJelKkg-kK_0bb7Sn6WLi40wtMpbIS1rjr2_l7MEfzBnCT4vZ4UweU3109_Nm__RvPnn5c2IGtQfIM3yFqBVaUCh1bd71GroeIOE1EZ1zIhGIti3VGr71FKthx5fKNsKCYg1HFDZKFR2sm-e_9dvfjgP0RndUVHRooKbneXvt-bul0_aJhePirIn_VnsQIJ2Jb813-5h01cK4F9bfQ_PShgDcuxwDUW3-V2D-karDiym24N6Kwt9kjbHQh4JFYkUCfuRFsUSL0Ea9dKnCghVYgfidVvkfgW-CjDygmv05eu3f97ze4WeRFXZOX3VloSu4efr63t-Z9R_jgIsaBIhq9FpSXdNRY1NjjgoKEGBZGCpQVVDrehUp3Zeh4wpEmqZq31edGUJKt8C5VaiR3xTUGq_gz4T7HH46QmOCeIRTnwuOIaK6gSOH07xDLw8_H7l-OuLPJIaAXzBoUTYmfF6AG-fRN1Wggnjqj0SagWbUV7Uy7taj_Kid-Vlr-RxcIPqhU4qJzzN9fX4V79df7rn_zGb_zeHEQffV3kyjhO5nRzG_M6g8I-F3988joMa7XQ6VEfNuPZvJEf1n13Ny4Oc4YOu6FyatbLftZAbRGU_PiGBo3b7ogWjFVKwEdo6n6MID68WR_22-48cim1fUC0YKqqGPfV2HdnFjtxit0aM93FIyzBjcZj4uLfQxdTLjS7grzKwBWpaUFRyZGMMQu_p-niCEfq_zzEZOfYtsJIaWiFQqlG2xj0gIVFB2RNIbstum852nC8O11Bbs7_7fLN6uEG6K2phEEVFt0EKbK6HTIO-s8-vqt3ha9Gq5l_AjEduhdady0SQhTtsnN2-vt96W2BGUQZ2xK2CVjUMtAaOdNOpvtj2pFo3TFAD3O3_NVOiNRbvg6HsCfGubvvoh5cezu5Us1G0RlRtuv7QIVih1wcGPzgpGE4UPLzyrVAvWENTesENaqnSoBA1CCRHTelOBTy8IrbZ2vK5AQmKOuvAq8AW33fS5lku2bB51TGy39mCL1TSDSibYTUS1Q3vKpd9feDZAkksfeFb2L6BEuXLYRBwsjJ7jEdXalGG-EcrjSTWj3skwAjvMcbYLiofMIlxjJGzHRe79YvuH-6UkMZN7mNvHunYSNHnvNFGAa09Eru1Io0N5y6bvN02tWXlufuXsN_92dVr0yw6UXH7LaTlzFrHgvgeucJ7klqEw2K3qP0T1CSLyrdQ33fyQWwkrX6hklegtEN0RmBJybKoHIGRKTAOJaSYToCt7SK7B9bsQL2sG2lgb_qaHuDNXhiPpOemL-ZpiumIMpjT5zPmk7cn3a3-_scU2xoVTVOdmcmY-WTEGE4xsohAQHz0-fO3LzfWNw7z6TJLwV3EWSO2parf3AwFB5CM-XlNhRwO8bD779VEswkr_RSzqf33rjZ3fjzv_fjU8h-f-2XoVMYfwktcEswmph_PAPsRSePibNr8jLA0LkZtyam2DNv8O6WykS9102kkaQ26dS4h60kZNm3OawlQfeG_T0v7hXhS-sYEpXMEMWQR_4MIPsOGshfr2IdJ7eRXObQ5-P3ZtL6qi4cpXbZUmSX-OeTZK-Q0-3uQfx-r9aezMMBxmNEiRe-KPQH0JpKfIW8q7w1QMy_PU2B-wSegbu9sv0Oo_sNwzrM8MYv9gg8ZNAl8coo58bOfwPzFpRjzqRyKzo43scnuAW9wgpfH3J_grZwBDtFgRP6pbqsj-r8EdRJzf0Q9Cw4QREGAyyGhdCigFuaqz7G_usNkj6ST6nVTt6IC9UlqQyWDwXfPWnD4B8ivrbUZPdSPo3wwSsjNPZTz4sPgVyfSBiirwQKnXT5JozotdnAP5VqaO6O8YD1W78phod2KCh5etIHaC26sCG14X9NJ8d8d5O1JT5uUtc9KGMgPqdmkE4eSdpXJOVRg4Acdg5tB5-shrRupu9q689VZJ7wgPMDlOOGzMA2Ul37mfw_OJKd6VFTqyiX_v0txYgmrh8dDGnZekw1IkfnZxGSncZvgIiziiE9HcGc3MauHxzm-B6jpLLM4f4YRBSSKo4kLm8V8gCSLw2yK9FZZxo7mPCSHwDoDZ06vgzgK4nDirWbJAHAe0BLQ9xb2FNxh-aXvj-XMNhBRTksY4c8yAiizLCXpFP4AdBzFrmH0NejX7uusiy9IkiB1E9nDJnieigeRj4tjTj3z_iul6It1i8F6nowP_uM0QT8m7-dDz3Hp42IE75_sI-ICKDoQvfYf3WqaDOGhplX1DZhphij3xkhOooGVMXiRyV4gQ1yJ3VvZFpklCVCEYUy542Ii9LChz5Wj09X2y8v5Y9uE0aoqKHvKS2lhjgbSKx6MZe2vm7qmkp-u1Den7RghGhf6aDWLDWPcO8aEY4c8Z_u97_c_3CmejR_uLstROGtsC3KjqDD6UH0ijlaVNf5GTeptk8nGztlNT7jr4pGkonXBqTupOVBF0qqRG9v016Z4YzKC0y17EuKf2rLfd_KBllC9zLj8_rydeVefhHi09PDEqmI2d47_76ziZNPx9vSfZBZQQuS_y5pzvPRV2DtQOfPSJx1tg9lJwc81XZ2cKxwHdqYshWUQjVkKiedslLhM_jAbvzaFfp-KX5vis9BmRsX3vO9x6lsq7KwP508_y95gHx_LIS2TCYfz_KnAfhiG7-G9njzPov8bYf897v9CDs-ZH_MiDMORtfQkTjNIB-91SDMOqJ3XWA1r_sdR-HyJRQzpmMyRWTLHwoixpEAW6tk0siBmyZjKHM_qExLSOGMk4xkelFWi8MjtPo3zOFxUQnb7xUZ2fQVb6mYZ9zHDdhkF-qcCIcQoz22fXBuqTD4Zz0-rgElQmh-I2_TL7uV64WecGRz4Ua9zcqt0vHE73jahckj3ERtsvKSiAt6_cQp7Yfrrt8TR2mlAix0yDdIASEyS8aMitAPl3lkh_hIv8cbde6cbYbwQT27jgtXkPd7ZwJa2Cy8wxqxMGPYJFJDypCwCDGGC06yI_SKhPGM4HEb4OFySrRDdKft7q4ByVDccKlvaNlrs3dux2tCqAn4tVH8n-meoxqsr-8uuqFJsejlXVGtQw8nI2hbAvgWpxQ4WbAvsSb-eCNkYd4nMBd3IRhvBUK2dPHeef7yhk5u3rx1TbdfyAslmUu_eIHEvV7q70uOLwhf8MuBZkNELuPSTkIRJhNPsYntZBBSzgGJKgyTzeRSWRerzLE59ziAM2IW4JJhEOCDYJ5FP0iUukjQFiNIo88MQiBdiqKmolpazZaM2F-5K9dIPCMHBRUULqPTw8vZAgXtxW106kotuo70QV0IbPYowwlTuje_Vt3svuj5cjbp56S9mDzZKkRZ1WwEyoA1q-3vVi05Vl3_-KniAvrsk_xMAAP__7Flyfg">