[LLVMdev] [RFC] Scoped no-alias metadata
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