[Bug libfortran/79956] [7 Regression] many new -Wmaybe-uninitialized warnings with bootstrap-O3

2017-03-17 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79956

Markus Trippelsdorf  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #36 from Markus Trippelsdorf  ---
Finally fixed. Thanks.

[Bug c++/80091] New: gcc from gcc-6 branch segfaults while compiling firefox

2017-03-17 Thread me at hussam dot eu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80091

Bug ID: 80091
   Summary: gcc from gcc-6 branch segfaults while compiling
firefox
   Product: gcc
   Version: 6.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: me at hussam dot eu.org
  Target Milestone: ---

6.3 20160309 snapshot works fine but latest git from gcc-6 branch results in an
internal compiler error:

/usr/bin/g++ -std=gnu++11 -o Unified_cpp_dom_presentation0.o -c
-I/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/stl_wrappers
-I/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/system_wrappers
-include /home/hussam/cache/firefox/src/gecko-dev/config/gcc_hidden.h
-DNDEBUG=1 -DTRIMMED=1 -DOS_POSIX=1 -DOS_LINUX=1 -DSTATIC_EXPORTABLE_JS_API
-DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL
-I/home/hussam/cache/firefox/src/gecko-dev/dom/presentation
-I/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dom/presentation
-I/home/hussam/cache/firefox/src/gecko-dev/dom/base
-I/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/ipc/ipdl/_ipdlheaders
-I/home/hussam/cache/firefox/src/gecko-dev/ipc/chromium/src
-I/home/hussam/cache/firefox/src/gecko-dev/ipc/glue
-I/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include
 -I/usr/include/nspr -I/usr/include/nss-I/usr/include/pixman-1   -fPIC 
-DMOZILLA_CLIENT -include
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/mozilla-config.h
-MD -MP -MF .deps/Unified_cpp_dom_presentation0.o.pp  -Wall -Wc++11-compat
-Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith
-Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings
-Wno-invalid-offsetof -Wc++14-compat -Wno-error=maybe-uninitialized
-Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat
-fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections
-fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe  -g
-freorder-blocks -Os -fomit-frame-pointer   
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dom/presentation/Unified_cpp_dom_presentation0.cpp
In file included from
/home/hussam/cache/firefox/src/gecko-dev/dom/base/nsINode.h:19:0,
 from
/home/hussam/cache/firefox/src/gecko-dev/dom/base/nsIDocument.h:17,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/BindingUtils.h:33,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/ToJSValue.h:12,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom/EventListenerBinding.h:12,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/mozilla/EventListenerManager.h:11,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/mozilla/DOMEventTargetHelper.h:19,
 from
/home/hussam/cache/firefox/src/gecko-dev/dom/presentation/PresentationAvailability.h:10,
 from
/home/hussam/cache/firefox/src/gecko-dev/dom/presentation/AvailabilityCollection.cpp:10,
 from
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dom/presentation/Unified_cpp_dom_presentation0.cpp:2:
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/nsTObserverArray.h:
In lambda function:
/home/hussam/cache/firefox/src/gecko-dev/obj-x86_64-pc-linux-gnu/dist/include/nsTObserverArray.h:260:30:
internal compiler error: Segmentation fault
 AdjustIterators(i, -1);
  ^



lines around 260 in /nsTObserverArray.h :

  // See nsTArray::RemoveElementsBy.
  void RemoveElementsBy(std::function aPredicate)
  {
index_type i = 0;
mArray.RemoveElementsBy([&](const elem_type& aItem) {
  if (aPredicate(aItem)) {
// This element is going to be removed.
AdjustIterators(i, -1);
return true;
  }
  ++i;
  return false;
});
  }

[Bug c++/80084] [7 regression] wrong code for decomposition declaration with debug iterator

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

Andrew Pinski  changed:

   What|Removed |Added

   Target Milestone|--- |7.0

[Bug middle-end/44081] Incorrect nonnull assumed in code generation

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #15 from Martin Sebor  ---
I'm unable to reproduce any unexpected/erroneous behavior with the test cases
submitted in comment #11 and later.  Recent versions of GCC (5.x and beyond)
all print the same output (marked <- Ok in the comments).  Thus resolving as
fixed.

[Bug preprocessor/55256] Out of memory preprocessing nested tgmath.h functions

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-18
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||4.7.2, 5.3.1, 6.3.0, 7.0

--- Comment #1 from Martin Sebor  ---
Confirmed with GCC 7.0, 6 and 5.

