[Bug fortran/85938] Spurious assert failure for matmul with reshaped array

2018-06-02 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85938

kargl at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P4
 Status|WAITING |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |9.0

--- Comment #3 from kargl at gcc dot gnu.org ---
Code has been converted to something suitable for
the testsuite and committed.  Thanks for the bug
report.

[Bug fortran/85938] Spurious assert failure for matmul with reshaped array

2018-06-02 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85938

--- Comment #2 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Sun Jun  3 05:23:59 2018
New Revision: 261125

URL: https://gcc.gnu.org/viewcvs?rev=261125&root=gcc&view=rev
Log:
2018-06-02  Steven G. Kargl  

PR fortran/85938
* gfortran.dg/pr85938.f90: Fixed by revision r261081

Added:
trunk/gcc/testsuite/gfortran.dg/pr85938.f90
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug target/86031] bootstrap comparison failure on solaris i386

2018-06-02 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86031

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #1 from Andrew Pinski  ---
Dup of bug 85994.

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

[Bug target/85994] Comparison failure in 64-bit libgcc *_{sav,res}ms64*.o on Solaris/x86

2018-06-02 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85994

Andrew Pinski  changed:

   What|Removed |Added

 CC||subscribe at teskor dot de

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

[Bug tree-optimization/86035] New: wrong code at -O2 and -O3 on x86_64-linux-gnu

2018-06-02 Thread su at cs dot ucdavis.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86035

Bug ID: 86035
   Summary: wrong code at -O2 and -O3 on x86_64-linux-gnu
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu
  Target Milestone: ---

This appears to be a recent regression, and might be the same as or related to
PR 86034. 

$ gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/home/su/software/tmp/gcc/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/9.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto
--prefix=/home/su/software/tmp/gcc/gcc-trunk --disable-bootstrap
Thread model: posix
gcc version 9.0.0 20180602 (experimental) [trunk revision 261116] (GCC) 
$ 
$ gcctk -O0 small.c; ./a.out
 $ 
$ 
$ gcctk -O2 small.c
$ ./a.out
 Aborted (core dumped)
$ 


-


int printf (const char *, ...);

struct
{
  int a:2;
  int b:9;
} c = { -1, 0 };

int d, e;

void f ()
{
  printf (" ");
  if (d < 1)
e = -1;
  c.b = 0;
  c.a = e;
}

int main ()
{
  f ();
  if (c.b != 0)
__builtin_abort (); 
  return 0; 
}

[Bug c++/85761] [8/9 Regression] ICE on invalid in rtl with uncaptured constexpr

2018-06-02 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85761

--- Comment #2 from Jason Merrill  ---
Author: jason
Date: Sun Jun  3 01:01:47 2018
New Revision: 261121

URL: https://gcc.gnu.org/viewcvs?rev=261121&root=gcc&view=rev
Log:
PR c++/85761 - ICE with ill-formed use of const outer variable.

* expr.c (mark_use): Handle location wrappers.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const8.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/expr.c

[Bug fortran/85996] f951: internal compiler error: gfc_trans_select(): Bad type for case expr.

2018-06-02 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85996

--- Comment #2 from kargl at gcc dot gnu.org ---
Created attachment 44225
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44225&action=edit
reduced testcase

[Bug c++/85739] [8/9 Regression] internal compiler error: in finish_member_declaration, at cp/semantics.c:3057

2018-06-02 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85739

Jason Merrill  changed:

   What|Removed |Added

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

[Bug tree-optimization/86034] New: wrong code at -Os on x86-64-linux-gnu in 64-bit mode

2018-06-02 Thread su at cs dot ucdavis.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86034

Bug ID: 86034
   Summary: wrong code at -Os on x86-64-linux-gnu in 64-bit mode
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu
  Target Milestone: ---

This appears to be a recent regression. 


$ gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/home/su/software/tmp/gcc/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/9.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto
--prefix=/home/su/software/tmp/gcc/gcc-trunk --disable-bootstrap
Thread model: posix
gcc version 9.0.0 20180602 (experimental) [trunk revision 261116] (GCC) 
$ 
$ gcctk -O1 small.c; ./a.out
$ 
$ gcctk -Os small.c
$ ./a.out
Aborted (core dumped)
$ 


---


struct A
{
  int b;
  int c:24;
  int d:10;
  int e;
} f;

int g; 

void h ()
{
  struct A i = { 0, 0, -1, 0 };
L:
  f = i;
  i.d = 0;
  if (g < 0)
goto L;
}

int main ()
{
  h ();
  if (f.e != 0) 
__builtin_abort ();
  return 0; 
}

[Bug c++/85761] [8/9 Regression] ICE on invalid in rtl with uncaptured constexpr

