[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375492 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
George Rimar
2019-10-22 08:52:45 +00:00
parent d35e5f8dde
commit 5cd00d15af

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