On 04/03/2012 02:08 PM, Don Clugston wrote:
On 03/04/12 13:58, Timon Gehr wrote:
On 04/03/2012 01:55 PM, Don Clugston wrote:
On 03/04/12 13:35, Timon Gehr wrote:
On 04/03/2012 01:08 PM, Don Clugston wrote:

Y b() { ... }
Y y = b();
X x = ...

Prove that y doesn't depend on x.

Since only function declarations are immune to ordering rules, b cannot
forward reference x.

But there could be another function a() which is below x, and which b()
calls.

This scenario can be forbidden conservatively.

How?

Don't allow forward referencing function a() if there is an intervening order-dependent declaration.

(Alternatively, just analyse which symbols are referenced where and don't allow calling a local function that can transitively reach some symbols that have not yet been declared. I think this might be too complicated to be justifiable.)

Reply via email to