gccrs: 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>
This commit is contained in:
parent
79b52e6956
commit
77fbe55f8e
5 changed files with 18 additions and 14 deletions
|
@ -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);
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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_;
|
||||
|
|
Loading…
Add table
Reference in a new issue