public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
@ 2012-02-09 18:30 ro at gcc dot gnu.org
  2012-02-09 18:32 ` [Bug tree-optimization/52188] " ro at gcc dot gnu.org
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-09 18:30 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

             Bug #: 52188
           Summary: [4.7 regression] IPA-CP change broke libstdc++ symbol
                    versioning on Solaris
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: ro@gcc.gnu.org
                CC: jamborm@gcc.gnu.org, paolo.carlini@oracle.com
              Host: *-*-solaris2*
            Target: *-*-solaris2.*
             Build: *-*-solaris2.*


As already discussed to some length in

  http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01163.html

the following patch

2011-07-18  Martin Jambor  <mjambor@suse.cz>

        * ipa-prop.h: Include alloc-pool.h, all sorts of updates to general
        comments.
        (ipcp_values_pool): Declare.
        (ipcp_sources_pool): Likewise.
[...]

caused libstdc++.so symbol versioning to be broken on Solaris.  Before the
patch,
when compiling locale-const.cc only contains references and definitions of

_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv.constprop.36

After the patch, the same source has references to

_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv

The latter is matched by the linker map and exported at version GLIBCXX_3.4.15,
which is effectively closed with the release of gcc 4.6 where the symbol wasn't
present.

To avoid breaking symbol versioning on Solaris, the question is what to do
here:
we obviously cannot export it at 3.4.15, but could instead export it at
3.4.17 *on Solaris* instead.  Before going that route, I need to make certain
that this isn't just a code generation accident and the symbol can vanish again
later: the exported interface of a shared object *must not* depend on the 
vagaries of code generation changes.

Martin?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
@ 2012-02-09 18:32 ` ro at gcc dot gnu.org
  2012-02-09 18:33 ` ro at gcc dot gnu.org
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-09 18:32 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #1 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-09 18:31:18 UTC ---
Created attachment 26629
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26629
preprocesed source

compile with

cc1plus -fpreprocessed locale-inst.ii -quiet -O2 -fPIC -o locale-inst.s


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
  2012-02-09 18:32 ` [Bug tree-optimization/52188] " ro at gcc dot gnu.org
@ 2012-02-09 18:33 ` ro at gcc dot gnu.org
  2012-02-09 18:34 ` ro at gcc dot gnu.org
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-09 18:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

Rainer Orth <ro at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
   Target Milestone|---                         |4.7.0
           Severity|normal                      |major


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
  2012-02-09 18:32 ` [Bug tree-optimization/52188] " ro at gcc dot gnu.org
  2012-02-09 18:33 ` ro at gcc dot gnu.org
@ 2012-02-09 18:34 ` ro at gcc dot gnu.org
  2012-02-09 18:34 ` ro at gcc dot gnu.org
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-09 18:34 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #2 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-09 18:33:03 UTC ---
Created attachment 26630
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26630
asembler output before patch


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2012-02-09 18:34 ` ro at gcc dot gnu.org
@ 2012-02-09 18:34 ` ro at gcc dot gnu.org
  2012-02-10 10:25 ` ro at CeBiTec dot Uni-Bielefeld.DE
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-09 18:34 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #3 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-09 18:33:54 UTC ---
Created attachment 26631
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26631
assembler output after patch


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2012-02-09 18:34 ` ro at gcc dot gnu.org
@ 2012-02-10 10:25 ` ro at CeBiTec dot Uni-Bielefeld.DE
  2012-02-10 11:24 ` rguenth at gcc dot gnu.org
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at CeBiTec dot Uni-Bielefeld.DE @ 2012-02-10 10:25 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #4 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2012-02-10 10:24:36 UTC ---
> caused libstdc++.so symbol versioning to be broken on Solaris.  Before the
> patch,
> when compiling locale-const.cc only contains references and definitions of
>
> _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv.constprop.36
>
> After the patch, the same source has references to
>
> _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv

The change isn't Solaris-specific, btw.  I've just compiled the same
preprocessed file (with -fpermissive added to avoid

/vol/gcc/src/hg/trunk/reghunt/libstdc++-v3/libsupc++/new:93:54: error:
'operator new' takes type 'size_t' ('long unsigned int') as first parameter
[-fpermissive]

) on x86_64-unknown-linux-gnu: with gcc 4.6 off the top of the 4.6
branch, the symbol doesn't occur in the output at all, with mainline, it
does.

    Rainer


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2012-02-10 10:25 ` ro at CeBiTec dot Uni-Bielefeld.DE
@ 2012-02-10 11:24 ` rguenth at gcc dot gnu.org
  2012-02-10 11:32 ` rguenth at gcc dot gnu.org
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-02-10 11:24 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-10 11:23:49 UTC ---
Then simply don't export it?  It's a template instantiation after all.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2012-02-10 11:24 ` rguenth at gcc dot gnu.org
@ 2012-02-10 11:32 ` rguenth at gcc dot gnu.org
  2012-02-10 12:31 ` jakub at gcc dot gnu.org
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-02-10 11:32 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-02-10
     Ever Confirmed|0                           |1

