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

    <tr>
        <th>Summary</th>
        <td>
            Assertion failure with packed BitInt in struct: "Illegal bit extraction"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:ARM,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    This code causes an assertion failure when compiled for an AArch32 target at all optimisation levels except -O0:

```c
struct S115 {
  unsigned _BitInt(72) M0 __attribute__((packed));
};

void F74 (struct S115 P3);

void F73 () {
  struct S115 P3 = (struct S115){1};
 F74(P3);
}
```

```
$ /work/llvm/build/bin/clang --target=arm--none-eabi -march=armv8-a -c test.c -O
clang: /work/llvm/llvm-project/llvm/lib/Support/APInt.cpp:455: llvm::APInt llvm::APInt::extractBits(unsigned int, unsigned int) const: Assertion `bitPosition < BitWidth && (numBits + bitPosition) <= BitWidth && "Illegal bit extraction"' 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: /work/llvm/build/bin/clang --target=arm--none-eabi -march=armv8-a -c test.c -O
1.      <eof> parser at end of file
2. Optimizer
 #0 0x0000561d61b4c3e7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/build/bin/clang+0x4d4c3e7)
 #1 0x0000561d61b49f9e llvm::sys::RunSignalHandlers() (/work/llvm/build/bin/clang+0x4d49f9e)
 #2 0x0000561d61ab6228 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f21da642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f21da6969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f21da6969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f21da6969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f21da642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f21da6287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007f21da62871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f21da639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000561d61a8a1fb (/work/llvm/build/bin/clang+0x4c8a1fb)
