[lld] r374332 - Make nullptr check more robust
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 10 05:41:08 PDT 2019
Author: ruiu
Date: Thu Oct 10 05:41:08 2019
New Revision: 374332
URL: http://llvm.org/viewvc/llvm-project?rev=374332&view=rev
Log:
Make nullptr check more robust
The only condition that isecLoc becomes null is
Out::bufferStart == nullptr,
isec->getParent()->offset == 0, and
isec->outSecOff == 0.
We can check the first condition only once.
Modified:
lld/trunk/ELF/Target.cpp
Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=374332&r1=374331&r2=374332&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Thu Oct 10 05:41:08 2019
@@ -91,18 +91,16 @@ TargetInfo *getTarget() {
}
template <class ELFT> static ErrorPlace getErrPlace(const uint8_t *loc) {
+ if (!Out::bufferStart)
+ return {};
+
for (InputSectionBase *d : inputSections) {
auto *isec = cast<InputSection>(d);
if (!isec->getParent())
continue;
uint8_t *isecLoc = Out::bufferStart + isec->getParent()->offset + isec->outSecOff;
- if (isecLoc > loc)
- continue;
- // isecLoc might be nullptr here, with isec->getSize() being non-zero.
- // Adding these two together is not defined in C++.
- if (loc < reinterpret_cast<uint8_t *>(
- reinterpret_cast<std::uintptr_t>(isecLoc) + isec->getSize()))
+ if (isecLoc <= loc && loc < isecLoc + isec->getSize())
return {isec, isec->template getLocation<ELFT>(loc - isecLoc) + ": "};
}
return {};
More information about the llvm-commits
mailing list