gccrs: Add fatal_error when experimental flag is not present
This commits ports over the flag/env variable checking from #1540 which only allows compilation using gccrs if a certain flag is specified gcc/rust/ * lang.opt (-frust-incomplete-and-experimental-compiler-do-not-use): New. * rust-session-manager.cc (Session::compile_crate): Check it. * Make-lang.in (RUST_SELFTEST_FLAGS): Add it. gcc/testsuite/ * lib/rust.exp (rust_init): Add '-frust-incomplete-and-experimental-compiler-do-not-use'.
This commit is contained in:
parent
88415d33bb
commit
b07ef39ffb
4 changed files with 29 additions and 1 deletions
|
@ -267,7 +267,7 @@ rust.uninstall:
|
|||
# Enable selftests for the rust frontend
|
||||
selftest-rust: s-selftest-rust
|
||||
|
||||
RUST_SELFTEST_FLAGS = -xrust $(SELFTEST_FLAGS)
|
||||
RUST_SELFTEST_FLAGS = -xrust -frust-incomplete-and-experimental-compiler-do-not-use $(SELFTEST_FLAGS)
|
||||
RUST_SELFTEST_DEPS = rust1$(exeext) $(SELFTEST_DEPS)
|
||||
|
||||
# Run the rust selftests
|
||||
|
|
|
@ -66,6 +66,10 @@ frust-dump-
|
|||
Rust Joined RejectNegative
|
||||
-frust-dump-<type> Dump Rust frontend internal information.
|
||||
|
||||
frust-incomplete-and-experimental-compiler-do-not-use
|
||||
Rust Var(flag_rust_experimental)
|
||||
Enable experimental compilation of Rust files at your own risk
|
||||
|
||||
frust-max-recursion-depth=
|
||||
Rust RejectNegative Type(int) Var(rust_max_recursion_depth) Init(64)
|
||||
-frust-max-recursion-depth=integer
|
||||
|
|
|
@ -417,6 +417,28 @@ Session::handle_crate_name (const AST::Crate &parsed_crate)
|
|||
void
|
||||
Session::compile_crate (const char *filename)
|
||||
{
|
||||
if (!flag_rust_experimental
|
||||
&& !std::getenv ("GCCRS_INCOMPLETE_AND_EXPERIMENTAL_COMPILER_DO_NOT_USE"))
|
||||
rust_fatal_error (
|
||||
Location (), "%s",
|
||||
"gccrs is not yet able to compile Rust code "
|
||||
"properly. Most of the errors produced will be gccrs' fault and not the "
|
||||
"crate you are trying to compile. Because of this, please reports issues "
|
||||
"to us directly instead of opening issues on said crate's "
|
||||
"repository.\n\nOur github repository: "
|
||||
"https://github.com/rust-gcc/gccrs\nOur bugzilla tracker: "
|
||||
"https://gcc.gnu.org/bugzilla/"
|
||||
"buglist.cgi?bug_status=__open__&component=rust&product=gcc\n\n"
|
||||
"If you understand this, and understand that the binaries produced might "
|
||||
"not behave accordingly, you may attempt to use gccrs in an experimental "
|
||||
"manner by passing the following flag:\n\n"
|
||||
"`-frust-incomplete-and-experimental-compiler-do-not-use`\n\nor by "
|
||||
"defining the following environment variable (any value will "
|
||||
"do)\n\nGCCRS_INCOMPLETE_AND_EXPERIMENTAL_COMPILER_DO_NOT_USE\n\nFor"
|
||||
"cargo-gccrs, this means passing\n\n"
|
||||
"GCCRS_EXTRA_FLAGS=\"-frust-incomplete-and-experimental-compiler-do-not-"
|
||||
"use\"\n\nas an environment variable.");
|
||||
|
||||
RAIIFile file_wrap (filename);
|
||||
if (!file_wrap.ok ())
|
||||
{
|
||||
|
|
|
@ -149,6 +149,8 @@ proc rust_init { args } {
|
|||
lappend ALWAYS_RUSTFLAGS "additional_flags=$TOOL_OPTIONS"
|
||||
}
|
||||
|
||||
lappend ALWAYS_RUSTFLAGS "additional_flags=-frust-incomplete-and-experimental-compiler-do-not-use"
|
||||
|
||||
verbose -log "ALWAYS_RUSTFLAGS set to $ALWAYS_RUSTFLAGS"
|
||||
|
||||
set gcc_warning_prefix "warning:"
|
||||
|
|
Loading…
Add table
Reference in a new issue