From 1f6eb3ca5cb1551b537141fc84827d704917a97b Mon Sep 17 00:00:00 2001 From: Chen Zheng Date: Wed, 15 Nov 2023 10:41:59 +0800 Subject: [XCOFF]refactor isFunction, NFC (#72232) suggested in review of https://github.com/llvm/llvm-project/pull/69553 This is actually not an NFC as isFunction() does not return false for some "invalid" object, instead it returns the errors to its caller. But since there is no such invalid object in the LIT tests, so no case changes. --- llvm/lib/Object/XCOFFObjectFile.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'llvm/lib/Object/XCOFFObjectFile.cpp') diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp index 4c192aa..07e1054f 100644 --- a/llvm/lib/Object/XCOFFObjectFile.cpp +++ b/llvm/lib/Object/XCOFFObjectFile.cpp @@ -299,7 +299,11 @@ Expected XCOFFObjectFile::getSymbolType(DataRefImpl Symb) const { XCOFFSymbolRef XCOFFSym = toSymbolRef(Symb); - if (XCOFFSym.isFunction()) + Expected IsFunction = XCOFFSym.isFunction(); + if (!IsFunction) + return IsFunction.takeError(); + + if (*IsFunction) return SymbolRef::ST_Function; if (XCOFF::C_FILE == XCOFFSym.getStorageClass()) @@ -1225,7 +1229,7 @@ std::optional XCOFFObjectFile::tryGetCPUName() const { return StringRef("future"); } -bool XCOFFSymbolRef::isFunction() const { +Expected XCOFFSymbolRef::isFunction() const { if (!isCsectSymbol()) return false; @@ -1233,12 +1237,8 @@ bool XCOFFSymbolRef::isFunction() const { return true; Expected 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 (!ExpCsectAuxEnt) + return ExpCsectAuxEnt.takeError(); const XCOFFCsectAuxRef CsectAuxRef = ExpCsectAuxEnt.get(); @@ -1253,12 +1253,8 @@ bool XCOFFSymbolRef::isFunction() const { const int16_t SectNum = getSectionNumber(); Expected 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 (!SI) + return SI.takeError(); return (getObject()->getSectionFlags(SI.get()) & XCOFF::STYP_TEXT); } -- cgit v1.1