[LLVMdev] [RFC] Scoped no-alias metadata

Krzysztof Parzyszek kparzysz at codeaurora.org
Mon Dec 3 11:30:31 PST 2012

On 12/2/2012 2:48 PM, Hal Finkel wrote:
> [...] As a result, we'll need to assign a unique identifier to each lifetime region (roughly a block in C99, although this may be only a partial block if a restrict pointer is declared in the middle of the block).

Whether restricted pointer is declared in the middle of a block or not, 
does not matter from the standard's perspective.  Although I don't think 
it changes much in your proposal (other than possibly eliminating some 
difficult cases that could otherwise appear).


"Let D be a declaration of an ordinary identifier that provides a means 
of designating an object P as a restrict-qualified pointer to type T.

If D appears inside a block and does not have storage class extern, let 
B denote the block. If D appears in the list of parameter declarations 
of a function definition, let B denote the associated block. Otherwise, 
let B denote the block of main (or the block of whatever function is 
called at program startup in a freestanding environment)."

The above does not specify where in the block B, the declaration D 
appears.  At the same time, the section below applies to the entire block B:

"During each execution of B, let L be any lvalue that has &L based on P. 
If L is used to access the value of the object X that it designates, and 
X is also modified (by any means), then the following requirements 
apply: T shall not be const-qualified. Every other lvalue used to access 
the value of X shall also have its address based on P."


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list