public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/46674] New: Weak alias was mistakenly optimized away
@ 2010-11-26 12:28 jiez at gcc dot gnu.org
  2010-11-26 12:43 ` [Bug middle-end/46674] [4.6 Regression] Weak alias is " rguenth at gcc dot gnu.org
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-11-26 12:28 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: Weak alias was mistakenly optimized away
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jiez@gcc.gnu.org


Created attachment 22537
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22537
The test case

This patch

http://gcc.gnu.org/ml/gcc-patches/2010-10/msg02275.html

causes a failure when building glibc for arm-none-linux-gnueabi target. The
reduced test case is attached.

Without this patch, memchr is defined in the assembly:

    .size    __memchr, .-__memchr
    .weak   __GI_memchr
    .hidden __GI_memchr
    .set    __GI_memchr,__memchr
    .global memchr
    .set    memchr,__GI_memchr
    .ident    "GCC: (GNU) 4.6.0 20101026 (experimental)"

but with this patch, memchr is not defined:

    .size    __memchr, .-__memchr
    .weak    __GI_memchr
    .hidden    __GI_memchr
    .set    __GI_memchr,__memchr
    .ident    "GCC: (GNU) 4.6.0 20101026 (experimental)"

When compiling the test case, -O is used on the command line.


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
@ 2010-11-26 12:43 ` rguenth at gcc dot gnu.org
  2010-11-27 18:34 ` pinskia at gcc dot gnu.org
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: rguenth at gcc dot gnu.org @ 2010-11-26 12:43 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2010.11.26 12:22:56
                 CC|                            |hubicka at gcc dot gnu.org
   Target Milestone|---                         |4.6.0
            Summary|Weak alias is mistakenly    |[4.6 Regression] Weak alias
                   |optimized away              |is mistakenly optimized
                   |                            |away
     Ever Confirmed|0                           |1


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
  2010-11-26 12:43 ` [Bug middle-end/46674] [4.6 Regression] Weak alias is " rguenth at gcc dot gnu.org
@ 2010-11-27 18:34 ` pinskia at gcc dot gnu.org
  2010-11-29  5:15 ` jiez at gcc dot gnu.org
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: pinskia at gcc dot gnu.org @ 2010-11-27 18:34 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |DUPLICATE

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2010-11-27 18:19:55 UTC ---
This has been fixed already.

*** This bug has been marked as a duplicate of bug 46221 ***


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
  2010-11-26 12:43 ` [Bug middle-end/46674] [4.6 Regression] Weak alias is " rguenth at gcc dot gnu.org
  2010-11-27 18:34 ` pinskia at gcc dot gnu.org
@ 2010-11-29  5:15 ` jiez at gcc dot gnu.org
  2010-11-29 11:05 ` jiez at gcc dot gnu.org
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-11-29  5:15 UTC (permalink / raw)
  To: gcc-bugs

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

Jie Zhang <jiez at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|DUPLICATE                   |

