diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 18:44:32 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 18:44:32 +0000 | 
| commit | 5a5ac124e1efaf208671f01c46edb15f29ed2a0b (patch) | |
| tree | a6140557876943cdd800ee997c9317283394b22c /unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp | |
| parent | f03b5bed27d0d2eafd68562ce14f8b5e3f1f0801 (diff) | |
Notes
Diffstat (limited to 'unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp')
| -rw-r--r-- | unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp b/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp index b0d1bb39c7f3..da6e25a3d516 100644 --- a/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp +++ b/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp @@ -392,4 +392,23 @@ TEST_F(MCJITMultipleModuleTest, cross_module_dependency_case3) {    ptr = TheJIT->getFunctionAddress(FB2->getName().str());    checkAccumulate(ptr);  } + +// Test that FindFunctionNamed finds the definition of +// a function in the correct module. We check two functions +// in two different modules, to make sure that for at least +// one of them MCJIT had to ignore the extern declaration. +TEST_F(MCJITMultipleModuleTest, FindFunctionNamed_test) { +  SKIP_UNSUPPORTED_PLATFORM; + +  std::unique_ptr<Module> A, B; +  Function *FA, *FB1, *FB2; +  createCrossModuleRecursiveCase(A, FA, B, FB1, FB2); + +  createJIT(std::move(A)); +  TheJIT->addModule(std::move(B)); + +  EXPECT_EQ(FA, TheJIT->FindFunctionNamed(FA->getName().data())); +  EXPECT_EQ(FB1, TheJIT->FindFunctionNamed(FB1->getName().data())); +} +  } | 
