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

    <tr>
        <th>Summary</th>
        <td>
            Compiling LLVM 14.x with `clang-cl` and `/arch:AVX` crashes - but `-march=skylake` works?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:driver,
            clang:codegen,
            clang-cl
      </td>
    </tr>

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

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

<pre>
    Setup:

* Build clang and lld with MSVC.
* configure LLVM with: `cmake -GNinja -DLLVM_ENABLE_LTO=Thin -DCMAKE_CXX_FLAGS="/arch:AVX" -DCMAKE_C_FLAGS="/arch:AVX" -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe -DCMAKE_LINKER=lld-link.exe ..\llvm`
* Build `llvm-profdata` (it probably happens with other binaries - but this is pretty fast and easy to reproduce it with)

crash in:

```
17:01:04  #0 0x00007ff612ca30a1 llvm::SelectionDAG::createOperands(class llvm::SDNode *, class llvm::ArrayRef<class llvm::SDValue>) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp:11084:0
17:01:04  #1 0x00007ff612cbbf07 llvm::SelectionDAG::getNode(unsigned int, class llvm::SDLoc const &, struct llvm::EVT, class llvm::ArrayRef<class llvm::SDValue>, struct llvm::SDNodeFlags) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp:8420:0
17:01:04  #2 0x00007ff612cbbca2 llvm::SelectionDAG::getNode(unsigned int, class llvm::SDLoc const &, struct llvm::EVT, class llvm::ArrayRef<class llvm::SDValue>) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAG.cpp:8358:0
17:01:04  #3 0x00007ff612b373ce lowerV8I16Shuffle C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\Target\X86\X86ISelLowering.cpp:15804:0
17:01:04  #4 0x00007ff612b39862 lowerVECTOR_SHUFFLE C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\Target\X86\X86ISelLowering.cpp:19171:0
17:01:04  #5 0x00007ff612a6bc27 llvm::X86TargetLowering::LowerOperation(class llvm::SDValue, class llvm::SelectionDAG &) const C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\Target\X86\X86ISelLowering.cpp:31599:0
17:01:04  #6 0x00007ff612e0b294 `anonymous namespace'::SelectionDAGLegalize::LegalizeOp C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\LegalizeDAG.cpp:1281:0
17:01:04  #7 0x00007ff612e09413 llvm::SelectionDAG::Legalize(void) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\LegalizeDAG.cpp:4995:0
17:01:04  #8 0x00007ff612d0feb9 llvm::SelectionDAGISel::CodeGenAndEmitDAG(void) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAGISel.cpp:933:0
17:01:04  #9 0x00007ff612d14acd llvm::SelectionDAGISel::SelectAllBasicBlocks(class llvm::Function const &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAGISel.cpp:1631:0
17:01:04 #10 0x00007ff612d1b404 llvm::SelectionDAGISel::runOnMachineFunction(class llvm::MachineFunction &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\SelectionDAG\SelectionDAGISel.cpp:511:0
17:01:04 #11 0x00007ff612978a1d `anonymous namespace'::X86DAGToDAGISel::runOnMachineFunction C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\Target\X86\X86ISelDAGToDAG.cpp:195:0
17:01:04 #12 0x00007ff612f19321 llvm::MachineFunctionPass::runOnFunction(class llvm::Function &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\CodeGen\MachineFunctionPass.cpp:72:0
17:01:04 #13 0x00007ff613cbf12b llvm::FPPassManager::runOnFunction(class llvm::Function &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1434:0
17:01:04 #14 0x00007ff613cbf373 llvm::FPPassManager::runOnModule(class llvm::Module &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1479:0
17:01:04 #15 0x00007ff613cbf5b8 `anonymous namespace'::MPPassManager::runOnModule C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1549:0
17:01:04 #16 0x00007ff613cbee20 llvm::legacy::PassManager::run(class llvm::Module &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1676:0
17:01:04 #17 0x00007ff612ee782e codegen C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTOBackend.cpp:430:0
17:01:04 #18 0x00007ff612ee62e5 <lambda_e0845f8b0ff363d6d03d2cd977f2ce79>::operator() C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTOBackend.cpp:598:0
17:01:04 #19 0x00007ff612eeb90a llvm::lto::thinBackend(struct llvm::lto::Config const &, unsigned int, class std::function<(unsigned int)>, class llvm::Module &, class llvm::ModuleSummaryIndex const &, class llvm::StringMap<class std::unordered_set<unsigned __int64, struct std::hash<unsigned __int64>, struct std::equal_to<unsigned __int64>, class std::allocator<unsigned __int64>>, class llvm::MallocAllocator> const &, class llvm::DenseMap<unsigned __int64, class llvm::GlobalValueSummary *, struct llvm::DenseMapInfo<unsigned __int64, void>, struct llvm::detail::DenseMapPair<unsigned __int64, class llvm::GlobalValueSummary *>> const &, class llvm::MapVector<class llvm::StringRef, class llvm::BitcodeModule, class llvm::DenseMap<class llvm::StringRef, unsigned int, struct llvm::DenseMapInfo<class llvm::StringRef, void>, struct llvm::detail::DenseMapPair<class llvm::StringRef, unsigned int>>, class std::vector<struct std::pair<class llvm::StringRef, class llvm::BitcodeModule>, class std::allocator<struct std::pair<class llvm::StringRef, class llvm::BitcodeModule>>>> *, class std::vector<unsigned char, class std::allocator<unsigned char>> const &) C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTOBackend.cpp:668:0
17:01:04 #20 0x00007ff612ed6ae7 <lambda_51cf04bbbb9cfc9263f3cfeece7282d7>::operator() C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTO.cpp:1225:0
17:01:04 #21 0x00007ff612ee1727 `anonymous namespace'::InProcessThinBackend::runThinLTOBackendThread C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTO.cpp:1248:0
17:01:04 #22 0x00007ff612ed6520 <lambda_2762ba73044a280da963d9912b490b63>::operator() C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\LTO\LTO.cpp:1277:0
17:01:04 #23 0x00007ff612ed862a std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,<lambda_2762ba73044a280da963d9912b490b63>,llvm::BitcodeModule &,std::reference_wrapper<llvm::ModuleSummaryIndex>,std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned __int64,std::hash<unsigned __int64>,std::equal_to<unsigned __int64>,std::allocator<unsigned __int64> >,llvm::MallocAllocator> const >,std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,llvm::DenseMapInfo<llvm::ValueInfo,void> > const >,std::reference_wrapper<std::map<unsigned __int64,enum llvm::GlobalValue::LinkageTypes,std::less<unsigned __int64>,std::allocator<std::pair<unsigned __int64 const ,enum llvm::GlobalValue::LinkageTypes> > > const >,std::reference_wrapper<llvm::DenseMap<unsigned __int64,llvm::GlobalValueSummary *,llvm::DenseMapInfo<unsigned __int64,void>,llvm::detail::DenseMapPair<unsigned __int64,llvm::GlobalValueSummary *> > const >,std::reference_wrapper<llvm::MapVector<llvm::StringRef,llvm::BitcodeModule,llvm::DenseMap<llvm::StringRef,unsigned int,llvm::DenseMapInfo<llvm::StringRef,void>,llvm::detail::DenseMapPair<llvm::StringRef,unsigned int> >,std::vector<std::pair<llvm::StringRef,llvm::BitcodeModule>,std::allocator<std::pair<llvm::StringRef,llvm::BitcodeModule> > > > > >,void>::_Do_call C:\.nuget\dd\vs2019_buildtools.16.11.9\tools\VC\Tools\MSVC\14.29.30133\include\functional:921:0
17:01:04 #24 0x00007ff6128781fc std::_Func_impl_no_alloc<class <lambda_3f890a8f4379cabfb886f101ac7ee7cd>, void>::_Do_call(void) C:\.nuget\dd\vs2019_buildtools.16.11.9\tools\VC\Tools\MSVC\14.29.30133\include\functional:920:0
17:01:04 #25 0x00007ff613ee1a8f <lambda_647dacfb2f54ceb9a051a40a222b4ef4>::operator() C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\lib\Support\ThreadPool.cpp:64:0
17:01:04 #26 0x00007ff613ee143e llvm::thread::ThreadProxy<std::tuple<<lambda_647dacfb2f54ceb9a051a40a222b4ef4> > > C:\code\llvm\llvm.packageci\externals\llvm-project\llvm\include\llvm\Support\thread.h:70:0
17:01:04 #27 0x00007ff613eaeb04 thread_start<unsigned int (__cdecl*)(void *),1> minkernel\crts\ucrt\src\appcrt\startup\thread.cpp:97:0
17:01:04 #28 0x00007ffb51707034 (C:\WINDOWS\System32\KERNEL32.DLL+0x17034)
17:01:04 #29 0x00007ffb52c42651 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x52651)
```

But if I switch to `-march=skylake` instead it works and no crash. Removing `/arch:AVX` also works.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVWltzozoS_jXOCxUXSFwf_OBgJ5sa51JxTs7sk0sIYXOCwSsgE--v35YAGzAm9pw5yWzKwejW6u9rSd2S5SX-djRnWb4Z4PFAnQzU6onGylUeRr5CIxIvFRL7SgSpH2G2Uu7mL-5wX48mcRAuc86U2ezlTlYBacrAVOmavDLl8uY-jP8iyuVElC-m9-Or2XQxe34Y4MnzKoyhwL0bf5su3O_fF9ez8c0cCgYIDdA14VTIGr98h_S-3om13Ie7x9vZ9AkqShSXNBqyd9bo76M6s9v7b7IU0F9GYfwqS4fDgeFG0dsaQLYJgyxRcrnhSeCTjEBaGSA7zBTI8YgXbZUV2WxYnBZsJtmKccULY8JDliqXipdnSrYKUwU-G86ybKsEJM2kDRhJt0qWKJyBMD-nTAG5knHk1O1HOUlXShi3zQrqFh-Z1CwoVzXx0BVQEquK-q7CnxUEpoYowSrRFIkT5ODxnEWMZmEST8Y3RQ7ljGTsYcM4aJcCTCAxTetNJveJz0A2MOQq7dIx52T7xIIBdg8bvpAoZwM8BWiKKzINl4Ksivnia7gh9JUsGQ0hg71njMckSstCYYO_QONak9CDpwtiblgMbw1EzeSQbsSs0DTV1gVDRyjTmpR5XqBavZQtWSYoAa7yOA2XMfPBTlkXO_PJLKFieoHxB8gUVdKM5zSr1Zm-PP8NYjsEFga7jsgy_VribR2pPbyjNu-UoP8b3r-UV2zYPbziBq8etjAsMlHyg_EX-1Yz56s8CCL2i_V_JhzMAy_fbbN43oLmM9FrGC-rmWjYat9M1FuaO7aJSs2n7vPD02L-rz-ur2fTL9Hd0SytR3ejoTsxPYrqqwgILbqpxBbZMiUXX2HiztW3GHNdg7w2MopR7pRD_gvowZrhOD30mA16mOohRxeOlsRJvF0nearEZM1S0A-wWocAZ2xJovC_rKStTD1sPmsaVj3W3Aqy-8aD1QLs6BruXd12CJH9loT-Jy4xh9h0xzF6sNkNbL4aMM85gk0MlSK37H4c-9N1mImePx1oW7ESrYNxD1inCVbTCfU_BFvkjqPoiqQhvYoS-toVW13nsWxbd1VfzYZm4mPjWgRLaosOT4eCj-jgefwQ3xEKewVWYe6go1Xj9-DD0ProaAaPjmUTzf9oXYMVFLp4Tj6k6FMW8kqVnZ87NvMF3GbMFmgORtpxAz6CeWvoeiz_WSbvULDEbaEe2I2QClMvgOikrv2jEHRHYlCM_w6Ab5_KZZ1ua5pVFtbxsSBMYNXbWCGAPAHrHWxmI9Y1qWXBl-C0jkUkAqfRxml49kcz964X_KeCM_Q-cGYLHGNIrdkkklKL9y5Ev5UZTcvsQdqKs5hlI6YIvZbsV6-f4sBLPq-gMYv9KljCx3a5Qj-7pZ-JmKHA5jIia88nC6bauhHYnhoE2MS-6avYR9R3LCtAlIkBPC34T-QmIeFgml9vgCPIDOfYPlMgc1rIPEcl9TGWJcVLBituKReUP9iH7-q58hSyuWvv3uinmV80CaoFFrsHpwJOeT7SN5CPlc7z9Zrw7W3ss_emQgebsExsgu7IZndesFMujxPuM878RQpeF7s79RYLUNDUa6cSuzYrkq66qjaOena12X9yEi0Ef8datFQiEUSichR1tzjCmGw23red9nMyYXHKCkq6MLer30SJRyK5zS15rw4bD8ZKJfk2DjpBQxu5pThyMuazjIRRU9QjCTvZOF1RyVs_I9DPC0w7yXv3CBInTh0Nr8JMTPHKufZy3Su4PZE-orZX2E9yfLqCraG4G79vFYntmbA5oYd-bj-cL_9Il9Wnebx-iHfHDl0RfurElnUPRucn-Q7T7PEdqLmLZL5JmFXzioZGA1X34M-hAXWQiQNMA8bAIyIb-dYne8XdiQ_q2RshreUPNQtZHwWUt_EjTyhL0-eak6yiMJG35_V5xRnx_3GIep_ZUNtsBlhybzZkmcgjFlZ1nSBb9YkDIY3jwGZJd1TPxF9lNsvqwYRbmGwTkf3EWoiN2iJcb6JFnCzkNJNrQVV8FUKMwBtZf8AKyimDYMc9jxrkHlkpSrey64KzAOKKmLLFDy5-iBT994UwhfATm9cjmnNimdNimNNjl1ODFqVN3fFw5RwapO-aS7D7TOn7pYdE7ap719ldvfSZylnq7ArXx6IpFufr7hClyJiFsZhAz9sNS-u9RUwczZxDfdvxtZvufMx5OpWU_B0rHQ01T4gxz4kt92HPz4aUJ8SSP8tEPcTsjkaOR5WdfHYLacWRJ0yCeuszGTxBhd3874oRmwP2PFZOnwjnylU6_mvcFE5kkiwodFq5xmGcF0e3vg-PtxSpmrPwxG2VLEmidKiZQ00bOlAm0_D94ooT3zIh7vvAl6YPkTPEqoYxpMKYRrn0uNU2mggzOKjnvBs1f6K1LVsL6EfesohV974QB7ajEjvQseVQ4gWebZuBpmqEWoxZtNpadBJy-KPRp1LTc9KDmgeKEP8BxBpqU7d8QgMPBYZOmecQ1dCIrhKEIAZggf45wdE832wSLrKLePIRaKgi9p5TYWS2wemY1db4TAor3kvBPHnf1mdLlm_E8HfPYmQ3R34VC3vLlhl7QgoMQ3ERzeqzs9WkgjAPCorGizQjvBEfwRol7o4tFtRnNJI-xynHsFKlXE0gXINXBOVZJGDyTEDIqVQs5RSesOSXSdFHvtlrXP6K2Rfk1k4hPUOzVEvFosAuaf3z9n7y8Odc0LFNM7bGCF6_TZ_upzOMhpPZbICu1HdNtNpdUzvow6n3gaiOTEPr7uPf8-fpnewjzvwoGvpiXkMHhmiyvwfXvOpWPK_yTAkD5VZJf8CyuhI36aDG5bq4QThJX7cReWXixl4ILlRsmMT1uoS_pvL2XZwo8mLdUHli6-QNVmvRvHkDEdrCCEqKVuUtyQt_BOE6dshFFmYRG7nJehNGorm8MQmrx3txF1DcmSxvIUpBsd_ZgVRid1fwCAKpwABfX-Q8Gq2ybCN_TEPX8FlCX7k3pMkaEnIkF1-7AY-uwzTNRcx3beimblysRkRVbdg_awb1MfYMqnmWZ3vMN1QDdiUavYiIx6J0NDCuBghJFMI98_ANQg1xTdNVavnlEXurQMCGHGNyEY6QipCKYUk1VMcwh0wLAmZh3yeGp_kGHegqW4PnH8pZnPDlBR9JCF6-TKEwCtMs3ReCCxEzikn1QD7Js1XCRxnPLyTSkYT5P5YSPzA">