aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2023-08-02 15:51:38 -0400
committerPhilip Herron <philip.herron@embecosm.com>2023-08-09 09:23:34 +0000
commit0d678b209df6a6ad6456ced2bd8c9aa0fa547b5f (patch)
tree2731145383f411fde8244ec0b31934d2a29df688
parent09e23335a289de79b8e202b0afdf32caee53dcdb (diff)
downloadgcc-0d678b209df6a6ad6456ced2bd8c9aa0fa547b5f.zip
gcc-0d678b209df6a6ad6456ced2bd8c9aa0fa547b5f.tar.gz
gcc-0d678b209df6a6ad6456ced2bd8c9aa0fa547b5f.tar.bz2
Move Backend::error_variable to Bvariable::error_variable
gcc/rust/ChangeLog: * rust-backend.h (Backend::error_variable): Remove. (Gcc_backend::error_variable): Move to ... * rust-gcc.cc (Bvariable::error_variable): ... here ... * rust-gcc.h (Bvariable::error_variable): ... and declare here. (Gcc_backend::global_variable): Update error_variable call. (Gcc_backend::local_variable): Likewise. (Gcc_backend::parameter_variable): Likewise. (Gcc_backend::static_chain_variable): Likewise. (Gcc_backend::temporary_variable): Likewise. * backend/rust-compile-extern.h (CompileExternItem::visit): Likewise. * backend/rust-compile-fnparam.cc (CompileFnParam::CompileFnParam): Likewise. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r--gcc/rust/backend/rust-compile-extern.h2
-rw-r--r--gcc/rust/backend/rust-compile-fnparam.cc2
-rw-r--r--gcc/rust/rust-backend.h7
-rw-r--r--gcc/rust/rust-gcc.cc16
-rw-r--r--gcc/rust/rust-gcc.h5
5 files changed, 18 insertions, 14 deletions
diff --git a/gcc/rust/backend/rust-compile-extern.h b/gcc/rust/backend/rust-compile-extern.h
index 54bd410..582cceb 100644
--- a/gcc/rust/backend/rust-compile-extern.h
+++ b/gcc/rust/backend/rust-compile-extern.h
@@ -48,7 +48,7 @@ public:
void visit (HIR::ExternalStaticItem &item) override
{
// check if its already been compiled
- Bvariable *lookup = ctx->get_backend ()->error_variable ();
+ Bvariable *lookup = Bvariable::error_variable ();
if (ctx->lookup_var_decl (item.get_mappings ().get_hirid (), &lookup))
{
reference = ctx->get_backend ()->var_expression (lookup, ref_locus);
diff --git a/gcc/rust/backend/rust-compile-fnparam.cc b/gcc/rust/backend/rust-compile-fnparam.cc
index 48f317f..de0096c 100644
--- a/gcc/rust/backend/rust-compile-fnparam.cc
+++ b/gcc/rust/backend/rust-compile-fnparam.cc
@@ -27,7 +27,7 @@ namespace Compile {
CompileFnParam::CompileFnParam (Context *ctx, tree fndecl, tree decl_type,
location_t locus)
: HIRCompileBase (ctx), fndecl (fndecl), decl_type (decl_type), locus (locus),
- compiled_param (ctx->get_backend ()->error_variable ())
+ compiled_param (Bvariable::error_variable ())
{}
Bvariable *
diff --git a/gcc/rust/rust-backend.h b/gcc/rust/rust-backend.h
index 1b35199..621c9fb 100644
--- a/gcc/rust/rust-backend.h
+++ b/gcc/rust/rust-backend.h
@@ -346,11 +346,6 @@ public:
// Variables.
- // Create an error variable. This is used for cases which should
- // not occur in a correct program, in order to keep the compilation
- // going without crashing.
- virtual Bvariable *error_variable () = 0;
-
// Create a global variable. NAME is the package-qualified name of
// the variable. ASM_NAME is the encoded identifier for the
// variable, incorporating the package, and made safe for the
@@ -655,8 +650,6 @@ public:
// Variables.
- Bvariable *error_variable () { return new Bvariable (error_mark_node); }
-
Bvariable *global_variable (const std::string &var_name,
const std::string &asm_name, tree type,
bool is_external, bool is_hidden,
diff --git a/gcc/rust/rust-gcc.cc b/gcc/rust/rust-gcc.cc
index 42fbe8e..37cbef4 100644
--- a/gcc/rust/rust-gcc.cc
+++ b/gcc/rust/rust-gcc.cc
@@ -77,6 +77,12 @@ Bvariable::get_tree (location_t location) const
return build_fold_indirect_ref_loc (location, t);
}
+Bvariable *
+Bvariable::error_variable ()
+{
+ return new Bvariable (error_mark_node);
+}
+
// This file implements the interface between the Rust frontend proper
// and the gcc IR. This implements specific instantiations of
// abstract classes defined by the Rust frontend proper. The Rust
@@ -2048,7 +2054,7 @@ Gcc_backend::global_variable (const std::string &var_name,
bool in_unique_section, location_t location)
{
if (type_tree == error_mark_node)
- return this->error_variable ();
+ return Bvariable::error_variable ();
// The GNU linker does not like dynamic variables with zero size.
tree orig_type_tree = type_tree;
@@ -2113,7 +2119,7 @@ Gcc_backend::local_variable (tree function, const std::string &name,
location_t location)
{
if (type_tree == error_mark_node)
- return this->error_variable ();
+ return Bvariable::error_variable ();
tree decl = build_decl (location, VAR_DECL, get_identifier_from_string (name),
type_tree);
DECL_CONTEXT (decl) = function;
@@ -2134,7 +2140,7 @@ Gcc_backend::parameter_variable (tree function, const std::string &name,
tree type_tree, location_t location)
{
if (type_tree == error_mark_node)
- return this->error_variable ();
+ return Bvariable::error_variable ();
tree decl = build_decl (location, PARM_DECL,
get_identifier_from_string (name), type_tree);
DECL_CONTEXT (decl) = function;
@@ -2151,7 +2157,7 @@ Gcc_backend::static_chain_variable (tree fndecl, const std::string &name,
tree type_tree, location_t location)
{
if (type_tree == error_mark_node)
- return this->error_variable ();
+ return Bvariable::error_variable ();
tree decl = build_decl (location, PARM_DECL,
get_identifier_from_string (name), type_tree);
DECL_CONTEXT (decl) = fndecl;
@@ -2188,7 +2194,7 @@ Gcc_backend::temporary_variable (tree fndecl, tree bind_tree, tree type_tree,
|| fndecl == error_mark_node)
{
*pstatement = error_mark_node;
- return this->error_variable ();
+ return Bvariable::error_variable ();
}
tree var;
diff --git a/gcc/rust/rust-gcc.h b/gcc/rust/rust-gcc.h
index 9799ad2..131ec40 100644
--- a/gcc/rust/rust-gcc.h
+++ b/gcc/rust/rust-gcc.h
@@ -49,6 +49,11 @@ public:
// Get the actual decl;
tree get_decl () const { return this->t_; }
+ // Create an error variable. This is used for cases which should
+ // not occur in a correct program, in order to keep the compilation
+ // going without crashing.
+ static Bvariable *error_variable ();
+
private:
tree t_;
tree orig_type_;