From: ian Date: Tue, 5 Dec 2017 02:03:19 +0000 (+0000) Subject: compiler: no nil check needed for closure var dereferences X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c90b63920d8df4bdf487c5a0a1844b10c488103a;p=thirdparty%2Fgcc.git compiler: no nil check needed for closure var dereferences Add the "no nil check needed" annotation to the dereference operations created in Parse::enclosing_var_reference (this is safe since the closure object is under control of the compiler, and pointer fields in it will always be non-nil). Reviewed-on: https://go-review.googlesource.com/81795 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255400 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index ecb38ee31e80..e0d606c7e26b 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -338f7434175bb71f3c8905e9ad7f480aec3afee6 +297cf346f2400274946650ab9ecd039427fc986b 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/parse.cc b/gcc/go/gofrontend/parse.cc index be6f3f163391..98f30673d67f 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -2747,7 +2747,7 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var, location); closure_ref = Expression::make_dereference(closure_ref, - Expression::NIL_CHECK_DEFAULT, + Expression::NIL_CHECK_NOT_NEEDED, location); // The closure structure holds pointers to the variables, so we need @@ -2755,7 +2755,8 @@ Parse::enclosing_var_reference(Named_object* in_function, Named_object* var, Expression* e = Expression::make_field_reference(closure_ref, ins.first->index(), location); - e = Expression::make_dereference(e, Expression::NIL_CHECK_DEFAULT, location); + e = Expression::make_dereference(e, Expression::NIL_CHECK_NOT_NEEDED, + location); return Expression::make_enclosing_var_reference(e, var, location); }