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

Nate Begeman natebegeman at mac.com
Sat Jun 27 21:01:25 PDT 2009


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.

Nate



More information about the cfe-commits mailing list