[cfe-commits] r94826 - in /cfe/trunk: lib/AST/Expr.cpp lib/Sema/SemaInit.cpp lib/Sema/SemaInit.h test/CodeGenCXX/reference-init.cpp
Douglas Gregor
dgregor at apple.com
Fri Jan 29 14:05:42 PST 2010
On Jan 29, 2010, at 1:36 PM, Eli Friedman wrote:
> 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]; }
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
More information about the cfe-commits
mailing list