[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:58:15 PST 2010
On Jan 29, 2010, at 2:53 PM, Eli Friedman wrote:
> On Fri, Jan 29, 2010 at 2:05 PM, Douglas Gregor <dgregor at apple.com> wrote:
>>
>> 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
>
> Umm, from Expr::isLvalueInternal:
>
> case ObjCPropertyRefExprClass: // FIXME: check if read-only property.
> return LV_Valid;
Oh, weird. I was looking at the other places where we check for ObjCPropertyRefExpr.... looks like I'll need to dig into this one further.
- Doug
More information about the cfe-commits
mailing list