[Bug libstdc++/95788] std::ranges::construct_at's placement new not intercepted

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95788

--- Comment #4 from Patrick Palka  ---
(In reply to Johel Ernesto Guerrero Peña from comment #3)
> Thank you. Sorry for my laziness, but did you confirm this from the OP?
> > Other stuff in `bits/ranges_uninitialized.h` may be similarly affected.

IIUC only ranges::construct_at is affected, since it's the only constexpr
function in [specialized.algorithms] that uses placement new.

[Bug middle-end/95189] [9/10 Regression] memcmp being wrongly stripped like strcmp

2020-10-08 Thread bugdal at aerifal dot cx via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189

--- Comment #26 from Rich Felker  ---
Is that complete, or is it unclear whether there are code paths other than
builtin memcmp by which this is hit? Am I correct in assuming that with builtin
memcmp expansion returning NULL_RTX, GCC always expands it to a function call?

[Bug debug/97344] aarch64 tls debuginfo missing location info

2020-10-08 Thread scox at redhat dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97344

--- Comment #2 from Stan Cox  ---
tls variables on aarch64 lack location info:
[6e]variable abbrev: 5
 name (strp) "rage"
 decl_file(data1) tlsdwarf.c (1)
 decl_line(data1) 3
 decl_column  (data1) 24
 type (ref4) [2d]
 external (flag_present) yes

unlike e.g. ppcle
[   10e]variable abbrev: 12
 name (strp) "rage"
 decl_file(data1) get_fs.c (1)
 decl_line(data1) 23
 decl_column  (data1) 24
 type (ref4) [39]
 external (flag_present) yes
 location (exprloc) 
  [ 0] const8u 0
  [ 9] GNU_push_tls_address

[Bug debug/97344] aarch64 tls debuginfo missing location info

2020-10-08 Thread scox at redhat dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97344

--- Comment #1 from Stan Cox  ---
Created attachment 49335
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49335=edit
tls test program

[Bug debug/97344] New: aarch64 tls debuginfo missing location info

2020-10-08 Thread scox at redhat dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97344

Bug ID: 97344
   Summary: aarch64 tls debuginfo missing location info
   Product: gcc
   Version: 10.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: scox at redhat dot com
  Target Milestone: ---

[Bug c++/85576] A template union containing a friend function causes non-template type used as a template error

2020-10-08 Thread ldalessandro at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85576

--- Comment #1 from Luke Dalessandro  ---
Just ran into this today while testing 11. https://godbolt.org/z/37G7P5

Any possibility we'll see a fix soon?

[Bug middle-end/95189] [9/10 Regression] memcmp being wrongly stripped like strcmp

2020-10-08 Thread luke-jr+gccbugs at utopios dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189

--- Comment #25 from Luke Dashjr  ---
Created attachment 49334
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49334=edit
Hacky patch to workaround the bug by disabling builtin memcmp always

I wrote and am rebuilding my own systems with a very minimal patch that
essentially disables the builtin memcmp entirely. It's probably overkill and
bad for performance, but it should at least produce sane code and apply to
pretty much any GCC (warning: including unaffected versions).

[Bug target/97329] POWER9 default cache and line sizes appear to be wrong

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97329

--- Comment #7 from Kip Warner  ---
So it looks like even with GCC 11 in trunk it's still sometimes wrong on
power9.

Wrong L2 cache size when no -mcpu specified:

$ gcc -Q --help=param | grep -i cache
  --param=l1-cache-line-size=   128
  --param=l1-cache-size=32
  --param=l2-cache-size=256

Correct when manually specifying native (power9) cpu:

$ gcc -Q -mcpu=native --help=param | grep -i cache
  --param=l1-cache-line-size=   128
  --param=l1-cache-size=32
  --param=l2-cache-size=512

Correct when manually specifying power9 cpu:

$ gcc -Q -mcpu=power9 --help=param | grep -i cache
  --param=l1-cache-line-size=   128
  --param=l1-cache-size=32
  --param=l2-cache-size=512

Wrong L2 cache size when powerpc64le is selected in place of power9:

$ gcc -Q -mcpu=powerpc64le --help=param | grep -i cach
  --param=l1-cache-line-size=   128
  --param=l1-cache-size=32
  --param=l2-cache-size=256

Looks like this might be a clue. GCC did not identify the host/build/target as
power9 automatically:

$ gcc -dumpmachine
powerpc64le-unknown-linux-gnu

I built it from trunk last night on a power9 machine. I've attached my
config.log.

$ gcc --version
gcc (GCC) 11.0.0 20201008 (experimental)
(...)

[Bug target/97329] POWER9 default cache and line sizes appear to be wrong

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97329

--- Comment #6 from Kip Warner  ---
Created attachment 49333
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49333=edit
Autoconf configuration log on POWER9.

[Bug libstdc++/95788] std::ranges::construct_at's placement new not intercepted

2020-10-08 Thread johelegp at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95788

--- Comment #3 from Johel Ernesto Guerrero Peña  ---
Thank you. Sorry for my laziness, but did you confirm this from the OP?
> Other stuff in `bits/ranges_uninitialized.h` may be similarly affected.

[Bug libstdc++/97273] [8/9 Regression] Strange behaviour of unordered_set when vector is included (i686)

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97273

Patrick Palka  changed:

   What|Removed |Added

Summary|[8/9/10/11 Regression]  |[8/9 Regression] Strange
   |Strange behaviour of|behaviour of unordered_set
   |unordered_set when vector   |when vector is included
   |is included (i686)  |(i686)

--- Comment #6 from Patrick Palka  ---
Fixed for GCC 11 and 10.3 so far.

[Bug c++/88115] Incorrect result from alignof in templates, if also using __alignof__.

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88115

--- Comment #2 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Patrick Palka
:

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

commit r10-8872-gaeb69dda51e93379fce10fb03ec57650fbf73f31
Author: Patrick Palka 
Date:   Thu Oct 8 19:31:57 2020 -0400

c++: Distinguish alignof and __alignof__ in cp_tree_equal [PR97273]

cp_tree_equal currently considers alignof the same as __alignof__, but
these operators are semantically different ever since r8-7957.  In the
testcase below, this causes the second static_assert to fail on targets
where alignof(double) != __alignof__(double) because the specialization
table (which uses cp_tree_equal as its equality predicate) conflates the
two dependent specializations integral_constant<__alignof__(T)> and
integral_constant.

This patch makes cp_tree_equal distinguish between these two operators
by inspecting the ALIGNOF_EXPR_STD_P flag.

gcc/cp/ChangeLog:

PR c++/88115
PR libstdc++/97273
* tree.c (cp_tree_equal) : Return false if
ALIGNOF_EXPR_STD_P differ.

gcc/testsuite/ChangeLog:

PR c++/88115
PR libstdc++/97273
* g++.dg/template/alignof3.C: New test.

(cherry picked from commit 592fe221735bdaa375b1834dd49ce125d0b600d8)

[Bug libstdc++/97273] [8/9/10/11 Regression] Strange behaviour of unordered_set when vector is included (i686)

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97273

--- Comment #5 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Patrick Palka
:

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

commit r10-8872-gaeb69dda51e93379fce10fb03ec57650fbf73f31
Author: Patrick Palka 
Date:   Thu Oct 8 19:31:57 2020 -0400

c++: Distinguish alignof and __alignof__ in cp_tree_equal [PR97273]

cp_tree_equal currently considers alignof the same as __alignof__, but
these operators are semantically different ever since r8-7957.  In the
testcase below, this causes the second static_assert to fail on targets
where alignof(double) != __alignof__(double) because the specialization
table (which uses cp_tree_equal as its equality predicate) conflates the
two dependent specializations integral_constant<__alignof__(T)> and
integral_constant.

This patch makes cp_tree_equal distinguish between these two operators
by inspecting the ALIGNOF_EXPR_STD_P flag.

gcc/cp/ChangeLog:

PR c++/88115
PR libstdc++/97273
* tree.c (cp_tree_equal) : Return false if
ALIGNOF_EXPR_STD_P differ.

gcc/testsuite/ChangeLog:

PR c++/88115
PR libstdc++/97273
* g++.dg/template/alignof3.C: New test.

(cherry picked from commit 592fe221735bdaa375b1834dd49ce125d0b600d8)

[Bug libstdc++/95788] std::ranges::construct_at's placement new not intercepted

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95788

--- Comment #2 from Patrick Palka  ---
Fixed for GCC 11 so far.

[Bug libstdc++/95788] std::ranges::construct_at's placement new not intercepted

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95788

--- Comment #1 from CVS Commits  ---
The master branch has been updated by Patrick Palka :

https://gcc.gnu.org/g:9158a4d2a6cd58d6bb591d5ce64e766b399e4aef

commit r11-3739-g9158a4d2a6cd58d6bb591d5ce64e766b399e4aef
Author: Patrick Palka 
Date:   Thu Oct 8 18:10:05 2020 -0400

libstdc++: Make ranges::construct_at constexpr-friendly [PR95788]

This rewrites ranges::construct_at in terms of std::construct_at so
that we can piggyback on the compiler's existing support for
intercepting placement new within std::construct_at during constexpr
evaluation, instead of having to additionally teach the compiler about
ranges::construct_at.

While we're making changes to ranges::construct_at, this patch also
declares it conditionally noexcept and qualifies the calls to declval in
its requires-clause.

libstdc++-v3/ChangeLog:

PR libstdc++/95788
* include/bits/ranges_uninitialized.h:
(__construct_at_fn::operator()): Rewrite in terms of
std::construct_at.  Declare it conditionally noexcept.  Qualify
calls to declval in its requires-clause.
* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
New test.

[Bug tree-optimization/97317] [11 Regression] ICE in verify_range, at value-range.cc:369

2020-10-08 Thread amacleod at redhat dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97317

--- Comment #6 from Andrew Macleod  ---
Thanks,  yeah this is the same issue and the patch should fix it..?


the precision difference of one this time is 1 bit (bool) and a 2 bit object...

   _5;
  bool _6;
<..>
_6 = (bool) _5;

[Bug target/97343] New: AVX2 vectorizer generates extremely strange and slow code for AoSoA complex dot product

2020-10-08 Thread already5chosen at yahoo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97343

Bug ID: 97343
   Summary: AVX2 vectorizer generates extremely strange and slow
code for AoSoA complex dot product
   Product: gcc
   Version: 10.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: already5chosen at yahoo dot com
  Target Milestone: ---

Let's continue our complex dot product series started here
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96854

This time I have no code generation bugs for your pleasure, just "interesting"
optimization issues.
All examples below, unless stated otherwise were compiled with gcc.10.2 for
x86-64 with following sets 
of flags: 
set1: -Wall -mavx2 -mfma -march=skylake -O3 -ffast-math -fno-associative-math
set2: -Wall -mavx2 -mfma -march=skylake -O3 -ffast-math

The kernel in question is an example of complex dot product in so-called
"hybrid AoS" layout a.k.a. AoSoA.
https://en.wikipedia.org/wiki/AoS_and_SoA#Array_of_Structures_of_Arrays
In my experience it's quite rare when in dense complex linear algebra and
similar computational fields AoSoA is *not* the optimal internal form.
So, practically, I consider these kernels as more important than AoS kernel
presented in bug 96854.

More specifically, the layout can be described as struct { double re[4], im[4];
};
But for purpose of simplicity I omitted the type definition fro code examples
and coded it directly over flat arrays of doubles.

Part 1.
void cdot(double* res, const double* a, const double* b, int N)
{
  double acc_re = 0;
  double acc_im = 0;
  for (int c = 0; c < N; ++c) {
for (int k = 0; k < 4; ++k) {
  acc_re = acc_re + a[c*8+k+0]*b[c*8+k+0] + a[c*8+k+4]*b[c*8+k+4];
  acc_im = acc_im - a[c*8+k+0]*b[c*8+k+4] + a[c*8+k+4]*b[c*8+k+0];
}
  }
  res[0] = acc_re;
  res[4] = acc_im;
}

That's how we want to code it in the ideal world and let to compiles to care
about dirty details.
In less ideal world, gcc is not the only compiler that can't cope with it.
MSVC (-W4 -O2 -fp:fast -arch:AVX2) also can't vectorize it. Even mighty icc
generates code that it's not quite bad, but somewhat suboptimal.
So, let's it pass. I don't want to blame gcc for not being smart enough. It's
just normal.
Except that when we use set2 the code generated by gcc becomes not just
non-smart, but quite crazy.
I am ignoring it in the hope that it would be magically fixed by the change
made by Richard Biener 2020-08-31

Part 2.
void cdot(double* res, const double* a, const double* b, int N)
{
  double acc_rere = 0;
  double acc_imim = 0;
  double acc_reim = 0;
  double acc_imre = 0;
  for (int c = 0; c < N; ++c) {
for (int k = 0; k < 4; ++k) {
  acc_rere += a[c*8+k+0]*b[c*8+k+0];
  acc_imim += a[c*8+k+4]*b[c*8+k+4];
  acc_reim += a[c*8+k+0]*b[c*8+k+4];
  acc_imre += a[c*8+k+4]*b[c*8+k+0];
}
  }
  res[0] = acc_rere+acc_imim;
  res[4] = acc_imre-acc_reim;
}

We are explaining it to compiler slowly.
For icc and MSVC it's enough. They understood.
icc generates near-perfect code. I can write it nicer, but do not expect my
variant to be any faster.
MSVC generates near-perfect inner loop and epilogue that is not great, but not
really much slower.
gcc still didn't get it. It still tries to implement 4 accumulators literally,
as if -ffast-math were not here.
But, sad as it is, it's still a case of not being smart enough. So, I am not
complaining.

Part 3.
static inline double sum4(double x[]) {
  return x[0]+x[1]+x[2]+x[3];
}
void cdot(double* res, const double* a, const double* b, int N)
{
  double acc_re[4] = {0};
  double acc_im[4] = {0};
  for (int c = 0; c < N; ++c) {
for (int k = 0; k < 4; ++k) {
  acc_re[k] = acc_re[k] + a[c*8+k+0]*b[c*8+k+0] + a[c*8+k+4]*b[c*8+k+4];
  acc_im[k] = acc_im[k] - a[c*8+k+0]*b[c*8+k+4] + a[c*8+k+4]*b[c*8+k+0];
}
  }
  res[0] = sum4(acc_re);
  res[4] = sum4(acc_im);
}

Attempt to feed compiler by teaspoon.
That's not a way I want to write code in HLL.
icc copes, producing about the same code as in Part 1
MSVC doesn't understand a Kunststück (I am sympathetic) and generates literal
scalar code with local arrays on stack.
gcc with set1 is a little better than MSVC - the code is fully scalar, but at
least accumulators kept in registers.
gcc with set2 is the most interesting. It vectorizes, but how?
Here is an inner loop:

.L3:
vpermpd $27, (%r8,%rax), %ymm2
vpermpd $27, 32(%rdx,%rax), %ymm3
vpermpd $27, (%rdx,%rax), %ymm1
vpermpd $27, 32(%r8,%rax), %ymm0
vmulpd  %ymm2, %ymm1, %ymm6
vmulpd  %ymm2, %ymm3, %ymm2
addq$64, %rax
vfnmadd132pd%ymm0, %ymm2, %ymm1
vfmadd132pd %ymm3, %ymm6, %ymm0
vaddpd  %ymm1, %ymm5, %ymm5
vaddpd  %ymm0, %ymm4, %ymm4
cmpq%rcx, %rax
jne .L3

What all this vpermpd business about? 

[Bug middle-end/95189] [9/10 Regression] memcmp being wrongly stripped like strcmp

2020-10-08 Thread bugdal at aerifal dot cx via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189

--- Comment #24 from Rich Felker  ---
The fixes do not seem trivial to backport; lots of conflicts. It would be
really helpful to have versions of the patch that are minified and applicable
to all affected versions that might be shipping in distros (looks like 9.2,
9.3, 10.1, and 10.2) since this is a critical codegen regression.

[Bug tree-optimization/97317] [11 Regression] ICE in verify_range, at value-range.cc:369

2020-10-08 Thread dcb314 at hotmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97317

--- Comment #5 from David Binderman  ---
Reduced C++ source code is

class a {
public:
  struct b {
int *c;
  };
  enum { j = 1 } e : 2;
  struct {
b c;
  } d;
  bool f() const { return e & j; }
  int *g() const;
};
int *a::g() const { return f() ? d.c.c : 0; }
a h;
void i() {
  h.g();
  h.f();
}

Flag -O2 required.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

--- Comment #5 from Patrick Palka  ---
https://gcc.gnu.org/pipermail/gcc-patches/2020-October/555850.html

[Bug middle-end/97342] New: bogus -Wstringop-overflow with nonzero signed and unsigned offsets

2020-10-08 Thread msebor at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97342

Bug ID: 97342
   Summary: bogus -Wstringop-overflow with nonzero signed and
unsigned offsets
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The combination of signed and unsigned offsets into an array of elements larger
than 1 triggers a false positive -Wstringop-overflow.

$ cat q.c && gcc -O2 -S q.c
void sink (void*, ...);

void f (unsigned i, int j)
{
  i |= 1;   // [1, UINT_MAX]
  j |= 1;   // [INT_MIN + 1, -1] U [1, INT_MAX]

  int a[5];// index
  int *p1 = a + i; //  1-5
  int *p2 = p1 + j;//  0-5

  __builtin_memset (p2, 0, 5 * sizeof *a);

  sink (p1, p2);
}
q.c: In function ‘f’:
q.c:12:3: warning: ‘__builtin_memset’ writing 20 bytes into a region of size 16
overflows the destination [-Wstringop-overflow=]
   12 |   __builtin_memset (p2, 0, 5 * sizeof *a);
  |   ^~~
q.c:8:7: note: at offset [4, 17179869176] into destination object ‘a’
8 |   int a[5];// index
  |   ^

The optimized dump below suggests the "anti-range" the signed offset is in
isn't being handled correctly.

f (unsigned intD.9 iD.1932, intD.6 jD.1933)
{
  unsigned intD.9 i_5(D) = iD.1932;
  intD.6 j_7(D) = jD.1933;
  intD.6 * p2D.1938;
  intD.6 * p1D.1937;
  intD.6 aD.1936[5];
  long unsigned intD.10 _1;
  long unsigned intD.10 _2;
  long unsigned intD.10 _3;
  long unsigned intD.10 _4;

;;   basic block 2, loop depth 0, count 1073741824 (estimated locally), maybe
hot
;;prev block 0, next block 1, flags: (NEW, REACHABLE, VISITED)
;;pred:   ENTRY [always]  count:1073741824 (estimated locally)
(FALLTHRU,EXECUTABLE)
  # RANGE [1, 4294967295]
  i_6 = i_5(D) | 1;
  # RANGE [-2147483647, 2147483647]
  j_8 = j_7(D) | 1;
  # RANGE [1, 4294967295] NONZERO 4294967295
  _1 = (long unsigned intD.10) i_6;
  # RANGE [4, 17179869180] NONZERO 17179869180
  _2 = _1 * 4;
  # PT = { D.1936 } (escaped)
  # ALIGN = 4, MISALIGN = 0
  p1_9 =  + _2;
  # RANGE ~[2147483648, 18446744071562067968]
  _3 = (long unsigned intD.10) j_8;
  # RANGE [0, 18446744073709551612] NONZERO 18446744073709551612
  _4 = _3 * 4;
  # PT = { D.1936 } (escaped)
  # ALIGN = 4, MISALIGN = 0
  p2_10 = p1_9 + _4;
  # .MEM_12 = VDEF <.MEM_11(D)>
  # USE = nonlocal null { D.1936 } (escaped)
  # CLB = nonlocal null { D.1936 } (escaped)
  memsetD.894 (p2_10, 0, 20);

[Bug fortran/97272] Wrong answer from MAXLOC with character arg

2020-10-08 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97272

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #9 from anlauf at gcc dot gnu.org ---
Fixed on master for gcc-11, and on 10- and 9-branch.

Not applied to 8-branch, which did not support the back argument,
so not considered worth it.

Thanks for the report!

[Bug c++/96805] [10/11 Regression] ICE: Segmentation fault in instantiate_template / pop_nested_class()

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96805

--- Comment #11 from CVS Commits  ---
The master branch has been updated by Jason Merrill :

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

commit r11-3738-g1c56c143b2011080d8a4516f37f78f647b0ee258
Author: Jason Merrill 
Date:   Thu Oct 8 15:43:26 2020 -0400

c++: Fix member alias template in C++17 and up. [PR96805]

Here we're trying to push into a::c in order to instantiate t, but
were building a TYPENAME_TYPE for it because a isn't open yet.  Don't
do that when we know we're trying to enter the scope.

gcc/cp/ChangeLog:

PR c++/96805
PR c++/96199
* pt.c (tsubst_aggr_type): Don't build a TYPENAME_TYPE when
entering_scope.
(tsubst_template_decl): Use tsubst_aggr_type.

gcc/testsuite/ChangeLog:

PR c++/96805
* g++.dg/cpp0x/alias-decl-pr96805.C: New test.

[Bug c++/96199] [10/11 Regression] internal compiler error: in tsubst_copy with CTAD for alias templates

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96199

--- Comment #8 from CVS Commits  ---
The master branch has been updated by Jason Merrill :

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

commit r11-3738-g1c56c143b2011080d8a4516f37f78f647b0ee258
Author: Jason Merrill 
Date:   Thu Oct 8 15:43:26 2020 -0400

c++: Fix member alias template in C++17 and up. [PR96805]

Here we're trying to push into a::c in order to instantiate t, but
were building a TYPENAME_TYPE for it because a isn't open yet.  Don't
do that when we know we're trying to enter the scope.

gcc/cp/ChangeLog:

PR c++/96805
PR c++/96199
* pt.c (tsubst_aggr_type): Don't build a TYPENAME_TYPE when
entering_scope.
(tsubst_template_decl): Use tsubst_aggr_type.

gcc/testsuite/ChangeLog:

PR c++/96805
* g++.dg/cpp0x/alias-decl-pr96805.C: New test.

[Bug fortran/97272] Wrong answer from MAXLOC with character arg

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97272

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

https://gcc.gnu.org/g:83967508034454425dfce7fe0ea33a153c34e7cb

commit r9-8985-g83967508034454425dfce7fe0ea33a153c34e7cb
Author: Harald Anlauf 
Date:   Sun Oct 4 20:24:29 2020 +0200

PR fortran/97272 - Wrong answer from MAXLOC with character arg

The optional KIND argument to the MINLOC/MAXLOC intrinsic must not be
passed to the library function, as the kind conversion of the result
is treated explicitly elsewhere.

gcc/fortran/ChangeLog:

PR fortran/97272
* trans-intrinsic.c (strip_kind_from_actual): Helper function for
removal of KIND argument.
(gfc_conv_intrinsic_minmaxloc): Ignore KIND argument here, as it
is treated elsewhere.

gcc/testsuite/ChangeLog:

PR fortran/97272
* gfortran.dg/pr97272.f90: New test.

(cherry picked from commit 35d2c6b6e8a7448a84abbf967feeb78a29117014)

[Bug target/97329] POWER9 default cache and line sizes appear to be wrong

2020-10-08 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97329

--- Comment #5 from Segher Boessenkool  ---
So both the cache line size and the cache size are wrong for GCC 10
and before, but okay on trunk, on all compiler I tested (I tested on
Linux only so far).

[Bug target/97329] POWER9 default cache and line sizes appear to be wrong

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97329

--- Comment #4 from Kip Warner  ---
I'm going to do some more testing tonight and report back after.

[Bug target/97329] POWER9 default cache and line sizes appear to be wrong

2020-10-08 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97329

Segher Boessenkool  changed:

   What|Removed |Added

   Last reconfirmed||2020-10-08
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
 CC||segher at gcc dot gnu.org

--- Comment #3 from Segher Boessenkool  ---
At least as far back as GCC 5 we report D-L1 size 64kB (for most CPUs,
not just p9).  Confirmed.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

--- Comment #4 from Patrick Palka  ---
(In reply to Marek Polacek from comment #3)
> (In reply to Patrick Palka from comment #2)
> > When 'storage' is a struct instead of a union, i.e. for the testcase
> > 
> > template 
> > struct vector {
> > struct storage { 
> > T t; 
> > constexpr  storage() {}
> > } data[N];
> > };
> > 
> > constexpr auto foo() {
> > vector i;
> > return i;
> > }
> > auto f = foo();
> > 
> > we started to ICE earlier, since r279019:
> > 
> >PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.
> 
> Ah.  Feel free to hand this PR to me then (that is, if you don't want it
> anymore).

I have a fix, I think :) Will post it to the ML soon.

[Bug c++/97341] New: Implicit casting from char** to const char* const* in template argument failing

2020-10-08 Thread reikdas at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97341

Bug ID: 97341
   Summary: Implicit casting from char** to const char* const* in
template argument failing
   Product: gcc
   Version: 10.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reikdas at gmail dot com
  Target Milestone: ---

Created attachment 49332
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49332=edit
preprocessed file

Implicit casting of char** to a const char* const* by passing a char** variable
to a class template's argument like - 

char *bar = (char*)"Hello1";
constexpr char** baz = 
template  class foo {};

int main()
{
foo Foo;
return 1;
}

gives a compilation error - 

test.cpp:7:12: error: the address of the ‘const char* const’ subobject of ‘bar’
is not a valid template argument
7 | foo Foo;
  |^


Output of g++ -v -save-temps -std=c++17 test.cpp - 

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib
--libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl
--with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit
--enable-cet=auto --enable-checking=release --enable-clocale=gnu
--enable-default-pie --enable-default-ssp --enable-gnu-indirect-function
--enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id
--enable-lto --enable-multilib --enable-plugin --enable-shared
--enable-threads=posix --disable-libssp --disable-libstdcxx-pch
--disable-libunwind-exceptions --disable-werror
gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++17' '-shared-libgcc'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/cc1plus -E -quiet -v -D_GNU_SOURCE
test.cpp -mtune=generic -march=x86-64 -std=c++17 -fpch-preprocess -o test.ii
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0

/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/x86_64-pc-linux-gnu

/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/backward
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++17' '-shared-libgcc'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/cc1plus -fpreprocessed test.ii -quiet
-dumpbase test.cpp -mtune=generic -march=x86-64 -auxbase test -std=c++17
-version -o test.s
GNU C++17 (GCC) version 10.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 10.2.0, GMP version 6.2.0, MPFR version
4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++17 (GCC) version 10.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 10.2.0, GMP version 6.2.0, MPFR version
4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 2affcd71b0797e2421aae734ab600c81
test.cpp: In function ‘int main()’:
test.cpp:7:12: error: the address of the ‘const char* const’ subobject of ‘bar’
is not a valid template argument
7 | foo Foo;
  |^

[Bug c++/97341] Implicit casting from char** to const char* const* in template argument failing

2020-10-08 Thread reikdas at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97341

--- Comment #1 from Pratyush Das  ---
I should add, that this works in Clang.

[Bug rtl-optimization/97313] [11 Regression] ICE in lra_set_insn_recog_data, at lra.c:1004 since r11-937-g5261cf8ce824bfc7

2020-10-08 Thread vmakarov at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97313

--- Comment #1 from Vladimir Makarov  ---
Thank you for reporting this.  I am trying to find the best place to fix this:
either in memory subreg elimination or in match_reload itself.  I hope the fix
will be ready tomorrow.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread mpolacek at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

Marek Polacek  changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org

--- Comment #3 from Marek Polacek  ---
(In reply to Patrick Palka from comment #2)
> When 'storage' is a struct instead of a union, i.e. for the testcase
> 
> template 
> struct vector {
> struct storage { 
> T t; 
> constexpr  storage() {}
> } data[N];
> };
> 
> constexpr auto foo() {
> vector i;
> return i;
> }
> auto f = foo();
> 
> we started to ICE earlier, since r279019:
> 
>PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.

Ah.  Feel free to hand this PR to me then (that is, if you don't want it
anymore).

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

--- Comment #2 from Patrick Palka  ---
When 'storage' is a struct instead of a union, i.e. for the testcase

template 
struct vector {
struct storage { 
T t; 
constexpr  storage() {}
} data[N];
};

constexpr auto foo() {
vector i;
return i;
}
auto f = foo();

we started to ICE earlier, since r279019:

   PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts.

[Bug fortran/95979] [10/11 Regression] ICE in get_kind, at fortran/simplify.c:129

2020-10-08 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95979

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |anlauf at gcc dot 
gnu.org
  Known to work||7.4.1, 8.4.1, 9.3.1
 Status|NEW |ASSIGNED
  Known to fail||10.2.1, 11.0

--- Comment #5 from anlauf at gcc dot gnu.org ---
Patch: https://gcc.gnu.org/pipermail/fortran/2020-October/055162.html

[Bug libgomp/97212] [OpenMP] 'depend' clause with 'target nowait' (!) + 'task' does not work

2020-10-08 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97212

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #3 from Jakub Jelinek  ---
Several people on omp-lang agreed on this, so closing as invalid.  I've
notified the test author.

[Bug middle-end/95189] [9/10 Regression] memcmp being wrongly stripped like strcmp

2020-10-08 Thread msebor at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189

Martin Sebor  changed:

   What|Removed |Added

  Known to fail|10.1.0  |

--- Comment #23 from Martin Sebor  ---
Backported to 10-branch via r10-8871.

[Bug middle-end/95886] suboptimal memcpy with embedded zero bytes

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95886

--- Comment #8 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Martin Sebor
:

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

commit r10-8871-ge4c9aac98611f63847ef6c57916808d9a2d7abcb
Author: Martin Sebor 
Date:   Thu Oct 8 12:35:01 2020 -0600

Correct handling of constant representations containing embedded nuls
(backport from trunk).

Resolves:
PR middle-end/95189 - memcmp being wrongly stripped like strcm
PR middle-end/95886 - suboptimal memcpy with embedded zero bytes

gcc/ChangeLog:

PR middle-end/95189
PR middle-end/95886
* builtins.c (inline_expand_builtin_string_cmp): Rename...
(inline_expand_builtin_bytecmp): ...to this.
(builtin_memcpy_read_str): Don't expect data to be nul-terminated.
(expand_builtin_memory_copy_args): Handle object representations
with embedded nul bytes.
(expand_builtin_memcmp): Same.
(expand_builtin_strcmp): Adjust call to naming change.
(expand_builtin_strncmp): Same.
* expr.c (string_constant): Create empty strings with nonzero size.
* fold-const.c (c_getstr): Rename locals and update comments.
* tree.c (build_string): Accept null pointer argument.
(build_string_literal): Same.
* tree.h (build_string): Provide a default.
(build_string_literal): Same.

gcc/testsuite/ChangeLog:

PR middle-end/95189
PR middle-end/95886
* gcc.dg/memcmp-pr95189.c: New test.
* gcc.dg/strncmp-3.c: New test.
* gcc.target/i386/memcpy-pr95886.c: New test.

[Bug middle-end/95189] [9/10 Regression] memcmp being wrongly stripped like strcmp

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189

--- Comment #22 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Martin Sebor
:

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

commit r10-8871-ge4c9aac98611f63847ef6c57916808d9a2d7abcb
Author: Martin Sebor 
Date:   Thu Oct 8 12:35:01 2020 -0600

Correct handling of constant representations containing embedded nuls
(backport from trunk).

Resolves:
PR middle-end/95189 - memcmp being wrongly stripped like strcm
PR middle-end/95886 - suboptimal memcpy with embedded zero bytes

gcc/ChangeLog:

PR middle-end/95189
PR middle-end/95886
* builtins.c (inline_expand_builtin_string_cmp): Rename...
(inline_expand_builtin_bytecmp): ...to this.
(builtin_memcpy_read_str): Don't expect data to be nul-terminated.
(expand_builtin_memory_copy_args): Handle object representations
with embedded nul bytes.
(expand_builtin_memcmp): Same.
(expand_builtin_strcmp): Adjust call to naming change.
(expand_builtin_strncmp): Same.
* expr.c (string_constant): Create empty strings with nonzero size.
* fold-const.c (c_getstr): Rename locals and update comments.
* tree.c (build_string): Accept null pointer argument.
(build_string_literal): Same.
* tree.h (build_string): Provide a default.
(build_string_literal): Same.

gcc/testsuite/ChangeLog:

PR middle-end/95189
PR middle-end/95886
* gcc.dg/memcmp-pr95189.c: New test.
* gcc.dg/strncmp-3.c: New test.
* gcc.target/i386/memcpy-pr95886.c: New test.

[Bug c++/96805] [10/11 Regression] ICE: Segmentation fault in instantiate_template / pop_nested_class()

2020-10-08 Thread jason at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96805

Jason Merrill  changed:

   What|Removed |Added

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

[Bug libgomp/97212] [OpenMP] 'depend' clause with 'target nowait' (!) + 'task' does not work

2020-10-08 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97212

--- Comment #2 from Jakub Jelinek  ---
I believe the testcase is invalid.
As the explicit task doesn't have if(false) clause, the task isn't undeferred,
so it is up to the implementation whether it waits for its completion or just
continues (defers it).  And there is no task synchronization point before the
if (sum != N) __builtin_abort (); statement, so if the implementation decides
to defer it, then there is no guarantee it completes before that statement.
Without the target nowait task gcc wouldn't defer it because there is just an
implicit parallel region rather than explicit (e.g. if you add parallel
num_threads(1) around most of main and change target nowait to task, you'd get
the same behavior), but in order to support async target tasks we do create
intentionally a team and thus defer the task.
So, the testcase needs something like
#pragma omp taskwait
or taskwait with depend or add if(false) to the task.

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2006 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread hubicka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #15 from Jan Hubicka  ---
So it seems that problem is that store in operator++ is TriaObjectAcessor while
read is DoFCellAccessor. I am however not sure where the type puning happens :(

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2006 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread hubicka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #14 from Jan Hubicka  ---

So this really seems that the alias set 6 is not conflicting with  alias sets
11 or 13. active_cell is
struct active_cell_iterator active_cell;
and the code around seems SRA injected
  MEM[(struct TriaRawIterator *)_cell] ={v} {CLOBBER};   
  MEM  [(struct DoFCellAccessor *)_cell] =
cell$dof_handler_253;
  MEM  [(struct DoFCellAccessor *)_cell + 8B] =
cell$8$present_level_242;
  MEM  [(struct DoFCellAccessor *)_cell + 12B] =
cell$8$present_index_245;
  MEM  [(struct DoFCellAccessor *)_cell +
16B] = cell$8$tria_244;
  operator++ (_cell);
  MEM[(struct TriaRawIterator *)].accessor = MEM[(const struct
TriaRawIterator &)_cell].accessor;

and we CSE is acrss the call

Honza

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2006 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread hubicka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #13 from Jan Hubicka  ---
OK, I can reproduce it even though the propagation happens in different
function in dom rather than pre.
The callee is again the operator++ so I start to suspect aliasing violation
there.

I get:
ipa-modref: in build_patches.constprop/375859, call to operator++/33005 does
not clobber MEM  [(struct DoFCellAccessor
*)_cell] 6->6

parameter of call is _cell so we disambiguate param0 with 

while the summary for ipa-modref

  stores:   
Limits: 32 bases, 16 refs   
  Base 0: alias set 11  
Ref 0: alias set 13 
  access: Parm 0 param offset:64 offset:32 size:32 max_size:32  
  access: Parm 0 param offset:64 offset:0 size:32 max_size:32   

So this really seems that the alias set 6 is not conflicting with  alias sets
11 or 13.

Honza

[Bug middle-end/97336] False positive -Wstring-compare warning for strncmp()

2020-10-08 Thread msebor at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97336

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #1 from Martin Sebor  ---
The warning works as intended: unless n > 4, the strncmp call will return
nonzero because the length of buf is less than 5.  GCC partially unrolls the
loop and the first iteration of it is what triggers the warning.  It disappears
when the buffer is cleared with memset only because GCC (as a limitation) loses
track of the length of the string in buf after that.  Handling the case when n
is zero or less (e.g., via if (n <= 0) return 0;) does as well.

The IL that leads up to the warning can be seen in the output of the
-fdump-tree-dom4 option (below).

f (const char * p, int n)
{
  sizetype ivtmp.6;
  int i;
  char buf[10];
  char _3;
  _Bool _4;
  _Bool _5;
  _Bool _6;
  int _7;
  int _10;
  char prephitmp_20;
  int _21;
  unsigned int _25;
  char pretmp_33;

   [local count: 118111600]:
  buf = ""; <<< strlen(buf) == 0
  if (n_15(D) > 0)
goto ; [89.00%]
  else
goto ; [11.00%]

  ...
   [local count: 12992276]:   <<< n == 0
  _21 = __builtin_strncmp (, "12345", 5);   <<< warning here
  if (_21 == 0) <<< folded to false
goto ; [50.00%]
  else
goto ; [50.00%]

   [local count: 6496138]:
  # prephitmp_20 = PHI <0(4)>

   [local count: 95940523]:
  goto ; [100.00%]

   [local count: 105119324]:
  _7 = __builtin_strncmp (, "12345", 5);<<< second strncmp call
  if (_7 == 0)
goto ; [50.00%]
  else
goto ; [50.00%]

   [local count: 52559662]:
  if (i_19 == 5)
goto ; [23.93%]
  else
goto ; [76.07%]

   [local count: 40175661]:
  pretmp_33 = buf[5];
  if (pretmp_33 == 32)
goto ; [25.01%]
  else
goto ; [74.99%]

   [local count: 118111600]:
  # _10 = PHI <1(9), 0(6), 1(8)>
  buf ={v} {CLOBBER};
  return _10;

}


Rewriting the code in a way that avoids the loop (e.g., by using memcpy
instead) also avoids the warning.

[Bug target/96313] [AArch64] vqmovun* return types should be unsigned

2020-10-08 Thread ktkachov at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96313

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from ktkachov at gcc dot gnu.org ---
Fixed on GCC 8.5 onwards.

[Bug target/97150] [AArch64] 2nd parameter of unsigned Neon scalar shift intrinsics should be signed

2020-10-08 Thread ktkachov at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97150

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #8 from ktkachov at gcc dot gnu.org ---
Fixed on GCC 8.5 onwards.

[Bug target/97150] [AArch64] 2nd parameter of unsigned Neon scalar shift intrinsics should be signed

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97150

--- Comment #7 from CVS Commits  ---
The releases/gcc-8 branch has been updated by Kyrylo Tkachov
:

https://gcc.gnu.org/g:311183d74e4f3fd5a37749cfbb0960e655e715fb

commit r8-10576-g311183d74e4f3fd5a37749cfbb0960e655e715fb
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:01:23 2020 +0100

PR target/97150 AArch64: 2nd parameter of unsigned Neon scalar shift
intrinsics should be signed

In this PR the second argument to the intrinsics should be signed but we
use an unsigned one erroneously.
The corresponding builtins are already using the correct types so it's
just a matter of correcting the signatures in arm_neon.h

gcc/
PR target/97150
* config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
signed.
(vqrshlh_u16): Likewise.
(vqrshls_u32): Likewise.
(vqrshld_u64): Likewise.
(vqshlb_u8): Likewise.
(vqshlh_u16): Likewise.
(vqshls_u32): Likewise.
(vqshld_u64): Likewise.
(vshld_u64): Likewise.

gcc/testsuite/
PR target/97150
* gcc.target/aarch64/pr97150.c: New test.

(cherry picked from commit 2d8fbebdb1eaca8de557ab3052535a8e4b8f8972)
(cherry picked from commit 11af9c329ae528abb8c69ae8fae96a0f3fc6ed87)
(cherry picked from commit d5c6ea22fe6db1ee19a178941a8c7f8ff5d0538c)

[Bug target/96313] [AArch64] vqmovun* return types should be unsigned

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96313

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

https://gcc.gnu.org/g:7f8115b305f1a1a2ddec4f59bc08a3415359dda6

commit r8-10575-g7f8115b305f1a1a2ddec4f59bc08a3415359dda6
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:00:20 2020 +0100

PR target/96313 AArch64: vqmovun* return types should be unsigned

In this PR we have the wrong return type for some intrinsics. It should
be unsigned, but we implement it as signed.
Fix this by adjusting the type qualifiers used when creating the
builtins and fixing the type in the arm_neon.h intrinsic.
With the adjustment in qualifiers we now don't need to cast the result
when returning.

Bootstrapped and tested on aarch64-none-linux-gnu.

gcc/
PR target/96313
* config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
qualifiers.
* config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
Remove unnecessary result cast.
(vqmovun_s32): Likewise.
(vqmovun_s64): Likewise.
(vqmovunh_s16): Likewise.  Fix return type.
(vqmovuns_s32): Likewise.
(vqmovund_s64): Likewise.

gcc/testsuite/
PR target/96313
* gcc.target/aarch64/pr96313.c: New test.
* gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16):
Adjust return type.
(test_vqmovuns_s32): Likewise.
(test_vqmovund_s64): Likewise.

(cherry picked from commit 135b043196b5575c690ef1e07bcbb49bf037c3a2)
(cherry picked from commit 7d177b142dcbe841124fe023cb592914d4200e57)
(cherry picked from commit 18d980d94f8d7187ce30bf23ddd365fa54189c36)

[Bug c++/97340] Spurious rejection of member variable template of reference type

2020-10-08 Thread mpolacek at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97340

Marek Polacek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2020-10-08
 Ever confirmed|0   |1
 CC||mpolacek at gcc dot gnu.org

--- Comment #1 from Marek Polacek  ---
Confirmed.

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #9 from Kip Warner  ---
Yup. Agreed.

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #8 from Jakub Jelinek  ---
Except for native supported on a subset of the architectures, no values are the
same, so this is highly target specific anyway.  And yes, were it designed all
now, we'd use the same options, but some of these choices are 33 years old,
others 10, 20, 30 etc., so it is difficult to adjust it now without breaking
stuff too much.

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #7 from Kip Warner  ---
I understand what you mean from a maintainer's standpoint. But from a user's
standpoint, that's an inconsistency.

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #6 from Jakub Jelinek  ---
There is no consistency.
Targets that have all of -march=, -mcpu= and -mtune=:
aarch64, arm, cris, i386 (-mcpu= deprecated and treated as -mtune=), m68k
Targets that have just -march= and -mtune=:
gcn, mips, riscv, s390
Targets that have just -march= and -mcpu=:
csky, iq2000, nds32
Targets that have just -mcpu= and -mtune=:
alpha, arc, rs6000, sparc, visium
Targets that have just -mcpu=:
bfin, frv, m32c, microblaze, msp430, rl78, rx, tilegx, tilepro
Targets that have just -mtune=:
ia64, mn10300
Targets that have just -march=:
c6x, nios2, pa

[Bug fortran/97272] Wrong answer from MAXLOC with character arg

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97272

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

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

commit r10-8870-gd4ec0a15afb7538247206aa9936071544fd860f8
Author: Harald Anlauf 
Date:   Sun Oct 4 20:24:29 2020 +0200

PR fortran/97272 - Wrong answer from MAXLOC with character arg

The optional KIND argument to the MINLOC/MAXLOC intrinsic must not be
passed to the library function, as the kind conversion of the result
is treated explicitly elsewhere.

gcc/fortran/ChangeLog:

PR fortran/97272
* trans-intrinsic.c (strip_kind_from_actual): Helper function for
removal of KIND argument.
(gfc_conv_intrinsic_minmaxloc): Ignore KIND argument here, as it
is treated elsewhere.

gcc/testsuite/ChangeLog:

PR fortran/97272
* gfortran.dg/pr97272.f90: New test.

(cherry picked from commit 35d2c6b6e8a7448a84abbf967feeb78a29117014)

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #5 from Kip Warner  ---
The reason I asked is because of that inconsistency in the -mcpu usage on
targets. Thanks for clarifying.

[Bug c++/97340] New: Spurious rejection of member variable template of reference type

2020-10-08 Thread herring at lanl dot gov via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97340

Bug ID: 97340
   Summary: Spurious rejection of member variable template of
reference type
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: herring at lanl dot gov
  Target Milestone: ---

In many recent versions of GCC, the following valid code

  struct A {
template
static constexpr const int =0;
  };
  template
  struct B {
static constexpr int y=A::template x;
  };
  template struct B<>;

produces

error: ''indirect_ref' not supported by dump_decl' is not a
template [-fpermissive]
7 |   static constexpr int y=A::template x;
  |  ^~

The 'template' after '::' here is unnecessary; removing it avoids the error,
but the error also appears if A is a class template (so that it's necessary to
write "A::template x").  Making A::x not be a reference also avoids the
error, as does referring to it from a non-templated context.

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  ---
-m* options are target specific, so each target can and often does have its
own.
-mcpu= is deprecated just on x86, but many other targets don't even have -mcpu=
and never had, etc.  On the other side, some targets like powerpc do use -mcpu=
where other targets use -march= instead, or some have even more complicated
handling (arm/aarch64).

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread kip at thevertigo dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

--- Comment #3 from Kip Warner  ---
Martin, is -mcpu deprecated for all architectures or just x86?

[Bug libstdc++/97339] New: std::async sometimes prevents std::current_exception from working properly in the terminate handler

2020-10-08 Thread m101010a at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97339

Bug ID: 97339
   Summary: std::async sometimes prevents std::current_exception
from working properly in the terminate handler
   Product: gcc
   Version: 10.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m101010a at gmail dot com
  Target Milestone: ---

If std::async is called with a noexcept function that throws an exception and
contains a catch block which catches exceptions of a different type,
std::current_exception returns an empty exception pointer when called from the
terminate handler.

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib
--libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl
--with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit
--enable-cet=auto --enable-checking=release --enable-clocale=gnu
--enable-default-pie --enable-default-ssp --enable-gnu-indirect-function
--enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id
--enable-lto --enable-multilib --enable-plugin --enable-shared
--enable-threads=posix --disable-libssp --disable-libstdcxx-pch
--disable-libunwind-exceptions --disable-werror
gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (GCC) 
$ cat y.cpp
#include 
#include 

void term_handler() {
auto e = std::current_exception();
if (e)
std::cout << "Died with exception" << std::endl;
else
std::cout << "Died without exception" << std::endl;
std::abort();
}

void bar() noexcept {
try {
throw "";
}
catch (int) { }
}

int main() {
std::set_terminate(_handler);
std::async(std::launch::async, ).get();
}

$ g++ y.cpp -pthread
$ ./a.out
Died without exception
Aborted (core dumped)
$ 


This happens regardless of whether launch::async or launch::deferred is used,
but does not happen if the function is called directly or is run by a
std::thread.

[Bug tree-optimization/97317] [11 Regression] ICE in verify_range, at value-range.cc:369

2020-10-08 Thread dcb314 at hotmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97317

David Binderman  changed:

   What|Removed |Added

 CC||dcb314 at hotmail dot com

--- Comment #4 from David Binderman  ---
I see this one also. I am reducing some C++ code from a build
of the qt3 package on x86_64 linux.

[Bug target/97338] New: [nvptx] Convergence checking

2020-10-08 Thread vries at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97338

Bug ID: 97338
   Summary: [nvptx] Convergence checking
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

With ptx, we have insns that need to be executed in convergent mode, that is,
all threads in the warp active.

We can unfortunately not enforce this, but we could check it, which could help
pinpoint problems.

A ptx insn:
...
  vote.ballot.b32 %rbla, 1;
...
gives us the regmask of active threads, so we could check:
...
{
  .reg .u32 %rwarp_active_mask;
  vote.ballot.b32 %rwarp_active_mask, 1;
  .reg .pred %pconvergent;
  setp.eq.u32 %pconvergent,%rwarp_active_mask,-1;
  @ ! %pconvergent trap;
}
...

[Bug target/97150] [AArch64] 2nd parameter of unsigned Neon scalar shift intrinsics should be signed

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97150

--- Comment #6 from CVS Commits  ---
The releases/gcc-9 branch has been updated by Kyrylo Tkachov
:

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

commit r9-8983-gd5c6ea22fe6db1ee19a178941a8c7f8ff5d0538c
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:01:23 2020 +0100

PR target/97150 AArch64: 2nd parameter of unsigned Neon scalar shift
intrinsics should be signed

In this PR the second argument to the intrinsics should be signed but we
use an unsigned one erroneously.
The corresponding builtins are already using the correct types so it's
just a matter of correcting the signatures in arm_neon.h

gcc/
PR target/97150
* config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
signed.
(vqrshlh_u16): Likewise.
(vqrshls_u32): Likewise.
(vqrshld_u64): Likewise.
(vqshlb_u8): Likewise.
(vqshlh_u16): Likewise.
(vqshls_u32): Likewise.
(vqshld_u64): Likewise.
(vshld_u64): Likewise.

gcc/testsuite/
PR target/97150
* gcc.target/aarch64/pr97150.c: New test.

(cherry picked from commit 2d8fbebdb1eaca8de557ab3052535a8e4b8f8972)
(cherry picked from commit 11af9c329ae528abb8c69ae8fae96a0f3fc6ed87)

[Bug target/96313] [AArch64] vqmovun* return types should be unsigned

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96313

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

https://gcc.gnu.org/g:18d980d94f8d7187ce30bf23ddd365fa54189c36

commit r9-8982-g18d980d94f8d7187ce30bf23ddd365fa54189c36
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:00:20 2020 +0100

PR target/96313 AArch64: vqmovun* return types should be unsigned

In this PR we have the wrong return type for some intrinsics. It should
be unsigned, but we implement it as signed.
Fix this by adjusting the type qualifiers used when creating the
builtins and fixing the type in the arm_neon.h intrinsic.
With the adjustment in qualifiers we now don't need to cast the result
when returning.

Bootstrapped and tested on aarch64-none-linux-gnu.

gcc/
PR target/96313
* config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
qualifiers.
* config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
Remove unnecessary result cast.
(vqmovun_s32): Likewise.
(vqmovun_s64): Likewise.
(vqmovunh_s16): Likewise.  Fix return type.
(vqmovuns_s32): Likewise.
(vqmovund_s64): Likewise.

gcc/testsuite/
PR target/96313
* gcc.target/aarch64/pr96313.c: New test.
* gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16):
Adjust return type.
(test_vqmovuns_s32): Likewise.
(test_vqmovund_s64): Likewise.

(cherry picked from commit 135b043196b5575c690ef1e07bcbb49bf037c3a2)
(cherry picked from commit 7d177b142dcbe841124fe023cb592914d4200e57)

[Bug testsuite/97337] New: new test case gcc.dg/pr97315-1.c fails with excess errors

2020-10-08 Thread seurer at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97337

Bug ID: 97337
   Summary: new test case gcc.dg/pr97315-1.c fails with excess
errors
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
  Assignee: unassigned at gcc dot gnu.org
  Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

g:214d514fafcd78cd54e4a4aa9ae08c89abf9cc57, r11-3717

make -k check-gcc RUNTESTFLAGS=dg.exp=gcc.dg/pr97315-1.c
FAIL: gcc.dg/pr97315-1.c (test for excess errors)
# of unexpected failures1

Excess errors:
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:6:23: error:
empty enum is invalid
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:8:3: error:
unknown type name 'tree_code'
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:11:3: error:
unknown type name 'tree_base'
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:13:8: error:
unknown type name 'tree_code_class'
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:15:28: error:
unknown type name 'tree_code'
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:15:44: error:
unknown type name 'tree_code'
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:22:51: error:
request for member 'code' in something not a structure or union
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:23:38: error:
request for member 'code' in something not a structure or union
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/pr97315-1.c:25:12: warning:
implicit declaration of function 'tree_check3'
[-Wimplicit-function-declaration]

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2006 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread tnfchris at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #12 from Tamar Christina  ---
(In reply to Martin Liška from comment #11)
> (In reply to Tamar Christina from comment #0)
> > With just -Ofast the benchmark doesn't seem to ever terminate until it is
> > eventually killed.
> > 
> 
> Can't reproduce the stuck without -flto.

You're right, had the timeout set too low in the CI. it does work without lto.
Sorry about that.

[Bug target/97203] [nvptx] 'illegal memory access was encountered' with 'omp simd'/SIMT and cexpf call

2020-10-08 Thread vries at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97203

--- Comment #5 from Tom de Vries  ---
FWIW, another aspect here is convergence (as usual).

Looking at the SASS code for main$_omp_fn$0$impl, I don't find evidence for the
usual divergence/convergence ops (SSY/SYNC), which might mean that the
following shfl is executed in divergent mode, so, even if we would not get the
memory access error, we would not get correct results.

[Bug tree-optimization/97317] [11 Regression] ICE in verify_range, at value-range.cc:369

2020-10-08 Thread amacleod at redhat dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97317

--- Comment #3 from Andrew Macleod  ---
Created attachment 49331
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49331=edit
patch to calculate negative side properly

This is actually due to not handling a cast very well when the precision of the
RHS is only 1 greater than the precision of the LHS.

lhs = (cast) RHS

we calculate the value of RHS by treating LHS as an unsigned, and
1) adding in all the ranges of LHS as positive ranges
2) adding in all the LHS values  as negative values
3) filling in all the other ranges in RHS between those negative and positive
values.   ie, all the various upper bits in RHS can be on or off... 

THe code breaks down when the precision of the RHS is off by one. when
calculating those negative values in 3), there wasn't a expectation that the
sign bit *is* basically the entire range, so when it was trying to calculate
the range o fthose bits, it was trying to create a nonsensical  range.

This patch fixes that particular problem, but further examination shows we
arent producing ranges as good as we could.. so I will continue delving into
it.

[Bug ipa/97335] [11 Regression] 525.x264_r fails with -Ofast -g -march=znver2 -flto=16 since r11-3641-gc34db4b6f8a5d803

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97335

--- Comment #3 from Martin Liška  ---
One needs -flto here.

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2006 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #11 from Martin Liška  ---
(In reply to Tamar Christina from comment #0)
> With just -Ofast the benchmark doesn't seem to ever terminate until it is
> eventually killed.
> 

Can't reproduce the stuck without -flto.

[Bug ipa/97335] [11 Regression] 525.x264_r fails with -Ofast -g -march=znver2 -flto=16 since r11-3641-gc34db4b6f8a5d803

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97335

--- Comment #2 from Martin Liška  ---
With the current master (g:3e1123e52f8eca2650efa0bc81768792d328961f) one needs
only one IPA modref transform to trigger the wrong code:

-fdbg-cnt=ipa_mod_ref:778-778

where one needs to copy the input file to
benchspec/CPU/525.x264_r/build/build_peak_gcc7-m64. folder:

cp ../../../525.x264_r/data/test/input/BuckBunny.264 .

One can see the difference in PRE dump file.

[Bug target/97203] [nvptx] 'illegal memory access was encountered' with 'omp simd'/SIMT and cexpf call

2020-10-08 Thread vries at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97203

--- Comment #4 from Tom de Vries  ---
So, I think calling functions from simd code is atm not supported for nvptx.

Stack variables in simd code are mapped on a per-thread stack rather than on
the
usual per-warp stack.

The functions are compiled with the usual per-warp stack, so calling those
functions from simd might mean the different lanes are gonna disagree about
what the value in a stack variable should be.

Having said that, for the example in comment 2, there only should be one thread
executing the call, so this doesn't explain the illegal memory access.

[Bug other/97309] Improve documentation of -fallow-store-data-races

2020-10-08 Thread qinzhao at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97309

qinzhao at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from qinzhao at gcc dot gnu.org ---
fixed.

[Bug other/97309] Improve documentation of -fallow-store-data-races

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97309

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Qing Zhao :

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

commit r11-3732-gbaf4750feaa6a5fa502ae7bc0b90f31640af6f47
Author: qing zhao 
Date:   Thu Oct 8 17:01:07 2020 +0200

Improve documentation of -fallow-store-data-races

2020-10-08  John Henning  

gcc/

PR other/97309
* doc/invoke.texi: Improve documentation of
-fallow-store-data-races.

[Bug target/97150] [AArch64] 2nd parameter of unsigned Neon scalar shift intrinsics should be signed

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97150

--- Comment #5 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Kyrylo Tkachov
:

https://gcc.gnu.org/g:11af9c329ae528abb8c69ae8fae96a0f3fc6ed87

commit r10-8869-g11af9c329ae528abb8c69ae8fae96a0f3fc6ed87
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:01:23 2020 +0100

PR target/97150 AArch64: 2nd parameter of unsigned Neon scalar shift
intrinsics should be signed

In this PR the second argument to the intrinsics should be signed but we
use an unsigned one erroneously.
The corresponding builtins are already using the correct types so it's
just a matter of correcting the signatures in arm_neon.h

gcc/
PR target/97150
* config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
signed.
(vqrshlh_u16): Likewise.
(vqrshls_u32): Likewise.
(vqrshld_u64): Likewise.
(vqshlb_u8): Likewise.
(vqshlh_u16): Likewise.
(vqshls_u32): Likewise.
(vqshld_u64): Likewise.
(vshld_u64): Likewise.

gcc/testsuite/
PR target/97150
* gcc.target/aarch64/pr97150.c: New test.

(cherry picked from commit 2d8fbebdb1eaca8de557ab3052535a8e4b8f8972)

[Bug target/96313] [AArch64] vqmovun* return types should be unsigned

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96313

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

https://gcc.gnu.org/g:7d177b142dcbe841124fe023cb592914d4200e57

commit r10-8868-g7d177b142dcbe841124fe023cb592914d4200e57
Author: Kyrylo Tkachov 
Date:   Wed Sep 30 12:00:20 2020 +0100

PR target/96313 AArch64: vqmovun* return types should be unsigned

In this PR we have the wrong return type for some intrinsics. It should
be unsigned, but we implement it as signed.
Fix this by adjusting the type qualifiers used when creating the
builtins and fixing the type in the arm_neon.h intrinsic.
With the adjustment in qualifiers we now don't need to cast the result
when returning.

Bootstrapped and tested on aarch64-none-linux-gnu.

gcc/
PR target/96313
* config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
qualifiers.
* config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
Remove unnecessary result cast.
(vqmovun_s32): Likewise.
(vqmovun_s64): Likewise.
(vqmovunh_s16): Likewise.  Fix return type.
(vqmovuns_s32): Likewise.
(vqmovund_s64): Likewise.

gcc/testsuite/
PR target/96313
* gcc.target/aarch64/pr96313.c: New test.
* gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16):
Adjust return type.
(test_vqmovuns_s32): Likewise.
(test_vqmovund_s64): Likewise.

(cherry picked from commit 135b043196b5575c690ef1e07bcbb49bf037c3a2)

[Bug libstdc++/82584] div by zero in random distribution

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

Jonathan Wakely  changed:

   What|Removed |Added

   Target Milestone|--- |11.0
 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jonathan Wakely  ---
$ g++11  rando.cc   -D_GLIBCXX_ASSERTIONS
$ ./a.out
/home/jwakely/gcc/11/include/c++/11.0.0/bits/random.tcc:2633: void
std::discrete_distribution<_IntType>::param_type::_M_initialize() [with
_IntType = int]: Assertion '__sum > 0' failed.
Aborted (core dumped)

[Bug libstdc++/82584] div by zero in random distribution

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

--- Comment #3 from CVS Commits  ---
The master branch has been updated by Jonathan Wakely :

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

commit r11-3731-gb2a96bf9dce41ee777b1669e4a8b4c6df3ff3613
Author: Jonathan Wakely 
Date:   Thu Oct 8 15:14:58 2020 +0100

libstdc++: Add assertions for preconditions in sampling distributions [PR
82584]

These three distributions all require 0 < S where S is the sum of the
weights. When the sum is zero there's an undefined FP division by zero.
Add assertions to help users diagnose the problem.

libstdc++-v3/ChangeLog:

PR libstdc++/82584
* include/bits/random.tcc
(discrete_distribution::param_type::_M_initialize)
(piecewise_constant_distribution::param_type::_M_initialize)
(piecewise_linear_distribution::param_type::_M_initialize):
Add assertions for positive sums..
* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
line.

[Bug gcov-profile/90439] [GCOV] multiple expression across different lines in if statement is inconsistent when the body is empty

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90439

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #2 from Martin Liška  ---
Yes, it behaves the same also in GCC 7.x.

[Bug libstdc++/82584] div by zero in random distribution

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

Jonathan Wakely  changed:

   What|Removed |Added

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

--- Comment #2 from Jonathan Wakely  ---
This is user error. [rand.dist.samp.discrete] p2 says:

> Moreover, the following relation shall hold: 0 < S = w0 + · · · + wn−1 .

So there must be at least one non-zero weight.

I'll add an assertion.

[Bug target/96914] missing MVE intrinsics

2020-10-08 Thread clyon at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96914

Christophe Lyon  changed:

   What|Removed |Added

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

--- Comment #10 from Christophe Lyon  ---
Fixed on trunk

[Bug target/96914] missing MVE intrinsics

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96914

--- Comment #9 from CVS Commits  ---
The master branch has been updated by Christophe Lyon :

https://gcc.gnu.org/g:5a448362da6133c3b16ffdb0c795b657af7fa5a4

commit r11-3730-g5a448362da6133c3b16ffdb0c795b657af7fa5a4
Author: Christophe Lyon 
Date:   Mon Oct 5 09:52:59 2020 +

arm: [MVE] Add missing __arm_vcvtnq_u32_f32 intrinsic (PR 96914)

__arm_vcvtnq_u32_f32 was missing from arm_mve.h, although the s32_f32 and
[su]16_f16 versions were present.

This patch adds the missing version and testcase, which are
cut-and-paste from the other versions.

2020-10-08  Christophe Lyon  

gcc/
PR target/96914
* config/arm/arm_mve.h (__arm_vcvtnq_u32_f32): New.

gcc/testsuite/
PR target/96914
* gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c: New test.

[Bug libstdc++/86402] Several targets missing AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) in crossconfig.m4

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86402

