re PR go/89368 (ICE in go/gofrontend/expressions.cc:4669 after r268923)

PR go/89368
    compiler: write barrier check nil-check policy tweak
    
    Tweak the recipe for generating writeBarrier loads to insure that the
    dereference expr is marked as not requiring a nil check (not needed
    for gccgo, but needed for gollvm).
    
    Fixes https://gcc.gnu.org/PR89368
    
    Reviewed-on: https://go-review.googlesource.com/c/162904

From-SVN: r268948
This commit is contained in:
Ian Lance Taylor 2019-02-15 21:04:58 +00:00
parent 879f9d0b2f
commit dd66d9d71d
2 changed files with 3 additions and 2 deletions

View file

@ -1,4 +1,4 @@
0563f2d018cdb2cd685c254bac5ceb38396d0a27
1a74b8a22b2ff7f430729aa87ecb8cea7b5cdd70
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View file

@ -904,7 +904,8 @@ Gogo::check_write_barrier(Block* enclosing, Statement* without,
ref = Expression::make_unary(OPERATOR_AND, ref, loc);
ref = Expression::make_cast(unsafe_pointer_type, ref, loc);
ref = Expression::make_cast(puint32_type, ref, loc);
ref = Expression::make_unary(OPERATOR_MULT, ref, loc);
ref = Expression::make_dereference(ref,
Expression::NIL_CHECK_NOT_NEEDED, loc);
Expression* zero = Expression::make_integer_ul(0, ref->type(), loc);
Expression* cond = Expression::make_binary(OPERATOR_EQEQ, ref, zero, loc);