#12 0x0000561d60cc1248 (anonymous namespace)::ReadDataFromGlobal(llvm::Constant*, unsigned long, unsigned char*, unsigned int, llvm::DataLayout const&) ConstantFolding.cpp:0:0
#13 0x0000561d60cc1092 (anonymous namespace)::ReadDataFromGlobal(llvm::Constant*, unsigned long, unsigned char*, unsigned int, llvm::DataLayout const&) ConstantFolding.cpp:0:0
#14 0x0000561d60cc1aa5 (anonymous namespace)::FoldReinterpretLoadFromConst(llvm::Constant*, llvm::Type*, long, llvm::DataLayout const&) ConstantFolding.cpp:0:0
#15 0x0000561d60cc193e llvm::ConstantFoldLoadFromConst(llvm::Constant*, llvm::Type*, llvm::APInt const&, llvm::DataLayout const&) (/work/llvm/build/bin/clang+0x3ec193e)
#16 0x0000561d60cc217b llvm::ConstantFoldLoadFromConstPtr(llvm::Constant*, llvm::Type*, llvm::APInt, llvm::DataLayout const&) (/work/llvm/build/bin/clang+0x3ec217b)
#17 0x0000561d60cc22bb llvm::ConstantFoldLoadFromConstPtr(llvm::Constant*, llvm::Type*, llvm::DataLayout const&) (/work/llvm/build/bin/clang+0x3ec22bb)
#18 0x0000561d60d1c944 simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) InstructionSimplify.cpp:0:0
#19 0x0000561d60d1d01c llvm::simplifyInstruction(llvm::Instruction*, llvm::SimplifyQuery const&) (/work/llvm/build/bin/clang+0x3f1d01c)
#20 0x0000561d61951e25 (anonymous namespace)::EarlyCSE::processNode(llvm::DomTreeNodeBase<llvm::BasicBlock>*) EarlyCSE.cpp:0:0
#21 0x0000561d6194fc4d (anonymous namespace)::EarlyCSE::run() EarlyCSE.cpp:0:0
#22 0x0000561d6194f725 llvm::EarlyCSEPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/work/llvm/build/bin/clang+0x4b4f725)
#23 0x0000561d62342e9d llvm::detail::PassModel<llvm::Function, llvm::EarlyCSEPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) BackendUtil.cpp:0:0
#24 0x0000561d6167d766 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/work/llvm/build/bin/clang+0x487d766)
#25 0x0000561d6064e54d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) X86CodeGenPassBuilder.cpp:0:0
#26 0x0000561d61681b9e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/work/llvm/build/bin/clang+0x4881b9e)
#27 0x0000561d6064e2fd llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) X86CodeGenPassBuilder.cpp:0:0
#28 0x0000561d6167c926 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/work/llvm/build/bin/clang+0x487c926)
#29 0x0000561d6233ce62 (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
#30 0x0000561d62332f58 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, 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*) (/work/llvm/build/bin/clang+0x5532f58)
#31 0x0000561d6235731f clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/work/llvm/build/bin/clang+0x555731f)
#32 0x0000561d641e30c7 clang::ParseAST(clang::Sema&, bool, bool) (/work/llvm/build/bin/clang+0x73e30c7)
#33 0x0000561d627cc640 clang::FrontendAction::Execute() (/work/llvm/build/bin/clang+0x59cc640)
#34 0x0000561d6273807f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/work/llvm/build/bin/clang+0x593807f)
#35 0x0000561d628ba0e7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/work/llvm/build/bin/clang+0x5aba0e7)
#36 0x0000561d60342f5a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/work/llvm/build/bin/clang+0x3542f5a)
#37 0x0000561d6033f8e1 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#38 0x0000561d6257dec9 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.cpp:0:0
#39 0x0000561d61ab5f6b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/work/llvm/build/bin/clang+0x4cb5f6b)
#40 0x0000561d6257d5d0 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/work/llvm/build/bin/clang+0x577d5d0)
#41 0x0000561d62537c88 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/work/llvm/build/bin/clang+0x5737c88)
#42 0x0000561d62537f47 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/work/llvm/build/bin/clang+0x5737f47)
#43 0x0000561d62559447 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/work/llvm/build/bin/clang+0x5759447)
#44 0x0000561d6033efee clang_main(int, char**, llvm::ToolContext const&) (/work/llvm/build/bin/clang+0x353efee)
#45 0x0000561d6034fcc7 main (/work/llvm/build/bin/clang+0x354fcc7)
#46 0x00007f21da629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#47 0x00007f21da629e40 call_init ./csu/../csu/libc-start.c:128:20
#48 0x00007f21da629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#49 0x0000561d6033d125 _start (/work/llvm/build/bin/clang+0x353d125)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 19.0.0git (git@github.com:llvm/llvm-project.git a1f4ac7704255627ac33ad67a22be5ac030f6179)
Target: arm-unknown-none-eabi
Thread model: posix
InstalledDir: /work/llvm/build/bin
clang: note: diagnostic msg: 
********************

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

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl9z27qO_zTKC8ceidTfhzw4TnzaM-1NtvG5Z988FAXZ3EiilqTSZD_9DinZFhWnidOes3f2dtzYkkgAPwAEQApUKb5tAC696MqLri9op3dCXgqladNQWVzkoni-XO-4QkwUgBjtFChEG0SVAqm5aFBJedVJQN930CAm6pZXUKBSSDNssZBsRzDSVG5BI6oRrSokWs1rrqidX8EjVArBE4NWo9mt75GF5197_v5v7Pcf1l8rLTum0X0QRMhLrvqbCHWNhVKgzRXXnxvt4TTBHs7QVx9tNlRryfNOw2bj4dTDaUvZAxQezsyHDFS85Pr42_59FLxAqyREHk7HjO-IM288liDLIRsL505FHrmeEDTUkqtgLIBh6-F0wim5nmjlpKqGS2zkXn0X8sHDq6p6rD28yjteFeabNx5esYo2WzSb9fbxyDWV9WzWiAZmQHOOZjWVbNfff0xnFM0Y0qD0nKHZbc_FkvDI4iUr8zVrpfgvYHp0l-ceXt13bSukub24-9zoOWtbjyzCKDKU7Eiy8MjCPpxe9z_hSUvK9BXXysPpwfzcmH6J3OsMMdEoMxEtDo7rxX7O9Z1QvL8kS3TF9Z-80Dvk4djDsTFS09WGBfLwFRoNtwYmS2PJl5Pw56qCLa3MBDTIaedgDyd2wUAx77V39-VmcX-DVJfXXCOK8m6LJBjVIC3QTutWGbh45eHVlutdl8-ZqF_VMVeqA-XhFaKNwc6qrgCkd4CYpGqHcsoejDhgdNRKaKVgoBQUSIlO9rfNTKqUYJxqKJDsGqSY5K0eRL7XlD2goqvbw0r15-hOiq2kNaJy29XQaHXSJX659wVzZP95ZAmi9MgNaqlUIE2ogaZAokQlr6AfjOfo1oae_wE5LDIPEx_5T77v-1EcFHGQh4xAMnI59az6H3eSN9qCX_caTI-DJP2-EUpLoLX1guXe72wseFsJHr7yn8LC8jbr_SBcMBEuKzM4Jdy3rrnn24ZWn2hTVCDVPgidx9-Qd_hjhz_NY4xTtDS-9A2YeAT57LD1cDoAd8YsRaPhab_Kffv_wIIMLJISBwWNQxxhf5C7jxVPabyJw1nFm-5ptm26_gGbKzGPe8HNFEfs0KWZxVnJ0GbT6p0EWmweeFVteN1WYFy1z0NzD6-aVlceXo2HzZmJS6FHFkl8pB-9h36jQTa0-iHlJPXIIhhpIz5FeTzth-TSbEIumSo3TGK0VdZmllL_08Orub16VgW0JoC0QvEnD68k5QosbZx4ZDHSQeqSxmlSEkRzE7osKV305rO3eukCg_hIIXtBIcjRpqk2laDFphA15b1deGPhmtu12jLakwuCxIiU7bMdCXyXIMkgi89zJTvl4EqGprsCaUqDMj9vWTE7xyHqLCufsQCHqSFKG9E816JTqKE1qNbGmWxY4kCLa6rpSor6t0rkxmqjELQ0GY6axbdwEmAljByjG2xH5XTQkDWP1AyjL_RZdHpInSaqZWjPZCWqgjfblwvagCNTcH6G_9-AC6fgKI3eAmcIfgMbD1oJ-oughcG57Hm_DvP4YP3cwv7mAPnXwImmcDIyzi9jGj8p9qSmO0r6DijnLDcCFoSz3OIJShwk-XtQ3mn5s0D_CnxGfAdfMsWH878B3y8Cg3MXTOqAKQKWhSFSJlvz8vlz0--auGj-5Hp324KkTaEcFKMxL20iJX3-BqVHlseb_6RVZ-GRG3f0_cD1PzqQz47LTvcXI577SacXXDZBV_gBGxd0L3G-G9tr0p5pktLKNDYJdkvkLAoAvxn0bqisnpf3N_3VsNH4hyjcwvla1GsJYO5fUQWOWa6o4uyqEuzBGmZhkOypnlQudnN1FpYsLM6TU3bNUDn_mBOeckpwNDLFfvIdVWpM-Dhi1TWDFSchcNHQ6llx9ZU2dAvS0chhktHH2ZYNcyumY1knV2MSYsiKkTAFaMqrYf9DlfoqCqhOi-SAcPB_CB65-Uv1dkXZAzTFH5pXpw3s5PkgTookjkfcrDJ-xOlfEfRZzpJayI6zuMVCHEIU_gpn-ct0-a9og_9M46Uo4DdoDOwro32Qp10wdl0wDXJn7_9VFF0Fa7HnYegtCtpqIU8j6CecJf8w5YMeZCV2PCiZehAuz_OgPYblOxXxAaSvOcAvUN8Zxk8n8Ydl-D3x55R-_s9hnxl3DFTHazI3SREG8Zsbypua64VSUOfV8yeoWpCHg7LhDNAe-9zxFiremKJkf5BtKw-bHRaH8KN00T_pGv7fHWxa7SKW9Pum_S65hs3-FHA0qYCSdpXeFFCBhjcmDqErfg_btRDVbafbTq94b_X38JzMGjN8qQOzJehqkEP99VbedE9TMSG4jNIxWWOXgUgvg6v5a063jVCaM3XTbK1hpoJ9AlqAvAcq2c6YUjTKKc1HQ4fF9saotT1-fmPQF9psTw0Zld9a8mZr9hYnotNQrP_Ix8ZFvpad4o_wDcplY3dpY_s9lkNNacx3_6w01EO2-_vd9B0uc87qjyLrMOPV7x6BYxIlJCh_xLV3EnsevZa0UZVd6H80fOJqi_v1cC79gTAVRVYOR1BnTxAGQHyWjAW9o1LB4n7tinEPNR18KReiOn6fJ1BCLD9HILe4TxiLQ38s0Eoa_Acf7NfnE7BOwwdeH0SZZeBIELoSkNRPSneB2vfF8rM9d2DgyLBfGunrIn_AcJkVwpHSqWtxmlMfHMMN8hyFfRSMvpTtBZgP-D-1zB3p3MMrEuIyooixYFNT7qbq0eEG21G5j1P7cw33Hl6iR8GLDwhJIiuDI6Rb2BFSphCgvd6Wwdp69EjU-5pW1T-BaSE_1211UuJJfDU0hgXrHG4Ukj--UkURp4rCUVIAyyzsEd1yKBs30mrOPu3d_1ATMVpVOWUPm7Ixkh5N3vMezL8MlqKuaVNMV9JJCx3CrrBZhbp17jGZHALtYcJmw56egqC_yKnizARlbmRa9uffo8HmxkZLyrXaP56Qo1Vl3NnsGg7Ph_OWfShajF-hmw8ON4EdlPbH0Rn6XeSnTZBN3iBGZeycTZ54T3io1O5pCdWzo8EfW-vcYpNZccaeHPpTl4kKJ2j-25n8vACWWIU5GnUTeEQSlqavatTGUPoiH-3V7ATcyUQz4LXy7QdDF072_Rhoi8kBjaegyzA5F_TvIlevI_5d5F-4eu1NyssAe7B-S7kx_PBa7L1KGm8Tfk5VZegkuNAtU6IoC19X1fXot5OWT-Tj11T8N6rqzOyfWOyOcsJJYoUSoBdkn__3wu3ffE5f3bySNs_L-JavI1g0KUtKxhJk39ifWUuYiQ7lSQsEzorMR5tNxXMT9ajUG5OPN4fuAKa6l_0LQ4fEqUnznUcWkW28iI9ckylXMMUytY0cXE8Z9T8N9Zml3jckYEMUH5NfOO2RsEQdKKdQnCROksyIfaSdTTyjCHCEeqrnGtdMPZjg0NAHUtqjxN7dUDmU3ogN_t43sqHvXO8QPHHd94gGxHZLdgrQ7BFpgRQA4qOSecwGPYJUXDQoyOb-3N9yK_qWay_0R-1uZDFgqEbtbnMzmgZlSFmS-CGOohgnlBFCizihGOcQUeYTv4yDJDuwXQ-9ZgtEZT3rmodGfG-OPWfDINtWg-r--HGB-mYY-8gW91UFxTWXb7a4ufpshNlVL1BxOONAtepbJwej_sRn1AY69BQu1uvF8hNaf7pBq9svX27__PyP39Dq85ebe7S-tbev_vgNfbu5u_229vadfHenegJTZQLGq32BhwESkK0roEBUH0i-Bz9e6bo1f0HpGUmhzKI5-7npaneu-n-VEfZduBfFJSkyktELuAySgIQhJlFysbsMSJiGGYYg8PMijRn28wAXABnJUpYEcMEvsY9DPwzSAAeY4HkRkZKRABMIaJCGmRf6UFNezY3TzYXcXtjOz8s0w5hcVDSHStmmbozz_njEVKLfvtoW1KWHsW0HnYlm9kgrswnEXnR9IS_t-sq7rfJCv-JKqyMDzXUFl4uXfd9m-fft1KhvvUa8GTqee-O83g570cnq8uNNrhbt_wYAAP__tnQUuQ">