<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118523>118523</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[HLSL] Assertion failure when generating DebugInfo for RWBuffer types
</td>
</tr>
<tr>
<th>Labels</th>
<td>
HLSL
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bogner
</td>
</tr>
</table>
<pre>
Given a simple program involving an RWBuffer:
```hlsl
// clang --driver-mode=dxc -Zi -Fc out.s -T cs_6_3 %s
RWBuffer<float4> Out : register(u7, space4);
[numthreads(8,1,1)]
void main(uint GI : SV_GroupIndex) {
Out[GI] = 0;
}
```
We get an assert during debug info generation like so:
> Assertion failed: (isa<To>(Val) && "cast<Ty>() argument of incompatible type!"), function cast, file Casting.h, line 572.
```
* frame #4: 0x0000000103bd3ca4 clang`decltype(auto) llvm::cast<clang::PointerType, clang::QualType>(Val=0x000000016fdf04d0) at Casting.h:572:3
frame #5: 0x0000000103bd3734 clang`clang::CodeGen::CGDebugInfo::getOrCreateInstanceMethodType(this=0x000000015c832800, ThisPtr=QualType @ 0x000000016fdf04d0, Func=0x000000015b8c3300, Unit=0x00006000037c5110) at CGDebugInfo.cpp:2027:38
frame #6: 0x0000000103bd34a0 clang`clang::CodeGen::CGDebugInfo::getOrCreateMethodType(this=0x000000015c832800, Method=0x000000015b8c4a00, Unit=0x00006000037c5110) at CGDebugInfo.cpp:1989:10
frame #7: 0x0000000103be2edc clang`clang::CodeGen::CGDebugInfo::getOrCreateFunctionType(this=0x000000015c832800, D=0x000000015b8c4a00, FnType=QualType @ 0x000000016fdf08a0, F=0x00006000037c5110) at CGDebugInfo.cpp:4340:12
frame #8: 0x0000000103be57b0 clang`clang::CodeGen::CGDebugInfo::emitFunctionStart(this=0x000000015c832800, GD=GlobalDecl @ 0x000000016fdf0bb8, Loc=(ID = 0), ScopeLoc=(ID = 0), FnType=QualType @ 0x000000016fdf0bb0, Fn=0x00006000021c1b98, CurFuncIsThunk=false) at CGDebugInfo.cpp:4491:38
frame #9: 0x0000000104067128 clang`clang::CodeGen::CodeGenFunction::StartFunction(this=0x000000016fdf3478, GD=GlobalDecl @ 0x000000016fdf3008, RetTy=QualType @ 0x000000016fdf3000, Fn=0x00006000021c1b98, FnInfo=0x0000600003dc4200, Args=0x000000016fdf33a8, Loc=(ID = 0), StartLoc=(ID = 0)) at CodeGenFunction.cpp:1133:9
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykltGP2rgTx_8a82KBnLFDkgceWFL4IfWn9rp7rXQvlZNMgq_GRrbDtf_9yQkLu5R299oVC8qMPTPfjx17pPeqM4gLkt6RtJzIPuysW1S2M-gmlW2-LTbqiIZK6tX-oJEenO2c3FNljlYflemoNPTDp7u-bdERviRs-MzZ-Nlpr-MzrAmsaa2l6eh02jh1RDfd2wYJL5uvNZ3-peh0XVPbh5mn0wda-8_zz5wSSP0Y8pJj1WorgyD8DX3XB0r4kjrslA_oCOR9RmBF_UHWKAgUhN-dSkrvTL8PO4ey8QTynMAqGf8LkpaELY9WNXQvlYlRlAl0sx2C33_8vHG2P2xNg18JFJRkMSaN2Ul6t9mStKSEl5SdkmXlUwRj-k9IOwwRlvQeXaBN7yK9Bqu-o8q0lnZo0MmgrKFafUHq7YUnf0OXw7zobaXS2MTSCOTKS8JXD5bwNwTyj1IPFcKcwJwSgFr6EP3fRn90Stf1ezSB2pYqU9v9QQZVaaTh2wEJJAQgMoEVbXtTDxmHKNGgNNKV9EGZbraLFq0M0jSD2dXCD4AILGnr5B4pAS5iwewrG_8SxquG11KMm4LMWYO1HivIZR9srFTr4z4y4MuTjHHsYHlvlQnoHoYZK_rE80cv9WA-E-HlJe-8bVomGjaQCE_E8GWaAeFLPpROL4WnNwrP-KXwJ6lXtsENmtPDpoyLuzWtHQ0dhndu5VAG3BofpKnx_xh2thlF5GGn_LNa0zrnkDMWBT7slH8fHOHloz5KBKO3hK3oujf180hVXnM-RvrTqHB2zuMXz-o0Sc5ILnXP6sOB8CUwyCKZ_BrN_AYaIdlvoXk9knHkdzqF_FWdSZEX8Ydd68y-04mATf1bOtenl-s1SssfilyP83--K3I5jv1vNAQXLNKAaxr59zTSrPqFVce9Co8Y7oN04SUOmwhio20ldYm1vqW1quLJTt_a-AIQyLePZ_N4pN3X9oA_cr4KZlWdwD-nCUmdVMWQe9W7qGrrH3a9-UJ42Urt8cecRZHcfLuKK86CzbME8pc5jw-PZEfjwPdsusE5iuMiy1_HmTM2jPyAId4tPyPGGXuJ2NqMm-LZ9mxqAePMpetu1Mrlz1c6Cr7tHBfiOaXHIyDhnPBl8fQumzQL3hS8kBNcJBnnIIoUxGS3YBVjUhQ8z0TTiKyqKpGBgCZjbJ5Xc5yoBTAQCTCe5AkwmHEpWN7ULbRMSKwSIhjupdKzeNXNrOsmyvseF0mSp8AnWlao_dCdAfzv7f3beDen5cQt4vhp1XeeCKaVD_4SIaigh45umJCWV51D75D-s0Nz7jdMR89bkrbWndu5oSHwk97pxS6Eg48baWjkOhV2fTWr7Z7Aerikx5_pwdm_sQ4E1oMMT2B9UnJcwL8BAAD__53Z92M">