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

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

Richard Biener  changed:

   What|Removed |Added

  Known to work||11.0
   Priority|P3  |P2
Summary|[10/11 Regression] ICE in   |[10 Regression] ICE in
   |write_type since r10-6087   |write_type since r10-6087

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

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

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

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

commit r11-2834-g7fe2cec41bb2ccb499b6b6c513e00da1a270370f
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.

[Bug middle-end/64242] Longjmp expansion incorrect

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64242

--- Comment #41 from CVS Commits  ---
The master branch has been updated by Chenghua Xu :

https://gcc.gnu.org/g:68e605c93d57c17f07edd50f7e1c80f9216befd2

commit r11-2835-g68e605c93d57c17f07edd50f7e1c80f9216befd2
Author: Andrew Pinski 
Date:   Tue Aug 25 14:17:52 2020 +0800

MIPS: Fix __builtin_longjmp (PR 64242)

The problem here is mips has its own builtin_longjmp
pattern and it was not fixed when expand_builtin_longjmp
was fixed.  We need to read the new fp and gp before
restoring the stack as the buffer might be a local
variable.

2020-08-25  Andrew Pinski  

gcc/ChangeLog:

PR middle-end/64242
* config/mips/mips.md (builtin_longjmp): Restore the frame
pointer and stack pointer and gp.

[Bug testsuite/96519] [11 regression] new test case gcc.dg/ia64-sync-5.c fails

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96519

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug tree-optimization/96522] [9/10/11 Regression] Incorrect with with -O -fno-tree-pta

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96522

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #3 from Richard Biener  ---
Let me take this.

[Bug target/96528] [11 Regression] vector comparisons on ARM

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96528

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2020-08-25
   Target Milestone|--- |11.0
 Status|UNCONFIRMED |NEW

--- Comment #1 from Richard Biener  ---
I think that eventually vector lowering should lower

 _1 = a == 5;
 _2 = b == 7;
 _3 = _1 | _2;
 _4 = _3 ? -1 : 0;

to

 _31 = _1 ? -1 : 0;
 _32 = _2 ? -1 : 0;
 _33 = _31 | _32;
 _34 = _33 == -1;
 _4 = _34 ? -1 : 0;

or so.  Conditionals are really a mess, GIMPLE and optabs do not match 1:1
(we've rejected the idea of "splitting" VEC_COND_EXPR to
VEC_COND_{EQ,NE,...}_EXPR and making it four-operand).  Forcing
vector compares to produce a bool vector result was the attempt to make
the GIMPLE IL more streamlined, but obviously the above shows that code
generation needs to be "fixed" - in this case it is vector lowering doing
"code generation" (together with the later isel pass).

[Bug middle-end/96549] [10 Regression] Wrong evaluation of a comparison between long & short

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96549

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

[Bug tree-optimization/96548] [11 Regression] ICE in compute_live_loop_exits, at tree-ssa-loop-manip.c:247 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96548

Richard Biener  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Status|NEW |ASSIGNED
   Target Milestone|--- |11.0

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

[Bug target/96551] [10/11 Regression] FAIL: gcc.target/i386/vectorize8.c (internal compiler error)

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96551

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |10.3
   Keywords||ice-on-valid-code
   Priority|P3  |P2

[Bug c++/96555] "template argument involves template parameter(s)" with dot or arrow operator in partial specialization

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96555

Richard Biener  changed:

   What|Removed |Added

   Keywords||rejects-valid

--- Comment #1 from Richard Biener  ---
is it supposed to be accepted?

[Bug target/96562] Rather poor assembly generated for copy-list-initialization in return statement.

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96562

Richard Biener  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED
  Known to work||10.2.1

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

[Bug middle-end/96564] [11 Regression] New maybe use of uninitialized variable warning since r11-959

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96564

--- Comment #5 from Richard Biener  ---
note alias cannot disabiguate (A) on its own since both a and x could be NULL,
it additionally needs the flow-based info that a is not NULL at (A).

[Bug tree-optimization/96565] Failure to optimize out VLA even though it is left unused

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96565

Richard Biener  changed:

   What|Removed |Added

   Keywords||missed-optimization
 CC||jakub at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org

--- Comment #3 from Richard Biener  ---
So we have

   :
  saved_stack.2_7 = __builtin_stack_save ();
  _1 = (long int) x_6(D);
  _2 = _1 + -1;
  _13 = (sizetype) _2;
  _4 = (sizetype) x_6(D);
  _5 = (bitsizetype) _4;
  _14 = _5 * 8;
  arr.1_19 = __builtin_alloca_with_align (_4, 8);
  (*arr.1_19)[0] = 0;
  _12 = g ();
  if (_12 != 0)
goto ; [INV]
  else
goto ; [INV]

   :
  abort ();

   :
  __builtin_stack_restore (saved_stack.2_7);
  return;

I guess the "usual" way of dealing with this would be to have
CLOBBERs for all VLAs before the __builtin_stack_restore.

[Bug tree-optimization/96572] Failure to optimize out branch when it always results in UB from dereferencing a pointer to an undefined value set in there

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96572

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Keywords||missed-optimization
   Last reconfirmed||2020-08-25
 Status|UNCONFIRMED |NEW
 CC||msebor at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org

--- Comment #1 from Richard Biener  ---
So phiprop sees

   [local count: 1073741824]:
  if (cond_4(D) != 0)
goto ; [50.00%]
  else
goto ; [50.00%]

   [local count: 536870913]:

   [local count: 1073741824]:
  # q_3 = PHI <&i(2), p_5(D)(3)>
  _1 = *q_3;
  _2 = *p_5(D);
  _7 = _1 + _2;
  i ={v} {CLOBBER};
  return _7;

and if we extend it to handle the case of a single address PHI operand
then we possibly would optimize this.  After PRE we then have

   [local count: 1073741824]:
  pretmp_9 = *p_5(D);
  if (cond_3(D) != 0)
goto ; [50.00%]
  else
