[Bug fortran/50288] FAIL: gfortran.dg/class_45b.f03
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50288 --- Comment #14 from Tobias Burnus burnus at gcc dot gnu.org 2011-09-06 06:49:11 UTC --- Sorry for missing the issue with run-once; I thought I had tested it, but seemingly I haven't done so. (In reply to comment #13) Ok, since class_45{a,b} is not really a run-time test, I think the best solution would be to just convert it to dg-do link: Good idea; the patch is preapproved, but I have not yet tested it.
[Bug tree-optimization/49911] SRA + DOM + VRP + -fstrict-enums incorrectly remove predicate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49911 --- Comment #20 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 07:30:11 UTC --- (In reply to comment #18) Created attachment 25199 [details] Patch preventing SRA from creating enumeration type replacements I'm currently testing this patch which will change the type of enum components it decides to scalarize to the corresponding integer. I have verified the type of the replacement is one. I've lost the track of whether anything else needs to be done to close this bug, though. Should the patch be applied to the 4.6 and 4.5 branches too (assuming it passes testing there)? I think so, at least if it solves the testcase in this bug. Not exposing extra enum typed registers to VRP is definitely a good thing.
[Bug rtl-optimization/38644] [4.4/4.5/4.6/4.7 Regression] Optimization flag -O1 -fschedule-insns2 causes wrong code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38644 --- Comment #43 from Sebastian Huber sebastian.hu...@embedded-brains.de 2011-09-06 07:45:29 UTC --- How long will this middle to back end ping pong last until this bug is finally fixed? It is now open since 2008.
[Bug target/50302] inefficient float-double conversion in AVX with -mtune=generic
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50302 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 CC||harsha.jagasia at amd dot ||com, hubicka at gcc dot ||gnu.org Ever Confirmed|0 |1 --- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 07:51:46 UTC --- Good question. Probably even with -msseN we could tweak some generic settings when we know no old CPUs have those issues. Of course the question is whether we still need to care for those today or whether we should simply change generic.
[Bug c++/50296] [4.7 Regression] New C++ test failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Target|i686-pc-linux-gnu, cris-elf |i686-pc-linux-gnu, ||cris-elf, x86_64-*-* Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 Ever Confirmed|0 |1 --- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 07:54:00 UTC --- Confirmed, me too.
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1 Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 Version|unknown |4.6.2 Target Milestone|--- |4.6.2 Ever Confirmed|0 |1 --- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 08:01:29 UTC --- Confirmed. Reducing (I think it's a dup).
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||aoliva at gcc dot gnu.org, ||jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 08:15:21 UTC --- We have: bb 4: # DEBUG this = this_2(D) reason_15 = reason_10(D); reason_17 = reason_15; # DEBUG reason = reason_17 D.137092_16 = this_2(D)-D.122214; mozilla::net::PWyciwygChannelChild::Send__delete__ (D.137092_16); D.132395_6 = 0; and ccp (substitute_and_fold called from ccp_finalize) decides (because has_zero_uses is true for reason_17) to remove reason_17 = reason_15; stmt first, which during gsi_remove adds a # DEBUG D#xxx = reason_15 stmt. Then reason_15 = reason_10(D); is being removed, but for some reason the newly added debug stmt isn't found during FOR_EACH_IMM_USE_FAST for reason_15.
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 --- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 08:23:15 UTC --- That would be the case if we're missing an update_stmt on the debug stmt.
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 --- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 08:26:44 UTC --- Because gimple_build_debug_bind_stat does not set the stmt to modified? So it's not automatically updated on gsi_insert_before ().
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 --- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 08:29:58 UTC --- It is gimple_modified_p and gsi_insert_before does call build_stmt_operands on it. Still debugging...
[Bug ada/50294] ICE in output_constructor_regular_field
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294 --- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 08:31:56 UTC --- My idea with fixing the Ada issue would be to conditionally use a signed or unsigned (sizetype) domain type. Not sure if all of the middle-end copes well with ssizetype domains (but well, we should fix it then). Of course that wouldn't fix use of an even larger domain type such as Unsigned_128_T is mod 2 ** 128 and appropriate large constants. But I see several special-cases in the Gigi code that tries to handle overflow situations. Thus, I think we ideally should allow any kind of integer type in TYPE_DOMAIN, not just sizetype variants. But that's of course an even bigger change. Sidenote: my idea was to remove special-casings of TYPE_IS_SIZETYPE from folders but have a few special-cases explicit in size_binop so we know the definite context from which they are invoked (like from stor-layout). That's much better than to expose the special-casing from random optimization passes that happen to call into fold.
[Bug fortran/44646] [F2008] Implement DO CONCURRENT
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44646 --- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2011-09-06 08:28:50 UTC --- (In reply to comment #1) TODO as follow up: * Replace Sorry by a real implementation in trans-stmt.c Patch: http://gcc.gnu.org/ml/fortran/2011-09/msg5.html * Implement type-spec support for forall and do concurrent: (integer(8) :: i = 1:5:2) See F2008, 16.4 Statement and construct entities (esp. paragraph 5 and 6) for the semantic [and R752/C735 for the syntax].
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 --- Comment #10 from Paolo Carlini paolo.carlini at oracle dot com 2011-09-06 09:14:40 UTC --- Unfortunately constexpr functions are not going to help here, because of course a call of such a function is never optimized to a constant unless *the arguments* are all compile-time constants. In the meanwhile I timed my last patchlet and definitely isn't worse than the other for the simple testcase we have, otherwise I think it's much superior from any other point of view (besides maybe readability but actually I'm using a rather common pattern), thus for now I guess I'm going ahead with it. Thanks again.
[Bug ada/50294] ICE in output_constructor_regular_field
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294 --- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 09:14:28 UTC --- My idea with fixing the Ada issue would be to conditionally use a signed or unsigned (sizetype) domain type. Not sure if all of the middle-end copes well with ssizetype domains (but well, we should fix it then). Yes, IIRC I tried something like that at some point. You also mentioned in an earlier thread that you tried to make sizetype signed. What kind of problems did you run into? This was the original setting of the Ada compiler, so the middle-end was able to support it, at least until relatively recently. Of course that wouldn't fix use of an even larger domain type such as Unsigned_128_T is mod 2 ** 128 and appropriate large constants. But I see several special-cases in the Gigi code that tries to handle overflow situations. GNAT doesn't support integral types bigger than 64-bit anyway. Thus, I think we ideally should allow any kind of integer type in TYPE_DOMAIN, not just sizetype variants. But that's of course an even bigger change. The signedness flip is already tricky... Sidenote: my idea was to remove special-casings of TYPE_IS_SIZETYPE from folders but have a few special-cases explicit in size_binop so we know the definite context from which they are invoked (like from stor-layout). That's much better than to expose the special-casing from random optimization passes that happen to call into fold. OK, I see.
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 09:23:59 UTC --- You could perhaps do if (__builtin_constant_p (n)) { if (n X1) r = P1; else if (n X2) r = P2; else if (n X3) r = P3; ... } else what_you_do_currently. Then if the argument is seen to be a constant (can be even through optimizations), it will be optimized at compile time, otherwise it will be done at runtime. The drawbacks might be that you have the table in two places and if inlining estimations don't work correctly, the inline function might be considered too large.
[Bug c++/50296] [4.7 Regression] New C++ test failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296 Dominique d'Humieres dominiq at lps dot ens.fr changed: What|Removed |Added Target|i686-pc-linux-gnu, |i686-pc-linux-gnu, |cris-elf, x86_64-*-*|cris-elf, x86_64-*-*, ||power*-*-* --- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr 2011-09-06 09:39:36 UTC --- Me too on x86_64-apple-darwin10 and powerpc-apple-darwin9 (20_util/tuple/moveable2.cc only). g++.dg/cpp0x/regress/abi-empty7.C fails with FAIL: g++.dg/cpp0x/regress/abi-empty7.C (test for excess errors) Excess errors: /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/regress/abi-empty7.C:12:8: error: uninitialized member 'S7::s1' in 'constexpr' constructor /opt/gcc/work/gcc/testsuite/g++.dg/cpp0x/regress/abi-empty7.C:7:8: error: uninitialized member 'S2::s1' in 'constexpr' constructor and 20_util/tuple/moveable2.cc fails with FAIL: 20_util/tuple/moveable2.cc (test for excess errors) Excess errors: /opt/gcc/build_w/x86_64-apple-darwin10.8.0/i386/libstdc++-v3/include/tuple:272:42: internal compiler error: Segmentation fault Partial backtrace gives Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x cx_check_missing_mem_inits (fun=value temporarily unavailable, due to optimizations, body=0x1016db798, complain=false) at ../../work/gcc/cp/semantics.c:5808 5808 if (TREE_CODE (field) != FIELD_DECL (gdb) bt #0 cx_check_missing_mem_inits (fun=value temporarily unavailable, due to optimizations, body=0x1016db798, complain=false) at ../../work/gcc/cp/semantics.c:5808 #1 0x0001001a30cb in register_constexpr_fundef (fun=0x1016fb500, body=0x1016db798) at ../../work/gcc/cp/semantics.c:5853 Previous frame inner to this frame (gdb could not unwind past this frame)
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 --- Comment #12 from Paolo Carlini paolo.carlini at oracle dot com 2011-09-06 09:39:47 UTC --- Thanks Jakub, for now we'd rather keep the library __builtin_constant_p-free (a couple of weeks ago we had fun with Marc Glisse recollecting all the flames on the mailing list the last time somebody tried to add one elsewhere ;) Really, I think here most of the improvement performance-wise comes from not calling the out-of-line lower_bound on the whole __prime_list (normally in the profile the malloc call is much higher) thus I say let's delay for now further optimization for constant values (would be 0 and 10, I guess),
[Bug ada/50294] ICE in output_constructor_regular_field
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294 --- Comment #6 from rguenther at suse dot de rguenther at suse dot de 2011-09-06 09:52:38 UTC --- On Tue, 6 Sep 2011, ebotcazou at gcc dot gnu.org wrote: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294 --- Comment #5 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 09:14:28 UTC --- My idea with fixing the Ada issue would be to conditionally use a signed or unsigned (sizetype) domain type. Not sure if all of the middle-end copes well with ssizetype domains (but well, we should fix it then). Yes, IIRC I tried something like that at some point. You also mentioned in an earlier thread that you tried to make sizetype signed. What kind of problems did you run into? This was the original setting of the Ada compiler, so the middle-end was able to support it, at least until relatively recently. I run into various diagnostic issues in the C family frontends, so I quickly gave up. Of course that wouldn't fix use of an even larger domain type such as Unsigned_128_T is mod 2 ** 128 and appropriate large constants. But I see several special-cases in the Gigi code that tries to handle overflow situations. GNAT doesn't support integral types bigger than 64-bit anyway. And 32-bit for 32-bit targets? sizetype is 32bits there ... Thus, I think we ideally should allow any kind of integer type in TYPE_DOMAIN, not just sizetype variants. But that's of course an even bigger change. The signedness flip is already tricky... Yeah, I backed off when seeing the amount of code I'd need to change in GiGi ... esp. as I don't know the code well. Sidenote: my idea was to remove special-casings of TYPE_IS_SIZETYPE from folders but have a few special-cases explicit in size_binop so we know the definite context from which they are invoked (like from stor-layout). That's much better than to expose the special-casing from random optimization passes that happen to call into fold. OK, I see.
[Bug ada/50294] ICE in output_constructor_regular_field
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294 --- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 10:21:42 UTC --- And 32-bit for 32-bit targets? sizetype is 32bits there ... No, 64-bit type are supported universally. Of course your mileage may vary for array types indexed with a 64-bit type...
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 --- Comment #13 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 2011-09-06 10:22:27 UTC --- Author: paolo Date: Tue Sep 6 10:22:21 2011 New Revision: 178581 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178581 Log: 2011-09-06 Paolo Carlini paolo.carl...@oracle.com PR libstdc++/50257 * include/bits/hashtable_policy.h (_Prime_rehash_policy:: _M_next_bkt): Optimize for small argument. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/hashtable_policy.h
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #14 from Paolo Carlini paolo.carlini at oracle dot com 2011-09-06 10:26:59 UTC --- I'm closing this, further improvements as enhancements.
[Bug rtl-optimization/50205] [4.6/4.7 Regression] ICE: in code_motion_path_driver, at sel-sched.c:6581 with -fselective-scheduling2 and custom flags
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50205 Alexander Monakov amonakov at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 CC||abel at gcc dot gnu.org, ||amonakov at gcc dot gnu.org AssignedTo|unassigned at gcc dot |amonakov at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #1 from Alexander Monakov amonakov at gcc dot gnu.org 2011-09-06 11:17:47 UTC --- We attempt to substitute an insn like (... (cmp (mem (reg:DI ax)) (reg:SI ax))) (note different modes) through (set (reg:DI ax) (reg:DI dx)), which leaves the (reg:SI ax) part of the comparison intact, causing an ICE later on when we notice that the dependency on ax is still present. As this is quite rare, we can simply forbid substitution in such circumstances, much like substitution of multiple hard reg references is forbidden now. The patch I'm going to test: diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index f11faca..2af01ae 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -813,18 +813,12 @@ count_occurrences_1 (rtx *cur_rtx, void *arg) { rtx_search_arg_p p = (rtx_search_arg_p) arg; - /* The last param FOR_GCSE is true, because otherwise it performs excessive -substitutions like -r8 = r33 -r16 = r33 -for the last insn it presumes r33 equivalent to r8, so it changes it to -r33. Actually, there's no change, but it spoils debugging. */ - if (exp_equiv_p (*cur_rtx, p-x, 0, true)) -{ - /* Bail out if we occupy more than one register. */ - if (REG_P (*cur_rtx) - HARD_REGISTER_P (*cur_rtx) - hard_regno_nregs[REGNO(*cur_rtx)][GET_MODE (*cur_rtx)] 1) + if (REG_P (*cur_rtx) REGNO (*cur_rtx) == REGNO (p-x)) +{ + /* Bail out if mode is different or more than one register is used. */ + if (GET_MODE (*cur_rtx) != GET_MODE (p-x) + || (HARD_REGISTER_P (*cur_rtx) + hard_regno_nregs[REGNO(*cur_rtx)][GET_MODE (*cur_rtx)] 1)) { p-n = 0; return 1; @@ -837,7 +831,6 @@ count_occurrences_1 (rtx *cur_rtx, void *arg) } if (GET_CODE (*cur_rtx) == SUBREG - REG_P (p-x) (!REG_P (SUBREG_REG (*cur_rtx)) || REGNO (SUBREG_REG (*cur_rtx)) == REGNO (p-x))) { @@ -859,6 +852,7 @@ count_occurrences_equiv (rtx what, rtx where) { struct rtx_search_arg arg; + gcc_assert (REG_P (what)); arg.x = what; arg.n = 0;
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 rsand...@gcc.gnu.org rsandifo at gcc dot gnu.org changed: What|Removed |Added CC||rsandifo at gcc dot gnu.org --- Comment #2 from rsandifo at gcc dot gnu.org rsandifo at gcc dot gnu.org 2011-09-06 11:20:52 UTC --- Same on mipsisa32-elf.
[Bug debug/50299] entryval: bigendian 32bit-64bit extension breaks address match
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50299 --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 11:21:19 UTC --- The disadvantage of the patch is that it will no longer emit DW_TAG_call_site_parameter e.g. in struct S { long a, b; }; void baz (void); __attribute__((noinline, noclone)) int foo (struct S s) { long a = s.a; long b = s.b; baz (); return 2; } int bar (void) { struct S s = { 1, 2 }; foo (s); return 0; } on x86_64-linux for %rdi and %rsi registers as it used to before (i.e. for multi-register arguments). Would gdb be actually trying to use it? At least here DW_OP_GNU_entry_value isn't emitted because RTL DSE doesn't adjust the debug insns. I guess I could just use the reg's mode for use_regs to restore this.
[Bug middle-end/50301] [4.7 Regression] 416.gamess in SPEC CPU 2006 failed to build with LTO
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50301 Martin Jambor jamborm at gcc dot gnu.org changed: What|Removed |Added Target||x86_64-linux-gnu Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 Host||x86_64-linux-gnu AssignedTo|unassigned at gcc dot |jamborm at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 Build||x86_64-linux-gnu --- Comment #2 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 11:26:37 UTC --- Confirmed. Mine.
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 --- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 11:59:46 UTC --- Created attachment 25201 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25201 reduced testcase
[Bug tree-optimization/48317] SCCVN does not handle vector constructors
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48317 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 12:01:23 UTC --- I have a patch.
[Bug fortran/50288] FAIL: gfortran.dg/class_45b.f03
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50288 --- Comment #15 from janus at gcc dot gnu.org 2011-09-06 12:19:13 UTC --- (In reply to comment #14) Ok, since class_45{a,b} is not really a run-time test, I think the best solution would be to just convert it to dg-do link: Good idea; the patch is preapproved, but I have not yet tested it. Thanks. Could anyone please test it? Unfortunately I cannot do it myself. One doesn't even have to run the whole testsuite, just class_45 with the patch from comment #13 would be enough.
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 Ramana Radhakrishnan ramana at gcc dot gnu.org changed: What|Removed |Added Target|arm-eabi sh*-*-*|arm-eabi,sh*-*-*, ||arm-linux-gnueabi Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 CC||ramana at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #3 from Ramana Radhakrishnan ramana at gcc dot gnu.org 2011-09-06 12:55:30 UTC --- Also prima-facie appears to break eglibc builds for arm-linux-gnueabi. eglibc/misc/error.o err.c: In function 'vwarnx': err.c:94:1: error: number of operands and imm-links don't agree in statement # .MEM_58 = VDEF .MEM_25 ap = ap_41(D); err.c:94:1: internal compiler error: verify_ssa failed Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. Ramana
[Bug tree-optimization/48149] Piecewise complex pass-through not optimized
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48149 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 13:09:26 UTC --- Mine.
[Bug target/50099] ICE: internal compiler error: in extract_insn, at recog.c:2113 while building lttng-ust
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099 Bernd Schmidt bernds at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 AssignedTo|unassigned at gcc dot |bernds at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #8 from Bernd Schmidt bernds at gcc dot gnu.org 2011-09-06 13:11:24 UTC --- Created attachment 25202 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25202 Candidate patch
[Bug tree-optimization/48317] SCCVN does not handle vector constructors
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48317 --- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 13:17:53 UTC --- Author: rguenth Date: Tue Sep 6 13:17:50 2011 New Revision: 178595 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178595 Log: 2011-09-06 Richard Guenther rguent...@suse.de PR tree-optimization/48317 * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true trailing array. (sizeof_vn_nary_op): New inline function. (vn_nary_op_lookup_pieces): Adjust. (vn_nary_op_insert_pieces): Likewise. * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length. (init_vn_nary_op_from_pieces): Adjust signature. Deal with any number of operands. (vn_nary_length_from_stmt): New function. (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling. (vn_nary_op_lookup_pieces): Adjust signature and allocate properly sized temporary. (vn_nary_op_lookup): Likewise. (vn_nary_op_lookup_stmt): Likewise. (vn_nary_op_insert_into): Likewise. (vn_nary_op_insert_stmt): Likewise. (visit_use): Handle CONSTRUCTOR as nary. * tree-ssa-pre.c (phi_translate_1): Adjust. (create_expression_by_pieces): Likewise. (compute_avail): Likewise. * gcc.dg/tree-ssa/ssa-fre-31.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-31.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-pre.c trunk/gcc/tree-ssa-sccvn.c trunk/gcc/tree-ssa-sccvn.h
[Bug tree-optimization/48317] SCCVN does not handle vector constructors
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48317 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.7.0 --- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 13:20:34 UTC --- Fixed for 4.7.
[Bug tree-optimization/49997] [4.7 Regression] ICE in inline_small_functions with -fnon-call-exceptions
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49997 --- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org 2011-09-06 14:06:29 UTC --- Hmm, the problem is that with inline predicates the overall growth depends not only on number of calls, but also at information known about call site. This information could potentially change every time function containing the call site gets inlined. This breaks the optimization avoiding update in inline_small_functions. The following hack fixes the problem, but the test was added to avoid really bad quadratic behaviour when compiling cc1 with LTO. I will need to benchmark it and probably add parameter limitting key updating for single inline action. Index: ipa-inline.c === --- ipa-inline.c(revision 178592) +++ ipa-inline.c(working copy) @@ -1514,7 +1515,7 @@ inline_small_functions (void) /* We inlined last offline copy to the body. This might lead to callees of function having fewer call sites and thus they may need updating. */ - if (callee-global.inlined_to) + if (callee-global.inlined_to || 1) update_all_callee_keys (heap, callee, updated_nodes); else update_callee_keys (heap, edge-callee, updated_nodes);
[Bug target/47025] Dead stores in variadic functions not eliminated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47025 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED --- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 14:08:31 UTC --- We expand __builtin_va_end as /* Expand EXP, a call to __builtin_va_end. */ static rtx expand_builtin_va_end (tree exp) { tree valist = CALL_EXPR_ARG (exp, 0); /* Evaluate for side effects, if needed. I hate macros that don't do that. */ if (TREE_SIDE_EFFECTS (valist)) expand_expr (valist, const0_rtx, VOIDmode, EXPAND_NORMAL); return const0_rtx; } thus, it has no side-effects (apart from those of its argument). It's simply dropped... Attached patch is already applied. Mine.
[Bug tree-optimization/48149] Piecewise complex pass-through not optimized
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48149 --- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 14:36:06 UTC --- Author: rguenth Date: Tue Sep 6 14:36:00 2011 New Revision: 178597 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178597 Log: 2011-09-06 Richard Guenther rguent...@suse.de PR tree-optimization/48149 * tree-ssa-sccvn.c (vn_get_expr_for): Simplify. Fix tuplification bug. (vn_valueize): Move earlier. (valueize_expr): Use vn_valueize. (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR operands. (simplify_unary_expression): Simplify. * gcc.dg/tree-ssa/ssa-fre-32.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-32.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-sccvn.c
[Bug tree-optimization/48149] Piecewise complex pass-through not optimized
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48149 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.7.0 --- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 14:37:30 UTC --- Fixed.
[Bug c++/50303] New: Segfault with variadic template template parameters.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50303 Bug #: 50303 Summary: Segfault with variadic template template parameters. Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: andyspi...@gmail.com Created attachment 25203 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25203 Preprocessed source A function f taking a class and a set (variadic) of template classes as template parameters is written. If this function passes the variadic parameter to another one, the compiler fails with a segfault. Otherwise the compiler just works. This happens on Gentoo with gcc 4.6.1, on Fedora 15 with gcc-4.6.0, on the online service ideone (see http://ideone.com/yrIfa -- there is the original source too). On Gentoo I have the following output: $ g++ -v -save-temps -std=c++0x variadic_template.cpp -pedantic-errors Using built-in specs. Reading specs from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/asneeded.specs COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1/g++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-4.6.1-r1/work/gcc-4.6.1/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --enable-lto --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/python --enable-checking=release --enable-languages=c,c++,java,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.6.1-r1 p1.0, pie-0.4.5' Thread model: posix gcc version 4.6.1 (Gentoo 4.6.1-r1 p1.0, pie-0.4.5) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++0x' '-pedantic-errors' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.1/cc1plus -E -quiet -v -D_GNU_SOURCE variadic_template.cpp -D_FORTIFY_SOURCE=2 -mtune=generic -march=x86-64 -std=c++0x -pedantic-errors -fpch-preprocess -o variadic_template.ii ignoring nonexistent directory /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/../../../../x86_64-pc-linux-gnu/include #include ... search starts here: #include ... search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include/g++-v4 /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include/g++-v4/x86_64-pc-linux-gnu /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include/g++-v4/backward /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include /usr/local/include /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++0x' '-pedantic-errors' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.1/cc1plus -fpreprocessed variadic_template.ii -quiet -dumpbase variadic_template.cpp -mtune=generic -march=x86-64 -auxbase variadic_template -pedantic-errors -std=c++0x -version -o variadic_template.s GNU C++ (Gentoo 4.6.1-r1 p1.0, pie-0.4.5) version 4.6.1 (x86_64-pc-linux-gnu) compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C++ (Gentoo 4.6.1-r1 p1.0, pie-0.4.5) version 4.6.1 (x86_64-pc-linux-gnu) compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 510fa67dba4694d68782d987f500559c variadic_template.cpp: In function ‘void f() [with Interface = I1, Actions = A1, A2]’: variadic_template.cpp:58:16: instantiated from here variadic_template.cpp:49:58: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See http://bugs.gentoo.org/ for instructions.
[Bug tree-optimization/50304] New: poor code for accessing certain element of arrays
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50304 Bug #: 50304 Summary: poor code for accessing certain element of arrays Classification: Unclassified Product: gcc Version: 4.5.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: t...@deltasystem.hu Array elements on known (hardcoded) positions are accessed by inefficient code. The addresses are computed runtime, waisting both runtime and code size. For example: int a[4][4][16]; void foo( void ) { int c; c = a[2][3][4]; ... } compiles this way in -O1, ARM Cortex M0: 0:4b02 ldrr3, [pc, #8]; (c foo+0xc) 2:22b4 movsr2, #180; 0xb4 4:0092 lslsr2, r2, #2 6:589a ldrr2, [r3, r2] --- I tried to convert this operation to be precompiled by forming a constant address. int a[4][4][16]; int *const b=a[2][3][4]; void foo( void ) { int c; c = *b; ... } However, it is ignored by gcc, and compiles this way in -O1: 0:4b03 ldrr3, [pc, #12]; (10 foo+0x10) 2:21b4 movsr1, #180; 0xb4 4:0089 lslsr1, r1, #2 6:185a addsr2, r3, r1 8:6812 ldrr2, [r2, #0] The actual code can vary, depending on the situation. For example: 0:4b02 ldrr3, [pc, #8]; (c foo+0xc) 2:4a03 ldrr2, [pc, #12]; (10 foo+0x10) 4:589a ldrr2, [r3, r2] or 0:4b02 ldrr3, [pc, #8]; (c foo+0xc) 2:4903 ldrr1, [pc, #12]; (10 foo+0x10) 4:185a addsr2, r3, r1a[0][0][0]=c; 6:6812 ldrr2, [r2, #0] Sometimes (I don't know yet why and exactly when) it can be even much worse, introducing bytewide accessing of e.g. an int32_t, dissassembling and reassembling it. (It's definetely not an alignment problem.) This waists about 40 instructions for a read-modify-write access. -- It should have look like this: 0:4b02 ldrr3, [pc, #8]; (c foo+0xc) 2:681b ldrr3, [r3, #0] 4:681a ldrr2, [r3, #0] where the constant (at 0x0c) at the first row is a precalculated address. -- With variable address, like this: int a[4][4][16]; int *b=a[2][3][4]; ... it work nicely. However, it is really not equivalent solution at flash based processors.
[Bug target/47025] Dead stores in variadic functions not eliminated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47025 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 15:02:30 UTC --- Note that the stdarg pass relies on __builtin_va_end not being optimized away completely, at least by the time that pass is run. It can be of course optimized away afterwards.
[Bug middle-end/49886] [4.6/4.7 Regression] pass_split_functions cannot deal with function type attributes
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49886 --- Comment #6 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 15:09:18 UTC --- Author: jamborm Date: Tue Sep 6 15:09:10 2011 New Revision: 178599 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178599 Log: 2011-09-06 Martin Jambor mjam...@suse.cz Revert 2011-09-02 Martin Jambor mjam...@suse.cz PR middle-end/49886 * ipa-split.c (split_function): Do not skip any arguments if can_change_signature is set or there are function type attributes. testsuite/ * gcc.c-torture/execute/pr49886.c: Move to... * gcc.dg/torture/pr49886.c: ...here. Xfail run test for -O2 and above. Added: branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/torture/pr49886.c - copied, changed from r178598, branches/gcc-4_6-branch/gcc/testsuite/gcc.c-torture/execute/pr49886.c Removed: branches/gcc-4_6-branch/gcc/testsuite/gcc.c-torture/execute/pr49886.c Modified: branches/gcc-4_6-branch/gcc/ChangeLog branches/gcc-4_6-branch/gcc/ipa-split.c branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
[Bug rtl-optimization/50213] [4.6/4.7 Regression] Regression in space-optimized code relative to 4.5.x
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50213 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 15:45:10 UTC --- This regressed with http://gcc.gnu.org/viewcvs?root=gccview=revrev=161655 and with -Os -fno-tree-forwprop you get the same code as you used to get before. At the tree level, the difference seems to be in bb 3: - D.2724_9 = *p_8; + D.2724_9 = MEM[(const unsigned int *)p_2 + -4B]; csum_10 = csum_1 ^ D.2724_9; bb 4: # csum_1 = PHI 0(2), csum_10(3) # p_2 = PHI p_6(2), p_8(3) p_8 = p_2 + -4; if (p_8 tlv_5(D)) goto bb 3; else goto bb 5; bb 5: - D.2724_11 = *p_8; + D.2724_11 = MEM[(const unsigned int *)p_2 + -4B]; being now done in forwprop while it wasn't possible before MEM_REF - it wasn't valid GIMPLE. While in the loop IVOPTs undoes the undesirable transformation back to MEM[base: p_8], in bb5 as it is not a loop we keep the longer form and thus use a var from the middle of the loop instead of p after the loop. That results in different expansion.
[Bug tree-optimization/49997] [4.7 Regression] ICE in inline_small_functions with -fnon-call-exceptions
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49997 --- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 15:48:32 UTC --- Or finally drop the key dependence on the number of callers.
[Bug tree-optimization/50213] [4.6/4.7 Regression] Regression in space-optimized code relative to 4.5.x
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50213 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-06 Component|rtl-optimization|tree-optimization AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 15:51:29 UTC --- Mine.
[Bug target/47025] Dead stores in variadic functions not eliminated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47025 --- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 15:56:26 UTC --- Author: rguenth Date: Tue Sep 6 15:56:20 2011 New Revision: 178601 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178601 Log: 2011-09-06 Richard Guenther rguent...@suse.de PR tree-optimization/47025 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END uses nothing. (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like BUILT_IN_FREE. (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument definitely points to. * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): BUILT_IN_VA_START doesn't let its va_list argument escape. * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does not make any previous stores necessary. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-dce.c trunk/gcc/tree-ssa-structalias.c
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 --- Comment #15 from Justin SB justin at fathomdb dot com 2011-09-06 15:55:31 UTC --- That patch works for me - thanks; gcc optimizes away the array lookup. I do still think that constexpr could be helpful here: every lookup for an explicit (or default) unordered_map size would then be optimized away (not just those = 11), but constexpr is still new to me so I'm not sure of the behavioural nuances. I do think it should definitely be optimized away in my test case, but that's a separate issue. Thanks again for fixing.
[Bug target/47025] Dead stores in variadic functions not eliminated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47025 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.7.0 --- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 15:56:52 UTC --- Fixed for 4.7.
[Bug target/50304] poor code for accessing certain element of arrays
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50304 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2011-09-06 Component|tree-optimization |target Ever Confirmed|0 |1 --- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-09-06 16:01:31 UTC --- Isn't it just materializing the constant in an efficient way? Btw, you lack a compilable testcase.
[Bug target/50099] ICE: internal compiler error: in extract_insn, at recog.c:2113 while building lttng-ust
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099 Ramana Radhakrishnan ramana at gcc dot gnu.org changed: What|Removed |Added CC||ramana at gcc dot gnu.org --- Comment #9 from Ramana Radhakrishnan ramana at gcc dot gnu.org 2011-09-06 16:29:15 UTC --- Oh fun - I posted a patch about 2 hours after you put yours here :) Ramana
[Bug libstdc++/50257] [C++0x] unordered_map slow initialization due to huge __prime_list
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50257 --- Comment #16 from Paolo Carlini paolo.carlini at oracle dot com 2011-09-06 16:37:55 UTC --- If you could have available a complete constexpr implementation of lower_bound, it would make in principle possible to optimize to a constant all the cases when it's called from a _M_next_bkt in turn called with constant argument, like the default constructor or the move constructor, or the constructor taking a size known at compile-time (Note the *in principle*, see c++/50087). All in all, seems a bit overkilling to me, considering the memory allocation which immediately follows. Also, the optimizers may well at some point become able to do a lot of this anyway via interprocedural constant propagation and versioning, because the information is all there: as soon as something is constant at compile-time it just needs to be thoroughly propagated.
[Bug middle-end/44382] Slow integer multiply
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44382 --- Comment #8 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-09-06 16:42:56 UTC --- Author: hjl Date: Tue Sep 6 16:42:47 2011 New Revision: 178602 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178602 Log: PR middle-end/44382: Tree reassociation improvement gcc/ 2011-09-06 Enkovich Ilya ilya.enkov...@intel.com PR middle-end/44382 * target.def (reassociation_width): New hook. * doc/tm.texi.in (reassociation_width): Likewise. * doc/tm.texi (reassociation_width): Likewise. * doc/invoke.texi (tree-reassoc-width): New param documented. * hooks.h (hook_int_uint_mode_1): New default hook. * hooks.c (hook_int_uint_mode_1): Likewise. * config/i386/i386.h (ix86_tune_indices): Add X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL. (TARGET_REASSOC_INT_TO_PARALLEL): New. (TARGET_REASSOC_FP_TO_PARALLEL): Likewise. * config/i386/i386.c (initial_ix86_tune_features): Add X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL. (ix86_reassociation_width) implementation of new hook for i386 target. * params.def (PARAM_TREE_REASSOC_WIDTH): New param added. * tree-ssa-reassoc.c (get_required_cycles): New function. (get_reassociation_width): Likewise. (swap_ops_for_binary_stmt): Likewise. (rewrite_expr_tree_parallel): Likewise. (rewrite_expr_tree): Refactored. Part of code moved into swap_ops_for_binary_stmt. (reassociate_bb): Now checks reassociation width to be used and call rewrite_expr_tree_parallel instead of rewrite_expr_tree if needed. gcc/testsuite/ 2011-09-06 Enkovich Ilya ilya.enkov...@intel.com * gcc.dg/tree-ssa/pr38533.c (dg-options): Added option --param tree-reassoc-width=1. * gcc.dg/tree-ssa/reassoc-24.c: New test. * gcc.dg/tree-ssa/reassoc-25.c: Likewise. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-24.c trunk/gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386.c trunk/gcc/config/i386/i386.h trunk/gcc/doc/invoke.texi trunk/gcc/doc/tm.texi trunk/gcc/doc/tm.texi.in trunk/gcc/hooks.c trunk/gcc/hooks.h trunk/gcc/params.def trunk/gcc/target.def trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/pr38533.c trunk/gcc/tree-ssa-reassoc.c
[Bug target/50305] New: Inline asm reload failure when building Linux kernel
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50305 Bug #: 50305 Summary: Inline asm reload failure when building Linux kernel Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: uweig...@gcc.gnu.org Target: arm-linux-gnueabi Created attachment 25204 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25204 Reduced test case Building the Linux kernel with current mainline fails with certain sets of options due to a reload failure on an atomic.h inline asm. The attached test case reproduces the problem when compiled with -O2 -fno-omit-frame-pointer -marm -march=armv7-a core.i: In function ‘event_alloc’: core.i:34:2: error: ‘asm’ operand requires impossible reload core.i:34:2: error: ‘asm’ operand requires impossible reload Note that while the inline asm may be somewhat inefficient (enforcing a +Qo constraint on an operand that is never used in the assembly), there is nothing invalid about the set of constraints (and there are enough registers available). The problem seems instead to be caused by unfortunate interactions between ARM's legitimize_reload_address routine and subsequent iterations through find_reloads common code.
[Bug target/50305] Inline asm reload failure when building Linux kernel
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50305 Ulrich Weigand uweigand at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 AssignedTo|unassigned at gcc dot |uweigand at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #1 from Ulrich Weigand uweigand at gcc dot gnu.org 2011-09-06 17:06:45 UTC --- Created attachment 25205 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25205 Possible fix I'm currently testing this patch to fix the problem.
[Bug tree-optimization/50213] [4.6/4.7 Regression] Regression in space-optimized code relative to 4.5.x
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50213 --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 17:08:57 UTC --- It seems that in the loop it is changed then again by RTL fwprop2. Why it isn't done by fwprop2 with -fno-tree-forwprop is a question...
[Bug c++/50306] New: g++ accepts code with ambiguous, templated conversion operators
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50306 Bug #: 50306 Summary: g++ accepts code with ambiguous, templated conversion operators Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: malape...@omnialabs.net This code does not generate an error or warning: class A{}; class B : public A {}; template class T class SmartPtr{ public: templatetypename OtherT operator const SmartPtrOtherT() const; templatetypename OtherT operator SmartPtrOtherT() const; }; void func(SmartPtrA) { } int main() { SmartPtrB b; func(b); // this should be ambiguous? } But it is an error with MSVC 10 and Clang 2.8. If the templates on the operators are removed, it also becomes ambiguous with gcc: class A {}; class B : public A {}; template class T class SmartPtr { public: operator const SmartPtrA() const; operator SmartPtrA() const; }; void func(SmartPtrA) { } int main() { SmartPtrB b; func(b); // func is ambiguous }
[Bug debug/50191] Strange debug insn produced for TOC compiling 416.gamess with profile-generate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50191 --- Comment #16 from Peter Bergner bergner at gcc dot gnu.org 2011-09-06 17:21:14 UTC --- I have kicked off a bootstrap and regtest of Jakub's patching in Comments #13 and #14.
[Bug middle-end/50307] New: SSA checking ICE when building Linux kernel
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50307 Bug #: 50307 Summary: SSA checking ICE when building Linux kernel Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: ice-checking Severity: normal Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: uweig...@gcc.gnu.org Created attachment 25206 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25206 Reduced test case When building the attached test case (reduced from Linux kernel code) with -O2 (tested on i386 and arm), I'm getting the following ICE: vsprintf.i: In function ‘vscnprintf’: vsprintf.i:5:1: error: number of operands and imm-links don’t agree in statement # .MEM_26 = VDEF .MEM_17 args = args_7(D); vsprintf.i:5:1: internal compiler error: verify_ssa failed Seems to be related to re-inlining and outlined part of the original function ...
[Bug c++/50308] New: __attribute__((deprecated)) incorrectly generates warning in ADL lookup
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50308 Bug #: 50308 Summary: __attribute__((deprecated)) incorrectly generates warning in ADL lookup Classification: Unclassified Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: gd_bugzi...@growndodo.com void A( int ) __attribute__((deprecated)); namespace B { struct C {}; void A( C ) {} } int main (int argc, const char * argv[]) { B::C x; // ADL correctly identifies the non-deprecated B::A, but a warning about the global A is generated anyway A( x ); return 0; }
[Bug middle-end/50301] [4.7 Regression] 416.gamess in SPEC CPU 2006 failed to build with LTO
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50301 --- Comment #3 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 18:04:59 UTC --- Proposed fix submitted to the mailing list: http://gcc.gnu.org/ml/gcc-patches/2011-09/msg00427.html
[Bug c++/50296] [4.7 Regression] New C++ test failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296 --- Comment #5 from Jason Merrill jason at gcc dot gnu.org 2011-09-06 18:09:07 UTC --- Author: jason Date: Tue Sep 6 18:09:01 2011 New Revision: 178604 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178604 Log: PR c++/50296 * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn. (cx_check_missing_mem_inits): Handle bases and empty trivial members. (validate_constexpr_fundecl): Remove. * decl.c (start_preparsed_function): Don't call it. * cp-tree.h: Don't declare it. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/semantics.c trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C
[Bug c++/50296] [4.7 Regression] New C++ test failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED CC|jason at redhat dot com |jason at gcc dot gnu.org Resolution||FIXED AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | --- Comment #6 from Jason Merrill jason at gcc dot gnu.org 2011-09-06 18:09:52 UTC --- Should be fixed now.
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 --- Comment #4 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 18:19:57 UTC --- Created attachment 25207 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25207 Testcase for i686 (and probably x86_64 too) Testcase that fails on i686-linux for me.
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 Martin Jambor jamborm at gcc dot gnu.org changed: What|Removed |Added Target|arm-eabi,sh*-*-*, |arm-eabi,sh*-*-*, |arm-linux-gnueabi |arm-linux-gnueabi, ||i686-linux Status|NEW |ASSIGNED CC||jamborm at gcc dot gnu.org AssignedTo|unassigned at gcc dot |jamborm at gcc dot gnu.org |gnu.org |
[Bug middle-end/50295] [4.6 Regression] ICE (segfault) in expand_debug_expr at cfgexpand.c:2380
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50295 Martin Jambor jamborm at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED CC|mjambor at suse dot cz |jamborm at gcc dot gnu.org Resolution||DUPLICATE --- Comment #8 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 18:27:30 UTC --- I have reverted the patch causing this on the 4.6 branch. As far as trunk is concerned, I'll track it in a duplicate of this bug, PR 50287. *** This bug has been marked as a duplicate of bug 50287 ***
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 Martin Jambor jamborm at gcc dot gnu.org changed: What|Removed |Added CC||doko at gcc dot gnu.org --- Comment #5 from Martin Jambor jamborm at gcc dot gnu.org 2011-09-06 18:27:30 UTC --- *** Bug 50295 has been marked as a duplicate of this bug. ***
[Bug c++/50309] New: [4.6/4.7 Regression] [C++0x] ICE: tree check: expected tree_list, have error_mark in comp_except_specs, at cp/typeck.c:1014 on empty noexcept
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50309 Bug #: 50309 Summary: [4.6/4.7 Regression] [C++0x] ICE: tree check: expected tree_list, have error_mark in comp_except_specs, at cp/typeck.c:1014 on empty noexcept Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: zso...@seznam.cz testcase.C void foo () noexcept () {} Gives in 4.6 and 4.7: $ gcc -std=gnu++0x testcase.C testcase.C:1:23: error: expected primary-expression before ')' token testcase.C:1:23: internal compiler error: tree check: expected tree_list, have error_mark in comp_except_specs, at cp/typeck.c:1016 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. Tested revisions: r178555 - crash 4.6 r177922 - crash 4.5 r177922 - noexcept is not recognized
[Bug target/50310] New: [4.7 Regression] ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered()
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50310 Bug #: 50310 Summary: [4.7 Regression] ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered() Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: zso...@seznam.cz CC: rgue...@gcc.gnu.org Host: x86_64-pc-linux-gnu Target: x86_64-pc-linux-gnu Created attachment 25208 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25208 reduced testcase There are three testcases that ICE with a very similiar message: $ gcc -O -mavx -ftree-vectorize gcc.target/i386/avx-vcmppd-256-1.c gcc.target/i386/avx-vcmppd-256-1.c: In function 'do_test': gcc.target/i386/avx-vcmppd-256-1.c:49:5: internal compiler error: in gen_vcondv4div4df, at config/i386/sse.md:1418 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. $ gcc -O -mavx -ftree-vectorize gcc.target/i386/avx-vcmpps-1.c gcc.target/i386/avx-vcmpps-1.c: In function 'do_test': gcc.target/i386/avx-vcmpps-1.c:49:5: internal compiler error: in gen_vcondv4siv4sf, at config/i386/sse.md:1435 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. $ gcc -O -mavx -ftree-vectorize gcc.target/i386/avx-vcmpps-256-1.c gcc.target/i386/avx-vcmpps-256-1.c: In function 'do_test': gcc.target/i386/avx-vcmpps-256-1.c:49:5: internal compiler error: in gen_vcondv8siv8sf, at config/i386/sse.md:1418 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. As the ICEs look quite similiar, I am opening just one PR for it. Compiler output: $ gcc -O -ftree-vectorize testcase.c testcase.c: In function 'foo': testcase.c:9:10: internal compiler error: in gen_vcondv2div2df, at config/i386/sse.md:1435 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. Maybe related to the Vector Comparison patch.
[Bug c++/50311] New: [4.7 Regression] [C++0x] ICE: SIGSEGV in cx_check_missing_mem_inits (semantics.c:5808) with variadic template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50311 Bug #: 50311 Summary: [4.7 Regression] [C++0x] ICE: SIGSEGV in cx_check_missing_mem_inits (semantics.c:5808) with variadic template Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: zso...@seznam.cz Created attachment 25209 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25209 reduced testcase Compiler output: $ gcc -std=gnu++0x testcase.C testcase.C: In instantiation of 'struct AMoveOnly, MoveOnly': testcase.C:10:44: required from 'struct tupleMoveOnly, MoveOnly' testcase.C:21:30: required from here testcase.C:6:8: warning: direct base 'MoveOnly' inaccessible in 'AMoveOnly, MoveOnly' due to ambiguity [enabled by default] ==22934== Invalid read of size 2 ==22934==at 0x6CCF01: cx_check_missing_mem_inits(tree_node*, tree_node*, bool) (semantics.c:5808) ==22934==by 0x6EA5E4: register_constexpr_fundef(tree_node*, tree_node*) (semantics.c:5853) ==22934==by 0x5ACCA6: finish_function(int) (decl.c:13195) ==22934==by 0x6C367D: synthesize_method(tree_node*) (method.c:770) ==22934==by 0x6447FC: mark_used(tree_node*) (decl2.c:4312) ==22934==by 0x5830EA: build_over_call(z_candidate*, int, int) (call.c:6801) ==22934==by 0x57F8D4: build_new_method_call(tree_node*, tree_node*, VEC_tree_gc**, tree_node*, int, tree_node**, int) (call.c:7396) ==22934==by 0x580ADE: build_special_member_call(tree_node*, tree_node*, VEC_tree_gc**, tree_node*, int, int) (call.c:7070) ==22934==by 0x6B30C8: expand_aggr_init_1(tree_node*, tree_node*, tree_node*, tree_node*, int, int) (init.c:1503) ==22934==by 0x6BA692: emit_mem_initializers(tree_node*) (init.c:972) ==22934==by 0x5D3947: tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) (pt.c:12439) ==22934==by 0x5CFEA0: tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) (pt.c:12612) ==22934== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==22934== testcase.C: In instantiation of 'tuple_Elements::tuple() [with _Elements = {MoveOnly, MoveOnly}]': testcase.C:21:30: required from here testcase.C:6:8: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. Tested revisions: r178602 - crash 4.6 r177922 - OK
[Bug target/50310] [4.7 Regression] ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered()
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50310 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 19:38:40 UTC --- While this exact testcase is a recent regression, caused by http://gcc.gnu.org/viewcvs?root=gccview=revrev=178480 double s1[4], s2[4], s3[4]; void foo (void) { int i; for (i = 0; i 4; i++) s3[i] = !__builtin_isunordered (s1[i], s2[i]) s1[i] != s2[i] ? -1.0 : 0.0; } ICEd for some time already (e.g. with -O3 -mavx or on powerpc64 with -O3 -mvsx). The problem is that vcond isn't supported for all possible conditions (LTGT in this case) on all targets, the sse.md pattern just ICEs if the expanding routine fails, on powerpc64 it ICEs in the middle end because it FAILed. So, to fix this either vcond conditions would need to test for the unsupported condition codes and the vectorizer would need to use the condition, or all targets that provide vcond* patterns would need to support all possible condition codes.
[Bug c++/50296] [4.7 Regression] New C++ test failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296 Hans-Peter Nilsson hp at gcc dot gnu.org changed: What|Removed |Added CC||zsojka at seznam dot cz --- Comment #7 from Hans-Peter Nilsson hp at gcc dot gnu.org 2011-09-06 19:48:09 UTC --- *** Bug 50311 has been marked as a duplicate of this bug. ***
[Bug c++/50311] [4.7 Regression] [C++0x] ICE: SIGSEGV in cx_check_missing_mem_inits (semantics.c:5808) with variadic template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50311 Hans-Peter Nilsson hp at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||hp at gcc dot gnu.org Resolution||DUPLICATE --- Comment #1 from Hans-Peter Nilsson hp at gcc dot gnu.org 2011-09-06 19:48:09 UTC --- Matches behavior and revision range so I'll go ahead and call it. *** This bug has been marked as a duplicate of bug 50296 ***
[Bug target/50310] [4.7 Regression] ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered()
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50310 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target|x86_64-pc-linux-gnu |x86_64-linux, ||powerpc64-linux Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 Ever Confirmed|0 |1 --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-09-06 19:49:14 UTC --- On this second testcase it started with http://gcc.gnu.org/viewcvs?root=gccview=revrev=171236
[Bug c++/48665] type of const member function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48665 --- Comment #1 from Marc Glisse marc.glisse at normalesup dot org 2011-09-06 21:11:40 UTC --- Created attachment 25210 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25210 Fix libiberty demangler This patch seems to fix c++filt. It doesn't change anything to the g++ issues.
[Bug middle-end/50266] [4.6/4.7 Regression] ICE in decode_addr_const
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50266 --- Comment #6 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 21:17:51 UTC --- Author: ebotcazou Date: Tue Sep 6 21:17:46 2011 New Revision: 178611 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178611 Log: PR middle-end/50266 * c-common.c (c_fully_fold_internal) ADDR_EXPR: Fold offsetof-like computations. Added: trunk/gcc/testsuite/gcc.c-torture/compile/20110906-1.c Modified: trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/testsuite/ChangeLog
[Bug middle-end/50266] [4.6/4.7 Regression] ICE in decode_addr_const
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50266 --- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 21:23:57 UTC --- Author: ebotcazou Date: Tue Sep 6 21:23:53 2011 New Revision: 178613 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=178613 Log: PR middle-end/50266 * c-common.c (c_fully_fold_internal) ADDR_EXPR: Fold offsetof-like computations. Added: branches/gcc-4_6-branch/gcc/testsuite/gcc.c-torture/compile/20110906-1.c - copied unchanged from r178611, trunk/gcc/testsuite/gcc.c-torture/compile/20110906-1.c Modified: branches/gcc-4_6-branch/gcc/c-family/ChangeLog branches/gcc-4_6-branch/gcc/c-family/c-common.c branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
[Bug middle-end/50266] [4.6/4.7 Regression] ICE in decode_addr_const
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50266 Eric Botcazou ebotcazou at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #8 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-09-06 21:28:22 UTC --- This should compile again.
[Bug c++/48320] [C++0x][4.6/4.7 Regression] Template parameter packs cannot be expanded in default template arguments
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48320 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011-09-06 CC||dodji at gcc dot gnu.org Component|regression |c++ Ever Confirmed|0 |1 --- Comment #2 from Jason Merrill jason at gcc dot gnu.org 2011-09-06 22:52:49 UTC --- This is a problem with fixup_template_parms; when we substitute into the default template argument for Result, we've wrapped Indices in an EXPR_PACK_EXPANSION, so it doesn't work as used in the default argument.
[Bug c++/50248] [C++0x] unnecessary instantiation of constexpr constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50248 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.7.0 --- Comment #4 from Jason Merrill jason at gcc dot gnu.org 2011-09-06 22:53:30 UTC --- Fixed for 4.7.
[Bug debug/50191] Strange debug insn produced for TOC compiling 416.gamess with profile-generate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50191 --- Comment #17 from Peter Bergner bergner at gcc dot gnu.org 2011-09-06 23:07:22 UTC --- This passed bootstrap and regtest on powerpc64-linux. Bill is on vacation for a few days, so cannot test the patched compiler on the full benchmark, but I assume Jakub you have already confirmed it fixes that.
[Bug c++/50312] New: ICE when calling offsetof() illegally on incomplete template class
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50312 Bug #: 50312 Summary: ICE when calling offsetof() illegally on incomplete template class Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: scov...@gmail.com The following (admittedly illegal) code: //== begin == #include cstddef #ifdef BUG template typename T=int #define EXTRA #else #define EXTRA #endif struct foo { int bar; enum { END = offsetof(foo, bar) }; }; foo EXTRA a; //== end === Causes an ICE when compiled with -DBUG: $ g++ -DBUG bug.cpp bug.cpp: In instantiation of ‘foo’: bug.cpp:12:11: instantiated from here bug.cpp:10:10: internal compiler error: in tree_low_cst, at tree.h:4233 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. The above is for g++-4.6.1; the same error occurs for g++-4.5.0 (but at tree.c:6202). Compiling without -DBUG triggers a much more helpful diagnostic: $ g++ bug.cpp bug.cpp:10:18: error: invalid use of incomplete type ‘struct foo {aka struct foo}’ bug.cpp:8:8: error: forward declaration of ‘struct foo {aka struct foo}’
[Bug tree-optimization/50287] [4.7 Regression] FAIL: gcc.c-torture/execute/builtins/vsnprintf-chk.c compilation, -O2 -flto
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50287 --- Comment #6 from Kazumoto Kojima kkojima at gcc dot gnu.org 2011-09-07 00:26:13 UTC --- (In reply to comment #4) Testcase that fails on i686-linux for me. FYI, the testcase is failing also for arm-eabi, mips-elf and sh-elf.
[Bug rtl-optimization/50191] Strange debug insn produced for TOC compiling 416.gamess with profile-generate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50191 Alan Modra amodra at gmail dot com changed: What|Removed |Added Status|NEW |UNCONFIRMED Component|debug |rtl-optimization Ever Confirmed|1 |0 --- Comment #18 from Alan Modra amodra at gmail dot com 2011-09-07 00:34:24 UTC --- I should have commented here earlier to prevent some wasted effort. The toc rtl changes http://gcc.gnu.org/ml/gcc-patches/2011-09/msg00304.html also fix this bug.
[Bug rtl-optimization/50191] Strange debug insn produced for TOC compiling 416.gamess with profile-generate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50191 Alan Modra amodra at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed|2011-09-05 00:00:00 |2011-09-07 AssignedTo|unassigned at gcc dot |amodra at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1
[Bug target/50022] [4.7 regression] incorrect condition in IT block when building mozilla code base for ARM
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50022 Michael Hope michael.hope at linaro dot org changed: What|Removed |Added CC||michael.hope at linaro dot ||org --- Comment #6 from Michael Hope michael.hope at linaro dot org 2011-09-07 02:21:02 UTC --- For reference, I ran this against the different builds I have lying about. The fault occurs in r177688, is gone in r178025, and does not exist in 4.5.3, 4.6.1, or gcc-linaro-4.6-2011.08. The 4.6 and earlier compilers generate a branch instead of the itt block.
[Bug other/49930] Need some adjustments for bionic
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49930 Michael Hope michael.hope at linaro dot org changed: What|Removed |Added CC||michael.hope at linaro dot ||org --- Comment #2 from Michael Hope michael.hope at linaro dot org 2011-09-07 02:30:14 UTC --- Note that sincos() was introduced with Android 2.3. The initial version calls sin() then calls cos() so there's no immediate advantage.
[Bug rtl-optimization/50249] ira marks wrong value for inheriting
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50249 Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org changed: What|Removed |Added CC||mkuvyrkov at gcc dot ||gnu.org --- Comment #6 from Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org 2011-09-07 02:55:56 UTC --- Vladimir, Does the analysis done by Tom sound correct (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50249#c0) ? To fix this RA bug, should we teach IRA to distinguish between Reload 1 and Reload 2, or make sure that the reloads are evaluated in correct order, or something else? Thank you.
[Bug c++/50298] [C++0x][constexpr] References cannot be bound to static constexpr reference members
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50298 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011-09-07 AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1
[Bug target/50313] New: ARM: PIC code references a non-existant label
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50313 Bug #: 50313 Summary: ARM: PIC code references a non-existant label Classification: Unclassified Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: michael.h...@linaro.org Created attachment 25211 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25211 Preprocessed source Building gmime with GCC 4.6.1 for ARM gives the following error: michaelh@ursa1:~/linaro/bugs$ gcc -c -O2 -fPIC -save-temps gmime2.i gmime2.s: Assembler messages: gmime2.s:1007: Error: can't resolve `.rodata' {.rodata section} - `.LPIC18' {*UND* section} The assembler is correct - the code references a label which doesn't exist. The suspicious code is around: bl g_hash_table_new(PLT) mov sl, r0 add r0, sp, #32 bl g_mime_decode_lwsp(PLT) ldr r3, .L146+24 ldr r1, [sp, #4] str r3, [sp, #16] ldr r3, [sp, #32] ... .L146: ... .word .LANCHOR0-(.LPIC18+4) The 'ldr r3, .L146+24' references the offset. The value is spilt to the stack before the normal `add r3, pc` and doesn't seem to be used afterwards. The work-around is to compile at -O1 or -O3. The fault also exists in gcc-4.6.1. It does not exist in gcc-4.5.3 or trunk r178025. This is in a Cortex-A9+NEON+Thumb-2 configuration.
[Bug target/50310] [4.7 Regression] ICE: in gen_vcondv2div2df, at config/i386/sse.md:1435 with -O -ftree-vectorize and __builtin_isunordered()
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50310 --- Comment #3 from Zdenek Sojka zsojka at seznam dot cz 2011-09-07 04:59:06 UTC --- For a very similiar testcase: double s1[4]; double s2[4]; long long e[4]; void foo(void) { int i; for (i = 0; i 4; i++) e[i] = __builtin_isunordered(s1[i], s2[i]) s1[i] != s2[i] ? -1 : 0; } Compilation fails with: $ gcc -O -mavx -ftree-vectorize testcase2.c /tmp/cc7w0heQ.s: Assembler messages: /tmp/cc7w0heQ.s:17: Error: operand type mismatch for `vpand' or $ gcc -O -mavx -ftree-vectorize testcase2.c -masm=intel /tmp/ccyNaxE9.s: Assembler messages: /tmp/ccyNaxE9.s:18: Error: operand size mismatch for `vpand' (-mavx is needed) I don't know if that's related, GCC 4.6 generates very different code. My as might be outdated as well.
[Bug target/50313] ARM: PIC code references a non-existant label
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50313 --- Comment #1 from Mikael Pettersson mikpe at it dot uu.se 2011-09-07 05:55:26 UTC --- I suspect this is a dupe of PR48308.