Jonathan Wakely  changed:

   What|Removed |Added

   Last reconfirmed||2020-10-08
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

[Bug libstdc++/70358] Several 26_numerics/random/binomial_distribution/operators etc. tests FAIL

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70358

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2020-10-08
   Target Milestone|5.5 |---
 Ever confirmed|0   |1

--- Comment #2 from Jonathan Wakely  ---
Rainer, what's the status of this one? Are those tests still UNSUPPORTED, or
now PASSing?

[Bug libstdc++/82584] div by zero in random distribution

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

Jonathan Wakely  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2020-10-08
 Status|UNCONFIRMED |NEW

[Bug libstdc++/63332] problem with VERIFY in ext/random/k_distribution/operators/serialize.cc execution test

2020-10-08 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63332

Jonathan Wakely  changed:

   What|Removed |Added

 Target||i386-pc-solaris2.11
 CC||ro at gcc dot gnu.org
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2020-10-08

--- Comment #10 from Jonathan Wakely  ---
Looks like this is still failing for solaris 11:
https://gcc.gnu.org/pipermail/gcc-testresults/2020-October/610818.html

[Bug go/92564] libgo regression in runtime test resulting in SIGSEGV on ppc64le

2020-10-08 Thread boger at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92564

--- Comment #3 from boger at gcc dot gnu.org ---
Yes, I tried the value of 0x8 and the test passed. In the issue Ian
mentioned that 0x10 was the default on x86. If we want the same default on
x86 and ppc64 then 0x10 would work since the value I tested with is
smaller.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