goto ; [50.00%]

   [local count: 536870912]:

   [local count: 1073741824]:
  # q_2 = PHI 
  _8 = q_2 + pretmp_9;
  return _8;

but then we're missing the optimistic copy propagation / value-numbering
we do not perform because it defeats uninit warnings.

So I'm not sure it is desirable to optimize this given the obvious
fallout this will cause for diagnostics.

After-phiprop proposed IL testcase we fail to optimize because of this:

int f(int *p, _Bool cond)
{
  int i;
  int q;
  if (cond)
q = i;
  else
q = *p;
  return q + *p;
}

[Bug tree-optimization/96573] [10/11 Regression] Regression in optimization on x86-64 with -O3

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96573

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

[Bug testsuite/96574] FAIL: gcc.target/i386/pr92865-1.c scan-assembler-times vmovdq[au]16[\t ] 6

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96574

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #5 from Richard Biener  ---
.

[Bug tree-optimization/96579] [8/9/10/11 Regression] ICE in gimple check: expected gimple_assign(error_mark), have gimple_nop() in gimple_assign_rhs1, at gimple.h:2605 since r7-950-g8a85cee26eabf5cf

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96579

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Target Milestone|--- |8.5
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener  ---
Probably similar to the fallout I fixed in
2c558d2655cb22f472c83e8296b5cd2a92365cd3 (PR96370) where I already suspected
the real issue is still unfixed.  So I'll take a second look.

[Bug tree-optimization/96586] suboptimal code generated for condition expression

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96586

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96565] Failure to optimize out VLA even though it is left unused

2020-08-25 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96565

--- Comment #4 from Marc Glisse  ---
(In reply to Richard Biener from comment #3)
> I guess the "usual" way of dealing with this would be to have
> CLOBBERs for all VLAs before the __builtin_stack_restore.

That looks like a good idea.

I didn't try to follow in a debugger why DSE fails to remove the write when
those 2 builtins are present while it manages if I call
__builtin_alloca_with_align directly, but I don't immediately see a reason for
that difference, even in the absence of clobbers. Or maybe that's just the
usual limitations of DSE (there is a branch after all...).

I first thought that __builtin_stack_save/restore might need some extra
attributes (advertising for instance that they do not read/write memory or let
anything escape, without weakening them to the point where the compiler would
move them around too much or remove them), but since the call to the opaque g
does not seem to prevent DSE from removing the write, that's probably not the
issue.

[Bug c++/96496] Conversion to enum with underlying type bool produces wrong result

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96496

Jonathan Wakely  changed:

   What|Removed |Added

 CC||fujii.hironori at gmail dot com

--- Comment #2 from Jonathan Wakely  ---
*** Bug 96778 has been marked as a duplicate of this bug. ***

[Bug c++/96778] static cast a integer to a enum type whose underlying type is fixed

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96778

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Jonathan Wakely  ---
Looks like a dup of PR 96496

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

[Bug c++/96591] [8/9/10/11 Regression] ICE with -flto=auto and -O1: tree code ‘typename_type’ is not supported in LTO streams

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96591

Richard Biener  changed:

   What|Removed |Added

  Component|lto |c++
   Target Milestone|--- |8.5
   Keywords||lto

--- Comment #2 from Richard Biener  ---
FE trees should not leak into the middle-end so it looks more like a FE issue
to me.  We're chasing TYPE_FIELDS of the context of the scalar_type name
and visiting a TEMPLATE_DECL for 'rebind' in simd_traits.

In the end this might mean free-lang-data doesn't visit DECL_CONTEXT of
the INTEGER_TYPEs TYPE_NAME?  At least I do not see it walking
simd_traits.

It might also be that some intermediate optimization somehow introduces
a reference to this type from nowhere (huh).

[Bug c/96596] [11 Regression] ICE: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in match_builtin_function_types

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96596

Richard Biener  changed:

   What|Removed |Added

 CC||msebor at gcc dot gnu.org
   Keywords||ice-on-invalid-code
   Target Milestone|--- |11.0

[Bug tree-optimization/96599] Failure to optimize self-stpcpy to strlen

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96599

--- Comment #2 from Richard Biener  ---
Might be more often a typo and say, stpcpy (a, b) was meant...

[Bug tree-optimization/96615] Failure to optimize out loop that eventually ends but has no side effects involving decrease of loop counter using an unsigned operation and the loop being done through r

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96615

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2020-08-25
 CC||amker at gcc dot gnu.org,
   ||hubicka at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
 Status|UNCONFIRMED |NEW

--- Comment #1 from Richard Biener  ---
Even not with -ffinite-loops.  The reason is that finiteness of loops is
determined by frontends now and recorded in loop->finite_p but the loop
only appears after tail-recursion optimization.  I guess tailr could
unconditionally set loop->finite_p since the stack is bounded
but it relies on loop discovery and thus there's no easy way to do this
(not sure if the loop is always natural).

Of course niter analysis might do a better job on this kind of loop
to prove finiteness ...

One reason for the failure is of course that we compute

Analyzing # of iterations of loop 1
  exit condition 0 < [(int) ((unsigned int) bytes_7(D) + 4294967232), + , -64]
  bounds on difference of bases: -2147483648 ... 2147483647
  result:
under assumptions (int) ((unsigned int) bytes_7(D) + 4294967232) <=
2147483584
zero if (int) ((unsigned int) bytes_7(D) + 4294967295) < 0
# of iterations ((unsigned int) bytes_7(D) + 4294967295) / 64, bounded by
33554432
  (set_nb_iterations_in_loop = scev_not_known))

which we throw away, not using it for loop estimates / max number of iterations
computation.

[Bug tree-optimization/21137] Convert (a >> 2) & 1 != 0 into a & 4 != 0

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21137

--- Comment #12 from CVS Commits  ---
The master branch has been updated by Roger Sayle :

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

commit r11-2836-ga0b4e42af26a85da2698e573ac8e32fa0a5709d6
Author: Roger Sayle 
Date:   Tue Aug 25 10:50:48 2020 +0100

