[Bug c++/82577] [8 Regression] ICE in compare_base_decls, at alias.c:2053

2017-10-17 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82577

Martin Liška  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-10-17
 CC||marxin at gcc dot gnu.org,
   ||nathan at gcc dot gnu.org
   Target Milestone|--- |8.0
Summary|ice in compare_base_decls,  |[8 Regression] ICE in
   |at alias.c:2053 |compare_base_decls, at
   ||alias.c:2053
 Ever confirmed|0   |1

--- Comment #3 from Martin Liška  ---
Confirmed, started with r253649.

[Bug tree-optimization/82549] [6/7/8 Regression] ICE at -O1 and above: verify_gimple failed

2017-10-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82549

--- Comment #3 from Jakub Jelinek  ---
Author: jakub
Date: Tue Oct 17 07:38:32 2017
New Revision: 253805

URL: https://gcc.gnu.org/viewcvs?rev=253805&root=gcc&view=rev
Log:
PR tree-optimization/82549
* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
Formatting fixes.  Instead of calling make_bit_field_ref with negative
bitpos return 0.

* gcc.c-torture/compile/pr82549.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/compile/pr82549.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/testsuite/ChangeLog

[Bug other/82569] [8 regression] failure in 177.mesa cpu2000 test case after r253530

2017-10-17 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82569

--- Comment #3 from Eric Botcazou  ---
Btw, do the problematic functions have a prototype or are they written in the
old-fashioned K&R way?

[Bug c++/82572] throw on line by itself in constexpr function aborts compile even if never reached

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82572

Paolo Carlini  changed:

   What|Removed |Added

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

--- Comment #2 from Paolo Carlini  ---
Indeed.

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

[Bug c++/80061] error on constexpr function with an unevaluated throw

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80061

Paolo Carlini  changed:

   What|Removed |Added

 CC||ekchew at lgl dot kos.net

--- Comment #3 from Paolo Carlini  ---
*** Bug 82572 has been marked as a duplicate of this bug. ***

[Bug c++/82566] Internal compiler error in type deduction (with C++11)

2017-10-17 Thread peter.gottschling at simunova dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82566

--- Comment #3 from Peter Gottschling  
---
Ok. Then I give up on 4.9. BTW, I couldn't find a list on the gcc homepage
which release is still supported. There were only dates when it was released
but not when the maintenance was terminated (just a note that some versions are
maintained longer than others (but then again not which)). Google didn't find
anything either.

[Bug middle-end/82344] [8 Regression] SPEC CPU2006 435.gromacs ~10% performance regression with trunk@250855

2017-10-17 Thread julia.koval at intel dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82344

--- Comment #5 from Yulia Koval  ---
(In reply to Richard Biener from comment #3)
> So the newton-raphson step causes register pressure to increase and post
> haswell this makes code slower than not using rsqrt (thus using sqrtf and a
> division)?
> 
> I wonder whether it would be profitable to SLP vectorize this (of course
> we're not considering this because SLP vectorization is looking for stores).
> SLP vectorization would need to do 4 (or 8 with avx256) vector inserts
> and extracts but then could do the rsqrt and newton raphson together.
> The argument computation to the sqrt also loop vectorizable and the ultimate
> operands even come from continuous memory.  One of the tricky parts would be
> to see that the only first rsqrt arg is re-used and thus taking
> rinv21 to rinv33 (8 rsqrts) for the vectorization is probably best.
> 
>   rinv11   = 1.0/sqrt(rsq11)
>   rinv21   = 1.0/sqrt(rsq21)
>   rinv31   = 1.0/sqrt(rsq31)
>   rinv12   = 1.0/sqrt(rsq12)
>   rinv22   = 1.0/sqrt(rsq22)
>   rinv32   = 1.0/sqrt(rsq32)
>   rinv13   = 1.0/sqrt(rsq13)
>   rinv23   = 1.0/sqrt(rsq23)
>   rinv33   = 1.0/sqrt(rsq33)
>   r11  = rsq11*rinv11
> 
> What does ICC do to this loop?
> 
> I can confirm the regression on our tester (a Haswell machine btw).

ICC generates vrsqrtps in this case.

[Bug c++/82566] Internal compiler error in type deduction (with C++11)

2017-10-17 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82566

--- Comment #4 from Andrew Pinski  ---
The gcc front page: https://gcc.gnu.org

Has 
Supported Releases
GCC 7.2 (changes)
Status: 2017-08-14 (regression fixes & docs only).
Serious regressions. All regressions.
GCC 6.4 (changes)
Status: 2017-07-04 (regression fixes & docs only).
Serious regressions. All regressions.
Development: GCC 8.0 (release criteria, changes)
Status: 2017-04-20 (Stage 1, general development).
Serious regressions. All regressions.



I don't see how we could make it more clear

[Bug c++/82570] Lambda fails to compile because it doesn't meet constexpr requirements

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82570

--- Comment #1 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 08:38:07 2017
New Revision: 253806

URL: https://gcc.gnu.org/viewcvs?rev=253806&root=gcc&view=rev
Log:
2017-10-17  Paolo Carlini  

PR c++/82570
* g++.dg/cpp1z/constexpr-lambda18.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug c++/82570] Lambda fails to compile because it doesn't meet constexpr requirements

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82570

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |7.3

--- Comment #2 from Paolo Carlini  ---
Fixed for 7.3.0 by the patch which fixed c++/80935.

[Bug tree-optimization/82574] [8 Regression] wrong code at -O3 on x86_64-linux-gnu

2017-10-17 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82574

amker at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from amker at gcc dot gnu.org ---
Sorry for disturbing, I will investigate it.

[Bug rtl-optimization/82578] New: Redundant instructions emitted starting with r204212

2017-10-17 Thread krebbel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82578

Bug ID: 82578
   Summary: Redundant instructions emitted starting with r204212
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: krebbel at gcc dot gnu.org
  Target Milestone: ---

Starting with r204212 (2013-10-30) a redundant thread pointer extract is
emitted.

static __thread int counter;

void gs_handler(void)
{
  counter++;
}

compiled with: -O2 -S

2xear with r204211:

gs_handler:
larl%r5,.L2
ear %r1,%a0
sllg%r1,%r1,32
ear %r1,%a1
lg  %r2,.L3-.L2(%r5)
l   %r3,0(%r1,%r2)
ahi %r3,1
st  %r3,0(%r1,%r2)
br  %r14


4xear with r204212:

gs_handler:
larl%r5,.L2
ear %r2,%a0
sllg%r2,%r2,32
ear %r1,%a0
ear %r2,%a1
sllg%r1,%r1,32
lg  %r3,.L3-.L2(%r5)
ear %r1,%a1
l   %r2,0(%r2,%r3)
ahi %r2,1
st  %r2,0(%r1,%r3)
br  %r14

[Bug c++/67831] Internal error on complicated constexpr initialization.

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67831

--- Comment #2 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 09:06:53 2017
New Revision: 253807

URL: https://gcc.gnu.org/viewcvs?rev=253807&root=gcc&view=rev
Log:
2017-10-17  Paolo Carlini  

PR c++/67831
* g++.dg/cpp0x/constexpr-ice18.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-ice18.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug c++/67831] Internal error on complicated constexpr initialization.

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67831

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |6.0

--- Comment #3 from Paolo Carlini  ---
Fixed for 6.1.0.

[Bug rtl-optimization/82578] Redundant instructions emitted starting with r204212

2017-10-17 Thread krebbel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82578

--- Comment #1 from Andreas Krebbel  ---
As expected the rtl dumps are identical up to removed "regmove" pass.

The interesting change is in insn 8. With regmove the value already loaded into
r47 is reused while without regmove it is loaded from a0 again.

First thing I'll check is whether a register_move_cost adjustment fixes this.

r204211 202r.regmove:

