From f938154a44ae4dd2733537c5683ebe2eeb1989a2 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Fri, 26 Jul 2024 15:50:58 -0400 Subject: [wasm-reduce] Do not crash on non-func element segments (#6778) Generalize the code for simplifying element segments to handle more than just null and funcref elements. --- src/tools/wasm-reduce.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/tools/wasm-reduce.cpp b/src/tools/wasm-reduce.cpp index ac5b7722b..c276296ad 100644 --- a/src/tools/wasm-reduce.cpp +++ b/src/tools/wasm-reduce.cpp @@ -854,18 +854,13 @@ struct Reducer reduceByZeroing( segment.get(), first, - [&](Expression* entry) { - if (entry->is()) { - // we don't need to replace a ref.null + [&](Expression* elem) { + if (elem->is()) { + // We don't need to replace a ref.null. return true; - } else if (first->is()) { - return false; - } else { - // Both are ref.func - auto* f = first->cast(); - auto* e = entry->cast(); - return f->func == e->func; } + // Is the element equal to our first "zero" element? + return ExpressionAnalyzer::equal(first, elem); }, 1, shrank); -- cgit v1.2.3