[Bug tree-optimization/44336] [4.4/4.5/4.6 Regression] ICE: verify_ssa failed: SSA_NAME_DEF_STMT is wrong with -fipa-struct-reorg -fwhole-program
--- Comment #2 from zsojka at seznam dot cz 2010-06-08 14:41 --- Created an attachment (id=20867) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20867action=view) different testcase This testcase fails with similiar message: $ gcc -O1 -fipa-struct-reorg -fwhole-program pr44336-2.c pr44336-2.c: In function 'main': pr44336-2.c:11:1: error: SSA_NAME_DEF_STMT is wrong Expected definition statement: # .MEM_4 = VDEF .MEM_3 D.2721_1 = foo (s.0); Actual definition statement: # .MEM_3 = VDEF .MEM_2(D) D.2721_1 = foo (s); pr44336-2.c:11: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. Fails in 4.4 r158133 and 4.5 r158978 too. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44336
[Bug bootstrap/44469] New: [4.5/4.6 Regression] internal compiler error: in fixup_reorder_chain, at cfglayout.c:797
Target: armv7l-unknown-linux-gnueabi Configured with: ../gcc-4_5-branch/configure --prefix=/home/ssvb/gcc-test/bin --target=armv7l-unknown-linux-gnueabi --enable-languages=c --without-headers Thread model: posix gcc version 4.5.1 20100607 (prerelease) (GCC) $ armv7l-unknown-linux-gnueabi -O2 testcase.i testcase.i: In function a: testcase.i:15:1: internal compiler error: in fixup_reorder_chain, at cfglayout.c:797 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. This bug prevents bootstrap on ARM when configured with '--disable-checking' option. Also see PR42347 comment 28 -- Summary: [4.5/4.6 Regression] internal compiler error: in fixup_reorder_chain, at cfglayout.c:797 Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: siarhei dot siamashka at gmail dot com GCC target triplet: armv7l-unknown-linux-gnueabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44469
[Bug bootstrap/44469] [4.5/4.6 Regression] internal compiler error: in fixup_reorder_chain, at cfglayout.c:797
--- Comment #1 from siarhei dot siamashka at gmail dot com 2010-06-08 14:45 --- Created an attachment (id=20868) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20868action=view) testcase.i -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44469
[Bug bootstrap/42347] [4.5/4.6 Regression] sched-deps.c:3840:1: internal compiler error: in fixup_reorder_chain, at cfglayout.c:796
--- Comment #30 from siarhei dot siamashka at gmail dot com 2010-06-08 14:49 --- (In reply to comment #29) Please file a new PR for that, with preprocessed source and all other relevant info for reproduction. Thanks, filed PR44469 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42347
[Bug tree-optimization/44423] [4.5/4.6 Regression] Massive performance regression in SSE code due to SRA
--- Comment #8 from rguenth at gcc dot gnu dot org 2010-06-08 14:50 --- I don't think you need flow-sensitivity. Basically when you have only aggregate uses (as in this case) then you only want to scalarize if the destination of the use is scalarized as well (to be able to copyprop out the aggregate copy). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44423
[Bug bootstrap/44469] [4.5/4.6 Regression] internal compiler error: in fixup_reorder_chain, at cfglayout.c:797
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.5.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44469
[Bug libstdc++/44413] inefficient code for std::string::compare on x86-64
--- Comment #3 from dgohman at gmail dot com 2010-06-08 14:54 --- Callers of compare are already exposed to __builtin_memcmp result values (with default traits) which vary depending on the target and compiler flags. And since _S_compare is only used as a tie-breaker after the memcmp, it's hard to imagine any code innocently relying on it returning a particular value. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44413
[Bug tree-optimization/44468] [4.3/4.4/4.5/4.6 Regression] Bogus access re-construction from offset calculation
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Summary|Bogus access re-construction|[4.3/4.4/4.5/4.6 Regression] |from offset calculation |Bogus access re-construction ||from offset calculation Target Milestone|--- |4.3.6 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44468
[Bug tree-optimization/44423] [4.5/4.6 Regression] Massive performance regression in SSE code due to SRA
--- Comment #9 from jamborm at gcc dot gnu dot org 2010-06-08 15:00 --- (In reply to comment #8) I don't think you need flow-sensitivity. Basically when you have only aggregate uses (as in this case) Vectors are considered scalars in GCC. That is why the solutions described above work. then you only want to scalarize if the destination of the use is scalarized as well (to be able to copyprop out the aggregate copy). Well, that is what I thought until someone filed PR 43846. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44423
[Bug libstdc++/44413] inefficient code for std::string::compare on x86-64
--- Comment #4 from paolo dot carlini at oracle dot com 2010-06-08 15:09 --- I'm not convinced. The code at issue is used when memcmp returns zero, thus one string is a prefix of the other, a well defined situation. For *eons* we have been returning a number which is much larger (in modulo) if one string is much longer. Before considering changing this, I want to see a very solid real life example, with numbers, of code benefiting from this tuning. Otherwise, I guess we'll do it, but only when we'll break the ABI. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44413
[Bug tree-optimization/44423] [4.5/4.6 Regression] Massive performance regression in SSE code due to SRA
--- Comment #10 from rguenth at gcc dot gnu dot org 2010-06-08 15:11 --- (In reply to comment #9) (In reply to comment #8) I don't think you need flow-sensitivity. Basically when you have only aggregate uses (as in this case) Vectors are considered scalars in GCC. That is why the solutions described above work. then you only want to scalarize if the destination of the use is scalarized as well (to be able to copyprop out the aggregate copy). Well, that is what I thought until someone filed PR 43846. Hm, yes. But there you know that D.2464.m[0] = D.2473_20; D.2464.m[1] = D.2472_19; D.2464.m[2] = D.2471_18; *b_1(D) = D.2464; D.2464 will be dead after scalarization. In the particular case of the current bug the aggregate remains live because of the load from va.v which we cannot scalarize(*). (*) we can scalarize this particular case if you manage to build a proper constructor from the elements - but that's probably a bit involved. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44423
[Bug target/44364] Wrong code with e500 double floating point
--- Comment #35 from Kyle dot D dot Moffett at boeing dot com 2010-06-08 15:23 --- Hrm, well PPL still seems to be failing the interval1 test, but I'm not sure that one's related as the part that fails is test01float. More info to come shortly. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364
[Bug middle-end/42574] [4.3/4.4/4.5/4.6 Regression] Address of global variable is calculated multiple times (missed CSE)
--- Comment #10 from mkuvyrkov at gcc dot gnu dot org 2010-06-08 15:24 --- Steven, I'm shamelessly stealing this PR from you. There are two sides to this missed optimization: 1. Calculation of PIC address is not CSE'd; this is the same as PR42495 and will be fixed there. 2. Constant 400, which expands to 2 instructions is not CSE'd. After addressing the first issue, the second problem can be fixed by asking hoist to CSE complicated constants and making sure that RA will rematerialize them instead of spilling under high register pressure. We can define a constant complicated if it takes a PARALLEL -- (parallel [(set (reg1) (const)) (clobber reg2)]) -- to set it; this is a common way of defining instructions that should be split later and require a temporary register to hold intermediate value. I'm now testing a patch that makes ARM backend to expand constants into parallels instead of sequences of two instructions and tweaking hoist to gcse complicated const_int's. The result is the following: test: push{r4, r5, r6, lr} ldr r3, .L3 ldr r2, .L3+4 .LPIC0: add r3, pc ldr r5, [r3, r2] mov r4, #200 lsl r4, r4, #1 mov r6, r0 ldr r0, [r5, r4] bl func1 ldr r0, [r5, r4] mov r1, r6 bl func2 cmp r0, #0 beq .L2 bl func .L2: ldr r0, [r5, r4] bl func3 @ sp needed for prologue pop {r4, r5, r6, pc} .L4: .align 2 .L3: .word _GLOBAL_OFFSET_TABLE_-(.LPIC0+4) .word glob(GOT) -- mkuvyrkov at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|steven at gcc dot gnu dot |mkuvyrkov at gcc dot gnu dot |org |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42574
[Bug rtl-optimization/40615] unnecessary CSE
-- 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=40615
[Bug rtl-optimization/42500] Unnecessary mov of sp to a register
-- 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=42500
[Bug libstdc++/44413] inefficient code for std::string::compare on x86-64
--- Comment #5 from paolo dot carlini at oracle dot com 2010-06-08 15:59 --- Let's do this change first in ext/vstring and let's see how people react. In that case we also have the advantage that nothing is exported from the *.so, thus old code linking to the new lib will not risk behaving differently all of a sudden. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44413
[Bug middle-end/44297] Big spec cpu2006 prefetch regressions on gcc 4.6 on x86
--- Comment #21 from changpeng dot fang at amd dot com 2010-06-08 16:23 --- Just for the record, non-constant step prefetching improves 459.GemsFDTD by 5.5% (under -O3 + prefetch) on amd-linux64 systems. And the gains are from the following set of loops: NFT.fppized.f90:1268 NFT.fppized.f90:1227 NFT.fppized.f90:1186 NFT.fppized.f90:1148 NFT.fppized.f90:1109 NFT.fppized.f90:1072 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44297
[Bug tree-optimization/44393] [4.5/4.6 Regression] ICE: verify_ssa failed: no immediate_use list with -Os -ftree-loop-distribution
--- Comment #3 from hjl dot tools at gmail dot com 2010-06-08 16:47 --- It is caused by revision 145494: http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg00115.html -- hjl dot tools at gmail dot com changed: What|Removed |Added CC||rguenth at gcc dot gnu dot ||org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-06-08 16:47:23 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44393
[Bug tree-optimization/44393] [4.5/4.6 Regression] ICE: verify_ssa failed: no immediate_use list with -Os -ftree-loop-distribution
--- Comment #4 from rguenth at gcc dot gnu dot org 2010-06-08 17:33 --- Whatever. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2010-06-08 16:47:23 |2010-06-08 17:33:49 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44393
[Bug libstdc++/43838] Incorrect output from abi::__cxa_demangle
--- Comment #3 from slawomir at ezono dot com 2010-06-08 17:55 --- Created an attachment (id=20869) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20869action=view) simpler example Preprocessed source of simpler program. The only #include used was typeinfo which is needed in order to compile with g++ -- slawomir at ezono dot com changed: What|Removed |Added Attachment #20456|0 |1 is obsolete|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43838
[Bug libstdc++/43838] Incorrect output from abi::__cxa_demangle
--- Comment #4 from paolo dot carlini at oracle dot com 2010-06-08 17:57 --- Excellent, thanks a lot. -- paolo dot carlini at oracle dot com changed: What|Removed |Added Status|WAITING |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-06-08 17:57:00 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43838
[Bug libstdc++/43838] Incorrect output from abi::__cxa_demangle
--- Comment #5 from paolo dot carlini at oracle dot com 2010-06-08 18:02 --- I also double checked that indeed the last null_type appears truncated. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43838
[Bug libstdc++/43838] Incorrect output from abi::__cxa_demangle
--- Comment #6 from paolo dot carlini at oracle dot com 2010-06-08 18:05 --- Ian, any idea what may be happening here? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43838
[Bug tree-optimization/39874] [4.4 regression] missing VRP (submission)
--- Comment #5 from sandra at gcc dot gnu dot org 2010-06-08 18:16 --- Subject: Bug 39874 Author: sandra Date: Tue Jun 8 18:15:53 2010 New Revision: 160445 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=160445 Log: 2010-06-08 Sandra Loosemore san...@codesourcery.com PR tree-optimization/39874 PR middle-end/28685 gcc/ * gimple.h (maybe_fold_and_comparisons, maybe_fold_or_comparisons): Declare. * gimple-fold.c (canonicalize_bool, same_bool_comparison_p, same_bool_result_p): New. (and_var_with_comparison, and_var_with_comparison_1, and_comparisons_1, and_comparisons, maybe_fold_and_comparisons): New. (or_var_with_comparison, or_var_with_comparison_1, or_comparisons_1, or_comparisons, maybe_fold_or_comparisons): New. * tree-ssa-reassoc.c (eliminate_redundant_comparison): Use maybe_fold_and_comparisons or maybe_fold_or_comparisons instead of combine_comparisons. * tree-ssa-ifcombine.c (ifcombine_ifandif, ifcombine_iforif): Likewise. gcc/testsuite/ * gcc.dg/pr39874.c: New file. Added: trunk/gcc/testsuite/gcc.dg/pr39874.c Modified: trunk/gcc/ChangeLog trunk/gcc/gimple-fold.c trunk/gcc/gimple.h trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-ifcombine.c trunk/gcc/tree-ssa-reassoc.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39874
[Bug middle-end/28685] Multiple comparisons are not simplified
--- Comment #16 from sandra at gcc dot gnu dot org 2010-06-08 18:16 --- Subject: Bug 28685 Author: sandra Date: Tue Jun 8 18:15:53 2010 New Revision: 160445 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=160445 Log: 2010-06-08 Sandra Loosemore san...@codesourcery.com PR tree-optimization/39874 PR middle-end/28685 gcc/ * gimple.h (maybe_fold_and_comparisons, maybe_fold_or_comparisons): Declare. * gimple-fold.c (canonicalize_bool, same_bool_comparison_p, same_bool_result_p): New. (and_var_with_comparison, and_var_with_comparison_1, and_comparisons_1, and_comparisons, maybe_fold_and_comparisons): New. (or_var_with_comparison, or_var_with_comparison_1, or_comparisons_1, or_comparisons, maybe_fold_or_comparisons): New. * tree-ssa-reassoc.c (eliminate_redundant_comparison): Use maybe_fold_and_comparisons or maybe_fold_or_comparisons instead of combine_comparisons. * tree-ssa-ifcombine.c (ifcombine_ifandif, ifcombine_iforif): Likewise. gcc/testsuite/ * gcc.dg/pr39874.c: New file. Added: trunk/gcc/testsuite/gcc.dg/pr39874.c Modified: trunk/gcc/ChangeLog trunk/gcc/gimple-fold.c trunk/gcc/gimple.h trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-ifcombine.c trunk/gcc/tree-ssa-reassoc.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28685
[Bug libffi/42275] pkg-config (.pc) file missing in libffi (lost during import)
--- Comment #2 from ensonic at hora-obscura dot de 2010-06-08 19:16 --- There are even patches flying around on the net for this, please! http://www.mail-archive.com/pld-cvs-com...@lists.pld-linux.org/msg178946.html -- ensonic at hora-obscura dot de changed: What|Removed |Added Severity|normal |major http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42275
[Bug middle-end/44297] Big spec cpu2006 prefetch regressions on gcc 4.6 on x86
--- Comment #22 from borntraeger at de dot ibm dot com 2010-06-08 19:42 --- I bootstrapped with patches 0002 and 0003. The results are also good. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44297
[Bug libffi/42275] pkg-config (.pc) file missing in libffi (lost during import)
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Severity|major |normal http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42275
[Bug plugins/44459] plugin interface depends on name mangling
--- Comment #5 from pinskia at gcc dot gnu dot org 2010-06-08 19:55 --- There is no specifications for plugins really. And really this is on purpose as we don't want to freeze down the rest of the compiler just for plugins. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||WONTFIX http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44459
[Bug tree-optimization/44462] Redundant looping pure functions whose return value is dead are not optimized out
--- Comment #2 from pinskia at gcc dot gnu dot org 2010-06-08 20:10 --- Why do we remove register LHS in DCE again? Because it reduces the amount of garbage produced by expand :). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44462
[Bug target/44364] Wrong code with e500 double floating point
--- Comment #36 from Kyle dot D dot Moffett at boeing dot com 2010-06-08 20:34 --- Ok, I'm pretty sure this is unrelated to this bug, but I still get one test-failure with PPL 0.10.2. The interval1 test fails due to the test01float subtest, apparently due to very slightly excessive float rounding errors (after 100 rounds of the equivalent of x = (x + (2/x)) / 2 it approximates ~0.02% past the maximum acceptable error bounds). The double testcase passes just fine (although with the same error bounds and extra precision that seems perfectly reasonable). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364
[Bug plugins/44459] plugin interface depends on name mangling
--- Comment #6 from amylaar at gcc dot gnu dot org 2010-06-08 20:34 --- (In reply to comment #5) There is no specifications for plugins really. And really this is on purpose as we don't want to freeze down the rest of the compiler just for plugins. There is a difference between freezing the rest of the compiler and making reasonable adaptations to avoid unnecessary interface churn / cross-language linking issues. I intend to apply the approved patch to gcc-plugin.h on Wednesday (we are supposedly still in a trunk freeze right now, even though I have seen a few non-merge patches going in). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44459
[Bug fortran/43040] Wrong decl for mathbuiltins - wrong code with LTO
--- Comment #6 from fxcoudert at gcc dot gnu dot org 2010-06-08 20:39 --- I'm currently looking at math builtins for __float128 support, so I'll check that. -- fxcoudert at gcc dot gnu dot org changed: What|Removed |Added CC||fxcoudert at gcc dot gnu dot ||org AssignedTo|unassigned at gcc dot gnu |fxcoudert at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2010-02-12 11:07:37 |2010-06-08 20:39:06 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43040
[Bug fortran/32049] Support on x86_64 also kind=16
-- fxcoudert at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |fxcoudert at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2007-06-02 07:37:11 |2010-06-08 20:42:25 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32049
[Bug testsuite/42843] --enable-build-with-cxx plugin tests fail
--- Comment #3 from amylaar at gcc dot gnu dot org 2010-06-08 20:52 --- (In reply to comment #1) A patch is here: http://gcc.gnu.org/ml/gcc-patches/2010-01/msg01200.html This is an update of the patch to revision 160389: http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00822.html -- amylaar at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Known to fail||4.5.0 4.6.0 Last reconfirmed|-00-00 00:00:00 |2010-06-08 20:52:24 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42843
[Bug bootstrap/44470] New: [4.6 Regression] Failed to bootstrap with - -with-arch=atom
Revision 160417 failed to compile libgcc: [...@gnu-32 rrs]$ cat testcase.i typedef int SItype __attribute__ ((mode (SI))); typedef unsigned int USItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); struct DWstruct {SItype low, high;}; typedef union { struct DWstruct s; DItype ll; } DWunion; DItype __negdi2 (DItype u) { const DWunion uu = {.ll = u}; const DWunion w = { {.low = -uu.s.low, .high = -uu.s.high - ((USItype) -uu.s.low 0) } }; return w.ll; } [...@gnu-32 rrs]$ /export/gnu/import/rrs/160417/usr/bin/gcc -m32 -march=atom -O2 -fPIC -S testcase.i testcase.i: In function __negdi2: testcase.i:17:1: 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. [...@gnu-32 rrs]$ -- Summary: [4.6 Regression] Failed to bootstrap with - -with- arch=atom Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap 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=44470
[Bug fortran/44471] New: Wrong call with variadic declaration
Reported by Jakub. gfortran -O2 -fwhole-file generates a variadic call to bar_. (The decl of the procedure itself is OK.) Expected: a) With -fwhole-file, the actual declaration should be used. b) As Fortran does not support variadic calls at all, there should be never variatic calls be generated. (variadic calls are those whose prototype ends in C with ...; when generating the argument list with build_function_type_list the function is always non-variadic (cf. also build_varargs_function_type_list) - if one generates the argument list manually, the last argument should be VOID_TYPE.) * * * subroutine bar (a, n) integer :: n, a(*) end subroutine bar subroutine foo (b, n) integer :: n, b(n) n = 6 call bar (b, 5) b(1:5) = 0 end subroutine foo * * * How to test (thanks to Jakub for the list of options): a) x86_64 (for non floating points): Assembler has xorl %eax, %eax before the call (i.e. the variadic function has no floating-point arguments) b) In a debugger: b var-tracking.c:8357 if insn-code == CALL_INSN (which is if (INSN_P (insn)) in vt_initialize) -- and then: debug_rtx (insn) -- Summary: Wrong call with variadic declaration Product: gcc Version: 4.6.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44471
[Bug bootstrap/44458] Bootstrap fails on arm_float_words_big_endian implicit declaration when Ada on arm-linux
-- steven at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |steven at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-06-08 21:51:28 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44458
[Bug bootstrap/44335] [4.6 regression] gcc-4.6-20100529 java bootstrap failure on arm-linux-gnueabi
-- steven at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |steven at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-06-08 21:51:43 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44335
[Bug bootstrap/44470] [4.6 Regression] Failed to bootstrap with - -with-arch=atom
--- Comment #1 from hjl dot tools at gmail dot com 2010-06-08 22:00 --- It may be broken by revision 160394: http://gcc.gnu.org/ml/gcc-cvs/2010-06/msg00307.html -- hjl dot tools at gmail dot com changed: What|Removed |Added URL||uros Summary|[4.6 Regression] Failed to |[4.6 Regression] Failed to |bootstrap with - -with- |bootstrap with - -with- |arch=atom |arch=atom http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44470
[Bug bootstrap/44432] [boot with C++] configure does not check presence of host C++ compiler
--- Comment #1 from amylaar at gcc dot gnu dot org 2010-06-08 22:50 --- A patch is here: http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00835.html -- amylaar at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords||patch Last reconfirmed|-00-00 00:00:00 |2010-06-08 22:50:20 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44432
[Bug bootstrap/44433] [meta-bug] --enable-build-with-cxx issues
--- Comment #1 from amylaar at gcc dot gnu dot org 2010-06-08 23:15 --- I think PR44362 no longer block adoption of --enable-build-with-cxx in trunk, since the C++ part of the patch for that PR was checked in. It might sense to keep it in the dependency list if we need this to backport the fixes into a branch, though. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44433
[Bug plugins/44459] plugin interface depends on name mangling
--- Comment #7 from amylaar at gcc dot gnu dot org 2010-06-08 23:21 --- Subject: Bug 44459 Author: amylaar Date: Tue Jun 8 23:21:48 2010 New Revision: 160448 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=160448 Log: PR plugins/44459: * gcc-plugin.h: Encapsulate all declarations in extern C. Modified: trunk/gcc/ChangeLog trunk/gcc/gcc-plugin.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44459
[Bug target/44067] internal compiler error: in rs6000_split_multireg_move, at config/rs6000/rs6000.c:16713
--- Comment #9 from amodra at gcc dot gnu dot org 2010-06-09 00:16 --- Subject: Bug 44067 Author: amodra Date: Wed Jun 9 00:15:46 2010 New Revision: 160449 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=160449 Log: PR target/44067 * config/rs6000/rs6000.md (DIFD): Do not split dpfp values for e500v2 target. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44067
[Bug target/44067] internal compiler error: in rs6000_split_multireg_move, at config/rs6000/rs6000.c:16713
--- Comment #10 from amodra at gcc dot gnu dot org 2010-06-09 00:20 --- Subject: Bug 44067 Author: amodra Date: Wed Jun 9 00:20:27 2010 New Revision: 160454 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=160454 Log: PR target/44067 * config/rs6000/rs6000.md (DIFD): Do not split dpfp values for e500v2 target. Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/config/rs6000/rs6000.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44067
[Bug target/44067] internal compiler error: in rs6000_split_multireg_move, at config/rs6000/rs6000.c:16713
--- Comment #11 from amodra at gmail dot com 2010-06-09 00:29 --- Fixed -- amodra at gmail dot com changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.5.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44067
[Bug bootstrap/44470] [4.6 Regression] Failed to bootstrap with - -with-arch=atom
--- Comment #2 from hjl dot tools at gmail dot com 2010-06-09 00:52 --- (In reply to comment #1) It may be broken by revision 160394: http://gcc.gnu.org/ml/gcc-cvs/2010-06/msg00307.html This change moved (insn:TI 11 41 12 pr44470.i:15 (parallel [ (set (reg:SI 1 dx [orig:61 w$s$high ] [61]) (plus:SI (reg:SI 2 cx [69]) (reg:SI 1 dx [orig:75 uu+4 ] [75]))) (clobber (reg:CC 17 flags)) ]) 251 {*addsi_1} (expr_list:REG_DEAD (reg:SI 2 cx [69]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil (insn 12 11 23 pr44470.i:15 (parallel [ (set (reg:SI 1 dx [orig:61 w$s$high ] [61]) (neg:SI (reg:SI 1 dx [orig:61 w$s$high ] [61]))) (clobber (reg:CC 17 flags)) ]) 442 {*negsi2_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) into epilogue. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44470
[Bug bootstrap/44470] [4.6 Regression] Failed to bootstrap with - -with-arch=atom
--- Comment #3 from hjl dot tools at gmail dot com 2010-06-09 00:59 --- The old scheduler: ;; == ;; -- basic block 2 from 37 to 42 -- after reload ;; == ;;0--37 [--sp]=bp :atom-dual-2c ;;1--44 {cx=0;clobber flags;} :atom-simple-either ;;2--38 bp=sp :atom-simple-either ;;6--26 ax=[bp+0x8] :atom-simple-either ;;6--27 dx=[bp+0xc] :atom-simple-either ;;7--45 flags=cmp(ax,0) :atom-simple-either ;;8--46 strict_low_part=flags!=0 :atom-simple-either ;;8--13 {ax=-ax;clobber flags;} :atom-simple-either ;;9--11 {dx=cx+dx;clobber flags;} :atom-simple-either ;; 10--12 {dx=-dx;clobber flags;} :atom-simple-either ;; 10--23 use ax:nothing ;; 11--41 {bp=[sp];sp=sp+0x4;} :atom-dual-2c ;; 12--42 return:atom-dual-1c ;; Ready list (final): ;; total time = 12 ;; new head = 37 ;; new tail = 42 The new one: ;; == ;; -- basic block 2 from 37 to 42 -- after reload ;; == ;;0--37 [--sp]=bp :atom-dual-2c ;;1--44 {cx=0;clobber flags;} :atom-simple-either ;;2--38 bp=sp :atom-simple-either ;;6--26 ax=[bp+0x8] :atom-simple-either ;;6--27 dx=[bp+0xc] :atom-simple-either ;;7--45 flags=cmp(ax,0) :atom-simple-either ;;8--46 strict_low_part=flags!=0 :atom-simple-either ;;8--13 {ax=-ax;clobber flags;} :atom-simple-either ;;9--41 {bp=[sp];sp=sp+0x4;} :atom-dual-2c ;; 12--11 {dx=cx+dx;clobber flags;} :atom-simple-either ;; 12--12 {dx=-dx;clobber flags;} :atom-simple-either ;; 13--23 use ax:nothing ;; 13--42 return:atom-dual-1c ;; Ready list (final): ;; total time = 13 ;; new head = 37 ;; new tail = 42 It is slower. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44470
[Bug target/43876] [avr] Improper updating of struct members when written out of order from struct definition
--- Comment #3 from eric dot weddington at atmel dot com 2010-06-09 02:13 --- Confirmed. Testing fix... -- eric dot weddington at atmel dot com changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |eric dot weddington at atmel |dot org |dot com Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-06-09 02:13:23 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43876
[Bug c/44472] New: __builtin_ia32_pcmpestri128 generates an additional pcmpestrm operation
Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --prefix=/home/jeff/gnu/TR --program-suffix=TR --enable-languages=c,c++ Thread model: posix gcc version 4.6.0 20100608 (experimental) (GCC) While running some tests against SSE4.2 instructions, I noticed that the __builtin_ia32_pcmpestri128 method generates the correct pcmpestri call followed immediately by an extraneous pcmpestrm call. The second call goes away when compiled with any optimization level. A very simple test program requiring no pre-processing: BEGIN SAMPLE: sseTest2.c typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); typedef char __v16qi __attribute__ ((__vector_size__ (16))); int main() { __v16qi c = (__v16qi){ 'K' }; __v16qi str1 = (__v16qi){'A','B','C','D','E','F','G','H','I','J','K','L','M'}; int v = __builtin_ia32_pcmpestri128(c, 1, str1, 13, 0); return v; } END SAMPLE Building with: ~/gnu/TR/bin/gccTR -S -msse4.2 sseTest2.c -o sseTest2.nonoptimized.s shows the extra opcode: movdqa .LC0(%rip), %xmm0 movdqa %xmm0, -32(%rbp) movdqa .LC1(%rip), %xmm0 movdqa %xmm0, -48(%rbp) movdqa -48(%rbp), %xmm1 movdqa -32(%rbp), %xmm0 movl$1, %eax movl$13, %edx pcmpestri $0, %xmm1, %xmm0 pcmpestrm $0, %xmm1, %xmm0 movl%ecx, -4(%rbp) movl-4(%rbp), %eax leave Building with: ~/gnu/TR/bin/gccTR -S -O -msse4.2 sseTest2.c -o sseTest2.optimized.s shows no extra opcode: movdqa .LC0(%rip), %xmm0 movl$1, %eax movl$13, %edx pcmpestri $0, .LC1(%rip), %xmm0 movl%ecx, %eax ret -- Summary: __builtin_ia32_pcmpestri128 generates an additional pcmpestrm operation Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jeff_wegher at yahoo dot com GCC build triplet: 4.6.0 GCC host triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44472
[Bug c/44472] __builtin_ia32_pcmpestri128 generates an additional pcmpestrm operation
--- Comment #1 from jeff_wegher at yahoo dot com 2010-06-09 02:38 --- Created an attachment (id=20870) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20870action=view) Example program -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44472
[Bug other/44034] target hooks are hard to maintain
--- Comment #5 from amylaar at gcc dot gnu dot org 2010-06-09 03:14 --- (In reply to comment #4) updated patch for revision 160454: http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00846.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44034
[Bug c++/44473] New: iterators already defined for std::vector when using std::decimal
If checking empty then attempting to push back the following errors are reported: main.s: Assembler messages: main.s:2236: Error: symbol `_ZNK9__gnu_cxx17__normal_iteratorIPDfSt6vectorIDfSaIDfEEE4baseEv' is already defined main.s:2542: Error: symbol `_ZN9__gnu_cxx17__normal_iteratorIPDfSt6vectorIDfSaIDfEEEC2ERKS1_' is already defined Preprocessed file: http://dl.dropbox.com/u/2280/main.ii Example code: #include decimal/decimal #include vector int main() { std::vectorstd::decimal::decimal32 vec; if (vec.empty()) { vec.push_back(std::decimal::decimal32(0)); } return 0; } -- Summary: iterators already defined for std::vector when using std::decimal Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rmlong at gmail dot com GCC build triplet: --with-gmp=/devsandbox/cxp/ext/compiler/gmp/ --with- mpc=/devsand GCC host triplet: RHEL5.5 GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44473
[Bug c++/44473] iterators already defined for std::vector when using std::decimal
--- Comment #1 from rmlong at gmail dot com 2010-06-09 03:15 --- Created an attachment (id=20871) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20871action=view) Preprocessed file -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44473
[Bug c++/44473] iterators already defined for std::vector when using std::decimal
--- Comment #2 from rmlong at gmail dot com 2010-06-09 03:17 --- Created an attachment (id=20872) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20872action=view) Example code -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44473
[Bug c/44472] __builtin_ia32_pcmpestri128 generates an additional pcmpestrm operation
--- Comment #2 from hjl dot tools at gmail dot com 2010-06-09 03:26 --- (In reply to comment #0) While running some tests against SSE4.2 instructions, I noticed that the __builtin_ia32_pcmpestri128 method generates the correct pcmpestri call followed immediately by an extraneous pcmpestrm call. The second call goes away when compiled with any optimization level. -O0 generates unoptimized code. In your testcase, gcc also generates movdqa .LC0(%rip), %xmm0 movdqa %xmm0, -32(%rbp) movdqa .LC1(%rip), %xmm0 movdqa %xmm0, -48(%rbp) movdqa -48(%rbp), %xmm1 movdqa -32(%rbp), %xmm0 Those aren't necessary either. -- hjl dot tools at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||WORKSFORME http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44472
[Bug c/44474] New: GCC inserts redundant test instruction due to incorrect clobber
Take the following test case: int foo(); int test( int *b ) { (*b)--; if( *b == 0 ) return foo(); return 0; } On x86_64, with -fomit-frame-pointer -O3 -c, gcc 4.6 compiles this to: 0: 8b 07 moveax, [rdi] 2: 83 e8 01subeax, 0x1 5: 85 c0 test eax, eax 7: 89 07 mov[rdi], eax 9: 74 05 je 10 test+0x10 b: 31 c0 xoreax, eax d: c3 ret 10:e9 00 00 00 00 jmp15 test+0x15 //foo As can be seen, gcc inserts a redundant test instruction. This problem is present in all versions of gcc I tested (3.4, 4.3.4, 4.4.1, and 4.6 SVN r160330). According to Alexander Strange on IRC: astrange the problem is that subl $1, %eax does (clobber (reg:CC 17 flags)) instead of (set (reg:CCZ 17 flags) (compare:CCZ astrange which i don't think is fixable in a real way, but i didn't write it -- Summary: GCC inserts redundant test instruction due to incorrect clobber Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: darkshikari at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44474
[Bug rtl-optimization/44013] [4.5 Regression] VTA produces wrong code
--- Comment #12 from aoliva at gcc dot gnu dot org 2010-06-09 04:54 --- Fixed -- aoliva at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44013
[Bug debug/41371] [4.5/4.6 Regression] var-tracking is slow and memory hungry
--- Comment #40 from aoliva at gcc dot gnu dot org 2010-06-09 04:56 --- Fixed -- aoliva at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41371
[Bug c/44472] __builtin_ia32_pcmpestri128 generates an additional pcmpestrm operation
--- Comment #3 from jeff_wegher at yahoo dot com 2010-06-09 05:03 --- Sure, non-optimized code generates a lot of instructions that aren't strictly needed. This one seemed a little beyond that to me. Just so I understand then... By design, __builtin*_pcmpestri and __builtin*_pcmpestrm both generate the same pair of opcodes to calculate both the index and the mask and then allow the optimizer to remove the value that isn't used? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44472