Commit 5561b41d by Ian Lance Taylor

compiler: avoid write barrier for a[i] = a[i][:v]

    
    This avoids generating a write barrier for code that appears in the
    Go1.14beta1 runtime package in (*pageAlloc).sysGrow:
        s.summary[l] = s.summary[l][:needIdxLimit]
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213558

From-SVN: r279962
parent 0e159efc
d0a102eea2262e3fca89b1eb342fd03328c4aa16 86d223eaccecff72b44cd23a014bc028b658055e
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -183,6 +183,24 @@ Expression::is_same_variable(Expression* a, Expression* b) ...@@ -183,6 +183,24 @@ Expression::is_same_variable(Expression* a, Expression* b)
bu->operand())); bu->operand()));
} }
Array_index_expression* aie = a->array_index_expression();
if (aie != NULL)
{
Array_index_expression* bie = b->array_index_expression();
return (aie->end() == NULL
&& bie->end() == NULL
&& Expression::is_same_variable(aie->array(), bie->array())
&& Expression::is_same_variable(aie->start(), bie->start()));
}
Numeric_constant aval;
if (a->numeric_constant_value(&aval))
{
Numeric_constant bval;
if (b->numeric_constant_value(&bval))
return aval.equals(bval);
}
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment