[cfe-commits] r94826 - in /cfe/trunk: lib/AST/Expr.cpp lib/Sema/SemaInit.cpp lib/Sema/SemaInit.h test/CodeGenCXX/reference-init.cpp

Eli Friedman eli.friedman at gmail.com
Fri Jan 29 13:36:53 PST 2010


On Fri, Jan 29, 2010 at 1:12 PM, Chris Lattner <clattner at apple.com> 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]; }

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

-Eli




More information about the cfe-commits mailing list