[cfe-commits] r128381 - in /cfe/trunk: lib/CodeGen/CGExprScalar.cpp lib/Sema/SemaExpr.cpp test/Sema/vector-ops.c

Anton Yartsev anton.yartsev at gmail.com
Mon Mar 28 14:05:42 PDT 2011


>> +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Sun Mar 27 10:36:07 2011
>> @@ -2119,7 +2119,9 @@
>>
>>      // If AltiVec, the comparison results in a numeric type, so we use
>>      // intrinsics comparing vectors and giving 0 or 1 as a result
>> -    if (LHSTy->isVectorType()&&  CGF.getContext().getLangOptions().AltiVec) {
>> +    if (LHSTy->isVectorType()&&
>> +        LHSTy->getAs<VectorType>()->getVectorKind() ==
>> +          VectorType::AltiVecVector) {
> Instead of repeating the logic from Sema here, please just check the result
> type of the expression.  If it's not a vector, we need to use one of these
> intrinsics.
>
>> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Sun Mar 27 10:36:07 2011
>> @@ -7277,14 +7277,16 @@
>>    if (vType.isNull())
>>      return vType;
>>
>> +  QualType lType = lex->getType();
>> +  QualType rType = rex->getType();
>> +
>>    // If AltiVec, the comparison results in a numeric type, i.e.
>>    // bool for C++, int for C
>> -  if (getLangOptions().AltiVec)
>> +  if (lType->getAs<VectorType>()->getVectorKind() == VectorType::AltiVecVector
>> +&&  rType->getAs<VectorType>()->getVectorKind() ==
>> +         VectorType::AltiVecVector)
>>      return Context.getLogicalOperationType();
> Can't you do this by checking whether vType is an AltiVec vector type,
> rather than whether the two operands were both AltiVec vectors?
>
> John.
Thanks, John! Corrected and committed as r128427.

-- 
Anton




More information about the cfe-commits mailing list