[Bug rtl-optimization/79405] [9/10/11/12 Regression] Infinite loop in fwprop
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79405 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|WAITING CC||rsandifo at gcc dot gnu.org --- Comment #17 from Steven Bosscher --- https://gcc.gnu.org/pipermail/gcc-patches/2020-November/558946.html: "Also, the old version didn't naturally guarantee termination (PR79405), whereas the new one does." So, I'm guessing the RTL SSA fwprop fixed this?
[Bug other/12955] Incorrect rounding of soft float denorm mul/div
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=12955 --- Comment #15 from Steven Bosscher --- > cc-ing Geoffrey Keating from that thread Eric, can you please stop adding people from the past to CC lists? I'm sure you mean well, but it's not always appreciated. Geoff hasn't been involved in GCC work for almost a decade.
[Bug fortran/89603] unclassifiable statement error in code that is ok in compaq visual fortran
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89603 Steven Bosscher changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||steven at gcc dot gnu.org Resolution|--- |INVALID --- Comment #1 from Steven Bosscher --- Your code is not standard-conforming. Do this: cm(1)%mu=2.8d-2 cm(1)%inc=7.5527d-1 and you have standard-conforming Fortran.
[Bug middle-end/42972] Very bad bit field code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42972 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2012-03-18 12:45:53 |2019-3-6 --- Comment #7 from Steven Bosscher --- GCC 8.2 (still -march=armv5te -O3): .arch armv5te .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 2 .eabi_attribute 34, 0 .eabi_attribute 18, 4 .file "example.c" .text .align 2 .global func .syntax unified .arm .fpu softvfp .type func, %function func: mov ip, #0 .L9: ldrbr3, [r0]@ zero_extendqisi2 add ip, ip, #1 tst r3, #1 beq .L16 str lr, [sp, #-4]! .L10: ldr r3, [r0] add lr, r2, r3, lsr #1 and r3, r3, #1 orr r3, r3, lr, lsl #1 str r3, [r0] .L2: cmp ip, r1 add r0, r0, #4 ldrge pc, [sp], #4 ldrbr3, [r0]@ zero_extendqisi2 add ip, ip, #1 tst r3, #1 beq .L2 b .L10 .L16: cmp ip, r1 add r0, r0, #4 blt .L9 bx lr .size func, .-func .ident "GCC: (GNU) 8.2.0" .section.note.GNU-stack,"",%progbits
[Bug target/24647] two copies of a constant in two different registers
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24647 Steven Bosscher changed: What|Removed |Added Status|NEW |RESOLVED CC||steven at gcc dot gnu.org Resolution|--- |WORKSFORME --- Comment #3 from Steven Bosscher --- Trunk today: f(): movlf()::i, %eax testl %eax, %eax jne .L1 # or je for the != case movl$2, f()::i movl$2, %eax .L1: ret
[Bug other/16996] [meta-bug] code size improvements
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16996 Bug 16996 depends on bug 24647, which changed state. Bug 24647 Summary: two copies of a constant in two different registers https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24647 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WORKSFORME
[Bug tree-optimization/14721] jump optimization involving a sibling call within a jump table
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14721 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2006-03-05 03:52:08 |2019-3-6 CC||marxin at gcc dot gnu.org Component|rtl-optimization|tree-optimization Build|pessimizes-code | --- Comment #3 from Steven Bosscher --- Maybe something for tree-switch-conversion?
[Bug rtl-optimization/9723] With -Os optimization increases size if the loop contains array element access
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=9723 Steven Bosscher changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WORKSFORME --- Comment #5 from Steven Bosscher --- For arm and ppc, trunk today at -Os produces smaller code than -O1 and -O2.
[Bug other/16996] [meta-bug] code size improvements
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16996 Bug 16996 depends on bug 9723, which changed state. Bug 9723 Summary: With -Os optimization increases size if the loop contains array element access https://gcc.gnu.org/bugzilla/show_bug.cgi?id=9723 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WORKSFORME
[Bug libgcc/56187] void arithmetic in unwind-dw2-fde.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56187 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WONTFIX
[Bug middle-end/67118] gcc and gfortran started crashing recently
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67118 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #2 from Steven Bosscher --- Not clear what's been going on, some years ago => closing
[Bug tree-optimization/56075] [gcc-4.7.1] 64-bit version, -Os eliminate some line of code which working fine in gcc-4.6.2 64-bit version
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56075 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #3 from Steven Bosscher --- no test case => invalid
[Bug lto/52778] gcc crashes with -flto on PA-RISC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52778 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME --- Comment #6 from Steven Bosscher --- Reportedly fixed (comment #5)
[Bug middle-end/43334] Generate an XML dump of the parse tree
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43334 Steven Bosscher changed: What|Removed |Added Status|WAITING |NEW Last reconfirmed|2012-03-13 00:00:00 |2019-3-5
[Bug bootstrap/49469] GCC fails to bootstrap when building with embedded zlib on Mac OS X 10.6.7
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49469 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WONTFIX --- Comment #7 from Steven Bosscher --- Old MacOS, won't fix.
[Bug rtl-optimization/43473] hword size destination variable induces suboptimal code generation compared to full word size var
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43473 Steven Bosscher changed: What|Removed |Added Status|WAITING |NEW Last reconfirmed||2019-3-5 Known to fail||8.2.0
[Bug middle-end/36003] pass_fast_rtl_byte_dce is disabled currently because of breakage in CC0 targets
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36003 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WONTFIX --- Comment #7 from Steven Bosscher --- rtl_byte_dce is gone. It was rewritten as run_word_dce called from lower-subreg, as part of the (apparently partial) fix for PR42575.
[Bug rtl-optimization/20369] noce_emit_move_insn emits invalid insns
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20369 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2007-05-17 17:50:53 |2019-3-5 --- Comment #4 from Steven Bosscher --- The patch of comment #2 doesn't apply since r100240 (fix for PR9814). But comment #4 is still true. Even without a test case, this bug could be fixed by asserting that the generated seq is recognized.
[Bug other/17652] [meta-bug] GCC 4.1 pending patches
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=17652 Bug 17652 depends on bug 20211, which changed state. Bug 20211 Summary: autoincrement generation is poor https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20211 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WONTFIX
[Bug other/23111] [meta-bug] GCC 4.2 pending patches
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23111 Bug 23111 depends on bug 20211, which changed state. Bug 20211 Summary: autoincrement generation is poor https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20211 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WONTFIX
[Bug other/29842] [meta-bug] outstanding patches / issues from STMicroelectronics
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29842 Bug 29842 depends on bug 20211, which changed state. Bug 20211 Summary: autoincrement generation is poor https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20211 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WONTFIX
[Bug rtl-optimization/20211] autoincrement generation is poor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20211 Steven Bosscher changed: What|Removed |Added Status|NEW |RESOLVED CC|steven at gcc dot gnu.org | Resolution|--- |WONTFIX --- Comment #41 from Steven Bosscher --- After 12 years of changes, the value of the patches in this bug report, and indeed the bug report itself, is difficult to gauge. If this is still an issue, and that issue isn't covered by one of the more specific auto-inc-dec issues, please open a new PR with a test case and with the expected code. For now, wontfix.
[Bug tree-optimization/29944] should do more loops transformations to enable more biv widening
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29944 Steven Bosscher changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2019-03-05 Ever confirmed|0 |1
[Bug rtl-optimization/29860] comment / code incosistency in cfgcleanup.c:flow_find_cross_jump
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29860 Steven Bosscher changed: What|Removed |Added Keywords||missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed||2019-03-05 Ever confirmed|0 |1
[Bug c/28306] const / pure call with ignored argument emitted.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28306 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2006-07-07 17:30:13 |2019-3-5 Host|i686-pc-linux-gnu | --- Comment #4 from Steven Bosscher --- GCC trunk today on x86-64 produces: gen_x86_64_shrd(int): xorl%eax, %eax ret ok(int): movl$1, %eax ret ix86_split_ashr(int): testl %edi, %edi movl$ok(int), %eax movl$gen_x86_64_shrd(int), %edx cmove %rdx, %rax xorl%edi, %edi jmp *%rax FWIW clang trunk also does not optimize this, yielding: ix86_split_ashr(int): # @ix86_split_ashr(int) testl %edi, %edi movl$gen_x86_64_shrd(int), %eax movl$ok(int), %ecx cmoveq %rax, %rcx xorl%edi, %edi jmpq*%rcx # TAILCALL ok(int):# @ok(int) movl$1, %eax retq gen_x86_64_shrd(int): # @gen_x86_64_shrd(int) xorl%eax, %eax retq ICC 19.0.1 _does_ optimize, resulting in: ix86_split_ashr(int): ret #24.1 _INTERNALf242c0c5::gen_x86_64_shrd(int): xorl %eax, %eax#6.10 ret #6.10 _INTERNALf242c0c5::ok(int): movl $1, %eax #12.10 ret #12.10
[Bug tree-optimization/28144] floating point constant -> byte/char/short conversion is wrong for java
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28144 Steven Bosscher changed: What|Removed |Added Status|REOPENED|WAITING Last reconfirmed|2016-03-08 00:00:00 |2019-3-5 CC|aph at redhat dot com, |rguenth at gcc dot gnu.org |olegendo at gcc dot gnu.org, | |per at bothner dot com,| |tromey at redhat dot com | --- Comment #8 from Steven Bosscher --- This bug affected Java, which is not part of GCC anymore since GCC 7. (And apparently this was so insignificant that it didn't even make it to the news page!). But fold_convert_const_int_from_real() still has the behavior that is alledgedly incorrect. Leaving it to release manager to decide what to do with the patches and with this bug report in general.
[Bug middle-end/27906] reload allocates register of live register variable to earlyclobber output
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27906 Steven Bosscher changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #3 from Steven Bosscher --- Reportedly fixed (comment #2).
[Bug other/29842] [meta-bug] outstanding patches / issues from STMicroelectronics
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29842 Bug 29842 depends on bug 27906, which changed state. Bug 27906 Summary: reload allocates register of live register variable to earlyclobber output https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27906 What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED
[Bug middle-end/48486] cfgexpand leaves BARRIERs at the end of basic blocks
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48486 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |WORKSFORME --- Comment #3 from Steven Bosscher --- Can't reproduce with trunk.
[Bug rtl-optimization/48389] [4.6 Regression] ICE: in make_edges, at cfgbuild.c:319 with -mtune=pentiumpro
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48389 Bug 48389 depends on bug 48486, which changed state. Bug 48486 Summary: cfgexpand leaves BARRIERs at the end of basic blocks https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48486 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |WORKSFORME
[Bug rtl-optimization/38711] ira should not be using df-lr except at -O1.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38711 Steven Bosscher changed: What|Removed |Added Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #11 from Steven Bosscher --- Not working on this => unassigned...
[Bug fortran/37826] gfortran emits incorrect debug information if compiled with -finit-local-zero
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37826 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |WONTFIX --- Comment #7 from Steven Bosscher --- Enhancement for old debug info format, old compiler, etc. => wontfix.
[Bug fortran/24546] [meta-bug] gfortran debugging problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24546 Bug 24546 depends on bug 37826, which changed state. Bug 37826 Summary: gfortran emits incorrect debug information if compiled with -finit-local-zero https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37826 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |WONTFIX
[Bug middle-end/39326] Segmentation fault with -O1, out of memory with -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39326 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|NEW CC|steven at gcc dot gnu.org | Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #58 from Steven Bosscher --- Not working on this => unassigned...
[Bug c++/55402] Compiling large initializer lists never finishes
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55402 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|NEW Last reconfirmed|2012-11-20 00:00:00 |2019-3-5 Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #16 from Steven Bosscher --- Reconfirmed with trunk 20190303. But I won't be working on this any time soon => unassigning...
[Bug target/40730] redundant memory load
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40730 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|NEW Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #13 from Steven Bosscher --- Not working on this...
[Bug middle-end/52285] [7/8/9 Regression] libgcrypt _gcry_burn_stack slowdown
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52285 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|NEW Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #23 from Steven Bosscher --- Won't be working on this any time soon...
[Bug target/68211] Free __m128d subreg of double
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68211 Steven Bosscher changed: What|Removed |Added Status|REOPENED|NEW Last reconfirmed|2016-04-19 00:00:00 |2019-3-4 --- Comment #7 from Steven Bosscher --- "g++ (Compiler-Explorer-Build) 9.0.1 20190303 (experimental)": #include double sqrt_up(double x){ __m128d y = { x, 0 }; return _mm_cvtsd_f64(_mm_sqrt_round_sd(y, y, _MM_FROUND_TO_POS_INF|_MM_FROUND_NO_EXC)); } double f(double x) { return __builtin_sqrt(x); } sqrt_up(double): vmovq %xmm0, %xmm0 vsqrtsd {ru-sae}, %xmm0, %xmm0, %xmm0 ret f(double): vsqrtsd %xmm0, %xmm0, %xmm0 ret
[Bug tree-optimization/17217] not removing removal of nested structs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=17217 Steven Bosscher changed: What|Removed |Added Status|REOPENED|WAITING --- Comment #6 from Steven Bosscher --- What code is expected in this really old bug? Trunk x86-64 today: int h(int *a); struct G { int t; int t1; }; static int g1(struct G*); int f1(int i, int j) { struct G nestedf1={i,j}; return g1()+nestedf1.t1; } __attribute__((noinline)) static int g1(struct G *nestedf1) { return h(>t)+ nestedf1->t1; } g1(G*): pushq %rbx movq%rdi, %rbx callh(int*) addl4(%rbx), %eax popq%rbx ret f1(int, int): subq$24, %rsp movl%edi, 8(%rsp) leaq8(%rsp), %rdi movl%esi, 12(%rsp) callg1(G*) addl12(%rsp), %eax addq$24, %rsp ret
[Bug target/40072] Nonoptimal code - CMOVxx %eax,%edi; mov %edi,%eax; retq
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40072 Steven Bosscher changed: What|Removed |Added Status|REOPENED|NEW Last reconfirmed|2009-05-08 16:08:31 |2019-3-4 CC|steven at gcc dot gnu.org | Known to fail||8.2.0
[Bug target/86011] Inefficient code generated for ldivmod with constant value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86011 Steven Bosscher changed: What|Removed |Added Status|WAITING |NEW
[Bug tree-optimization/83352] Missed optimization in math expression: sqrt(sqrt(a)) == pow(a, 1/4)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83352 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WONTFIX --- Comment #4 from Steven Bosscher --- More than 1 year no explanation for how "pow(a, 1/4)" can be compiled to faster code than "sqrt(sqrt(a))" => WONTFIX.
[Bug tree-optimization/65964] [meta] Operand Shortening
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65964 Bug 65964 depends on bug 14844, which changed state. Bug 14844 Summary: [tree-ssa] narrow types if wide result is not needed for unsigned types or when wrapping is true https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14844 What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME
[Bug middle-end/19986] [meta-bug] fold missing optimizations (compared to RTL)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19986 Bug 19986 depends on bug 14844, which changed state. Bug 14844 Summary: [tree-ssa] narrow types if wide result is not needed for unsigned types or when wrapping is true https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14844 What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME
[Bug tree-optimization/14844] [tree-ssa] narrow types if wide result is not needed for unsigned types or when wrapping is true
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14844 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME
[Bug middle-end/78824] multiple add should in my opinion be optimized to multiplication
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78824 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME
[Bug tree-optimization/14455] Structs that cannot alias are not SRA'd
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14455 Steven Bosscher changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |WORKSFORME
[Bug tree-optimization/21982] GCC should combine adjacent stdio calls
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21982 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|WAITING Last reconfirmed|2006-02-05 21:14:21 |2019-3-4 --- Comment #38 from Steven Bosscher --- What happened with Diego's patch? (https://gcc.gnu.org/ml/gcc-patches/2005-06/msg00909.html)
[Bug tree-optimization/63864] Missed late memory CSE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63864 --- Comment #4 from Steven Bosscher --- Code looks pretty much the same for "test_ok" and "test_slow" since GCC 6 for x86-64, and since GCC 7 for i686. GCC 6.3 x86-64: test_ok(float (*) [3], float, float, float, float, float): mulss %xmm3, %xmm0 movss 4(%rdi), %xmm6 mulss %xmm3, %xmm1 mulss %xmm3, %xmm2 movss 12(%rdi), %xmm3 movaps %xmm0, %xmm5 addss %xmm4, %xmm1 movss (%rdi), %xmm0 addss %xmm4, %xmm5 addss %xmm4, %xmm2 mulss %xmm1, %xmm3 mulss %xmm5, %xmm0 mulss %xmm5, %xmm6 mulss 8(%rdi), %xmm5 addss %xmm3, %xmm0 movss 24(%rdi), %xmm3 mulss %xmm2, %xmm3 addss %xmm3, %xmm0 movss 16(%rdi), %xmm3 mulss %xmm1, %xmm3 mulss 20(%rdi), %xmm1 addss %xmm3, %xmm6 movss 28(%rdi), %xmm3 mulss %xmm2, %xmm3 mulss 32(%rdi), %xmm2 addss %xmm1, %xmm5 addss %xmm3, %xmm6 addss %xmm2, %xmm5 addss %xmm6, %xmm0 addss %xmm5, %xmm0 ret test_slow(mat3&, float, float, float, float, float): mulss %xmm3, %xmm0 mulss %xmm3, %xmm1 mulss %xmm2, %xmm3 movss 16(%rdi), %xmm2 movaps %xmm0, %xmm6 addss %xmm4, %xmm1 movss 4(%rdi), %xmm0 addss %xmm4, %xmm6 addss %xmm3, %xmm4 movss (%rdi), %xmm3 mulss %xmm1, %xmm2 mulss %xmm6, %xmm0 mulss %xmm6, %xmm3 mulss 8(%rdi), %xmm6 addss %xmm2, %xmm0 movss 28(%rdi), %xmm2 mulss %xmm4, %xmm2 addss %xmm2, %xmm0 movss 12(%rdi), %xmm2 mulss %xmm1, %xmm2 mulss 20(%rdi), %xmm1 addss %xmm2, %xmm3 movss 24(%rdi), %xmm2 mulss %xmm4, %xmm2 mulss 32(%rdi), %xmm4 addss %xmm6, %xmm1 addss %xmm2, %xmm3 addss %xmm4, %xmm1 addss %xmm3, %xmm0 addss %xmm1, %xmm0 ret GCC 7.4 i686: test_ok(float (*) [3], float, float, float, float, float): flds20(%esp) flds8(%esp) fmul%st(1), %st movl4(%esp), %eax fadds 24(%esp) flds12(%esp) fmul%st(2), %st fadds 24(%esp) fxch%st(2) fmuls 16(%esp) fadds 24(%esp) flds(%eax) fmul%st(2), %st flds12(%eax) fmul%st(4), %st faddp %st, %st(1) flds24(%eax) fmul%st(2), %st faddp %st, %st(1) flds4(%eax) fmul%st(3), %st flds16(%eax) fmul%st(5), %st faddp %st, %st(1) flds28(%eax) fmul%st(3), %st faddp %st, %st(1) faddp %st, %st(1) fxch%st(2) fmuls 8(%eax) fxch%st(3) fmuls 20(%eax) faddp %st, %st(3) fmuls 32(%eax) faddp %st, %st(2) faddp %st, %st(1) ret test_slow(mat3&, float, float, float, float, float): flds20(%esp) flds8(%esp) fmul%st(1), %st movl4(%esp), %eax fadds 24(%esp) flds12(%esp) fmul%st(2), %st fadds 24(%esp) fxch%st(2) fmuls 16(%esp) fadds 24(%esp) flds4(%eax) fmul%st(2), %st flds16(%eax) fmul%st(4), %st faddp %st, %st(1) flds28(%eax) fmul%st(2), %st faddp %st, %st(1) flds(%eax) fmul%st(3), %st flds12(%eax) fmul%st(5), %st faddp %st, %st(1) flds24(%eax) fmul%st(3), %st faddp %st, %st(1) faddp %st, %st(1) fxch%st(2) fmuls 8(%eax) fxch%st(3) fmuls 20(%eax) faddp %st, %st(3) fmuls 32(%eax) faddp %st, %st(2) faddp %st, %st(1) ret
[Bug tree-optimization/15241] [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15241 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #4 from Steven Bosscher --- Fixed since GCC 8
[Bug middle-end/19987] [meta-bug] fold missing optimizations in general
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19987 Bug 19987 depends on bug 15241, which changed state. Bug 15241 Summary: [tree-ssa] Convert a <= 7 && b <= 7 into (a | b) <= 7. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15241 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug tree-optimization/45144] SRA optimization issue of bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45144 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|RESOLVED CC||steven at gcc dot gnu.org Resolution|--- |FIXED --- Comment #6 from Steven Bosscher --- With/without -fno-tree-sra gives same code since GCC 5.4.1.
[Bug rtl-optimization/14504] Missed Bit Twiddling Optimization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14504 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2009-04-22 23:02:33 |2019-3-4 --- Comment #9 from Steven Bosscher --- // -O3 -m32 -fomit-frame-pointer unsigned long cond_mask_1(bool flag, unsigned long mask, unsigned long target) { return flag ? target | mask : target & ~mask; } unsigned long cond_mask_2(bool flag, unsigned long mask, unsigned long target) { return (mask | target ^ 0xUL + flag) ^ 0xUL + flag; } GCC trunk: cond_mask_1(bool, unsigned long, unsigned long): movl12(%esp), %eax movl8(%esp), %edx movl%eax, %ecx orl %edx, %ecx notl%edx andl%eax, %edx cmpb$0, 4(%esp) movl%ecx, %eax cmove %edx, %eax ret cond_mask_2(bool, unsigned long, unsigned long): movzbl 4(%esp), %eax leal-1(%eax), %edx movl12(%esp), %eax xorl%edx, %eax orl 8(%esp), %eax xorl%edx, %eax ret
[Bug target/44532] x86-64 unnecessary parameter extension
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44532 Steven Bosscher changed: What|Removed |Added Status|NEW |RESOLVED Last reconfirmed|2010-06-14 11:30:39 |2019-3-4 CC||steven at gcc dot gnu.org Resolution|--- |WONTFIX --- Comment #4 from Steven Bosscher --- GCC trunk today:" f1(short, int): movswl %di, %eax imull %esi, %eax ret f2(unsigned short, int): movzwl %di, %eax imull %esi, %eax ret clang trunk: f1(short, int):# @f1(short, int) movl%edi, %eax imull %esi, %eax retq f2(unsigned short, int):# @f2(unsigned short, int) movl%edi, %eax imull %esi, %eax retq icc 19.0.1: f1(short, int): movswq%di, %rax #3.12 imull %esi, %eax#3.16 ret #3.16 f2(unsigned short, int): movzwl%di, %eax #7.1 imull %esi, %eax#8.16 ret Given the comments from H.J. and the icc output, let's WONTFIX this one.
[Bug testsuite/19095] testsuite/gcc.dg/vect/vect.exp is not precise enough on x86
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19095 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2006-03-05 03:54:36 |2019-3-4 --- Comment #7 from Steven Bosscher --- Still an issue, and add avx to the list now.
[Bug rtl-optimization/45026] struct passed as argument in memory compiles to dead stores
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45026 Steven Bosscher changed: What|Removed |Added Target|ia64-unknown-linux-gnu | Last reconfirmed|2011-02-25 23:15:12 |2019-3-4 Component|target |rtl-optimization Summary|Empty function compiles to |struct passed as argument |many loads and stores |in memory compiles to dead ||stores --- Comment #2 from Steven Bosscher --- Still an issue on ia64, but actually a generic issue (per comment #1).
[Bug tree-optimization/55629] Missed value numbering to a constant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55629 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2012-12-09 00:00:00 |2019-3-4 --- Comment #2 from Steven Bosscher --- Trunk today with -O2: foo(int): cmpl$1, %edi sbbl%eax, %eax notl%eax cmpl$1, %edi sbbl%edx, %edx leal6(%rdx,%rax), %eax ret and with -O2: foo(int): movl$5, %eax ret
[Bug middle-end/56770] Partial sums loop optimization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56770 Steven Bosscher changed: What|Removed |Added Status|ASSIGNED|NEW Assignee|steven at gcc dot gnu.org |unassigned at gcc dot gnu.org
[Bug tree-optimization/19792] Missed optimizations due to signedness in the way
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19792 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2016-08-06 00:00:00 |2019-3-4 CC||rguenth at gcc dot gnu.org --- Comment #7 from Steven Bosscher --- Still an issue as of "g++ (Compiler-Explorer-Build) 9.0.1 20190303 (experimental)" on x86-64 at -O2: _Z3fooj: movslq %edi, %rax movl%edi, %edi movzbl size_lookup(%rdi), %edx cmpb%dl, size_lookup(%rax) sete%al movzbl %al, %eax ret _Z3barj: movl$1, %eax ret FWIW "clang version 7.0.0 (tags/RELEASE_700/final 342594)" at -O2: _Z3fooj:# @_Z3fooj movslq %edi, %rax movbsize_lookup(%rax), %cl movl%eax, %edx xorl%eax, %eax cmpbsize_lookup(%rdx), %cl sete%al retq _Z3barj:# @_Z3barj movl$1, %eax retq and "icc (ICC) 19.0.1.144 20181018": _Z3fooj: xorl %eax, %eax#6.36 movslq%edi, %rdi#6.11 movb size_lookup(%rdi), %dl#6.11 movl %edi, %edi#6.36 cmpb size_lookup(%rdi), %dl#6.36 sete %al #6.36 ret #6.36 _Z3barj: movl $1, %eax #13.15 ret
[Bug rtl-optimization/38711] ira should not be using df-lr except at -O1.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38711 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2012-09-13 00:44:58 |2019-3-1 --- Comment #10 from Steven Bosscher --- (In reply to Eric Gallager from comment #9) Not much has changed. There's LRA now, so for targets using LRA things may now work. Worth a try if someone's interested.
[Bug tree-optimization/35362] Splitting up a switch table into smaller ones (where there a huge gaps between the clusters)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35362 Steven Bosscher changed: What|Removed |Added Last reconfirmed|2013-12-24 00:00:00 |2019-3-1 CC||marxin at gcc dot gnu.org Component|rtl-optimization|tree-optimization --- Comment #2 from Steven Bosscher --- Now a gimple optimization opportunity (tree-switch-conversion.c).
[Bug target/38825] missed optimization: register renaming in unrolled loop
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38825 Steven Bosscher changed: What|Removed |Added Keywords||alias Status|UNCONFIRMED |NEW Last reconfirmed||2016-04-29 CC||rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #7 from Steven Bosscher --- Confirmed at the time - and then fallen through the cracks? Richi, alias stuff so maybe something for you to look at again?
[Bug c/66425] (void) cast doesn't suppress __attribute__((warn_unused_result))
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425 Steven Bosscher changed: What|Removed |Added CC||steven at gcc dot gnu.org --- Comment #26 from Steven Bosscher --- Maybe make something like "-Wno-unused-result=[pedantic|nodiscard]", make strict the current semantics of the flag and nodiscard the C++17 semantics (and make that the default)?
[Bug target/65648] [5 Regression] Bad code due to IRA fails to recognize the clobber in parallel
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65648 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED
[Bug ipa/65540] [5 Regression] internal error on s-fatllf.ads at -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65540 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED
[Bug rtl-optimization/63191] [4.8/4.9/5 Regression] 32-bit gcc uses excessive memory during dead store elimination with -fPIC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63191 --- Comment #4 from Steven Bosscher steven at gcc dot gnu.org --- How is one to reproduce this bug with GCC5? I've tried: $ ./xg++ --version xg++ (GCC) 5.0.0 20150407 (experimental) [trunk revision 221906] Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ ./xg++ -B. -S -O2 -m32 -fPIC PR63191.cc -fdump-tree-optimized $ cat PR63191.cc.190t.optimized ;; Function (static initializers for PR63191.cc) (_GLOBAL__sub_I_PR63191.cc, funcdef_no=4, decl_uid=14028, cgraph_uid=4, symbol_order=1500) (executed once) (static initializers for PR63191.cc) () { bb 2: return; } $ So AFAICT GCC5 optimizes the test case of comment #0 to an empty file. I'm sure there's a way to avoid optimizing this to empty, but I'm not quite a C++ guru ;-)
[Bug rtl-optimization/63191] [4.8/4.9/5 Regression] 32-bit gcc uses excessive memory during dead store elimination with -fPIC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63191 --- Comment #6 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to woodfin from comment #5) You could try adding a non-static function that returns an address inside Zs. const Z* getzs() { return Zs[0]; } Yes, that does the trick: PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 25244 stevenb 20 0 5964m 5.8g 30m R 100 9.3 25:03.60 cc1plus (and counting) Now let's see if I can come up with a more reasonable test case...
[Bug rtl-optimization/63191] [4.8/4.9/5 Regression] 32-bit gcc uses excessive memory during dead store elimination with -fPIC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63191 --- Comment #7 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Steven Bosscher from comment #6) Now let's see if I can come up with a more reasonable test case... Like so: - 8 - typedef int X; struct Z { Z(const X* x1, X x2, X x3) : x1_(x1), x2_(x2), x3_(x3) {} const X* x1_; X x2_; X x3_; }; #undef X1 #undef X___10 #undef X__100 #undef X_1000 #undef X1 #define X1(N) \ static const X Xs##N[] = {}; #define X___10(N) \ X1(N##0) X1(N##1) X1(N##2) X1(N##3) X1(N##4) \ X1(N##5) X1(N##6) X1(N##7) X1(N##8) X1(N##9) #define X__100(N) \ X___10(N##0) X___10(N##1) X___10(N##2) X___10(N##3) X___10(N##4) \ X___10(N##5) X___10(N##6) X___10(N##7) X___10(N##8) X___10(N##9) #define X_1000(N) \ X__100(N##0) X__100(N##1) X__100(N##2) X__100(N##3) X__100(N##4) \ X__100(N##5) X__100(N##6) X__100(N##7) X__100(N##8) X__100(N##9) #define X1(N) \ X_1000(N##0) X_1000(N##1) X_1000(N##2) X_1000(N##3) X_1000(N##4) \ X_1000(N##5) X_1000(N##6) X_1000(N##7) X_1000(N##8) X_1000(N##9) X1(0) #undef Z1 #undef Z___10 #undef Z__100 #undef Z_1000 #undef Z1 #define Z1(N,I,J) \ Z(Xs##N,1,1), #define Z___10(N) \ Z1(N##0,1,1) Z1(N##0,1,1) \ Z1(N##0,1,1) Z1(N##1,2,1) \ Z1(N##0,1,1) Z1(N##2,1,2) \ Z1(N##0,1,1) Z1(N##3,6,3) \ Z1(N##0,1,1) Z1(N##4,7,2) \ Z1(N##0,1,1) Z1(N##5,1,3) \ Z1(N##0,1,1) Z1(N##6,5,9) \ Z1(N##0,1,1) Z1(N##7,7,1) \ Z1(N##0,1,1) Z1(N##8,3,3) \ Z1(N##0,1,1) Z1(N##9,2,2) #define Z__100(N) \ Z___10(N##0) Z___10(N##1) Z___10(N##2) Z___10(N##3) Z___10(N##4) \ Z___10(N##5) Z___10(N##6) Z___10(N##7) Z___10(N##8) Z___10(N##9) #define Z_1000(N) \ Z__100(N##0) Z__100(N##1) Z__100(N##2) Z__100(N##3) Z__100(N##4) \ Z__100(N##5) Z__100(N##6) Z__100(N##7) Z__100(N##8) Z__100(N##9) #define Z1(N) \ Z_1000(N##0) // Z_1000(N##1) Z_1000(N##2) Z_1000(N##3) Z_1000(N##4) \ // Z_1000(N##5) Z_1000(N##6) Z_1000(N##7) Z_1000(N##8) Z_1000(N##9) static const X XsLast[] = {}; static const Z Zs[] = { Z1(0) Z(XsLast,1,1) }; const Z* getzs() { return Zs[0]; } - 8 - exploding in DSE: dead store elim1: 45.34 (15%) usr 0.19 (28%) sys 45.53 (15%) wall 1016985 kB (45%) ggc
[Bug target/61051] Duplicated instructions in both conditional branches
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61051 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2015-03-25 Ever confirmed|0 |1 --- Comment #2 from Steven Bosscher steven at gcc dot gnu.org --- This is code hoisting. That's not performed at -O2. Try -Os.
[Bug rtl-optimization/34503] Issues with constant/copy propagation implementation in gcse.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34503 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added CC||thomas.preudhomme at arm dot com --- Comment #8 from Steven Bosscher steven at gcc dot gnu.org --- Patch for comment #4 is proposed by Thomas Preud'homme with minor changes: https://gcc.gnu.org/ml/gcc-patches/2015-03/msg01048.html https://gcc.gnu.org/ml/gcc-patches/2015-03/msg01170.html
[Bug rtl-optimization/48181] [4.8/4.9 Regression] wrong code with -O -fgcse --param ira-max-conflict-table-size=0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48181 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Summary|[4.8/4.9/5 Regression] |[4.8/4.9 Regression] wrong |wrong code with -O -fgcse |code with -O -fgcse --param |--param |ira-max-conflict-table-size |ira-max-conflict-table-size |=0 |=0 | --- Comment #10 from Steven Bosscher steven at gcc dot gnu.org --- Not a GCC5 regression. Disabling LRA isn't possible. Anyway, if disabling LRA would make this bug resurface then it's more likely a reload (or reload-IRA interaction) issue than something in IRA.
[Bug rtl-optimization/64081] [5 Regression] r217827 prevents RTL loop unroll
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64081 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|2014-11-26 00:00:00 |2015-03-24 Ever confirmed|0 |1
[Bug target/54063] [4.8/4.9/5 regression] on powerpc64 gcc 4.8/4.9/5 generates larger code for global variable accesses than gcc 4.7
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54063 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |ASSIGNED CC||steven at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |steven at gcc dot gnu.org --- Comment #10 from Steven Bosscher steven at gcc dot gnu.org --- May be related to PR64317? I'll check that...
[Bug bootstrap/56750] [4.8/4.9/5 Regression] static -lstdc++ logic bleeds into all subdirs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56750 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-03-24 Ever confirmed|0 |1
[Bug middle-end/64928] [4.8/4.9/5 Regression] Inordinate cpu time and memory usage in phase opt and generate with -ftest-coverage -fprofile-arcs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64928 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added CC||steven at gcc dot gnu.org --- Comment #12 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Richard Biener from comment #9) It seems that loop invariant motion is responsible for most of the abnormals, thus -fno-tree-loop-im restores performance. The loop LIM detects is of style bb 6: (header) # ___fp_3(ab) = PHI ___fp_41(4), ___fp_5(21) # ___r1_7(ab) = PHI ___r1_42(4), ___r1_9(21) # ___r2_11(ab) = PHI ___r2_43(4), ___r3_17(21) # ___r3_19(ab) = PHI ___r3_44(4), ___r3_23(21) # ___r4_25 = PHI ___r4_45(4), ___r4_26(21) # gotovar.17_29 = PHI _51(4), _69(21) goto gotovar.17_29; Perhaps disable LIM (and maybe PRE) if the CFG has a large edge/bb ratio (i.e. dense CFG)? There's probably no benefit in such cases anyway.
[Bug middle-end/63401] optimize attribute overwrites other options
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63401 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Keywords||wrong-code Status|UNCONFIRMED |NEW Last reconfirmed||2014-09-28 CC||steven at gcc dot gnu.org Ever confirmed|0 |1 Known to fail||4.8.0, 4.9.0, 5.0 --- Comment #1 from Steven Bosscher steven at gcc dot gnu.org --- Fails with all GCC releases that support the 'optimize' attribute (GCC4.4 and later).
[Bug rtl-optimization/63156] web can't handle AUTOINC correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63156 --- Comment #7 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Carrot from comment #6) Since it is intentionally to remove flag DF_REF_READ_WRITE on use, Ah, but I don't think that was the correct fix. The DEF and USE refs should both have the flag set.
[Bug rtl-optimization/63156] web can't handle AUTOINC correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63156 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |NEW --- Comment #5 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Carrot from comment #4) For a AUTOINC rtl expression, we create two refs, one def and one use, but only the def gets the flag DF_REF_READ_WRITE, the use doesn't have this flag. Then this is fall-out of PR32339.
[Bug rtl-optimization/63156] web can't handle AUTOINC correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63156 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |steven at gcc dot gnu.org
[Bug rtl-optimization/63156] web can't handle AUTOINC correctly
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63156 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|WAITING --- Comment #2 from Steven Bosscher steven at gcc dot gnu.org --- I am unable to reproduce this: Test Run By stevenb on Wed Sep 3 14:56:17 2014 Target is arm-unknown-eabi Host is powerpc64-unknown-linux-gnu === gcc tests === Schedule of variations: arm-sim/-march=armv5te/-mthumb/-fweb Running target arm-sim/-march=armv5te/-mthumb/-fweb Running /home/stevenb/devel/combined/gcc/testsuite/gcc.c-torture/execute/execute.exp ... PASS: gcc.c-torture/execute/2422-1.c -O0 (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O0 execution test PASS: gcc.c-torture/execute/2422-1.c -O1 (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O1 execution test PASS: gcc.c-torture/execute/2422-1.c -O2 (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O2 execution test PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer execution test PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer -funroll-loops execution test PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test PASS: gcc.c-torture/execute/2422-1.c -O3 -g (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -O3 -g execution test PASS: gcc.c-torture/execute/2422-1.c -Os (test for excess errors) PASS: gcc.c-torture/execute/2422-1.c -Os execution test === gcc Summary === # of expected passes16 /home/stevenb/devel/build-arm/gcc/xgcc version 5.0.0 20140903 (experimental) [trunk revision 214887] (GCC) What is your command line for configure?
[Bug tree-optimization/62291] PRE uses too much memory and compile-time
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62291 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-08-29 Ever confirmed|0 |1
[Bug fortran/43849] Add _gfortran_finalize function to close down the library
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43849 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |NEW CC||steven at gcc dot gnu.org --- Comment #5 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Dominique d'Humieres from comment #4) Is this PR still pertinent (2013-12-21)? Yes, it could be necessary to force the shutdown from other libraries that may want to output something and will need the buffers to be flushed for that (e.g. libcaf).
[Bug tree-optimization/50374] Support vectorization of min/max location pattern
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50374 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Keywords||missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed||2014-08-24 Ever confirmed|0 |1
[Bug fortran/61669] Error recovery ICE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61669 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED CC||steven at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |steven at gcc dot gnu.org --- Comment #2 from Steven Bosscher steven at gcc dot gnu.org --- We need to roll back parsed DATA or DATA SPEC if we reject the statement. https://gcc.gnu.org/ml/fortran/2014-08/msg00092.html
[Bug fortran/62226] Encode CPP options in lang.opt
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62226 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-08-22 Ever confirmed|0 |1
[Bug fortran/62049] Negative count_rate when calling system_clock
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62049 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2014-08-22 CC||steven at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Paul Martin from comment #0) Looks like a bug, yes. The intrinsic subroutine appears to be resolved to _gfortran_system_clock_8. That should be _gfortran_system_clock_4 if your crate variable is integer(kind=4). Can you please compile the following and report back the output here? - 8 - (t.f90) PROGRAM clock IMPLICIT NONE INTEGER(kind=4) :: crate4 INTEGER(kind=8) :: crate8 CALL system_clock (count_rate = crate4) WRITE(*,*) crate4 CALL system_clock (count_rate = crate8) WRITE(*,*) crate8 END PROGRAM clock - 8 - $ gfortran -Wall t.f90 -fdump-parse-tree
[Bug fortran/62135] ICE with invalid SELECT CASE selector
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62135 --- Comment #6 from Steven Bosscher steven at gcc dot gnu.org --- Author: steven Date: Fri Aug 22 18:43:50 2014 New Revision: 214351 URL: https://gcc.gnu.org/viewcvs?rev=214351root=gccview=rev Log: fortran/ PR fortran/62135 * resolve.c (resolve_select): Fix list traversal in case the last element of the CASE list was dropped as unreachable code. testsuite/ PR fortran/62135 * gfortran.dg/pr62135.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/pr62135.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog
[Bug fortran/62135] ICE with invalid SELECT CASE selector
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62135 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Keywords|ice-on-invalid-code |ice-on-valid-code Status|ASSIGNED|RESOLVED CC|steven at gcc dot gnu.org | Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |steven at gcc dot gnu.org Target Milestone|--- |5.0 --- Comment #7 from Steven Bosscher steven at gcc dot gnu.org --- gcc.gnu.org/r214351 Not a regression, so no reason to back-port. Thus, FIXED.
[Bug fortran/62135] ICE with invalid SELECT CASE selector
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62135 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED CC||steven at gcc dot gnu.org
[Bug fortran/62135] ICE with invalid SELECT CASE selector
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62135 --- Comment #4 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Anastasios Vathis from comment #2) In any case, there sould be a SYNTAX ERROR issued It's not an error, the case can simply never match. If you compile with -Wall you get a warning: $ gfortran t.f90 -Wall t.f90:27.23: CASE ('2':'7','9':'0') 1 Warning: Range specification at (1) can never be matched $ Problem is a simple list walk error if the unreachable case is the last in the list. Plugged with the following patch. Index: resolve.c === --- resolve.c (revision 214292) +++ resolve.c (working copy) @@ -7761,7 +7761,7 @@ resolve_select (gfc_code *code, bool select_type) /* Strip all other unreachable cases. */ if (body-ext.block.case_list) { - for (cp = body-ext.block.case_list; cp-next; cp = cp-next) + for (cp = body-ext.block.case_list; cp cp-next; cp = cp-next) { if (cp-next-unreachable) {
[Bug middle-end/54364] Tail call jumps not threaded
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54364 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #5 from Steven Bosscher steven at gcc dot gnu.org --- http://gcc.gnu.org/r191462
[Bug rtl-optimization/57320] [4.9 Regression] Shrink-wrapping leaves unreachable blocks in the CFG
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57320 --- Comment #3 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #2) This has been fixed by r204211 on the trunk, any reason to keep this PR open? Eh, really? That commit is supposed to change nothing except the graph dumper. Note that Steven's patch has been approved, but never committed: http://gcc.gnu.org/ml/gcc-patches/2013-05/msg01020.html That patch is still necessary. I've simply forgotten about it. I don't have access to a machine to commit it this or next week. Much appreciated if you could take care of it!
[Bug tree-optimization/60172] ARM performance regression from trunk@207239
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60172 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added CC||steven at gcc dot gnu.org --- Comment #12 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Joey Ye from comment #11) Sometimes it helps to use -fdump-rtl-slim. Matter of taste but I find that much easier to interpret than LISP-like RTL dumps. Annotated good expansion: ;; _41 = _42 * 4; 20: r126=r1312 ;; _40 = _2 + _41; 21: r136=r130+r119 // r136=Arr_2_Par_Ref+r119 22: r125=r136+r126 // r125=Arr_2_Par_Ref+r119+r1312 ;; MEM[(int[25] *)_51 + 20B] = _34; 29: r139=r130+r119 // r139=Arr_2_Par_Ref+r119 30: r140=r139+r126 // r140=Arr_2_Par_Ref+r119+r1312 (==r125) 31: r141=r140+1000 // r141=Arr_2_Par_Ref+r119+r1312+1000 (==r125+1000) 32: [r141+20]=r124 In this case, the RHS for the SETs of r140 and r125 are lexically identical for value numbering, so the job for CSE is easy. Annotated bad expansion: ;; _40 = Arr_2_Par_Ref_22(D) + _12; 22: r138=r128+r121 23: r127=r132+r138 // r127=Arr_2_Par_Ref+r128+r121 ;; _32 = _20 + 1000; 29: r124=r121+1000 ;; MEM[(int[25] *)_51 + 20B] = _34; 32: r141=r132+r124 // r141=Arr_2_Par_Ref+r121+1000 33: r142=r141+r128 // r142=Arr_2_Par_Ref+r128+r121+1000 (==r127+1000) 34: [r142+20]=r126 Here, the +1000 confuses CSE. The sets of r127 and r142 have a common sub-expression as value, but none of the sub-expressions are lexically identical. RTL CSE has limited ability to look through sub-expressions to identify same value sub-expressions (anchors, base regs, etc.) but apparently this case is too complex for it to handle.
[Bug rtl-optimization/49847] [4.7/4.8/4.9 Regression] NULL deref in fold_rtx (prev_insn_cc0 == NULL)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49847 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added CC||steven at gcc dot gnu.org --- Comment #28 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Jeffrey A. Law from comment #24) One could argue that the CFG building code could be tweaked so that a cc0-setter is never considered the end of a block. The CFG is built too early (on gimple) to know what may end up a cc0 setter. It'd take more than a few CFG fixup hacks after expanding to RTL to get the cc0-setter and cc0-consumer back together in the same basic block. How did this work (i.e. what did the CFG look like) before tree-ssa, e.g. in gcc 3.4?
[Bug c/59717] better warning when using functions without including appropriate header files
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59717 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-01-25 CC||steven at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Steven Bosscher steven at gcc dot gnu.org --- Can be implemented by adding header names in the builtins.def files.
[Bug tree-optimization/59715] [4.7/4.8/4.9 Regression] wrong code at -Os and above on x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59715 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|REOPENED|NEW --- Comment #4 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #2) Nope, b is initialized to 0. Eh, right, sorry!
[Bug tree-optimization/23384] escaped set should be flow sensitive
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23384 --- Comment #6 from Steven Bosscher steven at gcc dot gnu.org --- (In reply to Richard Biener from comment #5) Would it be possible to compute ESCAPED per basic block as a local set, compute transitive closure over the CFG, and use that information when constructing the points-to graph?
[Bug tree-optimization/59643] Predictive commoning unnecessarily punts on scimark2 SOR
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59643 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |4.9.0
[Bug tree-optimization/59715] wrong code at -Os and above on x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59715 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Steven Bosscher steven at gcc dot gnu.org --- b is used uninitialized = undefined behavior
[Bug target/59672] Add -m16 support for x86
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59672 Steven Bosscher steven at gcc dot gnu.org changed: What|Removed |Added Target||i386-*-* Status|UNCONFIRMED |NEW Last reconfirmed||2014-01-04 Ever confirmed|0 |1 --- Comment #3 from Steven Bosscher steven at gcc dot gnu.org --- Nice idea. Not likely to be implemented any time soon, because it's quite complicated to get right. Takes more than just placing a directive right. With the right set of flags the compiler would still emit 32bit instructions. Actually disabling 32bits instructions is a lot more work: add a TARGET_16BITS or an attribute_enabled to almost all patterns in i386.md and friends. Not helpful for the vast majority of users, and kernel people will complain more about the inevitable slowdown (and, as usual, point out the general incompetence of gcc hackers :-) (Why/when is 16bit code still necessary anyway? Before entering protected mode?)