diff options
author | Anna Thomas <anna@azul.com> | 2017-07-05 01:16:29 +0000 |
---|---|---|
committer | Anna Thomas <anna@azul.com> | 2017-07-05 01:16:29 +0000 |
commit | 740f529dba1ff5acc1265bb03bd85014566692e6 (patch) | |
tree | a38ad00a709a68aa07d36e5350d88bc0ed4c61f2 /llvm/lib/IR/Core.cpp | |
parent | a24aa1990084c15f0ad27dbcff7ab1c96369f0f9 (diff) | |
download | bcm5719-llvm-740f529dba1ff5acc1265bb03bd85014566692e6.tar.gz bcm5719-llvm-740f529dba1ff5acc1265bb03bd85014566692e6.zip |
[SafepointIRVerifier] Add verifier pass for finding GC relocation bugs
Original Patch and summary by Philip Reames.
RewriteStatepointsForGC tries to rewrite a function in a manner where
the optimizer can't end up using a pointer value after it might have
been relocated by a safepoint. This pass checks the invariant that
RSForGC is supposed to establish and that (if we constructed semantics
correctly) later passes must preserve.
This has been a really useful diagnostic tool when initially developing
the rewriting scheme and has found numerous bugs.
Differential Revision: https://reviews.llvm.org/D15940
Reviewed by: swaroop.sridhar, mjacob
Subscribers: llvm-commits
llvm-svn: 307112
Diffstat (limited to 'llvm/lib/IR/Core.cpp')
-rw-r--r-- | llvm/lib/IR/Core.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 4ff0261a7f0..192a565de0d 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -50,6 +50,7 @@ void llvm::initializeCore(PassRegistry &Registry) { initializePrintModulePassWrapperPass(Registry); initializePrintFunctionPassWrapperPass(Registry); initializePrintBasicBlockPassPass(Registry); + initializeSafepointIRVerifierPass(Registry); initializeVerifierLegacyPassPass(Registry); } |