Shouldn't we free the original `dxbc_desc.byte_code` before replacing it?
No, `dxbc_desc` doesn't own its buffer. It's just a pointer into the original source. For the same reason `byte_code` has to be owned by `vkd3d_shader_sm6_parser_create()` and therefore manually freed.
Also, it seems that the assignment should only happen inside the previous "else".
More importantly, I'd say that failure to allocate should be a hard error.