Second commit is to be removed.
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
v10: windows.media.speech: Implement Vosk create and release functions in the unixlib.
windows.media.speech/tests: Allow the SpeechRecognizer creation to fail in Wine.
windows.media.speech/tests: Get rid of duplicated hresult.
windows.media.speech: Add unixlib stub.
windows.media.speech: Add Vosk checks to autoconf.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2091
Currently, we can't use add_load_index() or add_load_component() on the loads to the `"retval"` variables that come from `add_call()` because these functions assume that the loaded value (`var_instr`) won't change between its location and the location and the new load to be created.
We can't get rid of this assumptions either, because, at least
`add_load_index()` may be used in the lhs of an assignment, and in that case we
can't store to the "deref" synthetic:
```
x[0] = 20;
```
Here I implemented the alternative solution of copying `"retval"` into a synthetic variable after each function call, but we may want to discuss this approach.
The second problem this that is covered in 3/3 is fixing the number of components of the swizzle instructions generated by copy-prop, without it, the following assertion in `hlsl_sm4.c` fails for me
```c
/* Narrowing casts were already lowered. */
assert(src_type->dimx == dst_type->dimx);
```
for some tests, in one of my branches, because of narrowing casts may end up appearing if the node is replaced with a node with more components. This error happens under quite complex conditions (involving casts and matrices) that I still try to narrow down, but I think that the fix is logical enough, without it, the asserts introduced in the patch fail in many tests.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/93