[Bug c/82100] gcc does not warn about code that is unreachable due to conflicting conditions [subset of reviving -Wunreachable-code]

2020-09-15 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82100

--- Comment #5 from David Binderman  ---
clang 11.0.0-rc2 also can't find problems in the two above code fragments.

This code problem doesn't occur in gcc source code, but there are about
a dozen cases in the linux kernel.

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #2 from Eric Botcazou  ---
The statement generated by DSE

MEM  [(struct Data *)&data + 8B] = {};

looks nonsensical and I guess store-merging is not prepared for it.

[Bug fortran/96668] [OpenMP] Re-mapping allocated but previously unallocated allocatable does not work

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96668

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Tobias Burnus :

https://gcc.gnu.org/g:972da557463ec946a31577294764a186b9821012

commit r11-3200-g972da557463ec946a31577294764a186b9821012
Author: Tobias Burnus 
Date:   Tue Sep 15 09:24:47 2020 +0200

OpenMP/Fortran: Fix (re)mapping of allocatable/pointer arrays [PR96668]

gcc/cp/ChangeLog:

PR fortran/96668
* cp-gimplify.c (cxx_omp_finish_clause): Add bool openacc arg.
* cp-tree.h (cxx_omp_finish_clause): Likewise
* semantics.c (handle_omp_for_class_iterator): Update call.

gcc/fortran/ChangeLog:

PR fortran/96668
* trans.h (gfc_omp_finish_clause): Add bool openacc arg.
* trans-openmp.c (gfc_omp_finish_clause): Ditto. Use
GOMP_MAP_ALWAYS_POINTER with PSET for pointers.
(gfc_trans_omp_clauses): Like the latter and also if the always
modifier is used.

gcc/ChangeLog:

PR fortran/96668
* gimplify.c (gimplify_omp_for): Add 'bool openacc' argument;
update omp_finish_clause calls.
(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses,
gimplify_expr, gimplify_omp_loop): Update omp_finish_clause
and/or gimplify_for calls.
* langhooks-def.h (lhd_omp_finish_clause): Add bool openacc arg.
* langhooks.c (lhd_omp_finish_clause): Likewise.
* langhooks.h (lhd_omp_finish_clause): Likewise.
* omp-low.c (scan_sharing_clauses): Keep GOMP_MAP_TO_PSET cause for
'declare target' vars.

include/ChangeLog:

PR fortran/96668
* gomp-constants.h (GOMP_MAP_ALWAYS_POINTER_P): Define.

libgomp/ChangeLog:

PR fortran/96668
* libgomp.h (struct target_var_desc): Add has_null_ptr_assoc
member.
* target.c (gomp_map_vars_existing): Add always_to_flag flag.
(gomp_map_vars_existing): Update call to it.
(gomp_map_fields_existing): Likewise
(gomp_map_vars_internal): Update PSET handling such that if a
nullptr is
now allocated or if GOMP_MAP_POINTER is used PSET is updated and
pointer
remapped.
(GOMP_target_enter_exit_data): Hanlde GOMP_MAP_ALWAYS_POINTER like
GOMP_MAP_POINTER.
* testsuite/libgomp.fortran/map-alloc-ptr-1.f90: New test.
* testsuite/libgomp.fortran/map-alloc-ptr-2.f90: New test.

[Bug fortran/96668] [OpenMP] Re-mapping allocated but previously unallocated allocatable does not work

2020-09-15 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96668

--- Comment #6 from Tobias Burnus  ---
Fixed for pointer/allocatable arrays.

Still to be done: scalar pointers/allocatable; here, one needs to be careful as
pointer/always pointer is already used for, e.g., struct mapping – and always
pointer currently assumes that the pointer is already present (assert;
change?).

Plus: ensure the refcounting works correctly.

[Bug target/97028] [9/10/11 Regression] Compilation errors for AVX512 intrinsic with -masm=intel

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97028

--- Comment #6 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:0f079e104a8d1994b6b47169a6b45737615eb2d7

commit r11-3201-g0f079e104a8d1994b6b47169a6b45737615eb2d7
Author: Jakub Jelinek 
Date:   Tue Sep 15 09:37:48 2020 +0200

i386: Fix up vector mul and div with broadcasts in -masm=intel mode

These patterns printed bogus <>s around the {1to16} and similar strings.

2020-09-15  Jakub Jelinek  

PR target/97028
* config/i386/sse.md (mul3_bcs,
_div3_bcst): Use  instead of
<>.

* gcc.target/i386/avx512f-pr97028.c: Untested fix.

[Bug target/97056] New: [11 regression] aarch64/sve/cost_model_2.c fails on aarch64_be since r11-3148

2020-09-15 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97056

Bug ID: 97056
   Summary: [11 regression] aarch64/sve/cost_model_2.c fails on
aarch64_be since r11-3148
   Product: gcc
   Version: 10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---

Since r11-3148 (g:8d3767c30240c901a493d82d9d20f306b2f0152d), I've noticed that:
FAIL: gcc.target/aarch64/sve/cost_model_2.c -march=armv8.2-a+sve 
scan-assembler-times \\tstr\\tq 1
gcc.target/aarch64/sve/cost_model_2.c -march=armv8.2-a+sve : \\tstr\\tq found 0
times

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #3 from Jakub Jelinek  ---
Started with my r10-179-g3afd514bca6ea572e614b5289c4429ace693311b
I'll have a look.

[Bug debug/96690] [10 Regression] ICE in write_type since r10-6087

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96690

Richard Biener  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED
  Known to work||10.2.1
  Known to fail||10.2.0

--- Comment #10 from Richard Biener  ---
Fixed.

[Bug debug/96690] [10 Regression] ICE in write_type since r10-6087

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96690

--- Comment #9 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Richard Biener
:

https://gcc.gnu.org/g:bfe7bfbd068ee752f9d264473f974883ec6a21e6

commit r10-8764-gbfe7bfbd068ee752f9d264473f974883ec6a21e6
Author: Richard Biener 
Date:   Mon Aug 24 14:12:01 2020 +0200

debug/96690 - mangle symbols eventually used by late dwarf output

The following makes sure to, at early debug generation time, mangle
symbols we eventually end up outputting during late finish.

2020-08-24  Richard Biener  

PR debug/96690
* dwarf2out.c (reference_to_unused): Make FUNCTION_DECL
processing more consistent with respect to
symtab->global_info_ready.
(tree_add_const_value_attribute): Unconditionally call
rtl_for_decl_init to do all mangling early but throw
away the result if early_dwarf.

* g++.dg/lto/pr96690_0.C: New testcase.

(cherry picked from commit 7fe2cec41bb2ccb499b6b6c513e00da1a270370f)

[Bug target/97028] [9/10/11 Regression] Compilation errors for AVX512 intrinsic with -masm=intel

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97028

--- Comment #8 from CVS Commits  ---
The releases/gcc-9 branch has been updated by Jakub Jelinek
:

https://gcc.gnu.org/g:d0a094ce39fc49681b0d5cfd2ee1d232859c4824

commit r9-8871-gd0a094ce39fc49681b0d5cfd2ee1d232859c4824
Author: Jakub Jelinek 
Date:   Tue Sep 15 09:37:48 2020 +0200

i386: Fix up vector mul and div with broadcasts in -masm=intel mode

These patterns printed bogus <>s around the {1to16} and similar strings.

2020-09-15  Jakub Jelinek  

PR target/97028
* config/i386/sse.md (mul3_bcs,
_div3_bcst): Use  instead of
<>.

* gcc.target/i386/avx512f-pr97028.c: Untested fix.

(cherry picked from commit 0f079e104a8d1994b6b47169a6b45737615eb2d7)

[Bug target/97028] [9/10/11 Regression] Compilation errors for AVX512 intrinsic with -masm=intel

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97028

--- Comment #7 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Jakub Jelinek
:

https://gcc.gnu.org/g:55cd12c65ffa1e7c0bb36fd398f178d5d15d660f

commit r10-8765-g55cd12c65ffa1e7c0bb36fd398f178d5d15d660f
Author: Jakub Jelinek 
Date:   Tue Sep 15 09:37:48 2020 +0200

i386: Fix up vector mul and div with broadcasts in -masm=intel mode

These patterns printed bogus <>s around the {1to16} and similar strings.

2020-09-15  Jakub Jelinek  

PR target/97028
* config/i386/sse.md (mul3_bcs,
_div3_bcst): Use  instead of
<>.

* gcc.target/i386/avx512f-pr97028.c: Untested fix.

(cherry picked from commit 0f079e104a8d1994b6b47169a6b45737615eb2d7)

