From 431b23d20d5c2889d38c9ce20ac8e66357d5d9c4 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Sun, 8 May 2022 17:22:11 -0700 Subject: [PATCH] [opt] Error on `opt -O# --foo-pass` Matches the error message we emit with `-opt -O# --passes=foo`. Otherwise we crash later on. Makes #55320 much less confusing. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D125196 --- llvm/test/Other/opt-On.ll | 1 + llvm/tools/opt/opt.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/llvm/test/Other/opt-On.ll b/llvm/test/Other/opt-On.ll index 4bbbd0f..c0e6169 100644 --- 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 index 2b3b392..bd4738d 100644 --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -780,8 +780,9 @@ int main(int argc, char **argv) { 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; } -- 2.7.4