2018-06-02 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85761

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 fortran/85996] f951: internal compiler error: gfc_trans_select(): Bad type for case expr.

2018-06-02 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85996

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2018-06-02
 CC||kargl at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from kargl at gcc dot gnu.org ---
This is a 7000 line piece of code. Please submit a reduced testcase.

[Bug web/65231] Dead link in man page to the status of C99 features

2018-06-02 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65231

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|SUSPENDED   |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #3 from Gerald Pfeifer  ---
So, this appears to be an issue with the Debian package, not coming
from the GCC side of things.

Closing this report.

Sorry we could not be of further help, Roman.

[Bug web/64549] Add a 404 page

2018-06-02 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64549

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|WAITING |NEW

[Bug web/65231] Dead link in man page to the status of C99 features

2018-06-02 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65231

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|NEW |SUSPENDED
 CC||gerald at pfeifer dot com

[Bug web/64549] Add a 404 page

2018-06-02 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64549

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|NEW |WAITING
 CC||gerald at pfeifer dot com

[Bug web/59184] Broken links

2018-06-02 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59184

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||gerald at pfeifer dot com

[Bug libstdc++/86013] std::vector::shrink_to_fit() could sometimes use realloc()

2018-06-02 Thread jan.kratochvil at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86013

--- Comment #6 from Jan Kratochvil  ---
(In reply to Marc Glisse from comment #5)
> I can't find anywhere a guarantee that realloc doesn't move stuff when the
> new size is smaller than the old.

In practice it does not.


> What would be the point of shrink_to_fit() otherwise? It was created as a
> nicer alternative for people who were copying to a new temporary vector and
> swapping them.

It should be implemented in the most optimal way. ISO C++ standard does not
talk about any copying:
https://stackoverflow.com/questions/2664051/why-is-shrink-to-fit-non-binding/2664094

[Bug tree-optimization/69615] 0 to limit signed range checks don't always use unsigned compare

2018-06-02 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69615

--- Comment #6 from Jakub Jelinek  ---
For r0_to_imax_1 the following works for me:
--- gcc/fold-const.c.jj 2018-05-31 20:53:33.0 +0200
+++ gcc/fold-const.c2018-06-02 18:36:23.795635887 +0200
@@ -5084,6 +5084,35 @@ merge_ranges (int *pin_p, tree *plow, tr
   tem = high0, high0 = high1, high1 = tem;
 }

+  /* If the second range is != high1 where high1 is the type maximum of
+ the type, try first merging with < high1 range.  */
+  if (low1
+  && high1
+  && TREE_CODE (low1) == INTEGER_CST
+  && (TREE_CODE (TREE_TYPE (low1)) == INTEGER_TYPE
+ || (TREE_CODE (TREE_TYPE (low1)) == ENUMERAL_TYPE
+ && known_eq (TYPE_PRECISION (TREE_TYPE (low1)),
+  GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (low1))
+  && tree_int_cst_equal (low1, TYPE_MAX_VALUE (TREE_TYPE (low1)))
+  && operand_equal_p (low1, high1, 0)
+  && merge_ranges (pin_p, plow, phigh, in0_p, low0, high0,
+  !in1_p, NULL_TREE, range_predecessor (low1)))
+return true;
+
+  /* Similarly for first range != low0 where low0 is the type minimum of
+ the type, try first merging with > low0 range.  */
+  if (low0
+  && high0
+  && (TREE_CODE (TREE_TYPE (low0)) == INTEGER_TYPE
+ || (TREE_CODE (TREE_TYPE (low0)) == ENUMERAL_TYPE
+ && known_eq (TYPE_PRECISION (TREE_TYPE (low0)),
+  GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (low0))
+  && tree_int_cst_equal (low0, TYPE_MIN_VALUE (TREE_TYPE (low0)))
+  && operand_equal_p (low0, high0, 0)
+  && merge_ranges (pin_p, plow, phigh, !in0_p, range_successor (low0),
+  NULL_TREE, in1_p, low1, high1))
+return true;
+
   /* Now flag two cases, whether the ranges are disjoint or whether the
  second range is totally subsumed in the first.  Note that the tests
  below are simplified by the ones above.  */

The thing is that we canonicalize < INT_MAX (and <= INT_MAX-1) to != INT_MAX-1
and in the range code we'd better try the first form instead.

[Bug fortran/86033] New: Automated reallocation of empty string array fails with -fcheck=all

2018-06-02 Thread m.diehl at mpie dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86033

Bug ID: 86033
   Summary: Automated reallocation of empty string array fails
with -fcheck=all
   Product: gcc
   Version: 8.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m.diehl at mpie dot de
  Target Milestone: ---

The following code fails at runtime with
> Fortran runtime error: Different CHARACTER lengths (0/64) in array constructor
if I compile with
> -fcheck=all
in addition to
> gfortran -std=f2008ts

program test

  implicit none
  character(len=64), dimension(:), allocatable :: str64Array
  character(len=64)  :: str64


  allocate(str64Array(0),source=str64) ! empty array

  write(6,*) size(str64Array);  flush(6)! gives 0
  write(6,*) len(str64Array(0)); flush(6)   ! gives 64

  str64 ='a'
  str64Array = [str64Array,str64]   ! causes error with -fcheck=all

  write(6,*) size(str64Array);  flush(6)! gives 1 if compiled without
-fcheck=all
  write(6,*) len(str64Array(1)); flush(6)   ! gives 64 if compiled without
-fcheck=all

  str64 ='b'
  str64Array = [str64Array,str64]

  write(6,*) size(str64Array);  flush(6)! gives 2 if compiled without
-fcheck=all
  write(6,*) len(str64Array(1)); flush(6)   ! gives 64 if compiled without
-fcheck=all
  write(6,*) len(str64Array(2)); flush(6)   ! gives 64 if compiled without
-fcheck=all

  write(6,*) str64Array(1); flush(6)! gives a if compiled without
-fcheck=all
  write(6,*) str64Array(2); flush(6)! gives b if compiled without
-fcheck=all

end program

[Bug c++/86032] New: non standard copy operator is used for empty class

2018-06-02 Thread ihorelo at mail dot ru
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86032

Bug ID: 86032
   Summary: non standard copy operator is used for empty class
   Product: gcc
   Version: 7.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ihorelo at mail dot ru
  Target Milestone: ---

~$ g++-7 -v
Using built-in specs.
COLLECT_GCC=g++-7
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
7.3.0-16ubuntu3~16.04.1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr
--with-gcc-major-version-only --with-as=/usr/bin/x86_64-linux-gnu-as
--with-ld=/usr/bin/x86_64-linux-gnu-ld --program-suffix=-7
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3~16.04.1)



code:

struct Empty
{
Empty& operator=(const Empty&) = default;
};

template
class ShowType;

int main()
{
ShowType example;
}



g++-7 shows this error:

error: aggregate ‘ShowType example’ has incomplete type and cannot be
defined
  ShowType example;


type of "example" is ShowType, but it should be ShowType

[Bug tree-optimization/86029] gcc -O3 make very slow product

2018-06-02 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86029

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2018-06-02
 CC||hjl.tools at gmail dot com
 Ever confirmed|0   |1

--- Comment #4 from H.J. Lu  ---
Since you used -march=native, please show the output of

# gcc   -Ofast -march=native rx.c -lm -o rx-gcc-Ofast -v

[Bug c++/85873] [8/9 regression] GCC omits array constant in .rodata causing a segmentation fault.

2018-06-02 Thread Kimon.Hoffmann at lawo dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85873

--- Comment #6 from Kimon.Hoffmann at lawo dot com ---
Thanks for investigating this report and clarifying the underlying issue!

I was afraid that this was a case of UB, but was misled by the cited standard
section that mentioned lifetime extension of the underlying array.

The situation as it stands is unfortunate though, since the standard does not
allow "static constexpr" variables in constexpr functions. Therefor I don't see
a standards compliant way to: return a constant array from a function (the
choice of which array to return possibly depending on a function argument)
that:
* Provides type erasure on the length of the returned array.
* Works in constexpr contexts.
* Does not copy values during runtime. 

Anyway, thanks again for clarifying and I welcome the newly introduced warning
as it will probably catch a few usage errors that would be hard to find
otherwise.

[Bug fortran/85938] Spurious assert failure for matmul with reshaped array

2018-06-02 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85938

Dominique d'Humieres  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2018-06-02
 CC||kargl at gcc dot gnu.org,
   ||pault at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres  ---
This seems to have been fixed recently, likely revision r261081 on trunk and
r261099 on 8.1.1 for PRs 85816 and 85975.

[Bug tree-optimization/69615] 0 to limit signed range checks don't always use unsigned compare

2018-06-02 Thread peter at cordes dot ca
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69615

--- Comment #5 from Peter Cordes  ---
Update: https://godbolt.org/g/ZQDY1G

gcc7/8 optimizes this to and / cmp / jb, while gcc6.3 doesn't.

void rangecheck_var(int64_t x, int64_t lim2) {
  //lim2 >>= 60;
  lim2 &= 0xf;  // let the compiler figure out the limited range of limit
  if (x>=0 && x=0 && x<=(INT_MAX-1)) ext(); }  // clang and
gcc use 2 branches