--- Comment #6 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-10 11:31:00 UTC ---
So, if we'd want to be really consistent with symbols remaining in the
libstdc++ object files at different optimization levels (I guess if you
build libstdc++ with -O3 things might be different again) then we need
to avoid removing unused instantiated templates as part of the optimization
process.  Not sure on what basis we choose to be exported symbols right now.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2012-02-10 11:32 ` rguenth at gcc dot gnu.org
@ 2012-02-10 12:31 ` jakub at gcc dot gnu.org
  2012-02-16 16:10 ` jamborm at gcc dot gnu.org
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-02-10 12:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-10 12:30:39 UTC ---
The bug was that the gnu.ver wildcards were too generic and thus matched even
something that wasn't intended to be exported and just happened to be exported
as an implementation detail.
This caused a problem on Linux several years ago (I think in 2005), and since
then these are forcefully exported from compatibility.cc:
/* gcc-3.4.4
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv
 */

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  template
    istreambuf_iterator<char>&
    istreambuf_iterator<char>::operator++();

#ifdef _GLIBCXX_USE_WCHAR_T
  template
    istreambuf_iterator<wchar_t>&
    istreambuf_iterator<wchar_t>::operator++();
#endif

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

but not on Solaris, because it either doesn't support GNU symver, or doesn't
have corresponding runtime support.
I think the bug is not on the optimization side, it is fine if the
optimizations change stuff that are implementation details, C++ isn't a very
good language for ABI stability and just requires lots of work on the libstdc++
side to preserve at least some.

So, I'd say it is time to preprocess the *.ver files and tweak them based on
target OS or its version, and additionally you'll want (for Solaris) enable the
above hunk (sans the following stuff), to make sure it doesn't go again when
the optimizers change.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2012-02-10 12:31 ` jakub at gcc dot gnu.org
@ 2012-02-16 16:10 ` jamborm at gcc dot gnu.org
  2012-02-16 20:06 ` [Bug libstdc++/52188] " ro at gcc dot gnu.org
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-02-16 16:10 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #8 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-02-16 15:55:04 UTC ---
First and foremost, sorry for the big delay but I could not have a
look at this PR earlier.  Nevertheless, I doubt that the decision of
the new IPA-CP not to clone the function in question can be called a
bug.  Yes, if the heuristics or other early optimizations results
change, the cloning decision might change again in the future - even
in between minor versions if we are really unlucky.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2012-02-16 16:10 ` jamborm at gcc dot gnu.org
@ 2012-02-16 20:06 ` ro at gcc dot gnu.org
  2012-02-16 20:20 ` ro at CeBiTec dot Uni-Bielefeld.DE
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-16 20:06 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

Rainer Orth <ro at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                URL|                            |http://gcc.gnu.org/ml/gcc-p
                   |                            |atches/2012-02/msg00819.htm
                   |                            |l
          Component|tree-optimization           |libstdc++
         AssignedTo|unassigned at gcc dot       |ro at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #9 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-16 19:50:23 UTC ---
Not really an optimization issue.

Patch posted.

  Rainer


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2012-02-16 20:06 ` [Bug libstdc++/52188] " ro at gcc dot gnu.org
@ 2012-02-16 20:20 ` ro at CeBiTec dot Uni-Bielefeld.DE
  2012-02-16 20:32 ` ro at CeBiTec dot Uni-Bielefeld.DE
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at CeBiTec dot Uni-Bielefeld.DE @ 2012-02-16 20:20 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #11 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2012-02-16 19:58:27 UTC ---
> --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-10 12:30:39 UTC ---
> The bug was that the gnu.ver wildcards were too generic and thus matched even
> something that wasn't intended to be exported and just happened to be exported
> as an implementation detail.
> This caused a problem on Linux several years ago (I think in 2005), and since
> then these are forcefully exported from compatibility.cc:
[...]
> but not on Solaris, because it either doesn't support GNU symver, or doesn't
> have corresponding runtime support.