[Bug target/97028] [9/10/11 Regression] Compilation errors for AVX512 intrinsic with -masm=intel

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97028

Jakub Jelinek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #9 from Jakub Jelinek  ---
Fixed for 9.4/10.3/11.1+.

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #4 from Jakub Jelinek  ---
Reduced testcase:

struct S { short a; char b[9]; int c; char d; int e; };

__attribute__((noipa)) void
foo (char *x, char *y)
{
  if (__builtin_strcmp (x, "ABCD") != 0
  || __builtin_strcmp (y, "ABCD") != 0)
__builtin_abort ();
}

int
main ()
{
  char a[9] = "";
  struct S b = {};
  __builtin_memcpy (a, "ABCD", 4);
  b.a = 5;
  __builtin_memcpy (b.b, a, 8); 
  b.d = 'X';
  b.e = 1;
  foo (a, b.b);
  return 0;
}

[Bug target/96882] Wrong assembly code generated with arm-none-eabi-gcc -flto -mfloat-abi=hard options

2020-09-15 Thread emilie.feral at numworks dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96882

--- Comment #7 from emilie.feral at numworks dot com ---
Hello,
Any news on the subject?
Would you advise in the meantime to discard the LTO (with the -fno-lto option)
on the compilation unit containing the failing code?
The bug occurred for us when returning a structure of four doubles. Do you have
any indication of when the bug might appear to help us track other occurrences?
Thanks for helping!

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #5 from Jakub Jelinek  ---
Better testcase that won't cease to test the bug even if FRE or some other pass
gets smarter and optimizes the a = ""; __builtin_memcpy (&a, "ABCD",
4);
into a = "ABCD":

struct S { short a; char b[9]; int c; char d; int e; };

__attribute__((noipa)) void
foo (struct S *x)
{
  if (__builtin_strcmp (x->b, "ABCD") != 0)
__builtin_abort ();
}

__attribute__((noipa)) void
bar (char *x)
{
  struct S b = {};
  b.a = 5;
  __builtin_memcpy (b.b, x, 8); 
  b.d = 'X';
  b.e = 1;
  foo (&b);
}

int
main ()
{
  bar ("ABCD");
  return 0;
}

(In reply to Eric Botcazou from comment #2)
> The statement generated by DSE
> 
> MEM  [(struct Data *)&data + 8B] = {};
> 
> looks nonsensical and I guess store-merging is not prepared for it.

There is nothing non-sensical nor wrong on it, it is standard GIMPLE IL,
equivalent in behavior to __builtin_memset (&data + 8B, 0, 12);

[Bug c++/83591] -Wduplicated-branches fires in system headers in template instantiation

2020-09-15 Thread TonyELewis at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83591

Tony E Lewis  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #9 from Tony E Lewis  ---
Closing as fixed.

[Bug target/96744] [11 Regression] FAIL: gcc.target/i386/avx512bitalgvl-vpopcntb-1.c execution test

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96744

--- Comment #14 from CVS Commits  ---
The master branch has been updated by hongtao Liu :

https://gcc.gnu.org/g:ecc3135a4a264b66c163ef32e815a99746b81800

commit r11-3202-gecc3135a4a264b66c163ef32e815a99746b81800
Author: liuhongt 
Date:   Mon Aug 24 20:36:52 2020 +0800

Retune mask <->integer cost for non-AVX512 micro-architecture.

gcc/ChangeLog:

PR target/96744
* config/i386/x86-tune-costs.h (struct processor_costs):
Increase mask <-> integer cost for non AVX512 target to avoid
spill gpr to mask. Also retune mask <-> integer and
mask_load/store for skylake_cost.

[Bug target/96744] [11 Regression] FAIL: gcc.target/i386/avx512bitalgvl-vpopcntb-1.c execution test

2020-09-15 Thread crazylht at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96744

--- Comment #15 from Hongtao.liu  ---
Fixed in GCC11.

[Bug target/95646] arm-none-eabi function attribute 'cmse_nonsecure_entry' wipes register values with -Os

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95646

--- Comment #3 from CVS Commits  ---
The master branch has been updated by Andre Simoes Dias Vieira
:

https://gcc.gnu.org/g:80297f897758f59071968ddff2a04a8d11481117

commit r11-3203-g80297f897758f59071968ddff2a04a8d11481117
Author: Andre Vieira 
Date:   Mon Sep 14 09:03:08 2020 +0100

arm: Fix testisms introduced with fix for pr target/95646

This patch changes the test to use the effective-target machinery disables
the
error message "ARMv8-M Security Extensions incompatible with selected FPU"
when
-mfloat-abi=soft.
Further changes 'asm' to '__asm__' to avoid failures with '-std=' options.

gcc/ChangeLog:
2020-07-06  Andre Vieira  

* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Do not
check +D32 for CMSE if -mfloat-abi=soft

gcc/testsuite/ChangeLog:
2020-07-06  Andre Vieira  

* gcc.target/arm/pr95646.c: Fix testism.

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #6 from Jakub Jelinek  ---
I think the problem is that check_no_overlap only looks at later m_store_info
stores that would overlap and cause problems.
But in this case, the problem is that we'd need to check earlier m_store_info
store too.
We have in the stmt order
bitpos bitsize kind order
64 96 INTEGER_CST 0
0 16 INTEGER_CST 1
16 64 MEM_REF 2
128 8 INTEGER_CST 3
160 32 INTEGER_CST 4
After sort_by_bitpos this is:
0 16 INTEGER_CST 1
16 64 MEM_REF 2
64 96 INTEGER_CST 0
128 8 INTEGER_CST 3
160 32 INTEGER_CST 4
The first store in this order doesn't overlap anything and is followed by
adjacent store of incompatible kind, so is kept as is.
Then the MEM_REF store is kept as is too, because again it overlaps with the
next one, but is of a different kind.
The bug is when deciding if the 3rd store could be mergeable with the 4th
store.
They are overlapping and of the same kind that can be handled for overlapping
stores, but they shouldn't be merged, because there was a non-mergeable
overlapping store in between them in the sort_by_order order (the MEM_REF one).

[Bug target/96201] x86 movsd/movsq string instructions and alignment inference

2020-09-15 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96201

bin cheng  changed:

   What|Removed |Added

 CC||amker at gcc dot gnu.org

--- Comment #2 from bin cheng  ---
Reason is that memory references in f3 are not identified as address type IV
uses.  I don't remember details, but it's intended by below commit:
commit 653a4b32fe72e33bfd4cdd4c25493049524a3805
Author: Bin Cheng 
Date:   Thu Mar 2 11:25:11 2017 +

re PR tree-optimization/66768 (address space gets lost on literal pointer)

PR tree-optimization/66768
* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
iv_use if base object can't be determined.

gcc/testsuite
* gcc.target/i386/pr66768.c: New test.

From-SVN: r245837

For f1/f2, IVOPTs fails to identify base object because pointers are converted
from integer.  We need to tell the difference better.

For f3, __builtin_assume_aligned is optimized away by GCC-10 before IVOPTs.

[Bug middle-end/97054] [10/11 Regression] Runtime segfault with attached test code since r10-3559

2020-09-15 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97054

--- Comment #1 from H.J. Lu  ---
Created attachment 49220
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49220&action=edit
A patch

I am testing this.

[Bug target/97056] [11 regression] aarch64/sve/cost_model_2.c fails on aarch64_be since r11-3148

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97056

Richard Biener  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org
   Target Milestone|--- |11.0
Version|10.0|11.0

--- Comment #1 from Richard Biener  ---
Did it pass at g:484af18ee1c63eb8d212563e40aa765da5be7f82 thus before the
g:47ddf4c7b1d4471cb9534f27844ab5e4279c2168 change?

[Bug target/97056] [11 regression] aarch64/sve/cost_model_2.c fails on aarch64_be since r11-3148

2020-09-15 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97056

--- Comment #2 from Christophe Lyon  ---
No, it was failing at that time.

It started passing between r11-3093 and r11-3103, and fails again since
r11-3148.

[Bug target/97056] [11 regression] aarch64/sve/cost_model_2.c fails on aarch64_be since r11-3148

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97056

--- Comment #3 from Richard Biener  ---
OK, in between the revs the cost modeling was disabled so that would explain
it, we just got back to the previous state then.

[Bug rtl-optimization/96475] direct threaded interpreter with computed gotos generates suboptimal dispatch loop

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96475

--- Comment #24 from CVS Commits  ---
The master branch has been updated by Segher Boessenkool :

https://gcc.gnu.org/g:bab581381681813ab3ccd007195777c1f816e656

commit r11-3205-gbab581381681813ab3ccd007195777c1f816e656
Author: Segher Boessenkool 
Date:   Mon Sep 14 18:19:47 2020 +

bb-reorder: Fix for ICEs caused by 69ca5f3a9882

After the previous patch we are left with an unreachable BB.  This will
ICE if either we have -fschedule-fusion, or we do not have peephole2.

2020-09-15  Segher Boessenkool  

PR rtl-optimization/96475
* bb-reorder.c (duplicate_computed_gotos): If we did anything, run
cleanup_cfg.

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

--- Comment #7 from Jakub Jelinek  ---
Another testcase for -O2 -fno-tree-dse that shows more issues, that it affects
not just the overlapping case handling, but also can affect also the adjacent
cases:
struct __attribute__((packed, may_alias)) S { long long s; };
struct __attribute__((packed, may_alias)) T { short t; };

__attribute__((noipa)) void
test (char *p, char *q, int s)
{
  if ((s & 1) == 0)
{
  if (*(short __attribute__((may_alias)) *) &p[sizeof (short)]
  != *(short __attribute__((may_alias)) *) &q[sizeof (short)]
  || (((struct S __attribute__((may_alias)) *) &p[1])->s
  != ((struct S __attribute__((may_alias)) *) &q[1])->s)
  || (*(short __attribute__((may_alias)) *) &p[2 * sizeof (short)]
  != *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)]))
__builtin_abort ();
}
  else
{
  if (*(short __attribute__((may_alias)) *) &p[sizeof (short)]
  != *(short __attribute__((may_alias)) *) &q[sizeof (short)]
  || (((struct S __attribute__((may_alias)) *) &p[1])->s
  != ((struct S __attribute__((may_alias)) *) &q[1])->s)
  || (((struct T __attribute__((may_alias)) *) &p[2 * sizeof (short) -
1])->t
  != ((struct T __attribute__((may_alias)) *) &q[2 * sizeof (short)
- 1])->t)
  || p[3 * sizeof (short) - 2] != q[3 * sizeof (short) - 2])
__builtin_abort ();
}
}