--- Comment #2 from Jie Zhang <jiez at gcc dot gnu.org> 2010-11-29 04:57:56 UTC ---
I still see the issue with the test case on latest GCC trunk on
arm-none-linux-gnueabi target and native x86_64-linux-gnu. So I reopen it.


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2010-11-29  5:15 ` jiez at gcc dot gnu.org
@ 2010-11-29 11:05 ` jiez at gcc dot gnu.org
  2010-11-30 10:01 ` jiez at gcc dot gnu.org
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-11-29 11:05 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jie Zhang <jiez at gcc dot gnu.org> 2010-11-29 10:56:37 UTC ---
If I revert this change, this bug will disappear.

@@ -416,7 +415,7 @@ cgraph_remove_unreachable_nodes (bool be
           found = true;

       /* If so, we need to keep node in the callgraph.  */
-      if (found || node->needed)
+      if (found)
         {
           if (node->analyzed)
         {


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2010-11-29 11:05 ` jiez at gcc dot gnu.org
@ 2010-11-30 10:01 ` jiez at gcc dot gnu.org
  2010-11-30 12:08 ` jiez at gcc dot gnu.org
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-11-30 10:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Jie Zhang <jiez at gcc dot gnu.org> 2010-11-30 10:00:05 UTC ---
Hah, I now know the root cause. It's "*__GI_memchr" that is added into the
visible point set since it's a user provided name. But GCC looks for
"__GI_memchr" later, which is not the same identifier as "*__GI_memchr". Is
there a way to easily translate a "*__GI_memchr" identifier to a "__GI_memchr"
one?


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2010-11-30 10:01 ` jiez at gcc dot gnu.org
@ 2010-11-30 12:08 ` jiez at gcc dot gnu.org
  2010-12-02  4:10 ` jiez at gcc dot gnu.org
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-11-30 12:08 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Jie Zhang <jiez at gcc dot gnu.org> 2010-11-30 11:17:47 UTC ---
Created attachment 22577
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22577
The patch

I'm testing this patch.


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2010-11-30 12:08 ` jiez at gcc dot gnu.org
@ 2010-12-02  4:10 ` jiez at gcc dot gnu.org
  2010-12-06 12:21 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jiez at gcc dot gnu.org @ 2010-12-02  4:10 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Jie Zhang <jiez at gcc dot gnu.org> 2010-12-02 04:10:04 UTC ---
Author: jiez
Date: Thu Dec  2 04:09:58 2010
New Revision: 167365

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167365
Log:
    PR middle-end/46674
    * varasm.c (compute_visible_aliases): Handle user set
    assembler name.

    testsuite/
    PR middle-end/46674
    * gcc.dg/pr46674.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/pr46674.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/varasm.c


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2010-12-02  4:10 ` jiez at gcc dot gnu.org
@ 2010-12-06 12:21 ` jakub at gcc dot gnu.org
  2010-12-07  4:31 ` davek at gcc dot gnu.org
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2010-12-06 12:21 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
                 CC|                            |jakub at gcc dot gnu.org
         Resolution|                            |FIXED

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-12-06 12:21:48 UTC ---
Fixed.


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2010-12-06 12:21 ` jakub at gcc dot gnu.org
@ 2010-12-07  4:31 ` davek at gcc dot gnu.org
  2010-12-10 14:29 ` davek at gcc dot gnu.org
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-07  4:31 UTC (permalink / raw)
  To: gcc-bugs

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

Dave Korn <davek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
                 CC|                            |davek at gcc dot gnu.org
         Resolution|FIXED                       |

--- Comment #9 from Dave Korn <davek at gcc dot gnu.org> 2010-12-07 04:31:08 UTC ---
Not fixed on platforms where USER_LABEL_PREFIX is non-empty.  On
i686-pc-cygwin:

FAIL: gcc.dg/pr46674.c scan-assembler wobbly

Stripping the star isn't enough, because behind that star it's a
fully-qualified assembler name, i.e. prefixed if prefixes are in use.  The
alias names are C level symbols.  We can't just compare them; this is the same
as the lto symtab problem.  We should be able to fix this fully using the
mangle_assembler_name hook I'm testing a patch for
(http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00403.html).


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2010-12-07  4:31 ` davek at gcc dot gnu.org
@ 2010-12-10 14:29 ` davek at gcc dot gnu.org
  2010-12-10 14:57 ` davek at gcc dot gnu.org
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-10 14:29 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from Dave Korn <davek at gcc dot gnu.org> 2010-12-10 14:29:03 UTC ---
Author: davek
Date: Fri Dec 10 14:28:58 2010
New Revision: 167688

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167688
Log:
gcc/ChangeLog:

    PR middle-end/46674
    PR lto/43157
    * target.def (mangle_assembler_name): New target asm_out hook.
    * targhooks.c (default_mangle_assembler_name): Add default hook
    implementation.
    * targhooks.h (default_mangle_assembler_name): Add prototype.
    * lto-symtab.c (lto_symtab_register_decl): Use new hook when
    processing DECL_ASSEMBLER_NAMEs for lto symtabs.
    (lto_symtab_get_resolution): Likewise.
    (lto_cgraph_replace_node): Likewise.
    (lto_symtab_prevailing_decl): Likewise.
    * lto-streamer-out.c (write_symbol): Likewise.
    * doc/tm.texi.in (TARGET_MANGLE_ASSEMBLER_NAME): Add @hook directive.
    * doc/tm.texi: Regenerate.
    * config/i386/cygming.h (TARGET_MANGLE_ASSEMBLER_NAME): Define to
    point at i386_pe_mangle_assembler_name.
    * config/i386/winnt.c (i386_pe_mangle_assembler_name): New function.
    * config/i386/i386-protos.h (i386_pe_mangle_assembler_name): Add
    prototype.

lto-plugin/ChangeLog:

    PR middle-end/46674
    PR lto/43157
    * configure.ac (SYM_STYLE): Don't AC_DEFINE.
    * lto-plugin.c (sym_style): Don't use it; default to ss_none.
    * configure: Regenerate.
    * config.h.in: Likewise.

gcc/testsuite/ChangeLog:

    PR middle-end/46674
    PR lto/43157
    * gcc.dg/pr43157.c: New file.