middle-end: PR tree-optimization/21137: STRIP_NOPS avoids missed
optimization.

PR tree-optimization/21137 is now an old enhancement request pointing out
that an optimization I added back in 2006, to optimize "((x>>31)&64) != 0"
as "x < 0", doesn't fire in the presence of unanticipated type conversions.
The fix is to call STRIP_NOPS at the appropriate point.

2020-08-25  Roger Sayle  

gcc/ChangeLog
PR tree-optimization/21137
* fold-const.c (fold_binary_loc) [NE_EXPR/EQ_EXPR]: Call
STRIP_NOPS when checking whether to simplify ((x>>C1)&C2) != 0.

gcc/testsuite/ChangeLog
PR tree-optimization/21137
* gcc.dg/pr21137.c: New test.

[Bug tree-optimization/96760] [11 Regression] Faulty optimization in nested loops with -O2 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96760

Martin Liška  changed:

   What|Removed |Added

Summary|[11 Regression] Faulty  |[11 Regression] Faulty
   |optimization in nested  |optimization in nested
   |loops with -O2  |loops with -O2 since
   ||r11-2574-g6aec53ee4f75a64c
 CC||marxin at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org

--- Comment #5 from Martin Liška  ---
Slightly modified test-case:

at pr96760.c
char a = 0, f = 0, c = 5;
unsigned long d = 0;
int g = 0;
int *e = &g;

int main() {
  char  b = 0;
  for (;;) {
for (a = 0; a < 2; a++) { // no UB I believe
  if (c) {
if (d != 0)
  __builtin_abort ();
return 0; 
  }
}
f = (d++, *e);
  }

  return 1;
}

started with r11-2574-g6aec53ee4f75a64c

[Bug middle-end/96625] Unnecessarily large assembly generated when a bit-offsetted higher-end end of a uint64_t-backed bitfield is shifted toward the high end (left) by its bit-offset

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96625

--- Comment #2 from Richard Biener  ---
There's no promotion on bitfields bigger than int, so yes, this would depend on
the frontends.  The zeroing of the upper bits is done by RTL expansion for
bit-field arithmetic.

[Bug c/96629] spurious uninitialized variable warning with branches at -O1 and higher

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96629

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2020-08-25
 Ever confirmed|0   |1
 Blocks||24639
 Status|UNCONFIRMED |NEW
   Keywords||diagnostic

--- Comment #1 from Richard Biener  ---
the control-flow analysis of the uninit warning isn't powerful enough to
capture this.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
[Bug 24639] [meta-bug] bug to track all Wuninitialized issues

[Bug rtl-optimization/96632] missed-optimization with conditionally unsetting bits in memory.

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96632

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2020-08-25
  Component|target  |rtl-optimization

--- Comment #1 from Richard Biener  ---
Confirmed.  A bit tricky to do I guess.  There's no representation on
GIMPLE we could use so it's left for RTL (unless we add bit
set/clear/flip-and-test internal functions).

[Bug target/96528] [11 Regression] vector comparisons on ARM

2020-08-25 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96528

--- Comment #2 from Marc Glisse  ---
(In reply to Richard Biener from comment #1)
> I think that eventually vector lowering should lower
> 
>  _1 = a == 5;
>  _2 = b == 7;
>  _3 = _1 | _2;
>  _4 = _3 ? -1 : 0;
> 
> to
> 
>  _31 = _1 ? -1 : 0;
>  _32 = _2 ? -1 : 0;
>  _33 = _31 | _32;
>  _34 = _33 == -1;

  _34 = _33 < 0; // for consistency with what we do elsewhere? But I think isel
already handles that.

>  _4 = _34 ? -1 : 0;
> 
> or so.

... on platforms like ARM. On AVX512, we clearly want to keep the bool vectors.

> Conditionals are really a mess, GIMPLE and optabs do not match 1:1
> (we've rejected the idea of "splitting" VEC_COND_EXPR to
> VEC_COND_{EQ,NE,...}_EXPR and making it four-operand).  Forcing
> vector compares to produce a bool vector result was the attempt to make
> the GIMPLE IL more streamlined, but obviously the above shows that code
> generation needs to be "fixed" - in this case it is vector lowering doing
> "code generation" (together with the later isel pass).

I wonder if doing it during isel (and updating the predicates so they advertise
a==b as supported for vector lowering when a==b?-1:0 is) would be sufficient.
It requires considering that a bool vector and an integer vector of the same
shape are essentially the same thing on platforms that do not have true bool
vectors. This way we would only need to rewrite
  _1 = a == 5;
to
  _1 = a == 5 ? true : false;

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

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96650

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug analyzer/96646] [11 Regression] ICE: Segmentation fault (in tree_class_check)

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96646

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug c++/96645] [9/10/11 Regression] std::variant default constructor

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96645

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |9.4

[Bug tree-optimization/96654] Failure to optimize vectorized conversion to `int` with AVX

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96654

Richard Biener  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org,
   ||rsandifo at gcc dot gnu.org
 Blocks||53947

--- Comment #3 from Richard Biener  ---
The pattern is exercised directly by BB vectorization only, loop vectorization
still uses a fixed vector size.  Still the assembly shows basically the same
code when doing BB vectorization only:

f:
.LFB0:
.cfi_startproc
vmovupd (%rdi), %xmm1
vinsertf128 $0x1, 16(%rdi), %ymm1, %ymm0
vcvttpd2dqy %ymm0, %xmm0
vmovdqu %xmm0, (%rsi)
vzeroupper
ret

this is probably because of some tuning (split unaligned loads, not using
a memory operand for vcvttpd2dqy).

With -O3 -fno-tree-loop-vectorize -march=core-avx2 I get

f:
.LFB0:
.cfi_startproc
vcvttpd2dqy (%rdi), %xmm0
vmovdqu %xmm0, (%rsi)
ret


Referenced Bugs:

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

