The motivation for this is twofold. Firstly, this makes code a little nicer to read, by virtue of removing a ubiquitous &(...)->node. Secondly, and more importantly, this allows for the possibility of constructors returning a different instruction type than intended. The ultimate goal here is to return a preallocated "error" instruction when allocation fails, instead of returning NULL and propagating out-of-memory handling to the caller. -- v3: vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_if(). vkd3d-shader/hlsl: Pass hlsl_block pointers to hlsl_new_if(). vkd3d-shader/hlsl: Initialize the block in clone_block(). vkd3d-shader/hlsl: Introduce a hlsl_block_cleanup() helper. https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/153