diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -682,11 +682,12 @@ PB.registerPipelineEarlySimplificationEPCallback( [this](ModulePassManager &PM, OptimizationLevel Level) { + PM.addPass(AMDGPUPrintfRuntimeBindingPass()); + if (Level == OptimizationLevel::O0) return; PM.addPass(AMDGPUUnifyMetadataPass()); - PM.addPass(AMDGPUPrintfRuntimeBindingPass()); if (InternalizeSymbols) { PM.addPass(InternalizePass(mustPreserveGV)); diff --git a/llvm/test/CodeGen/AMDGPU/opencl-printf-pipeline.ll b/llvm/test/CodeGen/AMDGPU/opencl-printf-pipeline.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/opencl-printf-pipeline.ll @@ -0,0 +1,16 @@ +; RUN: opt -mtriple=amdgcn--amdhsa -passes=amdgpu-printf-runtime-binding -S < %s | FileCheck %s +; RUN: opt -mtriple=amdgcn--amdhsa -O0 -S < %s | FileCheck %s +; RUN: opt -mtriple=amdgcn--amdhsa -O1 -S < %s | FileCheck %s + +@.str = private unnamed_addr addrspace(4) constant [7 x i8] c"hello\0A\00", align 1 + +; Check that the call to printf is removed when AMDGPUPrintfRuntimeBindingPass is executed +; And that this pass is executed in the -O0 and -OX pipelines +; CHECK-LABEL: define void @foo +; CHECK-NOT: call i32{{.*}}@printf +define void @foo() { + %call = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) noundef @.str) + ret void +} + +declare hidden i32 @printf(ptr addrspace(4) noundef, ...) diff --git a/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll b/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/opt-pipeline.ll @@ -0,0 +1,558 @@ +; UNSUPPORTED: expensive_checks +; RUN: opt -O0 -mtriple=amdgcn--amdhsa -disable-verify -debug-pass-manager -S < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=GCN-O0 %s +; RUN: opt -O1 -mtriple=amdgcn--amdhsa -disable-verify -debug-pass-manager -S < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=GCN-O1 %s +; RUN: opt -O2 -mtriple=amdgcn--amdhsa -disable-verify -debug-pass-manager -S < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=GCN-O2 %s +; RUN: opt -O3 -mtriple=amdgcn--amdhsa -disable-verify -debug-pass-manager -S < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=GCN-O3 %s + +; REQUIRES: asserts + +;GCN-O0: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O0-NEXT: Running pass: AMDGPUPropagateAttributesEarlyPass on empty (1 instruction) +;GCN-O0-NEXT: Running pass: AMDGPUUseNativeCallsPass on empty (1 instruction) +;GCN-O0-NEXT: Running pass: AMDGPUPrintfRuntimeBindingPass on [module] +;GCN-O0-NEXT: Running pass: AlwaysInlinerPass on [module] +;GCN-O0-NEXT: Running analysis: ProfileSummaryAnalysis on [module] +;GCN-O0-NEXT: Running pass: CoroConditionalWrapper on [module] +;GCN-O0-NEXT: Running pass: AnnotationRemarksPass on empty (1 instruction) +;GCN-O0-NEXT: Running analysis: TargetLibraryAnalysis on empty +;GCN-O0-NEXT: Running pass: PrintModulePass on [module] + +;GCN-O1: Running pass: Annotation2MetadataPass on [module] +;GCN-O1-NEXT: Running pass: ForceFunctionAttrsPass on [module] +;GCN-O1-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O1-NEXT: Running pass: AMDGPUPropagateAttributesEarlyPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: AMDGPUUseNativeCallsPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: AMDGPUSimplifyLibCallsPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: AAManager on empty +;GCN-O1-NEXT: Running analysis: TargetLibraryAnalysis on empty +;GCN-O1-NEXT: Running analysis: BasicAA on empty +;GCN-O1-NEXT: Running analysis: AssumptionAnalysis on empty +;GCN-O1-NEXT: Running analysis: TargetIRAnalysis on empty +;GCN-O1-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running analysis: ScopedNoAliasAA on empty +;GCN-O1-NEXT: Running analysis: TypeBasedAA on empty +;GCN-O1-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::Function> on empty +;GCN-O1-NEXT: Running analysis: AMDGPUAA on empty +;GCN-O1-NEXT: Running pass: InferFunctionAttrsPass on [module] +;GCN-O1-NEXT: Running pass: CoroEarlyPass on [module] +;GCN-O1-NEXT: Running pass: LowerExpectIntrinsicPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O1-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O1-NEXT: Invalidating analysis: AAManager on empty +;GCN-O1-NEXT: Running pass: OpenMPOptPass on [module] +;GCN-O1-NEXT: Running pass: AMDGPUPrintfRuntimeBindingPass on [module] +;GCN-O1-NEXT: Running pass: AMDGPUUnifyMetadataPass on [module] +;GCN-O1-NEXT: Running pass: AMDGPUPropagateAttributesLatePass on [module] +;GCN-O1-NEXT: Running pass: IPSCCPPass on [module] +;GCN-O1-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Running pass: CalledValuePropagationPass on [module] +;GCN-O1-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O1-NEXT: Running pass: PromotePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on empty +;GCN-O1-NEXT: Running analysis: AAManager on empty +;GCN-O1-NEXT: Running analysis: BasicAA on empty +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O1-NEXT: Invalidating analysis: AAManager on empty +;GCN-O1-NEXT: Running pass: ModuleInlinerWrapperPass on [module] +;GCN-O1-NEXT: Running analysis: InlineAdvisorAnalysis on [module] +;GCN-O1-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O1-NEXT: Running analysis: GlobalsAA on [module] +;GCN-O1-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O1-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O1-NEXT: Running analysis: ProfileSummaryAnalysis on [module] +;GCN-O1-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O1-NEXT: Running analysis: LazyCallGraphAnalysis on [module] +;GCN-O1-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy on (empty) +;GCN-O1-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&> on (empty) +;GCN-O1-NEXT: Running pass: DevirtSCCRepeatedPass on (empty) (1 node) +;GCN-O1-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O1-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O1-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O1-NEXT: Running pass: InferAddressSpacesPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: AMDGPULowerKernelAttributesPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: AMDGPUPromoteAllocaToVectorPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: MemorySSAAnalysis on empty +;GCN-O1-NEXT: Running analysis: AAManager on empty +;GCN-O1-NEXT: Running analysis: BasicAA on empty +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LibCallsShrinkWrapPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: ReassociatePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: MemCpyOptPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SCCPPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: BDCEPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: DemandedBitsAnalysis on empty +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: CoroElidePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: ADCEPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: PostDominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O1-NEXT: Invalidating analysis: AAManager on empty +;GCN-O1-NEXT: Invalidating analysis: MemorySSAAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: DemandedBitsAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: PostDominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O1-NEXT: Running analysis: AAManager on empty +;GCN-O1-NEXT: Running analysis: BasicAA on empty +;GCN-O1-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O1-NEXT: Running pass: CoroSplitPass on (empty) (1 node) +;GCN-O1-NEXT: Invalidating analysis: CallGraphAnalysis on [module] +;GCN-O1-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O1-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: InlineAdvisorAnalysis on [module] +;GCN-O1-NEXT: Running pass: DeadArgumentEliminationPass on [module] +;GCN-O1-NEXT: Running pass: CoroCleanupPass on [module] +;GCN-O1-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O1-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O1-NEXT: Running pass: EliminateAvailableExternallyPass on [module] +;GCN-O1-NEXT: Running pass: ReversePostOrderFunctionAttrsPass on [module] +;GCN-O1-NEXT: Running pass: RecomputeGlobalsAAPass on [module] +;GCN-O1-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O1-NEXT: Running pass: Float2IntPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LowerConstantIntrinsicsPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopDistributePass on empty (1 instruction) +;GCN-O1-NEXT: Running analysis: ScalarEvolutionAnalysis on empty +;GCN-O1-NEXT: Running analysis: LoopAccessAnalysis on empty +;GCN-O1-NEXT: Running pass: InjectTLIMappings on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopVectorizePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopLoadEliminationPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: VectorCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopUnrollPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: WarnMissedTransformationsPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: AlignmentFromAssumptionsPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: LoopSinkPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: InstSimplifyPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: DivRemPairsPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: TailCallElimPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O1-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O1-NEXT: Invalidating analysis: AAManager on empty +;GCN-O1-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: ScalarEvolutionAnalysis on empty +;GCN-O1-NEXT: Invalidating analysis: LoopAccessAnalysis on empty +;GCN-O1-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O1-NEXT: Running pass: ConstantMergePass on [module] +;GCN-O1-NEXT: Running pass: CGProfilePass on [module] +;GCN-O1-NEXT: Running pass: RelLookupTableConverterPass on [module] +;GCN-O1-NEXT: Running pass: AnnotationRemarksPass on empty (1 instruction) +;GCN-O1-NEXT: Running pass: PrintModulePass on [module] + +;GCN-O2: Running pass: Annotation2MetadataPass on [module] +;GCN-O2-NEXT: Running pass: ForceFunctionAttrsPass on [module] +;GCN-O2-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O2-NEXT: Running pass: AMDGPUPropagateAttributesEarlyPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: AMDGPUUseNativeCallsPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: AMDGPUSimplifyLibCallsPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: AAManager on empty +;GCN-O2-NEXT: Running analysis: TargetLibraryAnalysis on empty +;GCN-O2-NEXT: Running analysis: BasicAA on empty +;GCN-O2-NEXT: Running analysis: AssumptionAnalysis on empty +;GCN-O2-NEXT: Running analysis: TargetIRAnalysis on empty +;GCN-O2-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running analysis: ScopedNoAliasAA on empty +;GCN-O2-NEXT: Running analysis: TypeBasedAA on empty +;GCN-O2-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::Function> on empty +;GCN-O2-NEXT: Running analysis: AMDGPUAA on empty +;GCN-O2-NEXT: Running pass: InferFunctionAttrsPass on [module] +;GCN-O2-NEXT: Running pass: CoroEarlyPass on [module] +;GCN-O2-NEXT: Running pass: LowerExpectIntrinsicPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O2-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O2-NEXT: Invalidating analysis: AAManager on empty +;GCN-O2-NEXT: Running pass: OpenMPOptPass on [module] +;GCN-O2-NEXT: Running pass: AMDGPUPrintfRuntimeBindingPass on [module] +;GCN-O2-NEXT: Running pass: AMDGPUUnifyMetadataPass on [module] +;GCN-O2-NEXT: Running pass: AMDGPUPropagateAttributesLatePass on [module] +;GCN-O2-NEXT: Running pass: IPSCCPPass on [module] +;GCN-O2-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Running pass: CalledValuePropagationPass on [module] +;GCN-O2-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O2-NEXT: Running pass: PromotePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on empty +;GCN-O2-NEXT: Running analysis: AAManager on empty +;GCN-O2-NEXT: Running analysis: BasicAA on empty +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O2-NEXT: Invalidating analysis: AAManager on empty +;GCN-O2-NEXT: Running pass: ModuleInlinerWrapperPass on [module] +;GCN-O2-NEXT: Running analysis: InlineAdvisorAnalysis on [module] +;GCN-O2-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O2-NEXT: Running analysis: GlobalsAA on [module] +;GCN-O2-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O2-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O2-NEXT: Running analysis: ProfileSummaryAnalysis on [module] +;GCN-O2-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O2-NEXT: Running analysis: LazyCallGraphAnalysis on [module] +;GCN-O2-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy on (empty) +;GCN-O2-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&> on (empty) +;GCN-O2-NEXT: Running pass: DevirtSCCRepeatedPass on (empty) (1 node) +;GCN-O2-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O2-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O2-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (empty) (1 node) +;GCN-O2-NEXT: Running pass: AMDGPUPromoteKernelArgumentsPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: MemorySSAAnalysis on empty +;GCN-O2-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running analysis: AAManager on empty +;GCN-O2-NEXT: Running analysis: BasicAA on empty +;GCN-O2-NEXT: Running pass: InferAddressSpacesPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: AMDGPULowerKernelAttributesPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: AMDGPUPromoteAllocaToVectorPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SpeculativeExecutionPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: JumpThreadingPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: CorrelatedValuePropagationPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: LazyValueAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: LazyValueAnalysis on empty +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: ConstraintEliminationPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LibCallsShrinkWrapPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: TailCallElimPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: ReassociatePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: VectorCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: MergedLoadStoreMotionPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: GVNPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: MemoryDependenceAnalysis on empty +;GCN-O2-NEXT: Running pass: SCCPPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: BDCEPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: DemandedBitsAnalysis on empty +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: JumpThreadingPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: CorrelatedValuePropagationPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: LazyValueAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: LazyValueAnalysis on empty +;GCN-O2-NEXT: Running pass: ADCEPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: PostDominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running pass: MemCpyOptPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: DSEPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: CoroElidePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O2-NEXT: Invalidating analysis: AAManager on empty +;GCN-O2-NEXT: Invalidating analysis: MemorySSAAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: MemoryDependenceAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: DemandedBitsAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: PostDominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O2-NEXT: Running analysis: AAManager on empty +;GCN-O2-NEXT: Running analysis: BasicAA on empty +;GCN-O2-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O2-NEXT: Running pass: CoroSplitPass on (empty) (1 node) +;GCN-O2-NEXT: Invalidating analysis: CallGraphAnalysis on [module] +;GCN-O2-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O2-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: InlineAdvisorAnalysis on [module] +;GCN-O2-NEXT: Running pass: DeadArgumentEliminationPass on [module] +;GCN-O2-NEXT: Running pass: CoroCleanupPass on [module] +;GCN-O2-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O2-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O2-NEXT: Running pass: EliminateAvailableExternallyPass on [module] +;GCN-O2-NEXT: Running pass: ReversePostOrderFunctionAttrsPass on [module] +;GCN-O2-NEXT: Running pass: RecomputeGlobalsAAPass on [module] +;GCN-O2-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O2-NEXT: Running pass: Float2IntPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LowerConstantIntrinsicsPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopDistributePass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: ScalarEvolutionAnalysis on empty +;GCN-O2-NEXT: Running analysis: LoopAccessAnalysis on empty +;GCN-O2-NEXT: Running pass: InjectTLIMappings on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopVectorizePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopLoadEliminationPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SLPVectorizerPass on empty (1 instruction) +;GCN-O2-NEXT: Running analysis: DemandedBitsAnalysis on empty +;GCN-O2-NEXT: Running pass: VectorCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopUnrollPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: WarnMissedTransformationsPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: AlignmentFromAssumptionsPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: LoopSinkPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: InstSimplifyPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: DivRemPairsPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: TailCallElimPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O2-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O2-NEXT: Invalidating analysis: AAManager on empty +;GCN-O2-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: ScalarEvolutionAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: LoopAccessAnalysis on empty +;GCN-O2-NEXT: Invalidating analysis: DemandedBitsAnalysis on empty +;GCN-O2-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O2-NEXT: Running pass: ConstantMergePass on [module] +;GCN-O2-NEXT: Running pass: CGProfilePass on [module] +;GCN-O2-NEXT: Running pass: RelLookupTableConverterPass on [module] +;GCN-O2-NEXT: Running pass: AnnotationRemarksPass on empty (1 instruction) +;GCN-O2-NEXT: Running pass: PrintModulePass on [module] + +;GCN-O3: Running pass: Annotation2MetadataPass on [module] +;GCN-O3-NEXT: Running pass: ForceFunctionAttrsPass on [module] +;GCN-O3-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O3-NEXT: Running pass: AMDGPUPropagateAttributesEarlyPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AMDGPUUseNativeCallsPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AMDGPUSimplifyLibCallsPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: AAManager on empty +;GCN-O3-NEXT: Running analysis: TargetLibraryAnalysis on empty +;GCN-O3-NEXT: Running analysis: BasicAA on empty +;GCN-O3-NEXT: Running analysis: AssumptionAnalysis on empty +;GCN-O3-NEXT: Running analysis: TargetIRAnalysis on empty +;GCN-O3-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running analysis: ScopedNoAliasAA on empty +;GCN-O3-NEXT: Running analysis: TypeBasedAA on empty +;GCN-O3-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::Function> on empty +;GCN-O3-NEXT: Running analysis: AMDGPUAA on empty +;GCN-O3-NEXT: Running pass: InferFunctionAttrsPass on [module] +;GCN-O3-NEXT: Running pass: CoroEarlyPass on [module] +;GCN-O3-NEXT: Running pass: LowerExpectIntrinsicPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: CallSiteSplittingPass on empty (1 instruction) +;GCN-O3-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O3-NEXT: Invalidating analysis: AAManager on empty +;GCN-O3-NEXT: Running pass: OpenMPOptPass on [module] +;GCN-O3-NEXT: Running pass: AMDGPUPrintfRuntimeBindingPass on [module] +;GCN-O3-NEXT: Running pass: AMDGPUUnifyMetadataPass on [module] +;GCN-O3-NEXT: Running pass: AMDGPUPropagateAttributesLatePass on [module] +;GCN-O3-NEXT: Running pass: IPSCCPPass on [module] +;GCN-O3-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Running pass: CalledValuePropagationPass on [module] +;GCN-O3-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O3-NEXT: Running pass: PromotePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on empty +;GCN-O3-NEXT: Running analysis: AAManager on empty +;GCN-O3-NEXT: Running analysis: BasicAA on empty +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O3-NEXT: Invalidating analysis: AAManager on empty +;GCN-O3-NEXT: Running pass: ModuleInlinerWrapperPass on [module] +;GCN-O3-NEXT: Running analysis: InlineAdvisorAnalysis on [module] +;GCN-O3-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O3-NEXT: Running analysis: GlobalsAA on [module] +;GCN-O3-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O3-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: RequireAnalysisPass on [module] +;GCN-O3-NEXT: Running analysis: ProfileSummaryAnalysis on [module] +;GCN-O3-NEXT: Running analysis: InnerAnalysisManagerProxy, llvm::Module> on [module] +;GCN-O3-NEXT: Running analysis: LazyCallGraphAnalysis on [module] +;GCN-O3-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy on (empty) +;GCN-O3-NEXT: Running analysis: OuterAnalysisManagerProxy, llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&> on (empty) +;GCN-O3-NEXT: Running pass: DevirtSCCRepeatedPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: InlinerPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: ArgumentPromotionPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: OpenMPOptCGSCCPass on (empty) (1 node) +;GCN-O3-NEXT: Running pass: AMDGPUPromoteKernelArgumentsPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: MemorySSAAnalysis on empty +;GCN-O3-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running analysis: AAManager on empty +;GCN-O3-NEXT: Running analysis: BasicAA on empty +;GCN-O3-NEXT: Running pass: InferAddressSpacesPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AMDGPULowerKernelAttributesPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AMDGPUPromoteAllocaToVectorPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: EarlyCSEPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SpeculativeExecutionPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: JumpThreadingPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: CorrelatedValuePropagationPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: LazyValueAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: LazyValueAnalysis on empty +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AggressiveInstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: ConstraintEliminationPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LibCallsShrinkWrapPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: TailCallElimPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: ReassociatePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: VectorCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: MergedLoadStoreMotionPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: GVNPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: MemoryDependenceAnalysis on empty +;GCN-O3-NEXT: Running pass: SCCPPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: BDCEPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: DemandedBitsAnalysis on empty +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: JumpThreadingPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: CorrelatedValuePropagationPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: LazyValueAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: LazyValueAnalysis on empty +;GCN-O3-NEXT: Running pass: ADCEPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: PostDominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running pass: MemCpyOptPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: DSEPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: CoroElidePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O3-NEXT: Invalidating analysis: AAManager on empty +;GCN-O3-NEXT: Invalidating analysis: MemorySSAAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: MemoryDependenceAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: DemandedBitsAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: PostDominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running pass: PostOrderFunctionAttrsPass on (empty) (1 node) +;GCN-O3-NEXT: Running analysis: AAManager on empty +;GCN-O3-NEXT: Running analysis: BasicAA on empty +;GCN-O3-NEXT: Running analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O3-NEXT: Running pass: CoroSplitPass on (empty) (1 node) +;GCN-O3-NEXT: Invalidating analysis: CallGraphAnalysis on [module] +;GCN-O3-NEXT: Running pass: InvalidateAnalysisPass on empty (1 instruction) +;GCN-O3-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: InlineAdvisorAnalysis on [module] +;GCN-O3-NEXT: Running pass: DeadArgumentEliminationPass on [module] +;GCN-O3-NEXT: Running pass: CoroCleanupPass on [module] +;GCN-O3-NEXT: Running pass: GlobalOptPass on [module] +;GCN-O3-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O3-NEXT: Running pass: EliminateAvailableExternallyPass on [module] +;GCN-O3-NEXT: Running pass: ReversePostOrderFunctionAttrsPass on [module] +;GCN-O3-NEXT: Running pass: RecomputeGlobalsAAPass on [module] +;GCN-O3-NEXT: Running analysis: CallGraphAnalysis on [module] +;GCN-O3-NEXT: Running pass: Float2IntPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LowerConstantIntrinsicsPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: ControlHeightReductionPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopDistributePass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: ScalarEvolutionAnalysis on empty +;GCN-O3-NEXT: Running analysis: LoopAccessAnalysis on empty +;GCN-O3-NEXT: Running pass: InjectTLIMappings on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopVectorizePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopLoadEliminationPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SLPVectorizerPass on empty (1 instruction) +;GCN-O3-NEXT: Running analysis: DemandedBitsAnalysis on empty +;GCN-O3-NEXT: Running pass: VectorCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopUnrollPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: WarnMissedTransformationsPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SROAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstCombinePass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: RequireAnalysisPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LCSSAPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: AlignmentFromAssumptionsPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: LoopSinkPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: InstSimplifyPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: DivRemPairsPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: TailCallElimPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: SimplifyCFGPass on empty (1 instruction) +;GCN-O3-NEXT: Invalidating analysis: DominatorTreeAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: BasicAA on empty +;GCN-O3-NEXT: Invalidating analysis: AAManager on empty +;GCN-O3-NEXT: Invalidating analysis: LoopAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: ScalarEvolutionAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: LoopAccessAnalysis on empty +;GCN-O3-NEXT: Invalidating analysis: DemandedBitsAnalysis on empty +;GCN-O3-NEXT: Running pass: GlobalDCEPass on [module] +;GCN-O3-NEXT: Running pass: ConstantMergePass on [module] +;GCN-O3-NEXT: Running pass: CGProfilePass on [module] +;GCN-O3-NEXT: Running pass: RelLookupTableConverterPass on [module] +;GCN-O3-NEXT: Running pass: AnnotationRemarksPass on empty (1 instruction) +;GCN-O3-NEXT: Running pass: PrintModulePass on [module] + +define void @empty() { + ret void +}