diff --git a/llvm/test/Other/opt-On.ll b/llvm/test/Other/opt-On.ll --- a/llvm/test/Other/opt-On.ll +++ b/llvm/test/Other/opt-On.ll @@ -1,5 +1,6 @@ ; 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: not opt -O1 --gvn < %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 diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -780,8 +780,9 @@ errs() << "Cannot specify multiple -O#\n"; return 1; } - if (NumOLevel > 0 && PassPipeline.getNumOccurrences() > 0) { - errs() << "Cannot specify -O# and --passes=, use " + if (NumOLevel > 0 && + (PassPipeline.getNumOccurrences() > 0 || PassList.size() > 0)) { + errs() << "Cannot specify -O# and --passes=/--foo-pass, use " "-passes='default,other-pass'\n"; return 1; }