[llvm-branch-commits] [llvm] [SimplifyCFG] Avoid using isNonIntegralPointerType() (PR #159890)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Sep 19 19:06:09 PDT 2025
================
@@ -525,28 +525,32 @@ static bool dominatesMergePoint(
static ConstantInt *getConstantInt(Value *V, const DataLayout &DL) {
// Normal constant int.
ConstantInt *CI = dyn_cast<ConstantInt>(V);
- if (CI || !isa<Constant>(V) || !V->getType()->isPointerTy() ||
- DL.isNonIntegralPointerType(V->getType()))
+ if (CI || !isa<Constant>(V) || !V->getType()->isPointerTy())
return CI;
// This is some kind of pointer constant. Turn it into a pointer-sized
// ConstantInt if possible.
- IntegerType *PtrTy = cast<IntegerType>(DL.getIntPtrType(V->getType()));
+ IntegerType *IntPtrTy = cast<IntegerType>(DL.getIntPtrType(V->getType()));
// Null pointer means 0, see SelectionDAGBuilder::getValue(const Value*).
if (isa<ConstantPointerNull>(V))
- return ConstantInt::get(PtrTy, 0);
+ return ConstantInt::get(IntPtrTy, 0);
- // IntToPtr const int.
+ // IntToPtr const int, we can look through this unless the semantics of
+ // inttoptr for this address space aren't a simple bitcast.
+ // TODO: should this be relaxed to hasUnstableRepresentation? The
+ // transformation made here should also be safe for CHERI.
+ if (DL.shouldAvoidIntToPtr(V->getType()))
----------------
arsenm wrote:
I don't love the "shouldAvoidIntToPtr" name but that exists already. The name should express the property, not a behavior to avoid
https://github.com/llvm/llvm-project/pull/159890
More information about the llvm-branch-commits
mailing list