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

    <tr>
        <th>Summary</th>
        <td>
            Crash when compiling strong_ordering with int statics
        </td>
    </tr>

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

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

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

<pre>
    clang crashes when compiling a `strong_ordering` class implementation
that does not contain `less/equal/greater` members of type `strong_ordering`.
I was trying to create something that would not require out-of-class inline
static variables, for which I get a warning when compiling with musl.

```c++
namespace std {
class strong_ordering {
    int _v;
public:
    constexpr strong_ordering (int v) :_v(v) {}
    constexpr operator int (void) const { return _v; }
    constexpr bool operator== (int v) const { return _v == v; }
    constexpr bool operator< (int v) const { return _v < v; }
    constexpr bool operator<= (int v) const { return _v <= v; }
    constexpr bool operator> (int v) const { return _v > v; }
    constexpr bool operator>= (int v) const { return _v >= v; }
    constexpr bool operator== (const strong_ordering& v) const { return _v == v._v; }
    constexpr bool operator< (const strong_ordering& v) const { return _v < v._v; }
    constexpr bool operator<= (const strong_ordering& v) const { return _v <= v._v; }
    constexpr bool operator> (const strong_ordering& v) const { return _v > v._v; }
    constexpr bool operator>= (const strong_ordering& v) const { return _v >= v._v; }
    static constexpr const int less = -1;
    static constexpr const int equal = 0;
    static constexpr const int greater = 1;
};
}

struct A {
    int v;
    auto operator<=> (const A& a) const = default;
};
```
Compiling with `clang --std=c++20 -c` produces:
```
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 --std=c++20 -c tes.cc
1.      tes.cc:26:2: current parser token ';'
2.      tes.cc:23:1: parsing struct/union/class body 'A'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/usr/lib/libLLVM-14.so(+0xcd553a)[0x7fa0dc08c53a]
/usr/lib/libLLVM-14.so(_ZN4llvm3sys17RunSignalHandlersEv+0x2f)[0x7fa0dc089bcf]
/usr/lib/libLLVM-14.so(+0xbbfac9)[0x7fa0dbf76ac9]
/usr/lib/libc.so.6(+0x3e8e0)[0x7fa0dafb28e0]
/usr/lib/libclang-cpp.so.14(_ZNK5clang10RecordDecl11field_beginEv+0x8)[0x7fa0e2ea5088]
/usr/lib/libclang-cpp.so.14(_ZNK5clang22ComparisonCategoryInfo9ValueInfo16hasValidIntValueEv+0x5f)[0x7fa0e2ec98bf]
/usr/lib/libclang-cpp.so.14(_ZN5clang4Sema27CheckComparisonCategoryTypeENS_22ComparisonCategoryTypeENS_14SourceLocationENS0_23ComparisonCategoryUsageE+0x630)[0x7fa0e34d0620]
/usr/lib/libclang-cpp.so.14(_ZN5clang4Sema34CheckExplicitlyDefaultedComparisonEPNS_5ScopeEPNS_12FunctionDeclENS0_23DefaultedComparisonKindE+0xcd8)[0x7fa0e34e1b88]
/usr/lib/libclang-cpp.so.14(_ZN5clang4Sema32CheckExplicitlyDefaultedFunctionEPNS_5ScopeEPNS_12FunctionDeclE+0x123)[0x7fa0e34e4f93]
/usr/lib/libclang-cpp.so.14(+0x1059ed2)[0x7fa0e34c3ed2]
/usr/lib/libclang-cpp.so.14(_ZN5clang4Sema22CheckCompletedCXXClassEPNS_5ScopeEPNS_13CXXRecordDeclE+0xb37)[0x7fa0e34ece67]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser27ParseCXXMemberSpecificationENS_14SourceLocationES1_RNS_25ParsedAttributesWithRangeEjPNS_4DeclE+0x4f5)[0x7fa0e2c84185]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser19ParseClassSpecifierENS_3tok9TokenKindENS_14SourceLocationERNS_8DeclSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierEbNS0_15DeclSpecContextERNS_25ParsedAttributesWithRangeE+0x1254)[0x7fa0e2c85ae4]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser26ParseDeclarationSpecifiersERNS_8DeclSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierENS0_15DeclSpecContextEPNS0_18LateParsedAttrListE+0x737)[0x7fa0e2c69627]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser30ParseDeclOrFunctionDefInternalERNS_25ParsedAttributesWithRangeERNS_15ParsingDeclSpecENS_15AccessSpecifierE+0x83)[0x7fa0e2ce3b73]
/usr/lib/libclang-cpp.so.14(+0x87a438)[0x7fa0e2ce4438]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser24ParseExternalDeclarationERNS_25ParsedAttributesWithRangeEPNS_15ParsingDeclSpecE+0xa0e)[0x7fa0e2cf968e]
/usr/lib/libclang-cpp.so.14(_ZN5clang6Parser17ParseTopLevelDeclERNS_9OpaquePtrINS_12DeclGroupRefEEEb+0x256)[0x7fa0e2cf9a16]
/usr/lib/libclang-cpp.so.14(_ZN5clang8ParseASTERNS_4SemaEbb+0x238)[0x7fa0e2c43e38]
/usr/lib/libclang-cpp.so.14(_ZN5clang14FrontendAction7ExecuteEv+0x189)[0x7fa0e421d929]
/usr/lib/libclang-cpp.so.14(_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE+0x187)[0x7fa0e41bcdf7]
/usr/lib/libclang-cpp.so.14(_ZN5clang25ExecuteCompilerInvocationEPNS_16CompilerInstanceE+0x1ba)[0x7fa0e427478a]
clang(_Z8cc1_mainN4llvm8ArrayRefIPKcEES2_Pv+0x1131)[0x55aeefe8a6f1]
clang(+0x19337)[0x55aeefe8c337]
/usr/lib/libclang-cpp.so.14(+0x1aaa699)[0x7fa0e3f14699]
/usr/lib/libLLVM-14.so(_ZN4llvm20CrashRecoveryContext9RunSafelyENS_12function_refIFvvEEE+0x27)[0x7fa0dbf76b97]
/usr/lib/libclang-cpp.so.14(+0x1ab01ff)[0x7fa0e3f1a1ff]
/usr/lib/libclang-cpp.so.14(_ZNK5clang6driver11Compilation14ExecuteCommandERKNS0_7CommandERPS3_+0x93)[0x7fa0e3f2f903]
/usr/lib/libclang-cpp.so.14(_ZNK5clang6driver11Compilation11ExecuteJobsERKNS0_7JobListERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0xf9)[0x7fa0e3f2fcd9]
/usr/lib/libclang-cpp.so.14(_ZN5clang6driver6Driver18ExecuteCompilationERNS0_11CompilationERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x122)[0x7fa0e3f38012]
clang(main+0x172a)[0x55aeefe8146a]
/usr/lib/libc.so.6(+0x29290)[0x7fa0daf9d290]
/usr/lib/libc.so.6(__libc_start_main+0x8a)[0x7fa0daf9d34a]
clang(_start+0x25)[0x55aeefe82655]
clang-14: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-14: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /tmp/me/tes-8c0234.cpp
clang-14: note: diagnostic msg: /tmp/me/tes-8c0234.sh
clang-14: note: diagnostic msg: 

********************
```
File /tmp/me/tes-8c0234.cpp contains the above source with additonal header:
```
# 1 "tes.cc"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 432 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "tes.cc" 2
```
File /tmp/me/tes-8c0234.sh contains:
```
# Crash reproducer for clang version 14.0.6
# Driver args: "--std=c++20" "-c" "tes.cc"
# Original command:  "/usr/bin/clang-14" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "tes.cc" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/home/me/progs/tmp" "-resource-dir" "/usr/lib/clang/14.0.6" "-internal-isystem" "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0" "-internal-isystem" "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu" "-internal-isystem" "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward" "-internal-isystem" "/usr/lib/clang/14.0.6/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../x86_64-pc-linux-gnu/include" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "--std=c++20" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/me/progs/tmp" "-ferror-limit" "19" "-stack-protector" "2" "-fgnuc-version=4.2.1" "-fno-implicit-modules" "-fcxx-exceptions" "-fexceptions" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "tes.o" "-x" "c++" "tes.cc"
 "/usr/bin/clang-14" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "tes.cc" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=/home/me/progs/tmp" "--std=c++20" "-fdeprecated-macro" "-fdebug-compilation-dir=/home/me/progs/tmp" "-ferror-limit" "19" "-stack-protector" "2" "-fgnuc-version=4.2.1" "-fno-implicit-modules" "-fcxx-exceptions" "-fexceptions" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "tes-8c0234.cpp"
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltz6jgS_jXkRWUKywbMQx4YMOdkT86ECpkzs_NCybIMnjE2K8mE7K_fbskYMOQCmYeprUmljC25u7--qFsXR0X8csszli8Il0wthSLPS5ETXqzWaZZCMyOtXkdpWeSLeSFjIaERWggQKUXS1ToTK5FrptMib3XGrc5QL5kmcQGs8kIDJ-hMc-SSCaVadCL-U7IMfhdSMC0kMluJVSSkIkVC9MtanBfZtuzvyDNTRMsXRKcLwI1siCpWQi9NG8p_LsosNgAkyEulIEWpnSJxKtw5KCcsQ4XgOdkwmbIIMLboiCSFBEOkfEnuyEJosMIzkzlyb5jnOdVLsipVVqGrrr2O_ect-hP-m9acrYRaMw5gdUxa_arZImrou-8m8Jfmmsw3La9qWpdRlvKWN9y_AWZWWmzX8pQRDZB806IDAiTAhgb2AST0x-dYFGshmQYTICG-XqQxUpg3kA6MqkuZW0zkFS5RUWQ1q5Y3hv8jMGe4keq1C9iOPsBzdBHDj-EcXYgz_ADP8CKGH8MZXohz5ybLrTkKae9937UviYrRtbJGlwr6hF6jy_UKr5UVXiroE3qFr-pV5cS9VMsAYw2zOPqaOG6dkN4hMRnf0HQ-SlIVB0O0l4MYD-8PUi5oXnJNhqeJc3Mkk5VQM47D4shbQ7QZO7AZAIhFwspMn4exS_X2cXRcGbAEmOrqOJDzgVdVEGiHOBwr31oWccmh6HjN0mEfp_fhcBYSVUarFMtQVC7AhetCaqx9S63XhpROsKCCxDJqQ3GChyzb7H4cEPKH4BoeU6VKrHATwvIYrMOzMhZQMYUt_yRi_E8toURhEVyDIFkAOCViqK-ltM1ICRWr4Cl4KCayzIniMl3rqgTONDAhcbla10ph7R5MZbGQbEWYXJQ4ZUDg5HXrEC1Um3PLwEUGVYM3pD28GPJSSmBF1kwqiBZd_AnVuUX76B64Glp6TOvBxUVapEFH2cgBm5Q5zmHoxBbkCKZGyGpYM9orZpwLEwqiXlYRDEdT2TGGRK5KmGu8FCVZso0gxvz2pfS_Agsq9kkyHT59JVBgFcwt0Poi36QwctEsOBHBuLm___F9Pvv3958e7u9-Dx_nSIIRA25fFxjXcJMC7ME-dEAFJdHpaWSvyMNx_bYqABsYtrPlcbfrYXi3uvDUT1gn5p2AY1t3_CE2899_9lEtT70ot_9Y5rN0kbPsK4RFBnO4cGPk0KQpYxDx5KMyDIsoShgfHLGJkn4P215nw4FBu7dj4YlAdI44sCSi2PYGB4xIh6_XyMn1rcbfuqbZ7TwKDsl1LHjmukkqsngeiUWaV1oHh7IEFazbCYIrZVGKuQQmparIRzDSFoV8ucuTYvCDZaXAO7e3ZAqe0vgu16a1gtFNGjj4IIjeMv5ZHBaGPxMrRvujpeB_ngJ6gtl6-PNsfg7srs_1ZyZ33BfcrBKgrTOn3inBL4otRGg06HlHbhOeH3d69GK3Hajg-UaFcLuGqXOqs5exTeoi3gMJpwC3O-NQHsytizmBI2Z0eIX7DN23NI_DangFDdzCjS4PgUPc9DXcO2zvoDa4XEh7DVx-MvAuwmUZdboDEdMGM-5h2yfii9bxlQk07W-_jTAJn6jmQc9-CFrdIq_f1I2LXv86OL2pqSS0b35B2nezNJ2tBU-TtA7g06CeufNHHAhdQxgPtZZpVELZ-RVKxSNwFuEfqIK_B-4n3eNxygPfDbqfAu4OLHC0XgVaSATsQW0cPGF9NNF6TgXEHyA8JAwfv2G8u4HV50mAa2CcYt4xxN0hx5nBXkZkXu_u6Eew7hdbHb5nlCo8u37TFF0m_M_50P4iICaNhjVY9Uldz6s6tUzugXSv732qtFWy34hTynuDHv1cnHqdWscHuR_2CRQEIaEqv2v-R6Pf1E6FanucVdpWOK-hg_Ci_hV5JOgz3wuavHxs-5TPffMbbq36B75_1xLTs5YwYAFcA2ky6AXicwPVZpinYn0vNsIgNRAHD2v2n1JMtbwzuRw7vsiiXD-KJAzDyM6uur0TQMztXQfIRv1w9mTkm3wcRpWcExf5nrjWRa4_kThS8nhowrQfbgUHH1STFjc4musJn7rxgL4513tDVs8uxIS8g0Ucy7lwvUqcFW4Dv4GoSkbB8Tj13YjHyZXjlHYrsXs8m12-NRF3ArQCEbGGNfp-P9hP0g1zIyjg3J2vWJrbaXkwlJK9QLDcTb_xMJzR-bSyr-u5O5ZdSK4iEQHrJe4JS_v2wNunq93rHNsunzIwxnqDY-d6ietj24VrDtoZ4TIVZwAbIV-qxDvARQhLRPZiEhdNqjw4l2CFyWYDw8ZGc_9kMRENrlIo6rhJ0lSIYdt1c_1eLFNQyHVtMJjwcP195KxgcVUVqX79OJ15c4Nn0JjbJTQZdC7Lye9AcSso_yoitcMB96a2PVrXuN3ZimXZD8F1Ie-ggN7NtL9mqbxLp8fAd-5ImiFBEx5fOd4r1L2xBR8cDbo6_0N1do-broTu0sYMOPGCjktPhhIOS0vQp6w5mmAEvLXoPl7JUkiFzZXsIMa2D3CYz_FpDvlF6nmNKWAn_Dz_TIYxZFXZaepAe93uMQWMWdxcEVLi9tpugyep8iyenKAlScIg58V2k0xsUzwnigVxvQHuopRKEGeDGxxKCJLWGROl7yUR8LSCVgJZogN6mp4nJhdCo-Bt0Jv3fGfNnSzNy62zyMvqlaUULCYrEJiZfaBCpdvqbAlzcAbAxqkBX9s0SvNTHfNCC_yNU7bIC4VbmSu1MHSVRz7xf7C1We0BDp-ehqOv5OlrSCYP9_cPv979_IVM7u7DGXl6MM0__fKFPIbTh8enek9oem4PL1C4v_nqPl79ghQkQ9NDL9M1yw-agE70ag3XlcBboZyAd6jnt2H8_iV81PIKj_xVfjnepJ1ALL-p8O4UVJnNPhZB9aqcYUcAi-NUFzBhJUsITSFf2w1uUY-4IIlW25mQho7bW94oKtNMOxCvHuQqStx33_D2b_geffedHZfdSDYHqR-V1cRb61H3XGJZtawN-5bFzJyBmIGAe-3SnO6-nkKQxNYR3KpWNgjpyRY1gsZ2Xt2cccmDTBcperWyFbIydjlMK2a_2UbwjiN3d7ewTFlnono6l9Gq98Qq1U4R_bF7XkmRsa0DuWzXsmuCa5VN1a4rThUefDuJFKLGkAkmHaa0Ewkwl3DwZAASeJPGbHCDqcwS8aCTMxk7G9yTdMzmeA0MnOUk4FXT3DRdjb2C6NgkbTvWaf0K3DoZLpuqBnrYkSr4qRVZJRIEOWbLHAfW-MAmyYrppQOlKi_qpmTtYExJxiHjjbHmVB154cAyLI9hdeggXS3AnBPhEUIBBstSpvbawkz0Oc1jR9sPC7xxDVSbOgWTmZ0LwblOrw4BXebioHMhcjDx3kL2cGcXIoJpBwyeWSemWxE7pvyC-5zqs4XaMyIqFwshUQA2e-NFHNVozayaLUDyfpIEzjSnwnSyLMz4MxcYSgu1G5eWWgqb0QyBbWtMSaoZxaQabBVdWm1VgN9elBarJq0dI-22ZYMmmiwwWCZnh8PEpW233dlRNC7VgRdiqT7M2BP8vdCc5_c3w4g5AQIs_iiw82Gwl_FBLpAcssvJ_kqrnCd5DZAwu1H8FNjFBFaTBtlrhSmJoeIJM32DhMVlcdABWeCqQZ7YxJKlKzx6NG3uYNep8HwUD5u1WUk1c3MCVuJOVXFBmt8GEx-mV_yYDM84MOuX2UEW5dst2ISL9VHZSs40wUQK2NfpbjyffxmN5l-HP8L5-Nfh44TOR5O7-XD2HeTXsneGwTJUG2lb3dRhf67I_1PM_ynm_5fF_J-c8smc8mr6OFwG0-ai5ya-9eKBN2A3OtWZuLUrl8Ynp80PPM0KEj8IsZ9TqZtSZrfXfxnU7XX77s3yNnJ9zmjHDxIas4hGbi_gQRJH_SCmcSy6NxCiIlO3rS5ql4tnYligUt3xTXpLO5R2-m7PDboDN2i7iduLE9GPA5d5AgaH3xGQP7I24mgXcnEjbw0kCCMFnVmqtNp3MgUuyIUw4oA_K_WykLcrtWSy2NwY0bcG-v8AIrq2xA">