Right now when we see -O# we add the corresponding 'default<O#>' into the list of passes to run when translating legacy -pass-name. This has the side effect of not using the default AA pipeline. Instead, treat -O# as -passes='default<O#>', but don't allow any other -passes or -pass-name. I think we can keep `opt -O#` as shorthand for `opt -passes='default<O#>` but disallow anything more than just -O#. Tests need to be updated to not use `opt -O# -pass-name`. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D112036
20 lines
863 B
LLVM
20 lines
863 B
LLVM
; RUN: not opt -O1 -O2 < %s 2>&1 | FileCheck %s --check-prefix=MULTIPLE
|
|
; RUN: not opt -O1 -passes='no-op-module' < %s 2>&1 | FileCheck %s --check-prefix=BOTH
|
|
; RUN: opt -O0 < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -O1 < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -O2 < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -O3 < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -Os < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -Oz < %s -S 2>&1 | FileCheck %s --check-prefix=OPT
|
|
; RUN: opt -O2 -debug-pass-manager -disable-output < %s 2>&1 | FileCheck %s --check-prefix=AA
|
|
|
|
; MULTIPLE: Cannot specify multiple -O#
|
|
; BOTH: Cannot specify -O# and --passes=
|
|
; OPT: define void @f
|
|
; Make sure we run the default AA pipeline with `opt -O#`
|
|
; AA: Running analysis: ScopedNoAliasAA
|
|
|
|
define void @f() {
|
|
unreachable
|
|
}
|