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

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] Initializing an HLSL vector with a function call results in an assert
        </td>
    </tr>

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

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

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

<pre>
    The assert is in CodeGenFunction::getOrCreateOpaqueRValueMapping
https://github.com/llvm/llvm-project/blob/ee4c8b556c5cf42c55ce9540bbb0e29c11894a71/clang/lib/CodeGen/CGExpr.cpp#L5645

The code to trigger the assert is below.
```hlsl
uint GetInputState(uint x) {
 return x;


export uint4 fn() {
    uint4 counter = { GetInputState(0), GetInputState(1), GetInputState(2), GetInputState(3) };
 return counter;
}
```

If you instead switch counter to be 
` uint4 counter = { 0,1,2,3};`

we get codegen
https://hlsl.godbolt.org/z/1TYo61nxE

## Crash dump
```gdb
  * frame #0: 0x0000000103eeb77c clang-dxc`clang::CodeGen::CodeGenFunction::getOrCreateOpaqueRValueMapping(this=0x000000016fdf1298, e=0x000000012c91a6f8) at CGExpr.cpp:5664:3
    frame #1: 0x0000000103f87a80 clang-dxc`(anonymous namespace)::ScalarExprEmitter::VisitOpaqueValueExpr(this=0x000000016fdee048, E=0x000000012c91a6f8) at CGExprScalar.cpp:545:16
    frame #2: 0x0000000103f814cc clang-dxc`clang::StmtVisitorBase<std::__1::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(this=0x000000016fdee048, S=0x000000012c91a6f8) at StmtNodes.inc:196:1
    frame #3: 0x0000000103f77b3c clang-dxc`(anonymous namespace)::ScalarExprEmitter::Visit(this=0x000000016fdee048, E=0x000000012c91a6f8) at CGExprScalar.cpp:449:52
    frame #4: 0x0000000103f88fb8 clang-dxc`(anonymous namespace)::ScalarExprEmitter::VisitInitListExpr(this=0x000000016fdee048, E=0x000000012c91a7b8) at CGExprScalar.cpp:2143:19
    frame #5: 0x0000000103f816e8 clang-dxc`clang::StmtVisitorBase<std::__1::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(this=0x000000016fdee048, S=0x000000012c91a7b8) at StmtNodes.inc:358:1
    frame #6: 0x0000000103f77b3c clang-dxc`(anonymous namespace)::ScalarExprEmitter::Visit(this=0x000000016fdee048, E=0x000000012c91a7b8) at CGExprScalar.cpp:449:52
    frame #7: 0x0000000103f77920 clang-dxc`clang::CodeGen::CodeGenFunction::EmitScalarExpr(this=0x000000016fdf1298, E=0x000000012c91a7b8, IgnoreResultAssign=false) at CGExprScalar.cpp:5748:8
 frame #8: 0x0000000103e89e18 clang-dxc`clang::CodeGen::CodeGenFunction::EmitScalarInit(this=0x000000016fdf1298, init=0x000000012c91a7b8, D=0x000000012c91a2b0, lvalue=LValue @ 0x000000016fdeeb28, capturedByInit=false) at CGDecl.cpp:784:15
    frame #9: 0x0000000103e91518 clang-dxc`clang::CodeGen::CodeGenFunction::EmitExprAsInit(this=0x000000016fdf1298, init=0x000000012c91a7b8, D=0x000000012c91a2b0, lvalue=LValue @ 0x000000016fdef020, capturedByInit=false) at CGDecl.cpp:2093:5
    frame #10: 0x0000000103e8dd30 clang-dxc`clang::CodeGen::CodeGenFunction::EmitAutoVarInit(this=0x000000016fdf1298, emission=0x000000016fdef410) at CGDecl.cpp:2045:12
    frame #11: 0x0000000103e885a4 clang-dxc`clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(this=0x000000016fdf1298, D=0x000000012c91a2b0) at CGDecl.cpp:1333:3
    frame #12: 0x0000000103e8794c clang-dxc`clang::CodeGen::CodeGenFunction::EmitVarDecl(this=0x000000016fdf1298, D=0x000000012c91a2b0) at CGDecl.cpp:225:10
    frame #13: 0x0000000103e870bc clang-dxc`clang::CodeGen::CodeGenFunction::EmitDecl(this=0x000000016fdf1298, D=0x000000012c91a2b0, EvaluateConditionDecl=true) at CGDecl.cpp:166:5
 frame #14: 0x00000001041f0304 clang-dxc`clang::CodeGen::CodeGenFunction::EmitDeclStmt(this=0x000000016fdf1298, S=0x000000012c91a830) at CGStmt.cpp:1674:5
    frame #15: 0x00000001041e6bbc clang-dxc`clang::CodeGen::CodeGenFunction::EmitSimpleStmt(this=0x000000016fdf1298, S=0x000000012c91a830, Attrs=ArrayRef<const clang::Attr *> @ 0x000000016fdef6f0) at CGStmt.cpp:515:5
    frame #16: 0x00000001041e5874 clang-dxc`clang::CodeGen::CodeGenFunction::EmitStmt(this=0x000000016fdf1298, S=0x000000012c91a830, Attrs=ArrayRef<const clang::Attr *> @ 0x000000016fdef860) at CGStmt.cpp:65:7
    frame #17: 0x00000001041f1958 clang-dxc`clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(this=0x000000016fdf1298, S=0x000000012c91c2e0, GetLast=false, AggSlot=AggValueSlot @ 0x000000016fdefb38) at CGStmt.cpp:622:7
    frame #18: 0x00000001041f021c clang-dxc`clang::CodeGen::CodeGenFunction::EmitCompoundStmt(this=0x000000016fdf1298, S=0x000000012c91c2e0, GetLast=false, AggSlot=AggValueSlot @ 0x000000016fdefcc8) at CGStmt.cpp:573:10
    frame #19: 0x00000001041e6ba4 clang-dxc`clang::CodeGen::CodeGenFunction::EmitSimpleStmt(this=0x000000016fdf1298, S=0x000000012c91c2e0, Attrs=ArrayRef<const clang::Attr *> @ 0x000000016fdefc80) at CGStmt.cpp:512:5
    frame #20: 0x00000001041e5874 clang-dxc`clang::CodeGen::CodeGenFunction::EmitStmt(this=0x000000016fdf1298, S=0x000000012c91c2e0, Attrs=ArrayRef<const clang::Attr *> @ 0x000000016fdefdf0) at CGStmt.cpp:65:7
    frame #21: 0x00000001041e73f8 clang-dxc`clang::CodeGen::CodeGenFunction::EmitIfStmt(this=0x000000016fdf1298, S=0x000000012c91c340) at CGStmt.cpp:974:5
    frame #22: 0x00000001041e5b64 clang-dxc`clang::CodeGen::CodeGenFunction::EmitStmt(this=0x000000016fdf1298, S=0x000000012c91c340, Attrs=ArrayRef<const clang::Attr *> @ 0x000000016fdf02a0) at CGStmt.cpp:157:32
    frame #23: 0x00000001041f1958 clang-dxc`clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(this=0x000000016fdf1298, S=0x000000012c91c360, GetLast=false, AggSlot=AggValueSlot @ 0x000000016fdf0548) at CGStmt.cpp:622:7
    frame #24: 0x00000001042cac14 clang-dxc`clang::CodeGen::CodeGenFunction::EmitFunctionBody(this=0x000000016fdf1298, Body=0x000000012c91c360) at CodeGenFunction.cpp:1373:5
    frame #25: 0x00000001042cbc9c clang-dxc`clang::CodeGen::CodeGenFunction::GenerateCode(this=0x000000016fdf1298, GD=GlobalDecl @ 0x000000016fdf11c8, Fn=0x000000012c6233e8, FnInfo=0x000000012c623360) at CodeGenFunction.cpp:1619:5
    frame #26: 0x0000000104300ab4 clang-dxc`clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(this=0x000000012c827600, GD=GlobalDecl @ 0x000000016fdf2cc8, GV=0x000000012c6233e8) at CodeGenModule.cpp:6176:26
    frame #27: 0x00000001042f622c clang-dxc`clang::CodeGen::CodeGenModule::EmitGlobalDefinition(this=0x000000012c827600, GD=GlobalDecl @ 0x000000016fdf2e48, GV=0x0000000000000000) at CodeGenModule.cpp:4290:12
    frame #28: 0x00000001042fb8e8 clang-dxc`clang::CodeGen::CodeGenModule::EmitGlobal(this=0x000000012c827600, GD=GlobalDecl @ 0x000000016fdf30d8) at CodeGenModule.cpp:4000:5
    frame #29: 0x00000001042f48c8 clang-dxc`clang::CodeGen::CodeGenModule::EmitTopLevelDecl(this=0x000000012c827600, D=0x000000012c919f60) at CodeGenModule.cpp:7061:5
    frame #30: 0x000000010451463c clang-dxc`(anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(this=0x000000012c60e990, DG=DeclGroupRef @ 0x000000016fdf50f0) at ModuleBuilder.cpp:190:18
    frame #31: 0x00000001042a9f90 clang-dxc`clang::BackendConsumer::HandleTopLevelDecl(this=0x000000012c60ea80, D=DeclGroupRef @ 0x000000016fdf5178) at CodeGenAction.cpp:170:8
    frame #32: 0x0000000106ac9fa8 clang-dxc`clang::ParseAST(S=0x000000012c83de00, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:175:31
    frame #33: 0x0000000104e2175c clang-dxc`clang::ASTFrontendAction::ExecuteAction(this=0x000000012c726c50) at FrontendAction.cpp:1345:3
    frame #34: 0x00000001042b06f0 clang-dxc`clang::CodeGenAction::ExecuteAction(this=0x000000012c726c50) at CodeGenAction.cpp:1111:30
    frame #35: 0x0000000104e20fd4 clang-dxc`clang::FrontendAction::Execute(this=0x000000012c726c50) at FrontendAction.cpp:1227:3
    frame #36: 0x0000000104d3ac18 clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x000000012c723580, Act=0x000000012c726c50) at CompilerInstance.cpp:1056:33
    frame #37: 0x0000000104f5dbf4 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x000000012c723580) at ExecuteCompilerInvocation.cpp:300:25
    frame #38: 0x0000000100014a60 clang-dxc`cc1_main(Argv=ArrayRef<const char *> @ 0x000000016fdf5eb8, Argv0="/Users/farzonlotfi/Projects/llvm_debug_build/bin/clang-20", MainAddr=0x0000000100004980) at cc1_main.cpp:294:15
    frame #39: 0x0000000100006328 clang-dxc`ExecuteCC1Tool(ArgV=0x000000016fdf96a8, ToolContext=0x000000016fdfe658) at driver.cpp:218:12
    frame #40: 0x00000001000133dc clang-dxc`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x000000016fdfa1e8, ArgV=0x000000016fdf96a8) const at driver.cpp:364:16
    frame #41: 0x00000001000133ac clang-dxc`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=6171894248, params=0x000000016fdf96a8) at STLFunctionalExtras.h:46:12
    frame #42: 0x0000000104a43890 clang-dxc`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x000000016fdfa870, params=0x000000016fdf96a8) const at STLFunctionalExtras.h:69:12
    frame #43: 0x0000000104a43850 clang-dxc`clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0::operator()(this=0x000000016fdf9608) const at Job.cpp:435:34
 frame #44: 0x0000000104a4381c clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(callable=6171891208) at STLFunctionalExtras.h:46:12
    frame #45: 0x00000001011764b4 clang-dxc`llvm::function_ref<void ()>::operator()(this=0x000000016fdf95a8) const at STLFunctionalExtras.h:69:12
    frame #46: 0x00000001030a683c clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=0x000000016fdf9648, Fn=function_ref<void ()> @ 0x000000016fdf95a8) at CrashRecoveryContext.cpp:426:3
    frame #47: 0x0000000104a3fd40 clang-dxc`clang::driver::CC1Command::Execute(this=0x000000012c7237d0, Redirects=ArrayRef<std::__1::optional<llvm::StringRef> > @ 0x000000016fdf9690, ErrMsg="", ExecutionFailed=0x000000016fdf9b9f) const at Job.cpp:435:12
    frame #48: 0x00000001049d5754 clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x000000012c722320, C=0x000000012c7237d0, FailingCommand=0x000000016fdf9cb8, LogOnly=false) const at Compilation.cpp:196:15
    frame #49: 0x00000001049d59e0 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x000000012c722320, Jobs=0x000000012c7223a0, FailingCommands=0x000000016fdfa548, LogOnly=false) const at Compilation.cpp:251:19
    frame #50: 0x00000001049f3f5c clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa598, C=0x000000012c722320, FailingCommands=0x000000016fdfa548) at Driver.cpp:2220:5
    frame #51: 0x0000000100005aa4 clang-dxc`clang_main(Argc=15, Argv=0x000000016fdfed90, ToolContext=0x000000016fdfe658) at driver.cpp:402:21
    frame #52: 0x00000001000401c0 clang-dxc`main(argc=15, argv=0x000000016fdfed90) at clang-driver.cpp:17:10
    frame #53: 0x0000000185c86b4c dyld`start + 6000
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tv47iS_jXMCzEBb7o95EGR40wG6Z1BnO3dfQooirK1I4s-EpVO5tcfkLIcWZRycw56cHAaje7EosT6vipWfSzKvGmKdSXlBfAugbc4463eqPoi5_VfqirPUpU9X9xvJORNI2sNiwYWFUxUJq9ltWwroQtVARoDGq-l_r1Oasm1_H3H_9HKu--8bOU3vtsV1RqgeKP1rjFjyRKQ5brQmzY9F2oLyLIsH_v_ftnV6v-l0IAs01KlgCylZCJMPc8XnsgZEZ4nZOQxlKYpkiQSGIcR4wEGZClKXq3Ngwpz495M89P11dOuPhe7HSD01vOZB1AMUGyQCZVJqBXUdbFeyxrqI7SpLNWPczPaR93fTdmUAMVtUWl4LfVNtWv1SnMtAQnth0-ARBAElwDFsJa6rSv4BKj5FQQL2E0sn3aq1tCMZzCvAAkHN0G4vyBUW2lZQ0AX5pozHQIkAiRxPsczn5OZz2k3-aKzsjd6P_vB9CEJHYqbHD6rFhZVoyXPYPOj0GJzsFormErY3TUDCAGSYEASAkhC9wb0D_8h4Vpq6561rJz4MW44X6ssVaU-V7Xx-l-ALPH9_ykfV09X3UMAoYBQmNS82cCs3e6GINZZaukGJIZ5zbcSAkIRoDFET6j7gxGVMg0CAW1o_ZI9CeCjLsxs1PcxNvzlQ-uChHpTNIAuXub08yzHJAqNq-TRFSIizP3cBgvXcBDWNPZ8nwEa030EHQDhMaA8DHiIjgABEvJKVc9b1Taw4lvZ7LiQJloshJXgJa_NXFfbQtuYMB9_L5pCd5gsJDNgBo-UiFk8V2_j6WbrUTEP0Bj7Y1TERYWZmHXTSm-1NVfVl7yRgCaNzrpLDw-4-4Fn2cNOFTbmSQI_zAlJoM1jHTeGEEBiQK8GZL3Fzuo1dgyG_1KZbM6LShhSIt_8O2aGOswEQUrFV_n7qx3MmJnUI2MYzHVwmKfhV8G4qQp9WzT6kzEbpK9AIphR658xJm8iaH0Z_vsF7Qs946ClXjgVtP7fLmhf9fBc0AYTMCKCPl88DJQXYG8VizkYCbxZV6qWd7JpSx1byQfoIudlI19JvQEzvgoNyAPC0CmPYSTxbAh_BKFZkm8hLMyYOZAL9wpJkQ3xRxvZdHFrQxwChuAoElJinyH4Tre1zC6fb7qpjklaSFHu6QlCk6KwN46ByGEowt6pDBnnxM1PZShHBH2MIYIikwcdhrCrscIsoycuk7jV6vv7okhui6axN4_yQc4wmkbSyRBnwWNHXckw9Dj7EijGgLegzHnUxYCplQauPnSklAyDiJ2geA2ELzefEOsB5Jjv6B0ZBig90fxTbE_glVlMXMtEVVlhHmwfRxe6bicXCvb9fp284BoLIIZzRNGJkWUmNSX5LWwTNT2kL34xjzjYHrDJRT4WOwxLPz3VL6tiuyvlKQgSGGtdm_viuubPdzIHNBGqajQcWGPGwE4JTaVCP5_kwrOgXSrG6oZh6YXBia786SSE_iQJvuEgcDgYSyOGcxx5J5bFRG13qq0yM_3_FHqjWr0Saic_zosgEu1bI7e8GZS1BMbr9apU5qN4vbbV0fw6xUhKw0lGCJmkZKylzAon-MQVMqTkJ9EgxCQNXkCnM_hYMdlMcWoNPSVT9Cx8wSIR4UymIFOZgoyV0U_MFF9IQjadLqczBRlLKoZlQPMTM8VN_kkWKJu0PZquemQspowDU__nONCa_gUOzBHh07XfM1mdOqqYjDXZ3y3ZU__ULJcjj30k2RNHzhHBBT4xMPpPLlX2_BYNdsw0Ex2K40kOu4Zgcg9HHHlHRCqiE4rXtaxkbUVz9qZLr432vi5VykujaCfcg7GwI5fVCLNPKJX7SzdVriYuv0WJbyuWS4kj8yhCPP2Qi7-prC3li4M7jL0BC5mb7b2hbIIgIkIS-Ai9jyAiOoKuv88QNGSgM6uPcBwYpMTtyTsaj-Q-IR-KiWkCvhS4ZBPAD39eAc5IhCa7AMRRciRPw_nG7vuBnw6Xouw1ZzIDeSqYHVFGchaKkyDdq92tfJTl3OZ6CMzdXEf5eF0eAQmQj6eAOAd6zMPM_1hreT-fSU-qvtnuyu7jX3mVlfJtVD6SUdShugZ0YQZe16rd3cl8wmEeOqilDuBlW5SZ7LuyuIvB0MHpyCbCozyabapdcvGnrLJEVU277ZvlH0DEw4Of3gKEg1EExkfpNEB9l_kIz1hJ-VxEOZ8NwD943ch4dQ9IOC74Ic1kF1V_1EVlT72bYc1f_VnsBpW0kM2oq9k_-2CxKX7UPXlzZI8kOPBm81-8ul_WqtKyyuJhYX-SotVy_9Ek_wHxhddHyfEzDnXbdiydbp9zrsZIivz8rd7rKfZNOh3bzil1NoPOGRmTBOXZbBF9hcBPU0dsIXOpc-p7Rrl4rbO_3RWlrG-qRvNKyA-wR71udcVi3MsfMXs8Qw8AecZU6iJwCnTuZWk-S-7e1pdpHpXge7uTbtik4da42Zv3VlJbeIibsMfFFCHMuD-KUIEftrwwhsT1-nFyd7Phr2xpPNmdiJi7EaALQAggy_9uZN0Asty__qR0XgCy_KN7I6nZv6H0kMm0XT-kJi0DskyNFd2bR78QZJ-TwG-8qOIsq48IMv-w6EBQj6FvcEfT50nOgRJCyKfkOOx6shN8r1TZsfLdkc-Rzy1oMyYxkf-knTHS9_psndXFo3w51A4ntQ8b11eEMKXZRNLrHVZU2p4jbXht3GP-Dg-hB8ZB60lA_EMlBoQ9oO5Htevqcffu1NyOgWPZ-3mOj6ibxkFM7fs07qsnbFxpLWJ-jLio9ABTvq8uD7UNUHMRkPDl-mrLy_K7FAd5kdjo3cO35_F7EvYH84KXZcrFnw95ZQZ_Mb1XgIRmBp4a-bbwcYDDiJFON-94zbcu0T2XXMPV_W1fTnl59aRr3pxvjNb0pyPI6ZlwRsORcvkXcvnOQAoD9A74h1CaI8GPpklwtIMhwZuty12k7gtNghO13fIqG9e_F1YG6dF9iUTtOjMBTQY86rqo1vaWK0taAt07U94U4qGxQ_dMTw80Vx50zQsjvbpxc8_kZWkqhaoHA81YG8ipTW_xgepPpoXIR8fu-k2l_Y7IShDKjk7jmCObjHtGvfpHVWTzi95e3Vv1yjL-j3tn3TuZljBBn807Y6mJceCzUb_mQ-58Z-x5J6YK52UpxP1wtKN9sdu--3onhXqU9fOh6psrd2214rksZ1uHkc9emmiv4p9QWD1Mo1MnTDj0VPwprc0cpcppnrET0-G01g4ym9jvZFbUVuYdiclPLCc4Q4jfNQGu6vpbs-41p5WLnYmFqpa8KGXmOiKN8lfT1USUOD2pKPMCb1brHzFoNTt3dlQ9rTNM2vMrksBklmMDr6jWB_eMYYpOlN-q9e9V-TzchR-QD2w7dET8SeHMnBZWlHmRfF8MzTDwm0qbt-DbMe5FPsHAhMzw2CcoIB6efuHUaX5FOc3nOxJDChaDn4_2cnxu59rZ33Xo3Rjo6XkfAzZvLI42IIRMdio9V44jj08dHw92jALQBfb6DaC7Ccq6pfqZjRJDxG6XHDvHMhchhrA4Dse9hXxoIZ-3sNtHdvcPbbBvW7gn7d5IZIaeCP2UCZg9lxnwUaN5bdT0JfQRQsOvSpxlFzSLaMTP5AUOmIcYJcw_21zwUKYBCTMU5WGAqfQDLw9JRj2eYZQRdFZcEEQ8xHCEfMyQf46iIPMkzT3JqfRSAhiSW16U5yaZnqt6fVY0TSsvMPUZCs9KnsqysV9PIqSSP6C92uVNQMivt6tb84u3OKsv7PeH0nbdAIbKotHNyzN1oUv7JaeFTfL_C7wFvKkKXfCy-Kuo1pBX0DwLPtqdA_xR6A3ksC960OgOWNv3Z-1XoHi1_5LQWVuXFx_-apMF0QCy3KN8vCD_DAAA__-hTF07">