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

    <tr>
        <th>Summary</th>
        <td>
            clang crashes at -O1 and above on x86_64-linux-gnu: Assertion `N->getNumOperands() == 3 && "Unexpected number of operands!"' failed 
        </td>
    </tr>

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

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

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

<pre>
    It appears to be a recent regression.

Compiler Explorer: https://godbolt.org/z/hdh567Pa4

```
[508] % clangtk -v
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 09d6ee765780837d5156ac81f968465bdcec73ba)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
[509] % 
[509] % clangtk -O1 small.c
clang-17: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp:780: llvm::SDValue llvm::DAGTypeLegalizer::PromoteIntRes_INT_EXTEND(llvm::SDNode*): Assertion `N->getNumOperands() == 3 && "Unexpected number of operands!"' 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: /local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/20230615-clangtk-m64-O3-Weverything-pipe-fPIC-build-140326/delta -resource-dir /local/home/suz/suz-local/software/local/clang-trunk/lib/clang/17 -I /usr/local/include -internal-isystem /local/home/suz/suz-local/software/local/clang-trunk/lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O1 -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20230615-clangtk-m64-O3-Weverything-pipe-fPIC-build-140326/delta -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-55187b.o -x c small.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'small.c'.
4.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@main'
 #0 0x0000555913102970 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x3b79970)
 #1 0x0000555913100244 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f35168fa520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f351694ea7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #4 0x00007f351694ea7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #5 0x00007f351694ea7c pthread_kill ./nptl/pthread_kill.c:89:10
 #6 0x00007f35168fa476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f35168e07f3 abort ./stdlib/abort.c:81:7
 #8 0x00007f35168e071b _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f35168f1e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x0000555914324882 llvm::DAGTypeLegalizer::PromoteIntRes_INT_EXTEND(llvm::SDNode*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4d9b882)
#11 0x000055591433872b llvm::DAGTypeLegalizer::PromoteIntegerResult(llvm::SDNode*, unsigned int) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4daf72b)
#12 0x000055591425afc5 llvm::DAGTypeLegalizer::run() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4cd1fc5)
#13 0x000055591425c1ae llvm::SelectionDAG::LegalizeTypes() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4cd31ae)
#14 0x00005559141dfc42 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4c56c42)
#15 0x00005559141e3328 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4c5a328)
#16 0x00005559141e5184 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#17 0x0000555911c7b050 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#18 0x00005559124901d5 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#19 0x0000555912a618ee llvm::FPPassManager::runOnFunction(llvm::Function&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x34d88ee)
#20 0x0000555912a61b39 llvm::FPPassManager::runOnModule(llvm::Module&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x34d8b39)
#21 0x0000555912a62465 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x34d9465)
#22 0x000055591336d967 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>>) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x3de4967)
#23 0x000055591434e9d5 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x4dc59d5)
#24 0x00005559152c9db9 clang::ParseAST(clang::Sema&, bool, bool) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x5d40db9)
#25 0x0000555913ba4309 clang::FrontendAction::Execute() (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x461b309)
#26 0x0000555913b277fe clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x459e7fe)
#27 0x0000555913c71d2f clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0x46e8d2f)
#28 0x0000555910569f03 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0xfe0f03)
#29 0x0000555910565cd3 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x000055591056736c clang_main(int, char**, llvm::ToolContext const&) (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0xfde36c)
#31 0x000055591047a7b3 main (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0xef17b3)
#32 0x00007f35168e1d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#33 0x00007f35168e1e40 call_init ./csu/../csu/libc-start.c:128:20
#34 0x00007f35168e1e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#35 0x0000555910560545 _start (/local/home/suz/suz-local/software/local/clang-trunk/bin/clang-17+0xfd7545)
clangtk: error: unable to execute command: Aborted
clangtk: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 09d6ee765780837d5156ac81f968465bdcec73ba)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clangtk: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clangtk: note: diagnostic msg: /tmp/small-113d99.c
clangtk: note: diagnostic msg: /tmp/small-113d99.sh
clangtk: note: diagnostic msg: 

********************
[510] % 
[510] % cat small.c
#pragma pack(1)
struct {
  int : 16;
  int a : 1;
  int : 8;
  int b : 8;
} c;
int d, e;
int main() {
  c.a = !d;
  e = c.a ^ c.b;
  return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWltz3KqT_zTyC6UpCXR98MN4xpO4Kid2xT6XtykELZl_JNACcpx8-i2QxpbGk9vZOLtVW-XLTAM_fg1Nd3OhxohGApwH6UWQbs_oYO-VPv9yD5Ir2ZjhrFL88_mVRbTvgWqDrEIVIIo0MJAWaWg0GCOUXAXRNojW49-N6nrRgkaXj32rNOiArNG9tb0JyDrAuwDvGsUr1dqV0k2Ad18CvLvn92mW39BkjhRk0fQzfk0v0qgI0i0KcIpYS2VjP6LwYSz139EDaEcIxfkqWkUowMVRz8LeD9WKqS7Au7Z9OPwLe63-A8yuGmFRVPIMIM_SvIgKkvM0TjPKirgusyLJ0oozYDmpaIDLse87qhuwTs_HIttnSTjIj1J9kmEr5PAYNnKY6t1roBx1ikPravfKiMex6EoaS9sW-Fb4AXO8FKNtgHdm-BIePqu-Hr64AauEHBvu1CA5YlRywakF9GazQWIEo1YoOYENRjtIUblBYCzAu4nqM0W8i-NXwMQj5i20wCzwXwK2eaLWDa0VrhVZo1VALoIk6rLkqMtvVfJWVR6s6pTsydKuY2Q62rYrNjO5MM6_MV9G1fYT1RDgna9dDaLlRzY3s0Sv_UZxeAMywLtRAaHkdv0mwLt30NBWfIEraaEBffe5B7NifR-QdV5EjoXHIeuArG-3f9F2gJlku37jWhxA9Ci90apT1kF-ALO_en-3v_zn7vL9NsDFHOy94hDgtbN4skZrY0A7XijIovdhQC4bsO-H7roHTSU3AS4CXKKAbAOyRQQFOAtwhgKM_5Tw2I-TIoeuAo1UjdRTszjAOMA5qqlogU9u5ebd5fr2Epmh6oRFFFVDgzT0SlvnkX5ufQd4J4wZwAR4h6jkSEjWDhyQvQfENDX3qKLso9WUQYA3qNfQa8XAGODIqEGPYteSGqOYoE4VPUhkmBa9nSjfWso-Ij50bm5GUbQKovJGq0bTDlHdDB1Ia45M5151MFrQ1-3oIBqtz-pBfpz8wUEW5yhkLEah1aJv4atOCYXQCRuq6j8odFy50IiGKOTC0KqFsNYAKGQtUB1SY8MKaqUhdAMEkqOwo0KGtWghlLSDw9pAYafBkXQGEnpfh3rBUNgLFrbwAC3C4xdhwl4ACrta0w7CXglpnV1upZKAwrqj9j4EraVCYV33IVPSTYwNyFZJFNZShdp5KiGb0NVFYceUNFYPzCod0lZQAwaF9SA_CclD67QyAdliFFrvskPWD254wixBoR0keEEDErRjzKEamga0KxKyCci24RUKa6YeQNMGQuZj3agpd457-30_4MYcjHV4eFcNjTNFHGESZXEaTr4m7LIkvCbh3_AA-rO9dxr2ooewvrnahN6JhHESEbeudhxaS1GoYbRPR-TX2NTojrzM-d4chVczTz01OSyg0E-epG0ozGdjoXsdDt_r8SfI_WjEwbvV6uWfE3Vf9gaP7gN72etU9QTOt1v_fBc-bIW1N-X_U_Zag9ZKh61wXj0uUVg3cmDhlMEFZJus8Cr2q61VOuSCNlIZK5hb0ZRzbUSDwu1-_2az2b9d_3W53_69_rDD-83uar--_SMg2xiFyg2I7Xqnk_NPYZrGRV6tFAofEVvG89i56IBsQNUBuUQ91QY0ohY5b6dq5FzdWBO7mi5Oj75izGN8CXElHwbp_AXqqTEowPlukD6Moxsn-INK2oB2cU5JlwwOLbhaBy44n6JIcgrrnyJD2_UbF3S36zfoavJ3Dv0pXZig60O3Ac5dykNdjMhHbBRgEqHoMYqiKE3TMiZxhMs8miUM5rM55AhCWh_S7sa4OEsNNP20V8ZqoJ2P8i63sz74uxzglwe2AF9Ej6TKyzKPntJvp0t8pEuEkwTdikbS9i2VvHXjXUzURvEhdYr87xMQnoDymqRxVtQ0xdFBGe8qTiz8VlRsZdQq8_QSnOIlObLALBOgOUP7fW_9fmD_UbTtXnR9Cy4n8MaEnIuRvXXjMa-2YgFZJ4nL-LJn_ORH8CeH8U3kvAjIOp6NRnoKed7sm3BFeQSXHQ9ukmeoMX4-PNL48eBjzWfDoXcOZ9wp4Z2mwoDHxi7tno1BvoQG9wHRymWJHsrycfq8aGQXO42fEYoXCHGF9rLdt4ryPVdu_XgsIb26TtyZhtERLo5zR2k27eWRtjGU2c-ZEimhzJ5MyZn5Ys0mBCdFgX99kv-aqzfhZVUUeKFVvNSKFDmufkIrtxv6AGZo7dc02qBB-uMO_hv8U8JpneNqoSFeaIhTWrP0uxrqQR62Uq_IlvG4ZumCLTliy2I630ou9qVeciDu96S_hTOJKSw4JwvOMa9Zgr_C-erWn78EZD3ttdeSX3bC-m3263NPM5Ys7T9dcgdCcPFd7qN03bYX1Ah20Sr20Szs_ynt8LsiH55fWzNK_Pg9a5YdaZbGRfJdzfQgr-UflN0LCQclFpq9KDuotuqptqvIR_kj6Jfh3vHL5_xilldR6sM9lUp-7tRgkNvbmt7nPeXY-z9F5tar-hWc_ykyh3HAO02ymJPESRnFfO48jpBdkjnjdJLMN0fuBN5pXuWCF83iAuZuYnfjmh7S3Z9m9GrpY8KLAhbOA0fHmlSk_AFN_vDJ-3KaJ9Hv0KIi5UKL-EgLnGRzO2mhoezzFDyf9bnq-nYeb_5XdCmTbBGC8CJgEpLxMsvHo9iRm_PXF-NJ1PVg-8GF_lnx9nm7eCkbIWHancyqvAXKQd8C1ez-une2Z2aeclF1ChPfqTVeA3yn0jsqm1NVZj7RaiGbD1AvxYfJWB8BToOwnlbPvMmVtHow4gE-QL2R9sbqgGyeix_qyU_sRAu3_vggIJcOwlg-lgxS_NcA-_6opdv19Z-0sLA_7P1mjTjUdGjtnkMLFr7TkFz6Pl_XvjgkZZYv7GuZ4pAESp6eGNaNkmboDot-3EreaSrNeIrypxRHhre-vdsoaeHxdwRcztKSL9fNIg1KMSt5Vc71uqHawPr2bsn6Fjo6GWKlVPv8_1X5pzyJeLX0YYtUiFQ0IdGC_0670X2y99EXPAIbLPyG3M0FhmhJOFsSxnlew9J3jPeh_oZPMlhQPqza4usavr4VpSXk9TIeLtIiwvKY43rhfUf6z7o9TAf-S1Ve6P76u8sMCo7rhTKL9ClKs7KOCGIs3o8nYrOAt9aafnael2zYPdUHB72e3OJShjfoQQn--jrVENURWahUHqmUMk7QYVI28Z1fu_OtcEfb9i9gVk3h_oR-R2HIYUyebLGB4Fo8gD6ZEC5PFKM0y0nGRrM5jLXffY8j6Qdu_WOdvubociAZm4_u8jAxSnKaVwT5459X5AF1nFeLWT4-i4SYlxHa71tRsb2xVNs9o227fzqYYmZ4eXQ2Hc6darS6D8g69Wd-2XOv5LhXSCLk2wgp7HFH40eHHnr08SwMO1A8s4zkFOhClVNanAQnuduHpc_Y6ZHVRWmSohH1dQ0nT5Pn4DtdhQRkjfzNhvswSFq1gKxCMK5NxFTXUcn9LXqltAX-9dbjk5Z6CgeHptPlOOKDB54OTwNcDAZQ-OBlAEjMXHL5__uJzGxspXIJ6Ro93yahzjQebTKn_8HP7OnS9GZhfXe33rxFd28v0e763bvrv6_ev0G7q3eXt-ju2osv_nyDPlzeXH-4e3opcHPqzUFhnBv86ruDpwoakL97B46ofYL8sRFYXpTFMeFluXjr8u8QzP3PT8Ovmoz0Io2jl497nmWM2uUlYIBJr2nTUdRT9jHARfxkw-NNGwryi-mMHwlpkWMdZwFZCOkoPpI6WXEkq46kQb5F7Ombq8FdiISFaAqmPjI-s2Er163TK-azXsALfWF6idiqmpVpsIOWKJp3f_T47oyfE16Skp7BeZwVWZGRMsdn9-d1RXOO6yyiEGNS5DlNeJbRMs1yVgLNzsT54Z4Yx3FJ8IoWNKdxnhYFr6o4gyCJoKOiXTn_slK6OfOPc84zQkhy1tIKWuOfJ2Is4RPyhQHGQbo90-feJ_n76CRqhbHmGcUK28L56O78ox4wiFp_E-5XUKUeACmJXty__L63Tehs0O35v3-85IfovwMAAP__mlXEYQ">