diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-01-28 21:44:53 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-01-28 21:44:53 +0000 |
commit | 19cef1c1f1da315cf5c66aeea465058d3ef5114b (patch) | |
tree | f48937c317d18e360d8c4c96332b341c9416fa51 /gcc/go | |
parent | 0f59a31da8c70c08f7887139aaf8c9318ba7e130 (diff) | |
download | gcc-19cef1c1f1da315cf5c66aeea465058d3ef5114b.zip gcc-19cef1c1f1da315cf5c66aeea465058d3ef5114b.tar.gz gcc-19cef1c1f1da315cf5c66aeea465058d3ef5114b.tar.bz2 |
compiler: Put nointerface methods in unique sections.
From-SVN: r207214
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gofrontend/gogo.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 6ecc6cd..9739f28 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -4094,12 +4094,19 @@ Function::get_or_make_decl(Gogo* gogo, Named_object* no) // stack splitting for the thunk. bool disable_split_stack = this->is_recover_thunk_; + // This should go into a unique section if that has been + // requested elsewhere, or if this is a nointerface function. + // We want to put a nointerface function into a unique section + // because there is a good chance that the linker garbage + // collection can discard it. + bool in_unique_section = this->in_unique_section_ || this->nointerface_; + Btype* functype = this->type_->get_backend_fntype(gogo); this->fndecl_ = gogo->backend()->function(functype, no->get_id(gogo), asm_name, is_visible, false, is_inlinable, - disable_split_stack, - this->in_unique_section_, this->location()); + disable_split_stack, in_unique_section, + this->location()); } return this->fndecl_; } |