PR3042

Mark Mitchell mark@codesourcery.com
Sun Jun 10 02:00:00 GMT 2001


>>>>> "David" == David Edelsohn <dje@watson.ibm.com> writes:

    David> 	I think we are debating what consistency means and
    David> that Mark is brushing the issue under the rug with his

I think that's a little unfair.  I'm not arguing consistency; I'm
arguing principle of least surprise, i.e., the behavior that is
easiest for users to understand.

I think the three options break down like this:

  - Do no implicit instantations on platforms without COMDAT.
    (This is my proposal).

    Pros: Adding/removing initializers does not change behavior
          for users.  

	  Easy to document, explain.

	  In this sense, this is consistent.

    Cons: Users have to write more explicit instantiations.

          In some cases, users might have previously gotten	
	  by with *no* explicit instantiations; now they have 
	  to do some.

	  David has pointed out that this method makes the 
	  affected platform less like GNU/Linux; the 
	  non-availability of weak symbols is highlighted even
	  more than it would be otherwise.

  - Jason's proposal: do no implicit instantiations only on platforms
    without "working" COMMON.  The pros and cons are exactly as above
    on affected platforms -- but fewer platforms are affected.  We
    lose consistency between (say) AIX and other COMMON platforms --
    but with my proposal we have already lost consistency between 
    AIX and ELF platforms, so that is a non-issue.

  - David's proposal: use magic linker flags to make COMMON work.

    Pros: Makes AIX work like other platforms with COMMON.

    Cons: User confusion when different instantiations 
          are handled differently -- some require explicit
	  instantiation, some do not.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com



More information about the Libstdc++ mailing list