llvm-project/llvm/lib/ExecutionEngine
Lang Hames ca6f58486f [ORC] Fix symbol dependence propagation algorithm in ObjectLinkingLayer.
ObjectLinkingLayer was not correctly propagating dependencies through local
symbols within an object. This could cause symbol lookup to return before a
searched-for symbol is ready if the following conditions are met:
(1) The definition of the symbol being searched for transitively depends on a
    local symbol within the same object, and that local symbol in turn
    transitively depends on an external symbol provided by some other module
    in the JIT.
(2) Concurrent compilation is enabled.
(3) Thread scheduling causes the lookup of the searched-for symbol to return
    before all transitive dependencies of the looked-up symbol are emitted.

This bug was found by inspection and has not been observed in practice.

A jitlink test case has been added to verify that symbol dependencies are
correctly propagated through local symbol definitions.
2020-02-11 12:56:41 -08:00
..
IntelJITEvents [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
Interpreter Make StringRef's std::string conversion operator explicit 2020-02-01 15:43:45 +01:00
JITLink Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
MCJIT Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
OProfileJIT [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
Orc [ORC] Fix symbol dependence propagation algorithm in ObjectLinkingLayer. 2020-02-11 12:56:41 -08:00
OrcError [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
PerfJITEvents Make StringRef's std::string conversion operator explicit 2020-02-01 15:43:45 +01:00
RuntimeDyld Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
ExecutionEngine.cpp Another round of GCC5 fixes. 2020-01-29 02:09:24 +01:00
ExecutionEngineBindings.cpp [MCJIT] Migrate function attribute "no-frame-pointer-elim" to "frame-pointer" 2019-12-24 17:12:21 -08:00
GDBRegistrationListener.cpp Replace llvm::MutexGuard/UniqueLock with their standard equivalents 2019-08-07 10:57:25 +00:00
LLVMBuild.txt Break out OrcError and RPC 2019-10-29 17:31:28 -07:00
SectionMemoryManager.cpp [Support] Renamed member 'Size' to 'AllocatedSize' in MemoryBlock and OwningMemoryBlock. 2019-05-20 20:53:05 +00:00
TargetSelect.cpp [ExecutionEngine] Re-enable FastISel for non-iOS arm targets. 2020-01-11 10:49:59 -08:00