forked from OSchip/llvm-project
[WebAssembly] -fwasm-exceptions enables reference-types
Summary: This adds `-mreference-types` and `-mno-reference-types` flags to clang and make `-fwasm-exceptions` enables reference types feature in clang and the backend. Reviewers: tlively Subscribers: dschuff, sbc100, jgravelle-google, sunfish, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D69832
This commit is contained in:
parent
3306fe10fa
commit
70ee430c6e
|
@ -2322,6 +2322,8 @@ def mmultivalue : Flag<["-"], "mmultivalue">, Group<m_wasm_Features_Group>;
|
|||
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]>,
|
||||
|
|
|
@ -181,6 +181,12 @@ void WebAssembly::addClangTargetOptions(const ArgList &DriverArgs,
|
|||
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 @@ void WebAssembly::addClangTargetOptions(const ArgList &DriverArgs,
|
|||
<< "-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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 \
|
||||
|
|
Loading…
Reference in New Issue