[Bug libstdc++/96657] [9/10/11 Regression] libsupc++.a missing required functions from src/c++98/atomicity.cc when atomic builtins are not supported

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96657

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |9.4
 Target||sparc, arc

[Bug tree-optimization/96669] Failure to optimize shift by variable+and by 1 to test for 0

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96669

Richard Biener  changed:

   What|Removed |Added

   Keywords||easyhack
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2020-08-25
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener  ---
Confirmed.

[Bug tree-optimization/96671] Failure to optimize a 3 xor+and pattern to xor+andnot

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96671

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2020-08-25
 Status|UNCONFIRMED |NEW
   Keywords||easyhack
 Ever confirmed|0   |1

--- Comment #3 from Richard Biener  ---
Confirmed.

[Bug tree-optimization/96674] Failure to optimize combination of comparisons to dec+compare

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96674

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96672] Missing -Wclobbered diagnostic, or: __attribute__((returns_twice)) does not inhibit constant folding across call site

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96672

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Keywords||wrong-code
   Last reconfirmed||2020-08-25

--- Comment #2 from Richard Biener  ---
abnormal edges are "rebuilt" during RTL expansion, we have a duplicate
somewhere for this correctness bug.

[Bug tree-optimization/96679] Failure to optimize or+and+or pattern to and+or

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96679

Richard Biener  changed:

   What|Removed |Added

   Keywords||easyhack
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2020-08-25

[Bug middle-end/96680] [11 Regression][OpenMP][LTO] Declare variant + ICE in lto_fixup_prevailing_decls, at lto/lto-common.c:2595

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96680

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug tree-optimization/96681] Failure to optimize xor of comparisons with specific constants to comparison of xor-ed of compared variables

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96681

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96685] Failure to optimize not+sub to add+not

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96685

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Target||x86_64-*-* i?86-*-*
   Last reconfirmed||2020-08-25
 Status|UNCONFIRMED |NEW

--- Comment #1 from Richard Biener  ---
It's at least a missed canonicalization as ~x + y isn't transformed to ~(x - y)
either.

int f(int x, int y)
{
return ~(x - y) + (~x + y);
}

should see CSE, with a minus folding to zero (that works already for some
reason).

[Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #2 from Richard Biener  ---
Confirmed.  The small constants might be cheaper to code-gen though.

[Bug tree-optimization/96691] Failure to optimize bitwise not+or+xor with constants to and+xor with bitwise not-ed constants

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96691

Richard Biener  changed:

   What|Removed |Added

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

[Bug rtl-optimization/96692] Failure to optimize xor+or+xor to andnot+xor

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96692

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96693] [11 Regression] GCC produces incorrect code with -O2 for loops

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96693

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0
   Last reconfirmed||2020-08-25
Summary|GCC produces incorrect code |[11 Regression] GCC
   |with -O2 for loops  |produces incorrect code
   ||with -O2 for loops
 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener  ---
Confirmed.  Looks like caused by my store-motion rewrite.

[Bug tree-optimization/96694] Failure to optimize min/max pattern using two binary nots to min/max pattern using one binary not

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96694

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96693] [11 Regression] GCC produces incorrect code with -O2 for loops

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96693

--- Comment #2 from Richard Biener  ---
unsigned int var_4 = 140810747U;
bool var_7 = (bool)0;
unsigned char var_20 = (unsigned char)82;
unsigned short var_22 = 42;
long long int arr_9 [23] ;

void __attribute__((noipa)) test(unsigned a, bool b, long long p12[23])
{
  for (int c = 0; c < 2;) {
  if (b) {
  for (int d = 0; d < 4082; d += 2)
for (int e = 0; e < a; e = 2)
  var_20 = 0;
  var_22 = 0;
  }
  c = p12[c];
  }
}

int main()
{
  for (unsigned long i_0 = 0; i_0 < 23; ++i_0)
arr_9 [i_0] = -722784397873599555LL;
  test(var_4, var_7, arr_9);
  if (var_22 != 42)
__builtin_abort ();
}

[Bug tree-optimization/96695] Failure to optimize combination of pointer comparison to nullptr and another pointer

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96695

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #2 from Richard Biener  ---
Hmm, so we can optimize 0 > y to false, likewise 0 <= y to true.  I guess we
already do that so VRP should handle

 if (x == 0)
   if (x > y)

already.

[Bug tree-optimization/96696] Failure to optimize div+mul to mod+sub

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96696

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #1 from Richard Biener  ---
Confirmed.  We have

