[cfe-commits] r74299 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/Sema/ext_vector_components.c

Eli Friedman eli.friedman at gmail.com
Sat Jun 27 21:40:26 PDT 2009


On Sat, Jun 27, 2009 at 6:24 PM, Nate Begeman<natebegeman at mac.com> wrote:
>
> On Jun 27, 2009, at 8:07 PM, Eli Friedman wrote:
>
>> On Fri, Jun 26, 2009 at 11:22 AM, Nate Begeman<natebegeman at mac.com> wrote:
>>>
>>> -  return APValue();
>>> +  if (Result.isInt() || Result.isFloat()) {
>>> +    unsigned NumElts =
>>> E->getType()->getAsVectorType()->getNumElements();
>>> +    llvm::SmallVector<APValue, 4> Elts(NumElts, Result);
>>> +    Result = APValue(&Elts[0], Elts.size());
>>> +  }
>>> +  return Result;
>>>  }
>>
>> Is there a missing conversion from the scalar type of the result to
>> the element type of the vector?
>
> Not sure; empirically it seems to work as expected, but I'll write some
> explicit tests for edge cases and try it out.

Try clang-cc -emit-llvm on the following:
typedef float f2 __attribute((ext_vector_type(2)));
f2 a = (f2)5;

-Eli




More information about the cfe-commits mailing list