[LLVMDebugInfoPDB] - Use cantFail() instead of assert().

Currently injected-sources-native.test fails with "Expected<T>
value was in success state.
(Note: Expected<T> values in success mode must still be checked
prior to being destroyed)"
when llvm is compiled with LLVM_ENABLE_ABI_BREAKING_CHECKS in Release.

The problem is that getStringForID returns Expected<StringRef>
and Expected value must always be checked, even if it is in success state.
Checking with assert only helps in Debug and is wrong.

Differential revision: https://reviews.llvm.org/D69251

llvm-svn: 375492
This commit is contained in:
George Rimar 2019-10-22 08:52:45 +00:00
parent bd7255cbc4
commit 5f98407da5

View File

@ -46,30 +46,31 @@ public:
uint64_t getCodeByteSize() const override { return Entry.FileSize; }
std::string getFileName() const override {
auto Name = Strings.getStringForID(Entry.FileNI);
assert(Name && "InjectedSourceStream should have rejected this");
return *Name;
StringRef Ret = cantFail(Strings.getStringForID(Entry.FileNI),
"InjectedSourceStream should have rejected this");
return Ret;
}
std::string getObjectFileName() const override {
auto ObjName = Strings.getStringForID(Entry.ObjNI);
assert(ObjName && "InjectedSourceStream should have rejected this");
return *ObjName;
StringRef Ret = cantFail(Strings.getStringForID(Entry.ObjNI),
"InjectedSourceStream should have rejected this");
return Ret;
}
std::string getVirtualFileName() const override {
auto VName = Strings.getStringForID(Entry.VFileNI);
assert(VName && "InjectedSourceStream should have rejected this");
return *VName;
StringRef Ret = cantFail(Strings.getStringForID(Entry.VFileNI),
"InjectedSourceStream should have rejected this");
return Ret;
}
uint32_t getCompression() const override { return Entry.Compression; }
std::string getCode() const override {
// Get name of stream storing the data.
auto VName = Strings.getStringForID(Entry.VFileNI);
assert(VName && "InjectedSourceStream should have rejected this");
std::string StreamName = ("/src/files/" + *VName).str();
StringRef VName =
cantFail(Strings.getStringForID(Entry.VFileNI),
"InjectedSourceStream should have rejected this");
std::string StreamName = ("/src/files/" + VName).str();
// Find stream with that name and read its data.
// FIXME: Consider validating (or even loading) all this in