/* Simplify (unsigned t / 2) * 2 -> unsigned t & ~1.  */
(simplify
 (mult (trunc_div @0 integer_pow2p@1) @1)
 (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
  (bit_and @0 (negate @1

[Bug tree-optimization/96697] Failure to optimize mod+div to 0

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96697

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #1 from Richard Biener  ---
Confirmed.

[Bug tree-optimization/96707] Failure to optimize right shift+unsigned compare of two variables optimally

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96707

Richard Biener  changed:

   What|Removed |Added

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

[Bug tree-optimization/96708] Failure to optimize max pattern with comparison when using a temporary variable

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96708

Richard Biener  changed:

   What|Removed |Added

   Keywords||easyhack
   Last reconfirmed||2020-08-25
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

--- Comment #2 from Richard Biener  ---
Confirmed.

  _4 = MAX_EXPR ;
  _7 = a_2(D) <= _4;
  return _7;

[Bug tree-optimization/96714] Failure to optimize sqrt*sqrt of same variable with ffast-math

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96714

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #1 from Richard Biener  ---
Huh.

(if (flag_unsafe_math_optimizations)
 /* Simplify sqrt(x) * sqrt(x) -> x.  */
 (simplify
  (mult (SQRT_ALL@1 @0) @1)
  (if (!HONOR_SNANS (type))
   @0))

and it works for me, with -ffast-math as you say.

[Bug tree-optimization/96715] Failure to optimize copysign of variable by negated variable

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96715

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug target/96532] [m68k] gcc 10.x generates calls to memset even for very small amounts

2020-08-25 Thread ad...@tho-otto.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96532

--- Comment #6 from Thorsten Otto  ---
Created attachment 49116
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49116&action=edit
Assembler output produced by gcc 11.0.0 for arm

[Bug c++/96721] [11 Regression] pseudo-destructor calls on pointers since r11-2238

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96721

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/96729] [11 Regression] hang on x86_64-linux-gnu with `-g -O3` since r11-39-gf9e1ea10e657af9f

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96729

Richard Biener  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Target Milestone|--- |11.0
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
Version|unknown |11.0

--- Comment #2 from Richard Biener  ---
Mine.

[Bug tree-optimization/96730] [10/11 Regression] ICE on x86_64-linux-gnu with `-O1` to `-O3` (in verify_sra_access_forest, at tree-sra.c:2352) since r10-6320-g5b9e89c922dc2e7e

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96730

Richard Biener  changed:

   What|Removed |Added

   Keywords||ice-checking,
   ||ice-on-valid-code
   Priority|P3  |P2
   Target Milestone|--- |10.3
Version|unknown |10.2.1

[Bug tree-optimization/96730] [10/11 Regression] ICE on x86_64-linux-gnu with `-O1` to `-O3` (in verify_sra_access_forest, at tree-sra.c:2352) since r10-6320-g5b9e89c922dc2e7e

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96730

--- Comment #4 from CVS Commits  ---
The master branch has been updated by Martin Jambor :

https://gcc.gnu.org/g:556600286dd312d3ddf3d673a8579576862663e3

commit r11-2838-g556600286dd312d3ddf3d673a8579576862663e3
Author: Martin Jambor 
Date:   Tue Aug 25 13:33:44 2020 +0200

sra: Bail out when encountering accesses with negative offsets (PR 96730)

I must admit I was quite surprised to see that SRA does not disqualify
an aggregate from any transformations when it encounters an offset for
which get_ref_base_and_extent returns a negative offset.  It may not
matter too much because I sure hope such programs always have
undefined behavior (SRA candidates are local variables on stack) but
it is probably better not to perform weird transformations on them as
build ref model with the new build_reconstructed_reference function
currently happily do for negative offsets (they just copy the existing
expression which is then used as the expression of a "propagated"
access) and of course the compiler must not ICE (as it currently does
because the SRA forest verifier does not like the expression).

gcc/ChangeLog:

2020-08-24  Martin Jambor  

PR tree-optimization/96730
* tree-sra.c (create_access): Disqualify any aggregate with
negative
offset access.
(build_ref_for_model): Add assert that offset is non-negative.

gcc/testsuite/ChangeLog:

2020-08-24  Martin Jambor  

PR tree-optimization/96730
* gcc.dg/tree-ssa/pr96730.c: New test.

[Bug tree-optimization/96738] GCC generates worse assembly than clang and It fails to vectorized code compared to clang

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96738

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #1 from Richard Biener  ---
GCC fails to SLP vectorize this because SLP discovery fails for this reduction
scheme.  The only think clang vectorizes seems to be the mask reduction
and the store.

We're not falling back to scalar operand construction for the mask and
for some reason.

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

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96744

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2020-08-25
Version|10.2.1  |11.0
   Target Milestone|--- |11.0
 Status|UNCONFIRMED |NEW

--- Comment #8 from Richard Biener  ---
Confirmed.

[Bug c/96740] frexp, modf, and remquo missing attribute nonnull

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96740

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #2 from Richard Biener  ---
Confirmed.

[Bug lto/96752] -fwhopr feature - is it available in gcc 9.2.0

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96752

Richard Biener  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from Richard Biener  ---
There is no -fwhopr flag.

[Bug target/96755] [11 Regression] ICE in final_scan_insn_1, at final.c:3073 with -O3 -march=skylake-avx512

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96755

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #5 from Richard Biener  ---
.

[Bug analyzer/96763] [11 Regression] ICE in get_subregion_within_ctor, at analyzer/store.cc:379 on RANGE_EXPR index

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96763

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug tree-optimization/96760] [11 Regression] Faulty optimization in nested loops with -O2 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96760

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0
   Last reconfirmed|2020-08-24 00:00:00 |2020-08-25
 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

[Bug analyzer/96764] [11 Regression] ICE in fold_convert_const_int_from_real, at fold-const.c:2038

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96764

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug other/96628] Feature request: __attribute__((no_builtin("Foo")))

2020-08-25 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96628

rsandifo at gcc dot gnu.org  changed:

   What|Removed |Added

 CC||rsandifo at gcc dot gnu.org
   Last reconfirmed||2020-08-25
 Status|RESOLVED|NEW
 Ever confirmed|0   |1
 Resolution|DUPLICATE   |---

--- Comment #6 from rsandifo at gcc dot gnu.org  
---
Not a dup.

[Bug tree-optimization/96758] [10/11 Regression] strncmp miscompiles as memcmp since r10-3920-g27c14dbc6b01d5b7

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96758

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

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

commit r11-2839-gf982a6ec9b6d98f5f37114b1d7455c54ce5056b8
Author: Jakub Jelinek 
Date:   Tue Aug 25 13:47:10 2020 +0200

strlen: Fix handle_builtin_string_cmp [PR96758]

The following testcase is miscompiled, because handle_builtin_string_cmp
sees a strncmp call with constant last argument 4, where one of the strings
has an upper bound of 5 bytes (due to it being an array of that size) and
the other has a known string length of 1 and the result is used only in
equality comparison.
It is folded into __builtin_strncmp_eq (str1, str2, 4), which is
incorrect, because that means reading 4 bytes from both strings and
comparing that.  When one of the strings has known strlen of 1, we want to
compare just 2 bytes, not 4, as strncmp shouldn't compare any bytes beyond
the null.
So, the last argument to __builtin_strncmp_eq should be the minimum of the
provided strncmp last argument and the known string length + 1 (assuming
the other string has only a known upper bound due to array size).

Besides that, I've noticed the code has been written with the intent to
also
support the case where we know exact string length of both strings (but not
the string content, so we can't compute it at compile time).  In that case,
both cstlen1 and cstlen2 are non-negative and both arysiz1 and arysiz2 are
negative.  We wouldn't optimize that, cmpsiz would be either the strncmp
last argument, or for strcmp the first string length, but varsiz would be
-1 and thus cmpsiz would be never < varsiz.  The patch fixes it by using
the
correct length, in that case using the minimum of the two and for strncmp
also the last argument.

2020-08-25  Jakub Jelinek  

PR tree-optimization/96758
* tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1
and cstlen2 are set, set cmpsiz to their minimum, otherwise use the
one that is set.  If bound is used and smaller than cmpsiz, set
cmpsiz
to bound.  If both cstlen1 and cstlen2 are set, perform the
optimization.

* gcc.dg/strcmpopt_12.c: New test.

[Bug c++/96776] Missing tail call optimization when passing local variable by reference to yet another function

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96776

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #7 from Richard Biener  ---
.

[Bug analyzer/96777] [11 Regression] ICE in bind_compound_sval, at analyzer/store.cc:618

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96777

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |11.0

[Bug tree-optimization/96722] [8/9/10/11 Regression] Clobbers on NULL since r8-1519

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96722

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

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

commit r11-2840-ga5b15fcb954ba63d58f0daa700281aba33b5f24a
Author: Jakub Jelinek 
Date:   Tue Aug 25 13:49:40 2020 +0200

gimple: Ignore *0 = {CLOBBER} in path isolation [PR96722]

Clobbers of MEM_REF with NULL address are just fancy nops, something we
just
ignore and don't emit any code for it (ditto for other clobbers), they just
mark end of life on something, so we shouldn't infer from those that there
is some UB.

2020-08-25  Jakub Jelinek  

PR tree-optimization/96722
* gimple.c (infer_nonnull_range): Formatting fix.
(infer_nonnull_range_by_dereference): Return false for clobber
stmts.

* g++.dg/opt/pr96722.C: New test.

[Bug analyzer/96777] [11 Regression] ICE in bind_compound_sval, at analyzer/store.cc:618

2020-08-25 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96777

David Malcolm  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
   Last reconfirmed||2020-08-25

--- Comment #1 from David Malcolm  ---
Thanks for filing this; confirmed.

[Bug tree-optimization/96779] New: Failure to optimize comparison of negative version of self

2020-08-25 Thread gabravier at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96779

Bug ID: 96779
   Summary: Failure to optimize comparison of negative version of
self
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gabravier at gmail dot com
  Target Milestone: ---

bool f(int a)
{
return -a == a;
}

This can be optimized to `return !a;`. This transformation is done by LLVM, but
not by GCC.

[Bug c++/96780] New: debuginfo for std::move and std::forward isn't useful

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96780

Bug ID: 96780
   Summary: debuginfo for std::move and std::forward isn't useful
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

When debugging I don't want to step into std::move and std::forward, ever.
They're effectively just casts, and although g++ correctly optimises them away
to nothing, it leaves debuginfo that makes gdb step into them.

Is there any good reason to ever step into them, or could we special case them
in g++ to not emit any debuginfo, at least when inlined?

I tried adding __attribute__((__always_inline__,__artificial__)) but that
seemed to make it even worse.

[Bug tree-optimization/96714] Failure to optimize sqrt*sqrt of same variable with ffast-math

2020-08-25 Thread gabravier at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96714

--- Comment #2 from Gabriel Ravier  ---
Hmm, I can't reproduce it either, either I was simply wrong (on something like
whether I had fast math enabled) or there is some peculiarity on my setup from
6 days ago that I missed.

[Bug tree-optimization/96548] [11 Regression] ICE in compute_live_loop_exits, at tree-ssa-loop-manip.c:247 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96548

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

https://gcc.gnu.org/g:660b5c10dc04988b02a2c3f6baed013340af3ef8

commit r11-2841-g660b5c10dc04988b02a2c3f6baed013340af3ef8
Author: Richard Biener 
Date:   Tue Aug 25 10:59:24 2020 +0200

tree-optimization/96548 - fix failure to recompute RPO after CFG change

This recomputes RPO after store-motion changes the CFG.

2020-08-25  Richard Biener  

PR tree-optimization/96548
PR tree-optimization/96760
* tree-ssa-loop-im.c (tree_ssa_lim): Recompute RPO after
store-motion.

* gcc.dg/torture/pr96548.c: New testcase.
* gcc.dg/torture/pr96760.c: Likewise.

[Bug tree-optimization/96760] [11 Regression] Faulty optimization in nested loops with -O2 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96760

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

https://gcc.gnu.org/g:660b5c10dc04988b02a2c3f6baed013340af3ef8

commit r11-2841-g660b5c10dc04988b02a2c3f6baed013340af3ef8
Author: Richard Biener 
Date:   Tue Aug 25 10:59:24 2020 +0200

tree-optimization/96548 - fix failure to recompute RPO after CFG change

This recomputes RPO after store-motion changes the CFG.

2020-08-25  Richard Biener  

PR tree-optimization/96548
PR tree-optimization/96760
* tree-ssa-loop-im.c (tree_ssa_lim): Recompute RPO after
store-motion.

* gcc.dg/torture/pr96548.c: New testcase.
* gcc.dg/torture/pr96760.c: Likewise.

[Bug tree-optimization/96548] [11 Regression] ICE in compute_live_loop_exits, at tree-ssa-loop-manip.c:247 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96548

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug c++/96781] New: internal compiler error: Segmentation fault

