From 6e38df3aeb35a7cf3636d9fd9d90d8eb6a3c7c36 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Thu, 20 Jun 2024 13:03:36 -0700 Subject: [PATCH] [WebAssembly] Re-enable reference types by default (#93261) Now that we are about to upgrade emsdk's default node to v18.20.3 (https://github.com/emscripten-core/emsdk/pull/1387), we can re-enable reference-types by default again. This effectively reverts #90792. --- clang/docs/ReleaseNotes.rst | 8 ++++---- clang/lib/Basic/Targets/WebAssembly.cpp | 2 +- clang/test/Preprocessor/wasm-target-features.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 92ada517acae33..0973db2ead66c5 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -1035,10 +1035,10 @@ AIX Support WebAssembly Support ^^^^^^^^^^^^^^^^^^^ -The -mcpu=generic configuration now enables multivalue feature, which is -standardized and available in all major engines. Enabling multivalue here only -enables the language feature but does not turn on the multivalue ABI (this -enables non-ABI uses of multivalue, like exnref). +The -mcpu=generic configuration now enables multivalue and reference-types. +These proposals are standardized and available in all major engines. Enabling +multivalue here only enables the language feature but does not turn on the +multivalue ABI (this enables non-ABI uses of multivalue, like exnref). AVR Support ^^^^^^^^^^^ diff --git a/clang/lib/Basic/Targets/WebAssembly.cpp b/clang/lib/Basic/Targets/WebAssembly.cpp index 5a000314a72cee..1e565f0a5319f2 100644 --- a/clang/lib/Basic/Targets/WebAssembly.cpp +++ b/clang/lib/Basic/Targets/WebAssembly.cpp @@ -153,6 +153,7 @@ bool WebAssemblyTargetInfo::initFeatureMap( auto addGenericFeatures = [&]() { Features["multivalue"] = true; Features["mutable-globals"] = true; + Features["reference-types"] = true; Features["sign-ext"] = true; }; auto addBleedingEdgeFeatures = [&]() { @@ -164,7 +165,6 @@ bool WebAssemblyTargetInfo::initFeatureMap( Features["half-precision"] = true; Features["multimemory"] = true; Features["nontrapping-fptoint"] = true; - Features["reference-types"] = true; Features["tail-call"] = true; setSIMDLevel(Features, RelaxedSIMD, true); }; diff --git a/clang/test/Preprocessor/wasm-target-features.c b/clang/test/Preprocessor/wasm-target-features.c index 9d49e3af603f82..d5539163b3bf5a 100644 --- a/clang/test/Preprocessor/wasm-target-features.c +++ b/clang/test/Preprocessor/wasm-target-features.c @@ -164,6 +164,7 @@ // // GENERIC-INCLUDE-DAG: #define __wasm_multivalue__ 1{{$}} // GENERIC-INCLUDE-DAG: #define __wasm_mutable_globals__ 1{{$}} +// GENERIC-INCLUDE-DAG: #define __wasm_reference_types__ 1{{$}} // GENERIC-INCLUDE-DAG: #define __wasm_sign_ext__ 1{{$}} // // RUN: %clang -E -dM %s -o - 2>&1 \ @@ -180,7 +181,6 @@ // GENERIC-NOT: #define __wasm_half_precision__ 1{{$}} // GENERIC-NOT: #define __wasm_multimemory__ 1{{$}} // GENERIC-NOT: #define __wasm_nontrapping_fptoint__ 1{{$}} -// GENERIC-NOT: #define __wasm_reference_types__ 1{{$}} // GENERIC-NOT: #define __wasm_relaxed_simd__ 1{{$}} // GENERIC-NOT: #define __wasm_simd128__ 1{{$}} // GENERIC-NOT: #define __wasm_tail_call__ 1{{$}}