[Bug c++/45606] [4.5/4.6 Regression] match a method prototyped a typedef alias with the original type (using stdlib)
--- Comment #4 from dodji at gcc dot gnu dot org 2010-09-19 20:33 --- I rewrote the handling of typedef comparison to put canonical type comparison back. I believe this approach is simpler and happens to fix this issue. A candidate patch was sent to http://gcc.gnu.org/ml/gcc-patches/2010-09/msg01525.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45606
[Bug c++/45606] [4.5/4.6 Regression] match a method prototyped a typedef alias with the original type (using stdlib)
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-09-09 16:31:41 |2010-09-10 20:06:43 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45606
[Bug c++/45558] typedef of typename fails to equal its underlying type
--- Comment #4 from dodji at gcc dot gnu dot org 2010-09-07 07:13 --- Fixed in 4.5.2 and trunk (4.6) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45293] ICE in iterative_hash_template_arg, at cp/pt.c:1589
--- Comment #11 from dodji at gcc dot gnu dot org 2010-09-07 07:12 --- Fixed in 4.5.2 and trunk (4.6) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45293
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #13 from dodji at gcc dot gnu dot org 2010-09-07 07:08 --- Fixed in 4.5.2 and trunk (4.6). -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/45558] typedef of typename fails to equal its underlying type
--- Comment #3 from dodji at gcc dot gnu dot org 2010-09-06 18:50 --- Subject: Bug 45558 Author: dodji Date: Mon Sep 6 18:49:46 2010 New Revision: 163930 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163930 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef34.C branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef35.C Modified: branches/gcc-4_5-branch/gcc/cp/ChangeLog branches/gcc-4_5-branch/gcc/cp/tree.c branches/gcc-4_5-branch/gcc/cp/typeck.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45293] ICE in iterative_hash_template_arg, at cp/pt.c:1589
--- Comment #10 from dodji at gcc dot gnu dot org 2010-09-06 18:50 --- Subject: Bug 45293 Author: dodji Date: Mon Sep 6 18:49:46 2010 New Revision: 163930 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163930 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef34.C branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef35.C Modified: branches/gcc-4_5-branch/gcc/cp/ChangeLog branches/gcc-4_5-branch/gcc/cp/tree.c branches/gcc-4_5-branch/gcc/cp/typeck.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45293
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #12 from dodji at gcc dot gnu dot org 2010-09-06 18:50 --- Subject: Bug 45200 Author: dodji Date: Mon Sep 6 18:49:46 2010 New Revision: 163930 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163930 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef34.C branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef35.C Modified: branches/gcc-4_5-branch/gcc/cp/ChangeLog branches/gcc-4_5-branch/gcc/cp/tree.c branches/gcc-4_5-branch/gcc/cp/typeck.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/45293] ICE in iterative_hash_template_arg, at cp/pt.c:1589
--- Comment #9 from dodji at gcc dot gnu dot org 2010-09-06 18:44 --- Subject: Bug 45293 Author: dodji Date: Mon Sep 6 18:44:23 2010 New Revision: 163929 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163929 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef34.C trunk/gcc/testsuite/g++.dg/template/typedef35.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/tree.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45293
[Bug c++/45558] typedef of typename fails to equal its underlying type
--- Comment #2 from dodji at gcc dot gnu dot org 2010-09-06 18:44 --- Subject: Bug 45558 Author: dodji Date: Mon Sep 6 18:44:23 2010 New Revision: 163929 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163929 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef34.C trunk/gcc/testsuite/g++.dg/template/typedef35.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/tree.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #11 from dodji at gcc dot gnu dot org 2010-09-06 18:44 --- Subject: Bug 45200 Author: dodji Date: Mon Sep 6 18:44:23 2010 New Revision: 163929 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163929 Log: Patch PR c++/45200 Fix PR c++/45200, c++/45293, c++/45558 gcc/cp/Changelog: PR c++/45200 PR c++/45293 PR c++/45558 * tree.c (strip_typedefs): Strip typedefs from the context of TYPENAME_TYPEs. gcc/testsuite/ChangeLog: PR c++/45200 PR c++/45293 PR c++/45558 * g++.dg/template/typedef34.C: New test. * g++.dg/template/typedef35.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef34.C trunk/gcc/testsuite/g++.dg/template/typedef35.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/tree.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/45558] typedef of typename fails to equal its underlying type
--- Comment #1 from dodji at gcc dot gnu dot org 2010-09-06 15:00 --- This was forwarded here from https://bugzilla.redhat.com/show_bug.cgi?id=620095 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45558] typedef of typename fails to equal its underlying type
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-09-06 14:59:17 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45558] New: typedef of typename fails to equal its underlying type
The code snippet below fails to compile: =~= template struct C { template struct B { template struct E { explicit E(const W &x) : w(x) {} const W &w; }; }; }; struct F; template struct D { D() {} }; const D g; template struct A { template struct B : C::template B { typedef typename C::template B V; static const D > > a; }; }; template template const D::template B::template E > > A::B::a = typename C::template B::template E >(g); =~= With the error message: test-620095.cc:38:16: erreur: conflicting declaration const D::B::E > > A::B::a test-620095.cc:31:52: erreur: A::B::a has a previous declaration as const D::B::E > > A::B::a test-620095.cc:38:16: erreur: declaration of const D::B::E > > A::B::a outside of class is not definition [-fpermissive] Fixing PR c++/45200 should fix this bug. -- Summary: typedef of typename fails to equal its underlying type Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dodji at gcc dot gnu dot org BugsThisDependsOn: 45200 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45558
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #10 from dodji at gcc dot gnu dot org 2010-08-12 13:40 --- A better patch submitted to http://gcc.gnu.org/ml/gcc-patches/2010-08/msg00842.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #9 from dodji at gcc dot gnu dot org 2010-08-10 22:12 --- (In reply to comment #7) > Created an attachment (id=21443) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21443&action=view) [edit] > Candidate patch > > I am testing this patch atm that seems to be working for now. It turned out the patch is not correct. I am looking at another way. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/44301] [4.5 Regression] g++ ICE on complicated template code
--- Comment #4 from dodji at gcc dot gnu dot org 2010-08-10 14:37 --- *** This bug has been marked as a duplicate of 45200 *** -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44301
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #8 from dodji at gcc dot gnu dot org 2010-08-10 14:37 --- *** Bug 44301 has been marked as a duplicate of this bug. *** -- dodji at gcc dot gnu dot org changed: What|Removed |Added CC||jewillco at osl dot iu dot ||edu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug c++/45200] [4.5/4.6 Regression] ICE in template instantiation
--- Comment #7 from dodji at gcc dot gnu dot org 2010-08-09 23:56 --- Created an attachment (id=21443) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21443&action=view) Candidate patch I am testing this patch atm that seems to be working for now. -- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45200
[Bug debug/45024] wrong nesting for inner template class
--- Comment #3 from dodji at gcc dot gnu dot org 2010-07-22 16:25 --- Subject: Bug 45024 Author: dodji Date: Thu Jul 22 16:25:17 2010 New Revision: 162420 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162420 Log: Fix PR debug/45024 gcc/ChangeLog: PR debug/45024 * dwarf2out.c (scope_die_for): Don't fall back to the compilation unit DIE if we can find the scope DIE. gcc/testsuite/ChangeLog: PR debug/45024 * g++.dg/debug/dwarf2/nested-2.C: New test case. Added: trunk/gcc/testsuite/g++.dg/debug/dwarf2/nested-2.C Modified: trunk/gcc/ChangeLog trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45024
[Bug debug/45024] wrong nesting for inner template class
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-07-21 21:54:05 |2010-07-21 21:58:35 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45024
[Bug debug/45024] wrong nesting for inner template class
--- Comment #1 from dodji at gcc dot gnu dot org 2010-07-21 21:54 --- I am testing this patch: diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index ce35c91..bd3a97d 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -17585,9 +17585,11 @@ scope_die_for (tree t, dw_die_ref context_die) { gcc_assert (debug_info_level <= DINFO_LEVEL_TERSE || TREE_ASM_WRITTEN (containing_scope)); - + scope_die = lookup_type_die (containing_scope); + /* If none of the current dies are suitable, we get file scope. */ - scope_die = comp_unit_die; + if (scope_die == NULL) + scope_die = comp_unit_die; } else scope_die = lookup_type_die (containing_scope); -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-21 21:54:05 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45024
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #33 from dodji at gcc dot gnu dot org 2010-07-02 19:00 --- I have put up a git tree for this. The branch containing my changes is http://seketeli.net/cgit/~dodji/gcc.git/log/?h=PR7263-dodji The current state as of commit 1d2b6207 addresses the remaining FIXMEs in the code. It thus should properly deallocate the memory used for the macro expansion tokens and still passes regression test for the C FE. Next stop is to make the C++ FE work with this. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #32 from dodji at gcc dot gnu dot org 2010-06-14 14:20 --- Created an attachment (id=20907) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20907&action=view) Refreshed version. - Disables the feature by default - Adds a -ftrack-macro-expansion flag to enable the feature Fix a couple of bugs I noticed while trying to make the feature optional Updated the relevant regression tests of the macro expansion patch - Rebased the patch on recent trunk and adapt it to the new directory layout Next stop is the fix the two remaining FIXMEs and make the C++ FE work. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Attachment #20878|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #29 from dodji at gcc dot gnu dot org 2010-06-09 17:09 --- Created an attachment (id=20878) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20878&action=view) Refreshed version. Fully Bootstraps the C FE and passes regression tests. This fixes a annoying bug that were making the compiler emit wrong debug info, leading to binaries that were not really debug-able. Next stop is to disable this feature by default, and enable it with a -ftrack-macro-expansion flag, and update the regressions tests of the C FE. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Attachment #20769|0 |1 is obsolete|| Attachment #20770|0 |1 is obsolete|| Attachment #20846|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #9 from dodji at gcc dot gnu dot org 2010-06-06 18:33 --- Hopefully properly fixed in trunk (4.6) now. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #8 from dodji at gcc dot gnu dot org 2010-06-06 18:24 --- Subject: Bug 44188 Author: dodji Date: Sun Jun 6 18:24:27 2010 New Revision: 160347 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=160347 Log: Fix PR c++/44188 gcc/ChangeLog: PR c++/44188 * c-common.c (is_typedef_decl): Move this definition ... * tree.c (is_typedef_decl): ... here. (typdef_variant_p): Move definition here from gcc/cp/tree.c. * c-common.h (is_typedef_decl): Move this declaration ... * tree.h (is_typedef_decl): ... here. (typedef_variant_p): Move declaration here from gcc/cp/cp-tree.h * dwarf2out.c (is_naming_typedef_decl): New function. (gen_tagged_type_die): Split out of ... (gen_type_die_with_usage): ... this function. When an anonymous tagged type is named by a typedef, make sure a DW_TAG_typedef DIE is emitted for the typedef. (gen_typedef_die): Emit DW_TAG_typedef also for typedefs naming anonymous tagged types. gcc/cp/ChangeLog: PR c++/44188 * cp-tree.h (typedef_variant_p): Move this declaration to gcc/tree.h. * tree.c (typedef_variant_p): Move this definition to gcc/tree.c. * decl.c (grokdeclarator): Do not rename debug info of an anonymous tagged type named by a typedef. gcc/testsuite/ChangeLog: PR c++/44188 * g++.dg/debug/dwarf2/typedef3.C: New test. Added: trunk/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/tree.c trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog trunk/gcc/tree.c trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
-- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|REOPENED|ASSIGNED Last reconfirmed|2010-05-18 21:50:32 |2010-06-05 20:03:35 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #7 from dodji at gcc dot gnu dot org 2010-06-05 20:03 --- So I posted an updated patch for this to http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00437.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #25 from dodji at gcc dot gnu dot org 2010-06-04 19:36 --- Created an attachment (id=20846) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20846&action=view) Fixes all regressions of C FE's testsuite This update fixes all the regressions I have noticed in the test suite of the C FE. I have done the testing and debugging with bootstrap disabled. This patch merges Tom's initial patch and my additions and should apply to recent trunk. Next step is to bootstrap the C FE and see/fix the remaining bugs that I encounter there. Here is what the patch does at the moment: $ cat test.c 1 #define OPERATE(OPRD1, OPRT, OPRD2) \ 2 OPRD1 OPRT OPRD2; 3 4 #define SHIFTL(A,B) \ 5OPERATE (A,<<,B) 6 7 #define MULT2(A) \ 8SHIFTL (A,1) 9 10 void 11 g () 12 { 13MULT2 (1.0);/* 1.0 << 1;*/ 14 } $ ./cc1 -quiet test.c While expanding macro OPERATE at test.c:2:8 While expanding macro SHIFTL at test.c:5:14 While expanding macro MULT2 at test.c:8:3 test.c: In function 'g': test.c:13:3: error: invalid operands to binary << (have 'double' and 'int') -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #24 from dodji at gcc dot gnu dot org 2010-05-28 15:42 --- Created an attachment (id=20770) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20770&action=view) First version of an updated patch So I thought I'd post the current state of the patch I am working on. This patch fixes some issues I noticed about the initial patch, namely: - The crashes I have noticed while trying to bootstrap c and c++ - Some little issues here and there. Enough to pass bootstrap for C and C++. I haven't tried bootstrapping the other FEs yet. There are still some caveats: * I have added an -fdebug-cpp option that (very) verbosely clutters the output of -E. This is useful for me, for debugging purposes. I think the final patch should have this option removed. * There are still some regression tests that are failing because they need updating. * I still need to add an option to disable the macro token location tracking. * The patch still does not handle token pasting It's true that is still work in progress, but I'd appreciate comments especially if you notice that I am doing something wrong. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #23 from dodji at gcc dot gnu dot org 2010-05-28 15:34 --- Created an attachment (id=20769) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20769&action=view) Tom's Initial patch ported to 4.6 This is just the initial patch I ported to 4.6. It should apply cleanly to recent trunk. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Attachment #20163|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug bootstrap/44302] [4.6 Regression] Failed to bootstrap
--- Comment #4 from dodji at gcc dot gnu dot org 2010-05-28 00:09 --- I have reverted that commit for now. See my comments on PR44188. Sorry for the breakage. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED Target Milestone|4.6.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44302
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #6 from dodji at gcc dot gnu dot org 2010-05-28 00:08 --- Re-opening as my patch broke Ada and Obj-c(++). It looks like Ada emits TYPE_DECLs that smell like c/c++ naming typedefs but with different semantics ... -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #5 from dodji at gcc dot gnu dot org 2010-05-28 00:03 --- Subject: Bug 44188 Author: dodji Date: Fri May 28 00:03:19 2010 New Revision: 159955 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159955 Log: Revert "Fix PR c++/44188" gcc/ChangeLog: revert fix for PR c++/44188 * c-common.c (is_typedef_decl): Revert the moving of this definition ... * tree.c (is_typedef_decl): ... here. (typdef_variant_p): Revert the moving of this definition here from gcc/cp/tree.c. * c-common.h (is_typedef_decl): Revert the moving of this declaration ... * tree.h (is_typedef_decl): ... here. (typedef_variant_p): Revert the moving of this declaration here from gcc/cp/cp-tree.h * dwarf2out.c (is_naming_typedef_decl): Revert this new function. (gen_tagged_type_die): Revert the splitting out of ... (gen_type_die_with_usage): ... this function. Revert the anonymous tagged type handling. (gen_typedef_die): Revert emitting DW_TAG_typedef for typedefs naming anonymous tagged types. gcc/cp/ChangeLog: Revert fix of PR c++/44188 * cp-tree.h (typedef_variant_p): Revert moving this declaration to gcc/tree.h. * tree.c (typedef_variant_p): Revert moving this definition to gcc/tree.c. * decl.c (grokdeclarator): Revert naming typedef handling. gcc/testsuite/ChangeLog: Revert fix for PR c++/44188 * g++.dg/debug/dwarf2/typedef3.C: Revert new test. Removed: trunk/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C Modified: trunk/gcc/ChangeLog trunk/gcc/c-common.c trunk/gcc/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/tree.c trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog trunk/gcc/tree.c trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #3 from dodji at gcc dot gnu dot org 2010-05-27 19:36 --- Fixed in trunk (4.6). -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #2 from dodji at gcc dot gnu dot org 2010-05-27 19:30 --- Subject: Bug 44188 Author: dodji Date: Thu May 27 19:29:53 2010 New Revision: 159943 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159943 Log: Fix PR c++/44188 gcc/ChangeLog: PR c++/44188 * c-common.c (is_typedef_decl): Move this definition ... * tree.c (is_typedef_decl): ... here. (typdef_variant_p): Move definition here from gcc/cp/tree.c. * c-common.h (is_typedef_decl): Move this declaration ... * tree.h (is_typedef_decl): ... here. (typedef_variant_p): Move declaration here from gcc/cp/cp-tree.h * dwarf2out.c (is_naming_typedef_decl): New function. (gen_tagged_type_die): Split out of ... (gen_type_die_with_usage): ... this function. When an anonymous tagged type is named by a typedef, make sure a DW_TAG_typedef DIE is emitted for the typedef. (gen_typedef_die): Emit DW_TAG_typedef also for typedefs naming anonymous tagged types. gcc/cp/ChangeLog: PR c++/44188 * cp-tree.h (typedef_variant_p): Move this declaration to gcc/tree.h. * tree.c (typedef_variant_p): Move this definition to gcc/tree.c. * decl.c (grokdeclarator): Do not rename debug info of an anonymous tagged type named by a typedef. gcc/testsuite/ChangeLog: PR c++/44188 * g++.dg/debug/dwarf2/typedef3.C: New test. Added: trunk/gcc/testsuite/g++.dg/debug/dwarf2/typedef3.C Modified: trunk/gcc/ChangeLog trunk/gcc/c-common.c trunk/gcc/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/tree.c trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog trunk/gcc/tree.c trunk/gcc/tree.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
--- Comment #1 from dodji at gcc dot gnu dot org 2010-05-20 11:06 --- A patch has been proposed to http://gcc.gnu.org/ml/gcc-patches/2010-05/msg01476.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44188] Fails to produce DW_AT_typedef for typedef of anonymous struct
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-05-18 21:50:32 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44188
[Bug c++/44108] [4.6 Regression] -Wunused-but-set-variable does not consider array sizing use of a const variable
--- Comment #6 from dodji at gcc dot gnu dot org 2010-05-17 19:45 --- This should be fixed in trunk (4.6) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44108
[Bug c++/44108] [4.6 Regression] -Wunused-but-set-variable does not consider array sizing use of a const variable
--- Comment #4 from dodji at gcc dot gnu dot org 2010-05-17 13:54 --- Created an attachment (id=20681) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20681&action=view) Don't warn for integral constants Jakub, this one line patch implements the first idea which is to not warn for integral constants, as far as Wunused_but_set_variable is concerned. I have tested it only for the reported error case. I haven't regtested it yet. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44108
[Bug c++/44108] [4.6 Regression] -Wunused-but-set-variable does not consider array sizing use of a const variable
--- Comment #3 from dodji at gcc dot gnu dot org 2010-05-17 12:30 --- Created an attachment (id=20678) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20678&action=view) Candidate patch On Fri, May 14, 2010 at 07:25:18AM -, jakub at gcc dot gnu dot org wrote: > That said, it would be good to find out why we don't warn in that > case; for [M_CONST + 6] we do warn. I think we don't warn in that case because M_CONST in the expression M_CONST + 6, M_CONST is an rvalue use and we recognize it as such via default_conversion that should be called on the arguments of the + expression. We fail to recognize the use of [M_CONST], because M_CONST gets folded into it's value without us marking that folding as an rvalue use. I am thus testing the attached patch. The reason why the patch seems convoluted is that I don't want to mark a dependant value as a rvalue use. I believe only full instantiations should be marked. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44108
[Bug c++/44108] [4.6 Regression] -Wunused-but-set-variable does not consider array sizing use of a const variable
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-05-14 06:42:26 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44108
[Bug c/18624] GCC does not detect local variable set but never used
--- Comment #26 from dodji at gcc dot gnu dot org 2010-05-06 06:52 --- Subject: Bug 18624 Author: dodji Date: Thu May 6 06:52:30 2010 New Revision: 159096 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159096 Log: C++ support for -Wunused-but-set-variable gcc/cp/ChangeLog: PR 18624 * cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use, mark_type_use): Declare ... * expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use, mark_type_use): ... new fns. * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use. (perform_integral_promotions): Call mark_rvalue_use. (cp_build_unary_op): Call mark_lvalue_use. (decay_conversion): Update comment. Call mark_lvalue. * decl.c (unused_but_set_errorcount): New variable. (poplevel): Issue -Wunused-but-set-variable diagnostics. (duplicate_decls): Merge DECL_READ_P flags. (start_cleanup_fn): Set DECL_READ_P flag. (finish_function): Issue -Wunused-but-set-parameter diagnostics. * tree.c (rvalue): Call mark_rvalue_use. * pt.c (convert_nontype_argument): Likewise. * semantics.c (finish_typeof, finish_decltype_type): Call mark_type_use. (finish_asm_stmt): Call mark_lvalue_use. (finish_expr_stmt): Call mark_exp_read. * call.c (convert_like_real) : Call mark_rvalue_use. (build_x_va_arg): Call mark_lvalue_use. (build_over_call): Call mark_type_use. * init.c (build_new, build_delete): Call mark_value_use. * rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use. (build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use. gcc/testsuite/ChangeLog: PR 18624 * g++.dg/warn/Wunused-7.C: Add dg-warning. * g++.dg/template/sfinae16.C: Likewise. * gcc.dg/Wunused-var-1.c: Moved to... * c-c++-common/Wunused-var-1.c: ...here. New test. * gcc.dg/Wunused-var-2.c: Moved to... * c-c++-common/Wunused-var-2.c: ...here. New test. * gcc.dg/Wunused-var-3.c: Moved to... * c-c++-common/Wunused-var-3.c: ...here. New test. * gcc.dg/Wunused-var-4.c: Moved to... * gcc.dg/Wunused-var-1.c: ... here. * gcc.dg/Wunused-var-5.c: Moved to... * c-c++-common/Wunused-var-4.c: ...here. New test. * gcc.dg/Wunused-var-7.c: Moved to... * c-c++-common/Wunused-var-5.c: ...here. New test. * gcc.dg/Wunused-var-6.c: Moved to... * gcc.dg/Wunused-var-2.c: ... here. * c-c++-common/Wunused-var-1.c: New test. * c-c++-common/Wunused-var-2.c: New test. * c-c++-common/Wunused-var-3.c: New test. * c-c++-common/Wunused-var-4.c: New test. * c-c++-common/Wunused-var-5.c: New test. * g++.dg/warn/Wunused-var-1.C: New test. * g++.dg/warn/Wunused-var-2.C: New test. * g++.dg/warn/Wunused-var-3.C: New test. * g++.dg/warn/Wunused-var-4.C: New test. * g++.dg/warn/Wunused-var-5.C: New test. * g++.dg/warn/Wunused-var-6.C: New test. * g++.dg/warn/Wunused-var-7.C: New test. * g++.dg/warn/Wunused-var-8.C: New test. * g++.dg/warn/Wunused-parm-1.C: New test. * g++.dg/warn/Wunused-parm-2.C: New test. * g++.dg/warn/Wunused-parm-3.C: New test. Added: trunk/gcc/testsuite/c-c++-common/Wunused-var-1.c - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-1.c trunk/gcc/testsuite/c-c++-common/Wunused-var-2.c - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-2.c trunk/gcc/testsuite/c-c++-common/Wunused-var-3.c - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-3.c trunk/gcc/testsuite/c-c++-common/Wunused-var-4.c - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-7.c trunk/gcc/testsuite/c-c++-common/Wunused-var-5.c - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-5.c trunk/gcc/testsuite/g++.dg/warn/Wunused-parm-1.C trunk/gcc/testsuite/g++.dg/warn/Wunused-parm-2.C trunk/gcc/testsuite/g++.dg/warn/Wunused-parm-3.C trunk/gcc/testsuite/g++.dg/warn/Wunused-var-1.C trunk/gcc/testsuite/g++.dg/warn/Wunused-var-2.C trunk/gcc/testsuite/g++.dg/warn/Wunused-var-3.C trunk/gcc/testsuite/g++.dg/warn/Wunused-var-4.C trunk/gcc/testsuite/g++.dg/warn/Wunused-var-5.C - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-1.c trunk/gcc/testsuite/g++.dg/warn/Wunused-var-6.C - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-2.c trunk/gcc/testsuite/g++.dg/warn/Wunused-var-7.C - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-3.c trunk/gcc/testsuite/g++.dg/warn/Wunused-var-8.C - copied, changed from r159095, trunk/gcc/testsuite/gcc.dg/Wunused-var-5.c Removed: trunk/gcc/testsuite/gcc.dg
[Bug c++/43953] [4.5/4.6 regression] ICE: dependent_type_p, at cp/pt.c:17404
--- Comment #7 from dodji at gcc dot gnu dot org 2010-05-04 10:31 --- Close this now. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43953
[Bug c++/43953] [4.5/4.6 regression] ICE: dependent_type_p, at cp/pt.c:17404
--- Comment #6 from dodji at gcc dot gnu dot org 2010-05-04 10:01 --- Fixed in 4.6 (trunk) and 4.5.1. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43953
[Bug c++/43953] [4.5/4.6 regression] ICE: dependent_type_p, at cp/pt.c:17404
--- Comment #5 from dodji at gcc dot gnu dot org 2010-05-04 09:58 --- Subject: Bug 43953 Author: dodji Date: Tue May 4 09:58:03 2010 New Revision: 159021 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159021 Log: Fix PR c++/43953 gcc/cp/ChangeLog: PR c++/43953 * pt.c (most_specialized_class): Pretend we are processing a template decl during the call to coerce_template_parms. gcc/testsuite/ChangeLog: PR c++/43953 * g++.dg/other/crash-12.C: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/g++.dg/other/crash-12.C Modified: branches/gcc-4_5-branch/gcc/cp/ChangeLog branches/gcc-4_5-branch/gcc/cp/pt.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43953
[Bug c++/43953] [4.5/4.6 regression] ICE: dependent_type_p, at cp/pt.c:17404
--- Comment #4 from dodji at gcc dot gnu dot org 2010-05-04 09:50 --- Subject: Bug 43953 Author: dodji Date: Tue May 4 09:49:45 2010 New Revision: 159019 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159019 Log: Fix PR c++/43953 gcc/cp/ChangeLog: PR c++/43953 * pt.c (most_specialized_class): Pretend we are processing a template decl during the call to coerce_template_parms. gcc/testsuite/ChangeLog: PR c++/43953 * g++.dg/other/crash-12.C: New test. Added: trunk/gcc/testsuite/g++.dg/other/crash-12.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43953
[Bug c++/43953] ICE: dependent_type_p, at cp/pt.c:17404
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-05-01 13:58:34 |2010-05-03 17:54:28 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43953
[Bug c++/43800] [4.6 regression] FAIL: libgomp.c++/for-4.C
--- Comment #4 from dodji at gcc dot gnu dot org 2010-04-20 19:40 --- Fixed in trunk (4.6) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43800
[Bug c++/43704] [4.5 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
--- Comment #11 from dodji at gcc dot gnu dot org 2010-04-20 19:40 --- Fixed in trunk (4.6) and 4.5.1. --- Comment #12 from dodji at gcc dot gnu dot org 2010-04-20 19:40 --- Subject: Bug 43704 Author: dodji Date: Tue Apr 20 19:40:11 2010 New Revision: 158572 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158572 Log: Fix PR c++/43704 gcc/cp/ChangeLog: PR c++/43704 * typeck.c (structural_comptypes): Test dependent typedefs incompatibility before testing for their main variant based equivalence. (incompatible_dependent_types_p): If one of the compared types if not a typedef then honour their main variant equivalence. gcc/testsuite/ChangeLog: PR c++/43704 * g++.dg/template/typedef32.C: New test. * g++.dg/template/typedef33.C: New test. gcc/testsuite/ChangeLog: Added: branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef32.C branches/gcc-4_5-branch/gcc/testsuite/g++.dg/template/typedef33.C Modified: branches/gcc-4_5-branch/gcc/cp/ChangeLog branches/gcc-4_5-branch/gcc/cp/typeck.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/43704] [4.5 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
--- Comment #11 from dodji at gcc dot gnu dot org 2010-04-20 19:40 --- Fixed in trunk (4.6) and 4.5.1. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/43704] [4.5 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
--- Comment #10 from dodji at gcc dot gnu dot org 2010-04-20 19:24 --- Subject: Bug 43704 Author: dodji Date: Tue Apr 20 19:23:45 2010 New Revision: 158571 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158571 Log: Fix PR c++/43800 gcc/cp/ChangeLog: PR c++/43800 PR c++/43704 * typeck.c (incompatible_dependent_types_p): If one of the compared types if not a typedef then honour their main variant equivalence. gcc/testsuite/ChangeLog: PR c++/43800 PR c++/43704 * g++.dg/template/typedef32.C: Adjust. * g++.dg/template/typedef33.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef33.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/template/typedef32.C -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/43800] [4.6 regression] FAIL: libgomp.c++/for-4.C
--- Comment #3 from dodji at gcc dot gnu dot org 2010-04-20 19:24 --- Subject: Bug 43800 Author: dodji Date: Tue Apr 20 19:23:45 2010 New Revision: 158571 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158571 Log: Fix PR c++/43800 gcc/cp/ChangeLog: PR c++/43800 PR c++/43704 * typeck.c (incompatible_dependent_types_p): If one of the compared types if not a typedef then honour their main variant equivalence. gcc/testsuite/ChangeLog: PR c++/43800 PR c++/43704 * g++.dg/template/typedef32.C: Adjust. * g++.dg/template/typedef33.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef33.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/template/typedef32.C -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43800
[Bug c++/43800] [4.6 regression] FAIL: libgomp.c++/for-4.C
--- Comment #2 from dodji at gcc dot gnu dot org 2010-04-20 13:58 --- ... patch posted to http://gcc.gnu.org/ml/gcc-patches/2010-04/msg01241.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43800
[Bug c++/43800] [4.6 regression] FAIL: libgomp.c++/for-4.C
--- Comment #1 from dodji at gcc dot gnu dot org 2010-04-19 20:57 --- I am testing a patch ... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43800
[Bug c++/43800] [4.6 regression] FAIL: libgomp.c++/for-4.C
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-04-19 20:26:50 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43800
[Bug c++/43704] [4.5/4.6 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
--- Comment #7 from dodji at gcc dot gnu dot org 2010-04-19 09:32 --- Subject: Bug 43704 Author: dodji Date: Mon Apr 19 09:32:16 2010 New Revision: 158508 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158508 Log: Fix PR c++/43704 gcc/cp/ChangeLog: PR c++/43704 * typeck.c (structural_comptypes): Test dependent typedefs incompatibility before testing for their main variant based equivalence. gcc/testsuite/ChangeLog: PR c++/43704 * g++.dg/template/typedef32.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef32.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/43704] [4.5/4.6 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
--- Comment #6 from dodji at gcc dot gnu dot org 2010-04-15 21:13 --- A patch was posted to http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00928.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/43704] [4.5/4.6 Regression] ICE: tree check: accessed elt 2 of tree_vec with 1 elts in tsubst, at cp/pt.c:10074
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-04-09 19:44:08 |2010-04-15 19:08:18 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43704
[Bug c++/42697] ice-on-legal-code: template class template function local objects
--- Comment #15 from dodji at gcc dot gnu dot org 2010-04-07 15:18 --- Fixed in 4.6 (trunk) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42697
[Bug c++/42697] ice-on-legal-code: template class template function local objects
--- Comment #14 from dodji at gcc dot gnu dot org 2010-04-07 15:16 --- Subject: Bug 42697 Author: dodji Date: Wed Apr 7 15:16:12 2010 New Revision: 158068 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158068 Log: Fix PR c++/42697 gcc/cp/ChangeLog: PR c++/42697 *pt.c (tsubst_decl): Get the arguments of a specialization from the specialization template, not from the most general template. gcc/testsuite/ChangeLog: PR c++/42697 * g++.dg/template/crash94.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/crash94.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42697
[Bug c++/40239] Aggregate initialization requires copy constructor
--- Comment #9 from dodji at gcc dot gnu dot org 2010-04-07 15:12 --- Fixed in 4.6 (trunk). -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40239
[Bug c++/40239] Aggregate initialization requires copy constructor
--- Comment #8 from dodji at gcc dot gnu dot org 2010-04-07 15:12 --- Subject: Bug 40239 Author: dodji Date: Wed Apr 7 15:11:42 2010 New Revision: 158066 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158066 Log: Fix PR c++/40239 gcc/cp/ChangeLog: PR c++/40239 * typeck2.c (process_init_constructor_record): value-initialize members that are are not explicitely initialized. gcc/testsuite/ChangeLog: PR c++/40239 * g++.dg/init/aggr5.C: New test. * g++.dg/init/aggr5.C: New test. Added: trunk/gcc/testsuite/g++.dg/init/aggr5.C trunk/gcc/testsuite/g++.dg/init/aggr6.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck2.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40239
[Bug debug/43628] [4.5/4.6 Regression] in-class func-ptr type parameter has unspecified DW_AT_type
--- Comment #4 from dodji at gcc dot gnu dot org 2010-04-07 10:38 --- Fixed in 4.6 (trunk) -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43628
[Bug debug/43628] [4.5/4.6 Regression] in-class func-ptr type parameter has unspecified DW_AT_type
--- Comment #3 from dodji at gcc dot gnu dot org 2010-04-07 09:59 --- Subject: Bug 43628 Author: dodji Date: Wed Apr 7 09:59:04 2010 New Revision: 158044 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158044 Log: Fix PR debug/43628 gcc/ChangeLog: PR debug/43628 * dwarf2out.c (modified_type_die): Ignore artificial typedefs. gcc/testsuite/ChangeLog: PR debug/43628 * g++.dg/debug/dwarf2/typedef2.C: New test. Added: trunk/gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C Modified: trunk/gcc/ChangeLog trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43628
[Bug debug/43628] [4.5 Regression] in-class func-ptr type parameter has unspecified DW_AT_type
--- Comment #1 from dodji at gcc dot gnu dot org 2010-04-02 19:09 --- Patch posted to http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00100.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43628
[Bug debug/43628] [4.5 Regression] in-class func-ptr type parameter has unspecified DW_AT_type
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-04-02 16:57:42 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43628
[Bug debug/43325] [4.5 Regression] C++ external inner reference does not override outer scope
--- Comment #3 from dodji at gcc dot gnu dot org 2010-04-01 18:55 --- Fixed in 4.5 (trunk). -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43325
[Bug debug/43325] [4.5 Regression] C++ external inner reference does not override outer scope
--- Comment #2 from dodji at gcc dot gnu dot org 2010-04-01 18:54 --- Subject: Bug 43325 Author: dodji Date: Thu Apr 1 18:54:30 2010 New Revision: 157928 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157928 Log: Fix for PR debug/43325 gcc/ChangeLog: PR debug/43325 * dwarf2out.c (gen_variable_die): Allow debug info for variable re-declaration when it happens in a function. gcc/testsuite/ChangeLog: PR debug/43325 * c-c++-common/dwarf2/redeclaration-1.C: New test. Added: trunk/gcc/testsuite/c-c++-common/dwarf2/redeclaration-1.C Modified: trunk/gcc/ChangeLog trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43325
[Bug debug/43325] [4.5 Regression] C++ external inner reference does not override outer scope
--- Comment #1 from dodji at gcc dot gnu dot org 2010-03-31 10:08 --- A patch was proposed at http://gcc.gnu.org/ml/gcc-patches/2010-03/msg01473.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43325
[Bug debug/43325] [4.5 Regression] C++ external inner reference does not override outer scope
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-03-31 09:35:28 date|| Summary|C++ external inner reference|[4.5 Regression] C++ |does not override outer |external inner reference |scope |does not override outer ||scope http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43325
[Bug c++/43558] [4.5 Regression] Rejects specialization
--- Comment #4 from dodji at gcc dot gnu dot org 2010-03-31 09:33 --- Fixed in 4.5 (trunk). -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43558
[Bug c++/43558] [4.5 Regression] Rejects specialization
--- Comment #3 from dodji at gcc dot gnu dot org 2010-03-31 09:21 --- Subject: Bug 43558 Author: dodji Date: Wed Mar 31 09:21:02 2010 New Revision: 157857 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157857 Log: Fix PR c++/43558 gcc/cp/ChangeLog: PR c++/43558 * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro. * pt.c (end_template_parm_list): Store sibling template parms of each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS. (push_template_decl_real): Don't store the containing template decl into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore. * typeck.c (get_template_parms_of_dependent_type): Get sibling parms of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS. Simplify the logic. gcc/testsuite/ChangeLog: PR c++/43558 * g++.dg/template/typedef31.C: New test. Added: trunk/gcc/testsuite/g++.dg/template/typedef31.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43558
[Bug preprocessor/7263] __extension__ keyword doesn't suppress warning on LL or ULL constants
--- Comment #22 from dodji at gcc dot gnu dot org 2010-03-30 14:06 --- I'll be looking into this. -- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2005-12-28 06:30:47 |2010-03-30 14:06:11 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7263
[Bug c++/43327] [4.4/4.5 regression] ICE in unifiy.c
--- Comment #5 from dodji at gcc dot gnu dot org 2010-03-26 09:33 --- Fixed in 4.5. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Summary|ICE in unifiy.c |[4.4/4.5 regression] ICE in ||unifiy.c http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43327
[Bug c++/43087] [4.5 Regression] ICE in tsubst, at cp/pt.c:9923
--- Comment #20 from dodji at gcc dot gnu dot org 2010-03-26 09:31 --- Should be fixed in 4.5 by the commit for PR c++/43206. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43087
[Bug c++/43206] [4.5 Regression] Revision 145440 caused ICE at cp/pt.c:9249
--- Comment #6 from dodji at gcc dot gnu dot org 2010-03-26 09:30 --- Fixed in 4.5 The bootstrap failure should be fixed by http://gcc.gnu.org/viewcvs?view=revision&revision=157743 -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43206
[Bug c++/43327] ICE in unifiy.c
--- Comment #4 from dodji at gcc dot gnu dot org 2010-03-26 09:21 --- Subject: Bug 43327 Author: dodji Date: Fri Mar 26 09:20:58 2010 New Revision: 157745 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157745 Log: Fix for PR c++/43327 gcc/cp/ChangeLog: PR c++/43327 * pt.c (add_to_template_args): Support NULL ARGS; (most_specialized_class): call coerce_template_parms on template arguments passed to get_class_bindings. Use add_to_template_args. (unify): Handle VAR_DECLs. gcc/testsuite/ChangeLog: PR c++/43327 * g++.dg/other/crash-10.C: New test. * g++.dg/other/crash-11.C: New test. Added: trunk/gcc/testsuite/g++.dg/other/crash-10.C trunk/gcc/testsuite/g++.dg/other/crash-11.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43327
[Bug c++/43206] [4.5 Regression] Revision 145440 caused ICE at cp/pt.c:9249
--- Comment #4 from dodji at gcc dot gnu dot org 2010-03-25 22:08 --- Subject: Bug 43206 Author: dodji Date: Thu Mar 25 22:08:33 2010 New Revision: 157730 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157730 Log: Fix candidate for PR c++/43206 gcc/cp/ChangeLog: PR c++/43206 * cp-tree.h (get_template_parms_at_level): Declare ... * pt.c (get_template_parms_at_level): ... new function. * typeck.c (get_template_parms_of_dependent_type): If a template type parm's DECL_CONTEXT isn't yet set, get its siblings from current_template_parms. Use get_template_parms_at_level. Remove useless test. (incompatible_dependent_types_p): If we get empty parms from just one of the template type parms we are comparing then the template parms are incompatible. gcc/testsuite/ChangeLog: PR c++/43206 * g++.dg/template/typedef30.C: New test case. Added: trunk/gcc/testsuite/g++.dg/template/typedef30.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43206
[Bug c++/43487] method locations are incorrect
--- Comment #6 from dodji at gcc dot gnu dot org 2010-03-25 18:21 --- I guess this would be useful for diagnostic too. -- dodji at gcc dot gnu dot org changed: What|Removed |Added CC||dodji at gcc dot gnu dot org Keywords||diagnostic http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43487
[Bug debug/41130] GCC should emit an index of publicly named entities
--- Comment #14 from dodji at gcc dot gnu dot org 2010-03-23 09:54 --- Not working on this atm. -- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|dodji at gcc dot gnu dot org|unassigned at gcc dot gnu ||dot org Status|ASSIGNED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41130
[Bug debug/42959] g++ does not emit DW_AT_default_value
--- Comment #6 from dodji at gcc dot gnu dot org 2010-03-23 09:33 --- Created an attachment (id=20167) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20167&action=view) Draft patch This draft patch emits a DW_AT_GNU_default_value_unrepresentable attribute flag when the default argument value cannot be represented because e.g. it involves temporaries. Tom, if the patch does what you want, I can propose it for discussion/inclusion for GCC 4.6? -- dodji at gcc dot gnu dot org changed: What|Removed |Added Attachment #20107|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
[Bug debug/39524] Duplicate C++ DW_TAG_variable breaking its DW_AT_location resolution
--- Comment #7 from dodji at gcc dot gnu dot org 2010-03-22 16:11 --- This got fixed in 4.4 but the PR never got closed. Closing now. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.4.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39524
[Bug c++/43375] [4.5 Regression] ICE during compiling SSE code
--- Comment #7 from dodji at gcc dot gnu dot org 2010-03-20 08:56 --- Fixed in 4.5 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43375
[Bug c++/43375] [4.5 Regression] ICE during compiling SSE code
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-03-15 11:00:04 |2010-03-20 08:56:16 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43375
[Bug c++/43375] [4.5 Regression] ICE during compiling SSE code
--- Comment #6 from dodji at gcc dot gnu dot org 2010-03-20 08:55 --- Subject: Bug 43375 Author: dodji Date: Sat Mar 20 08:55:32 2010 New Revision: 157590 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=157590 Log: Fix for PR c++/43375 gcc/cp/ChangeLog: PR c++/43375 * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC is NULL. * decl2.c (vague_linkage_p): Likewise. gcc/testsuite/g++.dg/ChangeLog: PR c++/43375 * g++.dg/abi/mangle42.C: New test. Added: trunk/gcc/testsuite/g++.dg/abi/mangle42.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl2.c trunk/gcc/cp/method.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43375
[Bug debug/42959] g++ does not emit DW_AT_default_value
--- Comment #5 from dodji at gcc dot gnu dot org 2010-03-18 14:38 --- (In reply to comment #4) As we discussed on IRC, it seems we'd need a way to express that we'd want the debugger to create a temporary, initialize it and later destroy it. DWARF can't express as of now. So we'll probably need some kind of extension. I am not sure exactly what extension yet though. I need to think about this. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
[Bug debug/37982] Extraneous DW_TAG_variable tag
--- Comment #10 from dodji at gcc dot gnu dot org 2010-03-18 12:53 --- Bug no more present in 4.5 -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37982
[Bug debug/37982] Extraneous DW_TAG_variable tag
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2008-11-01 11:03:52 |2010-03-18 12:52:49 date|| Target Milestone|--- |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37982
[Bug debug/7580] incorrect/unfortunate DWARF-2 info for static const int class members
--- Comment #8 from dodji at gcc dot gnu dot org 2010-03-18 12:52 --- Bug no more present in GCC 4.5 -- dodji at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7580
[Bug debug/7580] incorrect/unfortunate DWARF-2 info for static const int class members
--- Comment #7 from dodji at gcc dot gnu dot org 2010-03-18 12:50 --- Things have changed quite a bit in GCC 4.5 (trunk). Now for the code: class C { static const int foo; }; int main() { return 0; } GCC 4.5 will not generate any debug info for the class C at all, because it's not used. The compiler does that to minimize the size of debug info. Now if we write: class C { static const int foo; }; int main() { C c; return 0; } GCC generates debug info for C, and properly generates a DW_TAG_member for foo. Note how we instantiate C in main, but don't reference C::foo in any way. Here is a relevant DWARF portion of the assembly we get for this: .uleb128 0x2# (DIE (0x2d) DW_TAG_class_type) .ascii "C\0"# DW_AT_name .byte 0x1 # DW_AT_byte_size .byte 0x1 # DW_AT_decl_file (../../prtests/test.cc) .byte 0x2 # DW_AT_decl_line .long 0x49# DW_AT_sibling .uleb128 0x3# (DIE (0x37) DW_TAG_member) .ascii "foo\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file (../../prtests/test.cc) .byte 0x4 # DW_AT_decl_line .long .LASF3 # DW_AT_MIPS_linkage_name: "_ZN1C3fooE" .long 0x49# DW_AT_type .byte 0x1 # DW_AT_external .byte 0x1 # DW_AT_declaration .byte 0x0 # end of children of DIE 0x2d So I think we can close this bug now. -- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2003-06-09 15:32:16 |2010-03-18 12:50:30 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7580
[Bug debug/37982] Extraneous DW_TAG_variable tag
--- Comment #9 from dodji at gcc dot gnu dot org 2010-03-17 21:15 --- The situation has change quite a lot since gcc 4.3.0. Now a DW_TAG_member is emitted for the static member variable, and only one DW_TAG_variable is emitted to represent the variable definition. So I guess the bug can be closed now? With 4.5 I get this: <0>: Abbrev Number: 1 (DW_TAG_compile_unit) < c> DW_AT_producer: (indirect string, offset: 0x62): GNU C++ 4.5.0 20100301 (experimental) <10> DW_AT_language: 4(C++) <11> DW_AT_name: (indirect string, offset: 0x0): class.c <15> DW_AT_comp_dir: (indirect string, offset: 0x19): /home/dodji/devel/git/gcc-branches.git/gcc-PR37982.git/prtests <19> DW_AT_low_pc : 0x4004b4 <21> DW_AT_high_pc : 0x4004c0 <29> DW_AT_stmt_list : 0x0 <1><2d>: Abbrev Number: 2 (DW_TAG_structure_type) <2e> DW_AT_name: A <30> DW_AT_byte_size : 1 <31> DW_AT_decl_file : 2 <32> DW_AT_decl_line : 2 <33> DW_AT_sibling : <0x49> <2><37>: Abbrev Number: 3 (DW_TAG_member) <38> DW_AT_name: (indirect string, offset: 0x58): elsewhere <3c> DW_AT_decl_file : 2 <3d> DW_AT_decl_line : 3 <3e> DW_AT_MIPS_linkage_name: (indirect string, offset: 0x8): _ZN1A9elsewhereE <42> DW_AT_type: <0x49> <46> DW_AT_external: 1 <47> DW_AT_declaration : 1 [...] <0>: Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_producer: (indirect string, offset: 0x62): GNU C++ 4.5.0 20100301 (experimental) DW_AT_language: 4(C++) DW_AT_name: (indirect string, offset: 0x8d): class2.c DW_AT_comp_dir: (indirect string, offset: 0x19): /home/dodji/devel/git/gcc-branches.git/gcc-PR37982.git/prtests DW_AT_low_pc : 0x4004c0 DW_AT_high_pc : 0x4004c0 DW_AT_stmt_list : 0x46 <1>: Abbrev Number: 2 (DW_TAG_structure_type) DW_AT_name: A DW_AT_byte_size : 1 DW_AT_decl_file : 1 DW_AT_decl_line : 2 DW_AT_sibling : <0xde> <2>: Abbrev Number: 3 (DW_TAG_member) DW_AT_name: (indirect string, offset: 0x58): elsewhere DW_AT_decl_file : 1 DW_AT_decl_line : 3 DW_AT_MIPS_linkage_name: (indirect string, offset: 0x8): _ZN1A9elsewhereE DW_AT_type: <0xde> DW_AT_external: 1 DW_AT_declaration : 1 [...] <1>: Abbrev Number: 6 (DW_TAG_variable) DW_AT_specification: <0xcc> DW_AT_decl_file : 2 DW_AT_decl_line : 2 DW_AT_location: 9 byte block: 3 ac 5 40 0 0 0 0 0 (DW_OP_addr: 4005ac) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37982
[Bug c++/43327] ICE in unifiy.c
--- Comment #3 from dodji at gcc dot gnu dot org 2010-03-17 14:55 --- A patch was proposed at http://gcc.gnu.org/ml/gcc-patches/2010-03/msg00662.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43327
[Bug c++/43087] [4.5 Regression] ICE in tsubst, at cp/pt.c:9923
--- Comment #19 from dodji at gcc dot gnu dot org 2010-03-16 10:55 --- FWIW, I have tested the patch posted for PR c++/43206 and it fixes this one too. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43087
[Bug c++/43327] ICE in unifiy.c
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-03-13 00:59:53 |2010-03-16 09:14:54 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43327
[Bug debug/42959] g++ does not emit DW_AT_default_value
--- Comment #3 from dodji at gcc dot gnu dot org 2010-03-15 10:45 --- Created an attachment (id=20107) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20107&action=view) Draf patch Thanks Jakub for the review. This updated patch should address your comments. -- dodji at gcc dot gnu dot org changed: What|Removed |Added Attachment #20085|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
[Bug debug/42959] g++ does not emit DW_AT_default_value
--- Comment #1 from dodji at gcc dot gnu dot org 2010-03-11 16:17 --- Created an attachment (id=20085) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20085&action=view) Draft patch Please find below a copy/paste of the introductory comment of the attached patch. Basically the value of DW_AT_default_value -- as explained by the DWARF4 draft specification -- is either a constant if the default argument of the function is a constant, or a reference to a DIE if the value of the default argument is a language construct like a variable. I believe there are cases however where it's hard (impossible yet?) to represent the value of DW_AT_default_value. For instance, when the default argument of a function F is an arbitrary expression that yields temporaries. In that case, the default argument expression must be evaluated in the context of the caller of F. Just taking in account the default argument expression in the context of the F declaration is not enough. I am not sure we can represent that in DWARF today, can we? So this patch is limited to the simple cases were the default argument is either a constant or a variable that does not involve any temporary. When a default argument expression involves some temporaries, no debug info is generated for it. For a class, it appears that we were calling finish_struct right before parsing default arguments of the member functions. finish_struct does the layout of the class. So we do the layout of the class before parsing the defaut arguments because they can refer to parts of the struct that need to be constructed before. The problem is finish_struct also generates debug info for the class. That means, when we generate debug info for the struct, we don't have any information ready about the default arguments. The patch allows finish_struct to not emit debug info systematically. We can then keep calling finish_struct "early" and emit debug info only after we parsed the default arguments. We do something similar at class template instantiation time. We emit debug info only after the template arguments are substituted into the default arguments expressions. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
[Bug debug/42959] g++ does not emit DW_AT_default_value
-- dodji at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |dodji at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-03-09 14:07:28 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
[Bug c++/43087] [4.5 Regression] ICE in tsubst, at cp/pt.c:9923
--- Comment #18 from dodji at gcc dot gnu dot org 2010-03-05 20:44 --- (In reply to comment #13) > It may be a different issue since the original testcase > compiles with older gcc. How about this reduced test case that compiles with older (4.4) gcc: template struct NumericTraits{ typedef A TInputImage;}; template class CovariantVector{}; template struct Image{ typedef C PixelType;}; template class F { typedef H G; typedef typename NumericTraits::RealType InputRealType; }; template::TInputImage> > > class XXX{}; XXX > x; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43087