[Debugify] Preserve analyses in -check-debugify

The -check-debugify pass should preserve all analyses. Otherwise, it may
invalidate an optional analysis and inadvertently alter codegen.

The test case is reduced from deopt-bundle.ll. The result of `opt -O1`
on this file would differ when -debugify-each was toggled. That happened
because CheckDebugify failed to preserve GlobalsAA.

Thanks to Davide Italiano for his help chasing this down!

llvm-svn: 333959
This commit is contained in:
Vedant Kumar 2018-06-04 21:43:28 +00:00
parent 7cdb14506b
commit 3fff3d2b73
2 changed files with 16 additions and 0 deletions

View File

@ -0,0 +1,12 @@
; RUN: opt < %s -globals-aa -functionattrs | \
; RUN: opt -S -strip -strip-dead-prototypes -strip-module-flags > %t.no_dbg
; RUN: opt < %s -debugify-each -globals-aa -functionattrs | \
; RUN: opt -S -strip -strip-dead-prototypes -strip-module-flags > %t.with_dbg
; RUN: diff %t.no_dbg %t.with_dbg
define i32 @f_1(i32 %x) {
%tmp = call i32 @f_1(i32 0) [ "deopt"() ]
ret i32 0
}

View File

@ -275,6 +275,10 @@ struct CheckDebugifyModulePass : public ModulePass {
CheckDebugifyModulePass(bool Strip = false, StringRef NameOfWrappedPass = "")
: ModulePass(ID), Strip(Strip), NameOfWrappedPass(NameOfWrappedPass) {}
void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.setPreservesAll();
}
static char ID; // Pass identification.
private: