[llvm] [AMDGPU] Preserve resource requirements through call-graph cycles (PR #221625)
Shilei Tian via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 15 05:47:13 PDT 2026
================
@@ -247,33 +252,170 @@ bool AMDGPUMCExpr::evaluateInstPrefSize(MCValue &Res,
bool AMDGPUMCExpr::isSymbolUsedInExpression(const MCSymbol *Sym,
const MCExpr *E) {
- switch (E->getKind()) {
- case MCExpr::Constant:
- return false;
- case MCExpr::Unary:
- return isSymbolUsedInExpression(
- Sym, static_cast<const MCUnaryExpr *>(E)->getSubExpr());
- case MCExpr::Binary: {
- const MCBinaryExpr *BE = static_cast<const MCBinaryExpr *>(E);
- return isSymbolUsedInExpression(Sym, BE->getLHS()) ||
- isSymbolUsedInExpression(Sym, BE->getRHS());
- }
- case MCExpr::SymbolRef: {
- const MCSymbol &S = static_cast<const MCSymbolRefExpr *>(E)->getSymbol();
- if (S.isVariable())
- return isSymbolUsedInExpression(Sym, S.getVariableValue());
- return &S == Sym;
- }
- case MCExpr::Specifier:
- case MCExpr::Target: {
- auto *TE = static_cast<const AMDGPUMCExpr *>(E);
- for (const MCExpr *E : TE->getArgs())
- if (isSymbolUsedInExpression(Sym, E))
+ SmallVector<const MCExpr *, 16> WorkList{E};
----------------
shiltian wrote:
this is like a function refinement. might just do a NFC.
https://github.com/llvm/llvm-project/pull/221625
More information about the llvm-commits
mailing list