This revision was automatically updated to reflect the committed changes. Closed by commit rG70ee430c6e45: [WebAssembly] -fwasm-exceptions enables reference-types (authored by aheejin).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69832/new/ https://reviews.llvm.org/D69832 Files: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/WebAssembly.cpp clang/test/Driver/wasm-toolchain.c Index: clang/test/Driver/wasm-toolchain.c =================================================================== --- clang/test/Driver/wasm-toolchain.c +++ clang/test/Driver/wasm-toolchain.c @@ -79,11 +79,11 @@ // RUN: | FileCheck -check-prefix=PTHREAD_NO_SIGN_EXT %s // PTHREAD_NO_SIGN_EXT: invalid argument '-pthread' not allowed with '-mno-sign-ext' -// '-fwasm-exceptions' sets +exception-handling +// '-fwasm-exceptions' sets +exception-handling and +reference-types // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ // RUN: --sysroot=/foo %s -fwasm-exceptions 2>&1 \ // RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS %s -// WASM_EXCEPTIONS: clang{{.*}}" "-cc1" {{.*}} "-target-feature" "+exception-handling" +// WASM_EXCEPTIONS: clang{{.*}}" "-cc1" {{.*}} "-target-feature" "+exception-handling" "-target-feature" "+reference-types" // '-fwasm-exceptions' not allowed with '-mno-exception-handling' // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ @@ -91,6 +91,12 @@ // RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS_NO_EH %s // WASM_EXCEPTIONS_NO_EH: invalid argument '-fwasm-exceptions' not allowed with '-mno-exception-handling' +// '-fwasm-exceptions' not allowed with '-mno-reference-types' +// RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ +// RUN: --sysroot=/foo %s -fwasm-exceptions -mno-reference-types 2>&1 \ +// RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS_NO_REFTYPES %s +// WASM_EXCEPTIONS_NO_REFTYPES: invalid argument '-fwasm-exceptions' not allowed with '-mno-reference-types' + // '-fwasm-exceptions' not allowed with // '-mllvm -enable-emscripten-cxx-exceptions' // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ Index: clang/lib/Driver/ToolChains/WebAssembly.cpp =================================================================== --- clang/lib/Driver/ToolChains/WebAssembly.cpp +++ clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -181,6 +181,12 @@ getDriver().Diag(diag::err_drv_argument_not_allowed_with) << "-fwasm-exceptions" << "-mno-exception-handling"; + // '-fwasm-exceptions' is not compatible with '-mno-reference-types' + if (DriverArgs.hasFlag(options::OPT_mno_reference_types, + options::OPT_mexception_handing, false)) + getDriver().Diag(diag::err_drv_argument_not_allowed_with) + << "-fwasm-exceptions" + << "-mno-reference-types"; // '-fwasm-exceptions' is not compatible with // '-mllvm -enable-emscripten-cxx-exceptions' for (const Arg *A : DriverArgs.filtered(options::OPT_mllvm)) { @@ -189,9 +195,11 @@ << "-fwasm-exceptions" << "-mllvm -enable-emscripten-cxx-exceptions"; } - // '-fwasm-exceptions' implies exception-handling + // '-fwasm-exceptions' implies exception-handling and reference-types CC1Args.push_back("-target-feature"); CC1Args.push_back("+exception-handling"); + CC1Args.push_back("-target-feature"); + CC1Args.push_back("+reference-types"); } } Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -2322,6 +2322,8 @@ def mno_multivalue : Flag<["-"], "mno-multivalue">, Group<m_wasm_Features_Group>; def mtail_call : Flag<["-"], "mtail-call">, Group<m_wasm_Features_Group>; def mno_tail_call : Flag<["-"], "mno-tail-call">, Group<m_wasm_Features_Group>; +def mreference_types : Flag<["-"], "mreference-types">, Group<m_wasm_Features_Group>; +def mno_reference_types : Flag<["-"], "mno-reference-types">, Group<m_wasm_Features_Group>; def mamdgpu_debugger_abi : Joined<["-"], "mamdgpu-debugger-abi=">, Flags<[HelpHidden]>,
Index: clang/test/Driver/wasm-toolchain.c =================================================================== --- clang/test/Driver/wasm-toolchain.c +++ clang/test/Driver/wasm-toolchain.c @@ -79,11 +79,11 @@ // RUN: | FileCheck -check-prefix=PTHREAD_NO_SIGN_EXT %s // PTHREAD_NO_SIGN_EXT: invalid argument '-pthread' not allowed with '-mno-sign-ext' -// '-fwasm-exceptions' sets +exception-handling +// '-fwasm-exceptions' sets +exception-handling and +reference-types // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ // RUN: --sysroot=/foo %s -fwasm-exceptions 2>&1 \ // RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS %s -// WASM_EXCEPTIONS: clang{{.*}}" "-cc1" {{.*}} "-target-feature" "+exception-handling" +// WASM_EXCEPTIONS: clang{{.*}}" "-cc1" {{.*}} "-target-feature" "+exception-handling" "-target-feature" "+reference-types" // '-fwasm-exceptions' not allowed with '-mno-exception-handling' // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ @@ -91,6 +91,12 @@ // RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS_NO_EH %s // WASM_EXCEPTIONS_NO_EH: invalid argument '-fwasm-exceptions' not allowed with '-mno-exception-handling' +// '-fwasm-exceptions' not allowed with '-mno-reference-types' +// RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ +// RUN: --sysroot=/foo %s -fwasm-exceptions -mno-reference-types 2>&1 \ +// RUN: | FileCheck -check-prefix=WASM_EXCEPTIONS_NO_REFTYPES %s +// WASM_EXCEPTIONS_NO_REFTYPES: invalid argument '-fwasm-exceptions' not allowed with '-mno-reference-types' + // '-fwasm-exceptions' not allowed with // '-mllvm -enable-emscripten-cxx-exceptions' // RUN: %clang -### -no-canonical-prefixes -target wasm32-unknown-unknown \ Index: clang/lib/Driver/ToolChains/WebAssembly.cpp =================================================================== --- clang/lib/Driver/ToolChains/WebAssembly.cpp +++ clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -181,6 +181,12 @@ getDriver().Diag(diag::err_drv_argument_not_allowed_with) << "-fwasm-exceptions" << "-mno-exception-handling"; + // '-fwasm-exceptions' is not compatible with '-mno-reference-types' + if (DriverArgs.hasFlag(options::OPT_mno_reference_types, + options::OPT_mexception_handing, false)) + getDriver().Diag(diag::err_drv_argument_not_allowed_with) + << "-fwasm-exceptions" + << "-mno-reference-types"; // '-fwasm-exceptions' is not compatible with // '-mllvm -enable-emscripten-cxx-exceptions' for (const Arg *A : DriverArgs.filtered(options::OPT_mllvm)) { @@ -189,9 +195,11 @@ << "-fwasm-exceptions" << "-mllvm -enable-emscripten-cxx-exceptions"; } - // '-fwasm-exceptions' implies exception-handling + // '-fwasm-exceptions' implies exception-handling and reference-types CC1Args.push_back("-target-feature"); CC1Args.push_back("+exception-handling"); + CC1Args.push_back("-target-feature"); + CC1Args.push_back("+reference-types"); } } Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -2322,6 +2322,8 @@ def mno_multivalue : Flag<["-"], "mno-multivalue">, Group<m_wasm_Features_Group>; def mtail_call : Flag<["-"], "mtail-call">, Group<m_wasm_Features_Group>; def mno_tail_call : Flag<["-"], "mno-tail-call">, Group<m_wasm_Features_Group>; +def mreference_types : Flag<["-"], "mreference-types">, Group<m_wasm_Features_Group>; +def mno_reference_types : Flag<["-"], "mno-reference-types">, Group<m_wasm_Features_Group>; def mamdgpu_debugger_abi : Joined<["-"], "mamdgpu-debugger-abi=">, Flags<[HelpHidden]>,
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits