Ticket #1174 (closed RFC: wontfix)
Disallow .local declarations in long-style call statement
|Reported by:||kjs||Owned by:|
the current implementation for PIR allows one to declare .locals in a .begin_call/.end_call sequence, after the .call directive, like so:
.begin_call .arg 1 .arg 2 .call $P0 .local int a, b, c .result a .result b .result c .end_call
(this is short for (a, b, c) = $P0(1, 2) )
IMHO, the whole sequence of directives from .begin_call to .end_call should be considered 1 statement; having .local declarations intermixed with .result directives is a bit strange, because the .local directive itself is not part of the sequence of directives to make the call.
Furthermore, the locals stay in scope after the .end_call directive.
I propose to disallow this language 'feature', and force the programmer to write the above example as follows:
.local int a, b, c .begin_call .arg 1 .arg 2 .call $P0 .result a .result b .result c .end_call