Added:
    trunk/gcc/testsuite/gcc.dg/pr43157.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/cygming.h
    trunk/gcc/config/i386/i386-protos.h
    trunk/gcc/config/i386/winnt.c
    trunk/gcc/doc/tm.texi
    trunk/gcc/doc/tm.texi.in
    trunk/gcc/lto-streamer-out.c
    trunk/gcc/lto-symtab.c
    trunk/gcc/target.def
    trunk/gcc/targhooks.c
    trunk/gcc/targhooks.h
    trunk/gcc/testsuite/ChangeLog
    trunk/lto-plugin/ChangeLog
    trunk/lto-plugin/config.h.in
    trunk/lto-plugin/configure
    trunk/lto-plugin/configure.ac
    trunk/lto-plugin/lto-plugin.c


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2010-12-10 14:29 ` davek at gcc dot gnu.org
@ 2010-12-10 14:57 ` davek at gcc dot gnu.org
  2010-12-15 16:18 ` davek at gcc dot gnu.org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-10 14:57 UTC (permalink / raw)
  To: gcc-bugs

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

Dave Korn <davek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |ASSIGNED
         AssignedTo|unassigned at gcc dot       |davek at gcc dot gnu.org
                   |gnu.org                     |


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2010-12-10 14:57 ` davek at gcc dot gnu.org
@ 2010-12-15 16:18 ` davek at gcc dot gnu.org
  2010-12-19 11:15 ` davek at gcc dot gnu.org
  2010-12-19 11:18 ` davek at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-15 16:18 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from Dave Korn <davek at gcc dot gnu.org> 2010-12-15 16:17:54 UTC ---
Created attachment 22765
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22765
Lower all C identifiers to actual assembler symbols for comparison.

This should resolve the problem by ensuring that aliases and decls are lowered
to the canonical assembler form before doing any comparisons or testing if they
are used.


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (11 preceding siblings ...)
  2010-12-15 16:18 ` davek at gcc dot gnu.org
@ 2010-12-19 11:15 ` davek at gcc dot gnu.org
  2010-12-19 11:18 ` davek at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-19 11:15 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from Dave Korn <davek at gcc dot gnu.org> 2010-12-19 11:14:23 UTC ---
Author: davek
Date: Sun Dec 19 11:14:19 2010
New Revision: 168047

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=168047
Log:
    PR middle-end/46674
    PR middle-end/46221
    * varasm.c (symbol_alias_set_t): New typedef for derived pointer_set
    wrapper class.
    (symbol_alias_set_create): New wrapper function.
    (symbol_alias_set_destroy): Likewise.
    (symbol_alias_set_contains): Likewise.
    (symbol_alias_set_insert): Likewise.
    (compute_visible_aliases): Use the above and return symbol_alias_set_t,
    not a pointer_set.
    (remove_unreachable_alias_pairs): Adjust likewise to match.
    (finish_aliases_1): Likewise.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/varasm.c


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

* [Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away
  2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
                   ` (12 preceding siblings ...)
  2010-12-19 11:15 ` davek at gcc dot gnu.org
@ 2010-12-19 11:18 ` davek at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: davek at gcc dot gnu.org @ 2010-12-19 11:18 UTC (permalink / raw)
  To: gcc-bugs

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

Dave Korn <davek at gcc dot gnu.org> changed:

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

--- Comment #13 from Dave Korn <davek at gcc dot gnu.org> 2010-12-19 11:17:27 UTC ---
Fully fixed now, I trust.


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

end of thread, other threads:[~2010-12-19 11:18 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-26 12:28 [Bug middle-end/46674] New: Weak alias was mistakenly optimized away jiez at gcc dot gnu.org
2010-11-26 12:43 ` [Bug middle-end/46674] [4.6 Regression] Weak alias is " rguenth at gcc dot gnu.org
2010-11-27 18:34 ` pinskia at gcc dot gnu.org
2010-11-29  5:15 ` jiez at gcc dot gnu.org
2010-11-29 11:05 ` jiez at gcc dot gnu.org
2010-11-30 10:01 ` jiez at gcc dot gnu.org
2010-11-30 12:08 ` jiez at gcc dot gnu.org
2010-12-02  4:10 ` jiez at gcc dot gnu.org
2010-12-06 12:21 ` jakub at gcc dot gnu.org
2010-12-07  4:31 ` davek at gcc dot gnu.org
2010-12-10 14:29 ` davek at gcc dot gnu.org
2010-12-10 14:57 ` davek at gcc dot gnu.org
2010-12-15 16:18 ` davek at gcc dot gnu.org
2010-12-19 11:15 ` davek at gcc dot gnu.org
2010-12-19 11:18 ` davek 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).