__attribute__((noipa)) void
foo (long long *p, char *q, char *r, char *s)
{
  char a[64] __attribute__((aligned (__alignof (short;
  *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1;
  ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0];
  *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = 2;
  *(short __attribute__((may_alias)) *) &q[sizeof (short)] = 1;
  ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0];
  *(short __attribute__((may_alias)) *) &s[2 * sizeof (short)] = 2;
  test (a, q, 0);
}

__attribute__((noipa)) void
bar (long long *p, char *q, char *r, char *s, char *t)
{
  char a[64] __attribute__((aligned (__alignof (short;
  *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1;
  ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0];
  ((struct T __attribute__((may_alias)) *) &a[2 * sizeof (short) - 1])->t = 2;
  a[3 * sizeof (short) - 2] = 3;
  *(short __attribute__((may_alias)) *) &q[sizeof (short)] = 1;
  ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0];
  ((struct T __attribute__((may_alias)) *) &s[2 * sizeof (short) - 1])->t = 2;
  t[3 * sizeof (short) - 2] = 3;
  test (a, q, 1);
}

__attribute__((noipa)) void
baz (long long *p, char *q, char *r, char *s)
{
  char a[64] __attribute__((aligned (__alignof (short;
  *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = 2;
  ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0];
  *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1;
  *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)] = 2;
  ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0];
  *(short __attribute__((may_alias)) *) &s[sizeof (short)] = 1;
  test (a, q, 2);
}

__attribute__((noipa)) void
qux (long long *p, char *q, char *r, char *s, char *t)
{
  char a[64] __attribute__((aligned (__alignof (short;
  *(short __attribute__((may_alias)) *) &a[2 * sizeof (short) - 1] = 2;
  ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0];
  a[3 * sizeof (short) - 2] = 3;
  *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1;
  ((struct T __attribute__((may_alias)) *) &q[2 * sizeof (short) - 1])->t = 2;
  ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0];
  s[3 * sizeof (short) - 2] = 3;
  ((struct T __attribute__((may_alias)) *) &t[sizeof (short)])->t = 1;
  test (a, q, 3);
}

int
main ()
{
  char a[64];
  long long p = -1LL;
  foo (&p, &a[0], &a[0], &a[0]);
  bar (&p, &a[0], &a[0], &a[0], &a[0]);
  baz (&p, &a[0], &a[0], &a[0]);
  qux (&p, &a[0], &a[0], &a[0], &a[0]);
  return 0;
}

[Bug middle-end/97054] [10/11 Regression] Runtime segfault with attached test code since r10-3559

2020-09-15 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97054

H.J. Lu  changed:

   What|Removed |Added

 CC||vmakarov at redhat dot com
   Keywords||patch

--- Comment #2 from H.J. Lu  ---
A patch is posted at

https://gcc.gnu.org/pipermail/gcc-patches/2020-September/553968.html

[Bug target/97042] powerpc64 UINT_MAX constant

2020-09-15 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97042

Segher Boessenkool  changed:

   What|Removed |Added

   Last reconfirmed||2020-09-15
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1

--- Comment #10 from Segher Boessenkool  ---
(In reply to Alan Modra from comment #9)
> I think that splitter should disappear and rs6000_emit_set_long_const handle
> all special cases where you might want combinations of two logical
> instructions before handling the li;rldicl, li;rldicr or any other
> expansions with rotates.

Yeah, that would be much easier to read and maintain.  Good plan.

[Bug target/96882] Wrong assembly code generated with arm-none-eabi-gcc -flto -mfloat-abi=hard options

2020-09-15 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96882

--- Comment #8 from Richard Earnshaw  ---
(In reply to emilie.feral from comment #7)
> Hello,
> Any news on the subject?
> Would you advise in the meantime to discard the LTO (with the -fno-lto
> option) on the compilation unit containing the failing code?
> The bug occurred for us when returning a structure of four doubles. Do you
> have any indication of when the bug might appear to help us track other
> occurrences?
> Thanks for helping!

Sorry, I haven't had time to work on this yet.

The safest work-around for now is to add an additional attribute to force the
PCS to the default for the selected ABI - I think adding 

 pcs("aapcs-vfp")

to the attributes will solve the problem.

ie.

AtLeast32BytesObject __attribute__((noinline, pcs("aapcs-vfp")))
CalledFunction() {
  AtLeast32BytesObject result = {1.1, 2.2, 3.3, 4.4};
  return result;
}

[Bug tree-optimization/94234] missed ccp folding for (addr + 8 * n) - (addr + 8 * (n - 1))

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94234

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Feng Xue :

https://gcc.gnu.org/g:8f0d743c2dee6afae5c6f861b0642b7b112a4a70

commit r11-3207-g8f0d743c2dee6afae5c6f861b0642b7b112a4a70
Author: Feng Xue 
Date:   Mon Aug 17 23:00:35 2020 +0800

tree-optimization/94234 - add plusminus-with-convert pattern

Add a rule (T)(A) +- (T)(B) -> (T)(A +- B), which works only when (A +- B)
could be folded to a simple value. By this rule, a
plusminus-mult-with-convert
expression could be handed over to the rule (A * C) +- (B * C) -> (A +- B).

2020-09-15  Feng Xue  

gcc/
PR tree-optimization/94234
* match.pd (T)(A) +- (T)(B) -> (T)(A +- B): New simplification.

gcc/testsuite/
PR tree-optimization/94234
* gcc.dg/pr94234-3.c: New test.

[Bug tree-optimization/97053] [10/11 Regression] an O2, O3 codegen bug

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97053

Jakub Jelinek  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org
 Status|NEW |ASSIGNED

--- Comment #8 from Jakub Jelinek  ---
Created attachment 49221
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49221&action=edit
gcc11-pr97053.patch

Untested fix.

[Bug libstdc++/97057] New: [11 regression] Error in build gcc after r11-3149

2020-09-15 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97057

Bug ID: 97057
   Summary: [11 regression] Error in build gcc after r11-3149
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

g:b32d2ea8c29203519fbd9c5e90b06941e7cd75f3, r11-3149 


On one of our servers the system gcc (4.8.5) can't build trunk any more.  Note
that this is the same gcc version as on some of the gcc powerpc64 farm
machines.

/home/seurer/gcc/git/build/gcc-trunk/./gcc/xgcc -shared-libgcc
-B/home/seurer/gcc/git/build/gcc-trunk/./gcc -nostdinc++
-L/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/src
-L/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/home/seurer/gcc/git/install/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/
-B/home/seurer/gcc/git/install/gcc-trunk/powerpc64le-unknown-linux-gnu/lib/
-isystem
/home/seurer/gcc/git/install/gcc-trunk/powerpc64le-unknown-linux-gnu/include
-isystem
/home/seurer/gcc/git/install/gcc-trunk/powerpc64le-unknown-linux-gnu/sys-include
   -x c++-header -nostdinc++ -g -O2 -D_GNU_SOURCE 
-I/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I/home/seurer/gcc/git/gcc-trunk/libstdc++-v3/libsupc++  -O2 -g -std=gnu++0x
/home/seurer/gcc/git/gcc-trunk/libstdc++-v3/include/precompiled/stdc++.h \
-o powerpc64le-unknown-linux-gnu/bits/stdc++.h.gch/O2ggnu++0x.gch
In file included from
/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/regex:58,
 from
/home/seurer/gcc/git/gcc-trunk/libstdc++-v3/include/precompiled/stdc++.h:110:
/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/regex_error.h:171:54:
error: expected ',' or '...' before '(' token
  171 |   const char* __what__attribute__((unused)))
  |  ^
In file included from
/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cassert:43,
 from
/home/seurer/gcc/git/gcc-trunk/libstdc++-v3/include/precompiled/stdc++.h:33:
/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/regex_error.h:
In function 'void std::__throw_regex_error(std::regex_constants::error_type,
const char*)':
/home/seurer/gcc/git/build/gcc-trunk/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/regex_error.h:172:5:
error: '__what' was not declared in this scope
  172 |   { _GLIBCXX_THROW_OR_ABORT(regex_error(__ecode, __what)); }
  | ^~~


seurer@tulibee:~/gcc/git/build/gcc-trunk$ gcc -v
...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 


commit b32d2ea8c29203519fbd9c5e90b06941e7cd75f3
Author: Christophe Lyon 
Date:   Fri Sep 11 11:53:15 2020 +

libstdc++-v3/include/bits/regex_error.h: Avoid warning with
-fno-exceptions.

When building with -fno-exceptions, __GLIBCXX_THROW_OR_ABORT expands to
abort(), causing warnings:
unused parameter '__ecode'
unused parameter '__what'

This patch adds __attribute__((unused)) to avoid them.

2020-09-11  Torbjrn SVENSSON 
Christophe Lyon  

libstdc++-v3/
* include/bits/regex_error.h: Avoid warning with -fno-exceptions.

[Bug libstdc++/97057] [11 regression] Error in build gcc after r11-3149

2020-09-15 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97057

Christophe Lyon  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #1 from Christophe Lyon  ---
This typo was fixed a few commits later:
r11-3159 g:29216f56d002982f10c33056f4b3d7f07e164122

[Bug libstdc++/97057] [11 regression] Error in build gcc after r11-3149

2020-09-15 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97057

--- Comment #2 from seurer at gcc dot gnu.org ---
Sorry.  I am still seeing a compilation error and bisect erroneously traced it
here.

[Bug middle-end/24639] [meta-bug] bug to track all Wuninitialized issues

2020-09-15 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
Bug 24639 depends on bug 96987, which changed state.

Bug 96987 Summary: [11 regression] warning 'ptr' may be used uninitialized 
const pointer parameter
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96987

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

[Bug middle-end/96987] [11 regression] warning 'ptr' may be used uninitialized const pointer parameter

2020-09-15 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96987

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||msebor at gcc dot gnu.org
 Resolution|--- |INVALID

--- Comment #2 from Martin Sebor  ---
The warning is by design and based on the assumption that a function declared
to take a const pointer (or in C++, a const reference) as an argument reads the
pointed-to-object.  If that's not the case annotating the function declaration
with attribute as shgwn below suppresses the warning:

  extern __attribute__ ((access (none, 1))) void constparam(const int *ptr);

[Bug target/96139] Vector element extract mistypes long long int down to long int

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96139

--- Comment #7 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Will Schmidt
:

https://gcc.gnu.org/g:ba0bc8fa005921832c4665e5b5a18932d3f4ccf4

commit r10-8766-gba0bc8fa005921832c4665e5b5a18932d3f4ccf4
Author: Will Schmidt 
Date:   Mon Jul 20 10:51:37 2020 -0500

[PATCH, rs6000] Fix vector long long subtype (PR96139)

Hi,
  This corrects an issue with the powerpc vector long long subtypes.
As reported by SjMunroe, when building some code with -Wall, and
attempting to print an element of a "long long vector" with a
long long printf format string, we will report an error because
the vector sub-type was improperly defined as int.

When defining a V2DI_type_node we use a TARGET_POWERPC64 ternary to
define the V2DI_type_node with "vector long" or "vector long long".
We also need to specify the proper sub-type when we define the type.

PR target/96139

2020-09-03  Will Schmidt  

gcc/ChangeLog:
* config/rs6000/rs6000-call.c (rs6000_init_builtin): Update
V2DI_type_node
and unsigned_V2DI_type_node definitions.

gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pr96139-a.c: New test.
* gcc.target/powerpc/pr96139-b.c: New test.
* gcc.target/powerpc/pr96139-c.c: New test.

(cherry picked from commit d8f3474ff81b07fd2e758337957711db17eb801e)

[Bug driver/97058] New: invalid "cc1: warning: '-Werror=' argument '-funroll-completely-grow-size' is not valid for C"

2020-09-15 Thread zsojka at seznam dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97058

Bug ID: 97058
   Summary: invalid "cc1: warning: '-Werror=' argument
'-funroll-completely-grow-size' is not valid for C"
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: driver
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zsojka at seznam dot cz
  Target Milestone: ---
  Host: x86_64-pc-linux-gnu

Compiler output:
$ echo '' > tst.c
$ gcc -Wno-multichar -funroll-completely-grow-size -c tst.c
cc1: warning: '-Werror=' argument '-funroll-completely-grow-size' is not valid
for C
$ gcc -Wno-multichar -funroll-completely-grow-size -xc++ -c tst.c
cc1plus: warning: '-Werror=' argument '-funroll-completely-grow-size' is not
valid for C++

$ gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest/bin/gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r11-3201-20200915093938-g0f079e104a8-checking-yes-rtl-df-extra-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/11.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--with-cloog --with-ppl --with-isl --build=x86_64-pc-linux-gnu
--host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
--with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-r11-3201-20200915093938-g0f079e104a8-checking-yes-rtl-df-extra-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.0.0 20200915 (experimental) (GCC)

[Bug tree-optimization/96295] [11 Regression] -Wmaybe-uninitialized warning for range operator with reference to an empty struct

2020-09-15 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96295

Martin Sebor  changed:

   What|Removed |Added

  Known to fail||11.0
   Keywords||patch
  Known to work||10.2.0

--- Comment #2 from Martin Sebor  ---
Patch: https://gcc.gnu.org/pipermail/gcc-patches/2020-September/553996.html

[Bug middle-end/97023] missing warning on buffer overflow in chained mempcpy

2020-09-15 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97023

Martin Sebor  changed:

   What|Removed |Added

   Keywords||patch
   Target Milestone|--- |11.0

--- Comment #2 from Martin Sebor  ---
Patch: https://gcc.gnu.org/pipermail/gcc-patches/2020-September/553906.html

[Bug fortran/96668] [OpenMP] Re-mapping allocated but previously unallocated allocatable does not work

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96668

--- Comment #7 from CVS Commits  ---
The master branch has been updated by Tobias Burnus :

https://gcc.gnu.org/g:1b9bdd52037061d7a5bd77d177b060c93c528a5d

commit r11-3211-g1b9bdd52037061d7a5bd77d177b060c93c528a5d
Author: Tobias Burnus 
Date:   Tue Sep 15 21:28:40 2020 +0200

libgomp/target.c: Silence -Wuninitialized warning

libgomp/ChangeLog:

PR fortran/96668
* target.c (gomp_map_vars_internal): Initialize has_nullptr.

[Bug libstdc++/97057] [11 regression] Error in build gcc after r11-3149

2020-09-15 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97057

--- Comment #3 from Peter Bergner  ---
(In reply to seurer from comment #2)
> Sorry.  I am still seeing a compilation error and bisect erroneously traced
> it here.

FYI, the actual bootstrap issue was due to one of Mike's recent patches.  Alex
debugged the issue and posted a patch he will commit if it passes bootstrap:

https://gcc.gnu.org/pipermail/gcc-patches/2020-September/553991.html

[Bug libstdc++/88101] Implement P0528R3, C++20 cmpxchg and padding bits

2020-09-15 Thread rodgertq at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88101

--- Comment #4 from Thomas Rodgers  ---
(In reply to andysem from comment #2)
> Another use case is C++20 atomic_ref, which may be bound to an object whose
> padding bits are in indeterminate state. An intrinsic to clear padding bits
> without altering the object value could be useful.

Having now implemented atomic::wait for libstdc++, I think the intrinsic to
clear padding bits before calling __builtin_memcmp for generic (trivially
copyable) T's is the right approach.

[Bug fortran/97036] [F2018] ELEMENTAL RECURSIVE subprogram prefix combination rejected

2020-09-15 Thread anlauf at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97036

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2020-09-15
   Keywords||rejects-valid
   Priority|P3  |P4

--- Comment #2 from anlauf at gcc dot gnu.org ---
Patch: https://gcc.gnu.org/pipermail/fortran/2020-September/055088.html

[Bug target/85198] long long int vector mistaken as long int vector

2020-09-15 Thread willschm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85198

Will Schmidt  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|NEW |RESOLVED
 CC||willschm at gcc dot gnu.org

--- Comment #6 from Will Schmidt  ---
This is a duplicate of PR96139.

*** This bug has been marked as a duplicate of bug 96139 ***

[Bug target/96139] Vector element extract mistypes long long int down to long int

2020-09-15 Thread willschm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96139

Will Schmidt  changed:

   What|Removed |Added

 CC||kelvin at gcc dot gnu.org

--- Comment #8 from Will Schmidt  ---
*** Bug 85198 has been marked as a duplicate of this bug. ***

[Bug middle-end/96987] [11 regression] warning 'ptr' may be used uninitialized const pointer parameter

2020-09-15 Thread ibuclaw at gdcproject dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96987

--- Comment #3 from Iain Buclaw  ---
And what about other front-ends that do not have the luxury of C attributes?

Looking at the original library code of where the warning was noticed, the
function being called (GC.addRange) definitely doesn't read the pointer, but
records the address and allocation size for scanning later.

[Bug c++/97059] New: C++20: compound requirement uses inconsistent return type (adds ref)

2020-09-15 Thread dimitri.gorokhovik at free dot fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97059

Bug ID: 97059
   Summary: C++20: compound requirement uses inconsistent return
type (adds ref)
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dimitri.gorokhovik at free dot fr
  Target Milestone: ---

The following code:

#include 

template 
struct s { constexpr static auto const n = N; };

template 
concept S = requires (T t)
{
  { t.n } -> std::same_as ;
  requires std::is_same_v ;
};

decltype (auto) f (S s) { return s.n; };

static_assert (std::is_same_v  {})), std::size_t>);
static_assert (S >);

when compiled as:
g++  -std=c++20 -fconcepts-ts -fconcepts-diagnostics-depth=25 -Wall -Wextra -W
-O3  -o bug-4.o -c  bug-4.cpp

breaks (messages below).

Compilation succeeds when NOBUG is defined, i.e., the compound requirement '{
t.n } ->' produces the return type as 'const std::size_t &' instead of 'const
std::size_t'. Which is inconsistent elsewhere (see the source code above).

Version: g++ (GCC) 11.0.0 20200910 (experimental)

Diagnostic messages:
bug-4.cpp:15:53: error: no matching function for call to ‘f(s<1>)’
   15 | static_assert (std::is_same_v  {})), std::size_t>);
  | ^
bug-4.cpp:13:17: note: candidate: ‘template  requires  S
decltype(auto) f(auto:1)’
   13 | decltype (auto) f (S v) { return v.n; };
  | ^
bug-4.cpp:13:17: note:   template argument deduction/substitution failed:
bug-4.cpp:13:17: note: constraints not satisfied
bug-4.cpp: In substitution of ‘template  requires  S
decltype(auto) f(auto:1) [with auto:1 = s<1>]’:
bug-4.cpp:15:53:   required from here
bug-4.cpp:7:9:   required for the satisfaction of ‘S’ [with auto:1 =
s<1>]
bug-4.cpp:7:13:   in requirements with ‘T t’ [with T = s<1>]
bug-4.cpp:9:5: note: ‘t.n’ does not satisfy return-type-requirement, because
9 |   { t.n } -> std::same_as ;
  |   ~~^
bug-4.cpp:9:5: error: deduced expression type does not satisfy placeholder
constraints
bug-4.cpp:9:5: note: constraints not satisfied
In file included from bug-4.cpp:1:
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:57:15:  
required for the satisfaction of ‘__same_as<_Tp, _Up>’ [with _Tp = const long
unsigned int&; _Up = const long unsigned int]
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:62:13:  
required for the satisfaction of ‘same_as’
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:57:32: note:
the expression ‘is_same_v<_Tp, _Up> [with _Tp = const long unsigned int&; _Up =
const long unsigned int]’ evaluated to ‘false’
   57 |   concept __same_as = std::is_same_v<_Tp, _Up>;
  |   ~^~~
bug-4.cpp:15:53: error: no matching function for call to ‘f(s<1>)’
   15 | static_assert (std::is_same_v  {})), std::size_t>);
  | ^
bug-4.cpp:13:17: note: candidate: ‘template  requires  S
decltype(auto) f(auto:1)’
   13 | decltype (auto) f (S v) { return v.n; };
  | ^
bug-4.cpp:13:17: note:   template argument deduction/substitution failed:
bug-4.cpp:13:17: note: constraints not satisfied
bug-4.cpp: In substitution of ‘template  requires  S
decltype(auto) f(auto:1) [with auto:1 = s<1>]’:
bug-4.cpp:15:53:   required from here
bug-4.cpp:7:9:   required for the satisfaction of ‘S’ [with auto:1 =
s<1>]
bug-4.cpp:7:13:   in requirements with ‘T t’ [with T = s<1>]
bug-4.cpp:9:5: note: ‘t.n’ does not satisfy return-type-requirement, because
9 |   { t.n } -> std::same_as ;
  |   ~~^
bug-4.cpp:9:5: error: deduced expression type does not satisfy placeholder
constraints
bug-4.cpp:9:5: note: constraints not satisfied
In file included from bug-4.cpp:1:
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:57:15:  
required for the satisfaction of ‘__same_as<_Tp, _Up>’ [with _Tp = const long
unsigned int&; _Up = const long unsigned int]
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:62:13:  
required for the satisfaction of ‘same_as’
/home/dgorokho/gcc-trunk/trunk/dist/include/c++/11.0.0/concepts:57:32: note:
the expression ‘is_same_v<_Tp, _Up> [with _Tp = const long unsigned int&; _Up =
const long unsigned int]’ evaluated to ‘false’
   57 |   concept __same_as = std::is_same_v<_Tp, _Up>;
  |   ~^~~
bug-4.cpp:15:21: error: template argument 1 is invalid
   15 | static_assert (std::is_same_v  {})), std::size_t>);
  | ^~~~
