On Jan 29, 2010, at 1:36 PM, Eli Friedman wrote:

> On Fri, Jan 29, 2010 at 1:12 PM, Chris Lattner <[email protected]> wrote:
>> 
>> On Jan 29, 2010, at 11:14 AM, Douglas Gregor wrote:
>> 
>>> Author: dgregor
>>> Date: Fri Jan 29 13:14:02 2010
>>> New Revision: 94826
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=94826&view=rev
>>> Log:
>>> Fix reference binding of const lvalue references to bit-fields, which
>>> requires a temporary. Previously, we were building an initialization
>>> sequence that bound to the bit-field as if it were a real lvalue. Note
>>> that we previously (and still) diagnose binding of non-const
>>> references to bit-fields, as we should.
>> 
>> Does this also work for opencl vector elements?  Something like this:
>> 
>> 
>> float &x = myfloat4.x;
>> 
>> should be invalid, but:
>> float x = myfloat4.x;
>> 
>> is ok.  Very similar to bitfields,
> 
> We don't check for it at all... we silently build a temporary for the 
> following:
> typedef int V __attribute((ext_vector_type(4)));
> V x;
> void a() { int& y = x[0]; }

BUG! I'll take a look when I can. Thanks Chris, Eli.

> I don't know enough ObjC to make a testcase, but I think the same
> issue affects ObjC properties.


It shouldn't, because an ObjCPropertyRefExpr is not an lvalue. However, I'll 
still test it :)

        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to