Patrick Palka  changed:

   What|Removed |Added

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

[Bug target/97203] [nvptx] 'illegal memory access was encountered' with 'omp simd'/SIMT and cexpf call

2020-10-08 Thread vries at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97203

--- Comment #3 from Tom de Vries  ---
[ Note, this is with GOMP_NVPTX_JIT=-O0. ]

In sinf, we have:
...
 45:return -__kernel_cosf(y[0],y[1]);
...
which translates to:
...
.loc 1 45 12
ld.f32 %r67,[%frame+4];
ld.f32 %r65,[%frame];
{
.param .f32 %value_in;
.param .f32 %out_arg1;
st.param.f32 [%out_arg1],%r65;
.param .f32 %out_arg2;
st.param.f32 [%out_arg2],%r67;
call (%value_in),__kernel_cosf,(%out_arg1,%out_arg2);
ld.param.f32 %r68,[%value_in];
}
.loc 1 45 11
neg.f32 %r37,%r68;
...

If I place (using GOMP_NVPTX_PTXRW) a trap before the first load:
...
 .loc 1 45 12
+trap
 ld.f32 %r67,[%frame+4];
...
I get:
...
libgomp: cuCtxSynchronize error: an illegal instruction was encountered
...

If I place it after the first load, I get:
...
libgomp: cuCtxSynchronize error: an illegal memory access was encountered
...

