mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
Remove unnecessary casts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6201 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9e094c40df
commit
3b9922f99c
@ -91,7 +91,7 @@ Constant *ConstantFoldCastInstruction(const Constant *V, const Type *DestTy) {
|
||||
|
||||
if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(V))
|
||||
if (CE->getOpcode() == Instruction::Cast) {
|
||||
Constant *Op = (Constant*)cast<Constant>(CE->getOperand(0));
|
||||
Constant *Op = const_cast<Constant*>(CE->getOperand(0));
|
||||
// Try to not produce a cast of a cast, which is almost always redundant.
|
||||
if (!Op->getType()->isFloatingPoint() &&
|
||||
!CE->getType()->isFloatingPoint() &&
|
||||
@ -166,7 +166,7 @@ Constant *ConstantFoldGetElementPtr(const Constant *C,
|
||||
dyn_cast<ArrayType>(cast<PointerType>(C->getType())->getElementType()))
|
||||
if (CAT->getElementType() == SAT->getElementType())
|
||||
return ConstantExpr::getGetElementPtr(
|
||||
(Constant*)cast<Constant>(CE->getOperand(0)), IdxList);
|
||||
(Constant*)CE->getOperand(0), IdxList);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -411,30 +411,31 @@ void ConstantPointerRef::replaceUsesOfWithOnConstant(Value *From, Value *To) {
|
||||
}
|
||||
}
|
||||
|
||||
void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *To) {
|
||||
assert(isa<Constant>(To) && "Cannot make Constant refer to non-constant!");
|
||||
void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV) {
|
||||
assert(isa<Constant>(ToV) && "Cannot make Constant refer to non-constant!");
|
||||
Constant *To = cast<Constant>(ToV);
|
||||
|
||||
Constant *Replacement = 0;
|
||||
if (getOpcode() == Instruction::GetElementPtr) {
|
||||
std::vector<Constant*> Indices;
|
||||
Constant *Pointer = cast<Constant>(getOperand(0));
|
||||
Constant *Pointer = getOperand(0);
|
||||
Indices.reserve(getNumOperands()-1);
|
||||
if (Pointer == From) Pointer = cast<Constant>(To);
|
||||
if (Pointer == From) Pointer = To;
|
||||
|
||||
for (unsigned i = 1, e = getNumOperands(); i != e; ++i) {
|
||||
Constant *Val = cast<Constant>(getOperand(i));
|
||||
if (Val == From) Val = cast<Constant>(To);
|
||||
Constant *Val = getOperand(i);
|
||||
if (Val == From) Val = To;
|
||||
Indices.push_back(Val);
|
||||
}
|
||||
Replacement = ConstantExpr::getGetElementPtr(Pointer, Indices);
|
||||
} else if (getOpcode() == Instruction::Cast) {
|
||||
assert(getOperand(0) == From && "Cast only has one use!");
|
||||
Replacement = ConstantExpr::getCast(cast<Constant>(To), getType());
|
||||
Replacement = ConstantExpr::getCast(To, getType());
|
||||
} else if (getNumOperands() == 2) {
|
||||
Constant *C1 = cast<Constant>(getOperand(0));
|
||||
Constant *C2 = cast<Constant>(getOperand(1));
|
||||
if (C1 == From) C1 = cast<Constant>(To);
|
||||
if (C2 == From) C2 = cast<Constant>(To);
|
||||
Constant *C1 = getOperand(0);
|
||||
Constant *C2 = getOperand(1);
|
||||
if (C1 == From) C1 = To;
|
||||
if (C2 == From) C2 = To;
|
||||
Replacement = ConstantExpr::get(getOpcode(), C1, C2);
|
||||
} else {
|
||||
assert(0 && "Unknown ConstantExpr type!");
|
||||
|
Loading…
x
Reference in New Issue
Block a user