On Mon, Jun 25, 2007 at 09:31:14AM -0400, Mark Mitchell wrote: > David Edelsohn wrote: > > > /* If defined in this object and visibility is not default, must be > > local. */ > > else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) > > local_p = true; > > > > Why does binds_local_p return true for non-default visibility? > > I was just about to ask that. > > It's an intermediate case: more local than default visibility, but not > *that* local. If the function is defined, then it probably does bind > locally, in that nothing can come along later and replace the definition > we saw. > > I think the DECL_EXTERNAL case should go before the visibility checks in > default_binds_local_p_1. A DECL_EXTERNAL entity never binds locally.
That isn't the meaning that most callers of this function want, however. They want same shared object, which is what it currently returns; that's what I think of when you ask me if something binds "locally", too... -- Daniel Jacobowitz CodeSourcery