[llvm] r292772 - [PM] Add a dedicated test case for the issue fixed in r292770.

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 22 23:53:21 PST 2017


Author: chandlerc
Date: Mon Jan 23 01:53:20 2017
New Revision: 292772

URL: http://llvm.org/viewvc/llvm-project?rev=292772&view=rev
Log:
[PM] Add a dedicated test case for the issue fixed in r292770.

While this is covered by a clang test case, we should have something
locally to LLVM that immediately checks the inliner doesn't leave
analyses to dangling IR bodies.

Added:
    llvm/trunk/test/Transforms/Inline/clear-analyses.ll

Added: llvm/trunk/test/Transforms/Inline/clear-analyses.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/clear-analyses.ll?rev=292772&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/Inline/clear-analyses.ll (added)
+++ llvm/trunk/test/Transforms/Inline/clear-analyses.ll Mon Jan 23 01:53:20 2017
@@ -0,0 +1,33 @@
+; Test that the inliner clears analyses which may hold references to function
+; bodies when it decides to delete them after inlining the last caller.
+; We check this by using correlated-propagation to populate LVI with basic
+; block references that would dangle if we failed to clear the inlined function
+; body.
+;
+; RUN: opt -debug-pass-manager -S < %s 2>&1 \
+; RUN:     -passes='cgscc(inline,function(correlated-propagation))' \
+; RUN:     | FileCheck %s
+;
+; CHECK-LABEL: Starting llvm::Module pass manager run.
+; CHECK: Running pass: InlinerPass on (callee)
+; CHECK: Running pass: CorrelatedValuePropagationPass on callee
+; CHECK: Running analysis: LazyValueAnalysis
+; CHECK: Running pass: InlinerPass on (caller)
+; CHECK: Clearing all analysis results for: callee
+; CHECK: Running pass: CorrelatedValuePropagationPass on caller
+; CHECK: Running analysis: LazyValueAnalysis
+
+define internal i32 @callee(i32 %x) {
+; CHECK-NOT: @callee
+entry:
+  ret i32 %x
+}
+
+define i32 @caller(i32 %x) {
+; CHECK-LABEL: define i32 @caller
+entry:
+  %call = call i32 @callee(i32 %x)
+; CHECK-NOT: call
+  ret i32 %call
+; CHECK: ret i32 %x
+}




More information about the llvm-commits mailing list