2020-08-25 Thread pengtingbit at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96781

Bug ID: 96781
   Summary: internal compiler error: Segmentation fault
   Product: gcc
   Version: 10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pengtingbit at 126 dot com
  Target Milestone: ---

╰─➤  uname -a  
127 ↵
Linux research 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020
x86_64 x86_64 x86_64 GNU/Linux

At https://github.com/pengtingbit/concurrencpp/tree/refactor-folders, in branch
refactor-folders and commit 64177ee.

When using Ubuntu20.04 focal and installed GNU 10.0.1:
╰─➤  cmake ..
-- The C compiler identification is GNU 10.0.1
-- The CXX compiler identification is GNU 10.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc-10 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++-10 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- ### concurrencpp ###
-- ###  ###
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components:
doxygen dot 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pengting/git/concurrencpp/build

╭─pengting@research ~/git/concurrencpp/build  ‹refactor-folders*› 
╰─➤  make
Scanning dependencies of target concurrencpp
[  7%] Building CXX object
src/CMakeFiles/concurrencpp.dir/executors/executor.cpp.o
[ 15%] Building CXX object
src/CMakeFiles/concurrencpp.dir/runtime/runtime.cpp.o
[ 23%] Building CXX object src/CMakeFiles/concurrencpp.dir/threads/thread.cpp.o
[ 30%] Building CXX object
src/CMakeFiles/concurrencpp.dir/results/result_core.cpp.o
[ 38%] Building CXX object
src/CMakeFiles/concurrencpp.dir/executors/manual_executor.cpp.o
[ 46%] Building CXX object
src/CMakeFiles/concurrencpp.dir/executors/thread_executor.cpp.o
[ 53%] Building CXX object
src/CMakeFiles/concurrencpp.dir/executors/thread_pool_executor.cpp.o
[ 61%] Building CXX object
src/CMakeFiles/concurrencpp.dir/executors/worker_thread_executor.cpp.o
[ 69%] Building CXX object
src/CMakeFiles/concurrencpp.dir/timers/Timer_queue.cpp.o
[ 76%] Building CXX object src/CMakeFiles/concurrencpp.dir/timers/timer.cpp.o
In file included from /home/pengting/git/concurrencpp/src/timers/timer.cpp:3:
/home/pengting/git/concurrencpp/src/timers/../../include/executors/executor.h:
In instantiation of ‘static concurrencpp::null_result
concurrencpp::Executor::post_bridge(concurrencpp::executor_tag,
concurrencpp::Executor*, decayed_type) [with callable_type =
concurrencpp::details::timer_state_base::fire()::; decayed_type =
concurrencpp::details::timer_state_base::fire()::]’:
/home/pengting/git/concurrencpp/src/timers/../../include/executors/executor.h:68:30:
  required from ‘void concurrencpp::Executor::post(callable_type&&) [with
callable_type = concurrencpp::details::timer_state_base::fire()::]’
/home/pengting/git/concurrencpp/src/timers/timer.cpp:37:3:   required from here
/home/pengting/git/concurrencpp/src/timers/../../include/executors/executor.h:23:3:
internal compiler error: Segmentation fault
   23 |   }
  |   ^
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.
make[2]: *** [src/CMakeFiles/concurrencpp.dir/build.make:199:
src/CMakeFiles/concurrencpp.dir/timers/timer.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:190: src/CMakeFiles/concurrencpp.dir/all]
Error 2
make: *** [Makefile:103: all] Error 2