bug-4.cpp:16:16: error: static assertion failed
   16 | static_assert (S >);
  |^
bug-4.cpp:16:16: note: cons

Segmentation fault since 7fc49a5777943aab11e227136d00a836f28f12b2

2020-09-15 Thread Nuno Gonçalves via Gcc-bugs
Hi Jason et al,

After a bisect I found that the commit
7fc49a5777943aab11e227136d00a836f28f12b2 causes a segmentation fault
during my compilation:

sqlpp11/include/sqlpp11/where.h: In substitution of ‘template template template
using _new_statement_t = sqlpp::new_statement_t, T> [with Check =
sqlpp::consistent_t; T = sqlpp::where_t;
Policies = Policies; bool WhereRequired = WhereRequired]’:
sqlpp11/include/sqlpp11/where.h:320:99:   required from here
sqlpp11/include/sqlpp11/where.h:320:99: internal compiler error:
Segmentation fault
  320 |   auto unconditionally() const ->
_new_statement_t>
  |
   ^~
0xc9978f crash_signal
../../gcc/toplev.c:328
0x692b05 pop_nested_class()
../../gcc/cp/class.c:8184
0x7a3157 instantiate_template_1
../../gcc/cp/pt.c:20853
0x79e0b4 instantiate_template(tree_node*, tree_node*, int)
../../gcc/cp/pt.c:20908
0x79e0b4 instantiate_alias_template
../../gcc/cp/pt.c:20946
0x79e0b4 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/cp/pt.c:15147
0x7a451f lookup_template_class_1
../../gcc/cp/pt.c:9853
0x7a4bfc lookup_template_class(tree_node*, tree_node*, tree_node*,
tree_node*, int, int)
../../gcc/cp/pt.c:10119
0x7c154d finish_template_type(tree_node*, tree_node*, int)
../../gcc/cp/semantics.c:3408
0x768b7d cp_parser_template_id
../../gcc/cp/parser.c:16739
0x768dec cp_parser_class_name
../../gcc/cp/parser.c:23713
0x765b21 cp_parser_qualifying_entity
../../gcc/cp/parser.c:6776
0x765b21 cp_parser_nested_name_specifier_opt
../../gcc/cp/parser.c:6458
0x76d126 cp_parser_simple_type_specifier
../../gcc/cp/parser.c:18134
0x753e0d cp_parser_type_specifier
../../gcc/cp/parser.c:17792
0x7673c9 cp_parser_type_specifier_seq
../../gcc/cp/parser.c:22402
0x761954 cp_parser_type_id_1
../../gcc/cp/parser.c:22219
0x7606ff cp_parser_trailing_type_id
../../gcc/cp/parser.c:22325
0x7606ff cp_parser_late_return_type_opt
../../gcc/cp/parser.c:22129
0x7606ff cp_parser_direct_declarator
../../gcc/cp/parser.c:21258

