Emit deprecation for fallthrough.
The `fallthrough` statement is being removed from WGSL. This CL adds a deprecation warning into the current implementation to prepare folks for the upcoming removal. Bug: tint:1644 Change-Id: I599984b6a30b39312c4b794a9ecd70f0f626c759 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/98841 Auto-Submit: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
52cc4f5d1c
commit
735e4b4fa1
|
@ -2155,6 +2155,11 @@ Maybe<const ast::BlockStatement*> ParserImpl::case_body() {
|
||||||
return Failure::kErrored;
|
return Failure::kErrored;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deprecated(source,
|
||||||
|
"fallthrough is set to be removed from WGSL. "
|
||||||
|
"Case can accept multiple selectors if the existing case bodies are empty. "
|
||||||
|
"default is not yet supported in a case selector list.");
|
||||||
|
|
||||||
stmts.Push(create<ast::FallthroughStatement>(source));
|
stmts.Push(create<ast::FallthroughStatement>(source));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3422,8 +3422,13 @@ fn foo() {
|
||||||
)";
|
)";
|
||||||
|
|
||||||
RunTest(src, false);
|
RunTest(src, false);
|
||||||
EXPECT_EQ(error_,
|
EXPECT_EQ(
|
||||||
R"(test:14:7 warning: 'workgroupBarrier' must only be called from uniform control flow
|
error_,
|
||||||
|
R"(test:11:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
test:14:7 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||||
workgroupBarrier();
|
workgroupBarrier();
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@ -3487,8 +3492,13 @@ fn foo() {
|
||||||
)";
|
)";
|
||||||
|
|
||||||
RunTest(src, false);
|
RunTest(src, false);
|
||||||
EXPECT_EQ(error_,
|
EXPECT_EQ(
|
||||||
R"(test:14:9 warning: 'workgroupBarrier' must only be called from uniform control flow
|
error_,
|
||||||
|
R"(test:10:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
test:14:9 warning: 'workgroupBarrier' must only be called from uniform control flow
|
||||||
workgroupBarrier();
|
workgroupBarrier();
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@ -3541,32 +3551,6 @@ test:6:11 note: reading from read_write storage buffer 'non_uniform' may result
|
||||||
)");
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(UniformityAnalysisTest, Switch_VarBecomesUniformInDifferentCase_WithFallthrough) {
|
|
||||||
std::string src = R"(
|
|
||||||
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
|
|
||||||
@group(0) @binding(0) var<uniform> condition : i32;
|
|
||||||
|
|
||||||
fn foo() {
|
|
||||||
var x = non_uniform;
|
|
||||||
switch (condition) {
|
|
||||||
case 0: {
|
|
||||||
x = 5;
|
|
||||||
fallthrough;
|
|
||||||
}
|
|
||||||
case 42: {
|
|
||||||
if (x == 0) {
|
|
||||||
workgroupBarrier();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)";
|
|
||||||
|
|
||||||
RunTest(src, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(UniformityAnalysisTest, Switch_VarBecomesNonUniformInCase_BarrierAfter) {
|
TEST_F(UniformityAnalysisTest, Switch_VarBecomesNonUniformInCase_BarrierAfter) {
|
||||||
std::string src = R"(
|
std::string src = R"(
|
||||||
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
|
@group(0) @binding(0) var<storage, read_write> non_uniform : i32;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
[numthreads(1, 1, 1)]
|
||||||
void f() {
|
void f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
[numthreads(1, 1, 1)]
|
||||||
void f() {
|
void f() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
#version 310 es
|
#version 310 es
|
||||||
|
|
||||||
void f() {
|
void f() {
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
#include <metal_stdlib>
|
#include <metal_stdlib>
|
||||||
|
|
||||||
using namespace metal;
|
using namespace metal;
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
statements/switch/fallthrough.wgsl:6:13 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
|
||||||
|
fallthrough;
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
@compute @workgroup_size(1)
|
||||||
fn f() {
|
fn f() {
|
||||||
var i : i32;
|
var i : i32;
|
||||||
|
|
Loading…
Reference in New Issue