[llvm-commits] CAST patch: #3: lib/Transforms (except instcombine)
Chris Lattner
clattner at apple.com
Tue Nov 21 07:56:53 PST 2006
On Nov 21, 2006, at 12:01 AM, Reid Spencer wrote:
> FYI ..
>
> On Mon, 2006-11-20 at 14:48 -0800, Chris Lattner wrote:
>
>> --- lib/Transforms/Scalar/ScalarReplAggregates.cpp 8 Nov 2006
>> 06:47:33
>> -0000 1.49
>> +++ lib/Transforms/Scalar/ScalarReplAggregates.cpp 18 Nov 2006
>> 19:22:21 -0000
>> @@ -649,13 +649,13 @@ void SROA::ConvertUsesToScalar(Value *Pt
>> "tmp", SI);
>> } else {
>> // If SV is signed, convert it to unsigned, so that the
>> next cast zero
>> // extends the value.
>> if (SV->getType()->isSigned())
>> - SV = new CastInst(SV,
>> SV->getType()->getUnsignedVersion(),
>> + SV = CastInst::getCast(SV,
>> SV->getType()->getUnsignedVersion(),
>> SV->getName(), SI);
>> - SV = new CastInst(SV, Old->getType(), SV->getName(), SI);
>> + SV = CastInst::getCast(SV, Old->getType(), SV->getName(),
>> SI);
>> if (Offset && Offset < TD.getTypeSize(SV->getType())*8)
>> SV = new ShiftInst(Instruction::Shl, SV,
>> ConstantInt::get(Type::UByteTy,
>> Offset),
>> SV->getName()+".adj", SI);
>> // Mask out the bits we are about to insert from the old
>> value.
>>
>>
>> These two casts should just be:
>>
>>
>> // Always zero extend the value.
>> if (different size)
>> SV = new ZExtInst(SV, Old->getType(), SV->getName(),
>> SI);
>> else
>> SV = new BitCast(..)
>> if (Offset && Offset < TD.getTypeSize(SV->getType())*8)
>> SV = new ShiftInst(Instruction::Shl, SV,
>> ConstantInt::get(Type::UByteTy,
>> Offset),
>> SV->getName()+".adj", SI);
>> // Mask out the bits we are about to insert from the old
>> value.
>
> I tried this. It causes ZExt failures. I undid the change. The
> might be
> some cases where sizeof(SV->getType()) == sizeof(Old->getType()).
In that case, won't the bitcast work?
-Chris
More information about the llvm-commits
mailing list