Index: include/llvm/ExecutionEngine/Orc/Legacy.h =================================================================== --- include/llvm/ExecutionEngine/Orc/Legacy.h +++ include/llvm/ExecutionEngine/Orc/Legacy.h @@ -125,6 +125,11 @@ Result.insert(S); } else if (auto Err = Sym.takeError()) return std::move(Err); + else { + // If there is no existing definition then the caller is responsible for + // it. + Result.insert(S); + } } return Result; Index: unittests/ExecutionEngine/Orc/LegacyAPIInteropTest.cpp =================================================================== --- unittests/ExecutionEngine/Orc/LegacyAPIInteropTest.cpp +++ unittests/ExecutionEngine/Orc/LegacyAPIInteropTest.cpp @@ -94,7 +94,7 @@ getResponsibilitySetWithLegacyFn(SymbolNameSet({Bar, Baz}), LegacyLookup); EXPECT_TRUE(!!RS) << "Expected getResponsibilitySetWithLegacyFn to succeed"; - EXPECT_EQ(RS->size(), 1U) << "Wrong number of symbols returned"; + EXPECT_EQ(RS->size(), 2U) << "Wrong number of symbols returned"; EXPECT_EQ(RS->count(Bar), 1U) << "Incorrect responsibility set returned"; EXPECT_FALSE(BarMaterialized) << "lookupFlags should not have materialized bar";