[Bug ipa/97335] [11 Regression] 525.x264_r fails with -Ofast -g -march=znver2 -flto=16 since r11-3641-gc34db4b6f8a5d803

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97335

--- Comment #1 from Martin Liška  ---
With -O3 -g -flto=16 --param=lto-partitions=1, the first bad binary is with
-fdbg-cnt=ipa_mod_ref:1046.

It seems a misc tool fails with:

./ldecod_r -i BuckBunny.264 -o BuckBunny.yuv
Setting Default Parameters...
Parsing Configfile decoder.cfg

- JM 17.1 (FRExt) -
--
 Input H.264 bitstream  : BuckBunny.264 
 Output decoded YUV : BuckBunny.yuv 
 Input reference file   : test_rec.yuv 
--
POC must = frame# or field# for SNRs to be correct
--
  Frame  POC  Pic#   QPSnrY SnrU SnrV   Y:U:V Time(ms)
--
 Input reference file   : test_rec.yuv does not exist 
  SNR values are not available
0(IDR)0 028 4:2:0   0
2( P )4 131 4:2:0   0
1( b )2 231 4:2:0   0
3( I )6 228 4:2:0   0
6( P )   12 428 4:2:0   0
mb_qp_delta is out of range

PRE dump files:
https://drive.google.com/file/d/1GzqkYP4PRtXVkVbvGGJUukz8-9ay-uMy/view?usp=sharing

