mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
f0b3e4d679
Summary: Depends on https://reviews.llvm.org/D71901. The fifth in a series of patches that ports the LLVM coroutines passes to the new pass manager infrastructure. The first 4 patches allow users to run coroutine passes by invoking, for example `opt -passes=coro-early`. However, most of LLVM's tests for coroutines use an option, `opt -enable-coroutines`, which adds all 4 coroutine passes to the appropriate legacy pass manager extension points. This patch does the same, but using the new pass manager: when coroutine features are enabled and the new pass manager is being used, this adds the new-pass-manager-compliant coroutine passes to the pass builder's pipeline. This allows us to run all coroutine tests using the new pass manager (besides those that use the coroutine retcon ABI used by the Swift compiler, which is not yet supported in the new pass manager). Reviewers: GorNishanov, lewissbaker, chandlerc, junparser, wenlei Subscribers: wenlei, EricWF, Prazek, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D71902
44 lines
1.9 KiB
LLVM
44 lines
1.9 KiB
LLVM
; Test that all coroutine passes run in the correct order at all optimization
|
|
; levels and -enable-coroutines adds coroutine passes to the pipeline.
|
|
;
|
|
; Legacy pass manager:
|
|
; RUN: opt < %s -disable-output -enable-coroutines -debug-pass=Arguments -O0 2>&1 | FileCheck %s
|
|
; RUN: opt < %s -disable-output -enable-coroutines -debug-pass=Arguments -O1 2>&1 | FileCheck %s
|
|
; RUN: opt < %s -disable-output -enable-coroutines -debug-pass=Arguments -O2 2>&1 | FileCheck %s
|
|
; RUN: opt < %s -disable-output -enable-coroutines -debug-pass=Arguments -O3 2>&1 | FileCheck %s
|
|
; RUN: opt < %s -disable-output -enable-coroutines -debug-pass=Arguments \
|
|
; RUN: -coro-early -coro-split -coro-elide -coro-cleanup 2>&1 | FileCheck %s
|
|
; RUN: opt < %s -disable-output -debug-pass=Arguments 2>&1 \
|
|
; RUN: | FileCheck %s -check-prefix=NOCORO
|
|
; New pass manager:
|
|
; RUN: opt < %s -disable-output -passes='default<O0>' -enable-coroutines \
|
|
; RUN: -debug-pass-manager 2>&1 | FileCheck %s -check-prefix=NEWPM
|
|
; RUN: opt < %s -disable-output -passes='default<O1>' -enable-coroutines \
|
|
; RUN: -debug-pass-manager 2>&1 | FileCheck %s -check-prefix=NEWPM
|
|
; RUN: opt < %s -disable-output -passes='default<O2>' -enable-coroutines \
|
|
; RUN: -debug-pass-manager 2>&1 | FileCheck %s -check-prefix=NEWPM
|
|
; RUN: opt < %s -disable-output -passes='default<O3>' -enable-coroutines \
|
|
; RUN: -debug-pass-manager 2>&1 | FileCheck %s -check-prefix=NEWPM
|
|
; RUN: opt < %s -disable-output -debug-pass-manager \
|
|
; RUN: -passes='function(coro-early),cgscc(coro-split),function(coro-elide,coro-cleanup)' 2>&1 \
|
|
; RUN: | FileCheck %s -check-prefix=NEWPM
|
|
|
|
; CHECK: coro-early
|
|
; CHECK: coro-split
|
|
; CHECK: coro-elide
|
|
; CHECK: coro-cleanup
|
|
|
|
; NOCORO-NOT: coro-early
|
|
; NOCORO-NOT: coro-split
|
|
; NOCORO-NOT: coro-elide
|
|
; NOCORO-NOT: coro-cleanup
|
|
|
|
; NEWPM: CoroEarlyPass
|
|
; NEWPM: CoroSplitPass
|
|
; NEWPM: CoroElidePass
|
|
; NEWPM: CoroCleanupPass
|
|
|
|
define void @foo() {
|
|
ret void
|
|
}
|