[tint][fuzz] Remove tint::wgsl::IRRoundtrip fuzzing pass
The code that this exclusively covers is not security sensitive, but
incurs a significant maintenance burden, so has been decided to be
removed.
Fixes: 403308738
Change-Id: I11abd7faab9f1e68bcccd99ef8bde54c5f484d5c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/232194
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/fuzz/ir/BUILD.cmake b/src/tint/cmd/fuzz/ir/BUILD.cmake
index 884e3ef..b65af42 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.cmake
+++ b/src/tint/cmd/fuzz/ir/BUILD.cmake
@@ -58,7 +58,6 @@
tint_lang_hlsl_writer_raise_fuzz
tint_lang_wgsl_program_fuzz
tint_lang_wgsl_writer_raise_fuzz
- tint_lang_wgsl_fuzz
tint_utils
tint_utils_bytes
tint_utils_command
diff --git a/src/tint/cmd/fuzz/ir/BUILD.gn b/src/tint/cmd/fuzz/ir/BUILD.gn
index 6b3bf00..d146d64 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.gn
+++ b/src/tint/cmd/fuzz/ir/BUILD.gn
@@ -94,7 +94,6 @@
"${tint_src_dir}/lang/core/ir/transform:fuzz",
"${tint_src_dir}/lang/core/type",
"${tint_src_dir}/lang/hlsl/writer/raise:fuzz",
- "${tint_src_dir}/lang/wgsl:fuzz",
"${tint_src_dir}/lang/wgsl/program:fuzz",
"${tint_src_dir}/lang/wgsl/writer/raise:fuzz",
"${tint_src_dir}/utils",
diff --git a/src/tint/cmd/fuzz/wgsl/BUILD.cmake b/src/tint/cmd/fuzz/wgsl/BUILD.cmake
index a0610818..ce67d7c 100644
--- a/src/tint/cmd/fuzz/wgsl/BUILD.cmake
+++ b/src/tint/cmd/fuzz/wgsl/BUILD.cmake
@@ -57,7 +57,6 @@
tint_lang_wgsl_program_fuzz
tint_lang_wgsl_sem
tint_lang_wgsl_writer_raise_fuzz
- tint_lang_wgsl_fuzz
tint_utils
tint_utils_bytes
tint_utils_command
diff --git a/src/tint/cmd/fuzz/wgsl/BUILD.gn b/src/tint/cmd/fuzz/wgsl/BUILD.gn
index 47659c5..0ded214 100644
--- a/src/tint/cmd/fuzz/wgsl/BUILD.gn
+++ b/src/tint/cmd/fuzz/wgsl/BUILD.gn
@@ -94,7 +94,6 @@
"${tint_src_dir}/lang/core/type",
"${tint_src_dir}/lang/hlsl/writer/raise:fuzz",
"${tint_src_dir}/lang/wgsl",
- "${tint_src_dir}/lang/wgsl:fuzz",
"${tint_src_dir}/lang/wgsl/ast",
"${tint_src_dir}/lang/wgsl/program",
"${tint_src_dir}/lang/wgsl/program:fuzz",
diff --git a/src/tint/lang/wgsl/BUILD.cmake b/src/tint/lang/wgsl/BUILD.cmake
index 74282ad..547bf0d 100644
--- a/src/tint/lang/wgsl/BUILD.cmake
+++ b/src/tint/lang/wgsl/BUILD.cmake
@@ -169,64 +169,3 @@
"google-benchmark"
"src_utils"
)
-
-################################################################################
-# Target: tint_lang_wgsl_fuzz
-# Kind: fuzz
-################################################################################
-tint_add_target(tint_lang_wgsl_fuzz fuzz
-)
-
-tint_target_add_dependencies(tint_lang_wgsl_fuzz fuzz
- tint_api_common
- tint_lang_core
- tint_lang_core_constant
- tint_lang_core_ir
- tint_lang_core_type
- tint_lang_wgsl
- tint_lang_wgsl_ast
- tint_lang_wgsl_ast_transform
- tint_lang_wgsl_common
- tint_lang_wgsl_features
- tint_lang_wgsl_helpers
- tint_lang_wgsl_program
- tint_lang_wgsl_sem
- tint_lang_wgsl_writer_ir_to_program
- tint_lang_wgsl_writer_raise
- tint_utils
- tint_utils_bytes
- tint_utils_command
- tint_utils_containers
- tint_utils_diagnostic
- tint_utils_ice
- tint_utils_macros
- tint_utils_math
- tint_utils_memory
- tint_utils_rtti
- tint_utils_symbol
- tint_utils_text
-)
-
-tint_target_add_external_dependencies(tint_lang_wgsl_fuzz fuzz
- "src_utils"
-)
-
-if(TINT_BUILD_WGSL_READER)
- tint_target_add_dependencies(tint_lang_wgsl_fuzz fuzz
- tint_cmd_fuzz_wgsl_fuzz
- tint_lang_wgsl_reader
- tint_lang_wgsl_reader_program_to_ir
- )
-endif(TINT_BUILD_WGSL_READER)
-
-if(TINT_BUILD_WGSL_READER AND TINT_BUILD_WGSL_WRITER)
- tint_target_add_sources(tint_lang_wgsl_fuzz fuzz
- "lang/wgsl/ir_roundtrip_fuzz.cc"
- )
-endif(TINT_BUILD_WGSL_READER AND TINT_BUILD_WGSL_WRITER)
-
-if(TINT_BUILD_WGSL_WRITER)
- tint_target_add_dependencies(tint_lang_wgsl_fuzz fuzz
- tint_lang_wgsl_writer
- )
-endif(TINT_BUILD_WGSL_WRITER)
diff --git a/src/tint/lang/wgsl/BUILD.gn b/src/tint/lang/wgsl/BUILD.gn
index 61352b3..6952aa7 100644
--- a/src/tint/lang/wgsl/BUILD.gn
+++ b/src/tint/lang/wgsl/BUILD.gn
@@ -144,53 +144,3 @@
]
}
}
-
-tint_fuzz_source_set("fuzz") {
- sources = []
- deps = [
- "${dawn_root}/src/utils:utils",
- "${tint_src_dir}/api/common",
- "${tint_src_dir}/lang/core",
- "${tint_src_dir}/lang/core/constant",
- "${tint_src_dir}/lang/core/ir",
- "${tint_src_dir}/lang/core/type",
- "${tint_src_dir}/lang/wgsl",
- "${tint_src_dir}/lang/wgsl/ast",
- "${tint_src_dir}/lang/wgsl/ast/transform",
- "${tint_src_dir}/lang/wgsl/common",
- "${tint_src_dir}/lang/wgsl/features",
- "${tint_src_dir}/lang/wgsl/helpers",
- "${tint_src_dir}/lang/wgsl/program",
- "${tint_src_dir}/lang/wgsl/sem",
- "${tint_src_dir}/lang/wgsl/writer/ir_to_program",
- "${tint_src_dir}/lang/wgsl/writer/raise",
- "${tint_src_dir}/utils",
- "${tint_src_dir}/utils/bytes",
- "${tint_src_dir}/utils/command",
- "${tint_src_dir}/utils/containers",
- "${tint_src_dir}/utils/diagnostic",
- "${tint_src_dir}/utils/ice",
- "${tint_src_dir}/utils/macros",
- "${tint_src_dir}/utils/math",
- "${tint_src_dir}/utils/memory",
- "${tint_src_dir}/utils/rtti",
- "${tint_src_dir}/utils/symbol",
- "${tint_src_dir}/utils/text",
- ]
-
- if (tint_build_wgsl_reader) {
- deps += [
- "${tint_src_dir}/cmd/fuzz/wgsl:fuzz",
- "${tint_src_dir}/lang/wgsl/reader",
- "${tint_src_dir}/lang/wgsl/reader/program_to_ir",
- ]
- }
-
- if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
- sources += [ "ir_roundtrip_fuzz.cc" ]
- }
-
- if (tint_build_wgsl_writer) {
- deps += [ "${tint_src_dir}/lang/wgsl/writer" ]
- }
-}
diff --git a/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc b/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc
deleted file mode 100644
index cd4ac4e..0000000
--- a/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2023 The Dawn & Tint Authors
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// 3. Neither the name of the copyright holder nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// GEN_BUILD:CONDITION(tint_build_wgsl_reader && tint_build_wgsl_writer)
-
-#include <iostream>
-
-#include "src/tint/cmd/fuzz/wgsl/fuzz.h"
-#include "src/tint/lang/core/ir/disassembler.h"
-#include "src/tint/lang/core/ir/validator.h"
-#include "src/tint/lang/wgsl/ast/module.h"
-#include "src/tint/lang/wgsl/ast/transform/renamer.h"
-#include "src/tint/lang/wgsl/helpers/apply_substitute_overrides.h"
-#include "src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.h"
-#include "src/tint/lang/wgsl/reader/reader.h"
-#include "src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.h"
-#include "src/tint/lang/wgsl/writer/raise/raise.h"
-#include "src/tint/lang/wgsl/writer/writer.h"
-#include "src/tint/utils/command/command.h"
-#include "src/tint/utils/text/string.h"
-
-namespace tint::wgsl {
-
-bool CanRun(core::ir::Module& ir) {
- // IRToProgram cannot handle constants whose types are builtin structures, since it would have
- // to reverse-engineer the builtin function call that would produce the right output.
- for (auto* c : ir.constant_values) {
- if (auto* str = c->Type()->As<core::type::Struct>()) {
- if (str->IsWgslInternal()) {
- return false;
- }
- }
- }
- return true;
-}
-
-void IRRoundtripFuzzer(const tint::Program& program, const fuzz::wgsl::Context& context) {
- if (program.AST().Enables().Any(tint::wgsl::reader::IsUnsupportedByIR)) {
- return;
- }
- auto transformed = tint::wgsl::ApplySubstituteOverrides(program);
- auto& src = transformed ? transformed.value() : program;
- if (!src.IsValid()) {
- return;
- }
- auto ir = tint::wgsl::reader::ProgramToLoweredIR(src);
- if (ir != Success) {
- return;
- }
- if (auto val = core::ir::Validate(ir.Get()); val != Success) {
- TINT_ICE() << val.Failure();
- }
-
- if (!CanRun(ir.Get())) {
- return;
- }
-
- if (auto res = tint::wgsl::writer::Raise(ir.Get()); res != Success) {
- TINT_ICE() << res.Failure();
- }
-
- writer::ProgramOptions program_options;
- program_options.allowed_features = AllowedFeatures::Everything();
- auto dst = tint::wgsl::writer::IRToProgram(ir.Get(), program_options);
- if (!dst.IsValid()) {
- std::cerr << "IR:\n" << core::ir::Disassembler(ir.Get()).Plain() << "\n";
- if (auto result = tint::wgsl::writer::Generate(dst, {}); result == Success) {
- std::cerr << "WGSL:\n" << result->wgsl << "\n\n";
- }
- TINT_ICE() << dst.Diagnostics();
- }
-
- return;
-}
-
-} // namespace tint::wgsl
-
-TINT_WGSL_PROGRAM_FUZZER(tint::wgsl::IRRoundtripFuzzer);