My interpretation is that `hlsl_warning()` is for what the shader writer should change, while `FIXME()` is for what we should change. In this case, it is us who have to fix our code. I wouldn't use `hlsl_fixme()` either, because that kind of means "We have to fix our code, but since we don't want to give the client invalid code we also pretend there was a compilation error". Here we're not miscompiling, assuming that the fact that loops are unrolled or not is an implementation detail, so to me `FIXME()` really feels the best alternative.
I have two thoughts on that:
- ERR/FIXME/WARN/TRACE are primarily debug tools. For the purpose of reporting something to users they're really a bit of a last resort. In CLI applications like vkd3d-compiler, these will miss location information, and will be out of sync with other potential messages from the application. In GUI applications or vkd3d builds with VKD3D_NO_DEBUG_MESSAGES defined, these may not be visible at all.
- Presumably the user intentionally added the "unroll" attribute, so they may want to know that we're ignoring it. It's one thing to ignore a particular attribute, but quite another to do so silently.