mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-30 16:17:05 +00:00
misc cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80507 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -10784,8 +10784,7 @@ Instruction *InstCombiner::visitPHINode(PHINode &PN) {
|
|||||||
|
|
||||||
Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||||
Value *PtrOp = GEP.getOperand(0);
|
Value *PtrOp = GEP.getOperand(0);
|
||||||
// Is it 'getelementptr %P, i32 0' or 'getelementptr %P'
|
// Eliminate 'getelementptr %P, i32 0' and 'getelementptr %P', they are noops.
|
||||||
// If so, eliminate the noop.
|
|
||||||
if (GEP.getNumOperands() == 1)
|
if (GEP.getNumOperands() == 1)
|
||||||
return ReplaceInstUsesWith(GEP, PtrOp);
|
return ReplaceInstUsesWith(GEP, PtrOp);
|
||||||
|
|
||||||
@@ -10897,14 +10896,14 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
|||||||
if (Value *X = getBitCastOperand(PtrOp)) {
|
if (Value *X = getBitCastOperand(PtrOp)) {
|
||||||
assert(isa<PointerType>(X->getType()) && "Must be cast from pointer");
|
assert(isa<PointerType>(X->getType()) && "Must be cast from pointer");
|
||||||
|
|
||||||
if (HasZeroPointerIndex) {
|
// Transform: GEP (bitcast [10 x i8]* X to [0 x i8]*), i32 0, ...
|
||||||
// transform: GEP (bitcast [10 x i8]* X to [0 x i8]*), i32 0, ...
|
|
||||||
// into : GEP [10 x i8]* X, i32 0, ...
|
// into : GEP [10 x i8]* X, i32 0, ...
|
||||||
//
|
//
|
||||||
// Likewise, transform: GEP (bitcast i8* X to [0 x i8]*), i32 0, ...
|
// Likewise, transform: GEP (bitcast i8* X to [0 x i8]*), i32 0, ...
|
||||||
// into : GEP i8* X, ...
|
// into : GEP i8* X, ...
|
||||||
//
|
//
|
||||||
// This occurs when the program declares an array extern like "int X[];"
|
// This occurs when the program declares an array extern like "int X[];"
|
||||||
|
if (HasZeroPointerIndex) {
|
||||||
const PointerType *CPTy = cast<PointerType>(PtrOp->getType());
|
const PointerType *CPTy = cast<PointerType>(PtrOp->getType());
|
||||||
const PointerType *XTy = cast<PointerType>(X->getType());
|
const PointerType *XTy = cast<PointerType>(X->getType());
|
||||||
if (const ArrayType *CATy =
|
if (const ArrayType *CATy =
|
||||||
@@ -10919,8 +10918,9 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
|||||||
if (cast<GEPOperator>(&GEP)->isInBounds())
|
if (cast<GEPOperator>(&GEP)->isInBounds())
|
||||||
cast<GEPOperator>(NewGEP)->setIsInBounds(true);
|
cast<GEPOperator>(NewGEP)->setIsInBounds(true);
|
||||||
return NewGEP;
|
return NewGEP;
|
||||||
} else if (const ArrayType *XATy =
|
}
|
||||||
dyn_cast<ArrayType>(XTy->getElementType())) {
|
|
||||||
|
if (const ArrayType *XATy = dyn_cast<ArrayType>(XTy->getElementType())){
|
||||||
// GEP (bitcast [10 x i8]* X to [0 x i8]*), i32 0, ... ?
|
// GEP (bitcast [10 x i8]* X to [0 x i8]*), i32 0, ... ?
|
||||||
if (CATy->getElementType() == XATy->getElementType()) {
|
if (CATy->getElementType() == XATy->getElementType()) {
|
||||||
// -> GEP [10 x i8]* X, i32 0, ...
|
// -> GEP [10 x i8]* X, i32 0, ...
|
||||||
@@ -11271,7 +11271,7 @@ Instruction *InstCombiner::visitLoadInst(LoadInst &LI) {
|
|||||||
LI.setAlignment(KnownAlign);
|
LI.setAlignment(KnownAlign);
|
||||||
}
|
}
|
||||||
|
|
||||||
// load (cast X) --> cast (load X) iff safe
|
// load (cast X) --> cast (load X) iff safe.
|
||||||
if (isa<CastInst>(Op))
|
if (isa<CastInst>(Op))
|
||||||
if (Instruction *Res = InstCombineLoadCast(*this, LI, TD))
|
if (Instruction *Res = InstCombineLoadCast(*this, LI, TD))
|
||||||
return Res;
|
return Res;
|
||||||
|
|||||||
Reference in New Issue
Block a user