[cfe-commits] r74404 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/Sema/ext_vector_casts.c

Eli Friedman eli.friedman at gmail.com
Sat Jun 27 21:34:29 PDT 2009


On Sat, Jun 27, 2009 at 9:01 PM, Nate Begeman<natebegeman at mac.com> wrote:
>
> On Jun 27, 2009, at 10:13 PM, Eli Friedman wrote:
>
>> On Sat, Jun 27, 2009 at 7:36 PM, Nate Begeman<natebegeman at mac.com> wrote:
>>>
>>> +  // Handle the case of an ext vector and scalar
>>> +  if (const ExtVectorType *LV = lhsType->getAsExtVectorType()) {
>>> +    QualType EltTy = LV->getElementType();
>>> +    if (EltTy->isIntegralType() && rhsType->isIntegralType()) {
>>> +      if (Context.getIntegerTypeOrder(EltTy, rhsType) >= 0) {
>>> +        ImpCastExprToType(rex, EltTy);
>>> +        rex = new (Context) CStyleCastExpr(lhsType, rex, lhsType,
>>> +
>>> rex->getSourceRange().getBegin(),
>>> +
>>> rex->getSourceRange().getEnd());
>>> +        if (swapped) std::swap(rex, lex);
>>> +        return lhsType;
>>> +      }
>>> +    }
>>
>> Creating a CStyleCastExpr here leads to a misleading AST; is there
>> some reason why you can't just use ImpCastExprToType(rex, lhsType)"?
>
> This avoided significant modifications to CodeGen, and accomplished the
> desired effect.

What changes are you talking about?  I just tried it in my tree, and
it appears to work fine without any additional changes.

-Eli




More information about the cfe-commits mailing list