This patch to the Go frontend by Cherry Zhang handles unsafe
conversion expression in escape analysis.  Previously escape analysis
never saw these, but now it does for the case of a map assignment.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 274998)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-189ff44b2c26f29f41f0eb159e0d8f3fa508ecae
+5d15923ada640befb236d5fe94f0c724e98e99d7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: gcc/go/gofrontend/escape.cc
===================================================================
--- gcc/go/gofrontend/escape.cc (revision 274169)
+++ gcc/go/gofrontend/escape.cc (working copy)
@@ -1706,6 +1706,15 @@ Escape_analysis_assign::expression(Expre
       }
       break;
 
+    case Expression::EXPRESSION_UNSAFE_CONVERSION:
+      {
+        Unsafe_type_conversion_expression* uce =
+          (*pexpr)->unsafe_conversion_expression();
+        Node* expr_node = Node::make_node(uce->expr());
+        this->assign(n, expr_node);
+      }
+      break;
+
     case Expression::EXPRESSION_FIXED_ARRAY_CONSTRUCTION:
     case Expression::EXPRESSION_SLICE_CONSTRUCTION:
       {

Reply via email to