diff options
author | Chris Manghane <cmang@google.com> | 2014-05-06 19:28:03 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-05-06 19:28:03 +0000 |
commit | 6f7e0b570ab9ab1c6bbc2cb598284e2e5202e027 (patch) | |
tree | d260b1bb70995d642f35a870ceae7f566c5f052a /gcc/go/go-gcc.cc | |
parent | 3379b71f51c36c499ca5ce4ec877bd70b96a580e (diff) | |
download | gcc-6f7e0b570ab9ab1c6bbc2cb598284e2e5202e027.zip gcc-6f7e0b570ab9ab1c6bbc2cb598284e2e5202e027.tar.gz gcc-6f7e0b570ab9ab1c6bbc2cb598284e2e5202e027.tar.bz2 |
compiler: Use backend interface for expressions.
* go-gcc.cc (Gcc_backend::nil_pointer_expression): New method.
(Gcc_backend::boolean_constant_expression): New method.
(Gcc_backend::zero_expression): Use this->make_expression rather
than tree_to_expr.
(Gcc_backend::var_expression): Likewise.
(Gcc_backend::integer_constant_expression): Likewise.
(Gcc_backend::float_constant_expression): Likewise.
(Gcc_backend::complex_constant_expression): Likewise.
(Gcc_backend::struct_field_expression): Likewise.
(tree_to_type, tree_to_expr, tree_to_stat): Remove functions.
(tree_to_function, tree_to_block): Remove functions.
(type_to_tree, expr_to_tree, stat_to_tree): Remove functions.
(block_to_tree, var_to_tree, function_to_tree): Remove functions.
From-SVN: r210122
Diffstat (limited to 'gcc/go/go-gcc.cc')
-rw-r--r-- | gcc/go/go-gcc.cc | 98 |
1 files changed, 22 insertions, 76 deletions
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index f4c242f..fc100e2 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -226,6 +226,10 @@ class Gcc_backend : public Backend { return this->make_expression(error_mark_node); } Bexpression* + nil_pointer_expression() + { return this->make_expression(null_pointer_node); } + + Bexpression* var_expression(Bvariable* var, Location); Bexpression* @@ -248,6 +252,9 @@ class Gcc_backend : public Backend string_constant_expression(const std::string& val); Bexpression* + boolean_constant_expression(bool val); + + Bexpression* real_part_expression(Bexpression* bcomplex, Location); Bexpression* @@ -1129,7 +1136,7 @@ Gcc_backend::zero_expression(Btype* btype) ret = error_mark_node; else ret = build_zero_cst(t); - return tree_to_expr(ret); + return this->make_expression(ret); } // An expression that references a variable. @@ -1140,7 +1147,7 @@ Gcc_backend::var_expression(Bvariable* var, Location) tree ret = var->get_tree(); if (ret == error_mark_node) return this->error_expression(); - return tree_to_expr(ret); + return this->make_expression(ret); } // An expression that indirectly references an expression. @@ -1201,7 +1208,7 @@ Gcc_backend::integer_constant_expression(Btype* btype, mpz_t val) return this->error_expression(); tree ret = double_int_to_tree(t, mpz_get_double_int(t, val, true)); - return tree_to_expr(ret); + return this->make_expression(ret); } // Return a typed value as a constant floating-point number. @@ -1219,7 +1226,7 @@ Gcc_backend::float_constant_expression(Btype* btype, mpfr_t val) REAL_VALUE_TYPE r2; real_convert(&r2, TYPE_MODE(t), &r1); ret = build_real(t, r2); - return tree_to_expr(ret); + return this->make_expression(ret); } // Return a typed real and imaginary value as a constant complex number. @@ -1244,7 +1251,7 @@ Gcc_backend::complex_constant_expression(Btype* btype, mpfr_t real, mpfr_t imag) ret = build_complex(t, build_real(TREE_TYPE(t), r2), build_real(TREE_TYPE(t), r4)); - return tree_to_expr(ret); + return this->make_expression(ret); } // Make a constant string expression. @@ -1264,6 +1271,15 @@ Gcc_backend::string_constant_expression(const std::string& val) return this->make_expression(string_val); } +// Make a constant boolean expression. + +Bexpression* +Gcc_backend::boolean_constant_expression(bool val) +{ + tree bool_cst = val ? boolean_true_node : boolean_false_node; + return this->make_expression(bool_cst); +} + // Return the real part of a complex expression. Bexpression* @@ -1407,7 +1423,7 @@ Gcc_backend::struct_field_expression(Bexpression* bstruct, size_t index, NULL_TREE); if (TREE_CONSTANT(struct_tree)) TREE_CONSTANT(ret) = 1; - return tree_to_expr(ret); + return this->make_expression(ret); } // Return an expression that executes BSTAT before BEXPR. @@ -2923,73 +2939,3 @@ go_get_backend() { return new Gcc_backend(); } - -// FIXME: Temporary functions while converting to the new backend -// interface. - -Btype* -tree_to_type(tree t) -{ - return new Btype(t); -} - -Bexpression* -tree_to_expr(tree t) -{ - return new Bexpression(t); -} - -Bstatement* -tree_to_stat(tree t) -{ - return new Bstatement(t); -} - -Bfunction* -tree_to_function(tree t) -{ - return new Bfunction(t); -} - -Bblock* -tree_to_block(tree t) -{ - gcc_assert(TREE_CODE(t) == BIND_EXPR); - return new Bblock(t); -} - -tree -type_to_tree(Btype* bt) -{ - return bt->get_tree(); -} - -tree -expr_to_tree(Bexpression* be) -{ - return be->get_tree(); -} - -tree -stat_to_tree(Bstatement* bs) -{ - return bs->get_tree(); -} - -tree -block_to_tree(Bblock* bb) -{ - return bb->get_tree(); -} - -tree -var_to_tree(Bvariable* bv) -{ - return bv->get_tree(); -} - -tree -function_to_tree(Bfunction* bf) -{ - return bf->get_tree(); -} |