mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-28 07:17:32 +00:00
Add a Constant version of stripPointerCasts.
Thanks to rnk for the suggestion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210205 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -163,6 +163,14 @@ public:
|
|||||||
/// that want to check to see if a global is unused, but don't want to deal
|
/// that want to check to see if a global is unused, but don't want to deal
|
||||||
/// with potentially dead constants hanging off of the globals.
|
/// with potentially dead constants hanging off of the globals.
|
||||||
void removeDeadConstantUsers() const;
|
void removeDeadConstantUsers() const;
|
||||||
|
|
||||||
|
Constant *stripPointerCasts() {
|
||||||
|
return cast<Constant>(Value::stripPointerCasts());
|
||||||
|
}
|
||||||
|
|
||||||
|
const Constant *stripPointerCasts() const {
|
||||||
|
return const_cast<Constant*>(this)->stripPointerCasts();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
@@ -706,7 +706,7 @@ static Constant *CastGEPIndices(ArrayRef<Constant *> Ops,
|
|||||||
static Constant* StripPtrCastKeepAS(Constant* Ptr) {
|
static Constant* StripPtrCastKeepAS(Constant* Ptr) {
|
||||||
assert(Ptr->getType()->isPointerTy() && "Not a pointer type");
|
assert(Ptr->getType()->isPointerTy() && "Not a pointer type");
|
||||||
PointerType *OldPtrTy = cast<PointerType>(Ptr->getType());
|
PointerType *OldPtrTy = cast<PointerType>(Ptr->getType());
|
||||||
Ptr = cast<Constant>(Ptr->stripPointerCasts());
|
Ptr = Ptr->stripPointerCasts();
|
||||||
PointerType *NewPtrTy = cast<PointerType>(Ptr->getType());
|
PointerType *NewPtrTy = cast<PointerType>(Ptr->getType());
|
||||||
|
|
||||||
// Preserve the address space number of the pointer.
|
// Preserve the address space number of the pointer.
|
||||||
|
@@ -687,7 +687,7 @@ void *JITResolver::JITCompilerFn(void *Stub) {
|
|||||||
//
|
//
|
||||||
|
|
||||||
static GlobalObject *getSimpleAliasee(Constant *C) {
|
static GlobalObject *getSimpleAliasee(Constant *C) {
|
||||||
C = cast<Constant>(C->stripPointerCasts());
|
C = C->stripPointerCasts();
|
||||||
return dyn_cast<GlobalObject>(C);
|
return dyn_cast<GlobalObject>(C);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2108,7 +2108,7 @@ Instruction *InstCombiner::visitLandingPadInst(LandingPadInst &LI) {
|
|||||||
if (LI.isCatch(i)) {
|
if (LI.isCatch(i)) {
|
||||||
// A catch clause.
|
// A catch clause.
|
||||||
Constant *CatchClause = LI.getClause(i);
|
Constant *CatchClause = LI.getClause(i);
|
||||||
Constant *TypeInfo = cast<Constant>(CatchClause->stripPointerCasts());
|
Constant *TypeInfo = CatchClause->stripPointerCasts();
|
||||||
|
|
||||||
// If we already saw this clause, there is no point in having a second
|
// If we already saw this clause, there is no point in having a second
|
||||||
// copy of it.
|
// copy of it.
|
||||||
@@ -2181,8 +2181,8 @@ Instruction *InstCombiner::visitLandingPadInst(LandingPadInst &LI) {
|
|||||||
// catch-alls. If so, the filter can be discarded.
|
// catch-alls. If so, the filter can be discarded.
|
||||||
bool SawCatchAll = false;
|
bool SawCatchAll = false;
|
||||||
for (unsigned j = 0; j != NumTypeInfos; ++j) {
|
for (unsigned j = 0; j != NumTypeInfos; ++j) {
|
||||||
Value *Elt = Filter->getOperand(j);
|
Constant *Elt = Filter->getOperand(j);
|
||||||
Constant *TypeInfo = cast<Constant>(Elt->stripPointerCasts());
|
Constant *TypeInfo = Elt->stripPointerCasts();
|
||||||
if (isCatchAll(Personality, TypeInfo)) {
|
if (isCatchAll(Personality, TypeInfo)) {
|
||||||
// This element is a catch-all. Bail out, noting this fact.
|
// This element is a catch-all. Bail out, noting this fact.
|
||||||
SawCatchAll = true;
|
SawCatchAll = true;
|
||||||
|
Reference in New Issue
Block a user