-
Notifications
You must be signed in to change notification settings - Fork 12.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WebAssembly] Fix CPU tests in wasm-features.c #80900
Conversation
This test is not working as intended. Specifying `-mcpu=[mvp|generic|bleeding-edge]` in `clang` command line does NOT add arguments like `-target-feature`, `+feature-name`, ... to `clang-14` command line. Specifying `-mcpu=[mvp|generic|bleeding-edge]` in `clang` command line will just add `-target-cpu=[mvp|generic|bleeding-edge]` to `clang-14` command line, and individual features are added here within `clang-14` invocation: https://github.com/llvm/llvm-project/blob/5b780c8c6c558ec283a9eec485a4f172df0f9fe1/clang/lib/Basic/Targets/WebAssembly.cpp#L150-L163 So the `wasm-features.c` test is not working as intended. The reason it is passing is because it only has `-NOT` checks, and we don't emit `-target-feature` arguments anyway, the test passes, but it doesn't check what it is supposed to check. I think we can delete this test. Features enabled by each CPU is also tested in https://github.com/llvm/llvm-project/blob/main/clang/test/Preprocessor/wasm-target-features.c, so I think this is covered.
@llvm/pr-subscribers-clang-driver @llvm/pr-subscribers-clang Author: Heejin Ahn (aheejin) ChangesThis test is not working as intended. Specifying llvm-project/clang/lib/Basic/Targets/WebAssembly.cpp Lines 150 to 163 in 5b780c8
So the I think we can delete this test. Features enabled by each CPU is also tested in Full diff: https://github.com/llvm/llvm-project/pull/80900.diff 1 Files Affected:
diff --git a/clang/test/Driver/wasm-features.c b/clang/test/Driver/wasm-features.c
deleted file mode 100644
index 4fba3da7bea267..00000000000000
--- a/clang/test/Driver/wasm-features.c
+++ /dev/null
@@ -1,132 +0,0 @@
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -fsyntax-only 2>&1 | FileCheck %s
-
-// CHECK: "-fvisibility=hidden"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mcpu=mvp 2>&1 | FileCheck %s -check-prefix=MVP
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mcpu=bleeding-edge 2>&1 | FileCheck %s -check-prefix=BLEEDING-EDGE
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mbulk-memory 2>&1 | FileCheck %s -check-prefix=BULK-MEMORY
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-bulk-memory 2>&1 | FileCheck %s -check-prefix=NO-BULK-MEMORY
-
-// BULK-MEMORY: "-target-feature" "+bulk-memory"
-// NO-BULK-MEMORY: "-target-feature" "-bulk-memory"
-// DEFAULT-NOT: "-target-feature" "-bulk-memory"
-// MVP-NOT: "-target-feature" "+bulk-memory"
-// BLEEDING-EDGE-NOT: "-target-feature" "-bulk-memory"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mmutable-globals 2>&1 | FileCheck %s -check-prefix=MUTABLE-GLOBALS
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-mutable-globals 2>&1 | FileCheck %s -check-prefix=NO-MUTABLE-GLOBALS
-
-// MUTABLE-GLOBALS: "-target-feature" "+mutable-globals"
-// NO-MUTABLE-GLOBALS: "-target-feature" "-mutable-globals"
-// DEFAULT-NOT: "-target-feature" "-mutable-globals"
-// MVP-NOT: "-target-feature" "+mutable-globals"
-// BLEEDING-EDGE-NOT: "-target-feature" "-mutable-globals"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -msign-ext 2>&1 | FileCheck %s -check-prefix=SIGN-EXT
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-sign-ext 2>&1 | FileCheck %s -check-prefix=NO-SIGN-EXT
-
-// SIGN-EXT: "-target-feature" "+sign-ext"
-// NO-SIGN-EXT: "-target-feature" "-sign-ext"
-// DEFAULT-NOT: "-target-feature" "-sign-ext"
-// MVP-NOT: "-target-feature" "+sign-ext"
-// BLEEDING-EDGE-NOT: "-target-feature" "-sign-ext"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mnontrapping-fptoint 2>&1 | FileCheck %s -check-prefix=NONTRAPPING-FPTOINT
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-nontrapping-fptoint 2>&1 | FileCheck %s -check-prefix=NO-NONTRAPPING-FPTOINT
-
-// NONTRAPPING-FPTOINT: "-target-feature" "+nontrapping-fptoint"
-// NO-NONTRAPPING-FPTOINT: "-target-feature" "-nontrapping-fptoint"
-// DEFAULT-NOT: "-target-feature" "-nontrapping-fptoint"
-// MVP-NOT: "-target-feature" "+nontrapping-fptoint"
-// BLEEDING-EDGE-NOT: "-target-feature" "-nontrapping-fptoint"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mmultivalue 2>&1 | FileCheck %s -check-prefix=MULTIVALUE
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-multivalue 2>&1 | FileCheck %s -check-prefix=NO-MULTIVALUE
-
-// MULTIVALUE: "-target-feature" "+multivalue"
-// NO-MULTIVALUE: "-target-feature" "-multivalue"
-// DEFAULT-NOT: "-target-feature" "-multivalue"
-// MVP-NOT: "-target-feature" "+multivalue"
-// GENERIC-NOT: "-target-feature" "+multivalue"
-// BLEEDING-EDGE-NOT: "-target-feature" "-multivalue"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mmultimemory 2>&1 | FileCheck %s -check-prefix=MULTIMEMORY
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-multimemory 2>&1 | FileCheck %s -check-prefix=NO-MULTIMEMORY
-
-// MULTIMEMORY: "-target-feature" "+multimemory"
-// NO-MULTIMEMORY: "-target-feature" "-multimemory"
-// DEFAULT-NOT: "-target-feature" "-multimemory"
-// MVP-NOT: "-target-feature" "+multimemory"
-// BLEEDING-EDGE-NOT: "-target-feature" "-multimemory"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -matomics 2>&1 | FileCheck %s -check-prefix=ATOMICS
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-atomics 2>&1 | FileCheck %s -check-prefix=NO-ATOMICS
-
-// ATOMICS: "-target-feature" "+atomics"
-// NO-ATOMICS: "-target-feature" "-atomics"
-// DEFAULT-NOT: "-target-feature" "-atomics"
-// MVP-NOT: "-target-feature" "+atomics"
-// GENERIC-NOT: "-target-feature" "+atomics"
-// BLEEDING-EDGE-NOT: "-target-feature" "-atomics"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mtail-call 2>&1 | FileCheck %s -check-prefix=TAIL-CALL
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-tail-call 2>&1 | FileCheck %s -check-prefix=NO-TAIL-CALL
-
-// TAIL-CALL: "-target-feature" "+tail-call"
-// NO-TAIL-CALL: "-target-feature" "-tail-call"
-// DEFAULT-NOT: "-target-feature" "-tail-call"
-// MVP-NOT: "-target-feature" "+tail-call"
-// GENERIC-NOT: "-target-feature" "+tail-call"
-// BLEEDING-EDGE-NOT: "-target-feature" "-tail-call"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mreference-types 2>&1 | FileCheck %s -check-prefix=REFERENCE-TYPES
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-reference-types 2>&1 | FileCheck %s -check-prefix=NO-REFERENCE-TYPES
-
-// REFERENCE-TYPES: "-target-feature" "+reference-types"
-// NO-REFERENCE-TYPES: "-target-feature" "-reference-types"
-// DEFAULT-NOT: "-target-feature" "-reference-types"
-// MVP-NOT: "-target-feature" "+reference-types"
-// GENERIC-NOT: "-target-feature" "+reference-types"
-// BLEEDING-EDGE-NOT: "-target-feature" "-reference-types"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -msimd128 2>&1 | FileCheck %s -check-prefix=SIMD128
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-simd128 2>&1 | FileCheck %s -check-prefix=NO-SIMD128
-
-// SIMD128: "-target-feature" "+simd128"
-// NO-SIMD128: "-target-feature" "-simd128"
-// DEFAULT-NOT: "-target-feature" "-simd128"
-// MVP-NOT: "-target-feature" "+simd128"
-// GENERIC-NOT: "-target-feature" "+simd128"
-// BLEEDING-EDGE-NOT: "-target-feature" "+simd128"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mrelaxed-simd 2>&1 | FileCheck %s -check-prefix=RELAXED-SIMD
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-relaxed-simd 2>&1 | FileCheck %s -check-prefix=NO-RELAXED-SIMD
-
-// RELAXED-SIMD: "-target-feature" "+relaxed-simd"
-// NO-RELAXED-SIMD: "-target-feature" "-relaxed-simd"
-// DEFAULT-NOT: "-target-feature" "-relaxed-simd"
-// MVP-NOT: "-target-feature" "+relaxed-simd"
-// GENERIC-NOT: "-target-feature" "+relaxed-simd"
-// BLEEDING-EDGE-NOT: "-target-feature" "+relaxed-simd"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mexception-handling 2>&1 | FileCheck %s -check-prefix=EXCEPTION-HANDLING
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-exception-handling 2>&1 | FileCheck %s -check-prefix=NO-EXCEPTION-HANDLING
-
-// EXCEPTION-HANDLING: "-target-feature" "+exception-handling"
-// NO-EXCEPTION-HANDLING: "-target-feature" "-exception-handling"
-// DEFAULT-NOT: "-target-feature" "-exception-handling"
-// MVP-NOT: "-target-feature" "+exception-handling"
-// GENERIC-NOT: "-target-feature" "+exception-handling"
-// BLEEDING-EDGE-NOT: "-target-feature" "+exception-handling"
-
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mextended-const 2>&1 | FileCheck %s -check-prefix=EXTENDED-CONST
-// RUN: %clang --target=wasm32-unknown-unknown -### %s -mno-extended-const 2>&1 | FileCheck %s -check-prefix=NO-EXTENDED-CONST
-
-// EXTENDED-CONST: "-target-feature" "+extended-const"
-// NO-EXTENDED-CONST: "-target-feature" "-extended-const"
-// DEFAULT-NOT: "-target-feature" "-extended-const"
-// MVP-NOT: "-target-feature" "+extended-const"
-// GENERIC-NOT: "-target-feature" "+extended-const"
-// BLEEDING-EDGE-NOT: "-target-feature" "+extended-const"
|
This doesn't look right, though. There are plenty of positive checks in the file, so how could it be passing if it's not checking the right things? |
Sorry, I was confused. Enabling individual features with |
Hmm, on second thought, I think it'd be better to test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense, thanks!
The CPU tests in this file are not working as intended. Specifying
-mcpu=[mvp|generic|bleeding-edge]
inclang
command line does NOT add arguments like-target-feature
,+feature-name
, ... toclang-14
command line. Specifying-mcpu=[mvp|generic|bleeding-edge]
inclang
command line will just add-target-cpu
[mvp|generic|bleeding-edge]
toclang-14
command line, and individual features are added here withinclang-14
invocation:llvm-project/clang/lib/Basic/Targets/WebAssembly.cpp
Lines 150 to 163 in 5b780c8
The reason these CPU tests are passing is because they only have
-NOT
checks, and we don't emit-target-feature
arguments for them anyway, the test passes, but they don't check what they are supposed to check.This make CPU tests only check
-target-cpu
lines instead of individual features, which will not be emitted.