[Bug gcov-profile/90439] [GCOV] multiple expression across different lines in if statement is inconsistent when the body is empty

2020-10-08 Thread sunil.kumar3 at ltts dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90439

Sunil Kumar  changed:

   What|Removed |Added

 CC||sunil.kumar3 at ltts dot com

--- Comment #1 from Sunil Kumar  ---
I have a query. Will this issue is applicable for GCC 7.4.0 ?

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2016 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #10 from Martin Liška  ---
Good PRE dump file with details:
https://drive.google.com/file/d/114AAhbNKeiJ7w3FYOcumdpnnMCNvdjiy/view?usp=sharing

Bad PRE dump file with details:
https://drive.google.com/file/d/14_dV-FYSe1j0Sx-zIc8d_6ypuFcmPnZl/view?usp=sharing

[Bug tree-optimization/97330] [11 Regression] ice for stmt with wrong VUSE

2020-10-08 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97330

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Richard Biener :

https://gcc.gnu.org/g:629e0547af33221a925f38757b52a9284148b68a

commit r11-3726-g629e0547af33221a925f38757b52a9284148b68a
Author: Richard Biener 
Date:   Thu Oct 8 13:18:57 2020 +0200

tree-optimization/97330 - fix bad load sinking

This fixes bad placement of sunk loads.

