| ; RUN: opt -passes='function(require<no-op-function>),cgscc(function-attrs)' -disable-output < %s -debug-pass-manager 2>&1 | FileCheck %s | 
 |  | 
 | ; CHECK: Running pass: PostOrderFunctionAttrsPass on (f) | 
 | ; CHECK: Invalidating analysis: NoOpFunctionAnalysis on f | 
 | ; CHECK-NOT: Invalidating analysis: NoOpFunctionAnalysis on h | 
 | ; CHECK: Invalidating analysis: NoOpFunctionAnalysis on g | 
 | ; CHECK-NOT: Invalidating analysis: NoOpFunctionAnalysis on h | 
 | ; CHECK: Running pass: PostOrderFunctionAttrsPass on (g) | 
 | ; CHECK: Running pass: PostOrderFunctionAttrsPass on (h) | 
 |  | 
 | declare i32 @e(ptr) | 
 |  | 
 | define i32 @f(i32 %a) { | 
 |   ret i32 %a | 
 | } | 
 |  | 
 | define i32 @g(i32 %b) { | 
 |   %c = call i32 @f(i32 %b) | 
 |   ret i32 %c | 
 | } | 
 |  | 
 | define i32 @h(i32 %b) { | 
 |   %c = call i32 @e(ptr @f) | 
 |   ret i32 %c | 
 | } |