Unless I am mistaken, if there is a declaration after a definition, the parameter variables will end up with the name in the last definition, e.g. in:
```hlsl float foo(float aa);
float foo(float bb) { return bb + 1; }
float foo(float cc);
float4 main() : sv_target { return foo(5); } ``` the parameter will end up with `"cc"` as its name. I think this could be a problem for error logging.