[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