I hope this is enough since I am not experienced in GCC development.

Thanks,
Nuno


[Bug analyzer/96650] [11 Regression] ICE in on_fact, at analyzer/constraint-manager.cc:1785

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96650

--- Comment #2 from CVS Commits  ---
The master branch has been updated by David Malcolm :

https://gcc.gnu.org/g:50ddbd0282e06614b29f0d3f3be5fbe70085a8bd

commit r11-3212-g50ddbd0282e06614b29f0d3f3be5fbe70085a8bd
Author: David Malcolm 
Date:   Tue Sep 15 05:51:04 2020 -0400

analyzer: fix ICE when merging constraints w/o transitivity [PR96650]

PR analyzer/96650 reports an assertion failure when merging the
intersection of two sets of constraints, due to the resulting
constraints being infeasible.

It turns out that the two input sets were each infeasible if
transitivity were considered, but -fanalyzer-transitivity was off.
However for this case, the merging code was "discovering" the
transitive infeasibility of the intersection of the constraints even
when -fanalyzer-transitivity is off, triggering an assertion failure.

I attempted various fixes for this, but each of them would have
introduced O(N^2) logic into the constraint-handling code into the
-fno-analyzer-transitivity case (with N == the number of constraints).

This patch fixes the ICE by tweaking the assertion, so that we
silently drop such constraints if -fanalyzer-transitivity is off.

