[llvm] [IR] Remove check for bitcast of called function in CallBase::has/getFnAttrOnCalledFunction (PR #91392)
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Tue May 7 13:09:07 PDT 2024
https://github.com/aeubanks created https://github.com/llvm/llvm-project/pull/91392
With opaque pointers, we shouldn't have bitcasts between function pointer types.
>From 1d7859622ac7157f318abbd1477886ae13514960 Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Tue, 7 May 2024 20:07:31 +0000
Subject: [PATCH] [IR] Remove check for bitcast of called function in
CallBase::has/getFnAttrOnCalledFunction
With opaque pointers, we shouldn't have bitcasts between function pointer types.
---
llvm/lib/IR/Instructions.cpp | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp
index 7ad1ad4cddb70..295f9ec3a51af 100644
--- a/llvm/lib/IR/Instructions.cpp
+++ b/llvm/lib/IR/Instructions.cpp
@@ -454,24 +454,14 @@ bool CallBase::paramHasAttr(unsigned ArgNo, Attribute::AttrKind Kind) const {
}
bool CallBase::hasFnAttrOnCalledFunction(Attribute::AttrKind Kind) const {
- Value *V = getCalledOperand();
- if (auto *CE = dyn_cast<ConstantExpr>(V))
- if (CE->getOpcode() == BitCast)
- V = CE->getOperand(0);
-
- if (auto *F = dyn_cast<Function>(V))
+ if (auto *F = dyn_cast<Function>(getCalledOperand()))
return F->getAttributes().hasFnAttr(Kind);
return false;
}
bool CallBase::hasFnAttrOnCalledFunction(StringRef Kind) const {
- Value *V = getCalledOperand();
- if (auto *CE = dyn_cast<ConstantExpr>(V))
- if (CE->getOpcode() == BitCast)
- V = CE->getOperand(0);
-
- if (auto *F = dyn_cast<Function>(V))
+ if (auto *F = dyn_cast<Function>(getCalledOperand()))
return F->getAttributes().hasFnAttr(Kind);
return false;
@@ -485,12 +475,7 @@ Attribute CallBase::getFnAttrOnCalledFunction(AK Kind) const {
assert(Kind != Attribute::Memory && "Use getMemoryEffects() instead");
}
- Value *V = getCalledOperand();
- if (auto *CE = dyn_cast<ConstantExpr>(V))
- if (CE->getOpcode() == BitCast)
- V = CE->getOperand(0);
-
- if (auto *F = dyn_cast<Function>(V))
+ if (auto *F = dyn_cast<Function>(getCalledOperand()))
return F->getAttributes().getFnAttr(Kind);
return Attribute();
More information about the llvm-commits
mailing list