#
#


At https://github.com/pengtingbit/concurrencpp/tree/refactor-folders, in branch
refactor-folders and commit b7c04e5.

When using Ubuntu20.04 focal and gcc-snapshot:
╰─➤  LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH
╰─➤  PATH=/usr/lib/gcc-snapshot/bin:$PATH
╰─➤  which gcc  
/usr/lib/gcc-snapshot/bin/gcc
╰─➤  gcc --version
gcc (Ubuntu 20200418-1ubuntu1) 10.0.1 20200418 (experimental) [master revision
b57e1621eb7:e6f26876f0c:baf3b9b2e5259558ef86bd62398e2ccecd7a4a4c]
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
╰

[Bug tree-optimization/96760] [11 Regression] Faulty optimization in nested loops with -O2 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96760

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/96782] New: Failure to optimize comparison with bitwise not-ed with self

2020-08-25 Thread gabravier at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96782

Bug ID: 96782
   Summary: Failure to optimize comparison with bitwise not-ed
with self
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gabravier at gmail dot com
  Target Milestone: ---

bool f(int a)
{
return a == ~a;
}

This can be optimized to `return false;`. This transformation is done by LLVM,
but not by GCC.

[Bug tree-optimization/96783] New: [11 Regression] std::rotate miscompiled

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96783

Bug ID: 96783
   Summary: [11 Regression] std::rotate miscompiled
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org
CC: rguenth at gcc dot gnu.org
  Target Milestone: ---

This is miscompiled at -O3 since r11-1897 and dies with a segfault:

#include 
#include 
#include 

int main()
{
  std::vector> c{{1,2}, {3,4}, {5,6}, {7,8}, {9,10}};

  std::rotate(c.begin(), c.begin() + 3, c.end());

  for (auto v : c)
  {
for (auto i : v)
  std::cout << i << ' ';
std::cout << '\n';
  }
  std::cout << '\n';

  std::vector> c2{{7,8}, {9,10}, {1,2}, {3,4}, {5,6}};

  if (c != c2)
throw 1;
}

[Bug c++/96591] [8/9/10/11 Regression] ICE with -flto=auto and -O1: tree code ‘typename_type’ is not supported in LTO streams

2020-08-25 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96591

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org
   Keywords|needs-bisection |

--- Comment #3 from Jakub Jelinek  ---
Started with r206639.

[Bug c++/96781] internal compiler error: Segmentation fault

2020-08-25 Thread pengtingbit at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96781

Ting Peng  changed:

   What|Removed |Added

 CC||pengtingbit at 126 dot com

--- Comment #1 from Ting Peng  ---
Created attachment 49118
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49118&action=edit
the build files by cmake

mkdir build
cd build
cmake ..
make

[Bug tree-optimization/96783] [11 Regression] std::rotate miscompiled

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96783

