1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00

[ORC] Add unit test for HasMaterializationSideEffectsOnly failure behavior.

This commit is contained in:
Lang Hames 2020-09-01 12:10:23 -07:00
parent f252e214b7
commit 4dfbee4abb

View File

@ -110,7 +110,7 @@ TEST_F(CoreAPIsStandardTest, ResolveUnrequestedSymbol) {
EXPECT_TRUE(Result.count(Foo)) << "Expected result for \"Foo\"";
}
TEST_F(CoreAPIsStandardTest, MaterializationSideEffctsOnlyTest) {
TEST_F(CoreAPIsStandardTest, MaterializationSideEffctsOnlyBasic) {
// Test that basic materialization-side-effects-only symbols work as expected:
// that they can be emitted without being resolved, that queries for them
// don't return until they're emitted, and that they don't appear in query
@ -147,6 +147,24 @@ TEST_F(CoreAPIsStandardTest, MaterializationSideEffctsOnlyTest) {
EXPECT_TRUE(Result->empty()) << "Lookup result contained unexpected value";
}
TEST_F(CoreAPIsStandardTest, MaterializationSideEffectsOnlyFailuresPersist) {
// Test that when a MaterializationSideEffectsOnly symbol is failed it
// remains in the failure state rather than vanishing.
cantFail(JD.define(std::make_unique<SimpleMaterializationUnit>(
SymbolFlagsMap(
{{Foo, JITSymbolFlags::Exported |
JITSymbolFlags::MaterializationSideEffectsOnly}}),
[&](MaterializationResponsibility R) { R.failMaterialization(); })));
EXPECT_THAT_EXPECTED(
ES.lookup(makeJITDylibSearchOrder(&JD), SymbolLookupSet({Foo})),
Failed());
EXPECT_THAT_EXPECTED(
ES.lookup(makeJITDylibSearchOrder(&JD), SymbolLookupSet({Foo})),
Failed());
}
TEST_F(CoreAPIsStandardTest, RemoveSymbolsTest) {
// Test that:
// (1) Missing symbols generate a SymbolsNotFound error.