$ (cat z.c && ulimit -v 100 && gcc -S -Wall -Wextra z.c)
#include 
int main(void) { sqrt(sqrt(sqrt(sqrt(1; }

cc1: out of memory allocating 1477835728 bytes after a total of 89055232 bytes

[Bug middle-end/72776] Too large array size not diagnosed properly when inferred from an initializer

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-18
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||4.1.3, 4.2.2, 4.3.2, 4.6.0,
   ||5.4.0, 6.3.0, 7.0

--- Comment #1 from Martin Sebor  ---
Confirmed.  The array is diagnosed when one of its elements is referenced but
not when it's defined.  And when it is, the diagnostic is based on GCC assuming
the array has zero size.

Without looking into it in any detail, I think the comment is saying that 'char
a[0]' is in GCC represented the same way as 'char b[SIZE_MAX]', i.e., with a
domain of [0, SIZE_MAX].  IIRC, the bounds of an array domain are signed so the
domain is really [0, -1].

But no object can be really as large as the whole address space.  If it were, a
difference between a pointer to one past its last byte and its first byte
couldn't be represented in ptrdiff_t.  The piece of code might exist to allow
arrays of excessive size to be defined regardless (even if doing that is
undefined).  If that's it, then I don't think that should prevent them from
being diagnosed.

$ cat z.c && gcc -S -Wall -Wextra -O2 z.c
char c[] = {[~0ul] = 1};

int foo (void)
{
  return *c;
}
z.c: In function ‘foo’:
z.c:5:10: warning: array subscript is above array bounds [-Warray-bounds]
   return *c;
  ^~

[Bug middle-end/34300] gcc 4.2.2 miscompiles code that uses global register variables

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #9 from Martin Sebor  ---
I can't reproduce an abort with the top of trunk (GCC 7.0) or 6.x or 5.x, or
isolate the fix to any recent revision (4.2 and newer).  In light of that and
comment #7, resolving as fixed.

[Bug bootstrap/37013] gcc-4.2.1 build breaks in fortran when using --with-mpfr=

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2017-03-18
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||

--- Comment #5 from Martin Sebor  ---
GCC 4.2 is no longer maintained.  Has the problem cleared up for you in more
recent (and currently maintained) versions of GCC?

[Bug other/59489] docs mentions that -fwrapv mandatory with java, but not go

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #1 from Martin Sebor  ---
The option documentation no longer mentions Java (which has been removed from
GCC 7).  Resolving as fixed (for some definition of the word).

[Bug tree-optimization/79811] ICE verify_flow_info failed with -param vect-epilogues-nomask=1 and -mavx512vbmi

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
I cannot reproduce this ICE with today's top of trunk.  Martin, has this by any
chance been fixed since you raised it?

[Bug libgomp/39399] libgomp testsuite failures due to lack of linkind with libpthread

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #2 from Martin Sebor  ---
The reported test results that are closest to i386-unknown-freebsd8.0 are for
i386-unknown-freebsd10.3
(https://gcc.gnu.org/ml/gcc-testresults/2017-03/msg01855.html).  I don't see
these tests failures there so I'll assume they have been fixed (alternatively,
they won't be due to the passage of time).  Resolving as fixed.

[Bug middle-end/46597] configure -enable-checking=... -enable-build-with-cxx and bootstrap is g++ 3.3 hit minor problem

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Martin Sebor  ---
It's been over 6 years since this report was raised and GCC 4.5 is no longer
maintained  Have things improved with a currently supported version (GCC 4.8 or
preferably later)?

[Bug c++/78147] The -Wshadow warning is too aggressive with constructor parameters

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #1 from Martin Sebor  ---
Confirmed.  Paul, please post your patch to gcc-patches.  Personally, I think
providing it under Clang's -Wunused-private-field for compatibility would be
preferable to disabling the warning altogether.

The top of trunk emits the following warning:

$ cat t.C && gcc -S -Wshadow t.C

  class Foo
  {
  int foo;
  public:
  Foo(int foo) : foo(foo) {}
  };
t.C: In constructor ‘Foo::Foo(int)’:
t.C:6:20: warning: declaration of ‘foo’ shadows a member of ‘Foo’ [-Wshadow]
   Foo(int foo) : foo(foo) {}
^
t.C:4:11: note: shadowed declaration is here
   int foo;
   ^~~

With -Weverything Clang emits the warnings below.

t.C:6:15: warning: constructor parameter 'foo' shadows the field 'foo' of 'Foo'
  [-Wshadow-field-in-constructor]
  Foo(int foo) : foo(foo) {}
  ^
t.C:4:11: note: previous declaration is here
  int foo;
  ^
t.C:4:11: warning: private field 'foo' is not used [-Wunused-private-field]
  int foo;
  ^
2 warnings generated.

[Bug lto/53604] ld reports errors using lto after upgrading from gcc-4.6.2 to gcc-4.7.0

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #13 from Martin Sebor  ---
This report has been unconfirmed for nearly 5 years and GCC 4.7 is no longer
maintained.  Does the problem persist with a maintained compiler (GCC 4.8 or
newer) or can it be resolved?

[Bug middle-end/80090] New: Incorrect assembler - output_addr_const may generate visibility output between op and address constant

2017-03-17 Thread danglin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80090

Bug ID: 80090
   Summary: Incorrect assembler - output_addr_const may generate
visibility output between op and address constant
   Product: gcc
   Version: 6.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: danglin at gcc dot gnu.org
  Target Milestone: ---
  Host: hppa-unknown-linux-gnu
Target: hppa-unknown-linux-gnu
 Build: hppa-unknown-linux-gnu

The build of autodock-vina fails as follows on hppa:

g++ -pthread -ansi -Wno-long-long -O3 -DNDEBUG -I /usr/include --lto -o vina
main.o cache.o coords.o current_weights.o everything.o grid.o szv_grid.o
manifold.o model.o monte_carlo.o mutate.o my_pid.o naive_non_cache.o
non_cache.o parallel_mc.o parse_pdbqt.o pdb.o quasi_newton.o quaternion.o
random.o ssd.o terms.o weighted_terms.o -l boost_system -l boost_thread -l
boost_program_options -lboost_filesystem 
/tmp/cceWz5Tk.s: Assembler messages:
/tmp/cceWz5Tk.s:5010: Error: junk at end of line, first unrecognized character
is `_'
/tmp/cceWz5Tk.s:5011: Error: Unknown opcode: `_zti14internal_error'
/tmp/cceWz5Tk.s:5017: Error: junk at end of line, first unrecognized character
is `_'
/tmp/cceWz5Tk.s:5018: Error: Unknown opcode: `_zti11parse_error'
lto-wrapper: fatal error: g++ returned 1 exit status
compilation terminated.

In more detail, we have:

dave@mx3210:~/debian/autodock-vina/autodock-vina-1.1.2/build/linux/release$ cat
xx.sh
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/hppa-linux-gnu/6/lto-wrapper
Target: hppa-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-9'
--with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages=c,ada,c++,java,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-6 --program-prefix=hppa-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-libssp
--disable-libitm --disable-libsanitizer --disable-libquadmath --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-hppa/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-hppa
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-hppa
--with-arch-directory=parisc --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc=auto --enable-multiarch --disable-libstdcxx-pch
--enable-checking=release --build=hppa-linux-gnu --host=hppa-linux-gnu
--target=hppa-linux-gnu
Thread model: posix
gcc version 6.3.0 20170316 (Debian 6.3.0-9) 
COMPILER_PATH=/usr/lib/gcc/hppa-linux-gnu/6/:/usr/lib/gcc/hppa-linux-gnu/6/:/usr/lib/gcc/hppa-linux-gnu/:/usr/lib/gcc/hppa-linux-gnu/6/:/usr/lib/gcc/hppa-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/hppa-linux-gnu/6/:/usr/lib/gcc/hppa-linux-gnu/6/../../../hppa-linux-gnu/:/usr/lib/gcc/hppa-linux-gnu/6/../../../:/lib/hppa-linux-gnu/:/lib/:/usr/lib/hppa-linux-gnu/:/usr/lib/
COLLECT_GCC_OPTIONS='-pthread' '-ansi' '-Wno-long-long' '-O3' '-D' 'NDEBUG'
'-I' '/usr/include' '-flto' '-o' 'vina' '-v' '-save-temps' '-shared-libgcc'
 /usr/lib/gcc/hppa-linux-gnu/6/collect2 -plugin
/usr/lib/gcc/hppa-linux-gnu/6/liblto_plugin.so
-plugin-opt=/usr/lib/gcc/hppa-linux-gnu/6/lto-wrapper
-plugin-opt=-fresolution=-lm.res -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread
-plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -flto --sysroot=/ --build-id --eh-frame-hdr
-dynamic-linker /lib/ld.so.1 -o vina
/usr/lib/gcc/hppa-linux-gnu/6/../../../hppa-linux-gnu/crt1.o
/usr/lib/gcc/hppa-linux-gnu/6/../../../hppa-linux-gnu/crti.o
/usr/lib/gcc/hppa-linux-gnu/6/crtbegin.o -L/usr/lib/gcc/hppa-linux-gnu/6
-L/usr/lib/gcc/hppa-linux-gnu/6/../../../hppa-linux-gnu
-L/usr/lib/gcc/hppa-linux-gnu/6/../../.. -L/lib/hppa-linux-gnu
-L/usr/lib/hppa-linux-gnu main.o cache.o coords.o current_weights.o
everything.o grid.o szv_grid.o manifold.o model.o monte_carlo.o mutate.o
my_pid.o naive_non_cache.o non_cache.o parallel_mc.o parse_pdbqt.o pdb.o
quasi_newton.o quaternion.o random.o ssd.o terms.o weighted_terms.o
-lboost_system -lboost_thread -lboost_program_options -lboost_filesystem
-lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc
/usr/lib/gcc/hppa-linux-gnu/6/crtend.o
/usr/lib/gcc/hppa-linux-gnu/6/../../../hppa-linux-gnu/crtn.o
g++ @/tmp/ccp6Ob4O
Using built-in specs.
COLLECT_GCC=g++
Target: hppa-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-9'
--with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages

[Bug c++/68826] [concepts] ICE in fold expression with requires

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||6.3.0, 7.0

--- Comment #1 from Martin Sebor  ---
Confirmed with today's top of trunk (GCC 7.0).  Same stack trace.

[Bug translation/79643] Please define the file format of *.opt files more i18n-friendly

2017-03-17 Thread roland.illig at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79643

Roland Illig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #3 from Roland Illig  ---
Redefining the file format would be too much work, given that translating these
messages doesn't take too long and they barely change once translated.

[Bug target/79912] [7 regression] LRA unable to generate reloads after r245655

2017-03-17 Thread palmer at dabbelt dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79912

--- Comment #17 from Palmer Dabbelt  ---
I'm sending out the immediate fix, I'll try and get some time to clean up the
mov patterns this weekend.

https://gcc.gnu.org/ml/gcc-patches/2017-03/msg00960.html

[Bug c/49779] Wrong code generated for while loop with guard containing continue

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #7 from Martin Sebor  ---
It doesn't look like anything has changed in GCC 7.0.  GCC (in C mode) still
behaves as described in comment #0 and G++ as discussed in the referenced bug
44715.

Based on comment #6 and on the discussion in bug 44715 resolving as a duplicate
of that bug.

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

[Bug c/44715] Break in increment expression of "for" statement inconsistent with g++

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

Martin Sebor  changed:

   What|Removed |Added

 CC||bagnara at cs dot unipr.it

--- Comment #5 from Martin Sebor  ---
*** Bug 49779 has been marked as a duplicate of this bug. ***

[Bug middle-end/63484] misleading/obsolete -fdelete-null-pointer-checks documentation

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #2 from Martin Sebor  ---
The documentation has been updated since the report was raised and I think it's
sufficiently clear.  If you have a suggestion for further clarification please
feel free to propose another update.

[Bug c++/69390] dynamic_cast on rvalue fails

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||5.3.1, 6.3.0, 7.0

--- Comment #3 from Martin Sebor  ---
Confirmed with today's top of trunk (GCC 7.0), 6.x, and 5.x

$ cat t.C && gcc  -Wall -Wextra -Wpedantic t.C
struct A { virtual ~A() {}; };
struct B : A {} b;

void g ()
{
A &&ar = static_cast(b);
B &&br = dynamic_cast(ar);

dynamic_cast(static_cast(b));
}
t.C: In function ‘void g()’:
t.C:9:23: error: conversion to non-const reference type ‘struct A&’ from rvalue
of type ‘A’ [-fpermissive]
 dynamic_cast(static_cast(b));
   ^~~
t.C:7:9: warning: unused variable ‘br’ [-Wunused-variable]
 B &&br = dynamic_cast(ar);
 ^~

[Bug c/43778] C/C++ __attribute__((deprecated)) does not appear to wrap declarations as implied from the doc.

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
  Known to fail||4.6.0, 5.3.0, 6.3.0, 7.0

--- Comment #4 from Martin Sebor  ---
I'll confirm this bug.  The manual seems clear that 

 "the warnings only occur for uses and then only if the type is being applied
to an identifier that itself is not being declared as deprecated."

With today's top of trunk I get the same output:

$ cat t.C && gcc -S -Wall -Wextra -xc t.C
#define Deprecated __attribute__((deprecated))

typedef int INT Deprecated;   // no warning (ok)

typedef INT FOO Deprecated;   // no warning (ok)

struct Deprecated S {
  INT i;  // warning (bug?)
};

INT f1 (void) Deprecated; // no warning (ok)

void f2 (INT) Deprecated; // warning (bug)

INT f3 (INT) Deprecated;  // warning (bug)

INT i Deprecated; // no warning (ok)
t.C:8:3: warning: ‘INT’ is deprecated [-Wdeprecated-declarations]
   INT i;  // warning (bug?)
   ^~~
t.C:13:1: warning: ‘INT’ is deprecated [-Wdeprecated-declarations]
 void f2 (INT) Deprecated; // warning (bug)
 ^~~~
t.C:15:1: warning: ‘INT’ is deprecated [-Wdeprecated-declarations]
 INT f3 (INT) Deprecated;  // warning (bug)
 ^~~


G++ comes closer to the expected output but it fails the typedef test (which
GCC passes in C mode):

t.C:8:7: warning: ‘INT’ is deprecated [-Wdeprecated-declarations]
   INT i;  // warning (bug?)
   ^
t.C:3:13: note: declared here
 typedef int INT Deprecated;   // no warning (ok)
 ^~~

Clang 5.0 produces no warnings.

[Bug c++/80038] Random segfault using local vectors in Cilk function [Regression 6/7]

2017-03-17 Thread ryxi at stu dot xidian.edu.cn
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80038

--- Comment #26 from Xi Ruoyao  ---
Reverting r227423 makes both Florent's and NumericMonoid code work.  But it
reintroduced pr60586.  Trying to solve it.

[Bug fortran/79841] Inconsistent diagnostics in fortran/openmp.c, function check_symbol_not_pointer

2017-03-17 Thread roland.illig at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79841

Roland Illig  changed:

   What|Removed |Added

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

--- Comment #11 from Roland Illig  ---
Thanks for fixing these.

[Bug c++/67559] Passing non-trivially copyable objects through '...' doesn't generate warning or error

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from Martin Sebor  ---
Confirmed.  Clang has -Wnon-pod-varargs to control the diagnostic.  To ease
portability it makes sense to warn on conditionally-supported behavior, at
least with -Wpedantic.

[Bug c++/77523] rejects valid C++14 code with initialized lambda capture

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org,
   ||nathan at acm dot org
 Ever confirmed|0   |1
  Known to fail||5.4.1, 6.3.0, 7.0

--- Comment #1 from Martin Sebor  ---
Confirmed. EDG eccp 4.13 also accepts it.

In addition, with today's top of trunk the instantiation context is missing. 
This is all I see on output:

$ gcc  -Wall -Wextra -Wpedantic -Wrestrict -std=c++1y t.C
t.C: In function ‘void f(T)’:
t.C:3:18: error: cannot capture ‘f<>’ by reference
   auto g = [&a = f <>] () {};
  ^~~~
$

Bisection points to r244056 as the change that caused the loss of the context. 
CC'ing the author.

[Bug libfortran/79956] [7 Regression] many new -Wmaybe-uninitialized warnings with bootstrap-O3

2017-03-17 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79956

--- Comment #35 from Thomas Koenig  ---
Author: tkoenig
Date: Fri Mar 17 21:27:08 2017
New Revision: 246248

URL: https://gcc.gnu.org/viewcvs?rev=246248&root=gcc&view=rev
Log:
2017-03-17  Thomas Koenig  

PR libfortran/79956
* m4/reshape.m4 (reshape_'rtype_ccode`):  Correct use
of GFC_ASSERT.
* generated/reshape_c10.c: Regenerated.
* generated/reshape_c16.c: Regenerated.
* generated/reshape_c4.c: Regenerated.
* generated/reshape_c8.c: Regenerated.
* generated/reshape_i16.c: Regenerated.
* generated/reshape_i4.c: Regenerated.
* generated/reshape_i8.c: Regenerated.
* generated/reshape_r10.c: Regenerated.
* generated/reshape_r16.c: Regenerated.
* generated/reshape_r4.c: Regenerated.
* generated/reshape_r8.c: Regenerated.


Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/generated/reshape_c10.c
trunk/libgfortran/generated/reshape_c16.c
trunk/libgfortran/generated/reshape_c4.c
trunk/libgfortran/generated/reshape_c8.c
trunk/libgfortran/generated/reshape_i16.c
trunk/libgfortran/generated/reshape_i4.c
trunk/libgfortran/generated/reshape_i8.c
trunk/libgfortran/generated/reshape_r10.c
trunk/libgfortran/generated/reshape_r16.c
trunk/libgfortran/generated/reshape_r4.c
trunk/libgfortran/generated/reshape_r8.c
trunk/libgfortran/m4/reshape.m4

[Bug c/70475] -Wmisleading-indentation quetionable in Eigen

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #6 from Martin Sebor  ---
Based on comment #2 and comment #3, and since the bug hasn't been confirmed in
a year, resolving as won't fix.

[Bug target/79747] Missing documentation for -malign-{jumps,label,loops,functions}= and strange value range limitation

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||documentation
 CC||msebor at gcc dot gnu.org

--- Comment #2 from Martin Sebor  ---
I don't see -malign-functions in the latest manual.  -falign-functions is
documented with an optional equals at the end.

$ (cd /src/gcc/trunk && grep align-functions= gcc/doc/*)
grep: gcc/doc/include: Is a directory
gcc/doc/invoke.texi:@itemx -falign-functions=@var{n}
gcc/doc/invoke.texi:@option{-falign-functions=32} aligns functions to the next
32-byte
gcc/doc/invoke.texi:boundary, but @option{-falign-functions=24} aligns to the
next
gcc/doc/invoke.texi:@option{-fno-align-functions} and
@option{-falign-functions=1} are

With today's trunk I get:

$ gcc  -Wall -Wextra -Wpedantic -Wrestrict -malign-functions -xc - < /dev/null
xgcc: error: unrecognized command line option ‘-malign-functions’; did you mean
‘-falign-functions’?

[Bug c++/78073] inherited initializer_list constructor is not accessible

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #3 from Martin Sebor  ---
I'm not able to reproduce the error or find a revision that failed.  Resolving
as fixed.

[Bug c++/71195] [5 Regression] ICE in classify_argument on invalid code

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

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
  Known to work||7.0
 Ever confirmed|0   |1
  Known to fail||5.4.0

--- Comment #3 from Martin Sebor  ---
Confirmed with 5-branch.  Works with later versions.

[Bug other/55375] libsanitizer license incomplete

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

Martin Sebor  changed:

   What|Removed |Added

   Priority|P1  |P3
 CC||msebor at gcc dot gnu.org
   Severity|major   |normal

--- Comment #6 from Martin Sebor  ---
This P1 bug has been open for over 4 years and never confirmed.  It doesn't
seem that it meets the criteria for a P1
(https://gcc.gnu.org/bugs/management.html).  I'm going to take the liberty do
make it a P3/Normal, like most other unconfirmed bugs that haven't been triaged
by release managers.

[Bug c++/80089] New: ICE: Segfault with openMP and a string

2017-03-17 Thread agadethrowaway at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80089

Bug ID: 80089
   Summary: ICE: Segfault with openMP and a string
   Product: gcc
   Version: 5.4.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: agadethrowaway at gmail dot com
  Target Milestone: ---

Created attachment 40998
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40998&action=edit
Code to reproduce + .ii file

Version:
g++ (Ubuntu 5.4.1-2ubuntu1~16.04) 5.4.1 20160904

System:
Linux mint 18.1

Minimal code:
#include 
int main(){
std::string s="";
#pragma omp parallel
while(true){}
}

Compile line:
g++ ICE.cpp -O3 -fopenmp

Output:
ICE.cpp: In function ‘int main()’:
ICE.cpp:6:1: internal compiler error: Segmentation fault
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 1

I believe these are the compilation options ubuntu uses:
Configured with: -v
 --with-pkgversion='Ubuntu 5.4.1-8ubuntu1'
 --with-bugurl='file:///usr/share/doc/gcc-5/README.Bugs'
 --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++
 --prefix=/usr
 --program-suffix=-5
 --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
 --enable-default-pie
 --with-system-zlib
 --disable-browser-plugin
 --enable-java-awt=gtk
 --enable-gtk-cairo
 --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre
 --enable-java-home
 --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64
 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64
 --with-arch-directory=amd64
 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
 --enable-objc-gc
 --enable-multiarch
 --disable-werror
 --with-arch-32=i686
 --with-abi=m64
 --with-multilib-list=m32,m64,mx32
 --enable-multilib
 --with-tune=generic
 --enable-checking=release
 --build=x86_64-linux-gnu
 --host=x86_64-linux-gnu
 --target=x86_64-linux-gnu

It seems to be a regression in gcc 5 through to gcc 6.2 and gone in gcc 6.3.
Included are the .cpp and .ii files in a .tar.gz.

[Bug c/80088] New: ICE: declaration and definition of function with __attribute__((target("thumb"))) and inlined assembler, with debug symbols enabled

2017-03-17 Thread wojtek.golf at interia dot pl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80088

Bug ID: 80088
   Summary: ICE: declaration and definition of function with
__attribute__((target("thumb"))) and inlined
assembler, with debug symbols enabled
   Product: gcc
   Version: 5.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wojtek.golf at interia dot pl
  Target Milestone: ---

Snippet below, when compiled with arm hard-float crosscompiler, causes ICE.

void
__attribute(( target("thumb") ))
bar();

int main()
{
return 0;
}

void bar()
{
unsigned int foo;
asm ("mcr p15, 0, %0, c13, c0, 3" : : "r" (foo) );
}

1. commenting out main function make the problem disappears
2. when the definition is moved before main the problem disappears
3. when the target attribute is changed to arm the problem disappears
4. when the inline assembler is replaced with asm(" mcr 15, 0, r3, cr13,
cr0, {3}"); the problem disappears


Invocation command:
arm-linux-gnueabihf-gcc -g -marm ice3.c -c

1. -g and -marm flags are mandatory, either one of them missing make the
problem disappear
2. -c can be replaced with -S

The compiler crashes with the following output to the console:

$ arm-linux-gnueabihf-gcc -g -marm ice3.c -S
ice3.c: In function ‘bar’:
ice3.c:16:1: internal compiler error: in dwarf2out_frame_debug_adjust_cfa, at
dwarf2cfi.c:1169
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.

Environment:
OS: Ubuntu 16.04.04

$ uname -a
Linux wojtek-dell 4.4.0-59-generic #80-Ubuntu SMP Fri Jan 6 17:47:47 UTC 2017
x86_64 x86_64 x86_64 GNU/Linux

$ $ arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[Bug rtl-optimization/79405] [7 Regression] Compile-time hog w/ -O2 (-Os, -O3) on 32-bit BE powerpc targets

2017-03-17 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79405

Segher Boessenkool  changed:

   What|Removed |Added

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

--- Comment #7 from Segher Boessenkool  ---
The testcase has undefined behaviour, of course.

We start with these insns, all in the same basic block, in this order:

  B := A|Z(1)
  A := B  (2)
  D := A  (3)

First propagating (1) into (2) is tried.  This fails, because the IOR makes
this not simple enough to propagate.

Later Z is found to be 0, but it never tries to propagate (1) into (2) again.
If fwprop would try that there would be no problem, and this is a missed
optimisation anyway!

If all propagations would be tried it would result in

  B := A
  A := A
  D := A

but with what we have now we get

  B := A
  A := B
  D := A

oscillating with

  B := A
  A := B
  D := B

[Bug libstdc++/80041] std::codecvt_utf16 converts to UTF-8 not UTF-16

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

Jonathan Wakely  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.5
  Known to fail||5.4.0, 6.3.0

--- Comment #5 from Jonathan Wakely  ---
Fixed for 5.5, 6.4 and 7.1

[Bug libstdc++/79980] Possible bug in codecvt.cpp bitmask setting code

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

Jonathan Wakely  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.5
  Known to fail||5.4.0, 6.3.0

--- Comment #12 from Jonathan Wakely  ---
Fixed for 5.5, 6.4 and 7.1

[Bug libstdc++/79511] Convertation issues in std::codecvt_utf8_utf16

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

Jonathan Wakely  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.5
  Known to fail||5.4.0, 6.3.0

--- Comment #18 from Jonathan Wakely  ---
Fixed for 5.5, 6.4 and 7.1

[Bug libstdc++/80041] std::codecvt_utf16 converts to UTF-8 not UTF-16

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

--- Comment #4 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:42 2017
New Revision: 246247

URL: https://gcc.gnu.org/viewcvs?rev=246247&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gcc

[Bug libstdc++/79511] Convertation issues in std::codecvt_utf8_utf16

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

--- Comment #17 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:42 2017
New Revision: 246247

URL: https://gcc.gnu.org/viewcvs?rev=246247&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gc

[Bug libstdc++/79980] Possible bug in codecvt.cpp bitmask setting code

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

--- Comment #11 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:42 2017
New Revision: 246247

URL: https://gcc.gnu.org/viewcvs?rev=246247&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gc

[Bug libstdc++/79511] Convertation issues in std::codecvt_utf8_utf16

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

--- Comment #16 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:29 2017
New Revision: 246246

URL: https://gcc.gnu.org/viewcvs?rev=246246&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gc

[Bug libstdc++/79980] Possible bug in codecvt.cpp bitmask setting code

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

--- Comment #10 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:29 2017
New Revision: 246246

URL: https://gcc.gnu.org/viewcvs?rev=246246&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gc

[Bug libstdc++/80041] std::codecvt_utf16 converts to UTF-8 not UTF-16

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

--- Comment #3 from Jonathan Wakely  ---
Author: redi
Date: Fri Mar 17 19:28:29 2017
New Revision: 246246

URL: https://gcc.gnu.org/viewcvs?rev=246246&root=gcc&view=rev
Log:
Backport  fixes from trunk

Fix alignment bugs in std::codecvt_utf16

* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range in order to avoid unaligned reads.
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in)
(__codecvt_utf16_base::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length)
(__codecvt_utf16_base::do_length): Pass arguments of type
range to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

PR libstdc++/79980 fix target type of cast

PR libstdc++/79980
* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

PR libstdc++/80041 fix codecvt_utf16 to use UTF-16 not UTF-8

PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base::do_out)
(__codecvt_utf16_base::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

Fix encoding() and max_length() values for codecvt facets

* src/c++11/codecvt.cc (codecvt)
(codecvt, __codecvt_utf8_base)
(__codecvt_utf8_base, __codecvt_utf8_base)
(__codecvt_utf16_base, __codecvt_utf16_base)
(__codecvt_utf16_base, __codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base)
(__codecvt_utf8_utf16_base): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

PR libstdc++/79980 fix BOM detection, maxcode checks, UCS2 handling

PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness.  Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

PR libstdc++/79511 fix endianness of UTF-16 data

PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0x
as a surrogate pair.
(__codecvt_utf8_utf16_base::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/locale_conv.h
branches/gcc

[Bug target/80083] libgomp doacross2.f90 regtest fails with -mcpu=power9 -O1

2017-03-17 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80083

--- Comment #3 from acsawdey at gcc dot gnu.org ---
After discussion with Meissner and others, this appears to be the fix for
movsi_internal1 that is needed:

Index: gcc/config/rs6000/rs6000.md
===
--- gcc/config/rs6000/rs6000.md (revision 246136)
+++ gcc/config/rs6000/rs6000.md (working copy)
@@ -6727,7 +6727,7 @@
   [(set (match_operand:SI 0 "rs6000_nonimmediate_operand"
"=r, r,   r,   ?*wI,?*wH,
 m,  ?Z,  ?Z,  r,   r,
-r,  ?*wIwH,  ?*wJwK,  ?*wK,?*wJwK,
+r,  ?*wIwH,  ?*wJwK,  ?*wJwK,  ?*wu,
 ?*wJwK, ?*wH,?*wK,?*wIwH,  ?r,
 r,  *c*l,*h,  *h")

[Bug c++/78345] [5/6/7 Regression] ICE on invalid c++ code on x86_64-linux-gnu (internal compiler error: in cxx_eval_outermost_constant_expr, at cp/constexpr.c:4464)

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

--- Comment #6 from Jason Merrill  ---
Author: jason
Date: Fri Mar 17 18:56:22 2017
New Revision: 246244

URL: https://gcc.gnu.org/viewcvs?rev=246244&root=gcc&view=rev
Log:
PR c++/78345 - ICE initializing array from lambda.

* init.c (build_aggr_init): Check array initializer.
(build_vec_init): Check the type of a CONSTRUCTOR.

Added:
trunk/gcc/testsuite/g++.dg/init/array48.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/init.c
trunk/gcc/testsuite/g++.dg/torture/pr70499.C

[Bug c++/80077] [7 Regression] constant expressions and -fno-elide-constructors

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

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 c++/80073] [7 Regression] ICE with virtual base

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

--- Comment #4 from Jason Merrill  ---
Author: jason
Date: Fri Mar 17 18:42:09 2017
New Revision: 246242

URL: https://gcc.gnu.org/viewcvs?rev=246242&root=gcc&view=rev
Log:
PR c++/80073 - C++17 ICE with virtual base.

* decl.c (xref_basetypes): Also check for indirect vbases.

Added:
trunk/gcc/testsuite/g++.dg/init/vbase2.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c

[Bug c++/80073] [7 Regression] ICE with virtual base

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

Jason Merrill  changed:

   What|Removed |Added

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

--- Comment #3 from Jason Merrill  ---
Fixed.

[Bug target/79185] [5/6/7 Regression] register allocation in the addition of two 128 bit ints

2017-03-17 Thread bernds at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79185

Bernd Schmidt  changed:

   What|Removed |Added

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

--- Comment #9 from Bernd Schmidt  ---
Won't spend any more time on this in the near future, probably.

[Bug target/79185] [5/6/7 Regression] register allocation in the addition of two 128 bit ints

2017-03-17 Thread bernds at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79185

--- Comment #8 from Bernd Schmidt  ---
Created attachment 40997
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40997&action=edit
Some steps towards solving it

There are some relatively obvious issues in ira-lives:
a) We briefly mark a register as live for a plain CLOBBER pattern
b) For a subword SET, DF gives us an extra use of the whole register, which
messes up our conflict graph as well if we handle it like any other use. It
seems safe to ignore it.

Unfortunately, this doesn't solve the issue - the conflicts are reduced, but it
seems that r88 isn't involved in copies from hard regs, and so when we pop it
first, we choose a random unused register. Maybe that's something Vlad could
figure out more quickly. What's worse, I've seen cases where the additional
freedom (fewer conflicts, more copies detected) leads to worse results.

Also, limiting lifetimes can have the effect of sometimes detecting that an
object does not really live at any point. I've tweaked things somewhat, but a
few testsuite failures still remain.

[Bug fortran/79841] Inconsistent diagnostics in fortran/openmp.c, function check_symbol_not_pointer

2017-03-17 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79841

--- Comment #10 from Jerry DeLisle  ---
Fixed on trunk

Can this be closed?

[Bug fortran/79841] Inconsistent diagnostics in fortran/openmp.c, function check_symbol_not_pointer

2017-03-17 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79841

--- Comment #9 from Jerry DeLisle  ---
Author: jvdelisle
Date: Fri Mar 17 18:21:08 2017
New Revision: 246241

URL: https://gcc.gnu.org/viewcvs?rev=246241&root=gcc&view=rev
Log:
2017-03-17  Jerry DeLisle  

PR fortran/79841
* openmp.c (check_symbol_not_pointer): Adjust diagnostics.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/openmp.c

[Bug target/80083] libgomp doacross2.f90 regtest fails with -mcpu=power9 -O1

2017-03-17 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80083

--- Comment #2 from acsawdey at gcc dot gnu.org ---
It would appear that vspltisw 31,2 is being emitted to initialize f31 for use
by stfiwx 31,28,30.

[Bug target/80083] libgomp doacross2.f90 regtest fails with -mcpu=power9 -O1

2017-03-17 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80083

--- Comment #1 from acsawdey at gcc dot gnu.org ---
Created attachment 40996
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40996&action=edit
asm output

[Bug tree-optimization/32306] [5/6/7 Regression] redundant && || not eliminated

2017-03-17 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32306

Jeffrey A. Law  changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #33 from Jeffrey A. Law  ---
Martin,

Richi's right. If you look at the .optimized dump you'll an huge number of
redundant conditionals.

We should compute b1 && b2 && b3 ... && b12 once and store the result into each
array element.

But the way we generate code for this can make it awful hard for the optimizers
to see the giant common subexpression.

If you look at the shape of the CFG and explore how to expose the various
redundancies, you'll see there's a cascading effect.  ie, you expose some,
simplify and new opportunities appear.

Jump threading had the ability to do this many years ago.  We kept iterating
DOM and forward jump threading until nothing changed.  But that was very
expensive relative to what was gained and we removed the iteration code.

There's various things in the pipeline that might (or might not) help this
specific BZ over time.  It's certainly in the back of my mind as we continue
the transition away from the forward equivalency table based jump threading to
the backward walking of the use-def chains.

The backwards approach holds a lot more promise  to address this BZ.  I'm
pretty sure the stuff planned would allow it to find all the threads in a
single pass.  The question of cost of the backwards walking and  block copying
necessary to isolate/expose the redundancies.

[Bug c++/70515] Nested lambdas causing invalid captured pointers on some platforms

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

Martin Sebor  changed:

   What|Removed |Added

 Status|WAITING |NEW
  Known to fail||5.3.1, 6.3.0, 7.0

--- Comment #6 from Martin Sebor  ---
Thank you.  I still can't reproduce the problem with -O0 but I do see a SIGSEGV
on x86_64 when I compile the test case with -O1 or higher, with all of GCC 5.x,
6.x, and 7.0.  Thus confirmed.

$ /ssd/build/gcc-6-branch/gcc/xg++ -B /ssd/build/gcc-6-branch/gcc -nostdinc++
-I
/ssd/build/gcc-6-branch/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu
-I /ssd/build/gcc-6-branch/x86_64-pc-linux-gnu/libstdc++-v3/include -I
/src/gcc/6-branch/libstdc++-v3/libsupc++ -I
/src/gcc/6-branch/libstdc++-v3/include/backward -I
/src/gcc/6-branch/libstdc++-v3/testsuite/util -L
/ssd/build/gcc-6-branch/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs -std=gnu++1z
-g -O1 t.C && gdb -batch -q -ex r -ex bt a.out 

Program received signal SIGSEGV, Segmentation fault.
0x0040064c in ::operator() (__closure=0x7fffde68) at
t.C:9
9   auto lambda1 = [&]{ (*j)++; };
#0  0x0040064c in ::operator() (__closure=0x7fffde68) at
t.C:9
#1  ::operator() (__closure=0x7fffdea0,
__closure@entry=0x7fffde30) at t.C:10
#2  std::_Function_handler >::_M_invoke(const
std::_Any_data &) (__functor=...) at
/ssd/build/gcc-6-branch/x86_64-pc-linux-gnu/libstdc++-v3/include/functional:1731
#3  0x004006bf in std::function::operator()() const
(this=0x7fffdea0) at
/ssd/build/gcc-6-branch/x86_64-pc-linux-gnu/libstdc++-v3/include/functional:2127
#4  main () at t.C:16

[Bug target/80052] typo in aarch64.opt: dummping

2017-03-17 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80052

Richard Earnshaw  changed:

   What|Removed |Added

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

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

[Bug target/80052] typo in aarch64.opt: dummping

2017-03-17 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80052

--- Comment #2 from Richard Earnshaw  ---
Author: rearnsha
Date: Fri Mar 17 17:05:23 2017
New Revision: 246229

URL: https://gcc.gnu.org/viewcvs?rev=246229&root=gcc&view=rev
Log:
[aarch64] Fix typo in aarch64.opt (dummping -> dumping).

PR target/80052
* aarch64.opt(verbose-cost-dump): Fix typo.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/aarch64/aarch64.opt

[Bug c++/70631] Warn about redundant comparisons with -Wlogical-op

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

--- Comment #2 from Martin Sebor  ---
*** Bug 80085 has been marked as a duplicate of this bug. ***

gcc-bugs@gcc.gnu.org

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

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=60759,
   ||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=69602,
   ||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=71472
 Resolution|--- |DUPLICATE

--- Comment #2 from Martin Sebor  ---
Bug 71472 seems pretty close but it's about ||.

Bug 69602 had some discussion recently but it's about what's viewed as a false
positive by some, while this one is a false negative.

I also found bug 60759 but that one is about implicit int to bool conversion,
so it's not quite the same either.

But I think I've finally found it: bug 70631.  Thus resolving as duplicate of
that one.

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

[Bug c++/70631] Warn about redundant comparisons with -Wlogical-op

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||msebor at gcc dot gnu.org
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=60759,
   ||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=69602,
   ||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=71472
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
Confirmed.  For a user's point of view I'd be inclined to view it as a bug
rather than an enhancement, but a review of the implementation suggests this
case just isn't handled.  I.e., the warning is working as intended and needs to
be enhanced to handle these expressions.

See also pr60759, pr69602, and pr71472 for other bugs/enhancements affecting
-Wlogical-op.

[Bug tree-optimization/80072] [7 Regression] ICE in gimple_build_assign_1 with -O3 -march=broadwell/skylake-avx512

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

Jakub Jelinek  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

[Bug tree-optimization/80072] [7 Regression] ICE in gimple_build_assign_1 with -O3 -march=broadwell/skylake-avx512

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

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
I'll have a look.

[Bug c++/80073] [7 Regression] ICE with virtual base

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

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 c++/79960] [5/6 Regression] Class template partial specializations for const volatile types don't match

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

Jason Merrill  changed:

   What|Removed |Added

  Known to work||7.0
Summary|[5/6/7 Regression] Class|[5/6 Regression] Class
   |template partial|template partial
   |specializations for const   |specializations for const
   |volatile types don't match  |volatile types don't match
  Known to fail|7.0 |

--- Comment #5 from Jason Merrill  ---
Fixed on trunk so far.

[Bug sanitizer/80018] ICE in expand_expr_addr_expr_1, at expr.c:7790 w/ -fsanitize=object-size

2017-03-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80018

Marek Polacek  changed:

   What|Removed |Added

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

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

[Bug sanitizer/79993] [5/6/7 Regression] ICE in tree_to_uhwi, at tree.c:7344

2017-03-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79993

Marek Polacek  changed:

   What|Removed |Added

   Target Milestone|--- |5.5
Summary|ICE in tree_to_uhwi, at |[5/6/7 Regression] ICE in
   |tree.c:7344 |tree_to_uhwi, at
   ||tree.c:7344

[Bug sanitizer/79993] ICE in tree_to_uhwi, at tree.c:7344

2017-03-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79993

--- Comment #2 from Marek Polacek  ---
Started with

commit d680c844a90ba12a0b12f7d206d697dc32d2cfee
Author: jason 
Date:   Thu May 9 16:43:43 2013 +

N3639 C++1y VLA diagnostics

* decl.c (grokdeclarator): Complain about reference, pointer, or
typedef to VLA.
(create_array_type_for_decl): Complain about array of VLA.
* pt.c (tsubst): Likewise.
* rtti.c (get_tinfo_decl): Talk about "array of runtime bound".
* semantics.c (finish_decltype_type): Complain about decltype of
VLA.
* typeck.c (cp_build_addr_expr_1): Complain about VLA.
(cxx_sizeof_or_alignof_type): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198746
138bc75d-0d04-0410-961f-82ee72b054a4

before that:
pr78201.C:11:15: error: variable-sized object ‘a’ may not be initialized
   char a[e] = "";
   ^

[Bug fortran/79841] Inconsistent diagnostics in fortran/openmp.c, function check_symbol_not_pointer

2017-03-17 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79841

--- Comment #8 from Jerry DeLisle  ---
(In reply to Roland Illig from comment #6)
> Could you perhaps make all 6 messages in that function follow the same
> syntax?

Will do

[Bug sanitizer/79993] ICE in tree_to_uhwi, at tree.c:7344

2017-03-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79993

Marek Polacek  changed:

   What|Removed |Added

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

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

[Bug target/79951] ICE in extract_insn, at recog.c:2311 on ppc64le with -mno-cmpb

2017-03-17 Thread pthaugen at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79951

--- Comment #2 from Pat Haugen  ---
Author: pthaugen
Date: Fri Mar 17 16:42:29 2017
New Revision: 246228

URL: https://gcc.gnu.org/viewcvs?rev=246228&root=gcc&view=rev
Log:
PR target/79951
* config/rs6000/rs6000.md (copysign3_fcpsgn): Test
for VECTOR_UNIT_VSX_P (mode) too.
* gcc.target/powerpc/pr79951.c: New.


Added:
trunk/gcc/testsuite/gcc.target/powerpc/pr79951.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.md
trunk/gcc/testsuite/ChangeLog

[Bug c++/80084] [7 regression] wrong code for decomposition declaration with debug iterator

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

--- Comment #2 from Jakub Jelinek  ---
I'll have a look tomorrow.

[Bug c++/78345] [5/6/7 Regression] ICE on invalid c++ code on x86_64-linux-gnu (internal compiler error: in cxx_eval_outermost_constant_expr, at cp/constexpr.c:4464)

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

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/80048] gcc/sese.c: PVS-Studio: Improper Release of Memory Before Removing Last Reference (CWE-401)

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

Martin Sebor  changed:

   What|Removed |Added

 CC||msebor at gcc dot gnu.org
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=80087

--- Comment #4 from Martin Sebor  ---
I opened bug 80087 to consider enhancing -Wtautological-compare so as to detect
and diagnose this class of problems.

[Bug tree-optimization/80087] missing -Wtautological-compare with non-constant operands

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

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
   Severity|normal  |enhancement

[Bug tree-optimization/80087] New: missing -Wtautological-compare with non-constant operands

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

Bug ID: 80087
   Summary: missing -Wtautological-compare with non-constant
operands
   Product: gcc
   Version: 7.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 test case below, reduced from bug 80048, shows that GCC diagnoses only
trivial cases of pointless comparisons.  Enhancing the warning to (also) run
later, with the benefit of data flow analysis, as opposed to during parsing,
would make it possible to diagnose some of these less obvious bugs.

$ cat a.c && gcc -O2 -S -Wall -Wextra -Wpedantic a.c
void f (int);

void f1 (int n)
{
  if (n != n)   // warning, ok
f (n);

  int i = n;
  if (i != n)   // missing warning
f (i);

  for (int i = n; i != n; ++i)   // missing warning
f (i);
}

struct S { int *a, *b; };

void f2 (struct S *s)
{
  for (int *p = s->a; p != s->a; ++p)   // missing warning
f (*p);
}
a.c: In function ‘f1’:
a.c:5:9: warning: self-comparison always evaluates to false
[-Wtautological-compare]
   if (n != n)   // warning, ok
 ^~

[Bug rtl-optimization/80086] New: ICE: in extract_constrain_insn, at recog.c:2213 for the gcc.dg/vect/slp-perm-6.c test on MIPS

2017-03-17 Thread tomtab at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80086

Bug ID: 80086
   Summary: ICE: in extract_constrain_insn, at recog.c:2213 for
the gcc.dg/vect/slp-perm-6.c test on MIPS
   Product: gcc
   Version: 7.0.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tomtab at gcc dot gnu.org
  Target Milestone: ---

Created attachment 40995
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40995&action=edit
reduced test case

gcc.dg/vect/slp-perm-6.c is failing on GCC 7 for mips-mti-elf (but not for
mips-mti-linux-gnu) with the following ICE:

t.c: In function ‘foo’:
t.c:40:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 309 166 295 2 (parallel [
(set (reg/f:DI 4 $4 [309])
(symbol_ref/u:DI ("*.LC10") [flags 0x2]))
(clobber (scratch:DI))
]) "t.c":25 289 {*lea64}
 (nil))
t.c:40:1: internal compiler error: in extract_constrain_insn, at recog.c:2213
0xddd4b9 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
gcc/gcc/rtl-error.c:108
0xddd51a _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
gcc/gcc/rtl-error.c:119
0xd84c18 extract_constrain_insn(rtx_insn*)
gcc/gcc/recog.c:2213
0xc505c2 check_rtl
gcc/gcc/lra.c:2128
0xc51124 lra(_IO_FILE*)
gcc/gcc/lra.c:2546
0xbf8ddf do_reload
gcc/gcc/ira.c:5451
0xbf92da execute
gcc/gcc/ira.c:5635

I've attached a (slightly) reduced version of the test case.

Here's the command I'm using:
mips-mti-elf-gcc t.c -mabi=64 -mmsa -ftree-vectorize -O2 -S -o a.s

Robert Suchanek has taken a look at this and came up with a potential fix,
and Matthew Fortune has encountered a very similar problem recently.

[Bug c++/80084] [7 regression] wrong code for decomposition declaration with debug iterator

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

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||wrong-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
 CC||jakub at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely  ---
Possibly related to the debug iterator having non-trivial copy constructor
and/or destructor. I'm not sure why else it would fail only in debug mode.

N.B. you can use  and __gnu_debug::vector to use the same types
without _GLIBCXX_DEBUG, so you can mix std::vector and __gnu_debug::vector in
one translation unit (in case that helps analyse it).

[Bug target/80082] [5/6/7 regression] GCC incorrectly assumes Cortex-r[578] have 64-bit single-copy atomic LDRD

2017-03-17 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P1  |P2
   Assignee|unassigned at gcc dot gnu.org  |ktkachov at gcc dot 
gnu.org

--- Comment #4 from ktkachov at gcc dot gnu.org ---
P2 as the bug appears in a released compiler

[Bug target/80082] [5/6/7 regression] GCC incorrectly assumes Cortex-r[578] have 64-bit single-copy atomic LDRD

2017-03-17 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||ktkachov at gcc dot gnu.org

--- Comment #3 from ktkachov at gcc dot gnu.org ---
Confirmed.
The problem is that these Cortex-R cores combined with the bit_adiv isa bit end
up having the same feature set as armv7ve as far as GCC can tell.

I think the best approach here is to create an isa_bit_lpae that's unique to
armv7ve (and higher A-profile arches)

gcc-bugs@gcc.gnu.org

2017-03-17 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80085

Marek Polacek  changed:

   What|Removed |Added

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

--- Comment #1 from Marek Polacek  ---
I think this is a dup, or at least I'd swear that I discussed this idea in the
BZ somewhere.  Until that's found, confirmed.

[Bug fortran/79930] Potentially Missed Optimisation for MATMUL / DOT_PRODUCT

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

Dominique d'Humieres  changed:

   What|Removed |Added

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

--- Comment #13 from Dominique d'Humieres  ---
Considering the traffic, confirmed!

[Bug fortran/79795] [5/6/7 Regression] Fortran ICE in resolve_symbol starting with r163221

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

Dominique d'Humieres  changed:

   What|Removed |Added

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

--- Comment #1 from Dominique d'Humieres  ---
Confirmed.

[Bug other/80050] gcc/genmatch.c: PVS-Studio: V590

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #7 from Martin Sebor  ---
I've raised bug 80085 for the missing -Wlogical-op warning.

gcc-bugs@gcc.gnu.org

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

Bug ID: 80085
   Summary: missing -Wlogical-op on a superfluous second operand
of &&
   Product: gcc
   Version: 7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The test case below, reduced from bug 80050 in GCC sources, shows a case of a
missing -Wlogical-op warning for the second operand of the && expression which
is trivially satisfied by the first operand.

$ cat u.c && gcc -S -Wall -Wextra -Wpedantic -Wlogical-op u.c
int f (int i)
{
  if (i == 123 && i != 456)
return 1;

  return 2;
}

[Bug rtl-optimization/59811] [5 Regression] Huge increase in memory usage and compile time in combine

2017-03-17 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59811

Jeffrey A. Law  changed:

   What|Removed |Added

Summary|[5/6/7 Regression] Huge |[5 Regression] Huge
   |increase in memory usage|increase in memory usage
   |and compile time in combine |and compile time in combine

--- Comment #18 from Jeffrey A. Law  ---
WRT c#16 -- I must have totally missed the differences in checking
configurations!  The gcc-6 and the trunk are comparable to gcc-4.7 with this
test when the compilers are similarly configured (checking was also responsible
for the huge register allocator jump).  I'm pretty sure gcc-5 doesn't have the
appropriate improvements.

I'm removing the gcc-6 and gcc-7 regression markers.

[Bug rtl-optimization/79910] [7 Regression] wrong code with -O -fweb

2017-03-17 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79910

Jeffrey A. Law  changed:

   What|Removed |Added

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

--- Comment #6 from Jeffrey A. Law  ---
Fixed by Bernd's patch on the trunk.

[Bug rtl-optimization/79910] [7 Regression] wrong code with -O -fweb

2017-03-17 Thread law at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79910

--- Comment #5 from Jeffrey A. Law  ---
Author: law
Date: Fri Mar 17 15:10:13 2017
New Revision: 246226

URL: https://gcc.gnu.org/viewcvs?rev=246226&root=gcc&view=rev
Log:
PR rtl-optimization/79910
* combine.c (record_used_regs): New static function.
(try_combine): Handle situations where there is an additional
instruction between I2 and I3 which needs to have a LOG_LINK
updated.

PR rtl-optimization/79910
* gcc.dg/torture/pr79910.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr79910.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine.c
trunk/gcc/testsuite/ChangeLog

[Bug c++/70515] Nested lambdas causing invalid captured pointers on some platforms

2017-03-17 Thread gcc at norgg dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70515

--- Comment #5 from Norgg  ---
Created attachment 40994
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40994&action=edit
gcc -v output for gcc 6.2.0

[Bug c++/70515] Nested lambdas causing invalid captured pointers on some platforms

2017-03-17 Thread gcc at norgg dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70515

Norgg  changed:

   What|Removed |Added

 CC||gcc at norgg dot org

--- Comment #4 from Norgg  ---
Created attachment 40993
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40993&action=edit
gcc -v output for gcc 5.4.0

(In reply to Martin Sebor from comment #3)
> I also cannot reproduce it with 7.0 on powepc64le or with 5.x on x86_64. 
> Can you please list the processor architectures you see this problem on? 
> (Providing the output of gcc -v should help.)

I can still reproduce this on my x86_64 Ubuntu system, in both g++ 5.4.1 and
6.2.0, gcc -v output from each attached.

[Bug tree-optimization/71437] [7 regression] Performance regression after r235817

2017-03-17 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71437

Jeffrey A. Law  changed:

   What|Removed |Added

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

--- Comment #23 from Jeffrey A. Law  ---
Fixed on the trunk.

[Bug tree-optimization/71437] [7 regression] Performance regression after r235817

2017-03-17 Thread law at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71437

--- Comment #22 from Jeffrey A. Law  ---
Author: law
Date: Fri Mar 17 15:01:56 2017
New Revision: 246225

URL: https://gcc.gnu.org/viewcvs?rev=246225&root=gcc&view=rev
Log:
PR tree-optimization/71437
* tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
conditional in the hash table first.
(vrp_dom_walker::before_dom_children): Extract condition from
ASSERT_EXPR.  Record condition, its inverion and any implied
conditions as well.

PR tree-optimization/71437
* gcc.dg/tree-ssa/pr71437.c: New test.
* gcc.dg/tree-ssa/20040305-1.c: Test earlier dump.
* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Adjust for jump threads
now caught by VRP, but which were previously caught by DOM.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr71437.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
trunk/gcc/tree-vrp.c

[Bug tree-optimization/80032] [6/7 Regression] C++ excessive stack usage (no stack reuse)

2017-03-17 Thread jan.smets at nokia dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80032

--- Comment #9 from Jan Smets  ---
The alternative patch to gimplify.c seems to run fine.
Thanks

[Bug c++/80084] New: [7 regression] wrong code for decomposition declaration with debug iterator

2017-03-17 Thread lucdanton at free dot fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80084

Bug ID: 80084
   Summary: [7 regression] wrong code for decomposition
declaration with debug iterator
   Product: gcc
   Version: 7.0.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lucdanton at free dot fr
  Target Milestone: ---

I managed to reduce to this testcase:

//
#include 
#include 

struct aggr {
std::vector::iterator val;
};

void decomp(aggr arg)
{
auto& [val] = arg;

// fires
assert( &val == &arg.val );
}

int main()
{
// inlined decomp
{
aggr arg {};
auto& [val] = arg;

// fine
assert( &val == &arg.val );
}

decomp(aggr {});
}
//--

The assertion in decomp fires when the program is compiled with e.g.:

g++-trunk -std=c++1z main.cpp -D_GLIBCXX_DEBUG

According to my bisecting, this change was introduced by r245638.

[Bug target/80083] New: libgomp doacross2.f90 regtest fails with -mcpu=power9 -O1

2017-03-17 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80083

Bug ID: 80083
   Summary: libgomp doacross2.f90 regtest fails with -mcpu=power9
-O1
   Product: gcc
   Version: 7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: acsawdey at gcc dot gnu.org
CC: meissner at gcc dot gnu.org, wschmidt at gcc dot gnu.org
  Target Milestone: ---
Target: powerpc64*-*-* power9

This regression test fails but only with -O1 -mcpu=power9. Adding
-mno-vsx-small-integer makes it work but I don't know if that's just because it
perturbs the problem.

[Bug target/80082] [5/6/7 regression] GCC incorrectly assumes Cortex-r[578] have 64-bit single-copy atomic LDRD

2017-03-17 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082

Richard Earnshaw  changed:

   What|Removed |Added

Summary|[6/7 regression] GCC|[5/6/7 regression] GCC
   |incorrectly assumes |incorrectly assumes
   |Cortex-r[578] have 64-bit   |Cortex-r[578] have 64-bit
   |single-copy atomic LDRD |single-copy atomic LDRD

--- Comment #2 from Richard Earnshaw  ---
It looks as though this patch was then backported onto older releases as well,
so GCC-5 also regressed.

[Bug target/80082] [6/7 regression] GCC incorrectly assumes Cortex-r[578] have 64-bit single-copy atomic LDRD

2017-03-17 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082

Richard Earnshaw  changed:

   What|Removed |Added

Summary|GCC incorrectly assumes |[6/7 regression] GCC
   |Cortex-r[578] have 64-bit   |incorrectly assumes
   |single-copy atomic LDRD |Cortex-r[578] have 64-bit
   ||single-copy atomic LDRD

--- Comment #1 from Richard Earnshaw  ---
Introduced by r233658; cortex-r5 support pre-dates that, so a regression in
gcc-6 and -7.

[Bug target/80082] GCC incorrectly assumes Cortex-r[578] have 64-bit single-copy atomic LDRD

2017-03-17 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80082

Richard Earnshaw  changed:

   What|Removed |Added

   Keywords||wrong-code
 Target||arm
   Priority|P3  |P1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-03-17
   Target Milestone|--- |7.0
 Ever confirmed|0   |1

  1   2   >