(insn 5 2 6 2 (set (reg/f:DI 46)
(mem/u/c:DI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [3 S8 A64])) t.c:7
63 {*movdi_64}
 (expr_list:REG_EQUAL (const:DI (unspec:DI [
(symbol_ref:DI ("counter") [flags 0x2a]  )
] UNSPEC_NTPOFF))
(nil)))
(insn 6 5 7 2 (set (reg/f:DI 47)
(reg:DI 36 %a0)) t.c:7 63 {*movdi_64}
 (expr_list:REG_DEAD (reg:DI 36 %a0)
(nil)))
(insn 7 6 8 2 (set (reg/f:DI 48)
(mem/u/c:DI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [3 S8 A64])) t.c:7
63 {*movdi_64}
 (expr_list:REG_EQUAL (const:DI (unspec:DI [
(symbol_ref:DI ("counter") [flags 0x2a]  )
] UNSPEC_NTPOFF))
(nil)))
(insn 8 7 9 2 (set (reg/f:DI 49)
(reg/f:DI 47)) t.c:7 63 {*movdi_64}
 (expr_list:REG_DEAD (reg/f:DI 47)
(nil)))
(insn 9 8 0 2 (parallel [
(set (mem/c:SI (plus:DI (reg/f:DI 49)
(reg/f:DI 46)) [2 counter+0 S4 A32])
(plus:SI (mem/c:SI (plus:DI (reg/f:DI 49)
(reg/f:DI 48)) [2 counter+0 S4 A32])
(const_int 1 [0x1])))
(clobber (reg:CC 33 %cc))
]) t.c:7 327 {*addsi3}
 (expr_list:REG_DEAD (reg/f:DI 49)
(expr_list:REG_DEAD (reg/f:DI 48)
(expr_list:REG_DEAD (reg/f:DI 46)
(expr_list:REG_UNUSED (reg:CC 33 %cc)
(nil))


r204212 202r.outof_cfglayout:

(insn 5 2 6 2 (set (reg/f:DI 46)
(mem/u/c:DI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [3 S8 A64])) t.c:7
63 {*movdi_64}
 (expr_list:REG_EQUAL (const:DI (unspec:DI [
(symbol_ref:DI ("counter") [flags 0x2a]  )
] UNSPEC_NTPOFF))
(nil)))
(insn 6 5 7 2 (set (reg/f:DI 47)
(reg:DI 36 %a0)) t.c:7 63 {*movdi_64}
 (nil))
(insn 7 6 8 2 (set (reg/f:DI 48)
(mem/u/c:DI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [3 S8 A64])) t.c:7
63 {*movdi_64}
 (expr_list:REG_EQUAL (const:DI (unspec:DI [
(symbol_ref:DI ("counter") [flags 0x2a]  )
] UNSPEC_NTPOFF))
(nil)))
(insn 8 7 9 2 (set (reg/f:DI 49)
(reg:DI 36 %a0)) t.c:7 63 {*movdi_64}
 (expr_list:REG_DEAD (reg:DI 36 %a0)
(nil)))
(insn 9 8 0 2 (parallel [
(set (mem/c:SI (plus:DI (reg/f:DI 47)
(reg/f:DI 46)) [2 counter+0 S4 A32])
(plus:SI (mem/c:SI (plus:DI (reg/f:DI 49)
(reg/f:DI 48)) [2 counter+0 S4 A32])
(const_int 1 [0x1])))
(clobber (reg:CC 33 %cc))
]) t.c:7 327 {*addsi3}
 (expr_list:REG_DEAD (reg/f:DI 49)
(expr_list:REG_DEAD (reg/f:DI 48)
(expr_list:REG_DEAD (reg/f:DI 47)
(expr_list:REG_DEAD (reg/f:DI 46)
(expr_list:REG_UNUSED (reg:CC 33 %cc)
(nil)))

[Bug c++/82478] Rejects valid access to private member type that should be allowed by friend

2017-10-17 Thread eieio at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82478

--- Comment #2 from Corey Tabaka  ---
From section 11.3.2 of the C++14 draft spec:

"Declaring a class to be a friend implies that the names of private and
protected members from the class granting friendship can be accessed in the
base-specifiers and member declarations of the befriended class."

I take "can be accessed in base-specifiers" to mean any expression in the base
specifiers of class B is granted access to private and protected members of
class A if class A declares class B to be a friend. Do you agree that this is a
valid interpretation?

Furthermore, regardless of the interpretation above, in the example supplied
the class Outer should have friend access to private members of A, and thus the
nested definition of Outer::HasPrivate should have valid access to A::PRIVATE.
This also fails to compile with a similar error as the top-level example --
clearly this is not the correct behavior.

[Bug c++/82560] [7/8 Regression] Temporary object created as a default argument not destructed

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82560

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2

[Bug c++/82561] [8 regression] crash on internal compiler error: in cp_tree_equal, at cp/tree.c:3778

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82561

Richard Biener  changed:

   What|Removed |Added

Version|unknown |8.0
   Target Milestone|--- |8.0

[Bug fortran/82567] [6/7/8] gfortran takes a long time to compile a simple implied-do with -Optimization.

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82567

Richard Biener  changed:

   What|Removed |Added

   Keywords||missed-optimization
  Component|middle-end  |fortran

--- Comment #4 from Richard Biener  ---
This is value-numbering running into --param sccvn-max-alias-queries-per-access
(default 1000).  If you shrink this value compile-time gets faster if you
increase it it gets slower.

And yes, this is because value-numbering of the memory state of the function
is quadratic in the number of stores and loads.

The FE should apply some more sensible cost model when deciding to "unroll"
the array operation.  In this case it's code-size prohibitive.

The middle-end behaves as designed (limiting itself with respect to
compile-time).

[Bug middle-end/82569] [8 regression] failure in 177.mesa cpu2000 test case after r253530

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82569

Richard Biener  changed:

   What|Removed |Added

   Keywords||wrong-code
  Component|other   |middle-end
   Target Milestone|--- |8.0

[Bug rtl-optimization/82576] sbitmap_vector_alloc() not ready for 64 bits

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82576

--- Comment #2 from Richard Biener  ---
No, I think the public API shouldn't change (we don't want to grow
simple_bitmap_def unnecessarily).  Such big sbitmaps do not make sense.

[Bug target/82442] vect/pr31699.c fails on arm

2017-10-17 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82442

Wilco  changed:

   What|Removed |Added

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

--- Comment #2 from Wilco  ---
Fixed

[Bug middle-end/82556] [7/8 Regression] internal compiler error in curr_insn_transform, at lra-constraints.c:4307

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82556

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1
 CC||jakub at gcc dot gnu.org
  Known to work||7.2.0
   Target Milestone|8.0 |7.3
Summary|[8 Regression] internal |[7/8 Regression] internal
   |compiler error in   |compiler error in
   |curr_insn_transform, at |curr_insn_transform, at
   |lra-constraints.c:4307  |lra-constraints.c:4307
  Known to fail||7.2.1, 8.0

--- Comment #3 from Richard Biener  ---
Confirmed on the branch (for the unreduced testcase).  GCC 7.2 works.

Probably Jakubs pattern changes.

[Bug tree-optimization/82563] [8 Regression] [graphite] ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82563

Richard Biener  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2017-10-17
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |8.0
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener  ---
Mine.  This is because when we build SCOPs we break LC-SSA with

  /* For our out-of-SSA we need a block on s->entry, similar to how
 we include the LCSSA block in the region.  */
  s->entry = single_pred_edge (split_edge (s->entry));

because in this case we split the loop exit edge and we expect the LC SSA
PHI node to be in the exit block rather than its single successor.

[Bug c++/82478] Rejects valid access to private member type that should be allowed by friend

2017-10-17 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82478

--- Comment #3 from Jonathan Wakely  ---
The template argument list of ::HasPrivate> is
not a base-specifier.

[Bug c++/82579] New: GCC 7/8

2017-10-17 Thread ostash at ostash dot kiev.ua
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82579

Bug ID: 82579
   Summary: GCC 7/8
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ostash at ostash dot kiev.ua
  Target Milestone: ---

Hello,

The following code fails to compile with GCC 7/8, in C++17 mode (call to f(s)
is ambiguous):

-
template  
class C
{};

template 
void f(const C&) {}

template  class CT>
void f(CT) {}

int main()
{
C s;
f(s);
}
-

However it compiles cleanly in C++14 mode.


This is a stripped case from boost::container::string:
https://github.com/boostorg/container/issues/58


Here
(https://groups.google.com/a/isocpp.org/d/topic/std-discussion/B1MHPRMqfFA/discussion)
we can find a suggestion that this is somehow related to CWG150 resolution by
P0522R0.

Clang accepts this code in both C++14 and C++17 mode, however they state that
CWG150 resolution "is disabled by default in all language versions" because
"the change to the standard lacks a corresponding change for template partial
ordering, resulting in ambiguity errors for reasonable and previously-valid
code" (https://clang.llvm.org/cxx_status.html#p0522).

[Bug c++/80061] error on constexpr function with an unevaluated throw

2017-10-17 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80061

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-10-17
 Ever confirmed|0   |1

[Bug c++/77369] incorrect noexcept specification deduction

2017-10-17 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77369

Jonathan Wakely  changed:

   What|Removed |Added

   Last reconfirmed|2017-04-24 00:00:00 |2017-10-17
  Known to fail||4.6.4, 4.7.4, 4.8.5, 4.9.4,
   ||5.4.0, 6.4.0, 7.2.0, 8.0

--- Comment #3 from Jonathan Wakely  ---
Another testcase, this time compile-time only:


template int caller(F f) noexcept(noexcept(f())) { f(); return 0; }

void func1() noexcept { }

void func2() { throw 1; }

#ifndef FIXIT
int instantiate_caller_with_func1 = caller(func1);
#endif

static_assert( !noexcept(caller(func2)), "" );


Without FIXIT defined the first instantiation of caller makes use of the fact
that its template argument type is noexcept, but then we use the same
instantiation for the caller(func2):

n.cc:11:1: error: static assertion failed
 static_assert( !noexcept(caller(func2)), "" );
 ^

As Aaron observed, EDG has exactly the same bug. Clang compiles it
successfully.

[Bug rtl-optimization/82578] Redundant instructions emitted starting with r204212

2017-10-17 Thread krebbel at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82578

--- Comment #2 from Andreas Krebbel  ---
I was wondering why CSE doesn't do the right thing here. In fact it would if it
would not consider our access registers to be particularly cheap.

Access registers are fixed hard regs. Hence, cse considers them to be
CHEAP_REGNO's with a cost of 0 making it cheaper than pseudos. Unfortunately it
is rather expensive to load an access register into a general purpose reg.
Especially if it is a 64 bit value since access regs are only 32bits.

Preventing a0 and a1 from being considered cheap ends up with exactly the same
code as with the regmove pass.

Perhaps CSE should also check register_move_costs when calculating register
costs?

[Bug c++/82579] GCC 7/8 ambiguous call to overload

2017-10-17 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82579

--- Comment #1 from Jonathan Wakely  ---
This is not a GCC bug, because it's the required behaviour for C++17.

Use -fno-new-ttp-matching to disable it in C++17 (or use -fnew-ttp-matching to
enable it in C++14 and make it ambiguous).

[Bug c++/82579] GCC 7/8 ambiguous call to overload

2017-10-17 Thread ostash at ostash dot kiev.ua
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82579

Viktor Ostashevskyi  changed:

   What|Removed |Added

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

--- Comment #2 from Viktor Ostashevskyi  ---
(In reply to Jonathan Wakely from comment #1)
> This is not a GCC bug, because it's the required behaviour for C++17.
> 
> Use -fno-new-ttp-matching to disable it in C++17 (or use -fnew-ttp-matching
> to enable it in C++14 and make it ambiguous).

Huh, thanks for clearing this. Then this is a bug in Boost and maybe Clang.

[Bug c++/82579] GCC 7/8 ambiguous call to overload

2017-10-17 Thread ostash at ostash dot kiev.ua
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82579

Viktor Ostashevskyi  changed:

   What|Removed |Added

 Resolution|FIXED   |INVALID

[Bug target/82580] New: Optimize comparisons for __int128 on x86-64

2017-10-17 Thread morwenn29 at hotmail dot fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82580

Bug ID: 82580
   Summary: Optimize comparisons for __int128 on x86-64
   Product: gcc
   Version: 7.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: morwenn29 at hotmail dot fr
  Target Milestone: ---

Given the following simple code:

bool foobar(unsigned __int128 lhs, unsigned __int128 rhs) {
return lhs < rhs;
}

GCC generates branchful code for x86-64 at -O3 optimization level:

foobar(unsigned __int128, unsigned __int128):
cmp rsi, rcx
mov eax, 1
jb .L2
jbe .L6
.L3:
xor eax, eax
.L2:
rep ret
.L6:
cmp rdi, rdx
jnb .L3
rep ret

On the other hand, Clang is able to generate branchless code with just a few
instructions at the same optimization level:

foobar(unsigned __int128, unsigned __int128): # @foobar(unsigned __int128,
unsigned __int128)
cmp rdi, rdx
sbb rsi, rcx
setb al
ret

The codegen results are equivalent for the other comparison instructions. Would
it be possible to optimize these comparison instructions the same way for GCC?

[Bug tree-optimization/82563] [8 Regression] [graphite] ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709

2017-10-17 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82563

--- Comment #2 from Richard Biener  ---
Author: rguenth
Date: Tue Oct 17 13:17:30 2017
New Revision: 253809

URL: https://gcc.gnu.org/viewcvs?rev=253809&root=gcc&view=rev
Log:
2017-10-17  Richard Biener  

PR tree-optimization/82563
* graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
New function.
(graphite_regenerate_ast_isl): Call it.
* graphite-scop-detection.c (build_scops): Remove entry edge split.

* gcc.dg/graphite/pr82563.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/graphite/pr82563.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/graphite-isl-ast-to-gimple.c
trunk/gcc/graphite-scop-detection.c
trunk/gcc/testsuite/ChangeLog

[Bug tree-optimization/71026] Missing division optimizations

2017-10-17 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71026

--- Comment #7 from Wilco  ---
Author: wilco
Date: Tue Oct 17 13:22:48 2017
New Revision: 253812

URL: https://gcc.gnu.org/viewcvs?rev=253812&root=gcc&view=rev
Log:
Factor out division by squares and remove division around comparisons (0/2)

Commit gcc/fold-const.c missing from r252827:

gcc/
PR 71026/tree-optimization
* fold-const.c (distribute_real_division): Removed.
(fold_binary_loc): Remove calls to distribute_real_divison.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c

[Bug ada/82573] GNAT.Registry doesn't read/write with HKEY_LOCAL_MACHINE.

2017-10-17 Thread hudsonjk at astound dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82573

--- Comment #2 from Jerry Hudson  ---
I was confused by what you meant by "classpath."  The
earlier revision by Andrew Pinski better describes the
problem, but I don't recall seeing that option on the form.
Forgive me, this is the first bug report for me.  (I have used
Gnu products quite a bit, and bugs are RARE.)

- Jerry Hudson

On 10/17/2017 2:03 AM, gnu_andrew at member dot fsf.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82573
>
> Andrew John Hughes  changed:
>
> What|Removed |Added
> 
>   CC||gnu_andrew at member dot 
> fsf.org
>
> --- Comment #1 from Andrew John Hughes  ---
> This doesn't seem to be related to GNU Classpath.
>

[Bug middle-end/82569] [8 regression] failure in 177.mesa cpu2000 test case after r253530

2017-10-17 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82569

--- Comment #4 from seurer at gcc dot gnu.org ---
extern void gl_write_texture_span( GLcontext *ctx,
   GLuint n, GLint x, GLint y, GLdepth z[],
   GLfloat s[], GLfloat t[], GLfloat u[],
   GLfloat lambda[],
   GLubyte red[], GLubyte green[],
   GLubyte blue[], GLubyte alpha[],
   GLenum primitive );

[Bug middle-end/82577] [8 Regression] ICE in compare_base_decls, at alias.c:2053

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82577

Nathan Sidwell  changed:

   What|Removed |Added

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

[Bug middle-end/80295] [7/8 Regression] ICE in __builtin_update_setjmp_buf expander

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80295

--- Comment #11 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 14:16:35 2017
New Revision: 253814

URL: https://gcc.gnu.org/viewcvs?rev=253814&root=gcc&view=rev
Log:
gcc/ChangeLog

2017-10-17  Qing Zhao 
Wilco Dijkstra 

* builtins.c (expand_builtin_update_setjmp_buf): Add a
converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao 
Wilco Dijkstra 

PR middle-end/80295
* gcc.target/aarch64/pr80295.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/aarch64/pr80295.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c

[Bug middle-end/80295] [7/8 Regression] ICE in __builtin_update_setjmp_buf expander

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80295

--- Comment #12 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 14:17:17 2017
New Revision: 253815

URL: https://gcc.gnu.org/viewcvs?rev=253815&root=gcc&view=rev
Log:
gcc/ChangeLog

2017-10-17  Qing Zhao 
Wilco Dijkstra 

* builtins.c (expand_builtin_update_setjmp_buf): Add a
converstion to Pmode from the buf_addr.

gcc/testsuite/ChangeLog

2017-10-17  Qing Zhao 
Wilco Dijkstra 

PR middle-end/80295
* gcc.target/aarch64/pr80295.c: New test.

Modified:
trunk/gcc/testsuite/ChangeLog

[Bug middle-end/80295] [7 Regression] ICE in __builtin_update_setjmp_buf expander

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80295

Paolo Carlini  changed:

   What|Removed |Added

Summary|[7/8 Regression] ICE in |[7 Regression] ICE in
   |__builtin_update_setjmp_buf |__builtin_update_setjmp_buf
   |expander|expander

--- Comment #13 from Paolo Carlini  ---
Fixed in trunk for the time being.

[Bug c++/77369] incorrect noexcept specification deduction

2017-10-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77369

Jason Merrill  changed:

   What|Removed |Added

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

[Bug tree-optimization/82549] [6/7 Regression] ICE at -O1 and above: verify_gimple failed

2017-10-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82549

--- Comment #4 from Jakub Jelinek  ---
Author: jakub
Date: Tue Oct 17 14:47:15 2017
New Revision: 253816

URL: https://gcc.gnu.org/viewcvs?rev=253816&root=gcc&view=rev
Log:
PR tree-optimization/82549
* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
Formatting fixes.  Instead of calling make_bit_field_ref with negative
bitpos return 0.

* gcc.c-torture/compile/pr82549.c: New test.

Added:
branches/gcc-7-branch/gcc/testsuite/gcc.c-torture/compile/pr82549.c
Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/fold-const.c
branches/gcc-7-branch/gcc/testsuite/ChangeLog

[Bug middle-end/82546] tree_size handling for TYPE nodes is confused

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82546

--- Comment #1 from Nathan Sidwell  ---
Author: nathan
Date: Tue Oct 17 14:49:05 2017
New Revision: 253817

URL: https://gcc.gnu.org/viewcvs?rev=253817&root=gcc&view=rev
Log:
[PATCH PR/82546] tree node size

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00899.html
PR middle-end/82546
gcc/
* tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
TYPE nodes.
gcc/cp/
* cp-objcp-common.c (cp_tree_size): Reformat.  Adjust returns size
of TYPE nodes.
gcc/objc/
* objc-act.c (objc_common_tree_size): Return size of TYPE nodes.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-objcp-common.c
trunk/gcc/objc/ChangeLog
trunk/gcc/objc/objc-act.c
trunk/gcc/tree.c

[Bug tree-optimization/82549] [6/7 Regression] ICE at -O1 and above: verify_gimple failed

2017-10-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82549

--- Comment #5 from Jakub Jelinek  ---
Author: jakub
Date: Tue Oct 17 14:53:13 2017
New Revision: 253818

URL: https://gcc.gnu.org/viewcvs?rev=253818&root=gcc&view=rev
Log:
PR tree-optimization/82549
* fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
Formatting fixes.  Instead of calling make_bit_field_ref with negative
bitpos return 0.

* gcc.c-torture/compile/pr82549.c: New test.

Added:
branches/gcc-6-branch/gcc/testsuite/gcc.c-torture/compile/pr82549.c
Modified:
branches/gcc-6-branch/gcc/ChangeLog
branches/gcc-6-branch/gcc/fold-const.c
branches/gcc-6-branch/gcc/testsuite/ChangeLog

[Bug tree-optimization/82581] New: missing -Warray-bounds on writing past the end of a member array

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82581

Bug ID: 82581
   Summary: missing -Warray-bounds on writing past the end of a
member array
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

When the bounds of a member array are exceeded in a loop that accesses the
member directly by its name, GCC issues a -Waggressive-loop-optimizations
warning mentioning the iteration of the loop in which the undefined behavior
occurs.  But when the same access takes place indirectly through a pointer to
the member, no diagnostic is issued.  Since the number of iterations of the
loop is known I would expect a -Warray-bounds warning (ideally in both cases,
even when no aggressive loop optimizations are performed).

As an aside, since the first iteration of a loop is usually thought of as
iteration 1 (not iteration zero), the iteration number referenced in the
-Waggressive-loop-optimizations warning is off by one.  Since the array has
three elements, iteration 3 writes into the last (third) element, and it's
iteration four that has undefined behavior.

$ cat a.c && gcc -O2 -S -Wall -Warray-bounds -Wextra a.c
struct S
{
  int a[3];
  void (*pf)(void);
} x;

void f (void)
{
  for (unsigned i = 0; i != sizeof x; ++i)   // -Waggressive-loop-optimizations
x.a[i] = i;
}

void g (void)
{
  int *p = x.a;

  for (unsigned i = 0; i != sizeof x; ++i)
p[i] = i;// missing -Warray-bounds
}
a.c: In function ‘f’:
a.c:10:12: warning: iteration 3 invokes undefined behavior
[-Waggressive-loop-optimizations]
 x.a[i] = i;
 ~~~^~~
a.c:9:3: note: within this loop
   for (unsigned i = 0; i != sizeof x; ++i)
   ^~~

[Bug tree-optimization/80907] [6/7/8 Regression] False positive: "warning: array subscript is above array bounds"

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80907

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Known to work||4.7.4
   Last reconfirmed||2017-10-17
  Component|c++ |tree-optimization
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
Summary|False positive: "warning:   |[6/7/8 Regression] False
   |array subscript is above|positive: "warning: array
   |array bounds"   |subscript is above array
   ||bounds"
  Known to fail||4.8.3, 4.9.3, 5.3.0, 6.2.0,
   ||7.1.0, 8.0

--- Comment #1 from Martin Sebor  ---
Confirmed.  I see the same warning issued twice.  The first revision to trigger
the warning is r192538 (gcc 4.8.0), thus marking this a regression.

$ cat a.c && gcc -O3 -S -Wall -Warray-bounds a.c

int x[3];
int n=2;
void foo() 
{
for(int i=0;i

[Bug middle-end/82286] [6/7/8 Regression] Wrong array subscript is above array bounds

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82286

Martin Sebor  changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org,
   ||msebor at gcc dot gnu.org
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=80907
Summary|Wrong array subscript is|[6/7/8 Regression] Wrong
   |above array bounds  |array subscript is above
   ||array bounds

--- Comment #5 from Martin Sebor  ---
The first revision to trigger the warning is r192538 (gcc 4.8.0), thus marking
this a regression.  (See also bug 80907 which is also caused by the same
revision.)

[Bug middle-end/63477] [6/7/8 Regression] Bogus warning with -O3 -Warray-bounds: array subscript is above array bounds

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63477

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-10-17
 CC||hubicka at gcc dot gnu.org,
   ||msebor at gcc dot gnu.org
  Known to work||4.7.4
Summary|Bogus warning with -O3  |[6/7/8 Regression] Bogus
   |-Warray-bounds: array   |warning with -O3
   |subscript is above array|-Warray-bounds: array
   |bounds  |subscript is above array
   ||bounds
 Ever confirmed|0   |1
  Known to fail||4.8.3, 4.9.3, 5.3.0, 6.2.0,
   ||7.1.0, 8.0

--- Comment #1 from Martin Sebor  ---
Confirmed.  The first revision to trigger the error is r192990 (gcc 4.8.0) so
marking this a regression.

[Bug middle-end/63441] incorrect "array subscript is below/above array bounds" diagnostic

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63441

Martin Sebor  changed:

   What|Removed |Added

 CC||msebor at gcc dot gnu.org

--- Comment #2 from Martin Sebor  ---
I still see the warning with today's top of trunk (GCC 4.8) but I agree that
some sort of a diagnostic here seems helpful.

It would be nice if the warning could distinguish between cases where the index
definitely is out of bounds and those where it could be but it's not 100%
certain.  I haven't looked at the implementation to see if this is feasible.

It would also be helpful to have clarity (both for users and GCC developers) on
what diagnostics are meant to be issued under what circumstances.  Based on
some other warnings (-Wuninitialized and -Wmaybe-uninitialized) it seems
reasonable to expect -Warray-bounds to only be issued when an index is
definitely out of bounds (and not when it could be).

[Bug tree-optimization/82549] [6/7 Regression] ICE at -O1 and above: verify_gimple failed

2017-10-17 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82549

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #6 from Jakub Jelinek  ---
Fixed for 6.5+, 7.3+ and 8+.

[Bug middle-end/82577] [8 Regression] ICE in compare_base_decls, at alias.c:2053

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82577

--- Comment #4 from Nathan Sidwell  ---
Author: nathan
Date: Tue Oct 17 15:42:19 2017
New Revision: 253819

URL: https://gcc.gnu.org/viewcvs?rev=253819&root=gcc&view=rev
Log:
[PATCH, middle-end/82577] Fix DECL_ASSEMBLER_NAME ICE

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01067.html
gcc/
PR middle-end/82577
* alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
use DECL_ASSEMBLER_NAME_RAW.

gcc/testsuite/
PR middle-end/82577
* g++.dg/opt/pr82577.C: New.

Added:
trunk/gcc/testsuite/g++.dg/opt/pr82577.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/alias.c
trunk/gcc/testsuite/ChangeLog

[Bug middle-end/82577] [8 Regression] ICE in compare_base_decls, at alias.c:2053

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82577

Nathan Sidwell  changed:

   What|Removed |Added

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

--- Comment #5 from Nathan Sidwell  ---
Fixed r253819.

[Bug c++/82560] [7/8 Regression] Temporary object created as a default argument not destructed

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82560

--- Comment #4 from Nathan Sidwell  ---
Author: nathan
Date: Tue Oct 17 15:52:21 2017
New Revision: 253820

URL: https://gcc.gnu.org/viewcvs?rev=253820&root=gcc&view=rev
Log:
[C++ PATCH 82560] missing dtor call

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01068.html
PR c++/82560
* call.c (build_over_call): Don't pass tf_no_cleanup to nested
calls.

PR c++/82560
* g++.dg/cpp0x/pr82560.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/pr82560.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/testsuite/ChangeLog

[Bug c++/82560] [7/8 Regression] Temporary object created as a default argument not destructed

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82560

Nathan Sidwell  changed:

   What|Removed |Added

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

--- Comment #5 from Nathan Sidwell  ---
Fixed r253820.

[Bug target/82582] New: not quite optimal code for -2*x*y - 3*z: could use one less LEA for smaller code without increasing critical path latency for any input

2017-10-17 Thread peter at cordes dot ca
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82582

Bug ID: 82582
   Summary: not quite optimal code for -2*x*y - 3*z: could use one
less LEA for smaller code without increasing critical
path latency for any input
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: peter at cordes dot ca
  Target Milestone: ---
Target: x86_64-*-*, i?86-*-*

int foo32(int x, int y, int z) {
return -2*x*y - 3*z;
}

gcc8.0.0 20171015 -O3   https://godbolt.org/g/tzBuHx

imull   %esi, %edi# x*y
leal0(,%rdx,4), %eax# needs a disp32 = 0
subl%eax, %edx# -3*z
negl%edi  # -(x*y)
leal(%rdx,%rdi,2), %eax   # result

LEA runs on limited ports, and an index with no base needs a 4-byte disp32 = 0.
The critical-path latencies, assuming 2-operand imul is 3 cycles like on Intel:

x->res: imul, neg, lea = 5c
y->res: imul, neg, lea = 5c
z->res:  lea, sub, lea = 3c

This is better than gcc6.3 / gcc7.2 (which uses 3 LEA and is generally worse). 
It's also different from gcc4/gcc5 (6c from x to result, but only 2c from z to
result, so it's different but not worse or better in all cases).


clang5.0 does better: same latencies, smaller code size, and trades one LEA for
an ADD:
imull   %esi, %edi
addl%edi, %edi
leal(%rdx,%rdx,2), %eax
negl%eax
subl%edi, %eax

x->res: imul, add, sub = 5c
y->res: imul, add, sub = 5c
z->res:  lea, neg, sub = 3c



related: poor code-gen for 32-bit code with this.  I haven't checked other
32-bit architectures.

long long foo64(int x, int y, int z) {
return -2LL*x*(long long)y - 3LL*(long long)z;
}
// also on the godbolt link

gcc -m32 uses a 3-operand imul-immediate for `-2`, but some clunky shifting for
`-3`.  There's also a mull in there.

clang5.0 -m32 makes very nice code, using a one-operand imul for -3 and just
shld/add + sub/sbb (plus some mov instructions).  One-operand mul/imul is 3
uops on Intel with 2 clock throughput, but ADC is 2 uops on Intel
pre-Broadwell, so it's nice to avoid that.

related: add %esi,%esi / sbb %edi,%edi  is an interesting way to sign-extend a
32-bit input into a pair of registers while doubling it.  However, if it starts
in eax,  cltd / add %eax,%eax is much better.  (sbb same,same is only
recognized as dep-breaking on AMD Bulldozer-family and Ryzen.  On Intel it has
a false dep on the old value of the register, not just CF).

[Bug tree-optimization/82583] New: missing -Warray-bounds on out-of-bounds inner indices

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82583

Bug ID: 82583
   Summary: missing -Warray-bounds on out-of-bounds inner indices
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The -Warray-bounds warning seems to only check the innermost array index but it
doesn't check any of intervening ones.  This can be seen in the test case below
where the out-of-bounds index in 'p->a[1].a[4]' in f() is detected but the
similarly out-of-bounds index in 'p->a[2]' is not.

$ cat a.c && gcc -O3 -S -Wall -Warray-bounds a.c 
struct A { int a[4]; int i; };
struct B { struct A a[2]; int i; };

void f (struct B *p)
{
  p->a[1].a[4] = 1;   // -Warray-bounds (good)
}

void g (struct B *p)
{
  p->a[2].a[3] = 1;   // missing -Warray-bounds
}

a.c: In function ‘f’:
a.c:6:12: warning: array subscript is above array bounds [-Warray-bounds]
   p->a[1].a[4] = 1;   // -Warray-bounds (good)
   ~^~~

[Bug middle-end/47418] warning: array subscript is above array bounds at O2 with sin6_addr

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47418

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||msebor at gcc dot gnu.org
 Resolution|--- |FIXED
  Known to fail||7.2.0, 8.0

--- Comment #5 from Martin Sebor  ---
No warnings with recent versions.  Given that resolving as fixed (also as per
comment #4).

[Bug tree-optimization/56456] [meta-bug] bogus warning when inlining or unrolling: "array subscript is above array bounds"

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456
Bug 56456 depends on bug 47418, which changed state.

Bug 47418 Summary: warning: array subscript is above array bounds at O2 with 
sin6_addr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47418

   What|Removed |Added

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

[Bug tree-optimization/56456] [meta-bug] bogus warning when inlining or unrolling: "array subscript is above array bounds"

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456
Bug 56456 depends on bug 45180, which changed state.

Bug 45180 Summary: bogus warning: array subscript is above array bounds
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45180

   What|Removed |Added

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

[Bug tree-optimization/45180] bogus warning: array subscript is above array bounds

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45180

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||msebor at gcc dot gnu.org
  Known to work||5.4.0, 6.4.0, 7.1.0, 8.0
 Resolution|--- |FIXED
  Known to fail||4.8.3, 4.9.3

--- Comment #4 from Martin Sebor  ---
The test case doesn't trigger a warning with recent GCC.  Bisection points to 
r220157 (gcc 5.0.0) as the fix.  Thus resolving as fixed.

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

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

Bug ID: 82584
   Summary: div by zero in random distribution
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nathan at gcc dot gnu.org
  Target Milestone: ---

Created attachment 42384
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42384&action=edit
compile with -fsanitize=float-divide-by-zero

the attached program, when using ubsan generates:
/data/users/nathans/trunk/obj/x86_64/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/random.tcc:88:25:
runtime error: division by zero

line 88 is:
  *__result = *__first / __factor;

and both *__first and __factor are zero.  We end up at:
   0x0040314c <+171>:   movsd  -0x40(%rbp),%xmm0
   0x00403151 <+176>:   divsd  -0x38(%rbp),%xmm0
   0x00403156 <+181>:   movsd  %xmm0,-0x38(%rbp)
where both the operands are zero

Not sure if this is user error in that feeding vector{0,0} to
discrete_distribution is valid or not.

[Bug tree-optimization/38480] bogus warning with -O3 -Wall: "array subscript is above array bounds"

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38480

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||msebor at gcc dot gnu.org
  Known to work||7.2.0, 8.0
 Resolution|--- |FIXED
  Known to fail||4.9.4, 5.4.0, 6.3.0

--- Comment #3 from Martin Sebor  ---
There is no warning since r239421 (gcc 7.0.0) and function f() is optimized
into a no-op, so resolving as fixed.

[Bug tree-optimization/56456] [meta-bug] bogus warning when inlining or unrolling: "array subscript is above array bounds"

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456
Bug 56456 depends on bug 38480, which changed state.

Bug 38480 Summary: bogus warning with -O3 -Wall: "array subscript is above 
array bounds"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38480

   What|Removed |Added

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

[Bug middle-end/52504] (unreachable) out of bounds access in thread_prologue_and_epilogue_insns

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52504

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |WAITING
   Last reconfirmed|2013-02-25 00:00:00 |2017-10-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
It's been a few years since this report was opened.  Can you please check with
a recent version of GCC whether the warning still occurs?  If it does, can in
addition reduce it to a small test case and include it in your comment?

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

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82584

--- Comment #1 from Nathan Sidwell  ---
The make_unique bit's irrelevant:
 std::discrete_distribution X (weights.begin(), weights.end());
is sufficient.

Reading 29.6.8.6.1 suggests the code is well formed, but all (two) probabilites
are zero

[Bug middle-end/82556] [7/8 Regression] internal compiler error in curr_insn_transform, at lra-constraints.c:4307

2017-10-17 Thread vmakarov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82556

--- Comment #4 from Vladimir Makarov  ---
(In reply to Richard Biener from comment #3)
> Confirmed on the branch (for the unreduced testcase).  GCC 7.2 works.
> 
> Probably Jakubs pattern changes.

It is an unusual pattern for LRA.  I guess it should be fixed in LRA.  I'll
investigate the problem and try to find a fix in LRA.

[Bug fortran/82550] program using submodules fails to link

2017-10-17 Thread pault at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82550

--- Comment #2 from Paul Thomas  ---
(In reply to Dominique d'Humieres from comment #1)
> Confirmed from 6.4 up to trunk (8.0).

Adding a reference to 'p' in 'foo' clears the problem.

module subroutine foo(fun_ptr)
  procedure(p), pointer, intent(out) :: fun_ptr
   call p()
  fun_ptr => p
end subroutine

I rather think that the pointer assignment is not setting 'p' as referenced.

Investigating.

Paul

[Bug middle-end/82546] tree_size handling for TYPE nodes is confused

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82546

Nathan Sidwell  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2017-10-17
 Ever confirmed|0   |1

[Bug tree-optimization/82585] New: missing -Warray-bounds calling strlen on a member at out-of-bounds offfset

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82585

Bug ID: 82585
   Summary: missing -Warray-bounds calling strlen on a member at
out-of-bounds offfset
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The following test case should trigger two instances of -Warray-bounds, one in
each function, but it only triggers one.

$ cat a.c && gcc -O2 -S -Wall -Warray-bounds a.c 
struct A { char a[3]; int i; };

extern char a[3];

int f1 (void)
{
  return __builtin_strlen (a + 4);   // -Warray-bounds (good)
}

int f2 (struct A *p)
{
  return __builtin_strlen (p->a + 4);   // missing -Warray-bounds
}

a.c: In function ‘f1’:
a.c:7:10: warning: array subscript is above array bounds [-Warray-bounds]
   return __builtin_strlen (a + 4);   // -Warray-bounds (good)
  ^~~~

[Bug c++/82560] [7/8 Regression] Temporary object created as a default argument not destructed

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82560

--- Comment #7 from Nathan Sidwell  ---
Fixed on gcc-7 branch r253822.

[Bug c++/82560] [7/8 Regression] Temporary object created as a default argument not destructed

2017-10-17 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82560

--- Comment #6 from Nathan Sidwell  ---
Author: nathan
Date: Tue Oct 17 17:27:11 2017
New Revision: 253822

URL: https://gcc.gnu.org/viewcvs?rev=253822&root=gcc&view=rev
Log:
[C++ PATCH 82560] missing dtor call

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01068.html
PR c++/82560
* call.c (build_over_call): Don't pass tf_no_cleanup to nested
calls.

PR c++/82560
* g++.dg/cpp0x/pr82560.C: New.

Added:
branches/gcc-7-branch/gcc/testsuite/g++.dg/cpp0x/pr82560.C
Modified:
branches/gcc-7-branch/gcc/cp/ChangeLog
branches/gcc-7-branch/gcc/cp/call.c
branches/gcc-7-branch/gcc/testsuite/ChangeLog

[Bug fortran/82586] New: ICE: write_symbol(): bad module symbol

2017-10-17 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82586

Bug ID: 82586
   Summary: ICE: write_symbol(): bad module symbol
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gs...@t-online.de
  Target Milestone: ---

I recently did some tests with the very new PDT feature
to generate some tiny, disruptive test cases :


$ cat z1.f90
module m
   type t(a)
   end type
end


$ gfortran-8-20171015 -c z1.f90
f951: internal compiler error: write_symbol(): bad module symbol 'a'
0x68da6f gfc_internal_error(char const*, ...)
../../gcc/fortran/error.c:1349
0x6ca032 write_symbol
../../gcc/fortran/module.c:5612
0x6ca07b write_symbol1_recursion
../../gcc/fortran/module.c:5839
0x6cce75 write_symbol1
../../gcc/fortran/module.c:5872
0x6cce75 write_module
../../gcc/fortran/module.c:6016
0x6cce75 dump_module
../../gcc/fortran/module.c:6143
0x6cd0fd gfc_dump_module(char const*, int)
../../gcc/fortran/module.c:6200
0x6e6a56 gfc_parse_file()
../../gcc/fortran/parse.c:6241
0x72a6bf gfc_be_parse_file
../../gcc/fortran/f95-lang.c:204

[Bug fortran/82586] ICE: write_symbol(): bad module symbol

2017-10-17 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82586

--- Comment #1 from G. Steinmetz  ---

Other invalid snippets :


$ cat z2.f90
program p
   type t(a
  integer, kind :: a
  real(a) :: x
   end type
end


$ cat z3.f90
program p
   type t(a, a)
  integer, kind :: a
  integer, len :: a
   end type
end


$ gfortran-8-20171015 -c z2.f90
f951: internal compiler error: Segmentation fault
0xb5a08f crash_signal
../../gcc/toplev.c:326
0x66322b delete_root
../../gcc/fortran/bbt.c:150
0x6633fe gfc_delete_bbt(void*, void*, int (*)(void*, void*))
../../gcc/fortran/bbt.c:197
0x71b008 gfc_delete_symtree(gfc_symtree**, char const*)
../../gcc/fortran/symbol.c:2829
0x71c786 gfc_restore_last_undo_checkpoint()
../../gcc/fortran/symbol.c:3598
0x6db9d7 reject_statement
../../gcc/fortran/parse.c:2546
0x6dbaec match_word_omp_simd
../../gcc/fortran/parse.c:98
0x6dfadb match_word
../../gcc/fortran/parse.c:565
0x6dfadb decode_statement
../../gcc/fortran/parse.c:565
0x6e0fb4 next_free
../../gcc/fortran/parse.c:1225
0x6e0fb4 next_statement
../../gcc/fortran/parse.c:1457
0x6e2ddc parse_spec
../../gcc/fortran/parse.c:3648
0x6e4d93 parse_progunit
../../gcc/fortran/parse.c:5634
0x6e6354 gfc_parse_file()
../../gcc/fortran/parse.c:6174
0x72a6bf gfc_be_parse_file
../../gcc/fortran/f95-lang.c:204

[Bug fortran/82586] ICE: write_symbol(): bad module symbol

2017-10-17 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82586

Dominique d'Humieres  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-10-17
 CC||pault at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres  ---
Confirmed on trunk (8.0).

[Bug c/81404] suggested hints for standard C macros should avoid GCC predefined macros

2017-10-17 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81404

--- Comment #5 from David Malcolm  ---
Candidate patch:
  https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01083.html

[Bug fortran/82587] New: ICE in get_pdt_constructor, at fortran/resolve.c:1185

2017-10-17 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82587

Bug ID: 82587
   Summary: ICE in get_pdt_constructor, at fortran/resolve.c:1185
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gs...@t-online.de
  Target Milestone: ---

Another piece of invalid code :


$ cat z1.f90
program p
   type t(a)
  integer(kind=t()) :: x
   end type
end


$ gfortran-8-20171015 -c z1.f90
f951: internal compiler error: in get_pdt_constructor, at
fortran/resolve.c:1185
0x6ed6e5 get_pdt_constructor
../../gcc/fortran/resolve.c:1185
0x7037be resolve_structure_cons
../../gcc/fortran/resolve.c:1247
0x6f31ba resolve_generic_f
../../gcc/fortran/resolve.c:2697
0x6f31ba resolve_function
../../gcc/fortran/resolve.c:3120
0x6f350a gfc_resolve_expr(gfc_expr*)
../../gcc/fortran/resolve.c:6608
0x6916ef gfc_reduce_init_expr(gfc_expr*)
../../gcc/fortran/expr.c:2696
0x6940d1 gfc_match_init_expr(gfc_expr**)
../../gcc/fortran/expr.c:2744
0x679605 gfc_match_kind_spec(gfc_typespec*, bool)
../../gcc/fortran/decl.c:2710
0x67faa2 gfc_match_decl_type_spec(gfc_typespec*, int)
../../gcc/fortran/decl.c:4053
0x68115c gfc_match_data_decl()
../../gcc/fortran/decl.c:5605
0x6dbac9 match_word_omp_simd
../../gcc/fortran/parse.c:93
0x6df17e match_word
../../gcc/fortran/parse.c:376
0x6df17e decode_statement
../../gcc/fortran/parse.c:376
0x6e0fb4 next_free
../../gcc/fortran/parse.c:1225
0x6e0fb4 next_statement
../../gcc/fortran/parse.c:1457
0x6e252d parse_derived
../../gcc/fortran/parse.c:3252
0x6e252d parse_spec
../../gcc/fortran/parse.c:3792
0x6e4d93 parse_progunit
../../gcc/fortran/parse.c:5634
0x6e6354 gfc_parse_file()
../../gcc/fortran/parse.c:6174
0x72a6bf gfc_be_parse_file
../../gcc/fortran/f95-lang.c:204

[Bug tree-optimization/82588] New: missing -Warray-bounds on a excessively large index

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82588

Bug ID: 82588
   Summary: missing -Warray-bounds on a excessively large index
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

GCC fails to issue a -Warray-bounds warning for indices so large that they
cannot be valid even for the largest objects.

In function f0() below, GCC recognizes that the signed distance between the
beginning of the array and the end pointer cannot be positive and transforms
the function into an unconditional call to abort, but it doesn't issue any sort
of a diagnostic.  -Warray-bounds would seem to be appropriate here.  Likewise
in function f1().

Similarly in function f2(), the size of the member array cannot be half the
address space because it would leave no room for the remaining members of the
same struct.  So again, -Warray-bounds could be issued for this pathological
case.  The comment in check_array_ref that reads "Can not check flexible
arrays." indicates the absence of checking for flexible array members is
intentional, but it can be tightened up to detect these boundary conditions.

$ cat a.c && gcc -O2 -S -Wall -Warray-bounds -fdump-tree-optimized=/dev/stdout
a.c 
struct A { int n; char a[]; };

void f0 (void)
{
  extern int a[];

  int *e = a + __SIZE_MAX__ / sizeof (int) + 1;   // missing warning

  if (e - a <= 0)
__builtin_abort ();
}

int f1 (void)
{
  extern int a[];

  return a[__SIZE_MAX__ / sizeof (int) + 1];   // missing -Warray-bounds
}

int f2 (struct A *a)
{
  return a->a[__SIZE_MAX__ / 2];   // missing -Warray-bounds
}

;; Function f0 (f0, funcdef_no=0, decl_uid=1834, cgraph_uid=0, symbol_order=0)
(unlikely executed)

f0 ()
{
   [100.00%] [count: 0]:
  __builtin_abort ();

}



;; Function f1 (f1, funcdef_no=1, decl_uid=1840, cgraph_uid=1, symbol_order=1)

f1 ()
{
  int _2;

   [100.00%] [count: INV]:
  _2 = a[4611686018427387904];
  return _2;

}



;; Function f2 (f2, funcdef_no=2, decl_uid=1845, cgraph_uid=2, symbol_order=2)

f2 (struct A * a)
{
  char _1;
  int _4;

   [100.00%] [count: INV]:
  _1 = a_3(D)->a[9223372036854775807];
  _4 = (int) _1;
  return _4;

}

[Bug tree-optimization/82588] missing -Warray-bounds on a excessively large index

2017-10-17 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82588

Martin Sebor  changed:

   What|Removed |Added

   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=68325

--- Comment #1 from Martin Sebor  ---
See also bug 68325 for a similar report of -Warray-bounds failing to detect
negative indices into flexible array members.

[Bug fortran/82589] New: ICE in gfc_get_pdt_instance, at fortran/decl.c:3278

2017-10-17 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82589

Bug ID: 82589
   Summary: ICE in gfc_get_pdt_instance, at fortran/decl.c:3278
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gs...@t-online.de
  Target Milestone: ---

A combination of type-param-attr-spec LEN or KIND with another 
attribute like PRIVATE conflicts with f2008 4.5.3.1 :


$ cat z1.f90
module m
   type t(a)
  integer, len, private :: a
   end type
end
program p
   use m
   type(t(a=:)), allocatable :: x
   print *, x
end


$ gfortran-8-20171015 -c z1.f90
f951: internal compiler error: Segmentation fault
0xb5a08f crash_signal
../../gcc/toplev.c:326
0x67a008 gfc_get_pdt_instance(gfc_actual_arglist*, gfc_symbol**,
gfc_actual_arglist**)
../../gcc/fortran/decl.c:3278
0x680221 gfc_match_decl_type_spec(gfc_typespec*, int)
../../gcc/fortran/decl.c:3787
0x68115c gfc_match_data_decl()
../../gcc/fortran/decl.c:5605
0x6dbac9 match_word_omp_simd
../../gcc/fortran/parse.c:93
0x6df17e match_word
../../gcc/fortran/parse.c:376
0x6df17e decode_statement
../../gcc/fortran/parse.c:376
0x6e0fb4 next_free
../../gcc/fortran/parse.c:1225
0x6e0fb4 next_statement
../../gcc/fortran/parse.c:1457
0x6e289c parse_spec
../../gcc/fortran/parse.c:3831
0x6e4d93 parse_progunit
../../gcc/fortran/parse.c:5634
0x6e6354 gfc_parse_file()
../../gcc/fortran/parse.c:6174
0x72a6bf gfc_be_parse_file
../../gcc/fortran/f95-lang.c:204

[Bug fortran/82589] ICE in gfc_get_pdt_instance, at fortran/decl.c:3278

2017-10-17 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82589

--- Comment #1 from G. Steinmetz  ---

These variants are processed without any complaints :


$ cat z2.f90
module m
   type t(a)
  integer, len, private :: a
   end type
end
program p
   use m
   type(t(:)), allocatable :: x
   print *, x
end


$ cat z3.f90
module m
   type t(a)
  integer, len, private :: a
   end type
end
program p
   use m
   type(t(2)) :: x
   print *, x
end


$ gfortran-8-20171015 -g -O0 -Wall -Wextra -c z2.f90
$ gfortran-8-20171015 -g -O0 -Wall -Wextra -c z3.f90
$

[Bug c/82542] -fdump-lang-raw (formerly -fdump-translation-unit) no longer available for C

2017-10-17 Thread b.r.longbons at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82542

--- Comment #9 from Ben Longbons  ---
The ones I've filed are: #54533, #58150, #80466

But there are quite a few more at
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=__open__&component=debug&list_id=190134&product=gcc

[Bug libstdc++/82554] uniform_real_distribution can generate the upper endpoint

2017-10-17 Thread b.r.longbons at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82554

--- Comment #3 from Ben Longbons  ---
There is DR2524 for the [0, 1) case. Otherwise, filing bugs there looks really
complicated.

I've given you a reproducer. That's as much as I'm capable of.

[Bug fortran/82586] ICE: write_symbol(): bad module symbol

2017-10-17 Thread pault at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82586

Paul Thomas  changed:

   What|Removed |Added

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

--- Comment #3 from Paul Thomas  ---
Thanks - they are now on the todo list :-)

Paul

[Bug other/82590] New: auto-host.h error: declaration does not declare anything

2017-10-17 Thread bastl at eclipso dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82590

Bug ID: 82590
   Summary: auto-host.h error: declaration does not declare
anything
   Product: gcc
   Version: 7.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bastl at eclipso dot de
  Target Milestone: ---

Compiling GCC-7.2.0 with:

gcc (GCC) 6.3.0
libtool (GNU libtool) 2.4.6
GNU Make 4.2.1
GNU ld (GNU Binutils) 2.29
GNU Awk 4.1.4
perl 5, version 26, subversion 0 (v5.26.0)
bison (GNU Bison) 3.0.4
ldd (GNU libc) 2.26
GNU bash, version 4.4.12(2)-release

on and for:

i686-pc-linux-gnu

breaks with this error (./gcc):

checking for strings.h... yes
checking for inttypes.h... In file included from /usr/include/stdlib.h:707:0,
 from /mnt/usb6/prog/7.91_gcc-7/gcc-7.2.0/./gcc/system.h:258,
 from /mnt/usb6/prog/7.91_gcc-7/gcc-7.2.0/./gcc/genhooks.c:21:
/usr/include/bits/stdlib-bsearch.h: In function 'void* bsearch(const void*,
const void*, size_t, size_t, __compar_fn_t)':
/usr/include/bits/stdlib-bsearch.h:32:65: warning: cast from type 'const char*'
to type 'void*' casts away qualifiers [-Wcast-qual]
   __p = (void *) (((const char *) __base) + (__idx * __size));
 ^
/usr/include/bits/stdlib-bsearch.h:39:18: warning: cast from type 'const void*'
to type 'void*' casts away qualifiers [-Wcast-qual]
  return (void *) __p;
  ^~~
In file included from /usr/include/bits/fcntl.h:61:0,
 from /usr/include/fcntl.h:35,
 from /mnt/usb6/prog/7.91_gcc-7/gcc-7.2.0/./gcc/system.h:349,
 from /mnt/usb6/prog/7.91_gcc-7/gcc-7.2.0/./gcc/genhooks.c:21:
/usr/include/bits/fcntl-linux.h: At global scope:
/usr/include/bits/fcntl-linux.h:330:27: warning: ISO C++ forbids zero-size
array 'f_handle' [-Wpedantic]
   unsigned char f_handle[0];
   ^
In file included from ./bconfig.h:3:0,
 from /mnt/usb6/prog/7.91_gcc-7/gcc-7.2.0/./gcc/genhooks.c:20:
./auto-host.h:2357:16: error: declaration does not declare anything
[-fpermissive]
 #define rlim_t long
^
/usr/include/bits/resource.h:133:20: note: in expansion of macro 'rlim_t'
 typedef __rlim64_t rlim_t;

[Bug tree-optimization/82591] New: [8 Regression] [graphite] Compile-time hog w/ -O2 -floop-nest-optimize

2017-10-17 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82591

Bug ID: 82591
   Summary: [8 Regression] [graphite] Compile-time hog w/ -O2
-floop-nest-optimize
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Keywords: compile-time-hog
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: asolokha at gmx dot com
  Target Milestone: ---

gcc-8.0.0-alpha20171015 snapshot (r253772) takes about 25 s to compile the
following snippet w/ -O2 -floop-nest-optimize on my machine:

unsigned int dd;

unsigned int
hi (unsigned int s1, int w0, int ym, unsigned short int oy)
{
  int *v1;

  if (w0 == 0)
v1 = &w0;
  else
{
  int *fr;

  v1 = &ym;

  for (w0 = 0; w0 < 128; ++w0)
{
  int r8;

  for (r8 = 0; r8 < 3; ++r8)
{
  fr = (int *)ⅆ
  oy -= 0x201;
  s1 = oy <= 1;
  ym += dd;
  if (s1 != 0)
{
  int x8;

  *fr = 0;
  x8 = ym / *fr;
}
}
}
}

  if (s1 == (((*v1 != 0) ? s1 : 0) - (1 / 0)))
s1 = 0;

  return s1;
}

% time gcc-8.0.0-alpha20171015 -O2 -floop-nest-optimize -w -c yaqk7feq.c
gcc-8.0.0-alpha20171015 -O2 -floop-nest-optimize -w -c yaqk7feq.c  21.80s user
0.02s system 92% cpu 23.709 total

On this machine I have gmp 6.1.2 and isl 0.18 installed.

9.37%  libgmp.so.10.3.2  [.] __gmpz_divexact
9.16%  libgmp.so.10.3.2  [.] __gmpz_mul
8.06%  libisl.so.15.3.0  [.] isl_tab_pivot
7.62%  libgmp.so.10.3.2  [.] __gmpz_aorsmul_1
7.59%  libgmp.so.10.3.2  [.] __gmpn_gcd_1
5.28%  libgmp.so.10.3.2  [.] __gmpn_modexact_1_odd
5.17%  libgmp.so.10.3.2  [.] __gmpn_divexact_1
4.51%  libgmp.so.10.3.2  [.] __gmpz_cmpabs
4.27%  libgmp.so.10.3.2  [.] __gmpn_mul_1
4.26%  libgmp.so.10.3.2  [.] __gmpz_gcd
2.75%  libgmp.so.10.3.2  [.] __gmpn_divexact
2.66%  libisl.so.15.3.0  [.] isl_seq_gcd
2.53%  libisl.so.15.3.0  [.] isl_seq_abs_min_non_zero
2.05%  libgmp.so.10.3.2  [.] __gmpz_cmp_ui
1.91%  libgmp.so.10.3.2  [.] __gmpz_addmul
1.31%  libgmp.so.10.3.2  [.] __gmpn_gcd
1.25%  libgmp.so.10.3.2  [.] __gmpn_copyi
1.04%  libisl.so.15.3.0  [.] isl_seq_scale_down
0.91%  libgmp.so.10.3.2  [.] __gmpn_submul_1
0.77%  libisl.so.15.3.0  [.] isl_tab_var_from_row
0.69%  libgmp.so.10.3.2  [.] __gmpz_set
0.64%  libisl.so.15.3.0  [.] isl_tab_row_is_redundant
0.50%  libgmp.so.10.3.2  [.] 0x0005a3fd
0.42%  libgmp.so.10.3.2  [.] __gmpn_addmul_1
0.39%  libgmp.so.10.3.2  [.] 0x0005a3f0
0.38%  libgmp.so.10.3.2  [.] 0x0005a5e3
0.35%  libgmp.so.10.3.2  [.] __gmpn_divexact@plt
0.35%  libgmp.so.10.3.2  [.] __gmpn_rshift
0.32%  libgmp.so.10.3.2  [.] 0x0005a254
0.32%  libc-2.25.so  [.] _int_malloc
0.31%  libisl.so.15.3.0  [.] isl_seq_normalize
0.30%  libisl.so.15.3.0  [.] isl_seq_combine

[Bug c++/64611] Using a << operator inside an overloaded << operator gives compile error

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64611

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.0

--- Comment #7 from Paolo Carlini  ---
Fixed looong time ago, in 5.1.0.

[Bug middle-end/82569] [8 regression] failure in 177.mesa cpu2000 test case after r253530

2017-10-17 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82569

--- Comment #5 from seurer at gcc dot gnu.org ---
Created attachment 42385
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42385&action=edit
test case that shows the problem

This is a cut down single function test case that shows the problem.  I tried
cutting out more but it changed how the code was generated too much to show the
issue.

Compile it with a powerpc compiler built with -mcpu=power6 or power6x

~/gcc/install/gcc-test2/bin/gcc -O3 -S -o bad.s bad.c

And look for the srawi that shifts by 13.  I changed it from 11 to make it
easier to find because there are other shifts by 11.  Then trace the result on
its way to the function call.

I see:

303:srawi 10,31,13

305:stw 10,29148(1)

325:ld 16,29144(1)

332:mr 27,16

545:mr 6,27
546:bl gl_write_texture_span

[Bug c++/65970] [C++14] Endless loop with constexpr

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65970

Paolo Carlini  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 CC|jason at gcc dot gnu.org   |
 Resolution|--- |FIXED
   Target Milestone|--- |7.0

--- Comment #4 from Paolo Carlini  ---
We can resolve this as fixed in 7.1.0, I believe.

[Bug c++/67735] internal compiler error while trying to use __direct_bases to create parallel hierarchy of classes

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67735

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-10-17
 Ever confirmed|0   |1

[Bug c++/70377] "unexpected AST" and "confused by earlier errors, bailing out" from throw in simple constexpr fn

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70377

Paolo Carlini  changed:

   What|Removed |Added

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

--- Comment #3 from Paolo Carlini  ---
Ok, I think we can close this one (about the ICE) as fixed for 6.1.0.

[Bug c++/70377] "unexpected AST" and "confused by earlier errors, bailing out" from throw in simple constexpr fn

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70377

Paolo Carlini  changed:

   What|Removed |Added

   Target Milestone|--- |6.0

[Bug c++/82478] Rejects valid access to private member type that should be allowed by friend

2017-10-17 Thread eieio at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82478

--- Comment #4 from Corey Tabaka  ---
Ah, you are right. Late night mixup...

The outer class friend should work though, correct?

[Bug c++/71251] [6/7/8 regression] ICE on invalid code, with unusual template name

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71251

--- Comment #5 from Paolo Carlini  ---
Related to PR71220.

[Bug c++/71368] [concepts] ICE on constrained compound requirement

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71368

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |6.2

--- Comment #2 from Paolo Carlini  ---
Fixed in 6.2.0.

[Bug c++/71368] [concepts] ICE on constrained compound requirement

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71368

--- Comment #1 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 19:36:49 2017
New Revision: 253826

URL: https://gcc.gnu.org/viewcvs?rev=253826&root=gcc&view=rev
Log:
2017-10-17  Paolo Carlini  

PR c++/71368
* g++.dg/concepts/pr71368.C: New.

Added:
trunk/gcc/testsuite/g++.dg/concepts/pr71368.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug c++/71821] [6/7/8 regression] ICE on invalid C++11 code (incorrect argument for alignas): unexpected expression ‘f’ of kind template_id_expr

2017-10-17 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71821

--- Comment #6 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Tue Oct 17 19:49:06 2017
New Revision: 253828

URL: https://gcc.gnu.org/viewcvs?rev=253828&root=gcc&view=rev
Log:
2017-10-17  Paolo Carlini  

PR c++/71821
* g++.dg/cpp0x/alignas12.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/alignas12.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug c++/71821] [6/7/8 regression] ICE on invalid C++11 code (incorrect argument for alignas): unexpected expression ‘f’ of kind template_id_expr

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71821

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|6.5 |7.0

--- Comment #7 from Paolo Carlini  ---
Given that this is only an ICE on invalid, I think at this time we can close it
as fixed for 7.1.0.

[Bug c++/58601] [meta-bug] alignas

2017-10-17 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58601
Bug 58601 depends on bug 71821, which changed state.

Bug 71821 Summary: [6/7/8 regression] ICE on invalid C++11 code (incorrect 
argument for alignas): unexpected expression ‘f’ of kind template_id_expr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71821

   What|Removed |Added

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

[Bug target/82592] New: [8 Regression] ICE in extract_constrain_insn, at recog.c:2207 (error: insn does not satisfy its constraints)

2017-10-17 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82592

Bug ID: 82592
   Summary: [8 Regression] ICE in extract_constrain_insn, at
recog.c:2207 (error: insn does not satisfy its
constraints)
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: asolokha at gmx dot com
  Target Milestone: ---
Target: x86_64-unknown-linux-gnu

gcc-8.0.0-alpha20171015 snapshot (r253772) ICEs when compiling the following
snippet w/ -O2 (-O3, -Ofast) -funroll-loops:

int pb;

void
ch (unsigned char np, char fc)
{
  unsigned char *y6 = &np;

  if (fc != 0)
{
  unsigned char *z1 = &np;

  for (;;)
if (*y6 != 0)
  for (fc = 0; fc < 12; ++fc)
{
  int hh;
  int tp;

  if (fc != 0)
hh = (*z1 != 0) ? fc : 0;
  else
hh = pb;

  tp = fc > 0;
  if (hh == tp)
*y6 = 1;
}
}

  if (np != 0)
y6 = (unsigned char *)&fc;
  if (pb != 0 && *y6 != 0)
for (;;)
  {
  }
}

% x86_64-unknown-linux-gnu-gcc-8.0.0-alpha20171015 -O2 -funroll-loops -c
id5cyx54.c
id5cyx54.c: In function 'ch':
id5cyx54.c:36:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 565 340 357 42 (parallel [
(set (reg:CCZ 17 flags)
(compare:CCZ (plus:SI (reg:SI 2 cx [120])
(const_int 2 [0x2]))
(const_int 0 [0])))
(set (reg:SI 1 dx [orig:91 ivtmp.14 ] [91])
(plus:SI (reg:SI 2 cx [120])
(const_int 2 [0x2])))
]) 225 {*addsi_2}
 (nil))
during RTL pass: rnreg
id5cyx54.c:36:1: internal compiler error: in extract_constrain_insn, at
recog.c:2207

  1   2   >