diff options
author | Chris Manghane <cmang@google.com> | 2014-05-06 13:50:01 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-05-06 13:50:01 +0000 |
commit | 6122336c832dc4dfedc49279549caddce86306ff (patch) | |
tree | cbfe6afa638ce0b18b2e51c55acff495e07956d6 /gcc/go/gofrontend/expressions.cc | |
parent | 3134fb19432fbd54fe1be4315bf6f54e5b88868a (diff) | |
download | gcc-6122336c832dc4dfedc49279549caddce86306ff.zip gcc-6122336c832dc4dfedc49279549caddce86306ff.tar.gz gcc-6122336c832dc4dfedc49279549caddce86306ff.tar.bz2 |
compiler: Store flags for division checks in Gogo object instead of using global variables.
* go-c.h (go_create_gogo): Update declaration to add
check_divide_zero and check_divide_overflow parameters.
* go-lang.c (go_langhook_init): Pass new arguments to
go_create_gogo.
From-SVN: r210109
Diffstat (limited to 'gcc/go/gofrontend/expressions.cc')
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 9381764..df3103b 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -5432,7 +5432,7 @@ Binary_expression::lower_compare_to_memcmp(Gogo*, Statement_inserter* inserter) } Expression* -Binary_expression::do_flatten(Gogo*, Named_object*, +Binary_expression::do_flatten(Gogo* gogo, Named_object*, Statement_inserter* inserter) { Location loc = this->location(); @@ -5462,11 +5462,9 @@ Binary_expression::do_flatten(Gogo*, Named_object*, left_type->integer_type() != NULL) || this->op_ == OPERATOR_MOD); - // FIXME: go_check_divide_zero and go_check_divide_overflow are globals - // defined in gcc/go/lang.opt. These should be defined in go_create_gogo - // and accessed from the Gogo* passed to do_flatten. if (is_shift_op - || (is_idiv_op && (go_check_divide_zero || go_check_divide_overflow))) + || (is_idiv_op + && (gogo->check_divide_by_zero() || gogo->check_divide_overflow()))) { if (!this->left_->is_variable()) { @@ -6046,7 +6044,7 @@ Binary_expression::do_get_tree(Translate_context* context) // Add checks for division by zero and division overflow as needed. if (is_idiv_op) { - if (go_check_divide_zero) + if (gogo->check_divide_by_zero()) { // right == 0 Bexpression* zero_expr = @@ -6065,7 +6063,7 @@ Binary_expression::do_get_tree(Translate_context* context) crash_expr, ret, loc); } - if (go_check_divide_overflow) + if (gogo->check_divide_overflow()) { // right == -1 // FIXME: It would be nice to say that this test is expected |