* [Bug c++/41090] [4.3/4.4/4.5/4.6/4.7 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
@ 2011-06-27 14:40 ` rguenth at gcc dot gnu.org
2012-01-05 18:14 ` [Bug c++/41090] [4.4/4.5/4.6/4.7/4.8 " jakub at gcc dot gnu.org
` (10 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-06-27 14:40 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.3.6 |4.4.7
--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-06-27 12:14:22 UTC ---
4.3 branch is being closed, moving to 4.4.7 target.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.4/4.5/4.6/4.7/4.8 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
2011-06-27 14:40 ` [Bug c++/41090] [4.3/4.4/4.5/4.6/4.7 Regression] Using static label reference in c++ class constructor produces wrong code rguenth at gcc dot gnu.org
@ 2012-01-05 18:14 ` jakub at gcc dot gnu.org
2012-01-12 19:07 ` jason at gcc dot gnu.org
` (9 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-01-05 18:14 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
Target Milestone|4.4.7 |4.8.0
Summary|[4.4/4.5/4.6/4.7 |[4.4/4.5/4.6/4.7/4.8
|Regression] Using static |Regression] Using static
|label reference in c++ |label reference in c++
|class constructor produces |class constructor produces
|wrong code |wrong code
Known to fail| |
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-05 18:11:57 UTC ---
Well, we could perhaps detect the problematic ctors or dtors and instead of
cloning them as we do now create a helper function which all of the ctors resp.
dtors would use. Doesn't look like a 4.7 material at this point though.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.4/4.5/4.6/4.7/4.8 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
2011-06-27 14:40 ` [Bug c++/41090] [4.3/4.4/4.5/4.6/4.7 Regression] Using static label reference in c++ class constructor produces wrong code rguenth at gcc dot gnu.org
2012-01-05 18:14 ` [Bug c++/41090] [4.4/4.5/4.6/4.7/4.8 " jakub at gcc dot gnu.org
@ 2012-01-12 19:07 ` jason at gcc dot gnu.org
2013-03-22 14:45 ` [Bug c++/41090] [4.6/4.7/4.8/4.9 " jakub at gcc dot gnu.org
` (8 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2012-01-12 19:07 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #15 from Jason Merrill <jason at gcc dot gnu.org> 2012-01-12 19:05:32 UTC ---
We should probably resurrect the decloning patch
http://gcc.gnu.org/ml/gcc-patches/2007-11/msg01147.html
for this reason as well as the space optimization.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.6/4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2012-01-12 19:07 ` jason at gcc dot gnu.org
@ 2013-03-22 14:45 ` jakub at gcc dot gnu.org
2013-05-31 10:59 ` [Bug c++/41090] [4.7/4.8/4.9 " jakub at gcc dot gnu.org
` (7 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-03-22 14:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.8.0 |4.8.1
--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-22 14:44:15 UTC ---
GCC 4.8.0 is being released, adjusting target milestone.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (3 preceding siblings ...)
2013-03-22 14:45 ` [Bug c++/41090] [4.6/4.7/4.8/4.9 " jakub at gcc dot gnu.org
@ 2013-05-31 10:59 ` jakub at gcc dot gnu.org
2013-10-16 9:51 ` jakub at gcc dot gnu.org
` (6 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-05-31 10:59 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.8.1 |4.8.2
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.1 has been released.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (4 preceding siblings ...)
2013-05-31 10:59 ` [Bug c++/41090] [4.7/4.8/4.9 " jakub at gcc dot gnu.org
@ 2013-10-16 9:51 ` jakub at gcc dot gnu.org
2013-12-23 17:49 ` jason at gcc dot gnu.org
` (5 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-10-16 9:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.8.2 |4.8.3
--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.2 has been released.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (5 preceding siblings ...)
2013-10-16 9:51 ` jakub at gcc dot gnu.org
@ 2013-12-23 17:49 ` jason at gcc dot gnu.org
2013-12-23 17:52 ` jason at gcc dot gnu.org
` (4 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-12-23 17:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Mon Dec 23 17:49:47 2013
New Revision: 206182
URL: http://gcc.gnu.org/viewcvs?rev=206182&root=gcc&view=rev
Log:
PR c++/41090
Add -fdeclone-ctor-dtor.
gcc/cp/
* optimize.c (can_alias_cdtor, populate_clone_array): Split out
from maybe_clone_body.
(maybe_thunk_body): New function.
(maybe_clone_body): Call it.
* mangle.c (write_mangled_name): Remove code to suppress
writing of mangled name for cloned constructor or destructor.
(write_special_name_constructor): Handle decloned constructor.
(write_special_name_destructor): Handle decloned destructor.
* method.c (trivial_fn_p): Handle decloning.
* semantics.c (expand_or_defer_fn_1): Clone after setting linkage.
gcc/c-family/
* c.opt: Add -fdeclone-ctor-dtor.
* c-opts.c (c_common_post_options): Default to on iff -Os.
gcc/
* cgraph.h (struct cgraph_node): Add calls_comdat_local.
(symtab_comdat_local_p, symtab_in_same_comdat_p): New.
* cif-code.def: Add USES_COMDAT_LOCAL.
* symtab.c (verify_symtab_base): Make sure we don't refer to a
comdat-local symbol from outside its comdat.
* cgraph.c (verify_cgraph_node): Likewise.
* cgraphunit.c (mark_functions_to_output): Don't mark comdat-locals.
* ipa.c (symtab_remove_unreachable_nodes): Likewise.
(function_and_variable_visibility): Handle comdat-local fns.
* ipa-cp.c (determine_versionability): Don't clone comdat-locals.
* ipa-inline-analysis.c (compute_inline_parameters): Update
calls_comdat_local.
* ipa-inline-transform.c (inline_call): Likewise.
(save_inline_function_body): Don't clear DECL_COMDAT_GROUP.
* ipa-inline.c (can_inline_edge_p): Check calls_comdat_local.
* lto-cgraph.c (input_overwrite_node): Read calls_comdat_local.
(lto_output_node): Write it.
* symtab.c (symtab_dissolve_same_comdat_group_list): Clear
DECL_COMDAT_GROUP for comdat-locals.
include/
* demangle.h (enum gnu_v3_ctor_kinds):
Added literal gnu_v3_unified_ctor.
(enum gnu_v3_ctor_kinds):
Added literal gnu_v3_unified_dtor.
libiberty/
* cp-demangle.c (cplus_demangle_fill_ctor,cplus_demangle_fill_dtor):
Handle unified ctor/dtor.
(d_ctor_dtor_name): Handle unified ctor/dtor.
Added:
trunk/gcc/testsuite/g++.dg/ext/label13a.C
trunk/gcc/testsuite/g++.dg/opt/declone1.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-opts.c
trunk/gcc/c-family/c.opt
trunk/gcc/cgraph.c
trunk/gcc/cgraph.h
trunk/gcc/cgraphunit.c
trunk/gcc/cif-code.def
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/cp/mangle.c
trunk/gcc/cp/method.c
trunk/gcc/cp/optimize.c
trunk/gcc/cp/semantics.c
trunk/gcc/doc/invoke.texi
trunk/gcc/ipa-cp.c
trunk/gcc/ipa-inline-analysis.c
trunk/gcc/ipa-inline-transform.c
trunk/gcc/ipa-inline.c
trunk/gcc/ipa.c
trunk/gcc/lto-cgraph.c
trunk/gcc/symtab.c
trunk/include/ChangeLog
trunk/include/demangle.h
trunk/libiberty/ChangeLog
trunk/libiberty/cp-demangle.c
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (6 preceding siblings ...)
2013-12-23 17:49 ` jason at gcc dot gnu.org
@ 2013-12-23 17:52 ` jason at gcc dot gnu.org
2013-12-26 12:28 ` dominiq at lps dot ens.fr
` (3 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-12-23 17:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
Target Milestone|4.8.3 |4.9.0
--- Comment #20 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for 4.9.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (7 preceding siblings ...)
2013-12-23 17:52 ` jason at gcc dot gnu.org
@ 2013-12-26 12:28 ` dominiq at lps dot ens.fr
2013-12-26 19:00 ` dave.anglin at bell dot net
` (2 subsequent siblings)
11 siblings, 0 replies; 12+ messages in thread
From: dominiq at lps dot ens.fr @ 2013-12-26 12:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #21 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The test g++.dg/ext/label13.C XPASS after r20182 on darwin.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (8 preceding siblings ...)
2013-12-26 12:28 ` dominiq at lps dot ens.fr
@ 2013-12-26 19:00 ` dave.anglin at bell dot net
2013-12-30 19:35 ` mrs at gcc dot gnu.org
2013-12-30 19:35 ` mikestump at comcast dot net
11 siblings, 0 replies; 12+ messages in thread
From: dave.anglin at bell dot net @ 2013-12-26 19:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #22 from dave.anglin at bell dot net ---
On 26-Dec-13, at 7:28 AM, dominiq at lps dot ens.fr wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
>
> --- Comment #21 from Dominique d'Humieres <dominiq at lps dot
> ens.fr> ---
> The test g++.dg/ext/label13.C XPASS after r20182 on darwin.
Likewise on hppa2.0w-hp-hpux11.11.
Dave
--
John David Anglin dave.anglin@bell.net
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (9 preceding siblings ...)
2013-12-26 19:00 ` dave.anglin at bell dot net
@ 2013-12-30 19:35 ` mrs at gcc dot gnu.org
2013-12-30 19:35 ` mikestump at comcast dot net
11 siblings, 0 replies; 12+ messages in thread
From: mrs at gcc dot gnu.org @ 2013-12-30 19:35 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #23 from mrs at gcc dot gnu.org <mrs at gcc dot gnu.org> ---
Author: mrs
Date: Mon Dec 30 19:34:53 2013
New Revision: 206252
URL: http://gcc.gnu.org/viewcvs?rev=206252&root=gcc&view=rev
Log:
PR c++/41090
* g++.dg/ext/label13.C: Update to not expect failures.
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ext/label13.C
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/41090] [4.7/4.8/4.9 Regression] Using static label reference in c++ class constructor produces wrong code
[not found] <bug-41090-4@http.gcc.gnu.org/bugzilla/>
` (10 preceding siblings ...)
2013-12-30 19:35 ` mrs at gcc dot gnu.org
@ 2013-12-30 19:35 ` mikestump at comcast dot net
11 siblings, 0 replies; 12+ messages in thread
From: mikestump at comcast dot net @ 2013-12-30 19:35 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41090
--- Comment #24 from Mike Stump <mikestump at comcast dot net> ---
Thanks for the fix and the update guys.
^ permalink raw reply [flat|nested] 12+ messages in thread