ld.so.1 lacks the runtime support, and likely won't get it any time soon.

> I think the bug is not on the optimization side, it is fine if the
> optimizations change stuff that are implementation details, C++ isn't a very
> good language for ABI stability and just requires lots of work on the libstdc++
> side to preserve at least some.
>
> So, I'd say it is time to preprocess the *.ver files and tweak them based on
> target OS or its version, and additionally you'll want (for Solaris) enable the
That's what my proposed patch does.  What do you think about it?

> above hunk (sans the following stuff), to make sure it doesn't go again when
> the optimizers change.

Given that they weren't present in 4.6, the first release with versioned
libstdc++.so on Solaris, I think it's easier to simply keep them
unexported, as Richard suggested.

    Rainer


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2012-02-16 20:20 ` ro at CeBiTec dot Uni-Bielefeld.DE
@ 2012-02-16 20:32 ` ro at CeBiTec dot Uni-Bielefeld.DE
  2012-02-16 20:47 ` ro at CeBiTec dot Uni-Bielefeld.DE
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at CeBiTec dot Uni-Bielefeld.DE @ 2012-02-16 20:32 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #12 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2012-02-16 20:01:03 UTC ---
> --- Comment #8 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-02-16 15:55:04 UTC ---
> First and foremost, sorry for the big delay but I could not have a
> look at this PR earlier.  Nevertheless, I doubt that the decision of

No worries, the other replies already pushed me in the right direction.

> the new IPA-CP not to clone the function in question can be called a
> bug.  Yes, if the heuristics or other early optimizations results
> change, the cloning decision might change again in the future - even
> in between minor versions if we are really unlucky.

Thanks.  This just means we have to be extra careful with symbol
versioning.  Handling PR libstdc++/52191 would certainly help quite a
bit, and other versions runtime libs don't use much (if any) wildcards
in their version maps, so won't be easily affected.

    Rainer


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (11 preceding siblings ...)
  2012-02-16 20:32 ` ro at CeBiTec dot Uni-Bielefeld.DE
@ 2012-02-16 20:47 ` ro at CeBiTec dot Uni-Bielefeld.DE
  2012-02-20 11:46 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ro at CeBiTec dot Uni-Bielefeld.DE @ 2012-02-16 20:47 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #10 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2012-02-16 19:54:52 UTC ---
> --- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-10 11:23:49 UTC ---
> Then simply don't export it?  It's a template instantiation after all.

I didn't think about that, given my limited knowledge of C++.  Should
have guessed, though, given that it wasn't missed in 4.6.

    Rainer


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (12 preceding siblings ...)
  2012-02-16 20:47 ` ro at CeBiTec dot Uni-Bielefeld.DE
