[Bug libstdc++/45093] New: Different definitions of _Rb_tree::{erase,_M_destroy_node} between C++98 and C++0x
Using gold for its --detect-odr-violations: $ cat test.cc #include extern void foo(); int main() { foo(); std::map m1; m1.insert(std::make_pair(1, 2)); m1.erase(m1.begin()); } $ cat test2.cc #include void foo() { std::map m1; m1.insert(std::make_pair(1, 2)); m1.erase(m1.begin()); } $ ~/opensource/gcc/trunk/install/bin/g++-4.6svn -g -c -std=c++98 test.cc $ ~/opensource/gcc/trunk/install/bin/g++-4.6svn -g -c -std=c++0x test2.cc $ ~/opensource/gcc/trunk/install/bin/g++-4.6svn -g -std=c++0x test2.o test.o -o test -Wl,--detect-odr-violations .../gcc/trunk/install/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/ld: error: while linking test: symbol 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_destroy_node(std::_Rb_tree_node >*)' defined in multiple places (possible ODR violation): .../gcc/trunk/install/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/bits/stl_tree.h:385 from test.o .../gcc/trunk/install/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/bits/stl_tree.h:410 from test2.o .../gcc/trunk/install/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/ld: error: while linking test: symbol 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(std::_Rb_tree_iterator >)' defined in multiple places (possible ODR violation): .../gcc/trunk/install/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/bits/stl_tree.h:1362 from test2.o .../gcc/trunk/install/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/bits/stl_tree.h:1398 from test.o collect2: ld returned 1 exit status $ _M_destroy_node() appears to only differ in whether some fields with trivial destructors get destroyed, but erase() is defined with different return types between the two versions. So, two questions: Are -std=c++98 and -std=c++0x supposed to be binary-compatible? Would you accept a patch to unify the two definitions? -- Summary: Different definitions of _Rb_tree::{erase,_M_destroy_node} between C++98 and C++0x Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jyasskin at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45093
[Bug debug/45088] pointer type information lost in debuginfo
--- Comment #1 from jakub at gcc dot gnu dot org 2010-07-27 08:29 --- So, to add c1's type, we call gen_typedef_with_usage with A typedef variant. 19880 /* If TYPE is a typedef type variant, let's generate debug info 19881 for the parent typedef which TYPE is a type of. */ 19882 if (typedef_variant_p (type)) 19883{ 19884 if (TREE_ASM_WRITTEN (type)) 19885return; 19886 19887 /* Prevent broken recursion; we can't hand off to the same type. */ 19888 gcc_assert (DECL_ORIGINAL_TYPE (TYPE_NAME (type)) != type); 19889 19890 /* Use the DIE of the containing namespace as the parent DIE of 19891 the type description DIE we want to generate. */ 19892 if (DECL_CONTEXT (TYPE_NAME (type)) 19893 && TREE_CODE (DECL_CONTEXT (TYPE_NAME (type))) == NAMESPACE_DECL) 19894context_die = get_context_die (DECL_CONTEXT (TYPE_NAME (type))); 19895 19896 TREE_ASM_WRITTEN (type) = 1; 19897 19898 gen_decl_die (TYPE_NAME (type), NULL, context_die); 19899 return; TREE_ASM_WRITTEN is not set on type originally, we compute context_die. Then set TREE_ASM_WRITTEN and call gen_decl_die. TYPE_NAME (type) is a redundant typedef though, so in gen_decl_die: 20544 if (is_redundant_typedef (decl)) 20545gen_type_die (TREE_TYPE (decl), context_die); and TREE_TYPE (decl) here is the type on which we've just set TREE_ASM_WRITTEN, so gen_type_die_with_usage is recursed with the same type and as TREE_ASM_WRITTEN is now already set, it returns immediately, without creating any type. So, I think we need to special case is_redundant_typedef (TYPE_NAME (type))) in gen_type_die_with_usage in the typedef_variant_p (type) handling and ensure we actually create the DECL_ORIGINAL_TYPE in that case and equate that also to the underlying type. Or this could be a bug in the FE. -- jakub at gcc dot gnu dot org changed: What|Removed |Added CC||jason at gcc dot gnu dot ||org, dodji at gcc dot gnu ||dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45088
[Bug fortran/45086] For whole-file checking, also check whether an INTERFACE matches
--- Comment #2 from burnus at gcc dot gnu dot org 2010-07-27 08:29 --- subroutine foo(x) integer, allocatable :: x end subroutine integer, allocatable :: ptr call foo(ptr) end Error: Dummy argument 'x' of procedure 'foo' at (1) has an attribute that requires an explicit interface for this procedure Expected: Could be more explicit, maybe. * * * subroutine foo(x) integer, allocatable :: x end subroutine interface subroutine foo(x) integer :: x end subroutine end interface integer, allocatable :: ptr call foo(ptr) end Expected: Mismatched interface is detected. * * * subroutine foo(x) integer, allocatable :: x end subroutine interface subroutine foo(x) integer :: x end subroutine end interface integer :: ptr call foo(ptr) end Expected: Mismatched actual argument is detected as well. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45086
[Bug tree-optimization/45083] [4.3/4.4/4.5/4.6 Regression] strange warning text from gcc
-- jakub at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-07-26 18:55:56 |2010-07-27 08:37:51 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45083
[Bug fortran/40873] -fwhole-file -fwhole-program: Wrong decls cause too much to be optimized away
--- Comment #27 from burnus at gcc dot gnu dot org 2010-07-27 08:44 --- Subject: Bug 40873 Author: burnus Date: Tue Jul 27 08:44:22 2010 New Revision: 162557 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162557 Log: 2010-07-26 Tobias Burnus PR fortran/40873 * trans-decl.c (gfc_get_extern_function_decl): Fix generation for functions which are later in the same file. (gfc_create_function_decl, build_function_decl, build_entry_thunks): Add global argument. * trans.c (gfc_generate_module_code): Update gfc_create_function_decl call. * trans.h (gfc_create_function_decl): Update prototype. * resolve.c (resolve_global_procedure): Also resolve for IFSRC_IFBODY. 2010-07-26 Tobias Burnus PR fortran/40873 * gfortran.dg/whole_file_22.f90: New test. * gfortran.dg/whole_file_23.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/whole_file_22.f90 trunk/gcc/testsuite/gfortran.dg/whole_file_23.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/fortran/trans-decl.c trunk/gcc/fortran/trans.c trunk/gcc/fortran/trans.h trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40873
[Bug debug/45024] wrong nesting for inner template class
--- Comment #4 from jakub at gcc dot gnu dot org 2010-07-27 08:45 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45024
[Bug debug/45006] [4.6 regression] Failed to bootstrap
--- Comment #8 from jakub at gcc dot gnu dot org 2010-07-27 08:46 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45006
[Bug fortran/40873] -fwhole-file -fwhole-program: Wrong decls cause too much to be optimized away
--- Comment #28 from burnus at gcc dot gnu dot org 2010-07-27 08:46 --- FIXED on the trunk (4.6). Thanks for the reports, comments, patches, suggestions, and reviews! See PR 45077, PR 45087, and PR 44945 for remaining -fwhole-(file,program) bugs. -- burnus at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40873
[Bug debug/44668] class->DW_TAG_typedef is missing DW_AT_accessibility
--- Comment #5 from jakub at gcc dot gnu dot org 2010-07-27 08:48 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44668
[Bug debug/44375] goto_locus lost at -O0 during cfg cleanup
--- Comment #6 from jakub at gcc dot gnu dot org 2010-07-27 08:58 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44375
[Bug c++/44641] Generated constructors and destructors get wrong debug location when a typedef uses a forward declaration of the type before the definition
--- Comment #12 from ubizjak at gmail dot com 2010-07-27 09:05 --- Created an attachment (id=21324) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21324&action=view) alpha asm dump This test still fails on alpha with attached asm dump. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44641
[Bug lto/45089] -Os -g -fwhopr dwarf2out ICE
--- Comment #2 from rguenth at gcc dot gnu dot org 2010-07-27 09:17 --- Trying to reduce ... it happens only with whopr. Program received signal SIGSEGV, Segmentation fault. 0x005d33ba in prune_unused_types_mark (die=0x0, dokids=1) at /space/rguenther/src/svn/trunk/gcc/dwarf2out.c:21729 21729 if (die->die_mark == 0) #1 0x005d3349 in prune_unused_types_walk_attribs (die=0x75a12d68) at /space/rguenther/src/svn/trunk/gcc/dwarf2out.c:21711 21711 prune_unused_types_mark (a->dw_attr_val.v.val_die_ref.die, 1); (gdb) p a->dw_attr_val.v.val_die_ref $1 = {die = 0x0, external = 0} so we created a dw_val_class_die_ref attr with a null DIE. Which we do here: #1 0x005c9c14 in add_pure_or_virtual_attribute (die=0x75a12d68, func_decl=0x755cd300) at /space/rguenther/src/svn/trunk/gcc/dwarf2out.c:17409 17407 if (debug_info_level > DINFO_LEVEL_TERSE 17408 && DECL_CONTEXT (func_decl)) 17409 add_AT_die_ref (die, DW_AT_containing_type, 17410 lookup_type_die (DECL_CONTEXT (func_decl))); where DECL_CONTEXT is a RECORD_TYPE. Supposedly the type is unused and thus doesn't get output. Note that we're arriving here via #5 0x00c74a47 in expand_call_inline (bb=0x754782d8, stmt=0x752c89b0, id=0x7fffd970) at /space/rguenther/src/svn/trunk/gcc/tree-inline.c:4024 4024 (*debug_hooks->outlining_inline_function) (cg_edge->callee->decl); -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-27 09:17:50 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45089
[Bug lto/44152] ICE on compiling xshow.f of xplor-nih with -O3 -ffast-math -fwhopr
--- Comment #4 from irar at il dot ibm dot com 2010-07-27 09:25 --- I am testing a patch. -- irar at il dot ibm dot com changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |irar at il dot ibm dot com |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-07-22 14:47:20 |2010-07-27 09:25:25 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44152
[Bug lto/45089] -Os -g -fwhopr dwarf2out ICE
--- Comment #3 from rguenth at gcc dot gnu dot org 2010-07-27 09:26 --- So the issue may be that the LTO FE doesn't announce any decls to the debug machinery. > grep debug_hooks cp/*.c cp/decl.c:debug_hooks->type_decl (tdecl, 0); cp/decl.c: /*debug_hooks->set_name (t, decl);*/ cp/name-lookup.c:(*debug_hooks->global_decl) (alias); cp/name-lookup.c: (*debug_hooks->imported_module_or_decl) (name_space, NULL_TREE, cp/name-lookup.c: (*debug_hooks->imported_module_or_decl) (t, NULL_TREE, context, false); cp/optimize.c: (*debug_hooks->deferred_inline_function) (fn); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45089
[Bug rtl-optimization/45051] [4.6 Regression]: gcc.c-torture/execute/builtins/abs-2.c and abs-3.c due to "track subwords of DImode allocnos"
--- Comment #4 from bernds at gcc dot gnu dot org 2010-07-27 09:35 --- Subject: Bug 45051 Author: bernds Date: Tue Jul 27 09:34:51 2010 New Revision: 162558 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162558 Log: PR rtl-optimization/45051 * reload1.c (delete_output_reload): Use refers_to_regno_p rather than reg_mentioned_p. Modified: trunk/gcc/ChangeLog trunk/gcc/reload1.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45051
[Bug libstdc++/45093] Different definitions of _Rb_tree::{erase,_M_destroy_node} between C++98 and C++0x
--- Comment #1 from paolo dot carlini at oracle dot com 2010-07-27 09:42 --- Definitely they are not, **no** binary compatibility between C++98 and C++0x. And I can tell you there are **many** more incompatibilities beyond this one which you noticed. -- paolo dot carlini at oracle dot com changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45093
[Bug lto/45089] -Os -g -fwhopr dwarf2out ICE
--- Comment #4 from hubicka at ucw dot cz 2010-07-27 09:43 --- Subject: Re: -Os -g -fwhopr dwarf2out ICE > So the issue may be that the LTO FE doesn't announce any decls to the debug > machinery. Because they are already announced before streaming ;). I am not at all familiar with this, can we just announce every type streamed in? Or do we need to stream whatever frontend did? deferred_inline_function should be all fine. Honza -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45089
[Bug tree-optimization/45083] [4.3/4.4/4.5/4.6 Regression] strange warning text from gcc
--- Comment #6 from jakub at gcc dot gnu dot org 2010-07-27 09:44 --- Subject: Bug 45083 Author: jakub Date: Tue Jul 27 09:43:59 2010 New Revision: 162559 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162559 Log: PR tree-optimization/45083 * tree-inline.c (add_local_variables): Also remap DECL_DEBUG_EXPR. * gcc.dg/pr45083.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr45083.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-inline.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45083
[Bug lto/45089] -Os -g -fwhopr dwarf2out ICE
--- Comment #5 from rguenth at gcc dot gnu dot org 2010-07-27 09:46 --- Well - I have no idea ;) We can look at what the FE announces after I finished testcase reduction. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added CC|rguenther at suse dot de|rguenth at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45089
[Bug fortran/45077] ICE with -fwhole-file in fold_convert_loc, at fold-const.c:2021
--- Comment #1 from burnus at gcc dot gnu dot org 2010-07-27 09:49 --- Reduced test case: !-- module iso_red type, public :: varying_string character(LEN=1), dimension(:), allocatable :: chars end type varying_string end module iso_red module ifiles use iso_red, string_t => varying_string contains function line_get_string_advance (line) result (string) type(string_t) :: string character :: line end function line_get_string_advance end module ifiles module syntax_rules use iso_red, string_t => varying_string use ifiles, only: line_get_string_advance contains subroutine syntax_init_from_ifile () type(string_t) :: string string = line_get_string_advance ("") end subroutine syntax_init_from_ifile end module syntax_rules end !-- The ICE occurs for: gfc_trans_assignment (trans-expr.c:5561) gfc_trans_assignment_1 (trans-expr.c:5419) gfc_trans_scalar_assign (trans-expr.c:4909) fold_convert_loc (fold-const.c:2021) The fancy_abort occurs because TREE_CODE (type) is gcc_unreachable, type is the second argument. The call is: gfc_add_modify (&block, lse->expr, fold_convert (TREE_TYPE (lse->expr), rse->expr)); Namely "TREE_TYPE (lse->expr)" as "location_t" is added as first via #define. Hereby LHS is variable "string" and RHS is function "line_get_string_advance". Both have the same type: expr1->ts.u.derived->name == "varying_string" and point to the _same_ expr2->ts.u.derived->backend_decl. However, the data type looks different at TREE_TYPE, i.e. lse->expr.common.type != rse->expr.common.type My working theory is that one generates a different back-end decl for type(varying_string) and type(string_t). However, ts.u.derived->backend_decl is the same - and as ts.type.derived->components{,->ts.u.cl}->backend_decl is the same, I am not sure whether this theory is correct. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45077
[Bug tree-optimization/45083] [4.3/4.4/4.5 Regression] strange warning text from gcc
--- Comment #7 from jakub at gcc dot gnu dot org 2010-07-27 10:17 --- Fixed on the trunk so far. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.3.2 4.6.0 4.5.0 |4.3.2 4.5.0 Known to work|4.2.4 |4.2.4 4.6.0 Summary|[4.3/4.4/4.5/4.6 Regression]|[4.3/4.4/4.5 Regression] |strange warning text from |strange warning text from |gcc |gcc http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45083
[Bug debug/45048] duplicate DW_TAG_variable
--- Comment #2 from jakub at gcc dot gnu dot org 2010-07-27 10:39 --- One of these DW_TAG_variable DIEs at the DW_TAG_namespace scope is created from declare_in_namespace when processing decls_for_scope of a lexical block. The other one comes from declare_in_namespace from dwarf2out_global_decl from wrapup_globals_for_namespace. The problem is that the C++ FE doesn't unify externs, so the debugger sees different decls with the same name, but different DECL_UID. So for say namespace N { int i; void foo (void) { { extern int i; i++; } { extern int i; i++; } { extern int i; i++; } { extern int i; i++; } } } there will be 5 DW_TAG_variable DIEs in DW_TAG_namespace. -- jakub at gcc dot gnu dot org changed: What|Removed |Added CC||dodji at gcc dot gnu dot ||org, jason at gcc dot gnu ||dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45048
[Bug lto/45089] -Os -g -fwhopr dwarf2out ICE
--- Comment #6 from rguenth at gcc dot gnu dot org 2010-07-27 11:06 --- Created an attachment (id=21325) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21325&action=view) testcase > g++ -r -nostdlib -O[s23] -g -flto d2.3.3.C d3.3.3.C The key is that nsAccessible are not merged because one instance has a complete nsRoleMapEntry while the other one an incomplete one. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45089
[Bug libstdc++/45093] Different definitions of _Rb_tree::{erase,_M_destroy_node} between C++98 and C++0x
--- Comment #2 from paolo dot carlini at oracle dot com 2010-07-27 11:14 --- Well, this specific snippet will work at some point, because we want to use namespace association for the C++0x containers. Of course no binary compatibility in general, C++0x and C++98 code will not be allowed in general to interoperate, for *many* reasons (just as an example std::list will be changed to have a constant time size in C++0x) -- paolo dot carlini at oracle dot com changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED Resolution|INVALID | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45093
[Bug debug/45048] duplicate DW_TAG_variable
--- Comment #3 from jakub at gcc dot gnu dot org 2010-07-27 11:14 --- Perhaps a question is whether we need to actually call gen_decl_die in declare_in_namespace if local_scope_p (context_die). AFAIK we don't use the DW_TAG_variable from the namespace scope in any attributes... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45048
[Bug c/44828] [4.3/4.4 Regression] possible integer wrong code bug
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|rguenth at gcc dot gnu dot |unassigned at gcc dot gnu |org |dot org Status|ASSIGNED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44828
[Bug fortran/37744] ICE-on-invalid with ISO_C_BINDING
--- Comment #12 from mikael at gcc dot gnu dot org 2010-07-27 11:29 --- I might take a look someday. It seems a namespace is freed to soon. -fwhole-file works as it retains namespaces till the end. -- mikael at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mikael at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2008-12-09 19:12:15 |2010-07-27 11:29:21 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37744
[Bug target/45094] New: [arm] wrong instructions for dword move in some cases
gcc 4.5.0 $ cat /tmp/bug.c extern int printf(const char *fmt, ...); void foo(void *x) { printf("%p\n", x); } void bar(long long *x) { printf("%lld ", *x); foo(x); } int main() { bar(&(long long){0ll}); bar(&(long long){1ll}); bar(&(long long){2ll}); bar(&(long long){3ll}); bar(&(long long){4ll}); bar(&(long long){5ll}); bar(&(long long){6ll}); bar(&(long long){7ll}); bar(&(long long){8ll}); bar(&(long long){9ll}); bar(&(long long){10ll}); bar(&(long long){11ll}); bar(&(long long){12ll}); bar(&(long long){13ll}); bar(&(long long){14ll}); bar(&(long long){15ll}); bar(&(long long){16ll}); bar(&(long long){17ll}); bar(&(long long){18ll}); bar(&(long long){19ll}); bar(&(long long){20ll}); bar(&(long long){21ll}); bar(&(long long){22ll}); bar(&(long long){23ll}); bar(&(long long){24ll}); bar(&(long long){25ll}); bar(&(long long){26ll}); bar(&(long long){27ll}); bar(&(long long){28ll}); bar(&(long long){29ll}); bar(&(long long){30ll}); bar(&(long long){31ll}); bar(&(long long){32ll}); bar(&(long long){33ll}); bar(&(long long){34ll}); bar(&(long long){35ll}); bar(&(long long){36ll}); bar(&(long long){37ll}); bar(&(long long){38ll}); bar(&(long long){39ll}); bar(&(long long){40ll}); bar(&(long long){41ll}); bar(&(long long){42ll}); bar(&(long long){43ll}); bar(&(long long){44ll}); return 0; } $ cc -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -S -O2 /tmp/bug.c inspect bug.s. for a while gcc emits correct instructions: ... mov r2, #29 mov r3, #0 strdr2, [r0, #-240]! bl bar add r0, sp, #360 mov r2, #30 mov r3, #0 strdr2, [r0, #-248]! bl bar however when reaching offset -256, it emits LDRs instead of STRs: add r0, sp, #360 mov r2, #31 mov r3, #0 ldr r2, [r0, #-256]! ldr r3, [r0, #4] bl bar the issue seems to be a typo in gcc/config/arm/arm.c:output_move_double() introduced by commit [1]. i've tried to fix by applying the following: --- ../gcc-4.5.0/gcc/config/arm/arm.c.orig 2010-07-27 14:22:42.0 +0300 +++ ../gcc-4.5.0/gcc/config/arm/arm.c 2010-07-27 14:23:05.0 +0300 @@ -12182,13 +12182,13 @@ output_move_double (rtx *operands) { if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY) { - output_asm_insn ("ldr%?\t%0, [%1, %2]!", otherops); - output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops); + output_asm_insn ("str%?\t%0, [%1, %2]!", otherops); + output_asm_insn ("str%?\t%H0, [%1, #4]", otherops); } else { - output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops); - output_asm_insn ("ldr%?\t%0, [%1], %2", otherops); + output_asm_insn ("str%?\t%H0, [%1, #4]", otherops); + output_asm_insn ("str%?\t%0, [%1], %2", otherops); } } else if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY) [1] http://repo.or.cz/w/official-gcc.git/commitdiff/f1225f6f0f9b7acb3a64314f2113807ebeea5abf?hp=78f46d4510475cdb9532b10787e82b476c9eeef1 -- Summary: [arm] wrong instructions for dword move in some cases Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: akos dot pasztory at gmail dot com GCC build triplet: i486-linux-gnu GCC host triplet: i486-linux-gnu GCC target triplet: arm-linux-gnueabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45094
[Bug target/42240] [4.3/4.4 Regression, avr] wrong epilogue on naked function
--- Comment #12 from anitha dot boyapati at atmel dot com 2010-07-27 11:35 --- confirmed for 4.5.0. Yet to verify for HEAD. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42240
[Bug objc/44140] ObjC lto/whopr fails
--- Comment #19 from iains at gcc dot gnu dot org 2010-07-27 12:03 --- Subject: Bug 44140 Author: iains Date: Tue Jul 27 12:02:50 2010 New Revision: 162563 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162563 Log: re-enable tls and lto tests for ObjC/C++ PR ObjC/44140 * obj-c++.dg/torture/tls/thr-init-1.mm: Re-enable test. * obj-c++.dg/torture/tls/thr-init-2.mm: Ditto. * obj-c++.dg/torture/tls/thr-init-3.mm: Ditto. * obj-c++.dg/torture/trivial.mm: Ditto. * objc.dg/torture/tls/thr-init-2.m: Ditto. * objc.dg/torture/tls/thr-init-3.m: Ditto. * objc.dg/torture/tls/thr-init.m: Ditto. * objc.dg/torture/trivial.m: Ditto. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm trunk/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm trunk/gcc/testsuite/obj-c++.dg/torture/tls/thr-init-3.mm trunk/gcc/testsuite/obj-c++.dg/torture/trivial.mm trunk/gcc/testsuite/objc.dg/torture/tls/thr-init-2.m trunk/gcc/testsuite/objc.dg/torture/tls/thr-init-3.m trunk/gcc/testsuite/objc.dg/torture/tls/thr-init.m trunk/gcc/testsuite/objc.dg/torture/trivial.m -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44140
[Bug fortran/44660] [regression 4.4/4.5] ICE in resolve_equivalence()
--- Comment #20 from mikael at gcc dot gnu dot org 2010-07-27 12:07 --- 4.6 done, backports pending. -- mikael at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.4.5 4.5.1 4.6.0 |4.4.5 4.5.1 Known to work|4.3.6 |4.3.6 4.6.0 Summary|[regression 4.4/4.5/4.6] ICE|[regression 4.4/4.5] ICE in |in resolve_equivalence()|resolve_equivalence() Target Milestone|--- |4.4.5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44660
[Bug tree-optimization/44152] ICE on compiling xshow.f of xplor-nih with -O3 -ffast-math -fwhopr
--- Comment #5 from irar at gcc dot gnu dot org 2010-07-27 12:26 --- Subject: Bug 44152 Author: irar Date: Tue Jul 27 12:26:31 2010 New Revision: 162564 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162564 Log: PR tree-optimization/44152 * tree-vect-slp.c (vect_build_slp_tree): Collect nodes with complex numbers for further check. (vect_supported_load_permutation_p): Check nodes with complex numbers. Added: trunk/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-slp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44152
[Bug bootstrap/45067] [4.6 regression] ARM bootstrap failure: internal compiler error: in expand_widen_pattern_expr, at optabs.c:522
--- Comment #5 from ramana at gcc dot gnu dot org 2010-07-27 12:32 --- Patch posted here in response to the original thread. : http://gcc.gnu.org/ml/gcc-patches/2010-07/msg02076.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45067
[Bug lto/44802] -flto -fuse-linker-plugin causes undefined references from libc in the link phase
--- Comment #6 from moonshine at kapsi dot fi 2010-07-27 12:42 --- (In reply to comment #5) I compiled xz with a trunk compiler and this seems to be fixed now. Thanks! -- moonshine at kapsi dot fi changed: What|Removed |Added Status|WAITING |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44802
[Bug tree-optimization/45085] incorrect -Wuninitialized warning
--- Comment #2 from jakub at gcc dot gnu dot org 2010-07-27 12:42 --- Simplified testcase for -m32 -O2 -Wuninitialized: struct S { char *s1; long s2; }; struct T { int t1; long t2; long t3; }; extern int fn2 (void); extern int fn3 (struct T); extern struct T fn4 (); extern int fn5 (char **, long *, int); extern void fn6 (void); extern void fn7 (void *); struct S *fn10 (); static int p; static void *q; extern struct T r; static struct T fn8 (struct T x, int y) { struct S *u = fn10 (); int v = fn5 (&u->s1, &u->s2, 0); while (1) { if (p) fn6 (); if (fn3 (x)) return fn4 (); if (y & 1) return r; v = fn5 (&u->s1, &u->s2, 1); } } struct T fn9 (struct T x, int y) { struct T t = fn8 (x, y); if (fn2 ()) fn7 (q); return t; } void * fn1 (void) { return fn9; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45085
[Bug target/45094] [arm] wrong instructions for dword move in some cases
--- Comment #1 from ramana at gcc dot gnu dot org 2010-07-27 12:47 --- Patches should be submitted to gcc-patc...@gcc.gnu.org after having been regression tested. Please also submit a testcase and appropriate Changelog entries as documented here - http://gcc.gnu.org/contribute.html#patches Having said that however, this patch looks alright to me from the naked eye and code inspection. -- ramana at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords||wrong-code Last reconfirmed|-00-00 00:00:00 |2010-07-27 12:47:57 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45094
[Bug tree-optimization/45085] incorrect -Wuninitialized warning
--- Comment #3 from jakub at gcc dot gnu dot org 2010-07-27 12:58 --- Seems to be caused by partial inlining. fnsplit splits off the: q.0D.2030_3 = qD.1248; fn7 (q.0D.2030_3); part of fn9 into fn9.part.0: fn9.part.0 () { intD.0 D.2054; voidD.32 * q.0D.2053; struct T tD.2052; struct T xD.2050; intD.0 yD.2051; : : q.0D.2053_1 = qD.1248; fn7 (q.0D.2053_1); : = tD.2052; return ; } and uses: tD.1261 = fn9.part.0 (); [return slot optimization] in fn9 instead. tD.2052 isn't initialized anywhere though (and, it is unclear why it did that at all, as that hunk doesn't modify t). Perhaps with -m32 and aggregate return (where in the end t will be returned via hidden reference) t is addressable? In any case, this is fnsplit bug. -- jakub at gcc dot gnu dot org changed: What|Removed |Added CC||hubicka at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45085
[Bug tree-optimization/44152] ICE on compiling xshow.f of xplor-nih with -O3 -ffast-math -fwhopr
--- Comment #6 from rguenth at gcc dot gnu dot org 2010-07-27 13:03 --- Fixed. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44152
[Bug tree-optimization/44977] [4.4 Regression] ice in propagate_rhs_into_lhs, at tree-ssa-dom.c:2728
--- Comment #7 from rguenth at gcc dot gnu dot org 2010-07-27 13:05 --- Fixed. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44977
[Bug tree-optimization/44977] [4.4 Regression] ice in propagate_rhs_into_lhs, at tree-ssa-dom.c:2728
--- Comment #8 from rguenth at gcc dot gnu dot org 2010-07-27 13:05 --- Subject: Bug 44977 Author: rguenth Date: Tue Jul 27 13:05:17 2010 New Revision: 162565 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162565 Log: 2010-07-27 Richard Guenther PR tree-optimization/44977 * tree-ssa-dom.c (propagate_rhs_into_lhs): Do not create invalid SSA form. * gcc.dg/torture/pr44977.c: New testcase. Added: branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/torture/pr44977.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/testsuite/ChangeLog branches/gcc-4_4-branch/gcc/tree-ssa-dom.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44977
[Bug c/44555] [4.3/4.4 Regression] Pointer evalutions, is that expected ?
--- Comment #11 from rguenth at gcc dot gnu dot org 2010-07-27 13:07 --- Subject: Bug 44555 Author: rguenth Date: Tue Jul 27 13:07:28 2010 New Revision: 162566 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162566 Log: 2010-07-27 Richard Guenther PR c/44555 * c-common.c (c_common_truthvalue_conversion): Remove premature and wrong optimization concering ADDR_EXPRs. * gcc.c-torture/execute/pr44555.c: New testcase. Added: branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr44555.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/c-common.c branches/gcc-4_4-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44555
[Bug target/35491] wrong ABI for some struct passing with vector code
--- Comment #4 from iains at gcc dot gnu dot org 2010-07-27 13:24 --- Subject: Bug 35491 Author: iains Date: Tue Jul 27 13:24:08 2010 New Revision: 162567 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162567 Log: PR target/35491 PR target/29090 Merge from Apple local 4.2.1. 2005-05-11 Stan Shebs Fix 64-bit varargs for Darwin (Radar 4028089). * config/rs6000/rs6000.h (rs6000_args): New field floats_in_gpr. * config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_flush): Add argument, add case for 8-byte register half-filled with a float. (rs6000_darwin64_record_arg_advance_recurse): Detect and handle single-precision floats specially. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/rs6000.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35491
[Bug target/29090] gcc.dg-struct-layout-1 failures on Darwin PPC at -m64
--- Comment #21 from iains at gcc dot gnu dot org 2010-07-27 13:24 --- Subject: Bug 29090 Author: iains Date: Tue Jul 27 13:24:08 2010 New Revision: 162567 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162567 Log: PR target/35491 PR target/29090 Merge from Apple local 4.2.1. 2005-05-11 Stan Shebs Fix 64-bit varargs for Darwin (Radar 4028089). * config/rs6000/rs6000.h (rs6000_args): New field floats_in_gpr. * config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_flush): Add argument, add case for 8-byte register half-filled with a float. (rs6000_darwin64_record_arg_advance_recurse): Detect and handle single-precision floats specially. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/rs6000.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29090
[Bug tree-optimization/45085] [4.6 Regression] incorrect -Wuninitialized warning
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Known to fail||4.6.0 Known to work||4.5.0 Last reconfirmed|-00-00 00:00:00 |2010-07-27 13:25:07 date|| Summary|incorrect -Wuninitialized |[4.6 Regression] incorrect - |warning |Wuninitialized warning Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45085
[Bug target/29090] gcc.dg-struct-layout-1 failures on Darwin PPC at -m64
--- Comment #22 from iains at gcc dot gnu dot org 2010-07-27 13:26 --- Subject: Bug 29090 Author: iains Date: Tue Jul 27 13:26:34 2010 New Revision: 162568 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162568 Log: PR target/29090 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Special-case the Darwin64 ABI, for zero-sized objects. Modified: trunk/gcc/config/rs6000/rs6000.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29090
[Bug fortran/45092] [4.6 Regression] ICE in output_constructor_regular_field, at varasm.c:5016
--- Comment #8 from hjl dot tools at gmail dot com 2010-07-27 13:33 --- It is caused by revision 158253: http://gcc.gnu.org/ml/gcc-cvs/2010-04/msg00357.html -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||jvdelisle at gcc dot gnu dot ||org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-27 13:33:34 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45092
[Bug fortran/44857] [4.6 Regression] ICE in output_constructor_regular_field, at varasm.c:4996
--- Comment #7 from burnus at gcc dot gnu dot org 2010-07-27 13:35 --- Different report, same problem: PR 45092 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44857
[Bug bootstrap/44768] arm-linux bootstrap broken on expmed.c:157:3: warning ICE
--- Comment #8 from ramana at gcc dot gnu dot org 2010-07-27 13:37 --- Fixed. -- ramana at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44768
[Bug tree-optimization/45085] [4.6 Regression] incorrect -Wuninitialized warning
--- Comment #4 from hubicka at gcc dot gnu dot org 2010-07-27 14:13 --- Hmm, mine :) Honza -- hubicka at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |hubicka at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2010-07-27 13:25:07 |2010-07-27 14:13:35 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45085
[Bug c++/43912] lambda debug info does not describe captured variables
--- Comment #1 from jakub at gcc dot gnu dot org 2010-07-27 15:14 --- I've briefly looked at this. For !processing_template_decl, it shouldn't be hard to walk LAMBDA_EXPR_CAPTURE_LIST e.g. in cp_parser_lambda_expression and add copy_decl of the vars from the capture list with DECL_VALUE_EXPR pointing to this->__fieldname or *this->__fieldname. Templates slightly complicate that though, as if this was to be done say in build_lambda_object guarded with !processing_template_decl, lambda_function probably doesn't have body instantiated yet. And if cp_parser_lambda_expression does this unconditionally, we'd need to handle tsubsting DECL_VALUE_EXPRs. Or we could add them during genericization of the lambda function, but we'd then need to be able to find the corresponding LAMBDA_EXPR from the FUNCTION_DECL. Another thing is whether it is right to call the __lambda* argument this. Even when it is artificial, it is still visible to the user in the debugger. Shouldn't it be made DECL_NAMELESS once the vars with DECL_VALUE_EXPR are added? Jason, what do you prefer here? Testcase I was playing with: extern "C" void abort (); template F foo (int *x, int *y, F f) { for (; x != y; ++x) f (*x); return f; } template void bar (T *w) { T s = 0, t = 0, u = 0, v = 10; foo (&w[0], &w[10], [&s, &t, u, v] (T &a) -> void { s += a; t += s + 10 - v; }); if (s != 45 || t != 165) abort (); } int main () { int s = 0, t = 0, u = 10, v = 10; int w[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; foo (&w[0], &w[10], [&s, &t, u, v] (int &a) -> void { s += a; t += s + 10 - v; }); if (s != 45 || t != 165) abort (); bar (w); return 0; } -- jakub at gcc dot gnu dot org changed: What|Removed |Added CC||jason at gcc dot gnu dot org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-27 15:14:11 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43912
[Bug c++/45082] Static const signed int class member causes undefined symbol.
--- Comment #5 from rwitmer at xmission dot com 2010-07-27 15:27 --- Thanks for all the great comments and insight. I'm still confused as to why when the BUFF_SIZE was defined as: static const signed int BUFF_SIZE = 20; it caused the error, but when it was defined as: static const unsigned int BUFF_SIZE = 20; it did not. void funky(const int& in) is an example of a library call I had to use, I have no control over the author's over zealousness on using a const int& parameter. There were 2 things that solved the problem I was seeing: 1. Adding a const signed int BUFF_SIZE; line to the .cpp file. I've seen lots of code where we define constants ala, static const int BUFF_SIZE=20; in the .hpp file without any const int myclass::BUFF_SIZE; in the .cpp files. Is that wrong to exclude them, should we be including them in the .cpp file? 2. Declaring the type during the call, ala, funky((int)myclass::BUFF_SIZE); I'm not sure which is the better solution. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45082
[Bug c/45079] [4.5/4.6 Regression] function names in error message (�c_maybe_const_expr� not supported by 'pp_c_expression')
--- Comment #2 from jakub at gcc dot gnu dot org 2010-07-27 15:46 --- Subject: Bug 45079 Author: jakub Date: Tue Jul 27 15:46:25 2010 New Revision: 162575 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162575 Log: PR c/45079 * c-pretty-print.c (pp_c_expression): Handle C_MAYBE_CONST_EXPR. * gcc.dg/pr45079.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr45079.c Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-pretty-print.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45079
[Bug c/45079] [4.5 Regression] function names in error message (�c_maybe_const_expr� not supported by 'pp_c_expression')
--- Comment #3 from jakub at gcc dot gnu dot org 2010-07-27 15:50 --- Fixed on the trunk so far, with 4.5 will wait until 4.5.1 is released. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.5.0 4.6.0 |4.5.0 Known to work|4.4.4 |4.4.4 4.6.0 Summary|[4.5/4.6 Regression]|[4.5 Regression] function |function names in error |names in error message |message |(�c_maybe_const_expr� |(�c_maybe_const_expr� |not supported by |not supported by|'pp_c_expression') |'pp_c_expression') | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45079
[Bug target/44290] [4.5 only] __naked attribute is broken
--- Comment #26 from jiez at gcc dot gnu dot org 2010-07-27 17:34 --- Subject: Bug 44290 Author: jiez Date: Tue Jul 27 17:33:30 2010 New Revision: 162579 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162579 Log: PR target/44290 Revert 2010-07-23 Jie Zhang * tree-sra.c (ipa_sra_preliminary_function_checks): Return false if ! tree_versionable_function_p. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-sra.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44290
[Bug testsuite/44701] [4.6 regression] PR44492 fix broke gcc.target/powerpc/asm-es-2.c
--- Comment #9 from jakub at gcc dot gnu dot org 2010-07-27 17:53 --- Subject: Bug 44701 Author: jakub Date: Tue Jul 27 17:52:35 2010 New Revision: 162581 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162581 Log: PR testsuite/44701 * doc/md.texi: Clarify m and es constraints on PowerPC and m and S constraints on IA-64. * gcc.target/powerpc/asm-es-2.c (f2): Add <> constraints. Modified: trunk/gcc/ChangeLog trunk/gcc/doc/md.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/asm-es-2.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44701
[Bug target/44542] expand_one_stack_var_at may set DECL_ALIGN to a too high value
--- Comment #17 from jakub at gcc dot gnu dot org 2010-07-27 17:55 --- Subject: Bug 44542 Author: jakub Date: Tue Jul 27 17:54:32 2010 New Revision: 162582 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162582 Log: PR target/44542 * cfgexpand.c (expand_one_stack_var_at): Limit align to maximum of max_used_stack_slot_alignment and PREFERRED_STACK_BOUNDARY instead of MAX_SUPPORTED_STACK_ALIGNMENT. (expand_one_var): Don't consider DECL_ALIGN for variables for which expand_one_stack_var_at has been already called. Modified: trunk/gcc/ChangeLog trunk/gcc/cfgexpand.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44542
[Bug testsuite/44701] [4.6 regression] PR44492 fix broke gcc.target/powerpc/asm-es-2.c
--- Comment #10 from jakub at gcc dot gnu dot org 2010-07-27 17:58 --- Should be fixed now. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44701
[Bug target/44542] expand_one_stack_var_at may set DECL_ALIGN to a too high value
--- Comment #18 from jakub at gcc dot gnu dot org 2010-07-27 17:59 --- Fixed. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44542
[Bug target/42495] redundant memory load
--- Comment #6 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:35 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 19:34:55 2010 New Revision: 162590 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162590 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcse.c (compute_code_hoist_vbeinout): Consider more expressions for hoisting. (hoist_code): Count occurences in current block too. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug rtl-optimization/40956] Constants are never candidates for hoisting
--- Comment #6 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:35 --- Subject: Bug 40956 Author: mkuvyrkov Date: Tue Jul 27 19:34:55 2010 New Revision: 162590 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162590 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcse.c (compute_code_hoist_vbeinout): Consider more expressions for hoisting. (hoist_code): Count occurences in current block too. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40956
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #11 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:35 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 19:34:55 2010 New Revision: 162590 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162590 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcse.c (compute_code_hoist_vbeinout): Consider more expressions for hoisting. (hoist_code): Count occurences in current block too. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #12 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:38 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 19:38:10 2010 New Revision: 162592 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162592 Log: PR target/42495 PR middle-end/42574 * gcse.c (hoist_expr_reaches_here_p): Remove excessive check. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug target/42495] redundant memory load
--- Comment #7 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:38 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 19:38:10 2010 New Revision: 162592 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162592 Log: PR target/42495 PR middle-end/42574 * gcse.c (hoist_expr_reaches_here_p): Remove excessive check. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug target/42495] redundant memory load
--- Comment #8 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:42 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 19:42:15 2010 New Revision: 162594 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162594 Log: PR target/42495 PR middle-end/42574 * config/arm/arm.c (thumb1_size_rtx_costs): Add cost for "J" constants. * config/arm/arm.md (define_split "J", define_split "K"): Make IRA/reload friendly. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c trunk/gcc/config/arm/arm.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #13 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:42 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 19:42:15 2010 New Revision: 162594 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162594 Log: PR target/42495 PR middle-end/42574 * config/arm/arm.c (thumb1_size_rtx_costs): Add cost for "J" constants. * config/arm/arm.md (define_split "J", define_split "K"): Make IRA/reload friendly. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c trunk/gcc/config/arm/arm.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug target/42495] redundant memory load
--- Comment #9 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:45 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 19:44:51 2010 New Revision: 162595 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162595 Log: PR target/42495 PR middle-end/42574 * config/arm/arm.c (legitimize_pic_address): Use gen_calculate_pic_address pattern to emit calculation of PIC address. (will_be_in_index_register): New function. (arm_legitimate_address_outer_p, thumb2_legitimate_address_p,) (thumb1_legitimate_address_p): Use it provided !strict_p. * config/arm/arm.md (calculate_pic_address): New expand and split. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c trunk/gcc/config/arm/arm.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #14 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:45 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 19:44:51 2010 New Revision: 162595 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162595 Log: PR target/42495 PR middle-end/42574 * config/arm/arm.c (legitimize_pic_address): Use gen_calculate_pic_address pattern to emit calculation of PIC address. (will_be_in_index_register): New function. (arm_legitimate_address_outer_p, thumb2_legitimate_address_p,) (thumb1_legitimate_address_p): Use it provided !strict_p. * config/arm/arm.md (calculate_pic_address): New expand and split. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c trunk/gcc/config/arm/arm.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug rtl-optimization/40956] Constants are never candidates for hoisting
--- Comment #7 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:46 --- Subject: Bug 40956 Author: mkuvyrkov Date: Tue Jul 27 19:46:26 2010 New Revision: 162596 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162596 Log: PR rtl-optimization/40956 * config/arm/arm.c (thumb1_size_rtx_costs): Fix cost of simple constants. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40956
[Bug target/42495] redundant memory load
--- Comment #10 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:48 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 19:48:15 2010 New Revision: 162597 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162597 Log: PR target/42495 PR middle-end/42574 * basic-block.h (get_dominated_to_depth): Declare. * dominance.c (get_dominated_to_depth): New function, use get_all_dominated_blocks as a base. (get_all_dominated_blocks): Use get_dominated_to_depth. * gcse.c (occr_t, VEC (occr_t, heap)): Define. (hoist_exprs): Remove. (alloc_code_hoist_mem, free_code_hoist_mem): Update. (compute_code_hoist_vbeinout): Add debug print outs. (hoist_code): Partially rewrite, simplify. Use get_dominated_to_depth. * params.def (PARAM_MAX_HOIST_DEPTH): New parameter to avoid quadratic behavior. * params.h (MAX_HOIST_DEPTH): New macro. * doc/invoke.texi (max-hoist-depth): Document. Modified: trunk/gcc/ChangeLog trunk/gcc/basic-block.h trunk/gcc/doc/invoke.texi trunk/gcc/dominance.c trunk/gcc/gcse.c trunk/gcc/params.def trunk/gcc/params.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #15 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 19:48 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 19:48:15 2010 New Revision: 162597 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162597 Log: PR target/42495 PR middle-end/42574 * basic-block.h (get_dominated_to_depth): Declare. * dominance.c (get_dominated_to_depth): New function, use get_all_dominated_blocks as a base. (get_all_dominated_blocks): Use get_dominated_to_depth. * gcse.c (occr_t, VEC (occr_t, heap)): Define. (hoist_exprs): Remove. (alloc_code_hoist_mem, free_code_hoist_mem): Update. (compute_code_hoist_vbeinout): Add debug print outs. (hoist_code): Partially rewrite, simplify. Use get_dominated_to_depth. * params.def (PARAM_MAX_HOIST_DEPTH): New parameter to avoid quadratic behavior. * params.h (MAX_HOIST_DEPTH): New macro. * doc/invoke.texi (max-hoist-depth): Document. Modified: trunk/gcc/ChangeLog trunk/gcc/basic-block.h trunk/gcc/doc/invoke.texi trunk/gcc/dominance.c trunk/gcc/gcse.c trunk/gcc/params.def trunk/gcc/params.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug c++/45095] New: "internal compiler error: Segmentation fault" compiling p7zip
Trying to compile p7zip on a Power6 LPAR running AIX 6.1. Copied makefile.aix_gcc over makefile.machine and ran "make all3". Error occurs at g++ -O -s -save-temps -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES -DNDEBUG -D_REENTRANT -DENV_UNIX -fPIC -DEXTERNAL_CODECS -DUNICODE -D_UNICODE -c -I. -I../../../myWindows -I../../../ -I../../../include_windows ../../Archive/7z/7zHandlerOut.cpp ../../Archive/7z/7zHandlerOut.cpp:484: internal compiler error: Segmentation fault -- Summary: "internal compiler error: Segmentation fault" compiling p7zip Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: john dot m dot wildenthal at jpmchase dot com GCC build triplet: ../configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enabl GCC target triplet: powerpc-ibm-aix6.1.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45095
[Bug c++/45095] "internal compiler error: Segmentation fault" compiling p7zip
--- Comment #1 from john dot m dot wildenthal at jpmchase dot com 2010-07-27 20:03 --- Created an attachment (id=21326) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21326&action=view) 7zHandlerOut.ii Bzip2 archive of the preprocessed file where the error occurs. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45095
[Bug target/45094] [arm] wrong instructions for dword move in some cases
--- Comment #2 from siarhei dot siamashka at gmail dot com 2010-07-27 20:07 --- Created an attachment (id=21327) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21327&action=view) simplified testcase Confirmed with gcc 4.5.0 here. Also tried but could not reproduce the problem with gcc 4.4 (it just does not seem to be able to emit ldrd/strd instructions with pre/post increment). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45094
[Bug bootstrap/44993] [4.6 regression] sparc64-linux bootstrap broken
--- Comment #3 from ebotcazou at gcc dot gnu dot org 2010-07-27 20:15 --- Introduced by the fix for PR middle-end/44790: 2010-07-07 Richard Guenther PR middle-end/44790 * expr.c (expand_expr_real_1): Go the POINTER_PLUS_EXPR path for expanding the constant offset for MEM_REFs. The problem is that: name = MEM[(struct exp_ch3__make_predefined_primitive_specs__B_99__stream_op_tss_names___PAD *)D.14526_1156 + 4294967296B]; is expanded into sethi %hi(stream_op_tss_names.6060+4294967296), %l2 or %l2, %lo(stream_op_tss_names.6060+4294967296), %l2 which overflows since sethi is a 32-bit operator. Going through POINTER_PLUS_EXPR to expand a const addresss apparently bypasses checks for valid addresses in the back-end. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44993
[Bug c++/45096] New: [4.6 Regression] g++.dg/cpp0x/auto3.C
On Linux/x86, revision 162583 gave FAIL: g++.dg/cpp0x/auto3.C (test for errors, line 13) FAIL: g++.dg/cpp0x/auto3.C (test for excess errors) /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:6:6: error: declaration of 'auto x' has no initializer^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:10:18: error: inconsistent deduction for 'auto': 'int' and then 'double'^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:13:20: error: unable to deduce 'std::initializer_list<_Tp> [2]' from '{1, 2}'^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:20:3: error: invalid use of 'auto'^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:20:7: error: template argument 1 is invalid^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:20:12: error: invalid type in declaration before '=' token^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:20:14: error: cannot convert 'A' to 'int' in initialization^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:22:10: error: 'foo' function uses 'auto' type specifier without late return type^M /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:24:15: error: parameter declared 'auto'^M PASS: g++.dg/cpp0x/auto3.C (test for errors, line 6) PASS: g++.dg/cpp0x/auto3.C (test for errors, line 10) FAIL: g++.dg/cpp0x/auto3.C (test for errors, line 13) PASS: g++.dg/cpp0x/auto3.C (test for errors, line 20) PASS: g++.dg/cpp0x/auto3.C (test for errors, line 22) PASS: g++.dg/cpp0x/auto3.C (test for errors, line 24) FAIL: g++.dg/cpp0x/auto3.C (test for excess errors) Excess errors: /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/g++.dg/cpp0x/auto3.C:13:20: error: unable to deduce 'std::initializer_list<_Tp> [2]' from '{1, 2}' Revision 162576 is OK. -- Summary: [4.6 Regression] g++.dg/cpp0x/auto3.C Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45096
[Bug c++/45096] [4.6 Regression] g++.dg/cpp0x/auto3.C
-- hjl dot tools at gmail dot com changed: What|Removed |Added Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45096
[Bug c++/45095] "internal compiler error: Segmentation fault" compiling p7zip
--- Comment #2 from paolo dot carlini at oracle dot com 2010-07-27 20:49 --- Note that 4.2.x is not maintained anymore, thus if the problem exist only in that branch will not be fixed. I would suggest trying either a late release from the 4.2.x branch, like 4.2.4 or, much better, the current release branch, 4.5.x. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45095
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #16 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:06 --- Subject: Bug 42574 Author: mkuvyrkov Date: Tue Jul 27 21:06:31 2010 New Revision: 162600 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162600 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcc.target/arm/pr40956.c, gcc.target/arm/pr42495.c, * gcc.target/arm/pr42574.c: Add tests. Added: trunk/gcc/testsuite/gcc.target/arm/pr40956.c trunk/gcc/testsuite/gcc.target/arm/pr42495.c trunk/gcc/testsuite/gcc.target/arm/pr42574.c Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug rtl-optimization/40956] Constants are never candidates for hoisting
--- Comment #8 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:06 --- Subject: Bug 40956 Author: mkuvyrkov Date: Tue Jul 27 21:06:31 2010 New Revision: 162600 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162600 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcc.target/arm/pr40956.c, gcc.target/arm/pr42495.c, * gcc.target/arm/pr42574.c: Add tests. Added: trunk/gcc/testsuite/gcc.target/arm/pr40956.c trunk/gcc/testsuite/gcc.target/arm/pr42495.c trunk/gcc/testsuite/gcc.target/arm/pr42574.c Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40956
[Bug target/42495] redundant memory load
--- Comment #11 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:06 --- Subject: Bug 42495 Author: mkuvyrkov Date: Tue Jul 27 21:06:31 2010 New Revision: 162600 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162600 Log: PR rtl-optimization/40956 PR target/42495 PR middle-end/42574 * gcc.target/arm/pr40956.c, gcc.target/arm/pr42495.c, * gcc.target/arm/pr42574.c: Add tests. Added: trunk/gcc/testsuite/gcc.target/arm/pr40956.c trunk/gcc/testsuite/gcc.target/arm/pr42495.c trunk/gcc/testsuite/gcc.target/arm/pr42574.c Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug rtl-optimization/40956] Constants are never candidates for hoisting
--- Comment #9 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:10 --- Should be fixed now by the above patch series. -- mkuvyrkov at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40956
[Bug target/42495] redundant memory load
--- Comment #12 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:11 --- Should be fixed now by the above patch series. -- mkuvyrkov at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42495
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #17 from mkuvyrkov at gcc dot gnu dot org 2010-07-27 21:11 --- Should be fixed now by the above patch series. -- mkuvyrkov at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug rtl-optimization/45051] [4.6 Regression]: gcc.c-torture/execute/builtins/abs-2.c and abs-3.c due to "track subwords of DImode allocnos"
--- Comment #5 from bernds at gcc dot gnu dot org 2010-07-27 21:49 --- Assuming fixed and closing. Please reopen if you still have a problem. -- bernds at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45051
[Bug boehm-gc/34544] pthread_default_stacksize_np failed.
--- Comment #2 from danglin at gcc dot gnu dot org 2010-07-27 21:56 --- pthread_default_stacksize_np fails with error EPERM. [New process 12140, lwp 4032369] [process 12140, lwp 4032369 exited] Breakpoint 1, main () at ../../../gcc/boehm-gc/tests/test.c:1797 I think this is caused by the current implementation of __gthread_active_p on hpux. The above behavior suggests an alternate implementation. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34544
[Bug tree-optimization/45034] [4.3/4.4/4.5/4.6 Regression] "safe" conversion from unsigned to signed char gives broken code
--- Comment #8 from mikpe at it dot uu dot se 2010-07-27 22:18 --- (In reply to comment #7) > In fact, it seems that the error is already there at the very > beginning: the .original dump shows > > fixnum_neg > { > ux = (unsigned char) x; > uy = (unsigned char) -(signed char) ux; > ... > } > > That is, the negation of unsigned char value is implemented by casting it to > signed char, which introduces signed overflow if the value of x is -128. As > far as I understand the C standard, this seems incorrect. It depends on how GCC interprets that cast and negation: - if the cast has C semantics, then (signed char)ux causes overflow - if the cast wraps, then it is fine and yields (signed char)-128 - if the negation has C semantics, then (signed char)-128 is widened to int and then negated to 128 - if the negation maps signed char to signed char, then it causes overflow IMO, a serious problem with the C standard is that signed char x = -1; signed char y = (signed char)(unsigned char)x; triggers signed overflow causing undefined behaviour. This comes from an asymmetry between cast to unsigned and cast to signed: - cast from signed to unsigned is a total and injective function - cast from unsigned to signed is a partial function with range from 0 to the maximum of the signed type (inclusive), which excludes values converted from negative signed values (I'd be happy to be proven wrong about this, if anyone can cite relevant sections from n1124 (C99 TC2) or n1494 (C1x draft) to the contrary.) Personally I think GCC should treat source-level casts as wrapping, regardless of -fstrict-overflow and -fno-wrapv. Perhaps it intends to, and we're just seeing the effects of bugs. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45034
[Bug tree-optimization/45034] [4.3/4.4/4.5/4.6 Regression] "safe" conversion from unsigned to signed char gives broken code
--- Comment #9 from joseph at codesourcery dot com 2010-07-27 22:42 --- Subject: Re: [4.3/4.4/4.5/4.6 Regression] "safe" conversion from unsigned to signed char gives broken code On Tue, 27 Jul 2010, mikpe at it dot uu dot se wrote: > Personally I think GCC should treat source-level casts as wrapping, regardless > of -fstrict-overflow and -fno-wrapv. Perhaps it intends to, and we're just > seeing the effects of bugs. This implementation-defined behavior is already documented in implement-c.texi: @item @cite{The result of, or the signal raised by, converting an integer to a signed integer type when the value cannot be represented in an object of that type (C90 6.2.1.2, C99 6.3.1.3).} For conversion to a type of width @math{N}, the value is reduced modulo @math{2^N} to be within range of the type; no signal is raised. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45034
[Bug tree-optimization/45034] [4.3/4.4/4.5/4.6 Regression] "safe" conversion from unsigned to signed char gives broken code
--- Comment #10 from rakdver at kam dot mff dot cuni dot cz 2010-07-27 23:09 --- Subject: Re: [4.3/4.4/4.5/4.6 Regression] "safe" conversion from unsigned to signed char gives broken code > > ux = (unsigned char) x; > > uy = (unsigned char) -(signed char) ux; > > ... > > } > > > > That is, the negation of unsigned char value is implemented by casting it to > > signed char, which introduces signed overflow if the value of x is -128. As > > far as I understand the C standard, this seems incorrect. > > It depends on how GCC interprets that cast and negation: > - if the cast has C semantics, then (signed char)ux causes overflow > - if the cast wraps, then it is fine and yields (signed char)-128 > - if the negation has C semantics, then (signed char)-128 is widened to int > and > then negated to 128 > - if the negation maps signed char to signed char, then it causes overflow > > IMO, a serious problem with the C standard is that > > signed char x = -1; > signed char y = (signed char)(unsigned char)x; > > triggers signed overflow causing undefined behaviour. no, it does not. The semantics of the cast in this case is not undefined, it is implementation-defined. GCC defines it in the natural way (and induction variable analysis takes that into account). The problem is with the negation, which causes overflow. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45034
[Bug target/45063] [4.6 Regression] ICE: Segmentation fault (cc1) compiling matmul_i1.c
--- Comment #4 from danglin at gcc dot gnu dot org 2010-07-27 23:19 --- Introduced in revision 162418. Don't see any difference in gcc (C) testresults for 162417 (full bootstrap) and 162418 (--disable-bootstrap). While the ICE nominally results from a hash lookup failure, replacing libiberty.a with the stage1 version makes no difference. Thus, it doesn't appear that the problem is with the hash code. -- danglin at gcc dot gnu dot org changed: What|Removed |Added GCC build triplet|hppa-unknown-linu-gnu |hppa-unknown-linux-gnu GCC host triplet|hppa-unknown-linu-gnu |hppa-unknown-linux-gnu GCC target triplet|hppa-unknown-linu-gnu |hppa-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45063
[Bug c++/45082] Static const signed int class member causes undefined symbol.
--- Comment #6 from redi at gcc dot gnu dot org 2010-07-27 23:54 --- (In reply to comment #5) > Thanks for all the great comments and insight. > > I'm still confused as to why when the BUFF_SIZE was defined as: > static const signed int BUFF_SIZE = 20; > it caused the error, but when it was defined as: > static const unsigned int BUFF_SIZE = 20; > it did not. Because you can't bind const int& to an unsigned int, so a temporary is created and the reference bound to that. When the variable has type int the reference can bind to it directly. > There were 2 things that solved the problem I was seeing: > > 1. Adding a const signed int BUFF_SIZE; line to the .cpp file. > > I've seen lots of code where we define constants ala, static const int > BUFF_SIZE=20; in the .hpp file without any const int myclass::BUFF_SIZE; in > the > .cpp files. Is that wrong to exclude them, should we be including them in the > .cpp file? Yes, if the variable is "used" in the program, see the reference from the standard that Jakub posted days ago in comment 1 > 2. Declaring the type during the call, ala, funky((int)myclass::BUFF_SIZE); You might have misunderstood that as well, there's no "declaring the type" there, it's creating a temporary which the reference binds to. > I'm not sure which is the better solution. Again, please follow up somewhere else, GCC's bugzilla is not the right place to learn the rules of C++. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45082
[Bug target/44903] [4.6 Regression] FAIL: gcc.dg/pr35258.c execution test
--- Comment #20 from dave at hiauly1 dot hia dot nrc dot ca 2010-07-28 00:22 --- Subject: Re: [4.6 Regression] FAIL: gcc.dg/pr35258.c execution test On Mon, 26 Jul 2010, rguenth at gcc dot gnu dot org wrote: > Please check whether the attached patch fixes the testcase this bug is about. Fixes testcase. Tested on hppa2.0w-hp-hpux11.11. Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44903
[Bug middle-end/45097] New: ICE: gimple check: expected gimple_assign(error_mark), have gimple_phi() in gimple_assign_lhs, at gimple.h:1724
ICE is seen by top of trunk. I tried revision r162572, got the same ICE. I tried revision r162301, it compiled fine. Something went wrong in between. /usr/local/verify/install/TOP_2010-07-27/bin/arm-linux-androideabi-g++ phi_bug.i -march=armv7-a -O2 -S phi_bug.i: In member function 'void regobj::makebound2()': phi_bug.i:22:6: internal compiler error: gimple check: expected gimple_assign(error_mark), have gimple_phi() in gimple_assign_lhs, at gimple.h:1724 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -Os gives the same ICE. -O1, ICE goes away. If I replace -march=armv7-a with -march=armv5te, ICE goes away. Target: arm-linux-androideabi Configured with: /usr/local/nightly/sources/android_toolchain/build/../gcc/gcc-4.6.0/configure --prefix=/usr/local --target=arm-linux-androideabi --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --enable-languages=c,c++ --with-gmp=/usr/local/tmp/verify/TOP_2010-07-27/temp-install --with-mpfr=/usr/local/tmp/verify/TOP_2010-07-27/temp-install --with-mpc=/usr/local/tmp/verify/TOP_2010-07-27/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-gcc-version=4.6.0 --with-binutils-version=2.20.1 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=6.6 --with-arch=armv5te --with-sysroot=/home/projects/gcc/toolchain_build/cupcake_rel_root --program-transform-name='s&^&arm-linux-androideabi-&' Thread model: posix gcc version 4.6.0 20100727 (experimental) (GCC) -- Summary: ICE: gimple check: expected gimple_assign(error_mark), have gimple_phi() in gimple_assign_lhs, at gimple.h:1724 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jingyu at google dot com GCC build triplet: x86_64-pc-linux-gnu GCC host triplet: x86_64-pc-linux-gnu GCC target triplet: arm-linux-androideabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45097
[Bug middle-end/45097] ICE: gimple check: expected gimple_assign(error_mark), have gimple_phi() in gimple_assign_lhs, at gimple.h:1724
--- Comment #1 from jingyu at google dot com 2010-07-28 01:09 --- Created an attachment (id=21328) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21328&action=view) test case to reproduce the bug -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45097
[Bug c++/45096] [4.6 Regression] g++.dg/cpp0x/auto3.C
--- Comment #1 from hjl dot tools at gmail dot com 2010-07-28 02:29 --- It is caused by revision 162578: http://gcc.gnu.org/ml/gcc-cvs/2010-07/msg00932.html -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||paolo dot carlini at oracle ||dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45096
[Bug middle-end/45098] New: Missed induction variable optimization
Compile the following code with options -march=armv7-a -mthumb -Os extern void foo(int*); void tr(int array[], int n) { int i; for (i=0; ihttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=45098
[Bug c/45099] New: Warning could be issued for use of register variables that will fail.
WinAVR needs register r10 (among others) for certain mathematical operations of the "long long" data type, e.g. when calling "__muldi3". The user may declare r10 to be assigned to a register variable. When this combination occurs, code will not execute correctly. This is specifically an issue when the register variable is NOT used in ISR functions and the user expects r10 to be "call saved". WinAVR normally saves these "call saved" registers in the function that uses them, but DOES NO DO THAT IF THE REGISTER IS USED AS A REGISTER VARIABLE, even though it needs to use that register. Such situations can be recognized and a warning issued. Even better, the register could be saved in the first place using the rule "call saved" registers need to be saved by the called function if used, even if the register is used as a register variable. Sample code: register unsigned char GYOffset asm("r10"); typedef unsigned char byte; typedef unsigned int uint; void ComputeLargeNum(uint nDays, char *pStr) { unsigned long long LargeNum = 13248524997010ULL + nDays * 4173424303; uint n = 0; while (LargeNum > 10ULL) { ++n; LargeNum -= 10ULL; } } void print(char *pStr) { } int main(void) { char buf[20]; GYOffset = 1; ComputeLargeNum(10, buf); if (GYOffset != 1) { print("r10 corrupted\n"); } } -- Summary: Warning could be issued for use of register variables that will fail. Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jrseattle2002 at hotmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45099
[Bug c++/44641] Generated constructors and destructors get wrong debug location when a typedef uses a forward declaration of the type before the definition
--- Comment #13 from ubizjak at gmail dot com 2010-07-28 06:24 --- Reopened. -- ubizjak at gmail dot com changed: What|Removed |Added CC||ubizjak at gmail dot com Status|RESOLVED|REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44641