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

    <tr>
        <th>Summary</th>
        <td>
            A/F: `getSignificantBits() <= 64 && "Too many bits for int64_t"' after 6c951c5ee6d0b
        </td>
    </tr>

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

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

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

<pre>
    We have an internal test that started hitting an assertion failure which I bisected to commit 6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5. Consider the following code:
```
enum a { b, c };
enum d { e, f };
struct g {
  unsigned h : 16;
  unsigned i : 16;
  unsigned j : 16;
  unsigned ab : 8;
  unsigned : 8;
  unsigned ac : 6;
  d k : 6;
  void l(g, int *);
} m;
int n;
void o() {
  struct p {
    int q;
  };
  struct r {
    int s;
    int i;
    p t;
  } ad = *(r *)o;
  a ah = ad.t.q ? c : b;
  g aj;
  aj.h = aj.i = ad.i;
  aj.j = ad.s;
  aj.ab = aj.ac = ah;
  aj.k = f;
  m.l(aj, &n);
}
```
If compiled with optimizations enabled with a compiler built that includes 6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5, you will hit an assertion failure:
```
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/ADT/APInt.h:1481: int64_t llvm::APInt::getSExtValue() const: Assertion `getSignificantBits() <= 64 && "Too many bits for int64_t"' 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/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang -c repro.cpp -O2
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'repro.cpp'.
4.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@_Z1ov'
 #0 0x000055894514d264 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055894514afac llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x3da6fac)
 #2 0x00005589450835b8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f972c207420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f972bca400b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f972bc83859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f972bc83729 get_sysdep_segment_value /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f972bc83729 _nl_load_domain /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f972bc94fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000055894614c5f7 (anonymous namespace)::DAGCombiner::visitADDLike(llvm::SDNode*) DAGCombiner.cpp:0:0
#10 0x000055894614c8ac (anonymous namespace)::DAGCombiner::visitADD(llvm::SDNode*) DAGCombiner.cpp:0:0
#11 0x0000558946182f7d (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) DAGCombiner.cpp:0:0
#12 0x00005589461849b5 (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) DAGCombiner.cpp:0:0
#13 0x0000558946186240 llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x4de2240)
#14 0x00005589462a08c8 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x4efc8c8)
#15 0x00005589462a4973 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x4f00973)
#16 0x00005589462a6acc llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#17 0x0000558943ad21e0 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#18 0x0000558944289438 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x2ee5438)
#19 0x00005589447c2b25 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x341eb25)
#20 0x00005589447c2d69 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x341ed69)
#21 0x00005589447c35b2 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x341f5b2)
#22 0x000055894550f972 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>>) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x416b972)
#23 0x00005589463f5a0b clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x5051a0b)
#24 0x0000558947235169 clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x5e91169)
#25 0x00005589463f4498 clang::CodeGenAction::ExecuteAction() (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x5050498)
#26 0x0000558945ca0cd9 clang::FrontendAction::Execute() (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x48fccd9)
#27 0x0000558945c2bcfe clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x4887cfe)
#28 0x0000558945d7fec3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x49dbec3)
#29 0x00005589426937c1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x12ef7c1)
#30 0x000055894268c8f8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#31 0x0000558945a9edf9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#32 0x000055894508373c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x3cdf73c)
#33 0x0000558945a9f50f clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#34 0x0000558945a69f39 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x46c5f39)
#35 0x0000558945a6aa5d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x46c6a5d)
#36 0x0000558945a74b0c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x46d0b0c)
#37 0x0000558942691b83 clang_main(int, char**) (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x12edb83)
#38 0x00007f972bc85083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#39 0x000055894268c4ee _start (/home/dyung/src/upstream/6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5-linux/bin/clang+0x12e84ee)
clang-15: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 6c951c5ee6d0b848877cb8ac7a9cb2a9ef9ebbb5)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWllz2zgS_jXyC8oq3seDH2jZmvFWsnHF3tmtfWGBICjR4RUQVOz8-u0GSYmgpcRJZrVTtSnGItE4-usbIJM6fbn6JydbuuOEViSvJBcVLYjkrSRySyVpJRWSp2SbS5lXG-xF25YLmdcVyWhedIKTL9ucbckdSfKWM-wta8Lqsswl8Vjomszl3EuNJHCCwPdZElDm05AlFg15FvIkSdwlWdVVm6dcwLqcZHVR1F9wQVanfGFHC-NmYUQLzxgu9cirriSULPxrkiysFWFwe7OwryfUVFE5UjON2krRMUk2SO9bCOmAg02FaAksSUxv33tCy79Be_oGjSaKGByjnSRQpmjTCVPy6VXbrs5TUiysYINAQY1kYUULK9x3AeSk3D9hh2r_pAbXMBgGTKUxSKiZthE1-efJ0lOZ7seI12PaSa--JddaGiL1WQlFudz0SAIxIKonnSihW9WFpku5_Ay3a9LLK5n0Apt9mg56Wg6Dnpb5ODrXOzyN7a3erlSoRiq9wN1W7_BJtWaTxnKJagEOQC8Ly6tmSjlq1ncZek-TF2AAX3K5JXUj8zL_StHpWsIrmuxJdOwqSNLlxeC1ecWKLuXtm90P2XupO5izKNDXj_r5KTdkBa02KPaFtd7WJTjbOn3poMlat4LB364Bu-C0hNui2JUxKzit4k0uhwb4GTg-NEQ3j_j3_q6SS5ByZDqBiWuA5XhOLInqBgzZkerT3264fLh9ln_QouODQTMQGVJJtIcDjGNH8LA8yxmt5HUu29H-7RWq0HNQW3DBj_VY16Sk1QvEN9lCaBIjE0BbWL4SD0-XvTDu391GD7ek7RIMfxS0siGCN7WQGBW3UjYt8mqt4QIJbLtkCRo84Mafy0bUTxBJUS5t23Fgbg0aSUe9qhDJBG23JKHskxSUqQjXwEKiZhyQpqStO9E340hQZs1yisFZdBVpmcgbObD8IGESknZls9ewAaTwXtQbQSHCik1X8kq2b9TxW43ussir7hkGJDn4xVqZEblkRKFYsqYhlx-snh8T-QHd8Bqc65Y0VIAyCVg6B2x1RjLQQN_Twp4rSBpkwysulM_0FBspH7uqwrTSgEAAi7_uKqaM4h4b3tOKbrhApUJTWaddwbHXniO4H4TmHJvtX4FHbqLfLoFH-CF3VR8Pcf4HXnB1N0yejQvD88Ix4n-b9Q5v-7ixsGyDGM8G_HPdIHRc00ktMMp7Aaan9PWISkcbpsXvoOACuQ4wlPdxkvSkVjFtR4b6v5_bnM1NMwhoB49qX9r-ZoWO2jUfqn42WGGfmYoalQ8Og37zXzWJhXVtPNsp9YBJDJ97FJaGwghsNwnICt3iI2f1jouXuXxAeMiz1gfqDsmf5XFB2cMSfhb6FrMM37EMEscC6qNa8FjIAX-RQwGyfg682HN6DJebqusJjdyCFCCZ1EtDYTEdmEVD4kyXSRh1DCMhgkI5hf6GgT3FcAGTscuHr3dfIbmOj9bSNlHig4LWyyU-vbQpbzBsdFX-3DfsFDe9dNXUSwZYXQyq5oETV-cksAM3hNKlVkjfxolMe2moUWoRFbknpu3NF_FBKRCS457vuOUbjDfxDuP4W9cF3SL-oqZp2W4Y7Zd2MWxEwWFt_9jacVXEODBO65Lm1a8tGfpoRLZzWDPQ1wydLPXeYDgMTcbrzd-GIZrJhFPj90yHuZmPc9Kqrl7KumtJRUveNio1hL07Q0xa1SW4FjiDatjlbS6jm5t3-SfMl4cI8HDzd6y7-1AyGfbaSzCaGHNeAqyPfpKXX-DD1PkIrMxPf46PX2DCmjHhhIn7w0yw_ukX2LBnbHiWY0xC_D4dwURDrD-y5ND2ju94gZXEpOiKPvK2K7BuinQK5t7fePWhGWqyYfDZMoWTcguw7p0FheFowrCoEbDghDDu4EEDElXpLZRyKKehRDwTDp4xYFPD4c5wOKFvfxdH3xoVxTVtc3Zd1OxTq2l5XwP1tTLWvedDmRkGgNBQejOUHmXsuyihqv1QvadsC_Y6AtJQvqKNMJdQTUpMzSGZT33ctfwpfzZNLZMb3_NwqAxhzsf6z-AZ5sI5xvmOMxlMmXQs5HRq8rOZsfqd8HSUmdeSO4eBWJy7wLpmIFruc3xmJZY7wba-RzhjLf-XRGU7Jgemp6gsY44q9cI3oHqvdim62QxN50YEDGuIzBkiKNCtCaKCbyh76e8n2O7K5uAffwVcGbCt4dI3Hq6BZR0ZT0HgwnxxDXs02Jx-6GTTYTkxId_kdFPVrcxZe1ttVM711PHlocvvsGHg4oFTwbaQSdW5zyE6a10P-fZbvR5hE8_ldzq9g7tjXSaxV8IGdPORZ3rzqJhoNuEghGjwsBWBzUFPgX3J547HjQRTXh0mEvRL3HwRueTxqMLJoJRnFGqOOIUwLfl3Btq3eJ0xk5leAnagGYpehNmZS2Ff91o-ePTdlaNX99tV2N9XbaGOL_5R5TMLih4eh23reZ3BNVwTIGgYtdrKhx2kCWFrwus9ntUAwzqCB17SwbqSui4Ov-fDwkPTnAUsd6YvxwmDI7422HPv68-cdZKPJn7OChG0YQCDGgKtdnIZNViqaWMt0G72LjmFcObyNsgY8KYx7-vMw1Y547r4-6NuPFejFePHNXAa7XkrWxgC_GsAtaLMTf2MM1tLHD2UA85dzehrWK_k0O8JzwUsTBPgWwOmVWSWF9o-MwljZozHKVoOj4SgL5hA7BXbUjHmmUgFa0geWhs0TI40z4TPtHgG7E_x6Yexlgf7siwgo7ZW5qMKXdO9ekmL4g_YS9RDOXMErDLGVOS7E1v42SktcJ5m4fCqb7_QeIwcCyVSRe0dWSVAdZYArOBrgjirkI-DGfVrDya1MsGqSkg985hwVHWHxr5eoIXWeCgThiw8SeJxzJ6fTbN_SHBLihk7R6aUkLTO2BBLQfEFzUCeTQfg0EdqMaFjl-iQUqLpeyC8LL-gZZJSPG_fywqQDkfaf6uT4wp5deDs29ON6bFj5Z7ysaseaMaLF02e39bdGUtclmaARDN4e2Z7GVS55P_admZHBSeNxNEl54WZHZ6UnArk9FUqHsWpRf3ZQOxwqpD_RtdIq7om2M6SOjzmgjg0S3Nn8qLUTX9UXqCM9rSwgPouB5AntjSvQvXePhqao2mot0Zvl-9gRP9TKXsgRE3Kel1IfScx2ClEN5N7rSI5Uoqc0s4ZpXy-wgcHGnqc9GeFj5kEQ0U3lj4jLhWeorOXMikwpHE8exkVYB4jcYzvm2L1tVf8I6_AWIsvq9RLx_5WEdU86mWY7Vj497B8OK-kHM5Jv_AZpRLAqnupKMql6QKjhAuB6SDqdUiyYQOhPmdD--u_9ei_veHPuVTfpxHTxu9Fgq7l5HKH33m0ACqfVO_TlQgYdYvH7aa7NJbq5PjHPgtZbn7gw7qD7sePdi7SKzsN7ZBeyFwW_ApXXSPkP_u7GJpJLnRGLzpRXP38RzCuZ_rGxfbKt42MmWHKAtvJOHcDPzQ8207NgHqp67KLgia8aK8W7vXCvbnIryzDsgzPsg18NWQtmWUlTmh7np9CqOTBwjE4WH2xxIWXtdhciCvFQ9JtWiAWkD7aA5G26iMIPs5PO7mtxZWy2AvF7JXi9D8MflPy">