-
Notifications
You must be signed in to change notification settings - Fork 15k
[ORC] Replace ORC's baked-in dependence tracking with WaitingOnGraph. #163027
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
f267a39 to
d9143c3
Compare
The CI for llvm#163027 is reliably reproducing the bug from llvm#158270. This patch temporarily adds debugging output to the PR for the former to try to gain insight into the latter.
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
a6ea715 to
82bd2cd
Compare
The CI for llvm#163027 is reliably reproducing the bug from llvm#158270. This patch temporarily adds debugging output to the PR for the former to try to gain insight into the latter.
ecfd111 to
58b345d
Compare
WaitingOnGraph tracks waiting-on relationships between nodes (intended to
represent symbols in an ORC program) in order to identify nodes that are
*Ready* (i.e. are not waiting on any other nodes) or have *Failed* (are
waiting on some node that cannot be produced).
WaitingOnGraph replaces ORC's baked-in data structures that were tracking the
same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this
information in a separate data structure simplifies the code, allows us to
unit test it, and simplifies performance testing.
The WaitingOnGraph uses several techniques to improve performance relative to
the old data structures, including symbol coalescing ("SuperNodes") and symbol
keys that don't perform unnecessary reference counting
(NonOwningSymbolStringPtr).
This commit includes unit tests for common dependence-tracking issues that have
led to ORC bugs in the past.
58b345d to
3705ff3
Compare
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/187/builds/12743 Here is the relevant piece of the build log for the reference |
Reverts commit c8c86ef while I investigate bot failures, e.g. https://lab.llvm.org/buildbot/#/builders/187/builds/12743.
…llvm#163027) WaitingOnGraph tracks waiting-on relationships between nodes (intended to represent symbols in an ORC program) in order to identify nodes that are *Ready* (i.e. are not waiting on any other nodes) or have *Failed* (are waiting on some node that cannot be produced). WaitingOnGraph replaces ORC's baked-in data structures that were tracking the same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this information in a separate data structure simplifies the code, allows us to unit test it, and simplifies performance testing. The WaitingOnGraph uses several techniques to improve performance relative to the old data structures, including symbol coalescing ("SuperNodes") and symbol keys that don't perform unnecessary reference counting (NonOwningSymbolStringPtr). This commit includes unit tests for common dependence-tracking issues that have led to ORC bugs in the past.
…3027)" Reverts commit c8c86ef while I investigate bot failures, e.g. https://lab.llvm.org/buildbot/#/builders/187/builds/12743.
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/27/builds/17800 Here is the relevant piece of the build log for the reference |
…llvm#163027) WaitingOnGraph tracks waiting-on relationships between nodes (intended to represent symbols in an ORC program) in order to identify nodes that are *Ready* (i.e. are not waiting on any other nodes) or have *Failed* (are waiting on some node that cannot be produced). WaitingOnGraph replaces ORC's baked-in data structures that were tracking the same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this information in a separate data structure simplifies the code, allows us to unit test it, and simplifies performance testing. The WaitingOnGraph uses several techniques to improve performance relative to the old data structures, including symbol coalescing ("SuperNodes") and symbol keys that don't perform unnecessary reference counting (NonOwningSymbolStringPtr). This commit includes unit tests for common dependence-tracking issues that have led to ORC bugs in the past.
…3027)" Reverts commit c8c86ef while I investigate bot failures, e.g. https://lab.llvm.org/buildbot/#/builders/187/builds/12743.
…ith … (llvm#164340) …fixes. This reapplies c8c86ef, which was reverted in 13ca872 due to bot failures. Those failures were compilation errors exposed when LLVM is built with LLVM_ENABLE_EXPENSIVE_CHECKS=On. They have been fixed in this commit.
…llvm#163027) WaitingOnGraph tracks waiting-on relationships between nodes (intended to represent symbols in an ORC program) in order to identify nodes that are *Ready* (i.e. are not waiting on any other nodes) or have *Failed* (are waiting on some node that cannot be produced). WaitingOnGraph replaces ORC's baked-in data structures that were tracking the same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this information in a separate data structure simplifies the code, allows us to unit test it, and simplifies performance testing. The WaitingOnGraph uses several techniques to improve performance relative to the old data structures, including symbol coalescing ("SuperNodes") and symbol keys that don't perform unnecessary reference counting (NonOwningSymbolStringPtr). This commit includes unit tests for common dependence-tracking issues that have led to ORC bugs in the past.
…3027)" Reverts commit c8c86ef while I investigate bot failures, e.g. https://lab.llvm.org/buildbot/#/builders/187/builds/12743.
…ith … (llvm#164340) …fixes. This reapplies c8c86ef, which was reverted in 13ca872 due to bot failures. Those failures were compilation errors exposed when LLVM is built with LLVM_ENABLE_EXPENSIVE_CHECKS=On. They have been fixed in this commit.
WaitingOnGraph tracks waiting-on relationships between nodes (intended to represent symbols in an ORC program) in order to identify nodes that are Ready (i.e. are not waiting on any other nodes) or have Failed (are waiting on some node that cannot be produced).
WaitingOnGraph replaces ORC's baked-in data structures that were tracking the same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this information in a separate data structure simplifies the code, allows us to unit test it, and simplifies performance testing.
The WaitingOnGraph uses several techniques to improve performance relative to the old data structures, including symbol coalescing ("SuperNodes") and symbol keys that don't perform unnecessary reference counting (NonOwningSymbolStringPtr).
This commit includes unit tests for common dependence-tracking issues that have led to ORC bugs in the past.