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).