[llvm] 9c56e94 - [NPM] Bail out when -foo and --passes=foo are both specified

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 22 08:34:57 PDT 2020


Author: Arthur Eubanks
Date: 2020-06-22T08:27:13-07:00
New Revision: 9c56e94a9f0d9a0930179e764aff7c80c793e117

URL: https://github.com/llvm/llvm-project/commit/9c56e94a9f0d9a0930179e764aff7c80c793e117
DIFF: https://github.com/llvm/llvm-project/commit/9c56e94a9f0d9a0930179e764aff7c80c793e117.diff

LOG: [NPM] Bail out when -foo and --passes=foo are both specified

Summary:
Currently when --passes is used, any passes specified via -foo are
ignored. Explicitly bail out when that happens.

This requires changing some tests. Most were straightforward, but
codegenprepare-produced-address-math.ll is tricky. One of its RUNs runs
CodeGenPrepare. I tried porting CodeGenPrepare to the NPM, but ended up
getting stuck when I needed a TargetMachine. NPM doesn't have support
for MachineFunctions yet. So I just deleted that RUN line, since it was
mass-added in https://reviews.llvm.org/D54848 and is likely not that
useful.

Reviewers: echristo, hans

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D82271

Added: 
    llvm/test/Other/opt-old-new-pm-passes.ll

Modified: 
    llvm/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll
    llvm/test/Transforms/IRCE/non-loop-invariant-rhs-instr.ll
    llvm/test/Transforms/LoadStoreVectorizer/X86/codegenprepare-produced-address-math.ll
    llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll
    llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll
    llvm/tools/opt/opt.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/Other/opt-old-new-pm-passes.ll b/llvm/test/Other/opt-old-new-pm-passes.ll
new file mode 100644
index 000000000000..09bc7c401604
--- /dev/null
+++ b/llvm/test/Other/opt-old-new-pm-passes.ll
@@ -0,0 +1,2 @@
+; RUN: not opt -dce --passes=inline %s 2>&1 | FileCheck %s
+; CHECK: Cannot specify passes via both -foo-pass and --passes=foo-pass

diff  --git a/llvm/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll b/llvm/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll
index 2842bced1cfc..46a83de97e43 100644
--- a/llvm/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll
+++ b/llvm/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll
@@ -1,5 +1,5 @@
 ; RUN: opt -irce-print-changed-loops -S -verify-loop-info -irce -verify < %s 2>&1 | FileCheck %s
-; RUN: opt -irce-print-changed-loops -S -verify-loop-info -passes='require<branch-prob>,irce' -verify < %s 2>&1 | FileCheck %s
+; RUN: opt -irce-print-changed-loops -S -verify-loop-info -passes='require<branch-prob>,irce,verify' < %s 2>&1 | FileCheck %s
 
 ; CHECK-NOT: constrained loop
 

diff  --git a/llvm/test/Transforms/IRCE/non-loop-invariant-rhs-instr.ll b/llvm/test/Transforms/IRCE/non-loop-invariant-rhs-instr.ll
index 5d6e8830d377..3612270eaa9a 100644
--- a/llvm/test/Transforms/IRCE/non-loop-invariant-rhs-instr.ll
+++ b/llvm/test/Transforms/IRCE/non-loop-invariant-rhs-instr.ll
@@ -1,6 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 ; RUN: opt -S -irce -verify-loop-info -verify < %s 2>&1 | FileCheck %s
-; RUN: opt -S -passes=irce -verify-loop-info -verify < %s 2>&1 | FileCheck %s
+; RUN: opt -S -verify-loop-info -passes=irce,verify < %s 2>&1 | FileCheck %s
 
 define i32 @test_01(i32 %A, i64 %Len, i32 *%array) {
 ; CHECK-LABEL: @test_01(

diff  --git a/llvm/test/Transforms/LoadStoreVectorizer/X86/codegenprepare-produced-address-math.ll b/llvm/test/Transforms/LoadStoreVectorizer/X86/codegenprepare-produced-address-math.ll
index e29f3dfa537f..01606a2f2a5e 100644
--- a/llvm/test/Transforms/LoadStoreVectorizer/X86/codegenprepare-produced-address-math.ll
+++ b/llvm/test/Transforms/LoadStoreVectorizer/X86/codegenprepare-produced-address-math.ll
@@ -1,7 +1,6 @@
 ; RUN: opt -codegenprepare -load-store-vectorizer %s -S -o - | FileCheck %s
 ; RUN: opt                 -load-store-vectorizer %s -S -o - | FileCheck %s
-; RUN: opt -codegenprepare -aa-pipeline=basic-aa -passes='function(load-store-vectorizer)' %s -S -o - | FileCheck %s
-; RUN: opt                 -aa-pipeline=basic-aa -passes='function(load-store-vectorizer)' %s -S -o - | FileCheck %s
+; RUN: opt -aa-pipeline=basic-aa -passes='function(load-store-vectorizer)' %s -S -o - | FileCheck %s
 
 target triple = "x86_64--"
 

diff  --git a/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll b/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll
index d198b2727780..b823b6c2a5ba 100644
--- a/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll
+++ b/llvm/test/Transforms/RewriteStatepointsForGC/relocate-invoke-result.ll
@@ -1,6 +1,6 @@
 
 ;; RUN: opt -rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s
-;; RUN: opt -passes=rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s
+;; RUN: opt -passes=rewrite-statepoints-for-gc,verify -S < %s | FileCheck %s
 ;; This test is to verify that RewriteStatepointsForGC correctly relocates values
 ;; defined by invoke instruction results. 
 

diff  --git a/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll b/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll
index f096f30ba06a..5db1c4602796 100644
--- a/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll
+++ b/llvm/test/Transforms/RewriteStatepointsForGC/rewrite-invoke.ll
@@ -1,5 +1,5 @@
 ; RUN: opt -rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s
-; RUN: opt -passes=rewrite-statepoints-for-gc -verify -S < %s | FileCheck %s
+; RUN: opt -passes=rewrite-statepoints-for-gc,verify -S < %s | FileCheck %s
 
 declare i8 addrspace(1)* @gc_call()
 

diff  --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp
index 0a1a5110bf2d..5b8fa26a3d30 100644
--- a/llvm/tools/opt/opt.cpp
+++ b/llvm/tools/opt/opt.cpp
@@ -735,6 +735,11 @@ int main(int argc, char **argv) {
     M->addModuleFlag(Module::Error, "EnableSplitLTOUnit", SplitLTOUnit);
 
   if (PassPipeline.getNumOccurrences() > 0) {
+    if (PassList.size()) {
+      errs()
+          << "Cannot specify passes via both -foo-pass and --passes=foo-pass";
+      return 1;
+    }
     OutputKind OK = OK_NoOutput;
     if (!NoOutput)
       OK = OutputAssembly


        


More information about the llvm-commits mailing list