[Bug c++/46852] [4.6 Regression] ICE: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in cp_parser_class_specifier, at cp/parser.c:16947
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46852 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #3 from Nathan Froyd 2010-12-17 15:14:03 UTC --- Fixed.
[Bug c++/46890] [4.6 Regression] Failed to compile scummvm's player_v4a.cpp
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46890 Nathan Froyd changed: What|Removed |Added Status|NEW |ASSIGNED CC||froydnj at gcc dot gnu.org AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org |
[Bug target/44606] Wrong SPE floating point during computation
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606 --- Comment #11 from Nathan Froyd 2010-12-30 15:47:46 UTC --- Author: froydnj Date: Thu Dec 30 15:47:43 2010 New Revision: 168347 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=168347 Log: gcc/ PR target/44606 * reload1.c (choose_reload_regs): Don't look for equivalences for output reloads of constant loads. gcc/testsuite/ PR target/44606 * gcc.dg/pr44606.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr44606.c Modified: trunk/gcc/ChangeLog trunk/gcc/reload1.c trunk/gcc/testsuite/ChangeLog
[Bug target/44606] Wrong SPE floating point during computation
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606 --- Comment #13 from Nathan Froyd 2011-01-31 21:53:15 UTC --- Author: froydnj Date: Mon Jan 31 21:53:12 2011 New Revision: 169452 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169452 Log: gcc/ Backport from mainline: 2010-12-30 Nathan Froyd PR target/44606 * reload1.c (choose_reload_regs): Don't look for equivalences for output reloads of constant loads. gcc/testsuite/ Backport from mainline: 2010-12-30 Nathan Froyd PR target/44606 * gcc.dg/pr44606.c: New test. Added: branches/gcc-4_5-branch/gcc/testsuite/gcc.dg/pr44606.c Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/reload1.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
[Bug target/44606] Wrong SPE floating point during computation
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606 --- Comment #14 from Nathan Froyd 2011-02-01 02:11:57 UTC --- Author: froydnj Date: Tue Feb 1 02:11:54 2011 New Revision: 169465 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169465 Log: gcc/ Backport from mainline: 2010-12-30 Nathan Froyd PR target/44606 * reload1.c (choose_reload_regs): Don't look for equivalences for output reloads of constant loads. gcc/testsuite/ Backport from mainline: 2010-12-30 Nathan Froyd PR target/44606 * gcc.dg/pr44606.c: New test. Added: branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr44606.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/reload1.c branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
[Bug target/44606] Wrong SPE floating point during computation
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #15 from Nathan Froyd 2011-02-01 02:12:33 UTC --- Fixed everywhere.
[Bug c++/46890] [4.6 Regression] Failed to compile scummvm's player_v4a.cpp
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46890 --- Comment #10 from Nathan Froyd 2011-02-03 17:16:21 UTC --- Author: froydnj Date: Thu Feb 3 17:16:17 2011 New Revision: 169797 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169797 Log: gcc/c-family/ PR c++/46890 * c-common.h (keyword_is_decl_specifier): Declare. * c-common.c (keyword_is_decl_specifier): Define. (keyword_is_function_specifier): New function. gcc/cp/ PR c++/46890 * parser.c (cp_parser_class_specifier): Fix setting of want_semicolon. gcc/testsuite/ PR c++/46890 * g++.dg/parser/semicolon3.C: Adjust. * g++.dg/parser/semicolon4.C: New testcase. * g++.dg/pr46890.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/parse/semicolon4.C trunk/gcc/testsuite/g++.dg/pr46890.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/parse/semicolon3.C
[Bug c/47786] tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in c_type_hash, at c-family/c-common.c:4066
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47786 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011.02.17 17:05:22 AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #2 from Nathan Froyd 2011-02-17 17:05:22 UTC --- Created attachment 23387 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23387 untested fix Ugh, DECL_CHAIN fallout. Mine.
[Bug c++/46868] [4.6 Regression] ICE: SIGSEGV splay_tree_splay (splay-tree.c:149) on invalid code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46868 --- Comment #5 from Nathan Froyd 2011-02-23 16:44:25 UTC --- Author: froydnj Date: Wed Feb 23 16:44:18 2011 New Revision: 170440 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170440 Log: fix PR c++/46868 gcc/cp/ PR c++/46868 * parser.c (cp_parser_class_specifier): Require a closing brace to attempt error recovery. gcc/testsuite/ PR c++/46868 * g++.dg/pr46868.C: New test. * g++.dg/parse/parameter-declaration-1.C: Adjust. * g++.dg/parse/error14.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/pr46868.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/parse/error14.C trunk/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
[Bug target/43810] [4.5 Regression] linking results in undefined references to _savegpr_* _restgpr_*_x
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810 --- Comment #17 from Nathan Froyd 2011-02-23 18:06:38 UTC --- Author: froydnj Date: Wed Feb 23 18:06:29 2011 New Revision: 170443 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170443 Log: PR target/43810 Backport from mainline: 2010-07-23 Nathan Froyd * config.host (powerpc*-eabispe*): Set tmake_file. (powerpc*-eabi*): Likewise. * config/rs6000/t-ppccomm (EXTRA_PARTS): Add crtbegin, crtend, crtbeginS, crtendS, crtbeginT. Modified: branches/gcc-4_5-branch/libgcc/ChangeLog branches/gcc-4_5-branch/libgcc/config.host branches/gcc-4_5-branch/libgcc/config/rs6000/t-ppccomm
[Bug target/43810] [4.5 Regression] linking results in undefined references to _savegpr_* _restgpr_*_x
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810 Nathan Froyd changed: What|Removed |Added Status|WAITING |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #18 from Nathan Froyd 2011-02-23 18:10:02 UTC --- Fixed on the 4.5 branch. If there are still problems with --enable-target-optspace, please open a separate bug for those.
[Bug c++/46868] [4.6 Regression] ICE: SIGSEGV splay_tree_splay (splay-tree.c:149) on invalid code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46868 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #6 from Nathan Froyd 2011-02-23 18:10:43 UTC --- Fixed.
[Bug c++/58272] New: unnecessary vtables emission for pure abstract classes
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58272 Bug ID: 58272 Summary: unnecessary vtables emission for pure abstract classes Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org CC: hubicka at ucw dot cz Consider the following testcase: class Interface { public: virtual int f() = 0; }; class Concrete : public Interface { public: virtual int f(); }; int Concrete::f() { return 2; } Concrete* do_stuff() { Concrete* c = new Concrete(); return c; } int call_f() { Interface* i = do_stuff(); return i->f(); } compiling this on x86-64 with: g++ -fno-exceptions -S -o - -O2 vtables.cpp -fno-rtti produces output with a vtable for Interface, which is completely unused in the compilation unit. (Still does it when omitting -fno-rtti, so it's not a missing check for typeinfo emission or similar.) Mozilla has a fair number of these and even though one can eliminate them via --gc-sections, they still take up time to assemble, write to disk, etc. etc. Honza and I were talking about them and we did not know whether it was an ABI requirement that they be emitted or merely a bug in the compiler. G++ appears to have some smarts about emitting the vtable for Concrete, so I am somewhat surprised that it doesn't have similar smarts for the vtable for Interface.
[Bug c++/16189] obfuscated error message for missing semicolon after declaration in C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16189 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #12 from Nathan Froyd 2011-09-08 15:51:11 UTC --- Probably. I think I didn't close it previously because I hadn't tested the examples in comment 3. But since those are perverse examples anyway, I'm going to go ahead and close the bug. If somebody doesn't like it, they can reopen, preferably with a real-world example where the compiler doesn't do the preferred thing.
[Bug c++/42129] ICE in pointer difference with sizeof(int)>sizeof(void *)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42129 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011-11-07 Ever Confirmed|0 |1 --- Comment #2 from Nathan Froyd 2011-11-07 00:06:11 UTC --- I can confirm that the problem still happens with the given options (-mh -mn -mint32). I don't know much about this target, but the equivalent C front-end code has: /* Determine integer type to perform computations in. This will usually be the same as the result type (ptrdiff_t), but may need to be a wider type if pointers for the address space are wider than ptrdiff_t. */ if (TYPE_PRECISION (restype) < TYPE_PRECISION (TREE_TYPE (op0))) inttype = lang_hooks.types.type_for_size (TYPE_PRECISION (TREE_TYPE (op0)), 0); else inttype = restype; and uses that as the result of the division, with a conversion to restype (ptrdiff_type_node) as in Paolo's patch. I think it'd be better to try to make the C and C++ front-ends as close as possible on this; I can try a patch that combines the above and Paolo's, but I'm not sure I'd get to it before stage 1 closes.
[Bug c++/87494] New: hidden visibility constexpr variables left unevaluated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87494 Bug ID: 87494 Summary: hidden visibility constexpr variables left unevaluated Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org Target Milestone: --- The following testcase, reduced from Firefox: #pragma GCC visibility push(hidden) typedef int size_t; class A; class B { A *m_fn1() const; bool mBaseVal; }; class A {}; class nsStaticAtom : public A {}; namespace mozilla { namespace detail { struct GkAtoms { enum { F, T, AtomsCount }; nsStaticAtom mAtoms[AtomsCount]; } extern gGkAtoms; } } class nsGkAtoms { public: static constexpr nsStaticAtom *_false = &mozilla::detail::gGkAtoms.mAtoms[size_t(mozilla::detail::GkAtoms::F)]; static constexpr nsStaticAtom *_true = &mozilla::detail::gGkAtoms.mAtoms[size_t(mozilla::detail::GkAtoms::T)]; }; A *B::m_fn1() const { return mBaseVal ? nsGkAtoms::_true : nsGkAtoms::_false; } when compiled with x86-64 GCC version 8.2, gives: cmpb$0, (%rdi) movq_ZN9nsGkAtoms6_falseE(%rip), %rax je .L1 movq_ZN9nsGkAtoms5_trueE(%rip), %rax .L1: ret which leads to link failures, because neither symbol is defined. Removing the #pragma gives correct output: cmpb$0, (%rdi) movq_ZN7mozilla6detail8gGkAtomsE@GOTPCREL(%rip), %rax jne .L3 ret .L3: addq$1, %rax ret Very curiously, so does changing B::m_fn1() to: A *B::m_fn1() const { return mBaseVal ? (nsStaticAtom*)nsGkAtoms::_true : nsGkAtoms::_false; } which gives slightly different, but still correct, assembly: leaq1+_ZN7mozilla6detail8gGkAtomsE(%rip), %rax cmpb$0, (%rdi) leaq-1(%rax), %rdx cmove %rdx, %rax ret
[Bug c++/87494] hidden visibility constexpr variables left unevaluated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87494 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2018-10-03 Ever confirmed|0 |1 --- Comment #1 from Nathan Froyd --- Giving gGkAtoms default visibility also works to make the bug go away.
[Bug c++/87494] hidden visibility constexpr variables left unevaluated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87494 Nathan Froyd changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|INVALID |--- --- Comment #4 from Nathan Froyd --- (In reply to Andrew Pinski from comment #2) > I don't think this is techincally a bug. It might be a missed optimization > but not a bug. You still need a definition even for constexpr if used > outside of a constexpr usage IIRC. You can only use `constexpr` on variable definitions, not declarations. So I already have a definition, and I can't imagine where another one should be added. FWIW, clang and MSVC both accept this code without problems.
[Bug c++/56152] New: explicit template instantiation of protected template function redeclared as public fails
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56152 Bug #: 56152 Summary: explicit template instantiation of protected template function redeclared as public fails Classification: Unclassified Product: gcc Version: 4.4.7 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: froy...@gcc.gnu.org Compiling the following testcase: enum Flavor { A, B }; template class C { protected: template static T f(T x) { if (F == A) return x; else return ~x; } }; class AC : public C { private: typedef C super; public: using super::f; }; unsigned int explicit_variable(unsigned int x) { unsigned int (*func)(unsigned int) = AC::f; return func(x); } unsigned int explicit_call_instantiation(unsigned int x) { return AC::f(x); } unsigned int implicit_call_instantiation(unsigned int x) { return AC::f(x); } produces: template-instantiation-bug.cpp: In function ‘unsigned int explicit_variable(unsigned int)’: template-instantiation-bug.cpp:11:12: error: ‘static T C::f(T) [with T = unsigned int, Flavor F = (Flavor)0u]’ is protected template-instantiation-bug.cpp:32:44: error: within this context template-instantiation-bug.cpp:11:12: error: ‘static T C::f(T) [with T = unsigned int, Flavor F = (Flavor)0u]’ is protected template-instantiation-bug.cpp:32:44: error: within this context template-instantiation-bug.cpp:11:12: error: ‘static T C::f(T) [with T = unsigned int, Flavor F = (Flavor)0u]’ is protected template-instantiation-bug.cpp:32:44: error: within this context It is not obvious to me that this is the right answer, given that both explicit_call_instantiation and implicit_call_instantiation work. All versions of GCC that I've tested reject the testcase (4.4 - 4.8). Clang (2.8 - 3.2) accepts the testcase. MSVC version 9 rejects it. My MSVC version 10 installation appears to be busted, or I'd test it there too.
[Bug libstdc++/71073] New: debug-mode headers should include #pragma GCC system_header directives
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71073 Bug ID: 71073 Summary: debug-mode headers should include #pragma GCC system_header directives Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org Target Milestone: --- This change would help analysis tools cope with the code in the debug-mode headers, usually by ignoring it.
[Bug rtl-optimization/79148] New: stack addresses are spilled to stack slots on x86-64 at -Os instead of rematerializing the addresses
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79148 Bug ID: 79148 Summary: stack addresses are spilled to stack slots on x86-64 at -Os instead of rematerializing the addresses Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org Target Milestone: --- Noticed this while browsing around Firefox source code compiled with GCC 5.4; a colleague confirms that this happens with 6.3 as well. Compiling: https://people.mozilla.org/~nfroyd/Unified_cpp_widget0.ii.gz (Tried to get it under the attachment limit with xz, didn't happen) with options: -mtune=generic -march=x86-64 -g -Os -std=gnu++11 -fPIC -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -freorder-blocks -fno-omit-frame-pointer -fstack-protector-strong gives, for the function _ZN7mozilla6widget11GfxInfoBase20GetFeatureStatusImplEiPiR18nsAString_internalRK8nsTArrayINS0_13GfxDriverInfoEER19nsACString_internalPNS0_15OperatingSystemE a bit of code that looks like: .LVL3402: leaq-784(%rbp), %rax [1a] .LVL3403: movq%rax, %rdi .LVL3404: movq%rax, -816(%rbp) [1b] call_ZN12nsAutoStringC1Ev .LVL3405: .loc 14 887 0 leaq-624(%rbp), %rax [2a] movq%rax, %rdi movq%rax, -824(%rbp) [2b] call_ZN12nsAutoStringC1Ev .LVL3406: .loc 14 888 0 leaq-464(%rbp), %rax [3a] movq%rax, %rdi movq%rax, -800(%rbp) [3b] call_ZN12nsAutoStringC1Ev .LVL3407: .loc 14 889 0 movq(%r12), %rax movq-816(%rbp), %rsi [1c] movq%r12, %rdi call*104(%rax) .LVL3408: .loc 14 890 0 testl %eax, %eax js .L2479 movq(%r12), %rax movq-824(%rbp), %rsi [2c] movq%r12, %rdi call*120(%rax) .LVL3409: .loc 14 889 0 testl %eax, %eax js .L2479 .loc 14 891 0 movq(%r12), %rax movq-800(%rbp), %rsi [3c] movq%r12, %rdi call*168(%rax) The problem here, for each of the trio of instructions marked [1], [2], and [3], is that the instructions [1b], [2b], and [3b] that store the stack addresses are really unnecessary; replacing [1c], [2c], and [3c] with the `lea` instructions from [1a], [2a], and [3a] is the same size and doesn't require the stack slot storage, so we could eliminate those instructions ([1b], [2b], and [3b]) and (possibly) make the stack frame smaller as well. I think rematerializing the stack addresses on x86/x86-64 ought always to be a win in terms of size (I don't know whether you'd want to make the same choices when compiling for speed); I think it'd be a similar win for RISC-y chips, at least so long as the stack frame sizes are reasonably small.
[Bug libstdc++/69388] Allow functexcept.cc definitions to be replaced
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69388 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-01-24 CC||froydnj at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Nathan Froyd --- Firefox's custom implementation of the __throw_* functions also wound up biting us when libc++ started defining functions with identical names: https://bugzilla.mozilla.org/show_bug.cgi?id=1329520
[Bug c++/82888] New: terrible code generation for initialization of POD array members vs. clang
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82888 Bug ID: 82888 Summary: terrible code generation for initialization of POD array members vs. clang Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org CC: jseward at acm dot org, mh+gcc at glandium dot org Target Milestone: --- Consider the testcase: class A { public: A(); private: unsigned char mStorage[4096]; }; A::A() : mStorage() {} gcc -O2 generates a loop that looks like: .L2: movb$0, (%rdi) addq$1, %rdi cmpq%rdi, %rax jne .L2 which is terribly slow. (The original motivation for this bug report came from an -Og compilation, where you get: movl$4095, %eax .L3: testq %rax, %rax js .L1 movb$0, (%rdi) addq$1, %rdi subq$1, %rax jmp .L3 which is even worse.) clang -O2 (or -O1), on the other hand, generates: xorl%esi, %esi movl$4096, %edx # imm = 0x1000 jmp memset # TAILCALL which is ideal, and opens up opportunities for the backend to lower the memset to something intelligent (e.g. rep stos)
[Bug c++/82888] terrible code generation for initialization of POD array members vs. clang
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82888 --- Comment #3 from Nathan Froyd --- Thanks, I didn't think to test -O3. Do we get the memset at -O3 because loop idiom recognition is enabled? Producing the memset upfront probably generates better code for all cases, even if the frontend code is a little more complicated.
[Bug c++/78323] New: pathological code generation for long logical expression with temporary objects
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78323 Bug ID: 78323 Summary: pathological code generation for long logical expression with temporary objects Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org Target Milestone: --- Created attachment 40030 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40030&action=edit logical-or.cpp Compiling the attached testcase -O2 -std=c++11 reveals a significant disparity in the code GCC produces versus clang: froydnj@thor:~$ gcc -O2 -std=c++11 -c logical-or-gcc.cpp froydnj@thor:~$ clang -O2 -std=c++11 -c logical-or.cpp -o logical-or-clang.o froydnj@thor:~$ size logical-or*.o textdata bss dec hex filename 633354 0 0 633354 9aa0a logical-or-gcc.o 17628 0 0 1762844dc logical-or-clang.o That was with GCC 4.9; a colleague tried it with GCC 6.2.0 and got: textdata bss dechex filename 591843 80591851 907eb logical-or.o which is some kind of improvement, but not enough of one. I gone over the assembly with a fine-toothed comb or looked at the tree dumps, but I think GCC is falling into some kind of O(n^2) situation where it sets a flag for the constructed status of every temporary object after each exit from the chained condition.
[Bug middle-end/65111] New: null checks on pointers created from references not optimized away
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65111 Bug ID: 65111 Summary: null checks on pointers created from references not optimized away Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org Compiling the C++ code: #include void init(int& p) { new (&p) float(3.14f); } yields (GCC 4.9.1): _Z4initRi: testq%rdi, %rdi je.L1 movl$0x4048f5c3, (%rdi) .L1: rep ret Compiling the equivalent code with clang (3.5 and 3.6-prerelease) yields: _Z4initRi: # @_Z4initRi movl$1078523331, (%rdi) # imm = 0x4048F5C3 retq because clang has determined that &p cannot be null.
[Bug c++/52231] [missed optimization/diagnostics] address-of-reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52231 --- Comment #5 from Nathan Froyd --- FWIW, clang (>= 3.5) understands how to optimize the original testcase in comment 0; it even issues a -Wtautological-undefined-compare warning. This also showed up in the context of trying to hint to the compiler that placement new didn't need null checks: #include void init(int& p) { new (&p) float(3.14f); } which clang understands how to optimize and GCC does not.
[Bug c++/52231] [missed optimization/diagnostics] address-of-reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52231 --- Comment #7 from Nathan Froyd --- (In reply to Jonathan Wakely from comment #6) > (In reply to Nathan Froyd from comment #5) > > This also showed up in the context of trying to hint to the compiler that > > placement new didn't need null checks: > > That's only become true quite recently: > http://open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1748 Ah, thanks for the pointer. I assumed that the compiler would be able to infer that |&reference| would be non-null and eliminate the mandatory check regardless, but it's nice to have spec language to back this up. > See also PR 35878 Again, thanks for the pointer. If we can do this in the frontend now, that might be simple enough that I could take a look at it myself (assuming it hasn't been done and that PR simply didn't get referenced).
[Bug middle-end/61762] New: failure to optimize memcpy from constant string
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61762 Bug ID: 61762 Summary: failure to optimize memcpy from constant string Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: froydnj at gcc dot gnu.org There's probably a duplicate of this, but GCC HEAD on the following testcase: unsigned int f() { static const char string[] = "Private"; unsigned int priv; __builtin_memcpy(&priv, &string[0], sizeof(priv)); return priv; } produces for x86-64: f: .LFB0: .cfi_startproc movl_ZZ1fvE6string(%rip), %eax ret .cfi_endproc Compare clang (~3.0) for x86-64: f: .Ltmp0: .cfi_startproc # BB#0: movl$1986622032, %eax # imm = 0x76697250 ret
[Bug middle-end/61762] failure to optimize memcpy from constant string
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61762 --- Comment #17 from Nathan Froyd --- (In reply to Richard Biener from comment #15) > Instead aligned the string. This is kind of unfortunate, as the motivating testcase was something more like: ... static const char string[] = "Private"; unsigned int priv, riva, ivat, vate; memcpy(&priv, &string[0], sizeof(priv)); memcpy(&riva, &string[1], sizeof(riva)) memcpy(&ivat, &string[2], sizeof(ivat)); memcpy(&vate, &string[3], sizeof(vate)); /* proceed to use priv, riva, ivate, vate for comparisons */ So on strict-align targets, even if the source string was aligned (and that has to be by user-declaration?) we wouldn't catch the latter three?
[Bug c/47786] tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in c_type_hash, at c-family/c-common.c:4066
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47786 --- Comment #4 from Nathan Froyd 2011-03-07 15:32:29 UTC --- Author: froydnj Date: Mon Mar 7 15:32:25 2011 New Revision: 170739 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170739 Log: PR c/47786 * c-common.c (c_type_hash): Call list_length instead of iterating through DECL_CHAIN. Rename 'i' to 'n_elements'. Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c
[Bug c/47786] tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in c_type_hash, at c-family/c-common.c:4066
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47786 Nathan Froyd changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #5 from Nathan Froyd 2011-03-07 15:34:17 UTC --- Fixed.
[Bug middle-end/14840] fold tree_code_type[CST] and tree_code_length[CST] in GCC itself
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14840 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||WONTFIX --- Comment #10 from Nathan Froyd 2011-03-22 00:29:53 UTC --- This bug has been open for almost five years. When I tried Andrew's posted patch, I think bootstrap slowed down slightly--possibly because of the extra parsing and logic in TREE_CODE_CLASS? Anyway, LTO should take care of this. I'm going to close this; if somebody wants to keep the bug around for posterity, feel free to reopen.
[Bug target/4828] can't install gcc for h8300-hms target
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4828 --- Comment #5 from Nathan Froyd 2011-03-25 11:47:17 UTC --- Author: froydnj Date: Fri Mar 25 11:47:13 2011 New Revision: 171447 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=171447 Log: PR bootstrap/4828 Revert: 2011-03-24 Nathan Froyd * function.c (instantiate_virtual_regs): Use FOR_EACH_BB and FOR_BB_INSNS_SAFE to iterate through insns. Re-indent. (pass_instantiate_virtual_regs): Require PROP_cfglayout. * passes.c (init_optimization_passes): Move pass_instantiate_virtual_regs after pass_into_cfg_layout_mode. Modified: trunk/gcc/ChangeLog trunk/gcc/function.c trunk/gcc/passes.c
[Bug bootstrap/48282] [4.7 Regression] Bootstrap failure
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48282 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #3 from Nathan Froyd 2011-03-25 11:49:29 UTC --- Patch reverted in r171447; I botched the ChangeLog entry, so it didn't show up automagically here.
[Bug target/46548] Build arm gcc failure after patch 165463
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46548 --- Comment #5 from Nathan Froyd 2011-04-05 16:33:00 UTC --- I believe this was fixed by the fix for PR 46040.
[Bug bootstrap/48469] [4.7 Regression] bootstrap failure
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48469 --- Comment #2 from Nathan Froyd 2011-04-05 19:33:52 UTC --- Author: froydnj Date: Tue Apr 5 19:33:49 2011 New Revision: 171998 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=171998 Log: PR bootstrap/48469 * combine.c (combine_instructions): #ifdef AUTO_INC_DEC links declaration. Modified: trunk/gcc/ChangeLog trunk/gcc/combine.c
[Bug bootstrap/48469] [4.7 Regression] bootstrap failure
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48469 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #4 from Nathan Froyd 2011-04-05 20:36:15 UTC --- No, it's not the same change. If you like, you could open a different PR and I could attach a patch I think works.
[Bug bootstrap/48471] ia64-*-* does not bootstrap due to unused variables in dbxout.c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48471 --- Comment #2 from Nathan Froyd 2011-04-05 20:45:20 UTC --- Created attachment 23888 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23888 untested patch
[Bug bootstrap/48471] ia64-*-* does not bootstrap due to unused variables in dbxout.c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48471 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #3 from Nathan Froyd 2011-04-05 20:45:38 UTC --- Does the attached patch solve things?
[Bug bootstrap/48471] [4.7 Regression] ia64-*-* does not bootstrap due to unused variables in dbxout.c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48471 --- Comment #6 from Nathan Froyd 2011-04-06 01:06:44 UTC --- Author: froydnj Date: Wed Apr 6 01:06:42 2011 New Revision: 172016 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172016 Log: PR bootstrap/48471 * dbxout.c (debug_nesting, symbol_queue, symbol_queue_index): Move these... (symbol_queue_size, DBXOUT_DECR_NESTING): ...and these... (DBXOUT_DECR_NESTING_AND_RETURN): ...and this under #ifdef DBX_DEBUGGING_INFO. Modified: trunk/gcc/ChangeLog trunk/gcc/dbxout.c
[Bug bootstrap/48471] [4.7 Regression] ia64-*-* does not bootstrap due to unused variables in dbxout.c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48471 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #7 from Nathan Froyd 2011-04-06 01:07:14 UTC --- Fixed on trunk.
[Bug objc++/48479] [4.7 Regression] Many ICEs in the obj-c++.dg test suite on *-apple-darwin*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48479 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #1 from Nathan Froyd 2011-04-06 13:39:29 UTC --- Bleh, that would be my change. I think what's required is making the CONST_DECL its own case there.
[Bug objc++/48479] [4.7 Regression] Many ICEs in the obj-c++.dg test suite on *-apple-darwin*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48479 --- Comment #2 from Nathan Froyd 2011-04-06 13:41:01 UTC --- Created attachment 23900 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23900 untested patch
[Bug objc++/48479] [4.7 Regression] Many ICEs in the obj-c++.dg test suite on *-apple-darwin*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48479 --- Comment #5 from Nathan Froyd 2011-04-14 18:46:48 UTC --- Author: froydnj Date: Thu Apr 14 18:46:34 2011 New Revision: 172441 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172441 Log: PR objc++/48479 * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable and return immediately. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c
[Bug objc++/48479] [4.7 Regression] Many ICEs in the obj-c++.dg test suite on *-apple-darwin*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48479 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #6 from Nathan Froyd 2011-04-14 18:48:23 UTC --- Fixed.
[Bug c/48797] GCC does inline variadic function, crashing on i386, when non-GNU stdarg.h is used
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48797 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||INVALID --- Comment #5 from Nathan Froyd 2011-04-28 03:12:58 UTC --- According to http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=arch/i386/bits/stdarg.h;h=6b1830d210cfb78ce307bc0a5d0e685f22a3d09c;hb=HEAD , va_foo is being defined with casting games. Therefore, as Andrew has already said, this bug report is invalid.
[Bug lto/48851] lto-plugin.c:224:7: error: missing sentinel in function call [-Werror=format]
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48851 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #3 from Nathan Froyd 2011-05-03 14:19:37 UTC --- Can you attach preprocessed source to the issue (use the -save-temps option)? I wonder if OpenBSD's headers are defining NULL in some odd way. It's also possible that recent refactorings to __attribute__((sentinel)) broke something...
[Bug c++/48934] no rejection reason given for SFINAE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48934 Nathan Froyd changed: What|Removed |Added CC||jason at gcc dot gnu.org --- Comment #9 from Nathan Froyd 2011-05-09 17:10:31 UTC --- (In reply to comment #8) > The point of that example is that even clang's "substitution failed" could be > improved, because T is substituted successfully into the return type > "S1::type" but not into the parameter type "S1::typo" (in the general > case they wouldn't both use S1 and there could be several parameters) > > So a better reason would be "substitution failed for parameter 1" but I don't > know how easy that is, if it's even possible in the current G++ codebase It is possible; it's just a bit tedious, since you'd need to thread the unification_info all the way through template substitution, not just function type deduction. I don't know how Jason would feel about the extra parameter and corresponding call overhead to tsubst, though. Jason? (IIUC, doing this would also enable you to precisely report which sub-expression substitution failed in.) The hackish way of doing this would be to notice during deduction that substitution of a function type failed, then go back and substitute piece-wise into return type and argument types until you find the failing type. That could be done without the changes above, but it'd be a bit gross.
[Bug middle-end/48965] [4.7 Regression] FAIL: gcc.dg/pr45055.c
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48965 --- Comment #5 from Nathan Froyd 2011-05-11 17:12:57 UTC --- No. The list is sorted by UID, but the numbers printed out are not the UID; they are the order in which things were pushed on to the list. Full diff, with duplicate entries and UID information: --- pr45055.gkd2011-05-11 13:07:54.424168821 -0400 +++ pr45055.gk.gkd2011-05-11 13:07:54.600692860 -0400 @@ -1,30 +1,36 @@ Declarations used by foo, sorted by DECL_UID: -8, uid 1559: static int colormap[10]; 11, uid 1559: static int colormap[10]; -6, uid 1560: extern int bar (); -7, uid 1560: extern int bar (); +14, uid 1559: static int colormap[10]; 9, uid 1560: extern int bar (); 10, uid 1560: extern int bar (); -19, uid 1560: extern int bar (); -21, uid 1560: extern int bar (); -23, uid 1560: extern int bar (); -4, uid 1577: void ; -16, uid 1577: void ; -18, uid 1577: void ; +12, uid 1560: extern int bar (); +13, uid 1560: extern int bar (); +25, uid 1560: extern int bar (); +27, uid 1560: extern int bar (); +29, uid 1560: extern int bar (); +5, uid 1577: void ; +20, uid 1577: void ; +24, uid 1577: void ; 2, uid 1578: void ; 3, uid 1578: void ; -5, uid 1578: void ; -14, uid 1578: void ; -15, uid 1578: void ; +4, uid 1578: void ; +6, uid 1578: void ; +7, uid 1578: void ; +8, uid 1578: void ; 17, uid 1578: void ; -20, uid 1578: void ; +18, uid 1578: void ; +19, uid 1578: void ; +21, uid 1578: void ; +22, uid 1578: void ; +23, uid 1578: void ; +26, uid 1578: void ; 1, uid 1581: void ; -13, uid 1581: void ; -22, uid 1581: void ; +16, uid 1581: void ; +28, uid 1581: void ; 0, uid 2680: void ; -12, uid 2680: void ; -24, uid 2680: void ; +15, uid 2680: void ; +30, uid 2680: void ; ;; Function (foo)
[Bug c++/2288] Variable declared in for-loop-header is in wrong scope
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=2288 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #18 from Nathan Froyd 2011-05-20 18:34:08 UTC --- Peter, can you apply Janis's patch now that we're in 4.7 stage 1?
[Bug tree-optimization/45950] [4.6 Regression] ICE segmentation fault compiling __udivdi3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45950 --- Comment #5 from Nathan Froyd 2010-10-09 11:44:05 UTC --- Author: froydnj Date: Sat Oct 9 11:44:00 2010 New Revision: 165220 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=165220 Log: PR tree-optimization/45950 * tree-ssa-sccvn.c (init_vn_nary_op_from_pieces): Consult length before initializing vno->op. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-sccvn.c
[Bug c++/46065] [4.6 Regression] ICE: tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in poplevel_named_label_1, at cp/decl.c:477
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46065 Nathan Froyd changed: What|Removed |Added Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org | --- Comment #2 from Nathan Froyd 2010-10-20 13:46:08 UTC --- I will fix this shortly after stage 3 starts.
[Bug c/45062] [4.6 Regression] Revision 162223 caused ICE at c-decl.c:4064
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45062 Nathan Froyd changed: What|Removed |Added Status|NEW |ASSIGNED CC||froydnj at gcc dot gnu.org AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org | --- Comment #3 from Nathan Froyd 2010-10-20 13:47:51 UTC --- I will fix this shortly after stage 3 starts.
[Bug tree-optimization/46259] [4.6 Regression] Revision 166102 failed 416.gamess in SPEC CPU 2006
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46259 --- Comment #8 from Nathan Froyd 2010-11-01 18:58:35 UTC --- Author: froydnj Date: Mon Nov 1 18:58:30 2010 New Revision: 166139 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166139 Log: gcc/ 2010-11-01 Nathan Froyd PR tree-optimization/46259 Revert: 2010-10-30 Nathan Froyd * tree-vect-stmts.c (vect_get_vec_def_for_operand): Use build_vector_from_val. gcc/testsuite/ 2010-11-01 H.J. Lu Nathan Froyd PR tree-optimization/46259 * gfortran.dg/pr46259.f: New testcase. Added: trunk/gcc/testsuite/gfortran.dg/pr46259.f Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-stmts.c
[Bug c/41206] Segmentation fault from two "#pragma GCC optimize" lines
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41206 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #5 from Nathan Froyd 2010-11-05 17:46:18 UTC --- I no longer see this error with current mainline.
[Bug c++/45332] Generate clear diagnostics when a terminating semicolon is missing from a class member declaration.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45332 --- Comment #1 from Nathan Froyd 2010-11-06 18:42:08 UTC --- Author: froydnj Date: Sat Nov 6 18:41:57 2010 New Revision: 166406 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166406 Log: gcc/cp/ PR c++/45332 * parser.c (cp_lexer_previous_token): New function. (cp_parser_member_declaration): Use previous token for error messages. Assume semicolon presence rather than grovelling for the next one. gcc/testsuite/ PR c++/45332 * g++.dg/parse/semicolon2.C: New testcase. * g++.dg/ext/asmspec1.C: Adjust. * g++.dg/init/new13.C: Adjust. * g++.dg/parse/ctor5.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/parse/semicolon2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/ext/asmspec1.C trunk/gcc/testsuite/g++.dg/init/new13.C trunk/gcc/testsuite/g++.dg/parse/ctor5.C
[Bug c++/46065] [4.6 Regression] ICE: tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in poplevel_named_label_1, at cp/decl.c:477
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46065 --- Comment #3 from Nathan Froyd 2010-11-10 21:05:55 UTC --- Author: froydnj Date: Wed Nov 10 21:05:50 2010 New Revision: 166558 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166558 Log: gcc/cp/ PR c++/46065 * decl.c (poplevel_named_label_1): Use TREE_CHAIN if necessary. gcc/testsuite/ PR c++/46065 * g++.dg/pr46065.C: New test. Added: trunk/gcc/testsuite/g++.dg/pr46065.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl.c trunk/gcc/testsuite/ChangeLog
[Bug c++/46065] [4.6 Regression] ICE: tree check: expected tree that contains 'decl minimal' structure, have 'tree_list' in poplevel_named_label_1, at cp/decl.c:477
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46065 Nathan Froyd changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #4 from Nathan Froyd 2010-11-11 02:09:01 UTC --- Fixed.
[Bug c/44782] implement -ferror-limit=
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44782 --- Comment #2 from Nathan Froyd 2010-11-12 03:38:19 UTC --- Author: froydnj Date: Fri Nov 12 03:38:15 2010 New Revision: 166644 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166644 Log: gcc/ PR c/44782 * common.opt (fmax-errors=): New option. * opts.c (common_handle_option) [OPT_fmax_errors_]: Handle it. * diagnostic.h (struct diagnostic_context): Add max_errors field. * diagnostic.c (diagnostic_initialize): Initialize it. (diagnostic_action_after_output): Exit if more than max_errors have been output. * doc/invoke.texi (Warning Options): Add -fmax-errors. (-fmax-errors): Document. gcc/fortran/ PR c/44782 * options.c (gfc_post_options): Initialize gfc_option.max_errors. (gfc_handle_option) [OPT_fmax_errors_]: Remove. * lang.opt (fmax-errors=): Remove. gcc/testsuite/ PR c/44782 * c-c++-common/fmax-errors.c: New test. Added: trunk/gcc/testsuite/c-c++-common/fmax-errors.c Modified: trunk/gcc/ChangeLog trunk/gcc/common.opt trunk/gcc/diagnostic.c trunk/gcc/diagnostic.h trunk/gcc/doc/invoke.texi trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/lang.opt trunk/gcc/fortran/options.c trunk/gcc/opts.c trunk/gcc/testsuite/ChangeLog
[Bug c/44782] implement -ferror-limit=
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44782 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #3 from Nathan Froyd 2010-11-12 03:40:11 UTC --- Fixed.
[Bug preprocessor/45038] __DBL_MIN__ result in old-style-cast
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45038 --- Comment #2 from Nathan Froyd 2010-11-15 15:24:38 UTC --- Author: froydnj Date: Mon Nov 15 15:24:31 2010 New Revision: 166756 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166756 Log: gcc/c-family/ PR preprocessor/45038 * c-cppbuiltin.c (c_cpp_builtins): Use different format for C++ dialects. gcc/testsuite/ PR preprocessor/45038 * g++.dg/pr45038.C: New test. Added: trunk/gcc/testsuite/g++.dg/pr45038.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-cppbuiltin.c trunk/gcc/testsuite/ChangeLog
[Bug preprocessor/45038] __DBL_MIN__ result in old-style-cast
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45038 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #3 from Nathan Froyd 2010-11-15 15:26:35 UTC --- Fixed on trunk.
[Bug target/46512] [4.6 Regression] crtstuff.c:563:1: internal compiler error: Segmentation fault
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46512 --- Comment #2 from Nathan Froyd 2010-11-17 01:41:16 UTC --- Author: froydnj Date: Wed Nov 17 01:41:13 2010 New Revision: 166849 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166849 Log: PR target/46512 * config/pa/pa.c (pa_function_arg_boundary): Move TYPE_SIZE accesses under check for type. Modified: trunk/gcc/ChangeLog trunk/gcc/config/pa/pa.c
[Bug c/33193] slopiness in __real/__imag
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33193 --- Comment #4 from Nathan Froyd 2010-11-18 16:25:04 UTC --- Author: froydnj Date: Thu Nov 18 16:24:56 2010 New Revision: 166909 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166909 Log: gcc/ PR c/33193 * c-typeck.c (build_unary_op): Call build_real_imag_expr for REALPART_EXPR and IMAGPART_EXPR. gcc/c-family/ PR c/33193 * c-common.h (build_real_imag_expr): Declare. * c-semantics.c (build_real_imag_expr): Define. gcc/cp/ PR c/33193 * typeck.c (cp_build_unary_op): Call build_real_imag_expr for REALPART_EXPR and IMAGPART_EXPR. gcc/testsuite/ PR c/33193 * c-c++-common/pr33193.c: New test. Added: trunk/gcc/testsuite/c-c++-common/pr33193.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.h trunk/gcc/c-family/c-semantics.c trunk/gcc/c-typeck.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog
[Bug c/33193] slopiness in __real/__imag
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33193 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #5 from Nathan Froyd 2010-11-18 16:26:07 UTC --- Fixed on trunk.
[Bug target/46548] Build arm gcc failure after patch 165463
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46548 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org, ||pbrook at gcc dot gnu.org --- Comment #1 from Nathan Froyd 2010-11-18 23:49:26 UTC --- Paul had mentioned that he saw similar failures and was working on a better patch. Paul, did you ever get things into a workable state?
[Bug c++/45331] Generate clear diagnostics when a semicolon is missing at the end of a class definition
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45331 --- Comment #2 from Nathan Froyd 2010-11-20 18:50:05 UTC --- Author: froydnj Date: Sat Nov 20 18:50:00 2010 New Revision: 166977 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166977 Log: gcc/c-family/ PR c++/16189 PR c++/36888 PR c++/45331 * c-common.h (keyword_begins_type_specifier): Declare. (keyword_is_storage_class_specifier): Declare. (keyword_is_type_qualifier): Declare. * c-common.c (keyword_begins_type_specifier): New function. (keyword_is_storage_class_specifier): New function. (keyword_is_type_qualifier): Declare. gcc/cp/ PR c++/16189 PR c++/36888 PR c++/45331 * parser.c (cp_lexer_set_token_position): New function. (cp_lexer_previous_token_position): New function. (cp_lexer_previous_token): Call it. (cp_parser_class_specifier): Try to gracefully handle a missing semicolon. gcc/testsuite/ PR c++/16189 PR c++/36888 PR c++/45331 * g++.dg/parse/semicolon3.C: New test. * g++.dg/debug/pr22514.C: Adjust. * g++.dg/init/error1.C: Adjust. * g++.dg/other/bitfield3.C: Adjust. * g++.dg/other/semicolon.C: Adjust. * g++.dg/parse/error14.C: Adjust. * g++.dg/parse/error5.C: Adjust. * g++.dg/parse/parameter-declaration-1.C: Adjust. * g++.dg/template/pr23510.C: Adjust. * g++.dg/template/pr39425.C: Adjust. * g++.old-deja/g++.robertl/eb125.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/parse/semicolon3.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/debug/pr22514.C trunk/gcc/testsuite/g++.dg/init/error1.C trunk/gcc/testsuite/g++.dg/other/bitfield3.C trunk/gcc/testsuite/g++.dg/other/semicolon.C trunk/gcc/testsuite/g++.dg/parse/error14.C trunk/gcc/testsuite/g++.dg/parse/error5.C trunk/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C trunk/gcc/testsuite/g++.dg/template/pr23510.C trunk/gcc/testsuite/g++.dg/template/pr39425.C trunk/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
[Bug c++/16189] obfuscated error message for missing semicolon after declaration in C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16189 --- Comment #10 from Nathan Froyd 2010-11-20 18:50:05 UTC --- Author: froydnj Date: Sat Nov 20 18:50:00 2010 New Revision: 166977 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166977 Log: gcc/c-family/ PR c++/16189 PR c++/36888 PR c++/45331 * c-common.h (keyword_begins_type_specifier): Declare. (keyword_is_storage_class_specifier): Declare. (keyword_is_type_qualifier): Declare. * c-common.c (keyword_begins_type_specifier): New function. (keyword_is_storage_class_specifier): New function. (keyword_is_type_qualifier): Declare. gcc/cp/ PR c++/16189 PR c++/36888 PR c++/45331 * parser.c (cp_lexer_set_token_position): New function. (cp_lexer_previous_token_position): New function. (cp_lexer_previous_token): Call it. (cp_parser_class_specifier): Try to gracefully handle a missing semicolon. gcc/testsuite/ PR c++/16189 PR c++/36888 PR c++/45331 * g++.dg/parse/semicolon3.C: New test. * g++.dg/debug/pr22514.C: Adjust. * g++.dg/init/error1.C: Adjust. * g++.dg/other/bitfield3.C: Adjust. * g++.dg/other/semicolon.C: Adjust. * g++.dg/parse/error14.C: Adjust. * g++.dg/parse/error5.C: Adjust. * g++.dg/parse/parameter-declaration-1.C: Adjust. * g++.dg/template/pr23510.C: Adjust. * g++.dg/template/pr39425.C: Adjust. * g++.old-deja/g++.robertl/eb125.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/parse/semicolon3.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/debug/pr22514.C trunk/gcc/testsuite/g++.dg/init/error1.C trunk/gcc/testsuite/g++.dg/other/bitfield3.C trunk/gcc/testsuite/g++.dg/other/semicolon.C trunk/gcc/testsuite/g++.dg/parse/error14.C trunk/gcc/testsuite/g++.dg/parse/error5.C trunk/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C trunk/gcc/testsuite/g++.dg/template/pr23510.C trunk/gcc/testsuite/g++.dg/template/pr39425.C trunk/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
[Bug c++/36888] Error message when forgetting a semicolon after a class definition should be better
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36888 --- Comment #4 from Nathan Froyd 2010-11-20 18:50:06 UTC --- Author: froydnj Date: Sat Nov 20 18:50:00 2010 New Revision: 166977 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166977 Log: gcc/c-family/ PR c++/16189 PR c++/36888 PR c++/45331 * c-common.h (keyword_begins_type_specifier): Declare. (keyword_is_storage_class_specifier): Declare. (keyword_is_type_qualifier): Declare. * c-common.c (keyword_begins_type_specifier): New function. (keyword_is_storage_class_specifier): New function. (keyword_is_type_qualifier): Declare. gcc/cp/ PR c++/16189 PR c++/36888 PR c++/45331 * parser.c (cp_lexer_set_token_position): New function. (cp_lexer_previous_token_position): New function. (cp_lexer_previous_token): Call it. (cp_parser_class_specifier): Try to gracefully handle a missing semicolon. gcc/testsuite/ PR c++/16189 PR c++/36888 PR c++/45331 * g++.dg/parse/semicolon3.C: New test. * g++.dg/debug/pr22514.C: Adjust. * g++.dg/init/error1.C: Adjust. * g++.dg/other/bitfield3.C: Adjust. * g++.dg/other/semicolon.C: Adjust. * g++.dg/parse/error14.C: Adjust. * g++.dg/parse/error5.C: Adjust. * g++.dg/parse/parameter-declaration-1.C: Adjust. * g++.dg/template/pr23510.C: Adjust. * g++.dg/template/pr39425.C: Adjust. * g++.old-deja/g++.robertl/eb125.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/parse/semicolon3.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c-family/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/debug/pr22514.C trunk/gcc/testsuite/g++.dg/init/error1.C trunk/gcc/testsuite/g++.dg/other/bitfield3.C trunk/gcc/testsuite/g++.dg/other/semicolon.C trunk/gcc/testsuite/g++.dg/parse/error14.C trunk/gcc/testsuite/g++.dg/parse/error5.C trunk/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C trunk/gcc/testsuite/g++.dg/template/pr23510.C trunk/gcc/testsuite/g++.dg/template/pr39425.C trunk/gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
[Bug c/45062] [4.6 Regression] Revision 162223 caused ICE at c-decl.c:4064
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45062 --- Comment #7 from Nathan Froyd 2010-12-02 18:00:26 UTC --- Author: froydnj Date: Thu Dec 2 18:00:21 2010 New Revision: 167381 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167381 Log: PR c/45062 * c-decl.c (grokparms): Set arg_info->parms to NULL_TREE when !funcdef_flag. Modified: trunk/gcc/ChangeLog trunk/gcc/c-decl.c
[Bug c/45062] [4.6 Regression] Revision 162223 caused ICE at c-decl.c:4064
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45062 Nathan Froyd changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #8 from Nathan Froyd 2010-12-02 18:00:57 UTC --- Fixed.
[Bug c++/45330] Suggest likely nested-name-specifiers for undeclared identifiers.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45330 --- Comment #1 from Nathan Froyd 2010-12-07 13:46:32 UTC --- Author: froydnj Date: Tue Dec 7 13:46:29 2010 New Revision: 167536 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167536 Log: gcc/ PR c++/45330 * params.def (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP): New parameter. * doc/invoke.texi (cxx-max-namespaces-for-diagnostic-help): Document. gcc/cp/ PR c++/45330 * cp-tree.h (suggest_alternatives_for, location_of): Declare. * error.c (dump_expr): Handle TYPE_DECL. (location_of): Unstaticize. * name-lookup.c (suggest_alternatives_for): New function. * lex.c (unqualified_name_lookup_error): Call it. gcc/testsuite/ PR c++/45330 * g++.dg/pr45330.C: New test. * g++.dg/ext/builtin3.C: Adjust. * g++.dg/lookup/error1.C: Adjust. * g++.dg/lookup/koenig5.C: Adjust. * g++.dg/overload/koenig1.C: Adjust. * g++.dg/parse/decl-specifier-1.C: Adjust. * g++.dg/template/static10.C: Adjust. * g++.old-deja/g++.mike/ns5.C: Adjust. * g++.old-deja/g++.mike/ns7.C: Adjust. * g++.old-deja/g++.ns/koenig5.C: Adjust. * g++.old-deja/g++.ns/koenig9.C: Adjust. * g++.old-deja/g++.other/lineno5.C: Adjust. Added: trunk/gcc/testsuite/g++.dg/pr45330.C Modified: trunk/gcc/ChangeLog trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/error.c trunk/gcc/cp/lex.c trunk/gcc/cp/name-lookup.c trunk/gcc/doc/invoke.texi trunk/gcc/params.def trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/ext/builtin3.C trunk/gcc/testsuite/g++.dg/lookup/error1.C trunk/gcc/testsuite/g++.dg/lookup/koenig5.C trunk/gcc/testsuite/g++.dg/overload/koenig1.C trunk/gcc/testsuite/g++.dg/parse/decl-specifier-1.C trunk/gcc/testsuite/g++.dg/template/static10.C trunk/gcc/testsuite/g++.old-deja/g++.mike/ns5.C trunk/gcc/testsuite/g++.old-deja/g++.mike/ns7.C trunk/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C trunk/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C trunk/gcc/testsuite/g++.old-deja/g++.other/lineno5.C
[Bug c++/45330] Suggest likely nested-name-specifiers for undeclared identifiers.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45330 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #2 from Nathan Froyd 2010-12-07 14:32:30 UTC --- Fixed.
[Bug c++/45332] Generate clear diagnostics when a terminating semicolon is missing from a class member declaration.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45332 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #2 from Nathan Froyd 2010-12-07 14:37:03 UTC --- Fixed.
[Bug c++/45331] Generate clear diagnostics when a semicolon is missing at the end of a class definition
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45331 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #3 from Nathan Froyd 2010-12-07 14:37:57 UTC --- Fixed.
[Bug c++/36888] Error message when forgetting a semicolon after a class definition should be better
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36888 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #5 from Nathan Froyd 2010-12-07 14:40:11 UTC --- Fixed.
[Bug c++/44514] bad error recovery with forgotten ; after class definition
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44514 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Component|c |c++ Resolution||FIXED --- Comment #1 from Nathan Froyd 2010-12-07 14:46:05 UTC --- This has been fixed by the fix for PR 45331. We now say: /home/froydnj/src/x.C:2:10: error: expected ';' after class definition /home/froydnj/src/x.C:6:1: error: expected ';' after struct definition
[Bug c++/46836] New: reporting locations for names in std namespace could be improved
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46836 Summary: reporting locations for names in std namespace could be improved Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: froy...@gcc.gnu.org As suggested in http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00530.html , if we have to issue diagnostics about names in standard headers, it would be better if we said something like: : ...std::count... rather than: /some/ugly/path/the/user/didn't/include: ...std::count...
[Bug c++/46852] ICE: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in cp_parser_class_specifier, at cp/parser.c:16947
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46852 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org | Target Milestone|--- |4.6.0 --- Comment #1 from Nathan Froyd 2010-12-08 16:56:46 UTC --- This is due to my changes to detect missing semicolons. I will fix it.
[Bug c++/45329] When printing a list of candidate functions, explain why each function failed to match.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45329 --- Comment #4 from Nathan Froyd 2010-12-08 21:37:54 UTC --- Author: froydnj Date: Wed Dec 8 21:37:51 2010 New Revision: 167607 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167607 Log: gcc/cp/ PR c++/45329 * call.c (struct conversion): Document bad_p field. (enum rejection_reason_code): Define. (struct conversion_info): Define. (struct rejection_reason): Define. (struct z_candidate): Add `reason' field. (add_candidate): Add `reason' parameter. Store it in CAND. (alloc_rejection, arity_rejection, arg_conversion_rejection): New functions. (bad_arg_conversion_rejection): New function. (convert_class_to_reference): Add comment. (remaining_arguments): New function. (add_function_candidate): Record rejection reason and pass it to add_candidate. (add_conv_candidate, build_builtin_candidate): Likewise. (add_template_candidate_real): Likewise. (print_conversion_rejection): New function. (print_z_candidate): Print CAND->REASON if it exists. Adjust diagnostic strings. (print_z_candidates): Add location_t argument. Adjust calling sequence for print_z_candidate. Print header line directly. (build_user_type_conversion_1): Add reason for rejection to CAND. Adjust call to print_z_candidates. (print_error_for_call_failure): New function. (build_new_function_call): Call it. Adjust call to print_z_candidates. (build_operator_new_call): Likewise. (build_op_call): Likewise. (build_conditional_expr): Likewise. (build_new_op): Likewise. (build_new_method_call): Likewise. gcc/testsuite/ PR c++/45329 * testsuite/g++.dg/conversion/ambig1.C: Adjust. * testsuite/g++.dg/conversion/op1.C: Adjust. * testsuite/g++.dg/conversion/simd1.C: Adjust. * testsuite/g++.dg/cpp0x/defaulted14.C: Adjust. * testsuite/g++.dg/cpp0x/defaulted18.C: Adjust. * testsuite/g++.dg/cpp0x/defaulted20.C: Adjust. * testsuite/g++.dg/cpp0x/explicit3.C: Adjust. * testsuite/g++.dg/cpp0x/explicit4.C: Adjust. * testsuite/g++.dg/cpp0x/implicit4.C: Adjust. * testsuite/g++.dg/cpp0x/nullptr15.C: Adjust. * testsuite/g++.dg/cpp0x/nullptr19.C: Adjust. * testsuite/g++.dg/cpp0x/pr31431-2.C: Adjust. * testsuite/g++.dg/cpp0x/pr31431.C: Adjust. * testsuite/g++.dg/cpp0x/pr31434.C: Adjust. * testsuite/g++.dg/cpp0x/pr31437.C: Adjust. * testsuite/g++.dg/cpp0x/rv2n.C: Adjust. * testsuite/g++.dg/cpp0x/rv3n.C: Adjust. * testsuite/g++.dg/cpp0x/rv4n.C: Adjust. * testsuite/g++.dg/cpp0x/rv5n.C: Adjust. * testsuite/g++.dg/cpp0x/rv6n.C: Adjust. * testsuite/g++.dg/cpp0x/rv7n.C: Adjust. * testsuite/g++.dg/cpp0x/temp_default2.C: Adjust. * testsuite/g++.dg/cpp0x/trailing4.C: Adjust. * testsuite/g++.dg/cpp0x/variadic-ex3.C: Adjust. * testsuite/g++.dg/cpp0x/variadic-ex4.C: Adjust. * testsuite/g++.dg/cpp0x/variadic35.C: Adjust. * testsuite/g++.dg/cpp0x/vt-35147.C: Adjust. * testsuite/g++.dg/cpp0x/vt-37737-2.C: Adjust. * testsuite/g++.dg/expr/cond9.C: Adjust. * testsuite/g++.dg/expr/pmf-1.C: Adjust. * testsuite/g++.dg/ext/label5.C: Adjust. * testsuite/g++.dg/ext/visibility/anon8.C: Adjust. * testsuite/g++.dg/ext/vla2.C: Adjust. * testsuite/g++.dg/gomp/pr26690-1.C: Adjust. * testsuite/g++.dg/gomp/pr26690-2.C: Adjust. * testsuite/g++.dg/init/synth2.C: Adjust. * testsuite/g++.dg/lookup/conv-1.C: Adjust. * testsuite/g++.dg/lookup/new1.C: Adjust. * testsuite/g++.dg/lookup/using9.C: Adjust. * testsuite/g++.dg/other/error13.C: Adjust. * testsuite/g++.dg/other/error20.C: Adjust. * testsuite/g++.dg/other/error31.C: Adjust. * testsuite/g++.dg/other/pr28114.C: Adjust. * testsuite/g++.dg/other/ptrmem10.C: Adjust. * testsuite/g++.dg/other/ptrmem11.C: Adjust. * testsuite/g++.dg/overload/ambig1.C: Adjust. * testsuite/g++.dg/overload/arg3.C: Adjust. * testsuite/g++.dg/overload/builtin1.C: Adjust. * testsuite/g++.dg/overload/copy1.C: Adjust. * testsuite/g++.dg/overload/new1.C: Adjust. * testsuite/g++.dg/overload/template4.C: Adjust. * testsuite/g++.dg/overload/unknown1.C: Adjust. * testsuite/g++.dg/overload/using2.C: Adjust. * testsuite/g++.dg/parse/crash5.C: Adjust. * testsuite/g++.dg/parse/error19.C: Adjust. * testsuite/g++.dg/parse/error28.C: Adjust. * testsuite/g++.dg/parse/template7.C: Adjust. * testsuite/g++.dg/parse/typename7.C: Adjust. * testsuite/g++.dg/rtti/typeid6.C: Adjust. * testsuite/g++.dg/tc1/dr152.C: Adjust. * testsuite/g++.dg/template/conv11.C: Adjust. * testsuite/g++.dg/template/copy1.C: Adjust. * testsuite/g++.dg/template/crash37.C: Adjust. * testsuite/g++.dg/template/deduce3.C: Adjust. * testsuite/g++.dg/template/dependent-expr5.C: Adjust. * testsuite/g++.dg/template/error38.C: Adjust. * testsuite/g++.dg/template/error40.C: Adjust. * test
[Bug c++/45329] When printing a list of candidate functions, explain why each function failed to match.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45329 Nathan Froyd changed: What|Removed |Added Status|NEW |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #5 from Nathan Froyd 2010-12-08 21:41:32 UTC --- Fixed.
[Bug testsuite/46860] [4.6 Regression] New libstdc++ failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46860 --- Comment #1 from Nathan Froyd 2010-12-09 04:34:26 UTC --- Author: froydnj Date: Thu Dec 9 04:34:20 2010 New Revision: 167625 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167625 Log: PR testsuite/46860 * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust. * testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc trunk/libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc trunk/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
[Bug testsuite/46860] [4.6 Regression] New libstdc++ failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46860 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #2 from Nathan Froyd 2010-12-09 04:34:58 UTC --- Fixed.
[Bug target/46040] crtstuff.c:308:26: error: '__DTOR_LIST__' undeclared
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46040 --- Comment #10 from Nathan Froyd 2010-12-13 16:23:55 UTC --- Author: froydnj Date: Mon Dec 13 16:23:50 2010 New Revision: 167751 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167751 Log: gcc/ PR target/46040 * config.gcc (arm*-*-linux-*eabi): Use bpabi-lib.h. (arm*-*-uclinux*eabi, arm*-*-eabi*): Likewise. libgcc/ PR target/46040 * config/arm/bpabi.h: Rename to... * config/arm/bpabi-lib.h: ...this. Added: trunk/libgcc/config/arm/bpabi-lib.h - copied unchanged from r167749, trunk/libgcc/config/arm/bpabi.h Removed: trunk/libgcc/config/arm/bpabi.h Modified: trunk/gcc/ChangeLog trunk/gcc/config.gcc trunk/libgcc/ChangeLog
[Bug c++/45330] Suggest likely nested-name-specifiers for undeclared identifiers.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45330 --- Comment #3 from Nathan Froyd 2010-12-14 20:31:30 UTC --- Author: froydnj Date: Tue Dec 14 20:31:22 2010 New Revision: 167814 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167814 Log: gcc/cp/ PR c++/45330 * cp-tree.h (suggest_alternatives_for): Add location_t parameter. * name-lookup.c (suggest_alternatives_for): Likewise. Adjust. * lex.c (unqualified_name_lookup_error): Adjust call to it. * semantics.c (qualified_name_lookup_error): Move to... * error.c (qualified_name_lookup_error): ...here. Call. suggest_alternatives_for. gcc/testsuite/ PR c++/45330 * g++.dg/lookup/suggestions1.C: New test. Added: trunk/gcc/testsuite/g++.dg/lookup/suggestions1.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/error.c trunk/gcc/cp/lex.c trunk/gcc/cp/name-lookup.c trunk/gcc/cp/semantics.c trunk/gcc/testsuite/ChangeLog
[Bug c++/46868] [4.6 Regression] ICE: SIGSEGV splay_tree_splay (splay-tree.c:149) on invalid code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46868 Nathan Froyd changed: What|Removed |Added AssignedTo|unassigned at gcc dot |froydnj at gcc dot gnu.org |gnu.org | --- Comment #4 from Nathan Froyd 2010-12-16 00:10:01 UTC --- Will fix later this week.
[Bug c++/46852] [4.6 Regression] ICE: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in cp_parser_class_specifier, at cp/parser.c:16947
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46852 --- Comment #2 from Nathan Froyd 2010-12-16 01:33:07 UTC --- Author: froydnj Date: Thu Dec 16 01:33:03 2010 New Revision: 167894 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167894 Log: gcc/cp/ PR c++/46852 * parser.c (cp_parser_class_specifier): Check for TYPE_P. gcc/testsuite/ PR c++/46852 * g++.dg/pr46852.C: New test. Added: trunk/gcc/testsuite/g++.dg/pr46852.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog
[Bug c++/39859] duplicated and unhelpful error for "c:n" (parser)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39859 --- Comment #2 from Nathan Froyd 2010-12-16 01:36:15 UTC --- Author: froydnj Date: Thu Dec 16 01:36:09 2010 New Revision: 167895 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167895 Log: gcc/cp/ PR c++/39859 PR c++/44522 PR c++/44523 * parser.c (struct cp_parser): Add colon_corrects_to_scope_p field. (cp_parser_new): Initialize it. (cp_parser_nested_name_specifier_opt): Auto-correct colons to scopes if we are able to. (cp_parser_question_colon_clause): Disallow colon correction. (cp_parser_label_for_labeled_statement): Likewise. (cp_parser_range_for): Likewise. (cp_parser_enum_specifier): Likewise. (cp_parser_class_head): Likewise. (cp_parser_member_declaration): Likewise. gcc/testsuite/ PR c++/39859 PR c++/44522 PR c++/44523 * g++.dg/parse/colon-autocorrect-1.C: New testcase. * g++.dg/parse/colon-autocorrect-2.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-1.C trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog
[Bug c++/44522] improve diagnostic for :: vs : typo
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44522 --- Comment #1 from Nathan Froyd 2010-12-16 01:36:13 UTC --- Author: froydnj Date: Thu Dec 16 01:36:09 2010 New Revision: 167895 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167895 Log: gcc/cp/ PR c++/39859 PR c++/44522 PR c++/44523 * parser.c (struct cp_parser): Add colon_corrects_to_scope_p field. (cp_parser_new): Initialize it. (cp_parser_nested_name_specifier_opt): Auto-correct colons to scopes if we are able to. (cp_parser_question_colon_clause): Disallow colon correction. (cp_parser_label_for_labeled_statement): Likewise. (cp_parser_range_for): Likewise. (cp_parser_enum_specifier): Likewise. (cp_parser_class_head): Likewise. (cp_parser_member_declaration): Likewise. gcc/testsuite/ PR c++/39859 PR c++/44522 PR c++/44523 * g++.dg/parse/colon-autocorrect-1.C: New testcase. * g++.dg/parse/colon-autocorrect-2.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-1.C trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog
[Bug c++/44523] improve diagnostic for :: vs : typo (complex case)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44523 --- Comment #1 from Nathan Froyd 2010-12-16 01:36:14 UTC --- Author: froydnj Date: Thu Dec 16 01:36:09 2010 New Revision: 167895 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167895 Log: gcc/cp/ PR c++/39859 PR c++/44522 PR c++/44523 * parser.c (struct cp_parser): Add colon_corrects_to_scope_p field. (cp_parser_new): Initialize it. (cp_parser_nested_name_specifier_opt): Auto-correct colons to scopes if we are able to. (cp_parser_question_colon_clause): Disallow colon correction. (cp_parser_label_for_labeled_statement): Likewise. (cp_parser_range_for): Likewise. (cp_parser_enum_specifier): Likewise. (cp_parser_class_head): Likewise. (cp_parser_member_declaration): Likewise. gcc/testsuite/ PR c++/39859 PR c++/44522 PR c++/44523 * g++.dg/parse/colon-autocorrect-1.C: New testcase. * g++.dg/parse/colon-autocorrect-2.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-1.C trunk/gcc/testsuite/g++.dg/parse/colon-autocorrect-2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog
[Bug c++/44523] improve diagnostic for :: vs : typo (complex case)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44523 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #2 from Nathan Froyd 2010-12-16 01:43:42 UTC --- Fixed.
[Bug c++/44522] improve diagnostic for :: vs : typo
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44522 Nathan Froyd changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||froydnj at gcc dot gnu.org Resolution||FIXED --- Comment #2 from Nathan Froyd 2010-12-16 01:44:09 UTC --- Fixed.
[Bug c++/49129] confusing diagnostic for missing semi-colon after member template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49129 --- Comment #1 from Nathan Froyd 2011-05-24 13:30:16 UTC --- I believe I tried to do that at one point; you can see the comment in cp/parser.c:class_specifier_1 about handling user-defined types. I might not have been clever enough, though. It'd certainly be helpful.
[Bug bootstrap/49190] [4.7 Regression] Bootstrap failure at revision 174286 on x86_64-apple-darwin10
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49190 Nathan Froyd changed: What|Removed |Added CC||froydnj at gcc dot gnu.org --- Comment #3 from Nathan Froyd 2011-05-27 17:57:44 UTC --- Ugh. I do not have time to deal with this problem at the moment. But I don't understand how ASM_OUTPUT_WEAKREF isn't defined at that point. We have a perfectly fine default definition in defaults.h.
[Bug bootstrap/49190] [4.7 Regression] Bootstrap failure at revision 174286 on x86_64-apple-darwin10
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49190 Nathan Froyd changed: What|Removed |Added CC||hubicka at gcc dot gnu.org --- Comment #5 from Nathan Froyd 2011-05-27 18:57:23 UTC --- That's what I get for not actually *looking* at the definition. The only quick non-reverting way I see of fixing this is to use TREE_TYPE instead of TREE_CHAIN...which is gross. CC'ing Honza to see if he has good ideas.
[Bug bootstrap/49190] [4.7 Regression] Bootstrap failure at revision 174286 on several platforms
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49190 --- Comment #14 from Nathan Froyd 2011-05-30 16:42:12 UTC --- Author: froydnj Date: Mon May 30 16:42:05 2011 New Revision: 174445 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174445 Log: fix PR bootstrap/4910 gcc/ PR bootstrap/49190 Revert: 2011-05-26 Nathan Froyd * tree.h (struct tree_identifier): Inherit from tree_typed, not tree_common. (HT_IDENT_TO_GCC_IDENT): Adjust for said change. * tree.c (initialize_tree_contains_struct): Mark TS_IDENTIFIER as TS_BASE instead of TS_COMMON. * varasm.c (assemble_name): Remove assert. gcc/c-family/ PR bootstrap/49190 Revert: 2011-05-26 Nathan Froyd * c-common.h (struct c_common_identifier): Inherit from tree_typed, not tree_common. Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.h trunk/gcc/tree.c trunk/gcc/tree.h trunk/gcc/varasm.c
[Bug c/4910] imacat
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4910 --- Comment #4 from Nathan Froyd 2011-05-30 16:42:10 UTC --- Author: froydnj Date: Mon May 30 16:42:05 2011 New Revision: 174445 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174445 Log: fix PR bootstrap/4910 gcc/ PR bootstrap/49190 Revert: 2011-05-26 Nathan Froyd * tree.h (struct tree_identifier): Inherit from tree_typed, not tree_common. (HT_IDENT_TO_GCC_IDENT): Adjust for said change. * tree.c (initialize_tree_contains_struct): Mark TS_IDENTIFIER as TS_BASE instead of TS_COMMON. * varasm.c (assemble_name): Remove assert. gcc/c-family/ PR bootstrap/49190 Revert: 2011-05-26 Nathan Froyd * c-common.h (struct c_common_identifier): Inherit from tree_typed, not tree_common. Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.h trunk/gcc/tree.c trunk/gcc/tree.h trunk/gcc/varasm.c
[Bug bootstrap/49190] [4.7 Regression] Bootstrap failure at revision 174286 on several platforms
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49190 --- Comment #15 from Nathan Froyd 2011-05-30 16:43:01 UTC --- I've reverted the offending commit. If somebody could confirm that the failures are gone, this PR can be closed.
[Bug objc++/49221] [4.7 Regression] Several ICEs in the obj-c++ test suite after revision 174307
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49221 Nathan Froyd changed: What|Removed |Added CC||jason at gcc dot gnu.org --- Comment #6 from Nathan Froyd 2011-06-01 12:01:06 UTC --- I'm not sure what to do in this case; maybe Jason has an opinion. Jason, should we be push_stmt'ing somewhere in the objc code (objc_eh_runtime_type, perhaps)?