gcc/analyzer/ChangeLog:
PR analyzer/96650
* constraint-manager.cc (merger_fact_visitor::on_fact): Replace
assertion that add_constraint succeeded with an assertion that
if it fails, -fanalyzer-transitivity is off.

gcc/testsuite/ChangeLog:
PR analyzer/96650
* gcc.dg/analyzer/pr96650-1-notrans.c: New test.
* gcc.dg/analyzer/pr96650-1-trans.c: New test.
* gcc.dg/analyzer/pr96650-2-notrans.c: New test.
* gcc.dg/analyzer/pr96650-2-trans.c: New test.

[Bug target/96139] Vector element extract mistypes long long int down to long int

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96139

--- Comment #9 from CVS Commits  ---
The releases/gcc-9 branch has been updated by Will Schmidt
:

https://gcc.gnu.org/g:04a9b796436c68a07c052805631e962a1126dcca

commit r9-8872-g04a9b796436c68a07c052805631e962a1126dcca
Author: Will Schmidt 
Date:   Tue Sep 15 15:06:08 2020 -0500

[PATCH, rs6000] Fix vector long long subtype (PR96139)

Hi,
  This corrects an issue with the powerpc vector long long subtypes.
As reported by SjMunroe, when building some code with -Wall, and
attempting to print an element of a "long long vector" with a
long long printf format string, we will report an error because
the vector sub-type was improperly defined as int.

When defining a V2DI_type_node we use a TARGET_POWERPC64 ternary to
define the V2DI_type_node with "vector long" or "vector long long".
We also need to specify the proper sub-type when we define the type.

Due to some file renames, This is a backport and rework of both
[PATCH, rs6000] Fix vector long long subtype (PR96139)
and
[PATCH, rs6000] Testsuite fixup pr96139 tests


PR target/96139

2020-09-03  Will Schmidt  

gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_init_builtin): Update
V2DI_type_node
and unsigned_V2DI_type_node definitions.

gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pr96139-a.c: New test.
* gcc.target/powerpc/pr96139-b.c: New test.
* gcc.target/powerpc/pr96139-c.c: New test.

[Bug analyzer/96650] [11 Regression] ICE in on_fact, at analyzer/constraint-manager.cc:1785

2020-09-15 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96650

David Malcolm  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #3 from David Malcolm  ---
Should be fixed by the above commit.

Re: Segmentation fault since 7fc49a5777943aab11e227136d00a836f28f12b2

2020-09-15 Thread Marek Polacek via Gcc-bugs
On Tue, Sep 15, 2020 at 10:41:31PM +0100, Nuno Gonçalves via Gcc-bugs wrote:
> Hi Jason et al,
> 
> After a bisect I found that the commit
> 7fc49a5777943aab11e227136d00a836f28f12b2 causes a segmentation fault
> during my compilation:

This is
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96805

> sqlpp11/include/sqlpp11/where.h: In substitution of ‘template WhereRequired> template template
> using _new_statement_t = sqlpp::new_statement_t sqlpp::no_where_t, T> [with Check =
> sqlpp::consistent_t; T = sqlpp::where_t;
> Policies = Policies; bool WhereRequired = WhereRequired]’:
> sqlpp11/include/sqlpp11/where.h:320:99:   required from here
> sqlpp11/include/sqlpp11/where.h:320:99: internal compiler error:
> Segmentation fault
>   320 |   auto unconditionally() const ->
> _new_statement_t>
>   |
>^~
> 0xc9978f crash_signal
> ../../gcc/toplev.c:328
> 0x692b05 pop_nested_class()
> ../../gcc/cp/class.c:8184
> 0x7a3157 instantiate_template_1
> ../../gcc/cp/pt.c:20853
> 0x79e0b4 instantiate_template(tree_node*, tree_node*, int)
> ../../gcc/cp/pt.c:20908
> 0x79e0b4 instantiate_alias_template
> ../../gcc/cp/pt.c:20946
> 0x79e0b4 tsubst(tree_node*, tree_node*, int, tree_node*)
> ../../gcc/cp/pt.c:15147
> 0x7a451f lookup_template_class_1
> ../../gcc/cp/pt.c:9853
> 0x7a4bfc lookup_template_class(tree_node*, tree_node*, tree_node*,
> tree_node*, int, int)
> ../../gcc/cp/pt.c:10119
> 0x7c154d finish_template_type(tree_node*, tree_node*, int)
> ../../gcc/cp/semantics.c:3408
> 0x768b7d cp_parser_template_id
> ../../gcc/cp/parser.c:16739
> 0x768dec cp_parser_class_name
> ../../gcc/cp/parser.c:23713
> 0x765b21 cp_parser_qualifying_entity
> ../../gcc/cp/parser.c:6776
> 0x765b21 cp_parser_nested_name_specifier_opt
> ../../gcc/cp/parser.c:6458
> 0x76d126 cp_parser_simple_type_specifier
> ../../gcc/cp/parser.c:18134
> 0x753e0d cp_parser_type_specifier
> ../../gcc/cp/parser.c:17792
> 0x7673c9 cp_parser_type_specifier_seq
> ../../gcc/cp/parser.c:22402
> 0x761954 cp_parser_type_id_1
> ../../gcc/cp/parser.c:22219
> 0x7606ff cp_parser_trailing_type_id
> ../../gcc/cp/parser.c:22325
> 0x7606ff cp_parser_late_return_type_opt
> ../../gcc/cp/parser.c:22129
> 0x7606ff cp_parser_direct_declarator
> ../../gcc/cp/parser.c:21258
> 
> I hope this is enough since I am not experienced in GCC development.
> 
> Thanks,
> Nuno
> 

Marek



[Bug target/96139] Vector element extract mistypes long long int down to long int

2020-09-15 Thread willschm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96139

Will Schmidt  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #10 from Will Schmidt  ---
fix committed. closing out.

[Bug debug/97060] New: Missing DW_AT_declaration=1 in dwarf data

2020-09-15 Thread jolsa at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97060

Bug ID: 97060
   Summary: Missing DW_AT_declaration=1 in dwarf data
   Product: gcc
   Version: 10.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jolsa at redhat dot com
  Target Milestone: ---

We are missing expected declaration tag - DW_AT_declaration : 1 for function
in debug info data.

The problem we see is:

 - fs/init.c calls vfs_getattr function
 - vfs_getattr is defined outside the fs/init.c
 - once compiled, debug info data for vfs_getattr should contain declaration
   tag - DW_AT_declaration : 1, but it's missing

gcc version: gcc (GCC) 10.2.1 20200826 (Red Hat 10.2.1-3)

