[Bug rtl-optimization/79405] [9/10/11/12 Regression] Infinite loop in fwprop

2021-10-22 Thread steven at gcc dot gnu.org via Gcc-bugs
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

2019-12-09 Thread steven at gcc dot gnu.org
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

2019-03-06 Thread steven at gcc dot gnu.org
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

2019-03-06 Thread steven at gcc dot gnu.org
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

2019-03-06 Thread steven at gcc dot gnu.org
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

2019-03-06 Thread steven at gcc dot gnu.org
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

2019-03-06 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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.

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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.

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-05 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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)

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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)

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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.

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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

2019-03-04 Thread steven at gcc dot gnu.org
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.

2019-03-01 Thread steven at gcc dot gnu.org
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)

2019-03-01 Thread steven at gcc dot gnu.org
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

2016-04-29 Thread steven at gcc dot gnu.org
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))

2016-04-28 Thread steven at gcc dot gnu.org
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

2015-04-07 Thread steven at gcc dot gnu.org
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

2015-04-07 Thread steven at gcc dot gnu.org
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

2015-04-07 Thread steven at gcc dot gnu.org
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

2015-04-07 Thread steven at gcc dot gnu.org
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

2015-04-07 Thread steven at gcc dot gnu.org
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

2015-03-25 Thread steven at gcc dot gnu.org
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

2015-03-24 Thread steven at gcc dot gnu.org
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

2015-03-24 Thread steven at gcc dot gnu.org
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

2015-03-24 Thread steven at gcc dot gnu.org
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

2015-03-24 Thread steven at gcc dot gnu.org
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

2015-03-24 Thread steven at gcc dot gnu.org
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

2015-03-05 Thread steven at gcc dot gnu.org
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

2014-09-28 Thread steven at gcc dot gnu.org
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

2014-09-05 Thread steven at gcc dot gnu.org
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

2014-09-04 Thread steven at gcc dot gnu.org
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

2014-09-03 Thread steven at gcc dot gnu.org
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

2014-09-03 Thread steven at gcc dot gnu.org
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

2014-08-29 Thread steven at gcc dot gnu.org
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

2014-08-28 Thread steven at gcc dot gnu.org
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

2014-08-24 Thread steven at gcc dot gnu.org
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

2014-08-23 Thread steven at gcc dot gnu.org
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

2014-08-22 Thread steven at gcc dot gnu.org
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

2014-08-22 Thread steven at gcc dot gnu.org
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

2014-08-22 Thread steven at gcc dot gnu.org
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

2014-08-22 Thread steven at gcc dot gnu.org
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

2014-08-21 Thread steven at gcc dot gnu.org
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

2014-08-21 Thread steven at gcc dot gnu.org
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

2014-06-11 Thread steven at gcc dot gnu.org
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

2014-02-19 Thread steven at gcc dot gnu.org
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

2014-02-19 Thread steven at gcc dot gnu.org
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)

2014-02-15 Thread steven at gcc dot gnu.org
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

2014-01-25 Thread steven at gcc dot gnu.org
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

2014-01-08 Thread steven at gcc dot gnu.org
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

2014-01-07 Thread steven at gcc dot gnu.org
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

2014-01-07 Thread steven at gcc dot gnu.org
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

2014-01-07 Thread steven at gcc dot gnu.org
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

2014-01-04 Thread steven at gcc dot gnu.org
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?)


  1   2   3   4   5   6   7   8   9   10   >