[Bug c++/60182] g++ segfault within template expansion using using aliasing
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Keywords||ice-on-valid-code Priority|P3 |P1
[Bug target/60337] s390: Function arguments are not aligned
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60337 --- Comment #5 from Dominik Vogt vogt at linux dot vnet.ibm.com --- With -O2 and -O3 all three cases generate the proper alignment With -O1 only foo() has the proper alignment With -O0 none of the cases has the proper alignment == Code compiled with -O0 and -O3 accidentally uses a different ABI. Power shows the same erratic behaviour, on amd64 alignment works with all -O{0,1,2,3}.
[Bug c++/60182] g++ segfault within template expansion using using aliasing
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Version|4.8.2 |4.9.0 Target Milestone|4.9.0 |4.7.4
[Bug ipa/60327] [4.9 Regression] xalanbmk and dealII ICE in ipa-inline-analysis.c:3555
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60327 --- Comment #2 from Richard Biener rguenth at gcc dot gnu.org --- Author: rguenth Date: Wed Feb 26 08:39:48 2014 New Revision: 208167 URL: http://gcc.gnu.org/viewcvs?rev=208167root=gccview=rev Log: 2014-02-26 Richard Biener rguent...@suse.de PR ipa/60327 * ipa.c (walk_polymorphic_call_targets): Properly guard call to inline_update_overall_summary. Modified: trunk/gcc/ChangeLog trunk/gcc/ipa.c
[Bug c++/60342] New: -Wsign-conversion ignores explicit conversion
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60342 Bug ID: 60342 Summary: -Wsign-conversion ignores explicit conversion Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: woodroof at gmail dot com Simple example: #include cstddef #include limits int main() { int int_value; if (std::numeric_limitssize_t::max() - static_castsize_t(int_value)) { } } Result: 1.cpp: In function ‘int main()’: 1.cpp:7:72: warning: conversion to ‘long unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion] if (std::numeric_limitssize_t::max() - static_castsize_t(int_value)) ^ If I change numeric_limits::max to any size_t variable, warning will not be generated. There is no warning also if I used usigned instead of size_t. Possible the same problem as in bug 49626, but there is no conversion to a wider type.
[Bug bootstrap/60343] New: r208155 breaks bootstrap
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 Bug ID: 60343 Summary: r208155 breaks bootstrap Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap Assignee: unassigned at gcc dot gnu.org Reporter: izamyatin at gmail dot com Message: ../../gcc/lra-assigns.c: In function ‘int spill_for(int, bitmap)’: ../../gcc/lra-assigns.c:901:4: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] = LRA_MAX_CONSIDERED_RELOAD_PSEUDOS) Could be seen on x86_64, say, for ../configure --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --with-fpmath=sse --enable-languages=c,c++,fortran,java,lto,objc
[Bug middle-end/36043] gcc reads 8 bytes for a struct of size 6 which leads to sigsegv
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36043 --- Comment #23 from Richard Biener rguenth at gcc dot gnu.org --- (In reply to Michael Matz from comment #8) FWIW, I think the error is in the caller of move_block_to_reg. move_block_to_reg can make use of a load_multiple instruction, which really loads full regs. I.e. it would be unreasonable to require changes in move_block_to_reg to handle non-power-of-2 sizes. Hence the caller (load_register_parameters) needs to handle this. I'm not sure if the n_aligned_regs thingy could be misused for this, or if one simply should opencode the special case of the last register being partial. That would be sth like Index: gcc/calls.c === --- gcc/calls.c (revision 208124) +++ gcc/calls.c (working copy) @@ -1984,7 +1984,26 @@ load_register_parameters (struct arg_dat emit_move_insn (ri, x); } else - move_block_to_reg (REGNO (reg), mem, nregs, args[i].mode); + { + if (size % UNITS_PER_WORD == 0 + || MEM_ALIGN (mem) % BITS_PER_WORD == 0) + move_block_to_reg (REGNO (reg), mem, nregs, args[i].mode); + else + { + if (nregs 1) + move_block_to_reg (REGNO (reg), mem, + nregs - 1, args[i].mode); + rtx dest = gen_rtx_REG (word_mode, + REGNO (reg) + nregs - 1); + rtx src = operand_subword_force (mem, + nregs - 1, args[i].mode); + rtx tem = extract_bit_field (src, size * BITS_PER_UNIT, + 0, 1, dest, word_mode, + word_mode); + if (tem != dest) + convert_move (dest, tem, 1); + } + } } /* When a parameter is a block, and perhaps in other cases, it is it's similar to what store_unaligned_arguments_into_pseudos would end up doing but only for the last register (so it's probably easier to dispatch to that and handle !STRICT_ALIGNMENT targets there). Anyway, the generated code is of course horrible. foo: .LFB0: .cfi_startproc movq%rdi, %rcx movzwl (%rdi), %edx movzwl 2(%rdi), %edi salq$16, %rdi movq%rdi, %rax movzwl 4(%rcx), %edi orq %rdx, %rax salq$32, %rdi orq %rax, %rdi jmp print_colour for some reason extract_bit_field doesn't consider using a 4-byte load for the first part. With AVX one could also use a masked load (and thus implement the extv/insv pattern family? not sure if it is valid to reject non-byte boundary variants). But if we end up using extract_bit_field more and more it's worth optimizing it further to avoid the above mess... (we end up using extract_split_bit_field).
[Bug ipa/60327] [4.9 Regression] xalanbmk and dealII ICE in ipa-inline-analysis.c:3555
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60327 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #3 from Richard Biener rguenth at gcc dot gnu.org --- Fixed.
[Bug fortran/60341] ICE compiling Nonmem 6.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60341 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-02-26 Ever confirmed|0 |1 Known to fail||4.7.3, 4.8.2, 4.9.0 --- Comment #3 from Richard Biener rguenth at gcc dot gnu.org --- Confirmed. f951: internal compiler error: Segmentation fault 0xc5fa7a crash_signal /space/rguenther/src/svn/trunk/gcc/toplev.c:337 0x6ec628 gfc_dep_compare_expr(gfc_expr*, gfc_expr*) /space/rguenther/src/svn/trunk/gcc/fortran/dependency.c:345 0x79503e optimize_comparison /space/rguenther/src/svn/trunk/gcc/fortran/frontend-passes.c:1402 0x794af2 optimize_op /space/rguenther/src/svn/trunk/gcc/fortran/frontend-passes.c:1222 0x7929fd optimize_expr /space/rguenther/src/svn/trunk/gcc/fortran/frontend-passes.c:170 0x795b8c gfc_expr_walker(gfc_expr**, int (*)(gfc_expr**, int*, void*), void*) /space/rguenther/src/svn/trunk/gcc/fortran/frontend-passes.c:1787 0x797866 gfc_code_walker(gfc_code**, int (*)(gfc_code**, int*, void*), int (*)(gfc_expr**, int*, void*), void*) /space/rguenther/src/svn/trunk/gcc/fortran/frontend-passes.c:2134
[Bug libstdc++/52015] std::to_string does not work under MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015 --- Comment #36 from Jonathan Wakely redi at gcc dot gnu.org --- (In reply to Roman from comment #35) Tried to apply proposed patch for MinGW 4.8.1 and received no positive effect. Compiler tells about error : 'stoi' was not declared in this scope. Have any Idea how to fix it? Not enough information to be useful. Did you even use -std=c++11 ? Noone here can debug your modified sources, you'll have to look into what is or isn't defined on your system after the patch. Try looking at the preprocessed source, for example.
[Bug bootstrap/60343] r208155 breaks bootstrap
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 --- Comment #1 from Uroš Bizjak ubizjak at gmail dot com --- Following patch works for me: --cut here-- Index: lra-assigns.c === --- lra-assigns.c (revision 208168) +++ lra-assigns.c (working copy) @@ -898,7 +898,7 @@ spill_for (int regno, bitmap spilled_pseudo_bitmap } n = 0; if (sparseset_cardinality (live_range_reload_inheritance_pseudos) - = LRA_MAX_CONSIDERED_RELOAD_PSEUDOS) + = (unsigned) LRA_MAX_CONSIDERED_RELOAD_PSEUDOS) EXECUTE_IF_SET_IN_SPARSESET (live_range_reload_inheritance_pseudos, reload_regno) if ((int) reload_regno != regno --cut here--
[Bug tree-optimization/60340] ICE on valid code with -fcheck-data-deps at -O1 and above on x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60340 --- Comment #1 from Richard Biener rguenth at gcc dot gnu.org --- I'm not sure that -fcheck-data-deps has been kept up-to-date enough to be useful ... (and the omega result looks bogus)
[Bug bootstrap/60343] [4.9 Regression] r208155 breaks bootstrap
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-02-26 Target Milestone|--- |4.9.0 Summary|r208155 breaks bootstrap|[4.9 Regression] r208155 ||breaks bootstrap Ever confirmed|0 |1 --- Comment #2 from Richard Biener rguenth at gcc dot gnu.org --- Confirmed.
[Bug c++/60344] New: [C++1y] 7.1.6.4/13 not enforced
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60344 Bug ID: 60344 Summary: [C++1y] 7.1.6.4/13 not enforced Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: paolo.carlini at oracle dot com Looks like we are wrongly accepting: auto f(); decltype(auto) f();
[Bug bootstrap/60343] [4.9 Regression] r208155 breaks bootstrap
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 --- Comment #3 from Richard Biener rguenth at gcc dot gnu.org --- Author: rguenth Date: Wed Feb 26 10:29:04 2014 New Revision: 208170 URL: http://gcc.gnu.org/viewcvs?rev=208170root=gccview=rev Log: 2014-02-26 Richard Biener rguent...@suse.de PR bootstrap/60343 * lra-assigns.c (spill_for): Avoid mixed-sign comparison. Modified: trunk/gcc/ChangeLog trunk/gcc/lra-assigns.c
[Bug rtl-optimization/60317] [4.9 Regression] find_hard_regno_for compile time hog in libvpx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60317 Bug 60317 depends on bug 60343, which changed state. Bug 60343 Summary: [4.9 Regression] r208155 breaks bootstrap http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED
[Bug bootstrap/60343] [4.9 Regression] r208155 breaks bootstrap
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60343 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from Richard Biener rguenth at gcc dot gnu.org --- Fixed.
[Bug c++/60345] New: [4.9 Regression] r208159 cause Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 Bug ID: 60345 Summary: [4.9 Regression] r208159 cause Firefox build error Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: jason at gcc dot gnu.org With r208159 I get during Firefox build: markus@x4 src % g++ -w -c -std=gnu++0x Parser.ii /var/tmp/mozilla-central/js/src/frontend/Parser.cpp: In member function ‘bool js::frontend::ParseContextParseHandler::define(js::frontend::TokenStream, js::HandlePropertyN ame, js::frontend::ParseContextParseHandler::Node, js::frontend::Definition::Kind) [with ParseHandler = js::frontend::FullParseHandler; js::HandlePropertyName = JS::Handle js::PropertyName*; js::frontend::ParseContextParseHandler::Node = js::frontend::ParseNode*]’: /var/tmp/mozilla-central/js/src/frontend/Parser.cpp:132:37: error: no matching function for call to ‘js::InlineMapJSAtom*, js::frontend::DefinitionSingle, 24ul::remove(js:: HandlePropertyName)’ lexdeps-remove(name); ^ /var/tmp/mozilla-central/js/src/frontend/Parser.cpp:132:37: note: candidates are: In file included from /var/tmp/mozilla-central/js/src/frontend/ParseMaps.h:13:0, from /var/tmp/mozilla-central/js/src/vm/Runtime.h:29, from /var/tmp/mozilla-central/js/src/jscntxt.h:15, from /var/tmp/mozilla-central/js/src/frontend/TokenStream.h:19, from /var/tmp/mozilla-central/js/src/frontend/ParseNode.h:12, from /var/tmp/mozilla-central/js/src/frontend/FullParseHandler.h:12, from /var/tmp/mozilla-central/js/src/frontend/Parser.h:17, from /var/tmp/mozilla-central/js/src/frontend/Parser-inl.h:10, from /var/tmp/mozilla-central/js/src/frontend/Parser.cpp:20: /var/tmp/mozilla-central/js/src/ds/InlineMap.h:282:10: note: void js::InlineMapK, V, InlineElems::remove(js::InlineMapK, V, InlineElems::Ptr) [with K = JSAtom*; V = js::f rontend::DefinitionSingle; long unsigned int InlineElems = 24ul] void remove(Ptr p) { ^ /var/tmp/mozilla-central/js/src/ds/InlineMap.h:282:10: note: no known conversion for argument 1 from ‘js::HandlePropertyName {aka JS::Handlejs::PropertyName*}’ to ‘js::In lineMapJSAtom*, js::frontend::DefinitionSingle, 24ul::Ptr’ /var/tmp/mozilla-central/js/src/ds/InlineMap.h:295:10: note: void js::InlineMapK, V, InlineElems::remove(const K) [with K = JSAtom*; V = js::frontend::DefinitionSingle; lo ng unsigned int InlineElems = 24ul] void remove(const K key) { ^ /var/tmp/mozilla-central/js/src/ds/InlineMap.h:295:10: note: no known conversion for argument 1 from ‘js::HandlePropertyName {aka JS::Handlejs::PropertyName*}’ to ‘JSAtom * const’ /var/tmp/mozilla-central/js/src/frontend/Parser.cpp: In member function ‘bool js::frontend::ParseContextParseHandler::define(js::frontend::TokenStream, js::HandlePropertyN ame, js::frontend::ParseContextParseHandler::Node, js::frontend::Definition::Kind) [with ParseHandler = js::frontend::SyntaxParseHandler; js::HandlePropertyName = JS::Handl ejs::PropertyName*; js::frontend::ParseContextParseHandler::Node = js::frontend::SyntaxParseHandler::Node]’: Reducing...
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Created attachment 32218 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32218action=edit unreduced testcase
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.9.0
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org --- markus@x4 src % cat test.ii class A {}; template typename T class Handle : A { public: operator T (); }; class JSAtom {}; class PropertyName : public JSAtom {}; template typename K, typename, int class InlineMap { public: void remove(const K ); }; class DefinitionSingle; template class Map struct AtomThingMapPtr { Map *operator-(); }; template typename AtomThingMapPtrT class D : public AtomThingMapPtrT {}; struct B : AtomThingMapPtrInlineMapJSAtom *, DefinitionSingle, 0 {}; class TokenStream; class ParseNode {}; struct Definition : ParseNode { enum Kind {}; }; class FullParseHandler { public: typedef ParseNode *Node; }; struct C {}; template typename struct ParseContext : C { bool define(TokenStream , HandlePropertyName *, FullParseHandler::Node, Definition::Kind); DB lexdeps; }; template bool ParseContextFullParseHandler::define(TokenStream , HandlePropertyName * name, ParseNode *, Definition::Kind) { lexdeps-remove(name); } markus@x4 src % g++ -std=gnu++0x -c test.ii test.ii: In member function ‘bool ParseContext template-parameter-1-1 ::define(TokenStream, HandlePropertyName*, FullParseHandler::Node, Definition::Kind) [with template-parameter-1-1 = FullParseHandler; FullParseHandler::Node = ParseNode*]’: test.ii:39:23: error: no matching function for call to ‘InlineMapJSAtom*, DefinitionSingle, 0::remove(HandlePropertyName*)’ lexdeps-remove(name); ^ test.ii:39:23: note: candidate is: test.ii:11:8: note: void InlineMapK, template-parameter-1-2, anonymous ::remove(const K) [with K = JSAtom*; template-parameter-1-2 = DefinitionSingle; int anonymous = 0] void remove(const K ); ^ test.ii:11:8: note: no known conversion for argument 1 from ‘HandlePropertyName*’ to ‘JSAtom* const’
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org --- markus@x4 src % cat test.ii template typename T struct A { operator T (); }; class C {}; class J : public C {}; template typename K struct F { void m_fn1(const K ); }; template typename AtomThingMapPtrT struct D : AtomThingMapPtrT {}; struct B { FC * *operator-(); }; struct G { enum Kind {}; }; struct H { typedef G *Node; }; template typename struct I { bool m_fn1(int , AJ *, H::Node, G::Kind); DB lexdeps; }; template bool Iint::m_fn1(int , AJ * p2, G *, G::Kind) { lexdeps-m_fn1(p2); }
[Bug middle-end/59176] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59176 --- Comment #7 from David Binderman dcb314 at hotmail dot com --- (In reply to David Binderman from comment #6) I have another test case, available on request. Still going wrong. From the gcc test suite, g++.old-deja/g++.jason/thunk1.C is fine with -O2 and then goes wrong with -O3.
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #4 from Marc Glisse glisse at gcc dot gnu.org --- template typename T struct A { operator T (); }; struct C {}; struct J : C {}; void f(C* const); void g(AJ * p2) { f(p2); }
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #5 from Marc Glisse glisse at gcc dot gnu.org --- struct C {}; struct J : C {}; struct A { operator J* (); }; A p; C* const q = p; (I'll stop there ;-)
[Bug target/57232] wcstol.c:213:1: internal compiler error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57232 --- Comment #18 from Jon Beniston jon at beniston dot com --- Thanks, this seems to fix the LM32 port.
[Bug c++/60182] g++ segfault within template expansion using using aliasing
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1 Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2014-02-26 Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org Ever confirmed|0 |1
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #6 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 16:48:22 2014 New Revision: 208175 URL: http://gcc.gnu.org/viewcvs?rev=208175root=gccview=rev Log: PR c++/60345 Revert: DR 1571 * call.c (reference_binding): Recurse on user-defined conversion. (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch. Removed: trunk/gcc/testsuite/g++.dg/cpp0x/rv-init1.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/testsuite/g++.dg/cpp0x/overload3.C
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Jason Merrill jason at gcc dot gnu.org --- Fixed by reverting r208159.
[Bug c++/60345] [4.9 Regression] r208159 causes Firefox build error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345 --- Comment #8 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 16:51:14 2014 New Revision: 208176 URL: http://gcc.gnu.org/viewcvs?rev=208176root=gccview=rev Log: PR c++/60345 * g++.dg/conversion/ref1.C: New. Added: trunk/gcc/testsuite/g++.dg/conversion/ref1.C
[Bug c++/60182] g++ segfault within template expansion using using aliasing
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182 --- Comment #2 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 17:01:12 2014 New Revision: 208177 URL: http://gcc.gnu.org/viewcvs?rev=208177root=gccview=rev Log: PR c++/60182 * pt.c (unify): Ignore alias templates when deducing a template template parameter. Added: trunk/gcc/testsuite/g++.dg/cpp0x/alias-decl-41.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 H.J. Lu hjl.tools at gmail dot com changed: What|Removed |Added Summary|va_start corrupts 6-th |empty struct value is |argument in case of empty |passed differently in C and |type used before the format |C++ |string | --- Comment #4 from H.J. Lu hjl.tools at gmail dot com --- (In reply to Andrew Pinski from comment #3) (In reply to H.J. Lu from comment #2) Should g++ put pass the empty struct on stack? It is a target bug if it is passing on the stack. Note in C++, the size of the struct is 1 while in C, the size is 0. Can someone try this on non-x86 targets? [hjl@gnu-6 pr60336]$ cat x.ii struct dummy { }; struct foo { int i1; int i2; int i3; int i4; int i5; }; extern C void fun(struct dummy, struct foo); int main() { struct dummy d; struct foo f = { -1, -2, -3, -4, -5 }; fun(d, f); return 0; } [hjl@gnu-6 pr60336]$ cat fun.i struct dummy { }; struct foo { int i1; int i2; int i3; int i4; int i5; }; void fun(struct dummy d, struct foo f) { if (f.i1 != -1) __builtin_abort(); } [hjl@gnu-6 pr60336]$ gcc -c fun.i [hjl@gnu-6 pr60336]$ gcc -c x.ii [hjl@gnu-6 pr60336]$ g++ fun.o x.o [hjl@gnu-6 pr60336]$ ./a.out Aborted [hjl@gnu-6 pr60336]$ Is this test valid? BTW, clang works fine on x86.
[Bug c++/54440] [c++11] g++ prematurely applying rule that a template parameter pack cannot be followed by a template parameter
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54440 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 17:08:20 2014 New Revision: 208178 URL: http://gcc.gnu.org/viewcvs?rev=208178root=gccview=rev Log: PR c++/54440 * pt.c (get_template_parm_index): New. (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New. (process_template_parm): Allow bare packs in template template parm template parms. (coerce_template_parameter_pack): Handle fixed template template parm packs and fixed packs not at the end of the parm list. (coerce_template_parms): Handle template parm packs not at the end of the parm list. (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion. Added: trunk/gcc/testsuite/g++.dg/cpp0x/variadic151.C trunk/gcc/testsuite/g++.dg/cpp0x/variadic152.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/testsuite/g++.dg/cpp0x/variadic74.C
[Bug c++/60182] g++ segfault within template expansion using using aliasing
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Known to work||4.9.0 Known to fail|4.9.0 | --- Comment #3 from Jason Merrill jason at gcc dot gnu.org --- Fixed in 4.9 so far.
[Bug c++/54440] [c++11] g++ prematurely applying rule that a template parameter pack cannot be followed by a template parameter
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54440 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED Target Milestone|--- |4.9.0 --- Comment #5 from Jason Merrill jason at gcc dot gnu.org --- Applied (with minor tweaks).
[Bug c++/56427] [C++11] template template parameter template parameter pack that depends on another parameter pack
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56427 Bug 56427 depends on bug 54440, which changed state. Bug 54440 Summary: [c++11] g++ prematurely applying rule that a template parameter pack cannot be followed by a template parameter http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54440 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug middle-end/59223] -Wmaybe-uninitialized and -Wuninitialized relationships
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59223 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added CC||msebor at gmail dot com --- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org --- *** Bug 60294 has been marked as a duplicate of this bug. ***
[Bug middle-end/59223] -Wmaybe-uninitialized and -Wuninitialized relationships
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59223 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2014-02-26 CC||mpolacek at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org --- I'll post a patch.
[Bug c/60294] missing diagnostic with -Wmaybe-uninitialized
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60294 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||mpolacek at gcc dot gnu.org Resolution|--- |DUPLICATE --- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org --- Seems like a dup. *** This bug has been marked as a duplicate of bug 59223 ***
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #5 from Uroš Bizjak ubizjak at gmail dot com --- (In reply to Andrew Pinski from comment #3) It is a target bug if it is passing on the stack. Note in C++, the size of the struct is 1 while in C, the size is 0. Changing the testcase a bit: fun(d, 2, 3, 4, 5, 6, 7, 8); cc1plus -O2 -maccumulate-outgoing-args: xorl%eax, %eax movl$7, %r9d movl$8, 8(%rsp) movb$0, (%rsp) --- this shouldn't be there. movl$6, %r8d movl$5, %ecx movl$4, %edx movl$3, %esi movl$2, %edi call_Z3fun5dummyiz clang -O2: movl$8, (%rsp) movl$3, %esi movl$4, %edx movl$5, %ecx movl$6, %r8d movl$7, %r9d xorl%eax, %eax callq _Z3fun5dummyiz
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #6 from Uroš Bizjak ubizjak at gmail dot com --- (In reply to H.J. Lu from comment #4) Can someone try this on non-x86 targets? I get abort on alpha: $ gcc -c fun.i $ gcc -c x.ii $ g++ fun.o x.o $ ./a.out Aborted
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #7 from Andrew Pinski pinskia at gcc dot gnu.org --- (In reply to H.J. Lu from comment #4) Is this test valid? BTW, clang works fine on x86. No this testcase is not valid at all. See http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty-Structures where it is documented it is not valid.
[Bug c++/59231] [4.8/4.9 Regression] gcc misses [-Werror=sign-compare] when inside a template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59231 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/59570] Warning for semicolon trailing closing curly brackets
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59570 Eugene Zelenko eugene.zelenko at gmail dot com changed: What|Removed |Added Keywords||diagnostic --- Comment #1 from Eugene Zelenko eugene.zelenko at gmail dot com --- Clang (I just tried 3.4) have such warning (-Wextra-semi).
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #8 from H.J. Lu hjl.tools at gmail dot com --- This works: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 00773d8..16669b9 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -7193,6 +7193,7 @@ function_arg_advance_64 (CUMULATIVE_ARGS *cum, enum machine_mode mode, return; if (examine_argument (mode, type, 0, int_nregs, sse_nregs) + (sse_nregs || int_nregs) sse_nregs = cum-sse_nregs int_nregs = cum-nregs) { cum-nregs -= int_nregs;
[Bug fortran/60341] ICE compiling Nonmem 6.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60341 kargl at gcc dot gnu.org changed: What|Removed |Added CC||kargl at gcc dot gnu.org --- Comment #4 from kargl at gcc dot gnu.org --- Reduced testcase subroutine modelg(ncm) implicit none integer, parameter :: pc = 30, pm = pc - 1 integer i character*4 catt(pm,2) integer ncm,iatt(pm,pc) do i=1,ncm if (catt(i,1)//catt(i,2).eq.'central') exit end do iatt(i,4)=1 end
[Bug c++/60347] New: [4.9 Regression] r208152 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Bug ID: 60347 Summary: [4.9 Regression] r208152 breaks Firefox build Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: jason at gcc dot gnu.org markus@x4 html % g++ -c -w -march=amdfam10 -std=gnu++0x -O2 Unified_cpp_parser_html1.ii In file included from ../../dist/include/nsHashKeys.h:12:0, from /var/tmp/mozilla-central/parser/html/nsHtml5AtomTable.h:8, from /var/tmp/mozilla-central/parser/html/nsHtml5AttributeName.h:32, from /var/tmp/mozilla-central/parser/html/nsHtml5ReleasableAttributeName.h:8, from /var/tmp/mozilla-central/parser/html/nsHtml5ReleasableAttributeName.cpp:5, from /var/tmp/moz-build-dir/parser/html/Unified_cpp_parser_html1.cpp:2: ../../dist/include/nsAutoPtr.h: In instantiation of ‘nsRefPtrT::~nsRefPtr() [with T = mozilla::dom::ShadowRoot]’: /var/tmp/mozilla-central/parser/html/../../content/base/src/nsGenericDOMDataNode.h:247:9: required from here ../../dist/include/nsAutoPtr.h:900:13: error: invalid use of incomplete type ‘class mozilla::dom::ShadowRoot’ mRawPtr-Release(); ^ In file included from /var/tmp/mozilla-central/parser/html/nsHtml5AttributeName.h:35:0, from /var/tmp/mozilla-central/parser/html/nsHtml5ReleasableAttributeName.h:8, from /var/tmp/mozilla-central/parser/html/nsHtml5ReleasableAttributeName.cpp:5, from /var/tmp/moz-build-dir/parser/html/Unified_cpp_parser_html1.cpp:2: ../../dist/include/nsIContent.h:25:7: error: forward declaration of ‘class mozilla::dom::ShadowRoot’ class ShadowRoot; ^
[Bug c++/60347] [4.9 Regression] r208152 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 --- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Created attachment 32219 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32219action=edit Unreduced testcase
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #9 from vagran vagran.ast at gmail dot com --- (In reply to Andrew Pinski from comment #7) (In reply to H.J. Lu from comment #4) Is this test valid? BTW, clang works fine on x86. No this testcase is not valid at all. See http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty- Structures where it is documented it is not valid. How it proves that the test case is invalid? Independently on what size has empty structure the called function absolutely legally can expect it receives the values which were passed by the caller. A compiler should care it works for both C and C++. Am I wrong? Also as I remember in C++ size of empty structure is sizeof(char) except the case some class is derived from the empty structure. In this case it adds no overhead to the size of the derived class itself (thus virtually has zero size in this case).
[Bug libquadmath/60349] New: Any call to expq (or libquadmath function that might possibly call expq) segfaults in mingw-gcc.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60349 Bug ID: 60349 Summary: Any call to expq (or libquadmath function that might possibly call expq) segfaults in mingw-gcc. Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: blocker Priority: P3 Component: libquadmath Assignee: unassigned at gcc dot gnu.org Reporter: john at johnmaddock dot co.uk This effects gcc-4.8.1 and 4.8.2 (at least), on both mingw32 and mingw64, the following program segfaults: #include quadmath.h int main() { __float128 a = expq(2.0Q); return 0; } Mingw gcc-4.7.x and Linux are obviously both fine.
[Bug libstdc++/60348] New: -static-libstdc++ broken
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60348 Bug ID: 60348 Summary: -static-libstdc++ broken Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: nachms+gcc at gmail dot com -static-libstdc++ does not seem to be working anymore. Consider this following test application: - #include iostream #include string int main() { std::string s; if (s.empty()) { std::cout String is empty! std::endl; } return(0); } - g++ -Wall -o test test.cpp -static-libgcc -static-libstdc++ test here should not contain any references to libstdc++ symbols as it is being linked statically, however, objdump -T test contains the following: 006915c0 uDO .bss 0020 Base _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE 00691600 uDO .bss 0020 Base _ZNSs4_Rep20_S_empty_rep_storageE These are both symbols from libstdc++ that should have been staticaly linked, yet they are now undefined, and indeed, this binary will not run on a system without a sufficiently up to date libstdc++ installed. Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.8.2-16' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.2 (Debian 4.8.2-16) GNU ld (GNU Binutils for Debian) 2.24
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #10 from Andrew Pinski pinskia at gcc dot gnu.org --- (In reply to vagran from comment #9) (In reply to Andrew Pinski from comment #7) (In reply to H.J. Lu from comment #4) Is this test valid? BTW, clang works fine on x86. No this testcase is not valid at all. See http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Empty-Structures.html#Empty- Structures where it is documented it is not valid. How it proves that the test case is invalid? I am not saying the original testcase (variable argument case) is invalid, just the testcase where you are passing an empty struct between C and C++ one is invalid.
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #11 from H.J. Lu hjl.tools at gmail dot com --- This patch may be better: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 00773d8..426146a 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6842,7 +6842,7 @@ examine_argument (enum machine_mode mode, const_tree type, int in_return, case X86_64_MEMORY_CLASS: gcc_unreachable (); } - return 1; + return *int_nregs || *sse_nregs; } /* Construct container for the argument used by GCC interface. See
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Summary|[4.9 Regression] r208152|[4.9 Regression] r208153 |breaks Firefox build|breaks Firefox build --- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Sorry off by one in revision. It started with r208153.
[Bug fortran/60341] ICE compiling Nonmem 6.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60341 --- Comment #5 from Steve Kargl sgk at troutmask dot apl.washington.edu --- On Wed, Feb 26, 2014 at 07:15:49PM +, kargl at gcc dot gnu.org wrote: The workaround should be obvious, but just encase Reduced testcase subroutine modelg(ncm) implicit none integer, parameter :: pc = 30, pm = pc - 1 integer i character*4 catt(pm,2) character(len=7) stmp integer ncm,iatt(pm,pc) do i=1,ncm stmp = catt(i,1)//catt(i,2) if (stmp .eq. 'central') exit if (catt(i,1)//catt(i,2).eq.'central') exit end do iatt(i,4)=1 end A similar temporary should be applicable to the original code.
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #12 from Marc Glisse glisse at gcc dot gnu.org --- It is a bit alarming that gcc, clang and clang++ use one ABI and g++ uses a different (inferior) one (the incompatibility with clang++ should affect some standard library functions, though they are often inlined). Also, extern C is a calling convention marker, and it is rather disrespectful of g++ to ignore it, even if this is only about a non-standard (but documented) extension.
[Bug c++/59598] very simple code using file open for read
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598 Denis Kolesnik denis.v.koles...@safe-mail.net changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED Resolution|INVALID |--- --- Comment #56 from Denis Kolesnik denis.v.koles...@safe-mail.net --- it is a bug and if it is related to DMZ so as I think I will not do any diplomacy on it.
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #13 from H.J. Lu hjl.tools at gmail dot com --- Passing struct dummy { }; is still odd for g++. It is supposed to have a single member of type char, which should be passed in register, not on stack.
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1 Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2014-02-26 Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org Ever confirmed|0 |1
[Bug spam/59598] very simple code using file open for read
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59598 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Component|c++ |spam Resolution|--- |INVALID --- Comment #57 from Jonathan Wakely redi at gcc dot gnu.org --- go away
[Bug fortran/60341] ICE compiling Nonmem 6.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60341 Mikael Morin mikael at gcc dot gnu.org changed: What|Removed |Added CC||mikael at gcc dot gnu.org --- Comment #6 from Mikael Morin mikael at gcc dot gnu.org --- Looks like an unguarded union access. This is a regression from the time there was now front-end optimization I guess? diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index 52bd700..e663868 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -1391,7 +1391,9 @@ optimize_comparison (gfc_expr *e, gfc_intrinsic_op op) /* Replace A // B A // C with B C, and A // B C // B with A C. */ if (op1-ts.type == BT_CHARACTER op2-ts.type == BT_CHARACTER + op1-expr_type == EXPR_OP op1-value.op.op == INTRINSIC_CONCAT + op2-expr_type == EXPR_OP op2-value.op.op == INTRINSIC_CONCAT) { gfc_expr *op1_left = op1-value.op.op1;
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Priority|P1 |P3 Status|ASSIGNED|UNCONFIRMED Last reconfirmed|2014-02-26 00:00:00 | Assignee|jason at gcc dot gnu.org |unassigned at gcc dot gnu.org Ever confirmed|1 |0 --- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org --- markus@x4 html % cat test.ii template class T class nsRefPtr { T *mRawPtr; public: typedef T element_type; ~nsRefPtr() { mRawPtr-Release; } }; class nsSlots { public: virtual ~nsSlots(); }; class A; class B : nsSlots { nsRefPtrA mContainingShadow; }; markus@x4 html % g++ -O2 -c test.ii test.ii: In instantiation of ‘nsRefPtrT::~nsRefPtr() [with T = A]’: test.ii:14:7: required from here test.ii:6:17: error: invalid use of incomplete type ‘class A’ ~nsRefPtr() { mRawPtr-Release; } ^ test.ii:13:7: error: forward declaration of ‘class A’ class A; ^
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2014-02-26 Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org Ever confirmed|0 |1
[Bug target/60336] empty struct value is passed differently in C and C++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #14 from H.J. Lu hjl.tools at gmail dot com --- (In reply to H.J. Lu from comment #13) Passing struct dummy { }; is still odd for g++. It is supposed to have a single member of type char, which should be passed in register, not on stack. This passes it in register: diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 00773d8..6975ff1 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6613,6 +6613,8 @@ classify_argument (enum machine_mode mode, const_tree type, return 0; } } + if (mode == QImode words == 1 classes[0] == X86_64_NO_CLASS) + classes[0] = X86_64_INTEGERSI_CLASS; return words; }
[Bug lto/55113] ICE with LTO and -fshort-double
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55113 --- Comment #13 from pmatos at gcc dot gnu.org --- (In reply to Richard Biener from comment #11) If double_type_node is FE dependent then it needs treatment in tree-streamer.c:preload_common_nodes: static void preload_common_nodes (struct streamer_tree_cache_d *cache) { unsigned i; for (i = 0; i itk_none; i++) /* Skip itk_char. char_type_node is dependent on -f[un]signed-char. */ if (i != itk_char) record_common_node (cache, integer_types[i]); for (i = 0; i stk_type_kind_last; i++) record_common_node (cache, sizetype_tab[i]); for (i = 0; i TI_MAX; i++) /* Skip boolean type and constants, they are frontend dependent. */ if (i != TI_BOOLEAN_TYPE i != TI_BOOLEAN_FALSE i != TI_BOOLEAN_TRUE) record_common_node (cache, global_trees[i]); } Richard, I tried what you suggested but led me nowhere. In the meantime I noticed that -fshort-double shows up in COLLECT_GCC_OPTIONS before collect2 is called: COLLECT_GCC_OPTIONS='-fshort-double' '-flto' '-nostdlib' '-o' 'test' '-save-temps' '-v' '-da' '-fdump-tree-all-all' '-mcpu=8540' /home/pmatos/work/pr55113/top-4_8/toolchain/install/libexec/gcc/powerpc-eabispe/4.8.3/collect2 -plugin /home/pmatos/work/pr55113/top-4_8/toolchain/install/libexec/gcc/powerpc-eabispe/4.8.3/liblto_plugin.so -plugin-opt=/home/pmatos/work/pr55113/top-4_8/toolchain/install/libexec/gcc/powerpc-eabispe/4.8.3/lto-wrapper -plugin-opt=-fresolution=pr55113.res -flto --sysroot=/home/pmatos/work/pr55113/top-4_8/toolchain/prex_sysroot --eh-frame-hdr -V -dn -Bstatic -o test -L/home/pmatos/work/pr55113/top-4_8/toolchain/install/lib/gcc/powerpc-eabispe/4.8.3 -L/home/pmatos/work/pr55113/top-4_8/toolchain/install/lib/gcc/powerpc-eabispe/4.8.3/../../../../powerpc-eabispe/lib pr55113.o but not after when lto1 is called: COLLECT_GCC_OPTIONS='-c' '-mcpu=8540' '-nostdlib' '-save-temps' '-v' '-da' '-fdump-tree-all-all' '-mcpu=8540' '-dumpdir' './' '-dumpbase' 'test.wpa' '-fltrans-output-list=test.ltrans.out' '-fwpa' '-fresolution=pr55113.res' /home/pmatos/work/pr55113/top-4_8/toolchain/install/libexec/gcc/powerpc-eabispe/4.8.3/lto1 -quiet -da -dumpdir ./ -dumpbase test.wpa -mcpu=8540 -mcpu=8540 -auxbase pr55113 -version -fdump-tree-all-all -fltrans-output-list=test.ltrans.out -fwpa -fresolution=pr55113.res @/tmp/ccW7YQPl Somewhere along the line the option is lost. It seems to be that only some options are kept and optimization options are lost, like fshort-double. However, in lto/lto-lang.c:lto_init you have: /* Create the basic integer types. */ build_common_tree_nodes (flag_signed_char, /*short_double=*/false); This hardcodes short double to false. If I were to hardcode this to true, Patricks example would work. I think similarly to what we do in c-family/c-common.c: build_common_tree_nodes (flag_signed_char, flag_short_double); we need to pass flag_short_double but the only way to do so is by letting fshort-double pass through the flag filtering that goes on before lto1 is called. I will prepare a patch to add this exception, let me know if you think there's a better way.
[Bug target/57636] cr16: ICE while building libgcc
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57636 --- Comment #5 from Jon Beniston jon at beniston dot com --- It's worth trying the fix posted for bug 57232.
[Bug c++/37140] type inherited from base class not recognized
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37140 --- Comment #16 from fabien at gcc dot gnu.org --- Author: fabien Date: Wed Feb 26 21:16:15 2014 New Revision: 208182 URL: http://gcc.gnu.org/viewcvs?rev=208182root=gccview=rev Log: 2014-02-26 Fabien Chene fab...@gcc.gnu.org PR c++/37140 * parser.c (cp_parser_nonclass_name): Call strip_using_decl and move the code handling dependent USING_DECLs... * name-lookup.c (strip_using_decl): ...Here. 2014-02-26 Fabien Chene fab...@gcc.gnu.org PR c++/37140 * g++.dg/template/using27.C: New. * g++.dg/template/using28.C: New. * g++.dg/template/using29.C: New. Added: branches/gcc-4_7-branch/gcc/testsuite/g++.dg/template/using27.C branches/gcc-4_7-branch/gcc/testsuite/g++.dg/template/using28.C branches/gcc-4_7-branch/gcc/testsuite/g++.dg/template/using29.C Modified: branches/gcc-4_7-branch/gcc/cp/ChangeLog branches/gcc-4_7-branch/gcc/cp/name-lookup.c branches/gcc-4_7-branch/gcc/cp/parser.c branches/gcc-4_7-branch/gcc/testsuite/ChangeLog
[Bug c++/59231] [4.8/4.9 Regression] gcc misses [-Werror=sign-compare] when inside a template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59231 --- Comment #8 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:28:08 2014 New Revision: 208183 URL: http://gcc.gnu.org/viewcvs?rev=208183root=gccview=rev Log: PR c++/59231 PR c++/11586 PR c++/14710 PR c++/57132 gcc/ * c-common.c (shorten_compare): Don't check c_inhibit_evaluation_warnings. gcc/cp/ * pt.c (struct warning_sentinel): New. (tsubst_copy_and_build): Use it instead of c_inhibit_evaluation_warnings. Added: trunk/gcc/testsuite/g++.dg/warn/Wsign-compare-7.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc trunk/gcc/testsuite/g++.dg/cpp0x/overflow1.C
[Bug c++/14710] Warning about useless casts
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14710 --- Comment #12 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:28:08 2014 New Revision: 208183 URL: http://gcc.gnu.org/viewcvs?rev=208183root=gccview=rev Log: PR c++/59231 PR c++/11586 PR c++/14710 PR c++/57132 gcc/ * c-common.c (shorten_compare): Don't check c_inhibit_evaluation_warnings. gcc/cp/ * pt.c (struct warning_sentinel): New. (tsubst_copy_and_build): Use it instead of c_inhibit_evaluation_warnings. Added: trunk/gcc/testsuite/g++.dg/warn/Wsign-compare-7.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc trunk/gcc/testsuite/g++.dg/cpp0x/overflow1.C
[Bug c++/57132] spurious warning: division by zero [-Wdiv-by-zero] in if (m) res %=m;
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57132 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:28:08 2014 New Revision: 208183 URL: http://gcc.gnu.org/viewcvs?rev=208183root=gccview=rev Log: PR c++/59231 PR c++/11586 PR c++/14710 PR c++/57132 gcc/ * c-common.c (shorten_compare): Don't check c_inhibit_evaluation_warnings. gcc/cp/ * pt.c (struct warning_sentinel): New. (tsubst_copy_and_build): Use it instead of c_inhibit_evaluation_warnings. Added: trunk/gcc/testsuite/g++.dg/warn/Wsign-compare-7.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc trunk/gcc/testsuite/g++.dg/cpp0x/overflow1.C
[Bug c/11586] after call sigaction, system() return wrong status
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11586 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:28:08 2014 New Revision: 208183 URL: http://gcc.gnu.org/viewcvs?rev=208183root=gccview=rev Log: PR c++/59231 PR c++/11586 PR c++/14710 PR c++/57132 gcc/ * c-common.c (shorten_compare): Don't check c_inhibit_evaluation_warnings. gcc/cp/ * pt.c (struct warning_sentinel): New. (tsubst_copy_and_build): Use it instead of c_inhibit_evaluation_warnings. Added: trunk/gcc/testsuite/g++.dg/warn/Wsign-compare-7.C Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc trunk/gcc/testsuite/g++.dg/cpp0x/overflow1.C
[Bug lto/53808] Undefined symbol when building a library with lto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53808 --- Comment #10 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:32:41 2014 New Revision: 208184 URL: http://gcc.gnu.org/viewcvs?rev=208184root=gccview=rev Log: PR c++/60347 PR lto/53808 * class.c (clone_function_decl): Don't note_vague_linkage_fn. * init.c (build_vtbl_address): Do it here. Added: trunk/gcc/testsuite/g++.dg/template/dtor9.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/init.c
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:32:41 2014 New Revision: 208184 URL: http://gcc.gnu.org/viewcvs?rev=208184root=gccview=rev Log: PR c++/60347 PR lto/53808 * class.c (clone_function_decl): Don't note_vague_linkage_fn. * init.c (build_vtbl_address): Do it here. Added: trunk/gcc/testsuite/g++.dg/template/dtor9.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/init.c
[Bug c++/59231] [4.8/4.9 Regression] gcc misses [-Werror=sign-compare] when inside a template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59231 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED Target Milestone|4.8.3 |4.9.0 --- Comment #9 from Jason Merrill jason at gcc dot gnu.org --- Fixed for 4.9.
[Bug c++/30301] Invalid static member of anonymous class or union diagnosed too late
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30301 Volker Reichelt reichelt at gcc dot gnu.org changed: What|Removed |Added CC||jason at gcc dot gnu.org --- Comment #2 from Volker Reichelt reichelt at gcc dot gnu.org --- Jason, your commit http://gcc.gnu.org/viewcvs/gcc?view=revisionrevision=208156 seems to have fixed this long-standing bug. Do you want to add these testcases to the testsuite?
[Bug c++/60347] [4.9 Regression] r208153 breaks Firefox build
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60347 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED Target Milestone|--- |4.9.0 --- Comment #5 from Jason Merrill jason at gcc dot gnu.org --- Fixed.
[Bug c++/30301] Invalid static member of anonymous class or union diagnosed too late
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30301 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED Target Milestone|--- |4.9.0 --- Comment #3 from Jason Merrill jason at gcc dot gnu.org --- Done, thanks.
[Bug c++/30301] Invalid static member of anonymous class or union diagnosed too late
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30301 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org --- Author: jason Date: Wed Feb 26 21:44:48 2014 New Revision: 208185 URL: http://gcc.gnu.org/viewcvs?rev=208185root=gccview=rev Log: PR c++/30301 * g++.dg/parse/unnamed2.C: New. Added: trunk/gcc/testsuite/g++.dg/parse/unnamed2.C
[Bug c++/58648] [c++11] ICE with variadic template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58648 Volker Reichelt reichelt at gcc dot gnu.org changed: What|Removed |Added CC||jason at gcc dot gnu.org --- Comment #1 from Volker Reichelt reichelt at gcc dot gnu.org --- Jason, this bug was fixed by your patch for PR54440. Do you want to add this testcase to the testsuite as well?
[Bug c++/59066] [C++11] 'using' instead of 'typedef' causes a segmentation fault.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59066 Volker Reichelt reichelt at gcc dot gnu.org changed: What|Removed |Added CC||jason at gcc dot gnu.org --- Comment #5 from Volker Reichelt reichelt at gcc dot gnu.org --- Jason, your patch for PR60182 seems to have fixed this one, too. Do you want to add the reduced testcase (in comment#4) to the testsuite?
[Bug target/57935] ICE in rs6000_secondary_reload_inner:15181, type = load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57935 --- Comment #4 from Alan Modra amodra at gcc dot gnu.org --- Author: amodra Date: Wed Feb 26 21:57:40 2014 New Revision: 208186 URL: http://gcc.gnu.org/viewcvs?rev=208186root=gccview=rev Log: PR target/57935 * reload1.c (emit_input_reload_insns): When reload_override_in, set old to rl-in_reg when rl-in_reg is a subreg. Modified: trunk/gcc/ChangeLog trunk/gcc/reload1.c
[Bug target/57936] ICE in rs6000_secondary_reload_inner:15144, type = load
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57936 Alan Modra amodra at gmail dot com changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Alan Modra amodra at gmail dot com --- Blah, committed the patch with the wrong pr number, 57935 vs 57936. Author: amodra Date: Wed Feb 26 21:57:40 2014 New Revision: 208186 URL: http://gcc.gnu.org/viewcvs?rev=208186root=gccview=rev Log: PR target/57936 * reload1.c (emit_input_reload_insns): When reload_override_in, set old to rl-in_reg when rl-in_reg is a subreg. Modified: trunk/gcc/ChangeLog trunk/gcc/reload1.c
[Bug fortran/60341] ICE compiling Nonmem 6.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60341 --- Comment #7 from Steve Kargl sgk at troutmask dot apl.washington.edu --- On Wed, Feb 26, 2014 at 08:38:57PM +, mikael at gcc dot gnu.org wrote: Looks like an unguarded union access. This is a regression from the time there was now front-end optimization I guess? Unfortunately, I've deleted versions of gfortran older than 4.6.x. The code fails with all version above 4.6.x. If one adds -fno-frontend-optimize, then the code compiles. So, yes, it is a regression.
[Bug c/60350] Incorrect -Wmaybe-uninitialized warning with incorrect location information
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60350 Andrew Pinski pinskia at gcc dot gnu.org changed: What|Removed |Added Keywords||diagnostic Severity|normal |minor --- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org --- 2) The column numbers of the two warnings point to the same location :, which is not right. This is most likely due to the casting which is added by the triany operator.
[Bug c/60350] New: Incorrect -Wmaybe-uninitialized warning with incorrect location information
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60350 Bug ID: 60350 Summary: Incorrect -Wmaybe-uninitialized warning with incorrect location information Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com Two questions regarding the following case 1) the variables pf and pv are uninitialized, but not maybe-uninitialized. I am not sure whether this is the design choice of gcc. 2) The column numbers of the two warnings point to the same location :, which is not right. $: cat s.c void a(int i) { int (*pf)[2]; int (*pv)[i + 1]; (i ? pf : pv); } $: gcc-trunk -Wuninitialized -c s.c s.c: In function ‘a’: s.c:4:11: warning: ‘pf’ may be used uninitialized in this function [-Wmaybe-uninitialized] (i ? pf : pv); ^ s.c:4:11: warning: ‘pv’ may be used uninitialized in this function [-Wmaybe-uninitialized] $: gcc-trunk --version gcc-trunk (GCC) 4.9.0 20140226 (experimental) Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[Bug target/60071] [4.9 Regression] [SH] internal compiler error: in final_scan_insn, at final.c:2963
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60071 --- Comment #7 from Kazumoto Kojima kkojima at gcc dot gnu.org --- A testresult with the patch in #6 on sh4-unknown-linux-gnu: http://gcc.gnu.org/ml/gcc-testresults/2014-02/msg01866.html
[Bug c/60351] New: Incorrect column number for warning on right shift count is negative
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60351 Bug ID: 60351 Summary: Incorrect column number for warning on right shift count is negative Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com $: cat s.c void g(int); void f(void) { int i = 1; g( i-1); } $: gcc-trunk -c s.c s.c: In function ‘f’: s.c:4:2: warning: right shift count is negative g( i-1); ^ $:
[Bug libgcc/60247] AVR ATxmega C++ constructor startup in libgcc.S causes boot loop
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60247 bobf at mrp3 dot com changed: What|Removed |Added See Also||http://gcc.gnu.org/bugzilla ||/show_bug.cgi?id=45263 --- Comment #1 from bobf at mrp3 dot com --- bug 45263 may be related (and has been resolved). Preserving registers may still be necessary, however, depending on what happens inside the constructors.
[Bug bootstrap/53902] make install fails on SunOS 5.11
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53902 Rich Lowe richlowe at richlowe dot net changed: What|Removed |Added CC||richlowe at richlowe dot net --- Comment #7 from Rich Lowe richlowe at richlowe dot net --- I'm pretty sure this is a result of using an older binutils. As best as I can tell, s11 shipped with 2.19, and s11u1 with 2.21. I know that 2.19 will fail in this manner, and that 2.22 appears to work. I have not personally tried 2.21
[Bug c++/60352] New: [C++11] Bogus error: conflicting declaration 'auto i'
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60352 Bug ID: 60352 Summary: [C++11] Bogus error: conflicting declaration 'auto i' Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ppluzhnikov at google dot com Using current trunk (r208191): g++ -c t.cc -std=c++11 t.cc:2:6: error: conflicting declaration 'auto i' auto i = j; ^ t.cc:1:12: note: previous declaration as 'int i' extern int i, j; ^ Test: extern int i, j; auto i = j; Google ref: b/13213433
[Bug debug/57232] wcstol.c:213:1: internal compiler error
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57232 Alexandre Oliva aoliva at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed|2013-05-10 00:00:00 |2014-02-27 Component|target |debug Ever confirmed|0 |1 --- Comment #19 from Alexandre Oliva aoliva at gcc dot gnu.org --- Adjusting component before posting patch to gcc-patches.
[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678 --- Comment #17 from Jason Merrill jason at gcc dot gnu.org --- (In reply to Markus Trippelsdorf from comment #0) class A { public: virtual ~A(); }; class B : A { virtual int m_fn1(); }; void fn1() { delete reinterpret_castB*(1); } I don't understand how this could be devirtualized, since there is no actual B object. But this is beside the point. In general I agree with you: there's a fundamental problem here with devirtualization knowing which function to call vs. that function being hidden in another DSO. Client code has no way to know whether the library was built with -fvisibility=hidden. I think we want to add a GCC flag to force more conservative assumptions about visibility, i.e. that we can't refer to anything that might not be defined in the current object, and KDE programs could use that flag. Perhaps we should even make it the default in non-LTO mode.
[Bug libstdc++/52015] std::to_string does not work under MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015 --- Comment #37 from Roman roman.vasiliev at gmail dot com --- Created attachment 32220 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32220action=edit initilal file
[Bug c++/60353] New: [4.9 Regression] Firefox build failure #3 caused by r208157
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60353 Bug ID: 60353 Summary: [4.9 Regression] Firefox build failure #3 caused by r208157 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: jason at gcc dot gnu.org r208157 causes: markus@x4 skia % cat test.ii struct A { A(int); }; typedef struct { A format; } B; markus@x4 skia % g++ -std=c++11 -c test.ii test.ii: In constructor ‘B::B()’: test.ii:6:3: error: no matching function for call to ‘A::A()’ } B; ^ test.ii:6:3: note: candidates are: test.ii:2:3: note: A::A(int) A(int); ^ test.ii:2:3: note: candidate expects 1 argument, 0 provided test.ii:1:8: note: constexpr A::A(const A) struct A { ^ test.ii:1:8: note: candidate expects 1 argument, 0 provided test.ii:1:8: note: constexpr A::A(A) test.ii:1:8: note: candidate expects 1 argument, 0 provided test.ii: At global scope: test.ii:4:16: note: synthesized method ‘B::B()’ first required here typedef struct { ^
[Bug libstdc++/52015] std::to_string does not work under MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015 --- Comment #38 from Roman roman.vasiliev at gmail dot com --- Created attachment 32221 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32221action=edit yeld without -std=c++11
[Bug libstdc++/52015] std::to_string does not work under MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015 --- Comment #39 from Roman roman.vasiliev at gmail dot com --- Created attachment 3 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=3action=edit yeld with -std=c++11
[Bug libstdc++/52015] std::to_string does not work under MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015 --- Comment #40 from Roman roman.vasiliev at gmail dot com --- (In reply to Jonathan Wakely from comment #36) (In reply to Roman from comment #35) Tried to apply proposed patch for MinGW 4.8.1 and received no positive effect. Compiler tells about error : 'stoi' was not declared in this scope. Have any Idea how to fix it? Not enough information to be useful. Did you even use -std=c++11 ? Yes, shure. Noone here can debug your modified sources, you'll have to look into what is or isn't defined on your system after the patch. Try looking at the preprocessed source, for example. I'm not familiar with such a matter. Attached files are: stoi.cpp is initial code stoi_prep.cpp is result of g++ stoi.cpp -E stoi_prep.cpp stoi_prep11.cpp is result of g++ stoi.cpp -E -std=c++11 stoi_prep11.cpp
[Bug middle-end/48784] #pragma pack(1) + -fstrict-volatile-bitfields = bad codegen
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48784 --- Comment #7 from jye2 at gcc dot gnu.org --- Author: jye2 Date: Thu Feb 27 07:28:06 2014 New Revision: 208195 URL: http://gcc.gnu.org/viewcvs?rev=208195root=gccview=rev Log: 2014-02-27 Joey Ye joey...@arm.com Backport mainline strict-volatile-bitfields fixes 2013-09-28 Sandra Loosemore san...@codesourcery.com gcc/ * expr.h (extract_bit_field): Remove packedp parameter. * expmed.c (extract_fixed_bit_field): Remove packedp parameter from forward declaration. (store_split_bit_field): Remove packedp arg from calls to extract_fixed_bit_field. (extract_bit_field_1): Remove packedp parameter and packedp argument from recursive calls and calls to extract_fixed_bit_field. (extract_bit_field): Remove packedp parameter and corresponding arg to extract_bit_field_1. (extract_fixed_bit_field): Remove packedp parameter. Remove code to issue warnings. (extract_split_bit_field): Remove packedp arg from call to extract_fixed_bit_field. * expr.c (emit_group_load_1): Adjust calls to extract_bit_field. (copy_blkmode_from_reg): Likewise. (copy_blkmode_to_reg): Likewise. (read_complex_part): Likewise. (store_field): Likewise. (expand_expr_real_1): Likewise. * calls.c (store_unaligned_arguments_into_pseudos): Adjust call to extract_bit_field. * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Adjust call to extract_bit_field. * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Adjust call to extract_bit_field. * doc/invoke.texi (Code Gen Options): Remove mention of warnings and special packedp behavior from -fstrict-volatile-bitfields documentation. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de * expr.c (expand_assignment): Remove dependency on flag_strict_volatile_bitfields. Always set the memory access mode. (expand_expr_real_1): Likewise. 2013-12-11 Sandra Loosemore san...@codesourcery.com PR middle-end/23623 PR middle-end/48784 PR middle-end/56341 PR middle-end/56997 gcc/ * expmed.c (strict_volatile_bitfield_p): New function. (store_bit_field_1): Don't special-case strict volatile bitfields here. (store_bit_field): Handle strict volatile bitfields here instead. (store_fixed_bit_field): Don't special-case strict volatile bitfields here. (extract_bit_field_1): Don't special-case strict volatile bitfields here. (extract_bit_field): Handle strict volatile bitfields here instead. (extract_fixed_bit_field): Don't special-case strict volatile bitfields here. Simplify surrounding code to resemble that in store_fixed_bit_field. * doc/invoke.texi (Code Gen Options): Update -fstrict-volatile-bitfields description. gcc/testsuite/ * gcc.dg/pr23623.c: New test. * gcc.dg/pr48784-1.c: New test. * gcc.dg/pr48784-2.c: New test. * gcc.dg/pr56341-1.c: New test. * gcc.dg/pr56341-2.c: New test. * gcc.dg/pr56997-1.c: New test. * gcc.dg/pr56997-2.c: New test. * gcc.dg/pr56997-3.c: New test. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de Sandra Loosemore san...@codesourcery.com PR middle-end/23623 PR middle-end/48784 PR middle-end/56341 PR middle-end/56997 * expmed.c (strict_volatile_bitfield_p): Add bitregion_start and bitregion_end parameters. Test for compliance with C++ memory model. (store_bit_field): Adjust call to strict_volatile_bitfield_p. Add fallback logic for cases where -fstrict-volatile-bitfields is supposed to apply, but cannot. (extract_bit_field): Likewise. Use narrow_bit_field_mem and extract_fixed_bit_field_1 to do the extraction. (extract_fixed_bit_field): Revert to previous mode selection algorithm. Call extract_fixed_bit_field_1 to do the real work. (extract_fixed_bit_field_1): New function. testsuite: * gcc.dg/pr23623.c: Update to test interaction with C++ memory model. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de PR middle-end/59134 * expmed.c (store_bit_field): Use narrow_bit_field_mem and store_fixed_bit_field_1 for -fstrict-volatile-bitfields. (store_fixed_bit_field): Split up. Call store_fixed_bit_field_1 to do the real work. (store_fixed_bit_field_1): New function. (store_split_bit_field): Limit the unit size to the memory mode size, to prevent recursion. testsuite: * gcc.c-torture/compile/pr59134.c: New test. * gnat.dg/misaligned_volatile.adb: New test. Added:
[Bug middle-end/56341] GCC produces unaligned data access
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56341 --- Comment #18 from jye2 at gcc dot gnu.org --- Author: jye2 Date: Thu Feb 27 07:28:06 2014 New Revision: 208195 URL: http://gcc.gnu.org/viewcvs?rev=208195root=gccview=rev Log: 2014-02-27 Joey Ye joey...@arm.com Backport mainline strict-volatile-bitfields fixes 2013-09-28 Sandra Loosemore san...@codesourcery.com gcc/ * expr.h (extract_bit_field): Remove packedp parameter. * expmed.c (extract_fixed_bit_field): Remove packedp parameter from forward declaration. (store_split_bit_field): Remove packedp arg from calls to extract_fixed_bit_field. (extract_bit_field_1): Remove packedp parameter and packedp argument from recursive calls and calls to extract_fixed_bit_field. (extract_bit_field): Remove packedp parameter and corresponding arg to extract_bit_field_1. (extract_fixed_bit_field): Remove packedp parameter. Remove code to issue warnings. (extract_split_bit_field): Remove packedp arg from call to extract_fixed_bit_field. * expr.c (emit_group_load_1): Adjust calls to extract_bit_field. (copy_blkmode_from_reg): Likewise. (copy_blkmode_to_reg): Likewise. (read_complex_part): Likewise. (store_field): Likewise. (expand_expr_real_1): Likewise. * calls.c (store_unaligned_arguments_into_pseudos): Adjust call to extract_bit_field. * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Adjust call to extract_bit_field. * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Adjust call to extract_bit_field. * doc/invoke.texi (Code Gen Options): Remove mention of warnings and special packedp behavior from -fstrict-volatile-bitfields documentation. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de * expr.c (expand_assignment): Remove dependency on flag_strict_volatile_bitfields. Always set the memory access mode. (expand_expr_real_1): Likewise. 2013-12-11 Sandra Loosemore san...@codesourcery.com PR middle-end/23623 PR middle-end/48784 PR middle-end/56341 PR middle-end/56997 gcc/ * expmed.c (strict_volatile_bitfield_p): New function. (store_bit_field_1): Don't special-case strict volatile bitfields here. (store_bit_field): Handle strict volatile bitfields here instead. (store_fixed_bit_field): Don't special-case strict volatile bitfields here. (extract_bit_field_1): Don't special-case strict volatile bitfields here. (extract_bit_field): Handle strict volatile bitfields here instead. (extract_fixed_bit_field): Don't special-case strict volatile bitfields here. Simplify surrounding code to resemble that in store_fixed_bit_field. * doc/invoke.texi (Code Gen Options): Update -fstrict-volatile-bitfields description. gcc/testsuite/ * gcc.dg/pr23623.c: New test. * gcc.dg/pr48784-1.c: New test. * gcc.dg/pr48784-2.c: New test. * gcc.dg/pr56341-1.c: New test. * gcc.dg/pr56341-2.c: New test. * gcc.dg/pr56997-1.c: New test. * gcc.dg/pr56997-2.c: New test. * gcc.dg/pr56997-3.c: New test. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de Sandra Loosemore san...@codesourcery.com PR middle-end/23623 PR middle-end/48784 PR middle-end/56341 PR middle-end/56997 * expmed.c (strict_volatile_bitfield_p): Add bitregion_start and bitregion_end parameters. Test for compliance with C++ memory model. (store_bit_field): Adjust call to strict_volatile_bitfield_p. Add fallback logic for cases where -fstrict-volatile-bitfields is supposed to apply, but cannot. (extract_bit_field): Likewise. Use narrow_bit_field_mem and extract_fixed_bit_field_1 to do the extraction. (extract_fixed_bit_field): Revert to previous mode selection algorithm. Call extract_fixed_bit_field_1 to do the real work. (extract_fixed_bit_field_1): New function. testsuite: * gcc.dg/pr23623.c: Update to test interaction with C++ memory model. 2013-12-11 Bernd Edlinger bernd.edlin...@hotmail.de PR middle-end/59134 * expmed.c (store_bit_field): Use narrow_bit_field_mem and store_fixed_bit_field_1 for -fstrict-volatile-bitfields. (store_fixed_bit_field): Split up. Call store_fixed_bit_field_1 to do the real work. (store_fixed_bit_field_1): New function. (store_split_bit_field): Limit the unit size to the memory mode size, to prevent recursion. testsuite: * gcc.c-torture/compile/pr59134.c: New test. * gnat.dg/misaligned_volatile.adb: New test. Added: