aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2021-06-30 06:49:12 +0200
committerMartin Liska <mliska@suse.cz>2021-06-30 06:49:12 +0200
commit7445abec5d383d37a2f827657dafa12053179c6e (patch)
treee838ed44a39c986af901507cdf2390d4310619d9 /gcc/go
parent490d1e1be15b62b51a2de248e6d7f76356402bc9 (diff)
parent35da8a98026849bd20d16bbf9210ac1d0b44ea6a (diff)
downloadgcc-7445abec5d383d37a2f827657dafa12053179c6e.zip
gcc-7445abec5d383d37a2f827657dafa12053179c6e.tar.gz
gcc-7445abec5d383d37a2f827657dafa12053179c6e.tar.bz2
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc/go')
-rw-r--r--gcc/go/ChangeLog7
-rw-r--r--gcc/go/go-gcc.cc3
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/expressions.cc94
-rw-r--r--gcc/go/gofrontend/expressions.h6
5 files changed, 17 insertions, 95 deletions
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index b6ec83c..60ebb89 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-29 Ian Lance Taylor <iant@golang.org>
+
+ * go-gcc.cc (Gcc_backend::static_chain_variable): Set
+ DECL_NAMELESS on the new decl.
+ (Gcc_backend::temporary_variable): Likewise.
+ (Gcc_backend::function): Set DECL_NAMELESS on the result decl.
+
2021-05-27 Ian Lance Taylor <iant@golang.org>
* gccgo.texi (Function Names): Don't HTML quote ampersand.
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index 41f309e..f812796 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -2853,6 +2853,7 @@ Gcc_backend::static_chain_variable(Bfunction* function, const std::string& name,
TREE_USED(decl) = 1;
DECL_ARTIFICIAL(decl) = 1;
DECL_IGNORED_P(decl) = 1;
+ DECL_NAMELESS(decl) = 1;
TREE_READONLY(decl) = 1;
struct function *f = DECL_STRUCT_FUNCTION(fndecl);
@@ -2912,6 +2913,7 @@ Gcc_backend::temporary_variable(Bfunction* function, Bblock* bblock,
type_tree);
DECL_ARTIFICIAL(var) = 1;
DECL_IGNORED_P(var) = 1;
+ DECL_NAMELESS(var) = 1;
TREE_USED(var) = 1;
DECL_CONTEXT(var) = decl;
@@ -3290,6 +3292,7 @@ Gcc_backend::function(Btype* fntype, const std::string& name,
build_decl(location.gcc_location(), RESULT_DECL, NULL_TREE, restype);
DECL_ARTIFICIAL(resdecl) = 1;
DECL_IGNORED_P(resdecl) = 1;
+ DECL_NAMELESS(resdecl) = 1;
DECL_CONTEXT(resdecl) = decl;
DECL_RESULT(decl) = resdecl;
}
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index f16fb9f..ab1384d 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-bcafcb3c39530bb325514d6377747eb3127d1a03
+01cb2b5e69a2d08ef3cc1ea023c22ed9b79f5114
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 5d45e4b..a0472ac 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -15147,44 +15147,6 @@ Struct_construction_expression::do_copy()
return ret;
}
-// Flatten a struct construction expression. Store the values into
-// temporaries in case they need interface conversion.
-
-Expression*
-Struct_construction_expression::do_flatten(Gogo*, Named_object*,
- Statement_inserter* inserter)
-{
- if (this->vals() == NULL)
- return this;
-
- // If this is a constant struct, we don't need temporaries.
- if (this->is_constant_struct() || this->is_static_initializer())
- return this;
-
- Location loc = this->location();
- for (Expression_list::iterator pv = this->vals()->begin();
- pv != this->vals()->end();
- ++pv)
- {
- if (*pv != NULL)
- {
- if ((*pv)->is_error_expression() || (*pv)->type()->is_error_type())
- {
- go_assert(saw_errors());
- return Expression::make_error(loc);
- }
- if (!(*pv)->is_multi_eval_safe())
- {
- Temporary_statement* temp =
- Statement::make_temporary(NULL, *pv, loc);
- inserter->insert(temp);
- *pv = Expression::make_temporary_reference(temp, loc);
- }
- }
- }
- return this;
-}
-
// Make implicit type conversions explicit.
void
@@ -15447,50 +15409,6 @@ Array_construction_expression::do_check_types(Gogo*)
}
}
-// Flatten an array construction expression. Store the values into
-// temporaries in case they need interface conversion.
-
-Expression*
-Array_construction_expression::do_flatten(Gogo*, Named_object*,
- Statement_inserter* inserter)
-{
- if (this->is_error_expression())
- {
- go_assert(saw_errors());
- return this;
- }
-
- if (this->vals() == NULL)
- return this;
-
- // If this is a constant array, we don't need temporaries.
- if (this->is_constant_array() || this->is_static_initializer())
- return this;
-
- Location loc = this->location();
- for (Expression_list::iterator pv = this->vals()->begin();
- pv != this->vals()->end();
- ++pv)
- {
- if (*pv != NULL)
- {
- if ((*pv)->is_error_expression() || (*pv)->type()->is_error_type())
- {
- go_assert(saw_errors());
- return Expression::make_error(loc);
- }
- if (!(*pv)->is_multi_eval_safe())
- {
- Temporary_statement* temp =
- Statement::make_temporary(NULL, *pv, loc);
- inserter->insert(temp);
- *pv = Expression::make_temporary_reference(temp, loc);
- }
- }
- }
- return this;
-}
-
// Make implicit type conversions explicit.
void
@@ -15759,14 +15677,14 @@ Slice_construction_expression::create_array_val()
// the new temp statement.
Expression*
-Slice_construction_expression::do_flatten(Gogo* gogo, Named_object* no,
+Slice_construction_expression::do_flatten(Gogo*, Named_object*,
Statement_inserter* inserter)
{
if (this->type()->array_type() == NULL)
- return NULL;
-
- // Base class flattening first
- this->Array_construction_expression::do_flatten(gogo, no, inserter);
+ {
+ go_assert(saw_errors());
+ return Expression::make_error(this->location());
+ }
// Create a stack-allocated storage temp if storage won't escape
if (!this->storage_escapes_
@@ -15775,7 +15693,7 @@ Slice_construction_expression::do_flatten(Gogo* gogo, Named_object* no,
{
Location loc = this->location();
this->array_val_ = this->create_array_val();
- go_assert(this->array_val_);
+ go_assert(this->array_val_ != NULL);
Temporary_statement* temp =
Statement::make_temporary(this->valtype_, this->array_val_, loc);
inserter->insert(temp);
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h
index e3747cc..57c974d 100644
--- a/gcc/go/gofrontend/expressions.h
+++ b/gcc/go/gofrontend/expressions.h
@@ -3806,9 +3806,6 @@ class Struct_construction_expression : public Expression,
Expression*
do_copy();
- Expression*
- do_flatten(Gogo*, Named_object*, Statement_inserter*);
-
Bexpression*
do_get_backend(Translate_context*);
@@ -3881,9 +3878,6 @@ protected:
indexes()
{ return this->indexes_; }
- Expression*
- do_flatten(Gogo*, Named_object*, Statement_inserter*);
-
// Get the backend constructor for the array values.
Bexpression*
get_constructor(Translate_context* context, Btype* btype);