[Bug tree-optimization/87245] [missed optimization] switching on indices of struct members

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87245

Andrew Pinski  changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu.org
   Severity|normal  |enhancement

[Bug tree-optimization/14799] [tree-ssa] convert a sequence of "if"s to a "switch" statement

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14799

Andrew Pinski  changed:

   What|Removed |Added

 CC||eyalroz at technion dot ac.il

--- Comment #5 from Andrew Pinski  ---
*** Bug 87925 has been marked as a duplicate of this bug. ***

[Bug tree-optimization/87925] [missed-optimization] Distinct-value if-then-else chains treated differently than switch statements

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87925

Andrew Pinski  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #7 from Andrew Pinski  ---
Dup of a much older bug (PR 14799) ...

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

[Bug tree-optimization/70547] Optimize multiplication of booleans to bit_and

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70547

--- Comment #5 from Andrew Pinski  ---
(In reply to Andrew Pinski from comment #4)
> /* (m1 CMP m2) * d -> (m1 CMP m2) ? d : 0  */
> (for cmp (gt lt ge le)
> (simplify
>  (mult (convert (cmp @0 @1)) @2)
>   (cond (cmp @0 @1) @2 { build_zero_cst (type); })))
> 
> 
> Should have caught that ...

We do get:
  _1 = c_5(D) < d_6(D);
  _2 = (int) _1;
  _7 = a_3(D) < b_4(D) ? _2 : 0;

[Bug tree-optimization/70547] Optimize multiplication of booleans to bit_and

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70547

--- Comment #4 from Andrew Pinski  ---
/* (m1 CMP m2) * d -> (m1 CMP m2) ? d : 0  */
(for cmp (gt lt ge le)
(simplify
 (mult (convert (cmp @0 @1)) @2)
  (cond (cmp @0 @1) @2 { build_zero_cst (type); })))


Should have caught that ...
NOTE I think that might have been broken for floating point 

[Bug c++/87961] crash at goto label inside sizeof of a statement expression

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87961

--- Comment #1 from Andrew Pinski  ---
I think this is a dup of bug 17913 which was fixed in the C front-end in 2005
but it was never fixed in the C++ front-end (the front-ends share some code but
not all).

[Bug middle-end/87941] by_pieces infra does not use movmisalign optab

2018-11-09 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87941

Andrew Pinski  changed:

   What|Removed |Added

 Target||arm*-*-*
  Component|rtl-optimization|middle-end
   Severity|normal  |enhancement

--- Comment #2 from Andrew Pinski  ---
by_pieces was written before movmisalign_optab even was thought of.

[Bug other/86904] Column numbers ignore tab characters

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86904

--- Comment #3 from Eric Gallager  ---
(In reply to David Malcolm from comment #2)
> (In reply to richard.earnshaw from comment #1)
> > On 09/08/18 21:08, dmalcolm at gcc dot gnu.org wrote:
> [...snip...]
> > > Maybe:
> > >   -fdiagnostics-x-coord=bytes : count of bytes
> > >   -fdiagnostics-x-coord=characters : count of characters (not 
> > > special-casing
> > > tab)
> > >   -fdiagnostics-x-coord=columns : count of columns: as per characters, 
> > > but with
> > > tabs doing tabstops
> > 
> > how about -fdiagnostics-x-coord=visual-[n]
> > 
> > Where n is the size of a hard tab?  Some folks change the tab stop to 4,
> > for example.  Or maybe ...coord=tab[-n], where -n defaults to "-8".
> 
> The C family of frontends already has:
>   -ftabstop=  Distance between tab stops for column reporting.
> which IIRC is currently only used by -Wmisleading-indentation.  I guess it
> could be moved to common.opt.

Yeah, using -ftabstop makes sense

[Bug middle-end/87836] ICE in cc1 for gcc-6.5.0 with SPARC hardware

2018-11-09 Thread gary_mills at fastmail dot fm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87836

--- Comment #9 from Gary Mills  ---
Okay, I'm compiling it with -O0 right now.  It might take a couple of days.

[Bug c/87964] c-attribs.c:3965: possible cut'n'paste error ?

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87964

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-11-10
   Assignee|unassigned at gcc dot gnu.org  |msebor at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
Yes, that's a cut & paste mistake, thanks.  I'll take care of it.

[Bug libfortran/87966] [9 regression] The SPEC2006 tests 416.gamess and 481.wrf fail starting with r265946

2018-11-09 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87966

--- Comment #1 from Jerry DeLisle  ---
I had a leftover printf statement for debugging in the initial commit last
night which I fixed this morning.

Let me know if the problem persists.  The line was:

printf("allow_std=%d\n", compile_options.warn_std);

Which would have generated some extraneous output to stdout during a read.

The patch does not touch any floating point operations.

[Bug testsuite/87965] [9 regression] Test cases c-c++-common/pr60226.c and gcc.dg/pr39323-1.c fail starting with r265977

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87965

--- Comment #3 from Martin Sebor  ---
Author: msebor
Date: Fri Nov  9 23:15:59 2018
New Revision: 265998

URL: https://gcc.gnu.org/viewcvs?rev=265998=gcc=rev
Log:
gcc/testsuite/ChangeLog:

PR testsuite/87965
* c-c++-common/pr60226.c: Adjust text of expected diagnostic.
* gcc.dg/pr39323-1.c: Ditto.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/c-c++-common/pr60226.c
trunk/gcc/testsuite/gcc.dg/pr39323-1.c

[Bug middle-end/87836] ICE in cc1 for gcc-6.5.0 with SPARC hardware

2018-11-09 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87836

--- Comment #8 from Eric Botcazou  ---
> That's the immediate cause of the ICE.  I haven't identified the root cause
> yet.  I'm wondering, though, why the compiler built and ran on x86 hardware,
> but failed on SPARC hardware.  One difference is that the configuration on
> SPARC hardware uses the native assembler.  On x86 hardware, it uses the GNU
> assembler.  That's the only configuration difference.

One possibility is that the base compiler miscompiles the stage #1 compiler.
In order to rule it out, we need to make sure that the base compiler is invoked
with optimization disabled, hence my request about the flags...

[Bug testsuite/87965] [9 regression] Test cases c-c++-common/pr60226.c and gcc.dg/pr39323-1.c fail starting with r265977

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87965

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |msebor at gcc dot 
gnu.org
   Target Milestone|--- |9.0

--- Comment #2 from Martin Sebor  ---
Fixed in r265998.

[Bug testsuite/87965] [9 regression] Test cases c-c++-common/pr60226.c and gcc.dg/pr39323-1.c fail starting with r265977

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87965

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-11-09
  Component|c   |testsuite
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
Confirmed.  The failures are due to changing the text of the warning.  Somehow
I missed them in my testing.

[Bug c++/87967] New: ice in slpeel_duplicate_current_defs_from_edges

2018-11-09 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87967

Bug ID: 87967
   Summary: ice in slpeel_duplicate_current_defs_from_edges
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this C++ code:

void h();
template  struct k { using d = b; };
template  class> using e = k;
template  class f>
using g = typename e::d;
struct l {
  template  using ab = typename i::j;
};
struct n : l {
  using j = g;
};
class o {
public:
  long r();
};
char m;
char s() {
  if (m)
return '0';
  return 'A';
}
class t {
public:
  typedef char *ad;
  ad m_fn2();
};
void fn3() {
  char *a;
  t b;
  bool p = false;
  while (*a) {
h();
o c;
if (*a)
  a++;
if (c.r()) {
  n::j q;
  for (t::ad d = b.m_fn2(), e; d != e; d++) {
char f = *q;
*d = f + s();
  }
  p = true;
}
  }
  if (p)
throw;
}

compiled with recent gcc trunk and compiler flag -O3, does this:

during GIMPLE pass: vect
bug476.cc: In function ‘void fn3()’:
bug476.cc:27:6: internal compiler error: Segmentation fault
   27 | void fn3() {
  |  ^~~
0xfa4967 crash_signal
../../trunk/gcc/toplev.c:325
0x12185e4 contains_struct_check(tree_node*, tree_node_structure_enum, char
const
*, int, char const*)
../../trunk/gcc/tree.h:3267
0x12185e4 slpeel_duplicate_current_defs_from_edges
../../trunk/gcc/tree-vect-loop-manip.c:985

The bug seems to have appeared between revision 265790 and 265846.

[Bug libfortran/87966] New: [9 regression] The SPEC2006 tests 416.gamess and 481.wrf fail starting with r265946

2018-11-09 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87966

Bug ID: 87966
   Summary: [9 regression] The SPEC2006 tests 416.gamess and
481.wrf fail starting with r265946
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

The test trigger some floating point exceptions when they are run after being
compiler with gcc built from r265946.

/home/seurer/gcc/cpu2006/bin/specinvoke -E -d
/home/seurer/gcc/cpu2006/benchspec/CPU2006/416.gamess/run/run_base_ref_ppc64.0018
-c 1 -e compare.err -o compare.stdout -f compare.cmd


Contents of h2ocu2+.gradient.err

Note: The following floating-point exceptions are signalling:
IEEE_UNDERFLOW_FLAG




Contents of triazolium.err

Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG





r265946 | jvdelisle | 2018-11-08 20:46:03 -0600 (Thu, 08 Nov 2018) | 7 lines

2018-11-08  Jerry DeLisle  

PR libfortran/78351
* io/transfer.c (read_sf_internal): Add support for early
comma termination of internal unit formatted reads.

* gfortran.dg/read_legacy_comma.f90: New test.

[Bug c/87965] New: [9 regression] Test cases c-c++-common/pr60226.c and gcc.dg/pr39323-1.c fail starting with r265977

2018-11-09 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87965

Bug ID: 87965
   Summary: [9 regression] Test cases c-c++-common/pr60226.c and
gcc.dg/pr39323-1.c fail starting with r265977
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

> FAIL: c-c++-common/pr60226.c  -Wc++-compat   (test for errors, line 14)
> FAIL: c-c++-common/pr60226.c  -Wc++-compat   (test for errors, line 8)
> FAIL: c-c++-common/pr60226.c  -Wc++-compat  (test for excess errors)
> FAIL: c-c++-common/pr60226.c  -std=gnu++14  (test for errors, line 14)
> FAIL: c-c++-common/pr60226.c  -std=gnu++14  (test for errors, line 8)
> FAIL: c-c++-common/pr60226.c  -std=gnu++14 (test for excess errors)
> FAIL: c-c++-common/pr60226.c  -std=gnu++17  (test for errors, line 14)
> FAIL: c-c++-common/pr60226.c  -std=gnu++17  (test for errors, line 8)
> FAIL: c-c++-common/pr60226.c  -std=gnu++17 (test for excess errors)
> FAIL: c-c++-common/pr60226.c  -std=gnu++98  (test for errors, line 14)
> FAIL: c-c++-common/pr60226.c  -std=gnu++98  (test for errors, line 8)
> FAIL: c-c++-common/pr60226.c  -std=gnu++98 (test for excess errors)
> FAIL: gcc.dg/pr39323-1.c  (test for errors, line 4)
> FAIL: gcc.dg/pr39323-1.c  (test for errors, line 5)
> FAIL: gcc.dg/pr39323-1.c (test for excess errors)


They look like alignment errors.

spawn -ignore SIGHUP /home/seurer/gcc/build/gcc-trunk/gcc/xgcc
-B/home/seurer/gcc/build/gcc-trunk/gcc/
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c
-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers
-fdiagnostics-color=never -Wc++-compat -Wno-c++-compat -S -o pr60226.s
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c:7:1: error:
alignment of array elements is greater than element size
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c:8:1: error:
requested alignment '536870912' exceeds maximum 2147483648
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c: In function
'f':
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c:14:10: error:
requested alignment '536870912' exceeds maximum 2147483648
compiler exited with status 1
PASS: c-c++-common/pr60226.c  -Wc++-compat   (test for errors, line 7)
FAIL: c-c++-common/pr60226.c  -Wc++-compat   (test for errors, line 8)
FAIL: c-c++-common/pr60226.c  -Wc++-compat   (test for errors, line 14)
FAIL: c-c++-common/pr60226.c  -Wc++-compat  (test for excess errors)
Excess errors:
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c:8:1: error:
requested alignment '536870912' exceeds maximum 2147483648
/home/seurer/gcc/gcc-trunk/gcc/testsuite/c-c++-common/pr60226.c:14:10: error:
requested alignment '536870912' exceeds maximum 2147483648

spawn -ignore SIGHUP /home/seurer/gcc/build/gcc-trunk/gcc/xgcc
-B/home/seurer/gcc/build/gcc-trunk/gcc/
/home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.dg/pr39323-1.c
-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers
-fdiagnostics-color=never -ansi -pedantic-errors -S -o pr39323-1.s
/home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.dg/pr39323-1.c:4:1: error:
requested alignment '536870912' exceeds object file maximum 268435456
/home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.dg/pr39323-1.c:5:1: error:
requested alignment '536870912' exceeds maximum 2147483648
compiler exited with status 1
FAIL: gcc.dg/pr39323-1.c  (test for errors, line 4)
FAIL: gcc.dg/pr39323-1.c  (test for errors, line 5)
FAIL: gcc.dg/pr39323-1.c (test for excess errors)
Excess errors:
/home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.dg/pr39323-1.c:4:1: error:
requested alignment '536870912' exceeds object file maximum 268435456
/home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.dg/pr39323-1.c:5:1: error:
requested alignment '536870912' exceeds maximum 2147483648

[Bug c++/87947] Symbol Does Not Appear in Object File

2018-11-09 Thread comm+gnu at squotd dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87947

--- Comment #2 from comm+gnu at squotd dot net ---
Thanks. I had no idea that had changed.

[Bug c++/87850] Add fix-it hint for "invalid conversion from 'X' to 'X*'"

2018-11-09 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87850

David Malcolm  changed:

   What|Removed |Added

   Keywords||patch
 Status|UNCONFIRMED |ASSIGNED
URL||https://gcc.gnu.org/ml/gcc-
   ||patches/2018-11/msg00802.ht
   ||ml
   Last reconfirmed||2018-11-09
   Assignee|unassigned at gcc dot gnu.org  |dmalcolm at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from David Malcolm  ---
Candidate patch: https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00802.html

[Bug middle-end/87836] ICE in cc1 for gcc-6.5.0 with SPARC hardware

2018-11-09 Thread gary_mills at fastmail dot fm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87836

--- Comment #7 from Gary Mills  ---
I'm still waiting for information on how to use gdb to check the alignment of
the structures involved in this ICE.

I had to RTFM and experiment.  Here's the result:

$ /usr/bin/sparcv7/gdb build/sparcv7/./gcc/cc1 core
...
(gdb) bt
...
#9  
#10 et_splay (occ=occ@entry=0x0)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/et-forest.c:311
#11 0x00361834 in et_set_father (t=0xeaf810, father=0xeaf808)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/et-forest.c:525
#12 0x00301e6c in calculate_dominance_info (dir=dir@entry=CDI_DOMINATORS)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/dominance.c:658
#13 0x006701cc in cleanup_tree_cfg_noloop ()
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/tree-cfgcleanup.c:759
#14 cleanup_tree_cfg ()
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/tree-cfgcleanup.c:818
#15 0x0066ab88 in execute_build_cfg ()
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/tree-cfg.c:360
#16 (anonymous namespace)::pass_build_cfg::execute (this=)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/tree-cfg.c:389
#17 0x0056a7e0 in execute_one_pass (pass=pass@entry=0xe30408)
---Type  to continue, or q  to quit---
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/passes.c:2336
#18 0x0056ad80 in execute_pass_list_1 (pass=0xe30408, pass@entry=0xe2e938)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/passes.c:2420
#19 0x0056ae1c in execute_pass_list (fn=0xfb410068, pass=0xe2e938)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/passes.c:2431
#20 0x002c8e18 in cgraph_node::analyze (this=this@entry=0xfb4a6000)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/cgraphunit.c:636
#21 0x002cc2b0 in analyze_functions (first_time=first_time@entry=true)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/cgraphunit.c:1086
#22 0x002cc9d0 in symbol_table::finalize_compilation_unit (this=0xfb41)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/cgraphunit.c:2554
#23 0x006321e4 in compile_file ()
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/toplev.c:488
#24 0x00633f28 in do_compile ()
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/toplev.c:2014
---Type  to continue, or q  to quit---
#25 toplev::main (this=this@entry=0xffbff91e, argc=, 
argc@entry=19, argv=, argv@entry=0xffbff984)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/toplev.c:2123
#26 0x00adcc28 in main (argc=19, argv=0xffbff984)
at
/export/home/mills/Downloads/code/oi-userland/components/developer/gcc-6/gcc-6.5.0/gcc/main.c:39
(gdb) q

So, it wasn't an alignment error after all.  It was the most common thing that
causes a bus error: dereferencing a null pointer.  The backtrace shows that
et_splay() was called with a NULL operand, occ.  That NULL pointer was
dereferenced by this line:

311   while (occ->parent)

In et_set_father(), the et_splay() function was called with the operand rmost,
which must also be NULL.

That's the immediate cause of the ICE.  I haven't identified the root cause
yet.  I'm wondering, though, why the compiler built and ran on x86 hardware,
but failed on SPARC hardware.  One difference is that the configuration on
SPARC hardware uses the native assembler.  On x86 hardware, it uses the GNU
assembler.  That's the only configuration difference.  The hardware is
different, of course.

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

Segher Boessenkool  changed:

   What|Removed |Added

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

--- Comment #12 from Segher Boessenkool  ---
Wow, this works!  Mine :-)

[Bug libstdc++/87963] libstdc++-v3/src/c++17/memory_resource.cc:515:31: error: static assertion failed for mingw-w64 target since r265853

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87963

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||build
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-11-09
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
 Ever confirmed|0   |1

[Bug ipa/85103] [8/9 Regression] Performance regressions on SPEC with r257582

2018-11-09 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85103

Jeffrey A. Law  changed:

   What|Removed |Added

   Priority|P3  |P2
 CC||law at redhat dot com

[Bug c/87964] New: c-attribs.c:3965: possible cut'n'paste error ?

2018-11-09 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87964

Bug ID: 87964
   Summary: c-attribs.c:3965: possible cut'n'paste error ?
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

Source code is

  else if (!strcmp ("const", namestr))
{
  if (expr && DECL_P (expr))
found_match = TREE_READONLY (expr);
}
  else if (!strcmp ("const", namestr))
{
  if (expr && DECL_P (expr))
found_match = DECL_PURE_P (expr);
}

svn blame says

265980 msebor else if (!strcmp ("const", namestr))
265980 msebor   {
265980 msebor if (expr && DECL_P (expr))
265980 msebor   found_match = TREE_READONLY (expr);
265980 msebor   }
265980 msebor else if (!strcmp ("const", namestr))
265980 msebor   {
265980 msebor if (expr && DECL_P (expr))
265980 msebor   found_match = DECL_PURE_P (expr);
265980 msebor   }

[Bug driver/41179] Documentation for "-fno-toplevel-reorder" is confusing (and wrong)

2018-11-09 Thread sandra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41179

sandra at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||sandra at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #5 from sandra at gcc dot gnu.org ---
Fixed on trunk, at least for the 3 cases explicitly mentioned in this issue.

[Bug middle-end/65703] -fdefer-pop documentation is confusing

2018-11-09 Thread sandra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65703

sandra at gcc dot gnu.org changed:

   What|Removed |Added

 CC||sandra at gcc dot gnu.org

--- Comment #4 from sandra at gcc dot gnu.org ---
I've fixed the problem with the wording of the -fno-defer-pop documentation.

The other problem raised in this issue was the difficulty in locating
documentation for the positive form -fdefer-pop.  I'm going to address this in
general by adding an @opindex entry for the positive form of all "no-" options
so searching the document will at least turn up a hit in the index that will
get you to the right place.

[Bug target/87221] cannot build with -pie

2018-11-09 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87221

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||law at redhat dot com
 Resolution|--- |FIXED

--- Comment #5 from Jeffrey A. Law  ---
Should be fixed on the trunk.

[Bug target/87221] cannot build with -pie

2018-11-09 Thread law at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87221

--- Comment #4 from Jeffrey A. Law  ---
Author: law
Date: Fri Nov  9 20:55:39 2018
New Revision: 265994

URL: https://gcc.gnu.org/viewcvs?rev=265994=gcc=rev
Log:
PR target/87221
* config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE.
(NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/netbsd-elf.h

[Bug driver/41179] Documentation for "-fno-toplevel-reorder" is confusing (and wrong)

2018-11-09 Thread sandra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41179

--- Comment #4 from sandra at gcc dot gnu.org ---
Author: sandra
Date: Fri Nov  9 20:45:06 2018
New Revision: 265993

URL: https://gcc.gnu.org/viewcvs?rev=265993=gcc=rev
Log:
2018-11-09  Sandra Loosemore  

PR driver/41179
PR middle-end/65703

gcc/
* doc/invoke.texi (Optimize Options): Clarify default behavior
for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/invoke.texi

[Bug middle-end/65703] -fdefer-pop documentation is confusing

2018-11-09 Thread sandra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65703

--- Comment #3 from sandra at gcc dot gnu.org ---
Author: sandra
Date: Fri Nov  9 20:45:06 2018
New Revision: 265993

URL: https://gcc.gnu.org/viewcvs?rev=265993=gcc=rev
Log:
2018-11-09  Sandra Loosemore  

PR driver/41179
PR middle-end/65703

gcc/
* doc/invoke.texi (Optimize Options): Clarify default behavior
for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/invoke.texi

[Bug tree-optimization/87940] [9 Regression] FAIL: gcc.dg/warn-strlen-no-nul.c

2018-11-09 Thread edlinger at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87940

Bernd Edlinger  changed:

   What|Removed |Added

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

--- Comment #3 from Bernd Edlinger  ---
Fixed.  Thanks!

[Bug tree-optimization/87940] [9 Regression] FAIL: gcc.dg/warn-strlen-no-nul.c

2018-11-09 Thread edlinger at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87940

--- Comment #2 from Bernd Edlinger  ---
Author: edlinger
Date: Fri Nov  9 20:38:07 2018
New Revision: 265992

URL: https://gcc.gnu.org/viewcvs?rev=265992=gcc=rev
Log:
2018-11-09  Bernd Edlinger  

PR tree-optimization/87940
* expr.c (string_constant): Don't strip NOPS in subexpressions.
Fold PLUS_EXPR correctly.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/expr.c

[Bug libstdc++/87963] New: libstdc++-v3/src/c++17/memory_resource.cc:515:31: error: static assertion failed for mingw-w64 target since r265853

2018-11-09 Thread mateuszb at poczta dot onet.pl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87963

Bug ID: 87963
   Summary: libstdc++-v3/src/c++17/memory_resource.cc:515:31:
error: static assertion failed for mingw-w64 target
since r265853
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mateuszb at poczta dot onet.pl
  Target Milestone: ---

When I build cross compiler (trunk) for mingw-w64 x86_64 target (long is
4-bytes, pointer is 8-bytes), there are errors since r265853

libtool: compile:  /home/ma/m/build/bc_gcc/./gcc/xgcc -shared-libgcc
-B/home/ma/m/build/bc_gcc/./gcc -nostdinc++
-L/home/ma/m/build/bc_gcc/x86_64-w64-mingw32/libstdc++-v3/src
-L/home/ma/m/build/bc_gcc/x86_64-w64-mingw32/libstdc++-v3/src/.libs
-L/home/ma/m/build/bc_gcc/x86_64-w64-mingw32/libstdc++-v3/libsupc++/.libs
-L/home/ma/m/cross/x86_64-w64-mingw32/lib -L/home/ma/m/cross/mingw/lib -isystem
/home/ma/m/cross/x86_64-w64-mingw32/include -isystem
/home/ma/m/cross/mingw/include -B/home/ma/m/cross/x86_64-w64-mingw32/bin/
-B/home/ma/m/cross/x86_64-w64-mingw32/lib/ -isystem
/home/ma/m/cross/x86_64-w64-mingw32/include -isystem
/home/ma/m/cross/x86_64-w64-mingw32/sys-include
-I/home/ma/m/source/gcc-9/libstdc++-v3/../libgcc
-I/home/ma/m/build/bc_gcc/x86_64-w64-mingw32/libstdc++-v3/include/x86_64-w64-mingw32
-I/home/ma/m/build/bc_gcc/x86_64-w64-mingw32/libstdc++-v3/include
-I/home/ma/m/source/gcc-9/libstdc++-v3/libsupc++ -std=gnu++17
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=memory_resource.lo -g -O2 -fimplicit-templates -c
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc -o
memory_resource.o
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc:515:31:
error: static assertion failed
  515 |   static_assert(sizeof(chunk) == (4 * sizeof(void*)), "");
  | ~~^~
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc:526:48:
warning: left shift count >= width of type [-Wshift-count-overflow]
  526 | static constexpr size_t all_ones = (1ul << _S_sizebits) - 1u;
  |^~~
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc:526:45:
error: right operand of shift expression '(1 << 58)' is >= than the precision
of the left operand [-fpermissive]
  526 | static constexpr size_t all_ones = (1ul << _S_sizebits) - 1u;
  |~^~~
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc: In member
function 'std::size_t std::pmr::{anonymous}::big_block::size() const':
/home/ma/m/source/gcc-9/libstdc++-v3/src/c++17/memory_resource.cc:548:5:
warning: control reaches end of non-void function [-Wreturn-type]
  548 | }
  | ^
Makefile:735: recipe for target 'memory_resource.lo' failed
make[4]: *** [memory_resource.lo] Error 1

[Bug target/87762] [9 Regression] extract_constrain_insn, at recog.c:2206 on s390x

2018-11-09 Thread iii at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87762

--- Comment #4 from iii at gcc dot gnu.org ---
Author: iii
Date: Fri Nov  9 20:33:19 2018
New Revision: 265991

URL: https://gcc.gnu.org/viewcvs?rev=265991=gcc=rev
Log:
S/390: Allow relative addressing of literal pool entries

r265490 allowed the compiler to choose in a more flexible way whether to
use load or load-address-relative-long (LARL) instruction.  When it
chose LARL for literal pool references, the latter ones were rewritten
by pass_s390_early_mach to use UNSPEC_LTREF, which assumes base register
usage, which in turn is not compatible with LARL.  The end result was an
ICE because of unrecognizable insn.

UNSPEC_LTREF and friends are necessary in order to communicate the
dependency on the base register to pass_sched2.  When relative
addressing is used, no base register is necessary, so in such cases the
rewrite must be avoided.

gcc/ChangeLog:

2018-11-09  Ilya Leoshkevich  

PR target/87762
* config/s390/s390.c (s390_safe_relative_long_p): New function.
(annotate_constant_pool_refs): Skip insns which support
relative addressing.
(annotate_constant_pool_refs_1): New helper function.
(find_constant_pool_ref): Skip insns which support relative
addression.
(find_constant_pool_ref_1): New helper function.
(replace_constant_pool_ref): Skip insns which support
relative addressing.
(replace_constant_pool_ref_1): New helper function.
(s390_mainpool_start): Adapt to the new signature.
(s390_mainpool_finish): Likewise.
(s390_chunkify_start): Likewise.
(s390_chunkify_finish): Likewise.
(pass_s390_early_mach::execute): Likewise.
(s390_prologue_plus_offset): Likewise.
(s390_emit_prologue): Likewise.
(s390_emit_epilogue): Likewise.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/s390/s390.c

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #11 from Segher Boessenkool  ---
Trying that out now.

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #10 from Segher Boessenkool  ---
(In reply to David Edelsohn from comment #7)
> This sounds like the general problem of the first RA pass creating
> excessively long live ranges.

Yeah.

> Does GCC know how to re-materialize a comparison?

Not sure...  Maybe secondary reloads can help?

But there also is TARGET_SELECT_EARLY_REMAT_MODES nowadays, that sounds like
just what we need here!

[Bug libstdc++/87787] [9 Regression][UBSAN] runtime error: null pointer passed as argument 2, which is declared to never be null

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87787

--- Comment #5 from Jonathan Wakely  ---
Author: redi
Date: Fri Nov  9 20:14:07 2018
New Revision: 265984

URL: https://gcc.gnu.org/viewcvs?rev=265984=gcc=rev
Log:
PR libstdc++/87787 fix UBsan error in std::vector

PR libstdc++/87787
* include/bits/stl_uninitialized.h (__relocate_a_1): Do not call
memmove when there's nothing to copy (and pointers could be null).

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_uninitialized.h

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #9 from Segher Boessenkool  ---
(In reply to meissner from comment #6)
- Comment #4 from Bill Schmidt  ---
> > Seems like a potential opportunity for shrink-wrap separate on the CRs.  I'm
> > not sure whether that's implemented yet.
> 
> Not really, since shrink wrap only occurs if the program has an early exit
> condition.

Separate shrink-wrapping can help in all cases where not all saves or restores
are needed on every path through the function, not just in cases where on some
path through the function *no* save/restore is needed.

[Bug c++/87951] GCC warns about reaching end of non-void function when all switch is completely handled

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87951

--- Comment #6 from Jonathan Wakely  ---
(In reply to Vitali from comment #5)
> Jonathan, I think the defect report here does actually apply to this
> example.

I didn't say otherwise.

> I agree the argument could be made that if there's gaps in the enum
> values that it's arguable that the current GCC behaviour is standards
> compliant (clearly clang & GCC disagree on this for both C & C++ so unclear
> who's right or wrong in their interpretation of what's allowed).

No, it has nothing to do with "gaps" in the enum. This is a myth.

All that matters is the range of representable values, which (for an
enumeration without a fixed underlying type) depends on the number of bits
required to represent the minimum and maximum enumerator values. It doesn't
make any difference whatsoever whether there are "gaps" between those minimum
and maximum
values.

> However, in the example posted this is a "dense" enum.

What matters is that all the values of the enum can be represented in a single
bit, and so the only valid values are 0 and 1, which happen to have
enumerators. But the only valid values would still be 0 and 1 if your enum was
defined as
enum Enum { B=1 }; and so a switch that failed to handle the possibility of
Enum(0) would be wrong (even with -fstrict-enums)

The mental model of "dense" vs "gaps" is WRONG.

> There's no integer
> value possible that's not outside the range & yet GCC still continues to
> treat that as a possibility & thus missing optimization opportunities &
> generating false-positive warnings.

Yes, that's what -fstrict-enums is for.

The default (without -fstrict-enums) assumes most code is buggy and doesn't
follow the rules. If you do not use values outside the valid range of values
for the enumeration, use -fstrict-enums.

I can see some value in the suggestion to annotate a specific enumeration type
as strict, but that might not be the right solution. What matters is how the
enumeration type is used (whether invalid values are ever created) and that
isn't something you can guarantee when the enum is declared.

You *can* annotate the uses of a specific enum, but telling the compiler that
no other values will ever be used in the switch, by adding:

  default:
__builtin_unreachable();

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #8 from Segher Boessenkool  ---
(In reply to Bill Schmidt from comment #4)
> Seems like a potential opportunity for shrink-wrap separate on the CRs.  I'm
> not sure whether that's implemented yet.

It isn't; there are some technical problems to implement it.  Nothing that
cannot be overcome though.

The benefit wouldn't be huge; a much bigger benefit can be had by not using
non-volatile CR fields in the first place.

[Bug c++/87951] GCC warns about reaching end of non-void function when all switch is completely handled

2018-11-09 Thread vlovich at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87951

--- Comment #5 from Vitali  ---
Jonathan, I think the defect report here does actually apply to this example. I
agree the argument could be made that if there's gaps in the enum values that
it's arguable that the current GCC behaviour is standards compliant (clearly
clang & GCC disagree on this for both C & C++ so unclear who's right or wrong
in their interpretation of what's allowed).

However, in the example posted this is a "dense" enum. There's no integer value
possible that's not outside the range & yet GCC still continues to treat that
as a possibility & thus missing optimization opportunities & generating
false-positive warnings.

[Bug fortran/87960] [9 Regression] Miscompilation of 527.cam4_r benchmark from SPEC2017 w/ -O2 since r265946

2018-11-09 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87960

Thomas Koenig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2018-11-09
 CC||tkoenig at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Thomas Koenig  ---
From the description, this should be fixed with r265979.

Is that the case?

[Bug c++/87951] GCC warns about reaching end of non-void function when all switch is completely handled

2018-11-09 Thread vlovich at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87951

--- Comment #4 from Vitali  ---
Is there a way to annotate a specific enum as strict?

[Bug c++/87951] GCC warns about reaching end of non-void function when all switch is completely handled

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87951

--- Comment #3 from Jonathan Wakely  ---
(In reply to Vitali from comment #0)
> If a function has a single switch statement that handles all enum values &
> returns a value GCC will warn about the function not returning a value
> whereas clang does not.  GCC requires an explicit __builtin_unreachable()
> annotation after the switch. As of C++17 it seems to now be undefined
> behaviour rather than unspecified behaviour for an enum to have a value
> that's not enumerated.

No, that's not what the defect report says. I wish this myth would die.

Outside the range of the enumerated values does not mean not enumerated.
Given enum E { e0=0, e10=7 } there is nothing undefined about E(1) or E(4).

> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1766
> 
> > cat test.c
> 
> enum Enum {
>   A,
>   B,
> };
> 
> int CoverMyBases(enum Enum x) {
>   switch (x) {
>   case A:
>   return 1;
>   case B:
>   return 0;
>   }
> }
> 
> int main(int argc, const char **argv) {
>   CoverMyBases(A);
>   CoverMyBases(B);
>   return 0;
> }
> 
> > g++-8 -Wall --std=c++17 test.c
> 
> test.c: In function 'CoverMyBases':
> test.c:16:1: warning: control reaches end of non-void function
> [-Wreturn-type]
>  }
>  ^

This is what -fstrict-enums is for.

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

David Edelsohn  changed:

   What|Removed |Added

 Target|powerpc |powerpc-*-*
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-11-09
 Ever confirmed|0   |1

--- Comment #7 from David Edelsohn  ---
This sounds like the general problem of the first RA pass creating excessively
long live ranges.

Does GCC know how to re-materialize a comparison?

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread meissner at linux dot ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #6 from meissner at linux dot ibm.com ---
On Fri, Nov 09, 2018 at 02:47:31PM +, wschmidt at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949
> 
> --- Comment #4 from Bill Schmidt  ---
> Seems like a potential opportunity for shrink-wrap separate on the CRs.  I'm
> not sure whether that's implemented yet.

Not really, since shrink wrap only occurs if the program has an early exit
condition.  In this case, I don't think it is early exit, but instead the
compiler is just lengthening the lifetime of the CR and moving it out of loops,
etc.

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread meissner at linux dot ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #5 from meissner at linux dot ibm.com ---
On Fri, Nov 09, 2018 at 02:28:28AM +, bergner at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949
> 
> --- Comment #3 from Peter Bergner  ---
> What do you think we can do about that?  The call clobbers the ABI defined
> non-volatile CR regs, so we have to save/restore them.  I don't think we have
> any other option, other than telling GCC to never use the non-volatile CR regs
> so they never have to be saved/restored.  Does using -ffixed-cr2 -ffixed-cr3
> -ffixed-cr4 help?

I should clarify what I would like.  Yes, if the compiler needs to preserve the
CRs the current code works.  But it would be helpful if instead of trying to
preserve the CR across calls, that we re-do the initial comparison, instead of
trying to keep the CR live for so long.

[Bug libstdc++/87520] [8/9 Regression] ODR violations in std::make_shared when mixing -fno-rtti and -frtti

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87520

--- Comment #4 from Jonathan Wakely  ---
(In reply to Jonathan Wakely from comment #1)
> @@ -513,7 +512,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>alignas(type_info) static constexpr _Sp_make_shared_tag __tag;

This needs to be fixed to have the right size as well as alignment, so the
reference binds to suitable storage (as per core DR 453).

[Bug c/81824] Warn for missing attributes with function aliases

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81824

Martin Sebor  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |9.0
   Severity|normal  |enhancement

--- Comment #11 from Martin Sebor  ---
Committed in r265980.

[Bug libstdc++/85930] [8/9 Regression] Misaligned reference created in shared_ptr_base.h with -fno-rtti

2018-11-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85930

Jonathan Wakely  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
URL||https://bugzilla.redhat.com
   ||/show_bug.cgi?id=1643318
 Resolution|FIXED   |---

--- Comment #6 from Jonathan Wakely  ---
Clang's UBsan still complains about this, because the object at the type-punned
address is not large enough to be a type_info.

[Bug tree-optimization/18501] [7/8/9 Regression] Missing 'used uninitialized' warning (CCP)

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18501

Eric Gallager  changed:

   What|Removed |Added

 CC||msebor at gcc dot gnu.org

--- Comment #88 from Eric Gallager  ---
This came up again on the gcc-help mailing list here:
https://gcc.gnu.org/ml/gcc-help/2018-11/msg7.html

[Bug c/87962] ice in vect_get_vec_def_for_operand_1, at tree-vect-stmts.c:1485

2018-11-09 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87962

David Binderman  changed:

   What|Removed |Added

 CC||rsandifo at gcc dot gnu.org

--- Comment #1 from David Binderman  ---
svn blame says

263129   rsandifo   gcc_assert (vec_stmt_info);

[Bug c/87962] New: ice in vect_get_vec_def_for_operand_1, at tree-vect-stmts.c:1485

2018-11-09 Thread dcb314 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87962

Bug ID: 87962
   Summary: ice in vect_get_vec_def_for_operand_1, at
tree-vect-stmts.c:1485
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this C code:

int a, b;

int c() {
  long d, e;
  while (a) {
a++;
b = 0;
for (; b++ - 2; d = d >> 1)
  e += d;
  }
  return e;
}

compiled by recent gcc trunk and flags -O3 -march=native, does this:

bug474.c:4:5: internal compiler error: in vect_get_vec_def_for_operand_1, at
tree-vect-stmts.c:1485

This code used to work at revision 265846, but fails at revision 265907.

/proc/cpuinfo says

vendor_id   : AuthenticAMD
cpu family  : 21
model   : 2
model name  : AMD FX(tm)-8350 Eight-Core Processor

[Bug c/81824] Warn for missing attributes with function aliases

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81824

--- Comment #10 from Martin Sebor  ---
Author: msebor
Date: Fri Nov  9 17:32:52 2018
New Revision: 265980

URL: https://gcc.gnu.org/viewcvs?rev=265980=gcc=rev
Log:
PR middle-end/81824 - Warn for missing attributes with function aliases

gcc/c-family/ChangeLog:

PR middle-end/81824
* c-attribs.c (handle_copy_attribute): New function.

gcc/cp/ChangeLog:

PR middle-end/81824
* pt.c (warn_spec_missing_attributes): Move code to attribs.c.
Call decls_mismatched_attributes.

gcc/ChangeLog:

PR middle-end/81824
* attribs.c (has_attribute): New helper function.
(decls_mismatched_attributes, maybe_diag_alias_attributes): Same.
* attribs.h (decls_mismatched_attributes): Declare.
* cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes.
(maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_.
* common.opt (-Wattribute-alias): Take an argument.
(-Wno-attribute-alias): New option.
* doc/extend.texi (Common Function Attributes): Document copy.
(Common Variable Attributes): Same.
* doc/invoke.texi (-Wmissing-attributes): Document enhancement.
(-Wattribute-alias): Document new option argument.

gcc/testsuite/ChangeLog:

PR middle-end/81824
* gcc.dg/Wattribute-alias.c: New test.
* gcc.dg/Wmissing-attributes.c: New test.
* gcc.dg/attr-copy.c: New test.
* gcc.dg/attr-copy-2.c: New test.
* gcc.dg/attr-copy-3.c: New test.
* gcc.dg/attr-copy-4.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/Wattribute-alias.c
trunk/gcc/testsuite/gcc.dg/Wmissing-attributes.c
trunk/gcc/testsuite/gcc.dg/attr-copy-2.c
trunk/gcc/testsuite/gcc.dg/attr-copy-3.c
trunk/gcc/testsuite/gcc.dg/attr-copy-4.c
trunk/gcc/testsuite/gcc.dg/attr-copy.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/attribs.c
trunk/gcc/attribs.h
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-attribs.c
trunk/gcc/cgraphunit.c
trunk/gcc/common.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/doc/extend.texi
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog
trunk/libgomp/libgomp.h

[Bug fortran/78351] comma not terminating READ of formatted input field - ok in 4.1.7, not 4.4.7- maybe related to 25419?

2018-11-09 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78351

--- Comment #26 from Jerry DeLisle  ---
Author: jvdelisle
Date: Fri Nov  9 17:29:33 2018
New Revision: 265979

URL: https://gcc.gnu.org/viewcvs?rev=265979=gcc=rev
Log:
2018-11-09  Jerry DeLisle  

PR libfortran/78351
* io/transfer.c (read_sf_internal): Delete leftover
debug code.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/transfer.c

[Bug c/87795] Excessive alignment permitted for functions and labels

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87795

Martin Sebor  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
  Known to work||9.0
 Resolution|--- |FIXED
  Known to fail||8.2.0

--- Comment #9 from Martin Sebor  ---
Fixed for GCC 9 in 265977.

[Bug c/87795] Excessive alignment permitted for functions and labels

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87795

--- Comment #8 from Martin Sebor  ---
Author: msebor
Date: Fri Nov  9 17:17:47 2018
New Revision: 265977

URL: https://gcc.gnu.org/viewcvs?rev=265977=gcc=rev
Log:
PR c/87795 - Excessive alignment permitted for functions and labels

gcc/c-family/ChangeLog:

PR c/87795
* c-common.c (check_user_alignment): Use MAX_OFILE_ALIGNMENT.

gcc/testsuite/ChangeLog:

PR c/87795
* gcc.dg/attr-aligned.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/attr-aligned.c
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-attribs.c
trunk/gcc/c-family/c-common.c
trunk/gcc/c-family/c-common.h
trunk/gcc/c/c-decl.c
trunk/gcc/doc/tm.texi
trunk/gcc/doc/tm.texi.in
trunk/gcc/testsuite/ChangeLog

[Bug fortran/78351] comma not terminating READ of formatted input field - ok in 4.1.7, not 4.4.7- maybe related to 25419?

2018-11-09 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78351

--- Comment #25 from Jerry DeLisle  ---
Author: jvdelisle
Date: Fri Nov  9 17:07:39 2018
New Revision: 265976

URL: https://gcc.gnu.org/viewcvs?rev=265976=gcc=rev
Log:
2018-11-09  Jerry DeLisle  

Backport from trunk
PR libfortran/78351
* io/transfer.c (read_sf_internal): Add support for early
comma termination of internal unit formatted reads.

Backported from mainline
PR libfortran/78351
* gfortran.dg/read_legacy_comma.f90: New test.

Added:
branches/gcc-8-branch/gcc/testsuite/gfortran.dg/read_legacy_comma.f90
Modified:
branches/gcc-8-branch/gcc/testsuite/ChangeLog
branches/gcc-8-branch/libgfortran/ChangeLog
branches/gcc-8-branch/libgfortran/io/transfer.c

[Bug c/87950] GCC warns about reaching end of non-void function when all switch cases are completely handled

2018-11-09 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87950

Martin Sebor  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|RESOLVED|NEW
   Last reconfirmed||2018-11-09
 CC||msebor at gcc dot gnu.org
 Resolution|INVALID |---
 Ever confirmed|0   |1

--- Comment #12 from Martin Sebor  ---
I do agree there is room for improvement here.  Consider the following test
case:

  $ cat t.c && gcc -O2 -S -Wall -Wextra -Wpedantic -Wswitch-enum
-fdump-tree-optimized=/dev/stdout t.c

  enum E { e0 } e;

  int f (void)
  {
switch (e)
  case e0: return 0;
  }
  t.c: In function ‘f’:
  t.c:7:1: warning: control reaches end of non-void function [-Wreturn-type]
  7 | }
| ^

  ;; Function f (f, funcdef_no=0, decl_uid=1909, cgraph_uid=1, symbol_order=1)

  f ()
  {
E e.0_1;

 [local count: 1073741824]:
e.0_1 = e;
if (e.0_1 == 0)
  goto ; [50.00%]
else
  goto ; [50.00%]

 [local count: 536870913]:
return 0;

 [local count: 536870913]:
return;

  }

The -Wswitch-enum option doesn't warn about the switch statement not handling
switch values that don't correspond to any of the enumerators.  To have it
diagnosed the -Wswitch-default option has to be explicitly specified (it's off
by default).

Given that, I believe the same logic should apply to the -Wreturn-type warning:
it should not trigger for the snippet above or for the test case in comment #0
unless explicitly requested somehow (perhaps it should consider
-Wswitch-default).

In addition, note the comparison to zero in the optimized GIMPLE.  It's
unnecessary because the function returns no value when the value of e is
non-zero.  Clang notices that and avoids the comparison.  But perhaps a better
example to illustrate the missed optimization opportunity than the contrived
test case above is this:

  enum E { e0, e1, e2 } e;

  int f (void)
  {
switch (e)
{
  case e0: return 1;
  case e1: return 2;
  case e2: return 3;
}
  }

Here, GCC also emits the same pointless comparison/branch:

  f:
movle(%rip), %eax
cmpl$2, %eax
ja  .L2
addl$1, %eax
ret
  .L2:
ret

[Bug libstdc++/87787] [9 Regression][UBSAN] runtime error: null pointer passed as argument 2, which is declared to never be null

2018-11-09 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87787

--- Comment #4 from Tobias Burnus  ---
(In reply to Marc Glisse from comment #1)
> That would be my recent commit.

Namely, the commit r265485 of 2018-10-25: "Relocation (= move+destroy)"
PR libstdc++/87106

[Bug libstdc++/87787] [9 Regression][UBSAN] runtime error: null pointer passed as argument 2, which is declared to never be null

2018-11-09 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87787

Tobias Burnus  changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org
Summary|[9 Regression] runtime  |[9 Regression][UBSAN]
   |error: null pointer passed  |runtime error: null pointer
   |as argument 2, which is |passed as argument 2, which
   |declared to never be null   |is declared to never be
   ||null

--- Comment #3 from Tobias Burnus  ---
(In reply to Marc Glisse from comment #2)
> (In reply to Marc Glisse from comment #1)
> > That would be my recent commit. We will probably need to add if(size!=0) in
> > front of the call to memmove...
> 
> That's what we already do in stl_algobase.h and fstream.tcc. I notice that
> we do not do it in char_traits.h for the generic version (we do for each
> specialization). I don't know if memcpy in locale_facets.h is safe either.

As that comment talks about char_traits.h, only, it is not clear whether the
following would be covered by the fix as well or not. In any case, the
following is a simple reproducer:

#include 

int main() {
  int *ip = NULL;
  std::vector vec;
  vec.push_back(ip);
  return 1;
}

With gives with ubsan (-fsanitize=undefined) at run time:

stl_uninitialized.h:907:24: runtime error: null pointer passed as argument 2,
which is declared to never be null

[Bug target/87949] PowerPC saves CR registers across calls

2018-11-09 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87949

--- Comment #4 from Bill Schmidt  ---
Seems like a potential opportunity for shrink-wrap separate on the CRs.  I'm
not sure whether that's implemented yet.

[Bug sanitizer/87892] [9 Regression]: libsanitizer fails to build on CentOS 5.11 (glibc 2.5)

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87892

Martin Liška  changed:

   What|Removed |Added

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

--- Comment #8 from Martin Liška  ---
Fixed.

[Bug c++/87961] New: crash at goto label inside sizeof

2018-11-09 Thread eugvelesevich at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87961

Bug ID: 87961
   Summary: crash at goto label inside sizeof
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: eugvelesevich at gmail dot com
  Target Milestone: ---

source.cpp:
int main() {
sizeof(({M:0;}));
goto M;
}
output:
In function ‘int main()’:
:1:5: internal compiler error: Segmentation fault
 int main() {
 ^~~~


Code is a little strange... clang gets sigsegv too :)

[Bug target/81585] fastcall/stdcall attribute conflict not detected on distinct declarations of the same function

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81585

Eric Gallager  changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org,
   ||ubizjak at gmail dot com

--- Comment #3 from Eric Gallager  ---
cc-ing i386 maintainers

[Bug tree-optimization/80936] bcmp, bcopy, and bzero not declared nonnull

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80936

Eric Gallager  changed:

   What|Removed |Added

 CC||ghazi at gcc dot gnu.org

--- Comment #2 from Eric Gallager  ---
Comment in builtins.def says:

/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
   when the length parameter is zero, so don't apply attribute "nonnull".  */

svn blame says Kaveh Ghazi wrote that comment; cc-ing him

[Bug tree-optimization/80512] missing -Wformat-overfow on a numbered directive with width specified by "*m$"

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80512

Eric Gallager  changed:

   What|Removed |Added

 CC||dmalcolm at gcc dot gnu.org,
   ||dodji at gcc dot gnu.org

--- Comment #2 from Eric Gallager  ---
cc-ing diagnostics maintainers

[Bug c++/79605] attribute [[noreturn]] accepted in explicit instantiation directives

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79605

Eric Gallager  changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org,
   ||nathan at gcc dot gnu.org

--- Comment #2 from Eric Gallager  ---
cc-ing C++ FE maintainers

[Bug driver/31351] gcc -v --help has poor documentation for some shared Ada/C options

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31351

--- Comment #2 from Eric Gallager  ---
(In reply to Manuel López-Ibáñez from comment #1)
> This is a bug yes, but it won't get fixed unless someone that cares about it
> steps up to fix it.

I'd do this but I don't know the Ada FE well enough since I never build it

[Bug middle-end/35903] false Warray-bounds warning when passing quoted string to function strcmp(arg,"no");

2018-11-09 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903

--- Comment #11 from Eric Gallager  ---
(In reply to Manuel López-Ibáñez from comment #4)
> (In reply to comment #3)
> > This bug has no changed for months, I think it is still active.
> 
> Newer higher priority bugs often make us forget about old inactive bugs.
> Going through old bugs and testing whether they still exist in a recent GCC
> would be extremely helpful.
> 

This is what I've been doing ever since I got my bugzilla account

[Bug c/87942] every int seems to be unaligned in packed structure

2018-11-09 Thread amonakov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87942

--- Comment #4 from Alexander Monakov  ---
(In reply to Johannes Vetter from comment #3)
> My problem now: in how many other cases is the same behavior? I cannot check
> every global variable/struct by hand.

I recommend to open a new bugreport for this aspect (diagnostics enhancement).
There's -Wpacked-not-aligned now, but it doesn't capture this specific issue.

Why was it necessary to use a packed struct for device memory at all?

[Bug ipa/87957] [9 Regression] ICE tree check: expected tree that contains ‘decl minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051 since r265519

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957

Martin Liška  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |hubicka at gcc dot 
gnu.org

--- Comment #2 from Martin Liška  ---
There's patch candidate:

diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 4676bdbdf93..71cd35caf0c 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -1048,7 +1048,11 @@ warn_odr (tree t1, tree t2, tree st1, tree st2,
 }
   else
 return;
-  inform (DECL_SOURCE_LOCATION (decl2), reason);
+
+  location_t loc = (TYPE_NAME (t1) && TREE_CODE (TYPE_NAME (t1)) == TYPE_DECL
+   ? DECL_SOURCE_LOCATION (TYPE_NAME (t1))
+   : UNKNOWN_LOCATION);
+  inform (loc, reason);

   if (warned)
 *warned = true;

But now I see repeated Wodr:

$ g++ -flto [12].ii -shared
1.ii:3:3: warning: type ‘struct YYSTYPE’ violates the C++ One Definition Rule
[-Wodr]
3 | } YYSTYPE;
  |   ^
1.ii:3:3: note: a type with different alignment is defined in another
translation unit
1.ii:4:7: warning: type ‘union yyalloc’ violates the C++ One Definition Rule
[-Wodr]
4 | union yyalloc {
  |   ^
1.ii:4:7: note: a different type is defined in another translation unit
1.ii:6:11: note: the first difference of corresponding definitions is field
‘yyvs’
6 |   YYSTYPE yyvs;
  |   ^
1.ii:4:7: note: a field of same name but different type is defined in another
translation unit
4 | union yyalloc {
  |   ^
1.ii:3:3: note: type ‘struct YYSTYPE’ itself violates the C++ One Definition
Rule
3 | } YYSTYPE;
  |   ^
1.ii:3:3: warning: type ‘struct YYSTYPE’ violates the C++ One Definition Rule
[-Wodr]
2.ii:1:16: note: a different type is defined in another translation unit
1 | typedef struct YYSTYPE {
  |^
1.ii:2:7: note: the first difference of corresponding definitions is field ‘a’
2 |   int a;
  |   ^
1.ii:3:3: note: a type with different number of fields is defined in another
translation unit
3 | } YYSTYPE;
  |   ^

Leaving to Honza.

[Bug ipa/87955] [9 Regression] ICE in cl_target_option_print_diff at gcc/options-save.c:3803 since r265920

2018-11-09 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87955

David Malcolm  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-11-09
   Assignee|unassigned at gcc dot gnu.org  |dmalcolm at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from David Malcolm  ---
Sorry about that.  Confirmed; I'm working on a fix.

[Bug tree-optimization/87954] VRP can transform a * b where a,b are [0,1] to a & b

2018-11-09 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87954

--- Comment #4 from Marc Glisse  ---
(In reply to Martin Liška from comment #3)
> Marc, are you planning to implement that in the future?

Not in the near future, no. It is all yours if you want it ;-)

[Bug target/87867] [7/8 regression] ICE on virtual destructor (-mlong-calls -ffunction-sections) on arm-none-eabi

2018-11-09 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87867

--- Comment #2 from Ramana Radhakrishnan  ---
Author: ramana
Date: Fri Nov  9 12:50:51 2018
New Revision: 265965

URL: https://gcc.gnu.org/viewcvs?rev=265965=gcc=rev
Log:
[PATCH, arm] Backport -- Fix ICE during thunk generation with -mlong-calls

For Mihail Ionescu.

2018-11-09  Mihail Ionescu  

PR target/87867
Backport from mainline
2018-09-17  Eric Botcazou  

* g++.dg/other/thunk2a.C: New test.
* g++.dg/other/thunk2b.C: Likewise.

2018-11-09  Mihail Ionescu  

Backport from mainiline
2018-09-17  Eric Botcazou  

* g++.dg/other/thunk2a.C: New test.
* g++.dg/other/thunk2b.C: Likewise.
* g++.dg/other/vthunk1.C: Rename as thunk1.C


Added:
branches/gcc-8-branch/gcc/testsuite/g++.dg/other/thunk1.C
  - copied unchanged from r265964,
branches/gcc-8-branch/gcc/testsuite/g++.dg/other/vthunk1.C
branches/gcc-8-branch/gcc/testsuite/g++.dg/other/thunk2a.C
branches/gcc-8-branch/gcc/testsuite/g++.dg/other/thunk2b.C
Removed:
branches/gcc-8-branch/gcc/testsuite/g++.dg/other/vthunk1.C
Modified:
branches/gcc-8-branch/gcc/ChangeLog
branches/gcc-8-branch/gcc/config/arm/arm.c
branches/gcc-8-branch/gcc/testsuite/ChangeLog

[Bug tree-optimization/87954] VRP can transform a * b where a,b are [0,1] to a & b

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87954

--- Comment #3 from Martin Liška  ---
Marc, are you planning to implement that in the future?

[Bug fortran/87960] [9 Regression] Miscompilation of 527.cam4_r benchmark from SPEC2017 w/ -O2 since r265946

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87960

Martin Liška  changed:

   What|Removed |Added

  Known to work||8.2.0
 Blocks||26163
   Target Milestone|--- |9.0
  Known to fail||9.0


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26163
[Bug 26163] [meta-bug] missed optimization in SPEC (2k17, 2k and 2k6 and 95)

[Bug fortran/87960] New: [9 Regression] Miscompilation of 527.cam4_r benchmark from SPEC2017 w/ -O2 since r265946

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87960

Bug ID: 87960
   Summary: [9 Regression] Miscompilation of 527.cam4_r benchmark
from SPEC2017 w/ -O2 since r265946
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: jvdelisle at gcc dot gnu.org
  Target Milestone: ---

I see:

Error with '/home/marxin/Programming/cpu2017/bin/specinvoke -d
/home/marxin/Programming/cpu2017/benchspec/CPU/527.cam4_r/run/run_peak_refrate_gcc7-m64.
-f compare.cmd -E -e compare.err -o compare.stdout'; no non-empty output files
exist
  Command returned exit code 1
*** Miscompare of cam4_validate.txt; for details see
   
/home/marxin/Programming/cpu2017/benchspec/CPU/527.cam4_r/run/run_peak_refrate_gcc7-m64./cam4_validate.txt.mis

$ cat
/home/marxin/Programming/cpu2017/benchspec/CPU/527.cam4_r/run/run_peak_refrate_gcc7-m64./cam4_validate.txt.mis
0001:   PASS:  4  points. 
   allow_std=0
   ^
'cam4_validate.txt' long

[Bug ipa/87959] ICE in tree check: expected enumeral_type, have record_type in free_enum_values, at ipa-devirt.c:2265

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87959

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-11-09
  Known to work||6.4.0, 7.2.0, 8.2.0, 9.0
   Assignee|unassigned at gcc dot gnu.org  |hubicka at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Liška  ---
Started with r265875, before the revision there was a different back-trace:
lto1: internal compiler error: tree check: expected record_type or union_type
or qual_union_type, have enumeral_type in add_type_duplicate, at
ipa-devirt.c:1710

[Bug testsuite/87958] scan-tree-dump-times vs. (foo|bar)

2018-11-09 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87958

--- Comment #2 from Jakub Jelinek  ---
Ah, ok, thanks.  Perhaps we should just mention it in our scan-tree-dump-times
documentation and close then.

[Bug ipa/87959] New: ICE in tree check: expected enumeral_type, have record_type in free_enum_values, at ipa-devirt.c:2265

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87959

Bug ID: 87959
   Summary: ICE in tree check: expected enumeral_type, have
record_type in free_enum_values, at ipa-devirt.c:2265
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Keywords: ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: marxin at gcc dot gnu.org
  Target Milestone: ---

The ICE is as old as -Wodr warning:

$ cat a.ii
enum Type {};
void a(Type) {}

$ cat b.ii
struct Type;
void a(Type *) {}

$ g++ [ab].ii -flto 
a.ii:1:6: warning: type ‘Type’ violates the C++ One Definition Rule [-Wodr]
1 | enum Type {};
  |  ^
lto1: note: a different type is defined in another translation unit
during IPA pass: pure-const
lto1: internal compiler error: tree check: expected enumeral_type, have
record_type in free_enum_values, at ipa-devirt.c:2265
0x6c9738 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/home/marxin/Programming/gcc/gcc/tree.c:9623
0x800276 tree_check(tree_node*, char const*, int, char const*, tree_code)
/home/marxin/Programming/gcc/gcc/tree.h:3154
0xa1f582 free_enum_values
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2265
0xa1f5c5 build_type_inheritance_graph()
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2281
0xa62bb2 symbol_table::remove_unreachable_nodes(_IO_FILE*)
/home/marxin/Programming/gcc/gcc/ipa.c:310
0x79efb2 read_cgraph_and_symbols
/home/marxin/Programming/gcc/gcc/lto/lto.c:3017
0x79efb2 lto_main()
/home/marxin/Programming/gcc/gcc/lto/lto.c:3401

[Bug testsuite/87958] scan-tree-dump-times vs. (foo|bar)

2018-11-09 Thread amonakov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87958

Alexander Monakov  changed:

   What|Removed |Added

 CC||amonakov at gcc dot gnu.org

--- Comment #1 from Alexander Monakov  ---
I guess we are supposed to use non-capturing groups, i.e. (?:123|456)

[Bug c/87953] asan: stack-buffer-overflow in vectorizable_reduction

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87953

--- Comment #4 from Richard Biener  ---
Author: rguenth
Date: Fri Nov  9 12:29:51 2018
New Revision: 265964

URL: https://gcc.gnu.org/viewcvs?rev=265964=gcc=rev
Log:
2018-11-09  Richard Biener  

PR tree-optimization/87953
* tree-vect-loop.c (vectorizable_reduction): For analysis
always pass ops[0] to vectorizable_condition.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-vect-loop.c

[Bug c/87953] asan: stack-buffer-overflow in vectorizable_reduction

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87953

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug c++/86997] error: call of overloaded ‘NoDestructor()’ is ambiguous

2018-11-09 Thread jengelh at inai dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86997

Jan Engelhardt  changed:

   What|Removed |Added

 CC||jengelh at inai dot de

--- Comment #4 from Jan Engelhardt  ---
>Is it trying to construct an 'a' object and pass that to the NoDestructor? Or 
>just default construct the NoDestructor object?

As I read it, it's definitely the 1-arg form (always), not the default ctor.

auto a = NoDestructor(); // NoDestructor a;
auto b = NoDestructor{}; // NoDestructor b{};
auto c = NoDestructor({}); // NoDestructor c({});
auto d = NoDestructor{{}}; // NoDestructor d{{}};

The actual chromium code is something like

  template class NoDestructor { ... }

and is used as

  NoDestructor> google_tlds({"foo"});

which means ({}), if it appears, was intended to mean the empty set, and this
empty set is passed as the first and only parameter to the NoDestructor 1-arg
ctor.

[Bug target/87867] [7/8 regression] ICE on virtual destructor (-mlong-calls -ffunction-sections) on arm-none-eabi

2018-11-09 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87867

Eric Botcazou  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-11-09
 CC||ebotcazou at gcc dot gnu.org
   Target Milestone|--- |7.4
Summary|ICE on virtual destructor   |[7/8 regression] ICE on
   |(-mlong-calls   |virtual destructor
   |-ffunction-sections) on |(-mlong-calls
   |arm-none-eabi   |-ffunction-sections) on
   ||arm-none-eabi
 Ever confirmed|0   |1

--- Comment #1 from Eric Botcazou  ---
Right, as you found you it was fixed by:

2018-09-26  Eric Botcazou  

* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
(arm32_output_mi_thunk): Deal with long calls.

[Bug ipa/87957] [9 Regression] ICE tree check: expected tree that contains ‘decl minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051 since r265519

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1

--- Comment #1 from Martin Liška  ---
I've got patch for it, let me take it.

[Bug testsuite/87958] New: scan-tree-dump-times vs. (foo|bar)

2018-11-09 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87958

Bug ID: 87958
   Summary: scan-tree-dump-times vs. (foo|bar)
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

Anyone knows why (foo|bar) works for e.g. scan-tree-dump, but not for
scan-tree-dump-times?

/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
/* { dg-final { scan-tree-dump "call(123|456)fn" "optimized" } } */
/* { dg-final { scan-tree-dump-times "call(123|456)fn" 1 "optimized" } } */

void call123fn (void);

void
baz (void)
{
  call123fn ();
}

fails the scan-tree-dump-times test, but succeeds scan-tree-dump, even when
there is just one such call in the dump.  Surprisingly it succeeds if I change
the 1 to 2.  Are ()s in scan-tree-dump-times unsupported, or does one need to
adjust the count, so that it is not the number of times the whole string
matched, but number of times the whole string as well as any of those ()s
matched?  So e.g.
/* { dg-final { scan-tree-dump-times "b(a|b)z" 6 "optimized" } } */
succeeds on the testcase, because there are 3 baz strings and no bbz strings in
the dump.

[Bug ipa/87957] [9 Regression] ICE tree check: expected tree that contains ‘decl minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051 since r265519

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957

Martin Liška  changed:

   What|Removed |Added

   Last reconfirmed||2018-11-9
  Known to work||8.2.0
   Target Milestone|--- |9.0
  Known to fail||9.0

[Bug ipa/87957] New: [9 Regression] ICE tree check: expected tree that contains ‘decl minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051 since r265519

2018-11-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87957

Bug ID: 87957
   Summary: [9 Regression] ICE tree check: expected tree that
contains ‘decl minimal’ structure, have
‘identifier_node’ in warn_odr, at ipa-devirt.c:1051
since r265519
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

Following is causing a new ICE:

$ cat 1.ii
typedef struct {
  int a;
} YYSTYPE;
union yyalloc {
  short yyss;
  YYSTYPE yyvs;
};
void b() { yyalloc c; }

$ cat 2.ii
typedef struct YYSTYPE {
} YYSTYPE;
union yyalloc {
  short yyss;
  YYSTYPE yyvs;
};
void a() { yyalloc b; }

$ g++ -flto [12].ii
1.ii:3:3: warning: type ‘struct YYSTYPE’ violates the C++ One Definition Rule
[-Wodr]
3 | } YYSTYPE;
  |   ^
lto1: internal compiler error: tree check: expected tree that contains ‘decl
minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051
0x6b540e tree_contains_struct_check_failed(tree_node const*,
tree_node_structure_enum, char const*, int, char const*)
../../gcc/tree.c:9790
0x614bd4 contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
../../gcc/tree.h:3268
0x614bd4 warn_odr
../../gcc/ipa-devirt.c:1051
0xa01c9e type_variants_equivalent_p
../../gcc/ipa-devirt.c:651
0xa07f68 odr_subtypes_equivalent_p
../../gcc/ipa-devirt.c:697
0xa08faa odr_types_equivalent_p
../../gcc/ipa-devirt.c:1576
0xa05ea4 add_type_duplicate
../../gcc/ipa-devirt.c:1878
0xa05ea4 get_odr_type(tree_node*, bool)
../../gcc/ipa-devirt.c:2058
0x7894d6 lto_read_decls
../../gcc/lto/lto.c:1900
0x78a78e lto_file_finalize
../../gcc/lto/lto.c:2134
0x78a78e lto_create_files_from_ids
../../gcc/lto/lto.c:2144
0x78a78e lto_file_read
../../gcc/lto/lto.c:2185
0x78a78e read_cgraph_and_symbols
../../gcc/lto/lto.c:2865
0x78a78e lto_main()
../../gcc/lto/lto.c:3401

[Bug tree-optimization/87954] VRP can transform a * b where a,b are [0,1] to a & b

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87954

--- Comment #2 from Richard Biener  ---
(In reply to Aldy Hernandez from comment #1)
> Indeed, if you compile imul() with -fdump-tree-all-details-alias -O2 and
> look at the vrp1 dump, one can see:
> 
>   # RANGE [0, 1] NONZERO 1
>   is_rec_12 = (int) _4;
> ...
>   # RANGE [0, 1] NONZERO 1
>   _6 = (int) _15;
>   # RANGE [0, 1] NONZERO 1
>   _7 = _6 * is_rec_12;
> 
> This pattern persists throughout the optimization pipeline, so any remaining
> optimizer could potentially see the range of the operands and strength
> reduce this.
> 
> What would be the best place to do this?

The best place to do this is a pattern in match.pd

(simplify (mult @1 @2)
 (if (INTEGRAL_TYPE_P (type)
  && wi::eq_p (get_nonzero_bits (@1), wi::one (TYPE_PRECISION (type))
  && wi::eq_p (get_nonzero_bits (@2), wi::one (TYPE_PRECISION (type)))
  (and @1 @2))

maybe even think of tricks like requiring only one operand to be [0,1]
and sign-extending that from bit 0 before the and?  Thus [0,1] * b
-> (a ? -1 : 0) & b.  But that's probably sth to do at RTL expansion time
because it depends on costs to do the sign extension.

if nonzero-bits is 2 then we can do b + (a == 2 ? 1 : -1) * b.  Thus
transfer the bit to the sign bit and do an add.  This is similarly sth
for RTL expansion.  I guess any power-of-two or zero duality can be
optimized a bit.

[Bug c/87953] asan: stack-buffer-overflow in vectorizable_reduction

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87953

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-11-09
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener  ---
valgrind reports

==21312== Conditional jump or move depends on uninitialised value(s)
==21312==at 0x14BB78D: vectorizable_condition(_stmt_vec_info*,
gimple_stmt_iterator*, _stmt_vec_info**, tree_node*, int, _slp_tree*,
vec*) (tree-vect-stmts.c:8718)
==21312==by 0x14DCDC0: vectorizable_reduction(_stmt_vec_info*,
gimple_stmt_iterator*, _stmt_vec_info**, _slp_tree*, _slp_instance*,
vec*) (tree-vect-loop.c:6531)

so that's probably the very same thing.  reduc_index is -1 here.

I have a fix.

[Bug c/87942] every int seems to be unaligned in packed structure

2018-11-09 Thread johannes.vet...@dom-sicherheitstechnik.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87942

--- Comment #3 from Johannes Vetter  
---
Ok, thanks a lot.

I haven't expected that an initializer could change the alignment of a
variable. "-fno-common" does not work in my case (perhaps because the variable
already has a attribute "section").

If i set the alignment of the variable AND the exported variable in the header
file, it works fine.

My problem now: in how many other cases is the same behavior? I cannot check
every global variable/struct by hand.

[Bug fortran/87943] [6 regression] severe regression on iso_varying_string (?)

2018-11-09 Thread juergen.reuter at desy dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87943

--- Comment #2 from Jürgen Reuter  ---
Yep, I know that 6 is no longer supported. Nevertheless
I wanted to at least report that bug. It is only in 6.5 ,
7/8/9 are ok.

[Bug tree-optimization/87621] outer loop auto-vectorization fails for exponentiation code

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87621

--- Comment #5 from Richard Biener  ---
Author: rguenth
Date: Fri Nov  9 10:53:31 2018
New Revision: 265959

URL: https://gcc.gnu.org/viewcvs?rev=265959=gcc=rev
Log:
2018-11-09  Richard Biener  

PR tree-optimization/87621
* tree-vect-loop.c (vectorizable_reduction): Handle reduction
op with only phi inputs.
* tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h.
(ch_base::copy_headers): Run CSE on copied loop headers.
(pass_ch_vect::process_loop_p): Simplify.

* g++.dg/vect/pr87621.cc: New testcase.

Added:
trunk/gcc/testsuite/g++.dg/vect/pr87621.cc
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-loop-ch.c
trunk/gcc/tree-vect-loop.c

[Bug tree-optimization/53947] [meta-bug] vectorizer missed-optimizations

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
Bug 53947 depends on bug 87621, which changed state.

Bug 87621 Summary: outer loop auto-vectorization fails for exponentiation code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87621

   What|Removed |Added

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

[Bug tree-optimization/87621] outer loop auto-vectorization fails for exponentiation code

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87621

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #4 from Richard Biener  ---
Fixed on trunk.

[Bug tree-optimization/87952] Missed optimization for std::get_if on std::variant

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87952

--- Comment #1 from Richard Biener  ---
I belive I've seen dups for this.  We merely isolate those paths but do not
remove them (removing them might end up as a security issue).

[Bug c/87950] GCC warns about reaching end of non-void function when all switch cases are completely handled

2018-11-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87950

Richard Biener  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #11 from Richard Biener  ---
.

  1   2   >