]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
compiler: use nil pointer for zero length string constant
authorIan Lance Taylor <iant@golang.org>
Wed, 9 Feb 2022 04:16:38 +0000 (20:16 -0800)
committerIan Lance Taylor <iant@golang.org>
Wed, 9 Feb 2022 22:13:33 +0000 (14:13 -0800)
We used to pointlessly set the pointer of a zero length string
constant to point to a zero byte constant.  Instead, just use nil.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/384354

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc

index 3ea7aed35066907fbc1a03e5f845bf099e200dea..8cbd0c19a8d35fa1e76ae1d08ed03aa50025bfdd 100644 (file)
@@ -1,4 +1,4 @@
-7dffb933d33ff288675c8094d05c31b35cbf7e4d
+263e8d2a2ab57c6f2b3035f370d40476bda87c9f
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index d7b64767a0086229103d90da13d5346fe655f61d..3f5976548588df3163a633b273dafce83989aa20 100644 (file)
@@ -2123,9 +2123,15 @@ String_expression::do_get_backend(Translate_context* context)
 
   Location loc = this->location();
   std::vector<Bexpression*> init(2);
-  Bexpression* str_cst =
-      gogo->backend()->string_constant_expression(this->val_);
-  init[0] = gogo->backend()->address_expression(str_cst, loc);
+
+  if (this->val_.size() == 0)
+    init[0] = gogo->backend()->nil_pointer_expression();
+  else
+    {
+      Bexpression* str_cst =
+       gogo->backend()->string_constant_expression(this->val_);
+      init[0] = gogo->backend()->address_expression(str_cst, loc);
+    }
 
   Btype* int_btype = Type::lookup_integer_type("int")->get_backend(gogo);
   mpz_t lenval;