@ 2012-02-20 11:46 ` rguenth at gcc dot gnu.org
  2012-02-20 13:25 ` jamborm at gcc dot gnu.org
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-02-20 11:46 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-20 11:38:41 UTC ---
(In reply to comment #8)
> First and foremost, sorry for the big delay but I could not have a
> look at this PR earlier.  Nevertheless, I doubt that the decision of
> the new IPA-CP not to clone the function in question can be called a
> bug.  Yes, if the heuristics or other early optimizations results
> change, the cloning decision might change again in the future - even
> in between minor versions if we are really unlucky.

Can/do we mark all clones having hidden visibility?  Would a matching regexp
in the linker script override that?  Isn't that a bug?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (13 preceding siblings ...)
  2012-02-20 11:46 ` rguenth at gcc dot gnu.org
@ 2012-02-20 13:25 ` jamborm at gcc dot gnu.org
  2012-02-27 13:55 ` ro at gcc dot gnu.org
  2012-02-27 14:13 ` ro at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: jamborm at gcc dot gnu.org @ 2012-02-20 13:25 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #14 from Martin Jambor <jamborm at gcc dot gnu.org> 2012-02-20 12:57:01 UTC ---
(In reply to comment #13)
> Can/do we mark all clones having hidden visibility?  Would a matching regexp
> in the linker script override that?  Isn't that a bug?

I believe they are made static, at least TREE_PUBLIC is cleared for
their new decls in cgraph_create_virtual_clone.  I think the problem
was that the original un-cloned function was exported (because IPA-CP
decided to ignore it) rather than the cloned one?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (14 preceding siblings ...)
  2012-02-20 13:25 ` jamborm at gcc dot gnu.org
@ 2012-02-27 13:55 ` ro at gcc dot gnu.org
  2012-02-27 14:13 ` ro at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-27 13:55 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

--- Comment #15 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-27 13:51:59 UTC ---
Author: ro
Date: Mon Feb 27 13:51:50 2012
New Revision: 184598

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184598
Log:
Fix Solaris symbol versioning (PR libstdc++/52188)

    contrib:
    PR libstdc++/52188
    * make_sunver.pl: Remove #ifdef handling.

    libgomp:
    PR libstdc++/52188
    * acinclude.m4 (LIBGOMP_ENABLE_SYMVERS): Remove    symvers_renaming.
    Remove ENABLE_SYMVERS_SOL2.
    * configure: Regenerate.
    * Makefile.am [LIBGOMP_BUILD_VERSIONED_SHLIB] (comma): New variable.
    (PREPROCESS): New variable.
    (libgomp.ver): New target.
    [LIBGOMP_BUILD_VERSIONED_SHLIB &&
    LIBGOMP_BUILD_VERSIONED_SHLIB_GNU]: Remove
    LIBGOMP_BUILD_VERSIONED_SHLIB_SOL2 handling.
    Use libgomp.ver.
    [LIBGOMP_BUILD_VERSIONED_SHLIB_SUN]: Use libgomp.ver, libgomp.ver-sun.
    * Makefile.in: Regenerate.

    libstdc++-v3:
    PR libstdc++/52188
    * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Remove symvers_renaming.
    Remove ENABLE_SYMVERS_SOL2.
    * configure: Regenerate.
    * src/Makefile.am [ENABLE_SYMVERS] (libstdc++-symbols.ver):
    Postprocess mapfile.
    [ENABLE_SYMVERS_GNU]: Remove ENABLE_SYMVERS_SOL2 handling.
    * src/Makefile.in: Regenerate.

    * config/abi/pre/gnu.ver (GLIBCXX_3.4.5) [!__sun__ && !__svr4__]:
    Don't export
    _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv.

Modified:
    trunk/contrib/ChangeLog
    trunk/contrib/make_sunver.pl
    trunk/libgomp/ChangeLog
    trunk/libgomp/Makefile.am
    trunk/libgomp/Makefile.in
    trunk/libgomp/acinclude.m4
    trunk/libgomp/configure
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/acinclude.m4
    trunk/libstdc++-v3/config/abi/pre/gnu.ver
    trunk/libstdc++-v3/configure
    trunk/libstdc++-v3/src/Makefile.am
    trunk/libstdc++-v3/src/Makefile.in


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug libstdc++/52188] [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris
  2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
                   ` (15 preceding siblings ...)
  2012-02-27 13:55 ` ro at gcc dot gnu.org
@ 2012-02-27 14:13 ` ro at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: ro at gcc dot gnu.org @ 2012-02-27 14:13 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52188

Rainer Orth <ro at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #16 from Rainer Orth <ro at gcc dot gnu.org> 2012-02-27 14:08:34 UTC ---
Fixed for 4.7.0.


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2012-02-27 14:09 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-09 18:30 [Bug tree-optimization/52188] New: [4.7 regression] IPA-CP change broke libstdc++ symbol versioning on Solaris ro at gcc dot gnu.org
2012-02-09 18:32 ` [Bug tree-optimization/52188] " ro at gcc dot gnu.org
2012-02-09 18:33 ` ro at gcc dot gnu.org
2012-02-09 18:34 ` ro at gcc dot gnu.org
2012-02-09 18:34 ` ro at gcc dot gnu.org
2012-02-10 10:25 ` ro at CeBiTec dot Uni-Bielefeld.DE
2012-02-10 11:24 ` rguenth at gcc dot gnu.org
2012-02-10 11:32 ` rguenth at gcc dot gnu.org
2012-02-10 12:31 ` jakub at gcc dot gnu.org
2012-02-16 16:10 ` jamborm at gcc dot gnu.org
2012-02-16 20:06 ` [Bug libstdc++/52188] " ro at gcc dot gnu.org
2012-02-16 20:20 ` ro at CeBiTec dot Uni-Bielefeld.DE
2012-02-16 20:32 ` ro at CeBiTec dot Uni-Bielefeld.DE
2012-02-16 20:47 ` ro at CeBiTec dot Uni-Bielefeld.DE
2012-02-20 11:46 ` rguenth at gcc dot gnu.org
2012-02-20 13:25 ` jamborm at gcc dot gnu.org
2012-02-27 13:55 ` ro at gcc dot gnu.org
2012-02-27 14:13 ` ro at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).