[llvm] [XCOFF]refactor isFunction, NFC (PR #72232)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 14 01:03:24 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-binary-utilities
Author: Chen Zheng (chenzheng1030)
<details>
<summary>Changes</summary>
suggested in review of https://github.com/llvm/llvm-project/pull/69553
---
Full diff: https://github.com/llvm/llvm-project/pull/72232.diff
2 Files Affected:
- (modified) llvm/include/llvm/Object/XCOFFObjectFile.h (+1-1)
- (modified) llvm/lib/Object/XCOFFObjectFile.cpp (+10-14)
``````````diff
diff --git a/llvm/include/llvm/Object/XCOFFObjectFile.h b/llvm/include/llvm/Object/XCOFFObjectFile.h
index 63064abb4d3c322..e3b91961d636c52 100644
--- a/llvm/include/llvm/Object/XCOFFObjectFile.h
+++ b/llvm/include/llvm/Object/XCOFFObjectFile.h
@@ -838,7 +838,7 @@ class XCOFFSymbolRef : public SymbolRef {
}
Expected<StringRef> getName() const;
- bool isFunction() const;
+ Expected<bool> isFunction() const;
bool isCsectSymbol() const;
Expected<XCOFFCsectAuxRef> getXCOFFCsectAuxRef() const;
diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp
index 4c192aa37a7ecc7..9b2bc2cffc4a2fb 100644
--- a/llvm/lib/Object/XCOFFObjectFile.cpp
+++ b/llvm/lib/Object/XCOFFObjectFile.cpp
@@ -299,7 +299,11 @@ Expected<SymbolRef::Type>
XCOFFObjectFile::getSymbolType(DataRefImpl Symb) const {
XCOFFSymbolRef XCOFFSym = toSymbolRef(Symb);
- if (XCOFFSym.isFunction())
+ Expected<bool> IsFunction = XCOFFSym.isFunction();
+ if (Error E = IsFunction.takeError())
+ return std::move(E);
+
+ if (*IsFunction)
return SymbolRef::ST_Function;
if (XCOFF::C_FILE == XCOFFSym.getStorageClass())
@@ -1225,7 +1229,7 @@ std::optional<StringRef> XCOFFObjectFile::tryGetCPUName() const {
return StringRef("future");
}
-bool XCOFFSymbolRef::isFunction() const {
+Expected<bool> XCOFFSymbolRef::isFunction() const {
if (!isCsectSymbol())
return false;
@@ -1233,12 +1237,8 @@ bool XCOFFSymbolRef::isFunction() const {
return true;
Expected<XCOFFCsectAuxRef> ExpCsectAuxEnt = getXCOFFCsectAuxRef();
- if (!ExpCsectAuxEnt) {
- // If we could not get the CSECT auxiliary entry, then treat this symbol as
- // if it isn't a function. Consume the error and return `false` to move on.
- consumeError(ExpCsectAuxEnt.takeError());
- return false;
- }
+ if (Error E = ExpCsectAuxEnt.takeError())
+ return std::move(E);
const XCOFFCsectAuxRef CsectAuxRef = ExpCsectAuxEnt.get();
@@ -1253,12 +1253,8 @@ bool XCOFFSymbolRef::isFunction() const {
const int16_t SectNum = getSectionNumber();
Expected<DataRefImpl> SI = getObject()->getSectionByNum(SectNum);
- if (!SI) {
- // If we could not get the section, then this symbol should not be
- // a function. So consume the error and return `false` to move on.
- consumeError(SI.takeError());
- return false;
- }
+ if (Error E = SI.takeError())
+ return std::move(E);
return (getObject()->getSectionFlags(SI.get()) & XCOFF::STYP_TEXT);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/72232
More information about the llvm-commits
mailing list