Unfortunately the issue can be so far reproduced only inside container,
I tried to narrow it down to single fs/init.o object.

Following steps create fs/init.o binary in kernel tree within the container:

# podman image pull
registry.gitlab.com/cki-project/containers/builder-rawhide:latest
# podman image list
# podman run -it  /bin/bash
# git clone https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
--depth 1
# curl
https://xci32.lab.eng.rdu2.redhat.com/cki-project/cki-pipeline/-/jobs/974002/artifacts/raw/artifacts/kernel-bpf-next-x86_64-cd04b04de119a222c83936f7e9dbd46a650cb688.config
-o bpf-next/.config
# cd bpf-next/

# make oldconfig # might need some ENTERs
# make fs/ -j

# gcc -Wp,-MMD,fs/.init.o.d -nostdinc -isystem
/usr/lib/gcc/x86_64-redhat-linux/10/include -I./arch/x86/include
-I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi
-I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi
-include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h
-D__KERNEL__ -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
-Werror=implicit-function-declaration -Werror=implicit-int -Wno-format-security
-std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1
-falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3
-mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare
-fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern
-mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks
-Wno-frame-address -Wno-format-truncation -Wno-format-overflow
-Wno-address-of-packed-member -O2 -fno-allow-store-data-races
-Wframe-larger-than=2048 -fstack-protector -Wno-unused-but-set-variable
-Wimplicit-fallthrough -Wno-unused-const-variable -fno-var-tracking-assignments
-g -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -flive-patching=inline-clone
-Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation
-Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict
-Wno-maybe-uninitialized -fno-strict-overflow -fno-merge-all-constants
-fmerge-constants -fno-stack-check -fconserve-stack -Werror=date-time
-Werror=incompatible-pointer-types -Werror=designated-init
-fmacro-prefix-map=./= -fcf-protection=none -Wno-packed-not-aligned   
-DKBUILD_MODFILE='"fs/init"' -DKBUILD_BASENAME='"init"'
-DKBUILD_MODNAME='"init"' -c -o fs/init.o fs/init.c

# readelf --debug fs/init.o
...
 <1><9145>: Abbrev Number: 46 (DW_TAG_subprogram)
<9146>   DW_AT_external: 1
<9146>   DW_AT_name: (indirect string, offset: 0x531c): vfs_getattr
<914a>   DW_AT_decl_file   : 7
<914b>   DW_AT_decl_line   : 3148
<914d>   DW_AT_decl_column : 12
<914e>   DW_AT_prototyped  : 1
<914e>   DW_AT_type: <0xa9>
<9152>   DW_AT_sibling : <0x916b>
 <2><9156>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<9157>   DW_AT_type: <0x3573>
 <2><915b>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<915c>   DW_AT_type: <0x893a>
 <2><9160>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<9161>   DW_AT_type: <0x111>
 <2><9165>: Abbrev Number: 3 (DW_TAG_formal_parameter)
<9166>   DW_AT_type: <0x4c>


When we link the final kernel binary the debug info data contains multiple
records for vfs_getattr,
and neither has 'declaration' tag and it confuses pahole tool that uses this
data to get function
records and skips declarations.

The problem is for more functions, vfs_getattr is just one example.

[Bug middle-end/192] String literals don't obey -fdata-sections

2020-09-15 Thread i at maskray dot me
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=192

Fangrui Song  changed:

   What|Removed |Added

 CC||i at maskray dot me

--- Comment #19 from Fangrui Song  ---
(In reply to Jakub Jelinek from comment #14)
> This doesn't really look like a good idea to me.  Instead, perhaps ld's
> --gc-sections or new special option should just remove unused string
> literals from mergeable sections.
> With your patch, I bet you lose e.g. all tail merging.  Consider:
> const char *used1 () { return "foo bar baz blah blah"; }
> in one TU and
> const char *used2 () { return "bar baz blah blah"; }
> in another.  The linker necessarily knows which strings (or other data) in
> mergeable sections are used and which are unused.

I second Jakub's idea that the linker should perform the constant merge (which
is implemented in LLD): the cost of a section header (sizeof(Elf64_Shdr)=64) +
a section name (".rodata.xxx.str1.1") is quite large.

Created a GNU ld (and gold) feature request:
https://sourceware.org/bugzilla/show_bug.cgi?id=26622

[Bug fortran/95654] nvptx offloading: FAIL: libgomp.fortran/pr66199-5.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test

2020-09-15 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95654

--- Comment #3 from Tobias Burnus  ---
Created attachment 49222
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49222&action=edit
Slightly reduced example, compile with gfortran -fopenmp -O1 -ftracer

Some testing; with gfortran -fopenmp -O1 -ftracer it shows something like:
 -31 =?= 64
The expected output is the last value of the loop iteration ("lastprivate"),
i.e. (b-1+1)*2 = 32*2 = 64. – When running the target section on the host
(-foffload=disable) it works, which indicates either a shared-memory vs.
non-shared issue or an nvptx problem.

At a glance, the original dump looks fine; it seems as if either the
  .omp_data_i_28(D)->d1 = d1_9;
  .omp_data_i_28(D)->d2 = d2_11;
is not executed or the PHI handling goes wrong.

[Bug fortran/97061] New: [OpenMP] ICE in in omp_add_variable, at gimplify.c:6955

2020-09-15 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97061

Bug ID: 97061
   Summary: [OpenMP] ICE in in omp_add_variable, at
gimplify.c:6955
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Keywords: openmp
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
  Target Milestone: ---

Found when looking at PR95654 - reduced + modified version of
libgomp.fortran/pr66199-5.f90.

The following ICEs with "gfortran -fopenmp test.f90":

6 |   u(d1) = 5
  | 
internal compiler error: in omp_add_variable, at gimplify.c:6955
0x671359 omp_add_variable
../../repos/gcc/gcc/gimplify.c:6955


integer function f3 (a1, b1)
  integer :: a1, b1, d1
  integer u(0:1023)
  !$omp teams distribute parallel do simd default(none) firstprivate (a1, b1)
shared(u) lastprivate(d1) 
  do d1 = a1, b1-1
  u(d1) = 5
  end do
end

That's the assert:
  /* The only combination of data sharing classes we should see is
 FIRSTPRIVATE and LASTPRIVATE.  However, OpenACC permits
 reduction variables to be used in data sharing clauses.  */
  gcc_assert ((ctx->region_type & ORT_ACC) != 0
  || ((nflags & GOVD_DATA_SHARE_CLASS)
  == (GOVD_FIRSTPRIVATE | GOVD_LASTPRIVATE))
  || (flags & GOVD_DATA_SHARE_CLASS) == 0);

Original dump:
  #pragma omp teams firstprivate(a1) firstprivate(b1) shared(u) default(none)
  #pragma omp distribute lastprivate(d1)
#pragma omp parallel firstprivate(a1) firstprivate(b1)
lastprivate(d1) shared(u) default(none)
  #pragma omp for nowait
#pragma omp simd linear(d1:1) lastprivate(d1)

[Bug gcov-profile/97062] New: [gcov] Don't repeat display of inline functions in headers

2020-09-15 Thread i at maskray dot me
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97062

Bug ID: 97062
   Summary: [gcov] Don't repeat display of inline functions in
headers
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: gcov-profile
  Assignee: unassigned at gcc dot gnu.org
  Reporter: i at maskray dot me
CC: marxin at gcc dot gnu.org
  Target Milestone: ---

This is a minor display issue.

>a.cc cat

[Bug fortran/97063] New: [ MATMUL intrinsic] The value of result is wrong when vector (step size is negative) * matrix

2020-09-15 Thread xin....@compiler-dev.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97063

Bug ID: 97063
   Summary: [ MATMUL intrinsic] The value of result is wrong when
vector (step size is negative) * matrix
   Product: gcc
   Version: 10.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: xin@compiler-dev.com
  Target Milestone: ---

Consider the following Fortran program:
program p
implicit none
real(kind=16), dimension(6) :: arr1
real(kind=16), dimension(6, 10) :: arr2
real(kind=16), dimension(10) :: arr3, arr6
real(kind=16), dimension(3) :: arr4
real(kind=16), dimension(3, 10) :: arr5
integer :: i, j
data arr1 /0.0_16, 1.0_16, 2.0_16, 3.0_16, 4.0_16, 5.0_16/
do i = 1, 6
   do j = 1,10
  arr2(i, j) = (i + j) * 1.0_16
   end do
end do
write(*,*) "--arr3--:"
arr3 = matmul(arr1(5:1:-2),arr2(5:1:-2, :))
write(*,'(5F5.1)') arr3
write(*,*) "--arr4--:"
arr4 = arr1(5:1:-2)
write(*,'(5F5.1)') arr4
write(*,*) "--arr6--:"
arr6 = matmul(arr4, arr2(5:1:-2, :))
write(*,'(5F5.1)') arr6
end program

