With this snippet of code and +standard settings: 320> while ( a != NULL ) { 321> foo *temp = a->p ; 322> a->p = NULL ; 323> f( a ) ; 324> a = temp ; 325> }
I get this error, which might be considered wrong: .\blah.c(325): Clauses exit with a referencing implicitly only storage in while body, local storage if loop is not taken. The state of a variable is different depending on which branch is taken. This means no annotation can sensibly be applied to the storage. (-branchstate will suppress message) .\blah.c(325): Storage a becomes implicitly only The thing is, it might be implicitly only after the loop, but it's also, by definition, free (NULL) :-> Jon