--- Comment #1 from Jonathan Wakely  ---
Created attachment 49117
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49117&action=edit
gzipped preprocessed source

[Bug tree-optimization/96779] Failure to optimize comparison of negative version of self

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96779

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #1 from Richard Biener  ---
Confirmed.

[Bug c++/96781] internal compiler error: Segmentation fault

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96781

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2020-08-25
 Status|UNCONFIRMED |WAITING
 Ever confirmed|0   |1

[Bug c++/96781] internal compiler error: Segmentation fault

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96781

--- Comment #2 from Richard Biener  ---
gcc (Ubuntu 20200418-1ubuntu1) 10.0.1 20200418 (experimental) 

is a quite old prerelease.  Please update and re-try.  We also need
preprocessed source as a reproducer.

[Bug tree-optimization/96783] [11 Regression] std::rotate miscompiled

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96783

Richard Biener  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |11.0
   Last reconfirmed||2020-08-25
 Status|UNCONFIRMED |ASSIGNED

--- Comment #2 from Richard Biener  ---
Meh.  Don't you have a C testcase ;)

[Bug tree-optimization/96782] Failure to optimize comparison with bitwise not-ed with self

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96782

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #1 from Richard Biener  ---
Confirmed.

[Bug c++/96780] debuginfo for std::move and std::forward isn't useful

2020-08-25 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96780

Marek Polacek  changed:

   What|Removed |Added

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

[Bug tree-optimization/96729] [11 Regression] hang on x86_64-linux-gnu with `-g -O3` since r11-39-gf9e1ea10e657af9f

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96729

Richard Biener  changed:

   What|Removed |Added

 CC||aoliva at gcc dot gnu.org,
   ||jakub at gcc dot gnu.org

--- Comment #3 from Richard Biener  ---
I can't reproduce this.  Well, -O3 -g takes way longer but that's because
we elide the stores to a, b, d and e since the loop is endless and then
we unroll it all ending up with a basic-block with just ~2 useless
debug stmts.

So we now optimize as expected.

-gno-statement-frontiers makes it also compiled fast.

Now the question is whether we may want to do anything about a BB like

   [local count: 1804255]:
  [t.c:4:3] # DEBUG BEGIN_STMT
  [t.c:5:5] # DEBUG BEGIN_STMT
  [t.c:6:5] # DEBUG BEGIN_STMT
  [t.c:10:7] # DEBUG BEGIN_STMT
  [t.c:11:7] # DEBUG BEGIN_STMT
  [t.c:11:14] # DEBUG BEGIN_STMT
  [t.c:12:9] # DEBUG BEGIN_STMT
  [t.c:13:9] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => NULL
  [t.c:14:11] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => 0
  [t.c:15:11] # DEBUG BEGIN_STMT
  [t.c:15:19] [t.c:15:15] [t.c:15:12] c[0][0] = 3;
  [t.c:13:23] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:11:22] # DEBUG BEGIN_STMT
  [t.c:11:14] # DEBUG BEGIN_STMT
  [t.c:12:9] # DEBUG BEGIN_STMT
  [t.c:13:9] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => NULL
  [t.c:14:11] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => 0
  [t.c:15:11] # DEBUG BEGIN_STMT
  [t.c:13:23] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:11:22] # DEBUG BEGIN_STMT
  [t.c:11:14] # DEBUG BEGIN_STMT
  [t.c:12:9] # DEBUG BEGIN_STMT
  [t.c:13:9] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => NULL
  [t.c:14:11] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => 0
  [t.c:15:11] # DEBUG BEGIN_STMT
  [t.c:13:23] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:11:22] # DEBUG BEGIN_STMT
  [t.c:11:14] # DEBUG BEGIN_STMT
  [t.c:12:9] # DEBUG BEGIN_STMT
  [t.c:13:9] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => NULL
  [t.c:14:11] # DEBUG BEGIN_STMT
  [t.c:14:13] # DEBUG g => 0
...
  [t.c:15:11] # DEBUG BEGIN_STMT
  [t.c:15:19] [t.c:15:15] [t.c:15:12] c[1][0] = 3;
  [t.c:13:23] # DEBUG BEGIN_STMT
  [t.c:13:16] # DEBUG BEGIN_STMT
  [t.c:11:22] # DEBUG BEGIN_STMT
  [t.c:11:14] # DEBUG BEGIN_STMT
...

I understand that it is not as simple as simply killing adjacent
DEBUG BEGIN_STMT stmts, keeping only the last?

[Bug tree-optimization/96729] [11 Regression] hang on x86_64-linux-gnu with `-g -O3` since r11-39-gf9e1ea10e657af9f

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96729

--- Comment #4 from Richard Biener  ---
Samples: 7K of event 'cycles:u', Event count (approx.): 7668407627  
Overhead  Command  Shared Object Symbol 
  26.63%  cc1  cc1   [.] dwarf2out_next_real_insn
   9.81%  cc1  cc1   [.] is_a_helper::test

guess there's some quadraticness here, walking the insn stream more times
than necessary.

[Bug tree-optimization/96693] [11 Regression] GCC produces incorrect code with -O2 for loops

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96693

Richard Biener  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|ASSIGNED|RESOLVED

--- Comment #3 from Richard Biener  ---
Actually the same as PR96760, too.

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

[Bug tree-optimization/96760] [11 Regression] Faulty optimization in nested loops with -O2 since r11-2574-g6aec53ee4f75a64c

2020-08-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96760

Richard Biener  changed:

   What|Removed |Added

 CC||vsevolod.livinskij at frtk dot 
ru

--- Comment #8 from Richard Biener  ---
*** Bug 96693 has been marked as a duplicate of this bug. ***

[Bug tree-optimization/96783] [11 Regression] std::rotate miscompiled

2020-08-25 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96783

--- Comment #3 from Jonathan Wakely  ---
Created attachment 49119
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49119&action=edit
preprocessed source, slightly reduced

  1   2   >