2020-10-08  Richard Biener  

PR tree-optimization/97330
* tree-ssa-sink.c (statement_sink_location): Avoid skipping
PHIs when they dominate the insert location.

* gcc.dg/torture/pr97330-1.c: New testcase.
* gcc.dg/torture/pr97330-2.c: Likewise.

[Bug tree-optimization/97330] [11 Regression] ice for stmt with wrong VUSE

2020-10-08 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97330

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2016 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #9 from Martin Liška  ---
Created attachment 49330
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49330=edit
Bad PRE dump file

[Bug ipa/97292] [11 Regression] dealII from SPECCPU 2016 no longer terminates after g:c34db4b6f8a5d80367c709309f9b00cb32630054

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292

--- Comment #8 from Martin Liška  ---
Created attachment 49329
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49329=edit
Good PRE dump file

[Bug tree-optimization/97330] [11 Regression] ice for stmt with wrong VUSE

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97330

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #4 from Martin Liška  ---
Just for the record, started with r11-3705-gdae673abd37d4004.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

Martin Liška  changed:

   What|Removed |Added

   Last reconfirmed||2020-10-08
 Status|UNCONFIRMED |NEW
Summary|[ICE] internal compiler |[10/11 Regression] ICE in
   |error: in   |verify_ctor_sanity, at
   |verify_ctor_sanity, at  |cp/constexpr.c:3995 since
   |cp/constexpr.c:3995 |r10-7313-gb599bf9d6d1e180d
 CC||marxin at gcc dot gnu.org,
   ||ppalka at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Liška  ---
Confirmed, started with r10-7313-gb599bf9d6d1e180d.

[Bug c++/97328] [10/11 Regression] ICE in verify_ctor_sanity, at cp/constexpr.c:3995 since r10-7313-gb599bf9d6d1e180d

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97328

Martin Liška  changed:

   What|Removed |Added

   Target Milestone|--- |10.3
  Known to work||9.3.0
  Known to fail||10.2.0, 11.0

[Bug target/97324] -mcpu= isn't validated on x86

2020-10-08 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97324

Martin Liška  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED
 CC||marxin at gcc dot gnu.org

--- Comment #2 from Martin Liška  ---
Well for GCC 11 we provide:

gcc: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead
cc1: error: bad value (‘sdfdsf’) for ‘-mtune=’ switch
cc1: note: valid arguments to ‘-mtune=’ switch are: nocona core2 nehalem corei7
westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2
broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server
cascadelake tigerlake cooperlake sapphirerapids alderlake bonnell atom
silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano
nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron
opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2
bdver3 bdver4 znver1 znver2 btver1 btver2 generic native

So -mcpu is deprecated and we print valid values for -mtune argument.
Fixed on master with r11-2755-ga7bbb5b1b1eb09db.

  1   2   >