[Bug tree-optimization/54779] split FRAME variables back into pieces
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54779 Eric Botcazou changed: What|Removed |Added Attachment #34016|0 |1 is obsolete|| --- Comment #9 from Eric Botcazou --- Created attachment 42158 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42158&action=edit Updated implementation For a 7-based compiler.
[Bug c++/81474] out of memory on constexpr calculation
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81474 --- Comment #2 from Fedor Bobkov --- Thread-starting example is intended only for demonstration of out of memory error on simply example. In real projects out of memory error occurs with much smaller loops which just use bigger amount of data. I had got this error on compile-time bilinear downscaling of signed distance field image. May be it is not proper way to use constexprs but it is very useful in embedded applications (with small RAM and big ROM (flash) memory).
[Bug c++/81474] out of memory on constexpr calculation
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81474 --- Comment #3 from Martin Liška --- (In reply to Fedor Bobkov from comment #2) > Thread-starting example is intended only for demonstration of out of memory > error on simply example. In real projects out of memory error occurs with > much smaller loops which just use bigger amount of data. > > I had got this error on compile-time bilinear downscaling of signed distance > field image. May be it is not proper way to use constexprs but it is very > useful in embedded applications (with small RAM and big ROM (flash) memory). Can you please elaborate it more? We're interested in a test-case for that ;)
[Bug bootstrap/81315] powerpc64 vs building lang/gcc7-devel (on FreeBSD head): xgcc gets segmentation fault
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81315 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2017-09-12 CC||marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Liška --- Any chance to reproduce with a cross compiler on Linux?
[Bug c++/81474] out of memory on constexpr calculation
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81474 --- Comment #4 from Fedor Bobkov --- > Can you please elaborate it more? We're interested in a test-case for that ;) I'll try to make simplified code of this app as soon as possible.
[Bug c/80942] -Woverlength-strings should no longer be implied by -Wpedantic
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80942 --- Comment #4 from Vincent Lefèvre --- (In reply to jos...@codesourcery.com from comment #2) > The documentation explicitly says -Wpedantic includes some warnings about > things outside of ISO C, beyond those that violate syntax rules or > constraints. This is not what is documented: Issue all the warnings demanded by strict ISO C and ISO C++; reject all programs that use forbidden extensions, and some other programs that do not follow ISO C and ISO C++. For ISO C, follows the version of the ISO C standard specified by any -std option used. [...] Some users try to use -Wpedantic to check programs for strict ISO C conformance. They soon find that it does not do quite what they want: it finds some non-ISO practices, but not all---only those for which ISO C requires a diagnostic, and some others for which diagnostics have been added. Here, long strings are still valid C code, they are not even an extension (they just depend on implementation limits). It does not make much sense to reject them while still allowing some real extensions.
[Bug c/82187] New: missing optimization pointer to char*
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82187 Bug ID: 82187 Summary: missing optimization pointer to char* Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: loader2x at gmail dot com Target Milestone: --- I have this code: main.c: int main(int c, char **v){ char *s = v[0]; while (*s++ != 0) { if ((*s == 'a') && (*s != 'b')) { return 1; } } return 0; } which I compile generating the assembly code: gcc -S -masm=intel -O3 main.c main: .LFB0: .cfi_startproc mov rax, QWORD PTR [rsi] jmp .L2 .p2align 4,,10 .p2align 3 .L4: cmp BYTE PTR [rax], 97 je .L5 .L2: add rax, 1 cmp BYTE PTR -1[rax], 0 jne .L4 xor eax, eax ret .L5: mov eax, 1 ret There are two accesses to the memory, it could be optimized to one access to the memory. When I set 'volatile char *s = v[0];', there are 3 accesses to the memory which is good.
[Bug tree-optimization/82186] [7/8 Regression] ICE (segfault), VLA type with inlining
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82186 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||marxin at gcc dot gnu.org, ||rguenth at gcc dot gnu.org Target Milestone|--- |7.3 Summary|ICE (segfault), VLA type|[7/8 Regression] ICE |with inlining |(segfault), VLA type with ||inlining Ever confirmed|0 |1 Known to fail||7.2.0, 8.0 --- Comment #1 from Martin Liška --- Confirmed, started with r235817.
[Bug testsuite/82132] FAIL: gcc.dg/vect/vect-tail-nomask-1.c (test for excess errors) due to missing posix_memalign
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82132 Richard Biener changed: What|Removed |Added Component|target |testsuite --- Comment #1 from Richard Biener --- There is no "builtin" for this, the link fail will not go away. Other testcases simply restrict the testcase to *-*-linux *-*-gnu*
[Bug tree-optimization/82133] [7/8 Regression] unroll-loops too aggressive
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82133 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |WAITING Keywords||wrong-code Last reconfirmed||2017-09-12 Component|c |tree-optimization CC||rguenth at gcc dot gnu.org Ever confirmed|0 |1 Summary|unroll-loops too aggressive |[7/8 Regression] ||unroll-loops too aggressive Target Milestone|--- |7.3 Known to fail||7.1.0, 7.2.0 --- Comment #2 from Richard Biener --- Can you isolate the affected function by isolating a testcase that fails that way and compiling openblas file-by-file with different optimization? (I suppose -O0 works)
[Bug target/82185] ICE: Segmentation fault in expand_binop gcc/optabs.c:1137
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82185 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2017-09-12 CC||marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Martin Liška --- Can't reproduce with x86_64-linux-gnu cross compiler: ../configure --enable-languages=c,c++ --disable-multilib --disable-libsanitizer --prefix=/home/marxin/bin/gcc --disable-bootstrap --target=xtensa-linux-gnu Can you help me how to reproduce?
[Bug tree-optimization/82135] Missed constant propagation through possible unsigned wraparound, with std::align() variable pointer, constant everything else.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82135 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 Ever confirmed|0 |1 --- Comment #3 from Richard Biener --- Thus confirmed.
[Bug target/82136] x86: -mavx256-split-unaligned-load should try to fold other shuffles into the load/vinsertf128
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82136 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Richard Biener --- GCC just applies the general interleaving strategy here which for existing groups can be indeed quite bad. And it gets worse because of the splitting which isn't exposed to the vectorizer. In the end the GIMPLE IL more nicely explains what the vectorizer tries to do -- extract even/odd, mult/add and then interleave high/low: vect_x_13.2_26 = MEM[base: _2, offset: 0B]; vect_x_13.3_22 = MEM[base: _2, offset: 32B]; vect_perm_even_21 = VEC_PERM_EXPR ; vect_perm_odd_20 = VEC_PERM_EXPR ; vect__7.4_19 = vect_perm_odd_20 * vect_perm_even_21; vect__8.5_18 = vect_perm_odd_20 + vect_perm_even_21; vect_inter_high_34 = VEC_PERM_EXPR ; vect_inter_low_29 = VEC_PERM_EXPR ; MEM[base: _2, offset: 0B] = vect_inter_high_34; MEM[base: _2, offset: 32B] = vect_inter_low_29; not sure what ends up messing things up here (I guess AVX256 doesn't have full width extract even/odd and interleave high/low ...). Looks like with -mprefer-avx128 we never try the larger vector size (Oops?). At least we figure vectorization isn't profitable. So all this probably boils down to costs of permutes not being modeled.
[Bug target/81800] [8 regression] on aarch64 ilp32 lrint should not be inlined as two instructions
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81800 --- Comment #7 from Tamar Christina --- Yes, sorry I neglected to update the assignee. The bug itself is simple to fix but it highlighted a different related problem. That's what's delayed the fix.
[Bug rtl-optimization/82180] assign_spill_hard_regs spills to unaligned register pair
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82180 --- Comment #2 from Tom de Vries --- > However, I'm running into spills being generated by lra using an unaligned > register pair (in this case, it's (r67, r77)): Sorry, that's a mistake, that's supposed to be (r67, r68). > ... > ;(insn 53501 58177 3793 633 (set (reg:DI 67 s67) > ;(reg:DI 42 s42 [4460])) "minlocval_3.f90":59 16 {*movdi_insn} > ; (nil)) > ...
[Bug tree-optimization/82137] auto-vectorizing shuffles way to much to avoid duplicate work
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82137 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- Interesting idea. It's probably a bit hard to make the vectorizer do this though given it's current structure and the fact that it would have to cost the extra ops against the saved suffling (the extra cost of the ops would depent on availability of spare execution resources for example). In general the interleaving strategy looks like a bit of a dead end with AVX (and possibly worse on AVX512). This is how extract even gets expanded: ;; vect_perm_even_21 = VEC_PERM_EXPR ; (insn 18 16 17 (set (reg:V4DF 103) (vec_select:V4DF (vec_concat:V8DF (reg:V4DF 95 [ vect_x_13.2 ]) (reg:V4DF 93 [ vect_x_13.3 ])) (parallel [ (const_int 0 [0]) (const_int 4 [0x4]) (const_int 2 [0x2]) (const_int 6 [0x6]) ]))) "t2.c":6 {*avx_unpcklpd256} (nil)) (insn 17 18 0 (set (reg:V4DF 92 [ vect_perm_even_21 ]) (vec_select:V4DF (reg:V4DF 103) (parallel [ (const_int 0 [0]) (const_int 2 [0x2]) (const_int 1 [0x1]) (const_int 3 [0x3]) ]))) "t2.c":6 4183 {avx2_permv4df_1} (nil))
[Bug target/82138] [8 Regression] Assembler messages: Error: can't resolve `.got2' {.got2 section} - `.LCF0' {.text.unlikely section}
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82138 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug ada/82141] [8 Regression] raised RTSFIND.RE_NOT_AVAILABLE : rtsfind.adb:851 on darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82141 Richard Biener changed: What|Removed |Added Keywords||build Component|bootstrap |ada Target Milestone|--- |8.0
[Bug tree-optimization/82188] New: Missed optimization opportunity for constant folding
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82188 Bug ID: 82188 Summary: Missed optimization opportunity for constant folding Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: ishiura-compiler at ml dot kwansei.ac.jp Target Milestone: --- We compiled two programs (A1.c, A2.c) by GCC-8.0.0 with -O3 option. Though the two programs are equivalent, GCC outputs different assembly codes. +-+-+ | A1.c| A2.c| +-+-+ |int main (void) |int main (void) | |{|{| | volatile int x = 1;| volatile int x = 1;| | | | | long t1 = 1/(2U-x);| long t1 = 1/(2U-x);| | int t2 = 0!=(((int)(2%(2+t1)))/2); | int t2 = 0!=(int)t1; | | | | | if (t1 != 1) __builtin_abort();| if (t1 != 1) __builtin_abort();| | if (t2 != 1) __builtin_abort();| if (t2 != 1) __builtin_abort();| | | | | return 0; | return 0; | |}|}| +-+-+ +-+-+ |A1.s (gcc-8.0.0 A1.c -O3 -S) |A2.s (gcc-8.0.0 A2.c -O3 -S) | +-+-+ |main:|main:| |.LFB0: |.LFB0: | | .cfi_startproc| .cfi_startproc| | subq $24, %rsp | subq $24, %rsp | | .cfi_def_cfa_offset 32| .cfi_def_cfa_offset 32| | movl $2, %esi | movl $2, %ecx | | xorl %edx, %edx | xorl %edx, %edx | | movl $1, 12(%rsp) | movl $1, 12(%rsp) | | movl 12(%rsp), %eax | movl 12(%rsp), %eax | | subl %eax, %esi | subl %eax, %ecx | | movl $1, %eax | movl $1, %eax | | divl %esi | divl %ecx | | movl %eax, %esi | testl %eax, %eax | | movl $2, %eax | je .L3| | movq %rsi, %rcx | | | cqto | | | addq $2, %rsi | | | idivq %rsi | | | cmpl $1, %ecx | | | jne.L3| | | cmpq $2, %rdx | | | jne.L3| | | xorl %eax, %eax | xorl %eax, %eax | | addq $24, %rsp | addq $24, %rsp | | .cfi_def_cfa_offset 8 | .cfi_def_cfa_offset 8 | | ret | ret | | .cfi_endproc | .cfi_endproc | | .section .text.unlikely | .section .text.unlikely | | .cfi_startproc| .cfi_startproc| | .type main.cold.0, @function| .type main.cold.0, @function| |main.cold.0: |main.cold.0: | |.L3: |.L3: | | .cfi_def_cfa_offset 32| .cfi_def_cfa_offset 32| | call abort | call abort | | .cfi_endproc | .cfi_endproc | |.LFE0: |.LFE0: | | .section .text.startup | .section .text.startup | | .size main, .-main | .size main, .-main | | .section
[Bug fortran/82184] [8 Regression] 187.facerec in SPEC CPU 2000 miscompares
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82184 --- Comment #2 from Thomas Koenig --- Richard, I think you have access to the SPEC sources (which no gfortran maintainer has). Could you give us a hint of what goes wrong?
[Bug tree-optimization/82133] [7/8 Regression] unroll-loops too aggressive
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82133 --- Comment #3 from Nick --- According to https://github.com/xianyi/OpenBLAS/issues/1292#issuecomment-327788223, it is in the kernel/x86_64/dgemv_n_microk_haswell-4.c source where the loop-unrolling has caused the parent function call which is kernel/x86_64/dgemv_n_4.c. I.e. the unrolling is too aggressive in dgemv_n_4.c. However, I am no expert in the OpenBLAS source code to be able to extract the relevant sources and make a functioning C-program to try and reproduce it. All I can see is that the use of the loop counter in dgemv_n_4.c is a relatively complex method. And yes, OpenBLAS works fine without any of the mentioned flags (it also works for much more aggressive optimizations, but just not with the -funroll-loops -fipa-ra flags.
[Bug tree-optimization/82142] struct zeroing should use wide stores instead of avoiding overwriting padding
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82142 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||jamborm at gcc dot gnu.org, ||rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- I believe this is SRAs fault to expose the padding in the first place. Later we do try to merge the stores "back" but obviously we can't do that. Eventually we could make SRA emit CLOBBERs for the padding but not sure if that alone would help. I think we may have duplicates for this SRA "issue". W/o vectorization we end up with assignzero (struct foo * p) { [100.00%] [count: INV]: MEM[(struct foo *)p_2(D)] = 0; MEM[(struct foo *)p_2(D) + 8B] = 0; MEM[(struct foo *)p_2(D) + 12B] = 0; MEM[(struct foo *)p_2(D) + 14B] = 0; MEM[(struct foo *)p_2(D) + 16B] = 0; MEM[(struct foo *)p_2(D) + 24B] = 0; MEM[(struct foo *)p_2(D) + 32B] = 0; MEM[(struct foo *)p_2(D) + 40B] = 0; MEM[(struct foo *)p_2(D) + 48B] = 0; MEM[(struct foo *)p_2(D) + 56B] = 0; return; with vectorization: assignzero (struct foo * p) { [100.00%] [count: INV]: MEM[(struct foo *)p_2(D)] = 0; MEM[(struct foo *)p_2(D) + 8B] = 0; MEM[(struct foo *)p_2(D) + 12B] = 0; MEM[(struct foo *)p_2(D) + 14B] = 0; MEM[(struct foo *)p_2(D) + 16B] = { 0, 0, 0, 0, 0, 0, 0, 0 }; MEM[(struct foo *)p_2(D) + 48B] = 0; MEM[(struct foo *)p_2(D) + 56B] = 0; I think store-merging could make use of MEM[(...)p_2(D) + CST] = CLOBBER; for the holes. Note that strictly speaking as we optimize memset(.., 0, ..) to = {} SRA cannot simply replace = {} with setting only non-padding members to zero. Likewise we optimize memcpy (A, B,...) to *A = *B, same arguments for padding apply. Ok, so we don't actually fold that aggressive.
[Bug debug/82144] [8 Regression] ICE in add_dwarf_attr with alignas
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82144 Richard Biener changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Target Milestone|--- |8.0 --- Comment #2 from Richard Biener --- I will investigate.
[Bug tree-optimization/82189] New: Two level SLP needed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82189 Bug ID: 82189 Summary: Two level SLP needed Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Target: aarch64 Take: void f(float *restrict a, float * restrict b, float * restrict c, float t) { int i = 0 ; a[i] = b[i]/t; a[i+1] = b[i+1]/t; a[i+2] = c[i]/t; a[i+3] = c[i+1]/t; } Right now we do SLP once (at -O3) and produce: f: dup v2.2s, v0.s[0] ldr d1, [x1] ldr d0, [x2] fdivv1.2s, v1.2s, v2.2s fdivv0.2s, v0.2s, v2.2s stp d1, d0, [x0] ret But it might be better do: f: dup v2.4s, v0.s[0] ldr d0, [x1] ldr d1, [x2] ins v0.2d[1], v1.2d[0] fdivv0.4s, v0.4s, v2.4s str q0, [x0] ret Mainly because two div is usually not pipelined.
[Bug fortran/56818] [meta-bug] fortran-dev bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56818 Bug 56818 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED |---
[Bug tree-optimization/82189] Two stage SLP needed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82189 Andrew Pinski changed: What|Removed |Added Severity|normal |enhancement
[Bug fortran/32834] [Meta-bug] 'Fortran 95'-only failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32834 Bug 32834 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED |---
[Bug fortran/34640] ICE when assigning item of a derived-component to a pointer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 Dominique d'Humieres changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED |--- --- Comment #41 from Dominique d'Humieres --- Most of the tests give an ICE after r251949: pr34640.f90:32:0: values => d(:)%value internal compiler error: Segmentation fault: 11 pr34640_5.f90:1:0: type var_tables internal compiler error: Segmentation fault: 11 These ICEs were fixed by the latest patch in the mailing list.
[Bug fortran/39304] ICE with MATMUL, specific/generic functions and rank checking
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39304 Bug 39304 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED |---
[Bug fortran/82184] [8 Regression] 187.facerec in SPEC CPU 2000 miscompares
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82184 --- Comment #3 from Dominique d'Humieres --- I have reopened pr34640 due to ICEs that were not present in the latest patch I have tested. I don't know if this PR is the same issue.
[Bug ada/82141] [8 Regression] raised RTSFIND.RE_NOT_AVAILABLE : rtsfind.adb:851 on darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82141 --- Comment #13 from Dominique d'Humieres --- > I have been able to bootstrap with the commit for ada/sem_ch7.adb reverted. Unfortunately this does not survive the following changes (probably expected), i.e., r251975 is still broken.
[Bug target/82147] Autovectorization for extraction is slower than done manually
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82147 --- Comment #2 from Richard Biener --- The vectorizer performs interleaving for this kind of loop, your manual one isn't really vectorized (you only vectorize the load).
[Bug c++/82148] [7/8 Regression] ICE in assign_temp, at function.c:968
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82148 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug middle-end/82149] match.pd: 2919: bad if test ?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82149 Richard Biener changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #4 from Richard Biener --- Will test/commit a fix.
[Bug middle-end/82153] missed optimization: double rounding
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82153 Richard Biener changed: What|Removed |Added Keywords||missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 Component|rtl-optimization|middle-end Ever confirmed|0 |1 --- Comment #5 from Richard Biener --- thus (simplify (fix_trunc (TRUNC @0)) (fix_trunc @0)) with appropriate condition.
[Bug middle-end/82154] [8 Regression] ICE in fold_binary_loc, at fold-const.c:9088 in 32-bit mingw32
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82154 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug tree-optimization/82157] [8 Regression] ICE on valid code at -O2 and -O3: cannot update SSA form
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82157 Richard Biener changed: What|Removed |Added Status|NEW |ASSIGNED Version|unknown |8.0 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener --- Mine.
[Bug c++/82159] [6/7/8 Regression] ICE: in assign_temp, at function.c:961
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82159 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug c++/82165] Operator overloading doesn't work with enum bit fields
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82165 --- Comment #1 from Richard Biener --- IIRC bitfield rvalues get promoted to 'int' before overload resolution applies but I may be wrong. enum bitfields may also be a GNU extension.
[Bug target/82175] [8 Regression] -march=native fails on armv7 big/little system armv7l-unknown-linux-gnueabihf with gcc 8.0.0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82175 Richard Biener changed: What|Removed |Added Keywords||wrong-code Target Milestone|--- |8.0 Summary|-march=native fails on |[8 Regression] |armv7 big/little system |-march=native fails on |armv7l-unknown-linux-gnueab |armv7 big/little system |ihf with gcc 8.0.0 |armv7l-unknown-linux-gnueab ||ihf with gcc 8.0.0
[Bug tree-optimization/82188] Missed optimization opportunity for constant folding
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82188 Andrew Pinski changed: What|Removed |Added Keywords||missed-optimization --- Comment #1 from Andrew Pinski --- There are a few different missed optimizations here that GCC does not do but LLVM does: * 1/(2U-x) != 0 is the same as x != 1 * 0!=x/2 is the same as x >= -1 && x <= 1
[Bug middle-end/82177] Alias analysis too aggressive with integer-to-pointer cast
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82177 Richard Biener changed: What|Removed |Added Keywords||alias CC||rguenth at gcc dot gnu.org --- Comment #4 from Richard Biener --- This is a dup of another PR which I can't find right now. GCC handles pointer-to-integer casts just fine. What it doesn't is creating alias relationship by relational tests (! n) but at the same time it sometimes propagates conditional equivalences (that's not the issue in your case I think). As said in that PR an incomplete fix would be to do sth like Index: gcc/tree-ssa-structalias.c === --- gcc/tree-ssa-structalias.c (revision 251997) +++ gcc/tree-ssa-structalias.c (working copy) @@ -4954,6 +4954,19 @@ find_func_aliases (struct function *fn, make_escape_constraint (rhsop); } } + else if (gcond *cond = dyn_cast (t)) +{ + if ((gimple_cond_code (cond) == EQ_EXPR + || gimple_cond_code (cond) == NE_EXPR) + && TREE_CODE (gimple_cond_rhs (cond)) == SSA_NAME) + { + auto_vec rhs1c; + auto_vec rhs2c; + get_constraint_for_rhs (gimple_cond_lhs (cond), &rhs1c); + get_constraint_for_rhs (gimple_cond_rhs (cond), &rhs2c); + process_all_all_constraints (rhs1c, rhs2c); + } +} /* Handle escapes through return. */ else if (gimple_code (t) == GIMPLE_RETURN && gimple_return_retval (as_a (t)) != NULL_TREE) the effect on the number of constraints and optimization is unknown. Incomplete because the above doesn't handle other ways of relating things. The compare might be in an external function and thus not visible to GCC at all. Which means we must assume that all pointers that escaped the current function might actually point to the same thing if a function call happens (and the result is in any way used in a conditional). You can workaround GCCs "deficiency" by using -fno-tree-pta.
[Bug fortran/82184] [8 Regression] 187.facerec in SPEC CPU 2000 miscompares
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82184 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug c/82186] [7/8 Regression] ICE (segfault), VLA type with inlining
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82186 Richard Biener changed: What|Removed |Added Priority|P3 |P2 Component|tree-optimization |c --- Comment #2 from Richard Biener --- Another instance of the C FE missing a DECL_EXPR.
[Bug tree-optimization/82187] missed PRE at -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82187 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||rguenth at gcc dot gnu.org Summary|missing optimization|missed PRE at -O3 |pointer to char*| Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- I see with -O2: .L4: movzbl (%rax), %edx cmpb$97, %dl je .L5 .L2: addq$1, %rax testb %dl, %dl jne .L4 xorl%eax, %eax ret .L5: movl$1, %eax ret so a single load in the loop. Something messes up at -O3.
[Bug tree-optimization/82188] Missed optimization opportunity for constant folding
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82188 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 Ever confirmed|0 |1 --- Comment #2 from Richard Biener --- Confirmed.
[Bug tree-optimization/82189] Two stage SLP needed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82189 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||rguenth at gcc dot gnu.org Blocks||53947 Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- I think what is missing is merging of two "vectors", aka, permutations of different load chains: /* Grouped store or load. */ if (STMT_VINFO_GROUPED_ACCESS (vinfo_for_stmt (stmt))) { if (REFERENCE_CLASS_P (lhs)) { /* Store. */ ; } else { /* Load. */ first_load = GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)); if (prev_first_load) { /* Check that there are no loads from different interleaving chains in the same node. */ if (prev_first_load != first_load) { if (dump_enabled_p ()) { dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "Build SLP failed: different " "interleaving chains in one node "); dump_gimple_stmt (MSG_MISSED_OPTIMIZATION, TDF_SLIM, stmt, 0); } /* Mismatch. */ continue; this is because we do not have a suitable way to represent those at the moment. So we split the store group and get the two element vectorization. As we don't have a good intermediate representation for SLP at the moment we can't really perfomr post-detection "optimization" on the SLP tree. unified autovect to the rescue... Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947 [Bug 53947] [meta-bug] vectorizer missed-optimizations
[Bug target/82190] New: Possibly latent miscompilation issue on ppc64le-linux-gnu for memcpy-bi.c with -fweb -fno-optimize-strlen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82190 Bug ID: 82190 Summary: Possibly latent miscompilation issue on ppc64le-linux-gnu for memcpy-bi.c with -fweb -fno-optimize-strlen Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: prathamesh3492 at gcc dot gnu.org Target Milestone: --- Created attachment 42159 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42159&action=edit Reduced from memcpy-bi.c Hi, I am working on type-promotion patch (https://gcc.gnu.org/ml/gcc/2017-09/msg00024.html), which miscompiles memcpy-bi.c on ppc64le-linux-gnu. After some investigation it seems this is possibly a latent issue on the target. It can be reproduced for the attached test-case on pristine trunk (tested with r250395) with following options: -fno-optimize-strlen -fweb The issue seems to be that strlen pass transforms __builtin_memcmp (dst, src, n) != 0 to __builtin_memcmp_eq(dst, src, n) != 0. Inhibiting the above transform by disabling strlen pass, somehow interferes with web pass, which ends up calling abort() while executing the test-case. $ ../bootstrap-build/gcc/xgcc -B ../bootstrap-build/gcc -O2 -fno-optimize-strlen -fweb foo.c $ ./a.out Aborted The test-case is compiled correctly if strlen pass is enabled with web pass. Thanks, Prathamesh
[Bug sanitizer/82116] "nested bug in the same thread" when a bug is found while reporting another one
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82116 Dmitry Vyukov changed: What|Removed |Added CC||dvyukov at google dot com --- Comment #2 from Dmitry Vyukov --- Filed upstream bug: https://github.com/google/sanitizers/issues/858 We can close this (or leave to track fix backport).
[Bug target/82150] Produces a branch prefetch which causes a hang
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82150 --- Comment #3 from david.welch at netronome dot com --- The problem exists as well with ldr pc,[something]. I have not dug through gcc but did some compilation experiments, not nearly enough to be 100% sure, but for switch statements the code generated always appears to do a comparison (perhaps after a subtract or other modification, an ldrls pc,[], then an unconditional branch to deal with the last item (or a default). If that is always the rule that is safe. And for a function table, an array of function pointers, it did the math using gprs and then a mov lr,pc ; bx rn. an ldr pc,[] literal pool data will cause this undesired prefetch.
[Bug target/81325] -fcompare-debug failure on ppc64le
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81325 Jakub Jelinek changed: What|Removed |Added Status|NEW |ASSIGNED CC||aoliva at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek --- I believe this is a bug in find_many_sub_basic_blocks. When looking at say: int i; int bar (void); void foo (int x) { l1: i += 2; if (bar ()) goto l1; int a = x + 5; int b = x + 10; l2: i += 2; if (bar ()) goto l2; } where before cddce1 we have at -O2 -g: ... goto ; [INV] [count: INV] ... [0.00%] [count: INV]: a_13 = x_12(D) + 5; # DEBUG a => a_13 b_14 = x_12(D) + 10; # DEBUG b => b_14 [0.00%] [count: INV]: l2: and cddce1 decides to remove the unused a_13 and b_14, we just kill the forwarder block bb 5 and the debug stmts are dropped on the floor (which is unfortunate and on this testcase actually it wouldn't be impossible to move the debug stmts to the following block if the underlying vars are not mentioned in that loop and there are no debug stmts for that either, but we don't go that far). CCing Alex, because this is a nice example where debug stmts as well as frontier stmts are dropped on the floor. Anyway, I believe at least for now find_many_sub_basic_blocks should just throw away sequences of debug stmts in between an instruction that must end a basic block and instruction that must start a basic block.
[Bug tree-optimization/82128] [8 Regression] ICE on valid code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82128 --- Comment #2 from Richard Biener --- Latent issue in gimple-fold.c: Index: gcc/gimple-fold.c === --- gcc/gimple-fold.c (revision 252002) +++ gcc/gimple-fold.c (working copy) @@ -3872,7 +3872,7 @@ gimple_fold_call (gimple_stmt_iterator * we need to preserve GIMPLE_CALL statement at position of GSI iterator. */ update_call_from_tree (gsi, def); - gsi_insert_before (gsi, new_stmt, GSI_NEW_STMT); + gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT); } else {
[Bug target/82112] internal compiler error: in fold_convert_loc, at fold-const.c:2262
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82112 --- Comment #2 from Jakub Jelinek --- Author: jakub Date: Tue Sep 12 11:49:29 2017 New Revision: 252003 URL: https://gcc.gnu.org/viewcvs?rev=252003&root=gcc&view=rev Log: PR target/82112 * c-common.c (sync_resolve_size): Instead of c_dialect_cxx () assertion check that in the condition. (get_atomic_generic_size): Likewise. Before testing if parameter has pointer type, if it has array type, call for C++ default_conversion to perform array-to-pointer conversion. * c-c++-common/pr82112.c: New test. * gcc.dg/pr82112.c: New test. Added: trunk/gcc/testsuite/c-c++-common/pr82112.c trunk/gcc/testsuite/gcc.dg/pr82112.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/testsuite/ChangeLog
[Bug debug/82144] [8 Regression] ICE in add_dwarf_attr with alignas
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82144 Richard Biener changed: What|Removed |Added Assignee|rguenth at gcc dot gnu.org |aoliva at gcc dot gnu.org --- Comment #3 from Richard Biener --- Hmm, we do it twice: static dw_die_ref gen_enumeration_type_die (tree type, dw_die_ref context_die) { ... if (TYPE_SIZE (type)) { tree link; TREE_ASM_WRITTEN (type) = 1; add_byte_size_attribute (type_die, type); add_alignment_attribute (type_die, type); ... } else add_AT_flag (type_die, DW_AT_declaration, 1); add_alignment_attribute (type_die, type); add_pubtype (type, type_die); return type_die; } not sure which one to keep. Alex, this is now yours.
[Bug tree-optimization/82191] New: [8 Regression] ICE: Segmentation fault (in verify_use)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82191 Bug ID: 82191 Summary: [8 Regression] ICE: Segmentation fault (in verify_use) Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-8.0.0-alpha20170910 snapshot (r251952) ICEs when compiling the following snippet w/ -O2, -O3, or -Ofast: int w5 (void); int cg (int *tc, int y2) { int vf = 0; if (w5 () / ((y2 == 0) ? 1 : 2)) tc = &vf; return *tc / vf; } % gcc-8.0.0-alpha20170910 -O2 -c apmo3uzv.c during GIMPLE pass: pre apmo3uzv.c: In function 'cg': apmo3uzv.c:5:1: internal compiler error: Segmentation fault cg (int *tc, int y2) ^~
[Bug c++/78269] FAIL: FAIL: g++.dg/cpp1z/noexcept-type11.C and FAIL: g++.dg/cpp1z/noexcept-type9.C
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78269 --- Comment #11 from Paolo Carlini --- Thanks Thomas.
[Bug tree-optimization/82129] [8 Regression] ICE in compute_antic, at tree-ssa-pre.c:2447
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82129 --- Comment #3 from Richard Biener --- Not yet analyzed but I see LIM performs store-motion on [0.00%] [count: INV] [loop 5 header]: - *h5_26(D) = tv_24(D); + h5__lsm.7_18 = tv_24(D); where I think stores from undefined SSA names could be turned into CLOBBERs. "Fixes" the testcase. Index: gcc/gimple-fold.c === --- gcc/gimple-fold.c (revision 252002) +++ gcc/gimple-fold.c (working copy) @@ -410,6 +410,16 @@ fold_gimple_assign (gimple_stmt_iterator else if (DECL_P (rhs)) return get_symbol_constant_value (rhs); + + else if (TREE_CODE (rhs) == SSA_NAME +&& SSA_NAME_IS_DEFAULT_DEF (rhs) +&& ! ssa_defined_default_def_p (rhs) +&& gimple_store_p (stmt)) + { + tree clobber = build_constructor (TREE_TYPE (rhs), NULL); + TREE_THIS_VOLATILE (clobber) = true; + return clobber; + } } break;
[Bug fortran/56818] [meta-bug] fortran-dev bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56818 Bug 56818 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED
[Bug fortran/39304] ICE with MATMUL, specific/generic functions and rank checking
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39304 Bug 39304 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED
[Bug fortran/34640] ICE when assigning item of a derived-component to a pointer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 Dominique d'Humieres changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED --- Comment #42 from Dominique d'Humieres --- > Most of the tests give an ICE after r251949: > ... Looking more carefully to what I did, it turns out that I saw the ICEs on r251946!-( Sorry for the noise.
[Bug fortran/32834] [Meta-bug] 'Fortran 95'-only failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32834 Bug 32834 depends on bug 34640, which changed state. Bug 34640 Summary: ICE when assigning item of a derived-component to a pointer https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34640 What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED
[Bug middle-end/82004] [8 Regression] SPEC CPU2017 628.pop2_s miscompare
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82004 --- Comment #11 from rguenther at suse dot de --- On Mon, 11 Sep 2017, wilco at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82004 > > Wilco changed: > >What|Removed |Added > > CC||wilco at gcc dot gnu.org > > --- Comment #10 from Wilco --- > Using latest GLIBC, exp(log(10),-3) is only 3ULP different from 0.001. Since > (double)0.001 is rounded up, any <1ULP POW implementation could round down and > fail the test. So yes the first element in chlcnc really needs to be fixed to > 0.00099 to allow for a few ULP of error in POW. > > > As a last resort we can always choose to not touch 10**x > > Unfortunately almost all useful cases are 10**x... So it would be great if we > can allow use of exp10 and exp2 to get more accurate results. This requires a > real implementation in GLIBC, and a way to disable it. Would it be feasible to > add a exp10 symbol to libgcc/libgfortran in case the math libraries don't > support it? Not sure, it depends on whether we can make sure libm is prefered over libgfortran. Maybe we have existing cases in libgfortran already.
[Bug tree-optimization/82042] signed integer overflow in ao_ref_init_from_ptr_and_size
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82042 --- Comment #3 from rguenther at suse dot de --- On Mon, 11 Sep 2017, marxin at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82042 > > Martin Liška changed: > >What|Removed |Added > > Status|UNCONFIRMED |NEW >Last reconfirmed||2017-09-11 > CC||marxin at gcc dot gnu.org, >||rguenth at gcc dot gnu.org >Assignee|unassigned at gcc dot gnu.org |marxin at gcc dot > gnu.org > Ever confirmed|0 |1 > > --- Comment #2 from Martin Liška --- > Confirmed, I've got patch for 3/4 of ubsan errors. > > The only one which is remaining is: > >679 void >680 ao_ref_init_from_ptr_and_size (ao_ref *ref, tree ptr, tree size) >681 { >682HOST_WIDE_INT t, size_hwi, extra_offset = 0; >683ref->ref = NULL_TREE; >684if (TREE_CODE (ptr) == SSA_NAME) >685 { >686gimple *stmt = SSA_NAME_DEF_STMT (ptr); >687if (gimple_assign_single_p (stmt) >688&& gimple_assign_rhs_code (stmt) == ADDR_EXPR) >689 ptr = gimple_assign_rhs1 (stmt); >690else if (is_gimple_assign (stmt) >691 && gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR >692 && TREE_CODE (gimple_assign_rhs2 (stmt)) == > INTEGER_CST) >693 { >694ptr = gimple_assign_rhs1 (stmt); >695extra_offset = BITS_PER_UNIT >696 * int_cst_value (gimple_assign_rhs2 (stmt)); >697 } >698 } >699 >700if (TREE_CODE (ptr) == ADDR_EXPR) >701 { >702ref->base = get_addr_base_and_unit_offset (TREE_OPERAND (ptr, > 0), > &t); >703if (ref->base) >704 ref->offset = BITS_PER_UNIT * t; >705else > > Where offset should be probably offset_int type, which is not for free. > Or do we have a special value for such case Richi? Yeah, this is a know deficiency in ao_ref 'offset' (and also size and maxsize). Blowing up to offset_int isn't really a good idea. size and max_size have -1 as "unknown" but offset doesn't really have such value and "failing" isn't an option for the alias machinery. I've long thought about making ao_ref byte precision but that loses bit-level disambiguation we get into with bitfield stores/loads so I "postponed" that to until we (finally) get bitfield load/store lowering... The issue is long-standing so I think we can just leave it that way...
[Bug middle-end/82149] match.pd: 2919: bad if test ?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82149 --- Comment #6 from Richard Biener --- Author: rguenth Date: Tue Sep 12 13:21:52 2017 New Revision: 252007 URL: https://gcc.gnu.org/viewcvs?rev=252007&root=gcc&view=rev Log: 2017-09-12 Richard Biener PR middle-end/82149 * match.pd ((FTYPE) N CMP CST): Fix typo. Modified: trunk/gcc/ChangeLog trunk/gcc/match.pd
[Bug middle-end/82149] match.pd: 2919: bad if test ?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82149 Richard Biener changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #5 from Richard Biener --- Fixed.
[Bug target/82185] ICE: Segmentation fault in expand_binop gcc/optabs.c:1137
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82185 --- Comment #3 from rsandifo at gcc dot gnu.org --- Author: rsandifo Date: Tue Sep 12 13:27:13 2017 New Revision: 252008 URL: https://gcc.gnu.org/viewcvs?rev=252008&root=gcc&view=rev Log: PR81285: Fix uninitialised variable in emit_store_flag_int 2017-09-12 Richard Sandiford gcc/ PR rtl-optimization/82185 * expmed.c (emit_store_flag_int): Only test tem if it has been initialized. Modified: trunk/gcc/ChangeLog trunk/gcc/expmed.c
[Bug libstdc++/70483] string_view::compare and coparision operators are not constexpr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70483 --- Comment #3 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 13:31:20 2017 New Revision: 252017 URL: https://gcc.gnu.org/viewcvs?rev=252017&root=gcc&view=rev Log: PR libstdc++/70483 make std::experimental::string_view fully constexpr PR libstdc++/70483 * include/experimental/bits/string_view.tcc (basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of): Add constexpr specifier. * include/experimental/string_view (basic_string_view::remove_prefix) (basic_string_view::remove_suffix, basic_string_view::swap) (basic_string_view::compare, basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of, operator==, operator!=) (operator<, operator>, operator<=, operator>=): Likewise. * testsuite/experimental/string_view/operations/compare/char/70483.cc: New. Added: trunk/libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/experimental/bits/string_view.tcc trunk/libstdc++-v3/include/experimental/string_view
[Bug libstdc++/70483] string_view::compare and coparision operators are not constexpr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70483 Jonathan Wakely changed: What|Removed |Added Target Milestone|--- |7.3 --- Comment #4 from Jonathan Wakely --- Fixed on trunk for both std::experimental::basic_string_view and std::basic_string_view
[Bug testsuite/82132] FAIL: gcc.dg/vect/vect-tail-nomask-1.c (test for excess errors) due to missing posix_memalign
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82132 --- Comment #2 from Eric Gallager --- (In reply to Richard Biener from comment #1) > There is no "builtin" for this, the link fail will not go away. > Really? You did r207595 yourself, which is the revision that bug 65244 comment 11 said added it...
[Bug target/82185] ICE: Segmentation fault in expand_binop gcc/optabs.c:1137
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82185 rsandifo at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |RESOLVED CC||rsandifo at gcc dot gnu.org Resolution|--- |FIXED --- Comment #4 from rsandifo at gcc dot gnu.org --- Patch applied. Thanks for tracking down the problem and sorry for the breakage.
[Bug libstdc++/79433] __has_include() is true but #include gives #error when -std=old
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79433 --- Comment #25 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 14:02:59 2017 New Revision: 252018 URL: https://gcc.gnu.org/viewcvs?rev=252018&root=gcc&view=rev Log: PR libstdc++/79433 no #error for including headers with wrong -std PR libstdc++/79433 * doc/xml/manual/status_cxx2017.xml: Update feature-test macros. * doc/html/*: Regenerate. * include/Makefile.am: Remove . * include/Makefile.in: Regenerate. * include/bits/c++17_warning.h: Remove. * include/bits/string_view.tcc: Do not include for pre-C++17 modes. * include/std/any: Likewise. (__cpp_lib_any): Define. * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new SD-6 draft. * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6 draft. * include/std/optional: Do not include . (__cpp_lib_optional): Define. * include/std/shared_mutex: Do not include . * include/std/string_view: Do not include . (__cpp_lib_string_view): Define. * include/std/variant: Do not include . (__cpp_lib_variant): Define. * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line numbers. * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm. * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line numbers. * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm. * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line numbers. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust expected value of __cpp_lib_scoped_lock. Removed: trunk/libstdc++-v3/include/bits/c++17_warning.h Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/doc/xml/manual/status_cxx2017.xml trunk/libstdc++-v3/include/Makefile.am trunk/libstdc++-v3/include/Makefile.in trunk/libstdc++-v3/include/bits/string_view.tcc trunk/libstdc++-v3/include/std/any trunk/libstdc++-v3/include/std/mutex trunk/libstdc++-v3/include/std/numeric trunk/libstdc++-v3/include/std/optional trunk/libstdc++-v3/include/std/shared_mutex trunk/libstdc++-v3/include/std/string_view trunk/libstdc++-v3/include/std/variant trunk/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc trunk/libstdc++-v3/testsuite/26_numerics/gcd/1.cc trunk/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc trunk/libstdc++-v3/testsuite/26_numerics/lcm/1.cc trunk/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc trunk/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
[Bug libstdc++/79433] __has_include() is true but #include gives #error when -std=old
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79433 --- Comment #26 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 14:03:06 2017 New Revision: 252019 URL: https://gcc.gnu.org/viewcvs?rev=252019&root=gcc&view=rev Log: PR libstdc++/79433 no #error for including TS headers with wrong -std PR libstdc++/79433 * include/Makefile.am: Remove . * include/Makefile.in: Regenerate. * include/bits/c++14_warning.h: Remove. * include/experimental/algorithm: Do not include . * include/experimental/any: Likewise. * include/experimental/array: Likewise. * include/experimental/bits/erase_if.h: Likewise. * include/experimental/bits/lfts_config.h: Likewise. * include/experimental/bits/shared_ptr.h: Likewise. * include/experimental/bits/string_view.tcc: Likewise. * include/experimental/chrono: Likewise. * include/experimental/deque: Likewise. * include/experimental/filesystem: Do not include . * include/experimental/forward_list: Do not include . * include/experimental/functional: Likewise. * include/experimental/iterator: Likewise. * include/experimental/list: Likewise. * include/experimental/map: Likewise. * include/experimental/memory: Likewise. * include/experimental/numeric: Likewise. * include/experimental/optional: Likewise. * include/experimental/propagate_const: Likewise. * include/experimental/ratio: Likewise. * include/experimental/regex: Likewise. * include/experimental/set: Likewise. * include/experimental/string: Likewise. * include/experimental/string_view: Likewise. * include/experimental/system_error: Likewise. * include/experimental/tuple: Likewise. * include/experimental/type_traits: Likewise. * include/experimental/unordered_map: Likewise. * include/experimental/unordered_set: Likewise. * include/experimental/vector: Likewise. * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error line number. * testsuite/experimental/array/neg.cc: Likewise. * testsuite/experimental/propagate_const/assignment/move_neg.cc: Likewise. * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise. * testsuite/experimental/propagate_const/requirements2.cc: Likewise. * testsuite/experimental/propagate_const/requirements3.cc: Likewise. * testsuite/experimental/propagate_const/requirements4.cc: Likewise. * testsuite/experimental/propagate_const/requirements5.cc: Likewise. Removed: trunk/libstdc++-v3/include/bits/c++14_warning.h Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/Makefile.am trunk/libstdc++-v3/include/Makefile.in trunk/libstdc++-v3/include/experimental/algorithm trunk/libstdc++-v3/include/experimental/any trunk/libstdc++-v3/include/experimental/array trunk/libstdc++-v3/include/experimental/bits/erase_if.h trunk/libstdc++-v3/include/experimental/bits/lfts_config.h trunk/libstdc++-v3/include/experimental/bits/shared_ptr.h trunk/libstdc++-v3/include/experimental/bits/string_view.tcc trunk/libstdc++-v3/include/experimental/chrono trunk/libstdc++-v3/include/experimental/deque trunk/libstdc++-v3/include/experimental/filesystem trunk/libstdc++-v3/include/experimental/forward_list trunk/libstdc++-v3/include/experimental/functional trunk/libstdc++-v3/include/experimental/iterator trunk/libstdc++-v3/include/experimental/list trunk/libstdc++-v3/include/experimental/map trunk/libstdc++-v3/include/experimental/memory trunk/libstdc++-v3/include/experimental/numeric trunk/libstdc++-v3/include/experimental/optional trunk/libstdc++-v3/include/experimental/propagate_const trunk/libstdc++-v3/include/experimental/ratio trunk/libstdc++-v3/include/experimental/regex trunk/libstdc++-v3/include/experimental/set trunk/libstdc++-v3/include/experimental/string trunk/libstdc++-v3/include/experimental/string_view trunk/libstdc++-v3/include/experimental/system_error trunk/libstdc++-v3/include/experimental/tuple trunk/libstdc++-v3/include/experimental/type_traits trunk/libstdc++-v3/include/experimental/unordered_map trunk/libstdc++-v3/include/experimental/unordered_set trunk/libstdc++-v3/include/experimental/vector trunk/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc trunk/libstdc++-v3/testsuite/experimental/array/neg.cc trunk/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc trunk/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc trunk/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc trunk/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc trunk/libstdc++-v3/testsuite/experimental/propagate_const/requir
[Bug sanitizer/77631] no symbols in backtrace shown by ASan when debug info is split
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77631 --- Comment #12 from Ian Lance Taylor --- I don't think this is a dup of 67165, which is about compressed debug sections. This PR is about debug info in separate files.
[Bug tree-optimization/82157] [8 Regression] ICE on valid code at -O2 and -O3: cannot update SSA form
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82157 --- Comment #4 from Richard Biener --- Author: rguenth Date: Tue Sep 12 14:15:37 2017 New Revision: 252020 URL: https://gcc.gnu.org/viewcvs?rev=252020&root=gcc&view=rev Log: 2017-09-12 Richard Biener PR tree-optimization/82157 * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove stmts with side-effects. * gcc.dg/torture/pr82157.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/torture/pr82157.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-pre.c
[Bug tree-optimization/82157] [8 Regression] ICE on valid code at -O2 and -O3: cannot update SSA form
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82157 Richard Biener changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #3 from Richard Biener --- Fixed.
[Bug tree-optimization/82042] signed integer overflow in ao_ref_init_from_ptr_and_size
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82042 --- Comment #4 from Martin Liška --- I see, thanks for clarification. I'm going to send patch for the remaining bits, hopefully I made it in a right way.
[Bug tree-optimization/82191] [8 Regression] ICE: Segmentation fault (in verify_use)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82191 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-09-12 CC||marxin at gcc dot gnu.org, ||rguenth at gcc dot gnu.org Target Milestone|--- |8.0 Ever confirmed|0 |1 --- Comment #1 from Martin Liška --- Started with r251798. BT: gcc pr82191.c -O2 -c during GIMPLE pass: pre pr82191.c: In function ‘cg’: pr82191.c:5:1: internal compiler error: Segmentation fault cg (int *tc, int y2) ^~ 0xc2d05b crash_signal ../../gcc/toplev.c:341 0xe66288 gimple_code ../../gcc/gimple.h:1678 0xe67281 gimple_nop_p ../../gcc/gimple.h:6276 0xe6a51d verify_use ../../gcc/tree-ssa.c:863 0xe6b2dc verify_ssa(bool, bool) ../../gcc/tree-ssa.c:1141 0xb495c7 execute_function_todo ../../gcc/passes.c:1999 0xb4a4f2 execute_todo ../../gcc/passes.c:2046
[Bug tree-optimization/82128] [8 Regression] ICE on valid code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82128 --- Comment #3 from Richard Biener --- Hmm, causes Running /tmp/trunk/gcc/testsuite/g++.dg/dg.exp ... FAIL: g++.dg/ipa/pr65263.C -std=gnu++98 (internal compiler error) FAIL: g++.dg/ipa/pr65263.C -std=gnu++98 (test for excess errors) FAIL: g++.dg/ipa/pr65263.C -std=gnu++11 (internal compiler error) FAIL: g++.dg/ipa/pr65263.C -std=gnu++11 (test for excess errors) FAIL: g++.dg/ipa/pr65263.C -std=gnu++14 (internal compiler error) FAIL: g++.dg/ipa/pr65263.C -std=gnu++14 (test for excess errors) === g++ Summary === # of unexpected failures6 /tmp/trunk/gcc/testsuite/g++.dg/ipa/pr65263.C: In member function 'int D::F::operator()() const':^M /tmp/trunk/gcc/testsuite/g++.dg/ipa/pr65263.C:42:5: internal compiler error: Segmentation fault^M 0x11cea13 crash_signal^M /tmp/trunk/gcc/toplev.c:341^M 0xc6da67 compute_call_stmt_bb_frequency(tree_node*, basic_block_def*)^M /tmp/trunk/gcc/cgraphbuild.c:195^M 0xc677e4 cgraph_node::verify_node()^M /tmp/trunk/gcc/cgraph.c:3244^M 0xc564a9 symtab_node::verify()^M /tmp/trunk/gcc/symtab.c:1204^M where a callgraph edge references a removed stmt (the folded call). Because static void cgraph_update_edges_for_call_stmt_node (cgraph_node *node, gimple *old_stmt, tree old_call, gimple *new_stmt) { tree new_call = (new_stmt && is_gimple_call (new_stmt)) ? gimple_call_fndecl (new_stmt) : 0; /* We are seeing indirect calls, then there is nothing to update. */ if (!new_call && !old_call) return; we turned an indirect call into a non-call (the LHS effect of it after a __builtin_unreachable ()). Testing an updated patch.
[Bug testsuite/82114] gcc.dg/gimplefe-14.c for bare metal and argc is 0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82114 --- Comment #2 from Martin Liška --- Author: marxin Date: Tue Sep 12 14:32:39 2017 New Revision: 252024 URL: https://gcc.gnu.org/viewcvs?rev=252024&root=gcc&view=rev Log: Fix GIMPLE FE test (PR testsuite/82114) 2017-09-12 Martin Liska PR testsuite/82114 * gcc.dg/gimplefe-14.c (main): Add handling of case 0. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/gimplefe-14.c
[Bug testsuite/82114] gcc.dg/gimplefe-14.c for bare metal and argc is 0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82114 Martin Liška changed: What|Removed |Added Known to work||8.0 Known to fail||7.2.0 --- Comment #3 from Martin Liška --- Fixed on trunk so far.
[Bug tree-optimization/82128] [8 Regression] ICE on valid code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82128 Richard Biener changed: What|Removed |Added CC||hubicka at gcc dot gnu.org --- Comment #4 from Richard Biener --- Testing the attached but I expect it'll not work as the updating in cgraph_update_edges_for_call_stmt_node seems to expect a 1:1 "folding". It does look fragile as hell... I guess I'll finally go and make SSA_NAME_DEFAULT_DEF possible on anon SSA names which means we can avoid that extra stmt in folding...
[Bug tree-optimization/82191] [8 Regression] ICE: Segmentation fault (in verify_use)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82191 --- Comment #2 from rguenther at suse dot de --- On Tue, 12 Sep 2017, marxin at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82191 > > Martin Liška changed: > >What|Removed |Added > > Status|UNCONFIRMED |NEW >Last reconfirmed||2017-09-12 > CC||marxin at gcc dot gnu.org, >||rguenth at gcc dot gnu.org >Target Milestone|--- |8.0 > Ever confirmed|0 |1 > > --- Comment #1 from Martin Liška --- > Started with r251798. Likely dup of PR82157 > BT: > gcc pr82191.c -O2 -c > during GIMPLE pass: pre > pr82191.c: In function ‘cg’: > pr82191.c:5:1: internal compiler error: Segmentation fault > cg (int *tc, int y2) > ^~ > 0xc2d05b crash_signal > ../../gcc/toplev.c:341 > 0xe66288 gimple_code > ../../gcc/gimple.h:1678 > 0xe67281 gimple_nop_p > ../../gcc/gimple.h:6276 > 0xe6a51d verify_use > ../../gcc/tree-ssa.c:863 > 0xe6b2dc verify_ssa(bool, bool) > ../../gcc/tree-ssa.c:1141 > 0xb495c7 execute_function_todo > ../../gcc/passes.c:1999 > 0xb4a4f2 execute_todo > ../../gcc/passes.c:2046 > >
[Bug tree-optimization/82128] [8 Regression] ICE on valid code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82128 --- Comment #5 from Richard Biener --- Trying Index: gcc/gimple-fold.c === --- gcc/gimple-fold.c (revision 252006) +++ gcc/gimple-fold.c (working copy) @@ -3862,24 +3862,18 @@ gimple_fold_call (gimple_stmt_iterator * tree fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE); gimple *new_stmt = gimple_build_call (fndecl, 0); gimple_set_location (new_stmt, gimple_location (stmt)); + /* If the call had a SSA name as lhs morph that into +an uninitialized value. */ if (lhs && TREE_CODE (lhs) == SSA_NAME) { tree var = create_tmp_var (TREE_TYPE (lhs)); - tree def = get_or_create_ssa_default_def (cfun, var); - - /* To satisfy condition for -cgraph_update_edges_for_call_stmt_node, -we need to preserve GIMPLE_CALL statement -at position of GSI iterator. */ - update_call_from_tree (gsi, def); - gsi_insert_before (gsi, new_stmt, GSI_NEW_STMT); - } - else - { - gimple_set_vuse (new_stmt, gimple_vuse (stmt)); - gimple_set_vdef (new_stmt, gimple_vdef (stmt)); - gsi_replace (gsi, new_stmt, false); + SET_SSA_NAME_VAR_OR_IDENTIFIER (lhs, var); + SSA_NAME_DEF_STMT (lhs) = gimple_build_nop (); + set_ssa_default_def (cfun, var, lhs); } + gimple_set_vuse (new_stmt, gimple_vuse (stmt)); + gimple_set_vdef (new_stmt, gimple_vdef (stmt)); + gsi_replace (gsi, new_stmt, false); return true; } }
[Bug tree-optimization/82192] New: gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 Bug ID: 82192 Summary: gcc produces incorrect code with -O2 and bit-field Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- gcc produces incorrect code with -O2 and higher and unsigned int : 13 bit-field >$ g++ -O2 driver.cpp func.cpp ; ./a.out 6930 >$ g++ -O0 driver.cpp func.cpp ; ./a.out 0 >$ cat init.h extern const unsigned long int a; struct struct_t { unsigned int memb : 13; }; extern struct_t b; >$ cat driver.cpp #include #include "init.h" const unsigned long int a = 10798855141994013410UL; struct_t b; extern void foo (); int main () { foo (); printf("%llu\n", b.memb); return 0; } >$ cat func.cpp #include "init.h" void foo() { b.memb = unsigned(a) >> (7227976781724269559 | a & ~3739384568U) - 7227976781724531672; } >$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /gcc-dev/trunk/configure --prefix=/gcc-dev/bin-trunk --disable-bootstrap Thread model: posix gcc version 8.0.0 20170912 (Rev. 252003) (GCC)
[Bug tree-optimization/82192] gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 --- Comment #1 from Andrew Pinski --- Does -fsantize=undefined show anything? I am suspecting you have undefined behavior with respect to the shift.
[Bug target/82112] internal compiler error: in fold_convert_loc, at fold-const.c:2262
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82112 --- Comment #3 from Jakub Jelinek --- Author: jakub Date: Tue Sep 12 15:25:15 2017 New Revision: 252028 URL: https://gcc.gnu.org/viewcvs?rev=252028&root=gcc&view=rev Log: PR target/82112 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion on it early, rather than manual conversion late. For ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion instead of performing manual conversion. * gcc.target/powerpc/pr82112.c: New test. * g++.dg/ext/altivec-18.C: New test. Added: trunk/gcc/testsuite/g++.dg/ext/altivec-18.C trunk/gcc/testsuite/gcc.target/powerpc/pr82112.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000-c.c trunk/gcc/testsuite/ChangeLog
[Bug target/80204] macosx-version-min wrong for macOS Sierra 10.12.3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80204 --- Comment #4 from Jeffrey A. Law --- Author: law Date: Tue Sep 12 15:29:16 2017 New Revision: 252029 URL: https://gcc.gnu.org/viewcvs?rev=252029&root=gcc&view=rev Log: PR target/80204 * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate calculation of the minor version, always output as 0. Modified: trunk/gcc/ChangeLog trunk/gcc/config/darwin-driver.c
[Bug tree-optimization/82192] gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 --- Comment #2 from Vsevolod Livinskiy --- (In reply to Andrew Pinski from comment #1) > Does -fsantize=undefined show anything? > > I am suspecting you have undefined behavior with respect to the shift. Test doesn't contain undefined behavior, and sanitizer verifies it. (7227976781724269559 | a & ~3739384568U) gives 7227976781724531703, and (7227976781724269559 | a & ~3739384568U) - 7227976781724531672 gives 31, so shift is OK.
[Bug c/80942] -Woverlength-strings should no longer be implied by -Wpedantic
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80942 --- Comment #5 from joseph at codesourcery dot com --- On Tue, 12 Sep 2017, vincent-gcc at vinc17 dot net wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80942 > > --- Comment #4 from Vincent Lefèvre --- > (In reply to jos...@codesourcery.com from comment #2) > > The documentation explicitly says -Wpedantic includes some warnings about > > things outside of ISO C, beyond those that violate syntax rules or > > constraints. > > This is not what is documented: > > Issue all the warnings demanded by strict ISO C and ISO C++; reject > all programs that use forbidden extensions, and some other programs > that do not follow ISO C and ISO C++. For ISO C, follows the > version of the ISO C standard specified by any -std option used. I consider this to be within the "some other programs". The question, I suppose, is whether implementation limits should be moved out of the scope of -Wpedantic.
[Bug tree-optimization/82192] gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 --- Comment #3 from joseph at codesourcery dot com --- On Tue, 12 Sep 2017, vsevolod.livinskij at frtk dot ru wrote: > struct struct_t { > unsigned int memb : 13; > }; > > extern struct_t b; > printf("%llu\n", b.memb); unsigned int : 13 (promoted to int - I think C++ promotes narrower-than-int bit-fields to int, though for C++ the bit-field width is not considered part of the type) is not valid for printf %llu. You need to explicitly cast to unsigned long long.
[Bug target/81422] [aarch64] internal compiler error: in update_equiv_regs, at ira.c:3425
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81422 Qing Zhao changed: What|Removed |Added CC||qing.zhao at oracle dot com --- Comment #2 from Qing Zhao --- I can repeat this bug on aarch64 machine with the latest gcc. I am taking a deeper study on this one now. let me know if you are currently working on the fix of this one.
[Bug libstdc++/80704] Error while invoking `string_view::string_view(const char*)` in a `constexpr` context
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80704 Jonathan Wakely changed: What|Removed |Added Target Milestone|8.0 |7.3 --- Comment #2 from Jonathan Wakely --- Now also fixed for 7.3
[Bug c++/80265] __builtin_{memcmp,memchr,strlen} are not usable in constexpr functions
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80265 --- Comment #20 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 16:27:01 2017 New Revision: 252030 URL: https://gcc.gnu.org/viewcvs?rev=252030&root=gcc&view=rev Log: Finish implementing P0426R1 "Constexpr for std::char_traits" for C++17 As discussed in PR c++/80265 ("__builtin_{memcmp,memchr,strlen} are not usable in constexpr functions"), use __builtin_constant_p to tell whether we can defer to a constexpr algorithm. I used __always_inline__ just to be thorough. It isn't really really necessary as far as I could determine. Changes like these: if (__n == 0) return 0; - return wmemcmp(__s1, __s2, __n); + else +return wmemcmp(__s1, __s2, __n); are necessary otherwise G++ complains that we're calling a non-constexpr function, which looks like a a manifestation of PR67026 to me. libstdc++-v3: 2017-06-12 Pedro Alves * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr char_traits status. * doc/html/*: Regenerate. * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if not already defined. (__cpp_lib_constexpr_char_traits): Uncomment. (__constant_string_p, __constant_char_array_p): New. (std::char_traits, std::char_traits): Add _GLIBCXX17_CONSTEXPR on compare, length and find and use __constant_string_p, __constant_char_array_p and __builtin_constant_p to defer to __gnu_cxx::char_traits at compile time. * testsuite/21_strings/char_traits/requirements/ constexpr_functions_c++17.cc: Uncomment __cpp_lib_constexpr_char_traits tests. Uncomment test_compare, test_length, test_find, test_compare, test_length and test_find static_assert tests. Modified: branches/gcc-7-branch/libstdc++-v3/ChangeLog branches/gcc-7-branch/libstdc++-v3/doc/html/manual/status.html branches/gcc-7-branch/libstdc++-v3/doc/xml/manual/status_cxx2017.xml branches/gcc-7-branch/libstdc++-v3/include/bits/char_traits.h branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
[Bug libstdc++/70483] string_view::compare and coparision operators are not constexpr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70483 --- Comment #6 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 16:27:14 2017 New Revision: 252032 URL: https://gcc.gnu.org/viewcvs?rev=252032&root=gcc&view=rev Log: PR libstdc++/70483 make std::experimental::string_view fully constexpr Backport from mainline 2017-09-12 Jonathan Wakely PR libstdc++/70483 * include/experimental/bits/string_view.tcc (basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of): Add constexpr specifier. * include/experimental/string_view (basic_string_view::remove_prefix) (basic_string_view::remove_suffix, basic_string_view::swap) (basic_string_view::compare, basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of, operator==, operator!=) (operator<, operator>, operator<=, operator>=): Likewise. * testsuite/experimental/string_view/operations/compare/char/70483.cc: New. Added: branches/gcc-7-branch/libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc Modified: branches/gcc-7-branch/libstdc++-v3/ChangeLog branches/gcc-7-branch/libstdc++-v3/include/experimental/bits/string_view.tcc branches/gcc-7-branch/libstdc++-v3/include/experimental/string_view
[Bug libstdc++/70483] string_view::compare and coparision operators are not constexpr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70483 --- Comment #5 from Jonathan Wakely --- Author: redi Date: Tue Sep 12 16:27:09 2017 New Revision: 252031 URL: https://gcc.gnu.org/viewcvs?rev=252031&root=gcc&view=rev Log: PR libstdc++/70483 make std::string_view fully constexpr Backport from mainline 2017-09-11 Jonathan Wakely PR libstdc++/70483 * include/bits/string_view.tcc (basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of): Add constexpr specifier. * include/std/string_view (basic_string_view::operator=) (basic_string_view::rbegin, basic_string_view::rend) (basic_string_view::crbegin, basic_string_view::crend) (basic_string_view::remove_prefix, basic_string_view::remove_suffix) (basic_string_view::swap, basic_string_view::compare) (basic_string_view::find, basic_string_view::rfind) (basic_string_view::find_first_of, basic_string_view::find_last_of) (basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of, basic_string_view::_M_check) (basic_string_view::_M_limit, operator==, operator!=, operator<) (operator>, operator<=, operator>=): Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ char/1.cc: Repeat tests in constexpr context. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test cbegin, cend, rbegin, rend, crbegin and crend. * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: Remove trailing whitespace. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ 1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc: New. * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc: New. * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc: New. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ 2.cc: New. Added: branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/ branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/ branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc - copied, changed from r252030, branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/ branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc - copied, changed from r252030, branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc - copied, changed from r252030, branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc - copied, changed from r252030, branches/gcc-7-branch/libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc Modified: branches/gcc-7-branch/libstdc++-v3/ChangeLog branches/gcc-7-branch/libstdc++-v3/include/bits/string_view.tcc branches/gcc-7-branch/libstdc++-v3/include/std/string_view branches/gcc-7-branch/libstdc++-v3/testsuite/21_stri
[Bug libstdc++/70483] string_view::compare and coparision operators are not constexpr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70483 Jonathan Wakely changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #7 from Jonathan Wakely --- And now for 7.3 as well.
[Bug driver/81498] Support creating static PIE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81498 --- Comment #1 from hjl at gcc dot gnu.org --- Author: hjl Date: Tue Sep 12 16:30:28 2017 New Revision: 252034 URL: https://gcc.gnu.org/viewcvs?rev=252034&root=gcc&view=rev Log: Add -static-pie to GCC driver to create static PIE This patch adds -static-pie to GCC driver to create static PIE. A static position independent executable (PIE) is similar to static executable, but can be loaded at any address without a dynamic linker. All linker input files must be compiled with -fpie or -fPIE and linker must support --no-dynamic-linker to avoid linking with dynamic linker. "-z text" is also needed to prevent dynamic relocations in read-only segments. PR driver/81498 * common.opt (-static-pie): New alias. (shared): Negate static-pie. (-no-pie): Update help text. (-pie): Likewise. (static-pie): New option. * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add -static-pie support. (GNU_USER_TARGET_ENDFILE_SPEC): Likewise. (LINK_EH_SPEC): Likewise. (LINK_GCC_C_SEQUENCE_SPEC): Likewise. * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise. * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise. * gcc.c (LINK_COMMAND_SPEC): Likewise. (init_gcc_specs): Likewise. (init_spec): Likewise. (display_help): Update help message for -pie. * doc/invoke.texi: Update -pie, -no-pie and -static. Document -static-pie. Modified: trunk/gcc/ChangeLog trunk/gcc/common.opt trunk/gcc/config/gnu-user.h trunk/gcc/config/i386/gnu-user.h trunk/gcc/config/i386/gnu-user64.h trunk/gcc/doc/invoke.texi trunk/gcc/gcc.c
[Bug target/81325] -fcompare-debug failure on ppc64le
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81325 --- Comment #4 from Jakub Jelinek --- Created attachment 42160 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42160&action=edit gcc8-pr81325.patch Untested fix.
[Bug other/81096] [8 regression] test case ttest in libbacktrace fails starting with its introduction in r249111
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81096 --- Comment #5 from Steve Ellcey --- Author: sje Date: Tue Sep 12 16:33:31 2017 New Revision: 252035 URL: https://gcc.gnu.org/viewcvs?rev=252035&root=gcc&view=rev Log: 2017-09-12 Steve Ellcey PR other/81096 * libbacktrace/Makefile.in (HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ttest_CFLAGS): Add $(AM_CFLAGS) Modified: trunk/libbacktrace/ChangeLog trunk/libbacktrace/Makefile.in
[Bug driver/81498] Support creating static PIE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81498 H.J. Lu changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED Target Milestone|--- |8.0 --- Comment #2 from H.J. Lu --- Fixed for GCC 8.