Compiled with gfortran 10.1.0, the program prints:

 --arr3--:
 44.0 53.0 62.0 71.0 80.0
 89.0 98.0107.0116.0125.0
 --arr4--:
  4.0  2.0  0.0
 --arr6--:
 32.0 38.0 44.0 50.0 56.0
 62.0 68.0 74.0 80.0 86.0

As you can see,the value of arr3 is differnet with arr6.

[Bug gcov-profile/91601] gcov: ICE in handle_cycle, at gcov.c:699 happen which get code coverage with lcov.

2020-09-15 Thread i at maskray dot me
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91601

Fangrui Song  changed:

   What|Removed |Added

 CC||i at maskray dot me

--- Comment #17 from Fangrui Song  ---
The algorithm is Donald B. Johnson's "Finding all the elementary circuits of a
directed graph" (1975). (Hawick and James's just implemented the same algorithm
by changing the representation of graphs).

I am wondering why we enumerate every elementary cycle, find the minimum edge,
reduce edge weighs, and repeat the process.

What do we lose if we don't use the costly algorithm? (The time complexity is
O(n*e*(c+1)). However, many implementations (Boost and gcov.c) do not use a
hash set for the blocked list, and thus I suspect the actual complexity is
higher). Do we have other low-cost approaches? (e.g. repeatedly finding
strongly connected components and reducing)

[Bug tree-optimization/94234] missed ccp folding for (addr + 8 * n) - (addr + 8 * (n - 1))

2020-09-15 Thread fxue at os dot amperecomputing.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94234

Feng Xue  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #6 from Feng Xue  ---
Fixed.

[Bug preprocessor/96935] [9/10/11 Regression] ICE in subspan, at input.h:69

2020-09-15 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96935

Marek Polacek  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
Summary|ICE in subspan, at  |[9/10/11 Regression] ICE in
   |input.h:69  |subspan, at input.h:69
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2020-09-16
 Ever confirmed|0   |1
 CC||mpolacek at gcc dot gnu.org

--- Comment #4 from Marek Polacek  ---
Reduced:

void
foo (char const *name)
{
  /*
xx
*/ __builtin_printf ("%s", name);
}

[Bug preprocessor/96935] [9/10/11 Regression] ICE in subspan, at input.h:69

2020-09-15 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96935

--- Comment #5 from Marek Polacek  ---
Started with r269125.  Use -O to reproduce.

Bizarrely, it goes away when -Wall is in effect!

[Bug preprocessor/96935] [9/10/11 Regression] ICE in subspan, at input.h:69

2020-09-15 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96935

--- Comment #6 from Marek Polacek  ---
Candidate fix:

--- a/gcc/input.c
+++ b/gcc/input.c
@@ -1461,6 +1461,8 @@ get_substring_ranges_for_loc (cpp_reader *pfile,
   size_t literal_length = finish.column - start.column + 1;

   /* Ensure that we don't crash if we got the wrong location.  */
+  if (start.column < 1)
+   return "line is too long";
   if (line.length () < (start.column - 1 + literal_length))
return "line is not wide enough";

[Bug target/97019] rs6000:redundant rldicr fed to lvx/stvx

2020-09-15 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97019

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Kewen Lin :

https://gcc.gnu.org/g:e0d98ffd14487b7105de3d151122144086faa1fa

commit r11-3217-ge0d98ffd14487b7105de3d151122144086faa1fa
Author: Kewen Lin 
Date:   Tue Sep 15 22:32:55 2020 -0500

rs6000: Remove useless insns fed into lvx/stvx [PR97019]

This patch is to extend the existing function find_alignment_op to
check all defintions of base_reg are AND operations with mask -16B
to force the alignment.  If all are satifised, it passes all AND
operations and instructions to function recombine_lvx_pattern
and recombine_stvx_pattern, they can remove all useless ANDs
further.

Bootstrapped/regtested on powerpc64le-linux-gnu P8.

gcc/ChangeLog:

PR target/97019
* config/rs6000/rs6000-p8swap.c (find_alignment_op): Adjust to
support multiple defintions which are all AND operations with
the mask -16B.
(recombine_lvx_pattern): Adjust to handle multiple AND operations
from find_alignment_op.
(recombine_stvx_pattern): Likewise.

gcc/testsuite/ChangeLog:

PR target/97019
* gcc.target/powerpc/pr97019.c: New test.

[Bug target/97019] rs6000:redundant rldicr fed to lvx/stvx

2020-09-15 Thread linkw at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97019

Kewen Lin  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #3 from Kewen Lin  ---
Should be fixed on latest trunk now.

[Bug fortran/97061] [OpenMP] ICE in in omp_add_variable, at gimplify.c:6955

2020-09-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97061

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
If it is the FE that adds the linear clause, then it shouldn't when there is
explicit lastprivate clause.  This is a new thing in OpenMP 5.0, in 4.5 it was
invalid to make the iterate anything but linear in this case, now it can be
made private or lastprivate.

[Bug debug/97060] Missing DW_AT_declaration=1 in dwarf data

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97060

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2020-09-16
 Ever confirmed|0   |1
 CC||jsm28 at gcc dot gnu.org
 Status|UNCONFIRMED |WAITING

--- Comment #1 from Richard Biener  ---
I guess that vfs_getattr is declared 'extern inline'.  At least with

extern inline int foo (int i) { return i; }

int main()
{
  foo (5);
}

I can reproduce this kind of DIE:

 <1><52>: Abbrev Number: 4 (DW_TAG_subprogram)
<53>   DW_AT_external: 1
<53>   DW_AT_name: foo
<57>   DW_AT_decl_file   : 1
<58>   DW_AT_decl_line   : 1
<59>   DW_AT_decl_column : 19
<5a>   DW_AT_prototyped  : 1
<5a>   DW_AT_type: <0x4b>
<5e>   DW_AT_low_pc  : 0x0
<66>   DW_AT_high_pc : 0xc
<6e>   DW_AT_frame_base  : 1 byte block: 9c (DW_OP_call_frame_cfa)
<70>   DW_AT_GNU_all_call_sites: 1

these "extern" inline functions are not really external, but I'm not sure
of a better representation of GNU extern inline functions.

Can you please provide preprocessed source of the fs/init.o TU?

[Bug libstdc++/97057] [11 regression] Error in build gcc after r11-3149

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97057

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug driver/97058] invalid "cc1: warning: '-Werror=' argument '-funroll-completely-grow-size' is not valid for C"

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97058

--- Comment #1 from Richard Biener  ---
You're not supposed to use this flag but the behavior is indeed weird.  The
last part "not valid for C/C++" is due to the fact the option is not marked
for any language:

funroll-completely-grow-size
Undocumented Var(flag_cunroll_grow_size) Optimization
; Internal undocumented flag, allow size growth during complete unrolling

but the '-Werror=' argument part is really odd ;)

[Bug tree-optimization/97064] New: BB vectorization behaves sub-optimal

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97064

Bug ID: 97064
   Summary: BB vectorization behaves sub-optimal
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

The testcase g++.dg/vect/slp-pr87105.cc ends in

  _64 = MIN_EXPR <_32, _87>;
  bBox_6(D)->x0 = _64;
  _67 = MIN_EXPR <_33, _86>;
  bBox_6(D)->y0 = _67;
  _70 = MAX_EXPR <_36, _87>;
  bBox_6(D)->x1 = _70;
  _73 = MAX_EXPR <_39, _86>;
  bBox_6(D)->y1 = _73;

thus feeding a 4 element store with a non-uniform SLP opportunity
starting with { MIN, MIN, MAX, MAX }.  With 2-element vector type
vectorization this eventually gets vectorized by splitting the group
which is prioritized over just building the { MIN..., MAX } vector
from scalars but with 4-element vector type vectorization no splitting
is considered and we end up successfully vectorizing just the store
with never considering the smaller vector size.

So at the moment the testcase PASSes with SSE but fails with AVX.

[Bug fortran/97061] [OpenMP] ICE in in omp_add_variable, at gimplify.c:6955

2020-09-15 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97061

--- Comment #2 from Tobias Burnus  ---
I think I also got this ICE with an additional 'collapse(2)', which might
indicate that a(nother) check is missing.

[Bug tree-optimization/97064] BB vectorization behaves sub-optimal

2020-09-15 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97064

Richard Biener  changed:

   What|Removed |Added

   Keywords||missed-optimization
   Last reconfirmed||2020-09-16
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
 Blocks||53947


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations