Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10))

2011-06-14 Thread Richard Guenther
On Mon, 13 Jun 2011, Jason Merrill wrote: > On 06/13/2011 06:51 AM, Richard Guenther wrote: > > But I suppose you want the array-ref be folded to a constant eventually? > > Right. > > I'm not going to keep arguing about VIEW_CONVERT_EXPR, but that brings me back > to my original question: is it

Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10))

2011-06-13 Thread Jason Merrill
On 06/13/2011 06:51 AM, Richard Guenther wrote: But I suppose you want the array-ref be folded to a constant eventually? Right. I'm not going to keep arguing about VIEW_CONVERT_EXPR, but that brings me back to my original question: is it OK to add a permissive mode to the function, or should

Re: Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-13 Thread Richard Guenther
On Mon, Jun 13, 2011 at 12:10 AM, Jason Merrill wrote: > On 06/12/2011 06:59 AM, Richard Guenther wrote: >> >> The please provide a specification on what a VIEW_CONVERT_EXPR does >> to type-based alias analysis. > > If the alias set of the VIEW_CONVERT_EXPR type the same as the set for the > opera

Re: Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-12 Thread Mike Stump
On Jun 12, 2011, at 4:03 AM, Richard Guenther wrote: > Btw, see tree.def which says > > /* Represents viewing something of one type as being of a second type. > This corresponds to an "Unchecked Conversion" in Ada and roughly to > the idiom *(type2 *)&X in C. The only operand is the value to

Re: Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-12 Thread Jason Merrill
On 06/12/2011 06:59 AM, Richard Guenther wrote: The please provide a specification on what a VIEW_CONVERT_EXPR does to type-based alias analysis. If the alias set of the VIEW_CONVERT_EXPR type the same as the set for the operand, ignore it; if it's a subset, handle it like a COMPONENT_REF; ot

Re: Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-12 Thread Richard Guenther
On Sun, Jun 12, 2011 at 12:59 PM, Richard Guenther wrote: > On Sat, Jun 11, 2011 at 10:01 PM, Jason Merrill wrote: >> On 06/10/2011 10:20 AM, Richard Guenther wrote: >>> >>> no, a VIEW_CONVERT_EXPR is generally not an lvalue (fold for example >>> would turn the above to (volatile int) a[1]). >> >

Re: Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-12 Thread Richard Guenther
On Sat, Jun 11, 2011 at 10:01 PM, Jason Merrill wrote: > On 06/10/2011 10:20 AM, Richard Guenther wrote: >> >> no, a VIEW_CONVERT_EXPR is generally not an lvalue (fold for example >> would turn the above to (volatile int) a[1]). > > The gimplifier seems to consider it an lvalue: gimplify_expr uses

Is VIEW_CONVERT_EXPR an lvalue? (was Re: RFA (fold): PATCH for c++/49290 (folding *(T*)(ar+10)))

2011-06-11 Thread Jason Merrill
On 06/10/2011 10:20 AM, Richard Guenther wrote: no, a VIEW_CONVERT_EXPR is generally not an lvalue (fold for example would turn the above to (volatile int) a[1]). The gimplifier seems to consider it an lvalue: gimplify_expr uses gimplify_compound_lval for it, and gimplify_addr_expr handles tak