[Bug debug/70578] internal compiler error: in output_index_string, at dwarf2out.c with -gsplit-dwarf

2017-01-31 Thread ishikawa at yk dot rim.or.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70578

ishikawa,chiaki  changed:

   What|Removed |Added

 CC||ishikawa at yk dot rim.or.jp

--- Comment #2 from ishikawa,chiaki  ---
Created attachment 40633
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40633&action=edit
preprocessed file that triggers the ICE.

I have also seen this bug with gcc version 6.3.0 20170124 (Debian 6.3.0-5) 

I am attaching a preprocessed file uvectr64.ii

gcc version (distributed under Debian GNU/Linux)

 gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-5'
--with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared
--enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/
--enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --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-6-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--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
Thread model: posix
gcc version 6.3.0 20170124 (Debian 6.3.0-5) 
ishikawa@debian-vbox-ci:/tmp$ 

I encountered a bug during a compilation of mozilla thunderbird. I used the
following command to compile the attached .ii file, and I got the following
ICE.
COMMAND LINE:
/usr/bin/g++-6 -std=gnu++11 -o uvectr64.o -c-gsplit-dwarf   \
-DNDEBUG=1 -DTRIMMED=1 -DU_COMMON_IMPLEMENTATION -DLOCALE_SNAME=92  \
-DUCONFIG_NO_BREAK_ITERATION -DUCONFIG_NO_TRANSLITERATION   \
-DUCONFIG_NO_REGULAR_EXPRESSIONS -DUCONFIG_NO_LEGACY_CONVERSION \
-DU_USING_ICU_NAMESPACE=0 -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1  \
-DU_CHARSET_IS_UTF8 -MD -MP -MF -Wall -Wc++11-compat\
-fno-builtin-strlen -Wl,--gdb-index -Dfdatasync=fdatasync   \
-DDEBUG_4GB_CHECK -DUSEHELGRIND=1 -fno-exceptions  \
-fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno  \
-pthread -g3 -Og -freorder-blocks \
-fno-omit-frame-pointer -frtti -fdiagnostics-color  \
./uvectr64.ii

ICE error:

new-hd1/extra/ishikawa/TB-3HG/NEW-COMMSRC/mozilla/intl/icu/source/common/uvectr64.cpp:213:3:
internal compiler error: in output_index_string, at dwarf2out.c:25635
 U_NAMESPACE_END
   ^
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.

However, if I remove "-gsplit-dwarf" from my command line, it seems to compile.

TIA

[Bug debug/70578] internal compiler error: in output_index_string, at dwarf2out.c with -gsplit-dwarf

2017-01-31 Thread ishikawa at yk dot rim.or.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70578

--- Comment #3 from ishikawa,chiaki  ---
I noticed that in my case, it could be related to a name space issue since
U_NAMESPACE_END "}}" is to close the corresponding U_NAMESPACE_BEGIN "extern
"C++" "{ namespace U_ICU_NAMESPACE {".

[Bug target/79295] [7 regression] gcc.target/powerpc/bcd-3.c fails starting with r244942

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79295

Richard Biener  changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
  Component|other   |target
   Target Milestone|--- |7.0

[Bug c++/79294] [7 Regression] ICE in convert_nontype_argument, at cp/pt.c:6812

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79294

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug c++/79290] [7 Regression] forming pointer to member function tries to access "__pfn"

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79290

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1
   Target Milestone|--- |7.0

[Bug tree-optimization/79286] [7 Regression] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode (but not in 64-bit mode)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79286

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1
 Status|NEW |ASSIGNED
Version|unknown |7.0
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org

--- Comment #3 from Richard Biener  ---
Mine (looks like a latent issue though).

[Bug ipa/79285] [7 Regression] new valgrind error in build

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79285

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug tree-optimization/79284] [7 Regression] ICE on valid code at -O3 on x86_64-linux-gnu: verify_gimple failed

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79284

Richard Biener  changed:

   What|Removed |Added

 Target||x86_64-*-*
   Priority|P3  |P1
Version|unknown |7.0

[Bug target/79299] [7 Regression] Operand size mismatch for `vpgatherqd' w/ -O3 -masm=intel -mavx512bw

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79299

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug c++/79298] [7 Regression] ICE on invalid C++ code on x86_64-linux-gnu: Segmentation fault

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79298

Richard Biener  changed:

   What|Removed |Added

   Keywords||error-recovery
   Priority|P3  |P4
Version|unknown |7.0
   Target Milestone|--- |7.0

[Bug c++/79296] [7 Regression] ICE in mangle_decl, at cp/mangle.c:3845

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79296

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug middle-end/79297] [7 Regression] ICE (segfault) in main_block_label

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79297

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1
   Target Milestone|--- |7.0

[Bug c++/79267] [6/7 Regression] internal compiler error with -O3 or -O2 -finline-functions

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79267

--- Comment #6 from Jakub Jelinek  ---
Author: jakub
Date: Tue Jan 31 08:33:36 2017
New Revision: 245053

URL: https://gcc.gnu.org/viewcvs?rev=245053&root=gcc&view=rev
Log:
PR tree-optimization/79267
* value-prof.c (gimple_ic): Only drop lhs for noreturn calls
if should_remove_lhs_p is true.

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

Added:
trunk/gcc/testsuite/g++.dg/opt/pr79267.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/value-prof.c

[Bug tree-optimization/79286] [7 Regression] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode (but not in 64-bit mode)

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79286

Martin Liška  changed:

   What|Removed |Added

 CC||amodra at gcc dot gnu.org

--- Comment #4 from Martin Liška  ---
My small test-case started to segfault with r235660.

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #24 from Eric Botcazou  ---
The root cause of this mess is actually init_emit:

  REGNO_POINTER_ALIGN (VIRTUAL_INCOMING_ARGS_REGNUM) = STACK_BOUNDARY;
  REGNO_POINTER_ALIGN (VIRTUAL_STACK_VARS_REGNUM) = STACK_BOUNDARY;
  REGNO_POINTER_ALIGN (VIRTUAL_STACK_DYNAMIC_REGNUM) = STACK_BOUNDARY;
  REGNO_POINTER_ALIGN (VIRTUAL_OUTGOING_ARGS_REGNUM) = STACK_BOUNDARY;

3 out of 4 are wrong for 32-bit SPARC.  VIRTUAL_STACK_DYNAMIC_REGNUM is fixable
but not VIRTUAL_INCOMING_ARGS_REGNUM & VIRTUAL_OUTGOING_ARGS_REGNUM, whose
offset is defined by the ABI.

The code in init_emit looks wrong to me, as STACK_BOUNDARY is documented as:

 -- Macro: STACK_BOUNDARY
 Define this macro to the minimum alignment enforced by hardware
 for the stack pointer on this machine.  The definition is a C
 expression for the desired alignment (measured in bits).  This
 value is used as a default if `PREFERRED_STACK_BOUNDARY' is not
 defined.  On most machines, this should be the same as
 `PARM_BOUNDARY'.

but it goes back to 1995; I guess nobody cared about it until Dominik's patch.

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #25 from Jakub Jelinek  ---
So do we want a target hook that can override these alignments, or new macros
for each of the alignments that default to STACK_BOUNDARY?

[Bug c++/79300] New: Wrong diagnostics position

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79300

Bug ID: 79300
   Summary: Wrong diagnostics position
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Let's consider following test-case:

$ cat memtable.cc
#include 
void
a ()
{
  long val_size;
  unsigned long encoded_len;
  char *buf, *p;
  assert ((p + val_size) - buf == encoded_len);
}


$ g++ memtable.cc -Wsign-compare -c
In file included from memtable.cc:1:0:
memtable.cc: In function ‘void a()’:
memtable.cc:8:32: warning: comparison between signed and unsigned integer
expressions [-Wsign-compare]
   assert ((p + val_size) - buf == encoded_len);
   ~^~~~

Tilda line ends after the first letter of 'encoded_len', which is wrong.

[Bug c++/70844] spurious -Wuseless-cast warning with inherited constructors

2017-01-31 Thread rs2740 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70844

TC  changed:

   What|Removed |Added

 CC||rs2740 at gmail dot com

--- Comment #1 from TC  ---
The attached test case doesn't reproduce in 6.2.0, presumably due to the fix
for 70972. The following (slightly modified) test case still produces a
-Wuseless-cast warning on trunk and 6.3.0:

struct base {
base (int const &);
};

struct derived : public base {
using base::base;
};

derived d(0);

What appears to be happening is that the inheriting constructor calls
forward_parm to perfectly forward the arguments, which in turn calls
build_static_cast to construct the equivalent of static_cast(p)
where p is of type const int &, which emits a -Wuseless-cast warning. 

Consistent with this hypothesis, 6.1 emits a warning for the original test case
because it was emitting the equivalent of static_cast(p) where `p`'s type
is `int`; GCC >= 6.2, which has the 70972 fix, emits the equivalent of
static_cast(p), which doesn't trigger the warning. GCC < 6 doesn't have
forward_parm and doesn't unconditionally build a static_cast, so doesn't hit
this warning either.

[Bug c++/79300] Wrong diagnostics position

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79300

Martin Liška  changed:

   What|Removed |Added

   Target Milestone|--- |7.0
  Known to fail||6.3.0, 7.0

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #26 from Eric Botcazou  ---
> So do we want a target hook that can override these alignments, or new
> macros for each of the alignments that default to STACK_BOUNDARY?

No strong opinion, but IMO the main issue is to arrange for the default to be
conservatively safe so that we don't have to go over the ~50 architectures.

[Bug testsuite/79272] FAIL: gcc.dg/ipa/pr77653.c scan-ipa-dump icf "Not unifying; alias cannot be created; target is discardable"

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79272

--- Comment #5 from Martin Liška  ---
Created attachment 40634
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40634&action=edit
Patch candidate

Thanks for dumps. This patch should fix your problems. Can you please test that
before I'll send that to ML?

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #27 from Jakub Jelinek  ---
(In reply to Eric Botcazou from comment #26)
> > So do we want a target hook that can override these alignments, or new
> > macros for each of the alignments that default to STACK_BOUNDARY?
> 
> No strong opinion, but IMO the main issue is to arrange for the default to
> be conservatively safe so that we don't have to go over the ~50
> architectures.

Well, at least at this point in GCC 7 development the fewer architectures we
change the better.

[Bug tree-optimization/79286] [7 Regression] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode (but not in 64-bit mode)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79286

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/79291] r244897 introduces alias related performance issues for daxpy on MIPS

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79291

Richard Biener  changed:

   What|Removed |Added

 Target||mips32r2
Summary|r244397 introduces alias|r244897 introduces alias
   |related performance issues  |related performance issues
   |for daxpy on MIPS   |for daxpy on MIPS

--- Comment #1 from Richard Biener  ---
Make sure to test after

2017-01-30  Richard Biener  

PR tree-optimization/79256
* targhooks.c (default_builtin_vector_alignment_reachable): Honor
BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
alignment on TYPE.
* tree.c (build_aligned_type): Set TYPE_USER_ALIGN.

I assume you are talking about mips32r2 in this bug.  mips doesn't override
ADJUST_FIELD_ALIGN or MAXIMUM_FIELD_ALIGNMENT or vector_alignment_reachable
so it should benefit from the fixes in that types bigger than the pointer size
can now be made properly aligned.

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #28 from Eric Botcazou  ---
> Well, at least at this point in GCC 7 development the fewer architectures we
> change the better.

Sure, but by changing the middle-end, you change all the architectures at once
and may break a fair number of them in the process.  At this point I'd lean
towards Bernd's position and revert again the get_dynamic_stack_size change,
since it relies on the very questionable settings of init_emit.

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #29 from Jakub Jelinek  ---
(In reply to Eric Botcazou from comment #28)
> > Well, at least at this point in GCC 7 development the fewer architectures we
> > change the better.
> 
> Sure, but by changing the middle-end, you change all the architectures at
> once and may break a fair number of them in the process.  At this point I'd
> lean towards Bernd's position and revert again the get_dynamic_stack_size
> change, since it relies on the very questionable settings of init_emit.

I have no problem with that for GCC 7 either.

[Bug middle-end/61677] False positive with -Wmaybe-uninitialized (predicate analysis, VRP)

2017-01-31 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61677

Jeffrey A. Law  changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #6 from Jeffrey A. Law  ---
The reduced testcase was fixed nearly two years ago.  However, the full
testcase still warns.  I have not tried to re-reduce the testcase.

[Bug tree-optimization/79291] r244897 introduces IV related performance issues for daxpy on MIPS by enabling peeling for alignment

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79291

--- Comment #2 from Richard Biener  ---
It also looks like mips lacks implementation of any of the vectorizer cost
hooks and thus defaults to default_builtin_vectorization_cost which means that
unaligned loads/stores have double cost.  And mips supports misaligned
loads/stores via movmisalign (for MSA).  For daxpy:

   for (i = 0;i < n; i++) {
dy[i] = dy[i] + da*dx[i];
}

the above makes peeling for alignment of dy[] profitable (and I'd generally
agree because esp. misaligned stores do have a real penalty - though likely
not when the store queue is not contended as likely in this case).

x86_64 peels for alignment as well and we get

.L6:
movups  (%rax,%r8), %xmm1
addl$1, %r9d
mulps   %xmm2, %xmm1
addps   (%r11,%r8), %xmm1
movaps  %xmm1, (%r11,%r8)
addq$16, %r8
cmpl%ebx, %r9d
jb  .L6

and similar base+index addressing.  IVO does see the indices are the same
though.

  # i_46 = PHI 
  prolog_loop_adjusted_niters.6_48 = (sizetype) prolog_loop_niters.5_34;
  niters.7_49 = niters.3_40 - prolog_loop_niters.5_34;
  bnd.8_69 = niters.7_49 >> 2;
  _75 = prolog_loop_adjusted_niters.6_48 * 4;
  vectp_dy.12_74 = dy_15(D) + _75;
  _80 = prolog_loop_adjusted_niters.6_48 * 4;
  vectp_dx.15_79 = dx_16(D) + _80;
  vect_cst__84 = {da_14(D), da_14(D), da_14(D), da_14(D)};
  _88 = prolog_loop_adjusted_niters.6_48 * 4;
  vectp_dy.20_87 = dy_15(D) + _88;

shows the missed CSE from the vectorizer (and a redundant IV).

During DR analysis we can in theory keep a list of stmts that share the
"same" DR (we have this for group reads already) and record the generated
IVs on the "master" DR.

A region-based CSE/DCE would still be my preference in the end.

[Bug c++/79300] Wrong diagnostics position

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79300

Richard Biener  changed:

   What|Removed |Added

Version|unknown |7.0
   Target Milestone|7.0 |---

[Bug middle-end/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

2017-01-31 Thread rearnsha at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #13 from Richard Earnshaw  ---
(In reply to Segher Boessenkool from comment #12)
> new_ready just adds insns to the ready list.  High latency isn't
> directly a problem: if we can schedule a high latency insn early
> speculatively, that is a _good_ thing!

Only if you're certain to need the result.  If you aren't then you're blocking
resources that might be used for other instructions to no useful purpose. 
Indeed, you might find that a tight loop now takes much longer because the
speculative insn is never used but now dominates the critical path.

If you're not certain to want the result you're probably better off letting the
hardware speculation do the work, it will probably know how to abandon high
latency operations if the path turns out to be false.

[Bug target/79282] [7 Regresion] FAIL: gcc.target/arm/neon-for-64bits-1.c scan-assembler-times vshr 0

2017-01-31 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79282

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-01-31
 CC||clyon at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from ktkachov at gcc dot gnu.org ---
So the failure goes away if I change the arch attribute of the last two
alternatives of the di3_neon pattern to neon_for_64bits from
avoid_neon_for_64bits so that they are disabled when NEON is not preferred, but
I see it was intentionally written this way, with many similar patterns in
arm.md having the same structure (first two alternatives with neon_for_64bits,
followed by the GPR alternatives, followed by two avoid_neon_for_64bits
alternatives).

Christophe, do you recall why it's structured that way?

[Bug tree-optimization/71691] [6/7 Regression] wrong code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu (Floating point exception)

2017-01-31 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71691

--- Comment #21 from Aldy Hernandez  ---
Author: aldyh
Date: Tue Jan 31 10:30:47 2017
New Revision: 245057

URL: https://gcc.gnu.org/viewcvs?rev=245057&root=gcc&view=rev
Log:
PR tree-optimization/71691
* bitmap.h (class auto_bitmap): New.
* tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
is_maybe_undefined instead of ssa_undefined_value_p.

Added:
trunk/gcc/testsuite/gcc.dg/loop-unswitch-5.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/bitmap.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/loop-unswitch-1.c
trunk/gcc/tree-ssa-loop-unswitch.c

[Bug tree-optimization/71691] [6 Regression] wrong code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu (Floating point exception)

2017-01-31 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71691

Aldy Hernandez  changed:

   What|Removed |Added

Summary|[6/7 Regression] wrong code |[6 Regression] wrong code
   |at -O3 in both 32-bit and   |at -O3 in both 32-bit and
   |64-bit modes on |64-bit modes on
   |x86_64-linux-gnu (Floating  |x86_64-linux-gnu (Floating
   |point exception)|point exception)

--- Comment #22 from Aldy Hernandez  ---
Fixed in trunk.  Removing GCC7 regression marker.

[Bug ipa/79285] [7 Regression] new valgrind error in build

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79285

--- Comment #3 from Martin Liška  ---
Author: marxin
Date: Tue Jan 31 10:54:41 2017
New Revision: 245058

URL: https://gcc.gnu.org/viewcvs?rev=245058&root=gcc&view=rev
Log:
Call symbol_summary<>::release instead of ~symbol_summary (PR ipa/79285).

2017-01-31  Martin Liska  

PR ipa/79285
* ipa-prop.c (ipa_free_all_node_params): Call release method
instead of ~sumbol_summary to not to trigger double times
dtor of hash_map.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c

[Bug c++/79301] New: With -Werror=pedantic outside C++17 mode, __has_cpp_attribute(fallthrough) is nonzero but [[fallthrough]] fails

2017-01-31 Thread andersk at mit dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79301

Bug ID: 79301
   Summary: With -Werror=pedantic outside C++17 mode,
__has_cpp_attribute(fallthrough) is nonzero but
[[fallthrough]] fails
   Product: gcc
   Version: 7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: andersk at mit dot edu
  Target Milestone: ---

One would expect code like this to silence the new -Wimplicit-fallthrough
warning that’s been added to -Wextra:

switch (x) {
case 0:
printf("zero\n");
#if __has_cpp_attribute(fallthrough)
[[fallthrough]];
#elif __has_cpp_attribute(gnu::fallthrough)
[[gnu::falthrough]];
#endif
case 1:
printf("zero or one\n");
}

However, this fails to compile with -Werror=pedantic in C++14 mode or earlier:
“error: ‘fallthrough’ is a C++17 feature; use ‘gnu::fallthrough’
[-Werror=pedantic]”.

__has_cpp_attribute(fallthrough) should evaluate to 0 if [[fallthrough]] is not
going to work.

[Bug tree-optimization/77318] [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90 -O (internal compiler error)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

--- Comment #10 from Richard Biener  ---
Ok, so the issue is we have a region that is inside of loop 1 but does not
fully cover it and in

/* Returns a linear expression for tree T evaluated in PBB.  */

static isl_pw_aff *
create_pw_aff_from_tree (poly_bb_p pbb, tree t)
{
  scop_p scop = PBB_SCOP (pbb);

  t = scalar_evolution_in_region (scop->scop_info->region, pbb_loop (pbb), t);

when analyzing _62 from a condition on a block inside the region (the blocks
loop father is loop 1) pbb_loop returns loop 3 (pbb->black_box->bb is its
loop header).

_62 is defined inside the region, but then

  if (TREE_CODE (t) != SSA_NAME
  || loop_in_sese_p (loop, region))
/* FIXME: we would need instantiate SCEV to work on a region, and be more
   flexible wrt. memory loads that may be invariant in the region.  */
return instantiate_scev (before, loop,
 analyze_scalar_evolution (loop, t));

here loop is loop 3 and thus we call analyze_scalar_evolution with bogus input
which just returns t, instantiate_scev then instantiates it to
(integer(kind=8)) (integer(kind=4)) {(unsigned int) pretmp_123 + 4294967295, +,
1}_1 but this has an evolution in a loop that is not in the region and boom.

Eventually that pbb is bogus from the start or rather that we are using pbb
when adding dominating conditions(?).

Index: gcc/graphite-sese-to-poly.c
===
--- gcc/graphite-sese-to-poly.c (revision 245052)
+++ gcc/graphite-sese-to-poly.c (working copy)
@@ -436,11 +436,11 @@ extract_affine (scop_p s, tree e, __isl_
 /* Returns a linear expression for tree T evaluated in PBB.  */

 static isl_pw_aff *
-create_pw_aff_from_tree (poly_bb_p pbb, tree t)
+create_pw_aff_from_tree (poly_bb_p pbb, loop_p loop, tree t)
 {
   scop_p scop = PBB_SCOP (pbb);

-  t = scalar_evolution_in_region (scop->scop_info->region, pbb_loop (pbb), t);
+  t = scalar_evolution_in_region (scop->scop_info->region, loop, t);

   gcc_assert (!chrec_contains_undetermined (t));
   gcc_assert (!automatically_generated_chrec_p (t));
@@ -455,8 +455,9 @@ create_pw_aff_from_tree (poly_bb_p pbb,
 static void
 add_condition_to_pbb (poly_bb_p pbb, gcond *stmt, enum tree_code code)
 {
-  isl_pw_aff *lhs = create_pw_aff_from_tree (pbb, gimple_cond_lhs (stmt));
-  isl_pw_aff *rhs = create_pw_aff_from_tree (pbb, gimple_cond_rhs (stmt));
+  loop_p loop = gimple_bb (stmt)->loop_father;
+  isl_pw_aff *lhs = create_pw_aff_from_tree (pbb, loop, gimple_cond_lhs
(stmt));
+  isl_pw_aff *rhs = create_pw_aff_from_tree (pbb, loop, gimple_cond_rhs
(stmt));

   isl_set *cond;
   switch (code)

fixes that but then we ICE in

#1  0x019bfc12 in extract_affine (s=0x2ab42a0, 
e=, space=0x2ae7790)
at /space/rguenther/src/svn/gcc-7-branch/gcc/graphite-sese-to-poly.c:409
408 case SSA_NAME:
409   gcc_assert (-1 != parameter_index_in_region_1 (e, s->scop_info)
410   || !invariant_in_sese_p_rec (e, s->scop_info->region,
NULL));

because the SSA name failed to register as parameter(?) - it is actually
defined inside!  But we run into

tree
scalar_evolution_in_region (const sese_l ®ion, loop_p loop, tree t)
{
...
  if (invariant_in_sese_p_rec (t, region, &has_vdefs))
return t;

which looks correct -- but it seems that extract_affine assumes we
"instantiate" an expression up to the regions params...

So maybe that assert is just another bogus one or scalar_evolution_in_region
is bogus (instantiating before the region entry returns a chrec with an
evolution in a loop not inside the region again...).

Well.  Doing

Index: gcc/graphite-sese-to-poly.c
===
--- gcc/graphite-sese-to-poly.c (revision 245052)
+++ gcc/graphite-sese-to-poly.c (working copy)
@@ -407,7 +407,7 @@ extract_affine (scop_p s, tree e, __isl_

 case SSA_NAME:
   gcc_assert (-1 != parameter_index_in_region_1 (e, s->scop_info)
- || !invariant_in_sese_p_rec (e, s->scop_info->region, NULL));
+ || defined_in_sese_p (e, s->scop_info->region));
   res = extract_affine_name (s, e, space);
   break;

fixes the testcase and still passes graphite.exp for all languages w/ {,-m32}.

[Bug libgcc/79280] mbtowc converts only one byte

2017-01-31 Thread janturon at email dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79280

Jan Turoň  changed:

   What|Removed |Added

 Resolution|INVALID |WORKSFORME

[Bug tree-optimization/77318] [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90 -O (internal compiler error)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/71311] [7 Regression] spec2006 test case 416.gamess fails since r235817

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71311

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #10 from Richard Biener  ---
Seems to be fixed again.  Let's close this (reverting the pattern doesn't
reproduce it either).

[Bug libgcc/79280] mbtowc converts only one byte

2017-01-31 Thread janturon at email dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79280

--- Comment #2 from Jan Turoň  ---
setlocale does some change, but still not right:

My system locale is cs_CZ, the default codepage is 1250, console uses 852. I
Have these results, considering this code:

const char *str = "ř";
mbtowc(&(a.w), str, 6);
printf("\na = %hhx%hhx", a.bytes.b2, a.bytes.b1);

setlocale(LC_CTYPE,"C"); // gives 0c5
setlocale(LC_CTYPE,"Czech_Czech Republic.1250"); // (same as "") gives 139
setlocale(LC_CTYPE,"Czech_Czech Republic.852"); // (same as "") gives 253c

The expected result is 159 (Unicode number of "ř").

[Bug target/79282] [7 Regresion] FAIL: gcc.target/arm/neon-for-64bits-1.c scan-assembler-times vshr 0

2017-01-31 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79282

--- Comment #3 from Christophe Lyon  ---
I don't remember well, but it could be related to Richard's comment about
cleaning the onlya8 flag:
https://gcc.gnu.org/ml/gcc-patches/2012-12/msg01063.html

[Bug tree-optimization/79286] [7 Regression] wrong code at -O3 on x86_64-linux-gnu in 32-bit mode (but not in 64-bit mode)

2017-01-31 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79286

Alan Modra  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||amodra at gmail dot com
   Assignee|unassigned at gcc dot gnu.org  |amodra at gcc dot 
gnu.org

[Bug ipa/79285] [7 Regression] new valgrind error in build

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79285

Martin Liška  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/79302] New: ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

Bug ID: 79302
   Summary: ICE in add_loop_constraints, at
graphite-sese-to-poly.c:933 building 445.gobmk
   Product: gcc
   Version: 7.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---
Target: x86_64-*-*

On core-avx2 with -Ofast -march=native -floop-nest-optimize

[Bug tree-optimization/79303] New: ICE: Segmentation fault from apply_schedule_map_to_scop, graphite-optimize-isl.c:429 building 464.h264ref

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79303

Bug ID: 79303
   Summary: ICE: Segmentation fault from
apply_schedule_map_to_scop,
graphite-optimize-isl.c:429 building 464.h264ref
   Product: gcc
   Version: 7.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---
Target: x86_64-*-*

With -Ofast -march=native -floop-nest-optimize on core-avx2.

[Bug middle-end/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

2017-01-31 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #14 from Segher Boessenkool  ---
I'm not sure how to read your remark.  An insn where the result is
not used is not on the critical path by definition; and you seem to
be arguing for -fno-sched-spec by default?

[Bug tree-optimization/79302] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

--- Comment #1 from Richard Biener  ---
> ./cc1 -quiet -fpreprocessed getopt.i -quiet -dumpbase getopt.c -auxbase-strip 
> utils/getopt.o -O2 -version -floop-nest-optimize -o getopt.s
GNU C11 (GCC) version 7.0.1 20170131 (experimental) [trunk revision 245052]
(x86_64-pc-linux-gnu)
compiled by GNU C version 4.8.5, GMP version 5.1.3, MPFR version 3.1.2,
MPC version 1.0.2, isl version 0.15
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C11 (GCC) version 7.0.1 20170131 (experimental) [trunk revision 245052]
(x86_64-pc-linux-gnu)
compiled by GNU C version 4.8.5, GMP version 5.1.3, MPFR version 3.1.2,
MPC version 1.0.2, isl version 0.15
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 678ed9022a271b5b37b7e377eb717846
utils/getopt.c: In function ‘exchange’:
utils/getopt.c:300:1: internal compiler error: in add_loop_constraints, at
graphite-sese-to-poly.c:934
0x191fe29 add_loop_constraints
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite-sese-to-poly.c:934
0x192022d build_iteration_domains
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite-sese-to-poly.c:1002
0x192038a build_iteration_domains
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite-sese-to-poly.c:1041
0x192106f build_poly_scop(scop*)
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite-sese-to-poly.c:1365
0x1904f06 graphite_transform_loops()
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite.c:319
0x1904fb8 graphite_transforms
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite.c:356
0x19050db execute
/space/rguenther/src/svn/gcc-7-branch/gcc/graphite.c:433
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.


reducing testcase.

[Bug middle-end/78468] [7 regression] libgomp.c/reduction-10.c and many more FAIL

2017-01-31 Thread vogt at linux dot vnet.ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468

--- Comment #30 from Dominik Vogt  ---
(In reply to Eric Botcazou from comment #24)
> The root cause of this mess is actually init_emit:
> 
>   REGNO_POINTER_ALIGN (VIRTUAL_INCOMING_ARGS_REGNUM) = STACK_BOUNDARY;
>   REGNO_POINTER_ALIGN (VIRTUAL_STACK_VARS_REGNUM) = STACK_BOUNDARY;
>   REGNO_POINTER_ALIGN (VIRTUAL_STACK_DYNAMIC_REGNUM) = STACK_BOUNDARY;
>   REGNO_POINTER_ALIGN (VIRTUAL_OUTGOING_ARGS_REGNUM) = STACK_BOUNDARY;
> 
> 3 out of 4 are wrong for 32-bit SPARC.  VIRTUAL_STACK_DYNAMIC_REGNUM is
> fixable but not VIRTUAL_INCOMING_ARGS_REGNUM & VIRTUAL_OUTGOING_ARGS_REGNUM,
> whose offset is defined by the ABI.

So there's a fundamental mismatch between the middleend's stack layout and
target ABIs (Sparc, maybe others)?  Looks like this never showed up because the
values are not used anyway.  Grepping through the sources and a regression test
with bogus values (255) instead of STACK_BOUNDARY shows no uses of the other
three, and only the one use of REGNO_POINTER_ALIGN
(VIRTUAL_STACK_DYNAMIC_REGNUM) in explow.c.

> The code in init_emit looks wrong to me, as STACK_BOUNDARY is documented as:
> 
>  -- Macro: STACK_BOUNDARY
>  Define this macro to the minimum alignment enforced by hardware
>  for the stack pointer on this machine.  The definition is a C
>  expression for the desired alignment (measured in bits).  This
>  value is used as a default if `PREFERRED_STACK_BOUNDARY' is not
>  defined.  On most machines, this should be the same as
>  `PARM_BOUNDARY'.
> 
> but it goes back to 1995; I guess nobody cared about it until Dominik's
> patch.

There are more potentially questionable uses of STACK_BOUNDARY that may not
match its documentation.  Hard to tell without analysing the individual uses in
detail.

So, this should be fixable by a simple target macro VIRTUAL_STACK_DYNAMIC_ALIGN
or something like that (not adressing the INCOMING/OUTGOING_ARGS alignment
thing.)

[Bug tree-optimization/79302] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

--- Comment #2 from Richard Biener  ---
Created attachment 40635
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40635&action=edit
autoreduced testcase

This one is probably because the region has an entry loop-header -> loop-block
and an exit loop-latch -> loop-header.  So its a loop without its header.

I suppose a backedge as region exit isn't very well handled...

[Bug c++/79304] New: [7 Regression] diagnostic shows bogus expression ((X*)this)->.c

2017-01-31 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304

Bug ID: 79304
   Summary: [7 Regression] diagnostic shows bogus expression
((X*)this)->.c
   Product: gcc
   Version: 7.0.1
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

struct C { };

template
struct X
{
  C* c;

  void f() {
this->c.s();
  }
};

int main()
{
  X x;
  x.f();
}

x.cc: In member function 'void X::f()':
x.cc:9:13: error: request for member 's' in '((X*)this)->.c', which is of
pointer type 'C*' (maybe you meant to use '->' ?)
 this->c.s();
 ^

The ->.c part is bogus, that doesn't appear in the source, and isn't valid C++.

GCC 6 is correct:

x.cc: In instantiation of 'void X::f() [with T = int]':
x.cc:16:7:   required from here
x.cc:9:13: error: request for member 's' in '((X*)this)->X::c', which
is of pointer type 'C*' (maybe you meant to use '->' ?)
 this->c.s();
 ^


If it's not a template we get ((X*)this)->X::c which is also correct.

[Bug c++/79304] [7 Regression] diagnostic shows bogus expression ((X*)this)->.c

2017-01-31 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-01-31
  Known to work||5.4.0, 6.3.0
 Ever confirmed|0   |1

[Bug tree-optimization/79302] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-01-31
 CC||marxin at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from Martin Liška  ---
Reduced test-case:

*a;
b;
f ()
{
  int c;
  while (b)
if (-b > c)
  {
int d, e;
for (; e < d; e++)
  a[e] = d;
  }
else
  {
int d, e;
for (; e < d; e++)
  a[e] = a;
  }
}

[Bug tree-optimization/79302] [6/7 Regression] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

Martin Liška  changed:

   What|Removed |Added

 CC||spop at gcc dot gnu.org

--- Comment #4 from Martin Liška  ---
Started to ICE with r232812.

[Bug tree-optimization/79291] r244897 introduces IV related performance issues for daxpy on MIPS by enabling peeling for alignment

2017-01-31 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79291

--- Comment #3 from amker at gcc dot gnu.org ---
(In reply to Richard Biener from comment #2)
> It also looks like mips lacks implementation of any of the vectorizer cost
> hooks and thus defaults to default_builtin_vectorization_cost which means
> that
> unaligned loads/stores have double cost.  And mips supports misaligned
> loads/stores via movmisalign (for MSA).  For daxpy:
> 
>for (i = 0;i < n; i++) {
> dy[i] = dy[i] + da*dx[i];
> }
> 
> the above makes peeling for alignment of dy[] profitable (and I'd generally
> agree because esp. misaligned stores do have a real penalty - though likely
> not when the store queue is not contended as likely in this case).
> 
> x86_64 peels for alignment as well and we get
> 
> .L6:
> movups  (%rax,%r8), %xmm1
> addl$1, %r9d
> mulps   %xmm2, %xmm1
> addps   (%r11,%r8), %xmm1
> movaps  %xmm1, (%r11,%r8)
> addq$16, %r8
> cmpl%ebx, %r9d
> jb  .L6
> 
> and similar base+index addressing.  IVO does see the indices are the same
> though.
> 
>   # i_46 = PHI 
>   prolog_loop_adjusted_niters.6_48 = (sizetype) prolog_loop_niters.5_34;
>   niters.7_49 = niters.3_40 - prolog_loop_niters.5_34;
>   bnd.8_69 = niters.7_49 >> 2;
>   _75 = prolog_loop_adjusted_niters.6_48 * 4;
>   vectp_dy.12_74 = dy_15(D) + _75;
>   _80 = prolog_loop_adjusted_niters.6_48 * 4;
>   vectp_dx.15_79 = dx_16(D) + _80;
>   vect_cst__84 = {da_14(D), da_14(D), da_14(D), da_14(D)};
>   _88 = prolog_loop_adjusted_niters.6_48 * 4;
>   vectp_dy.20_87 = dy_15(D) + _88;
> 
> shows the missed CSE from the vectorizer (and a redundant IV).
Do you mean the IV for exit comparison?  Yes, iv_elimination could be improved,
especially we know there must be no wrapping in address from vectorization
analyzer.

> 
> During DR analysis we can in theory keep a list of stmts that share the
> "same" DR (we have this for group reads already) and record the generated
> IVs on the "master" DR.
Grouping DRs is helpful, but not optimal.  For case like PR68030, we have
starting addresses for vectors as below:
  base1 + offset + init1;
  base1 + offset + init2;
  base1 + offset + init3;
  base1 + offset + init4;

  base2 + offset + init5;
We may still need to reassociate constant part (init) out of offset.  Simply
grouping/reassociation DRs of the same memory object still has problem with the
last one.

I will send patches both for vectroizer and IVOPT as next stage1 opens.
> 
> A region-based CSE/DCE would still be my preference in the end.

[Bug tree-optimization/71824] [6/7 Regression] ICE when compiling libiberty with Graphite loop optimizations

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71824

--- Comment #8 from Martin Liška  ---
Full back-trace:

0x1307b83 add_loop_constraints
../../gcc/graphite-sese-to-poly.c:933
0x1307c7b build_iteration_domains
../../gcc/graphite-sese-to-poly.c:1001
0x1307d0a build_iteration_domains
../../gcc/graphite-sese-to-poly.c:1040
0x13084ef build_poly_scop(scop*)
../../gcc/graphite-sese-to-poly.c:1364
0x12f2758 graphite_transform_loops()
../../gcc/graphite.c:319
0x12f2d00 graphite_transforms
../../gcc/graphite.c:356
0x12f2d00 execute
../../gcc/graphite.c:433

[Bug tree-optimization/79302] [6/7 Regression] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

Martin Liška  changed:

   What|Removed |Added

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

--- Comment #5 from Martin Liška  ---
Dup.

[Bug target/77687] frame access after release without redzone on powerpc

2017-01-31 Thread hainque at adacore dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77687

--- Comment #4 from hainque at adacore dot com  ---
Thanks again for your help on this Segher!

> On Jan 27, 2017, at 01:54 , segher at gcc dot gnu.org 
>  wrote:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77687
> 
> Segher Boessenkool  changed:
> 
>   What|Removed |Added
> 
>  Known to work||7.0
> 
> -- 
> You are receiving this mail because:
> You reported the bug.

[Bug tree-optimization/79302] [6/7 Regression] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

--- Comment #6 from Richard Biener  ---
But it smells similar to PR77318.

  gcc_assert (!chrec_contains_undetermined (nb_iters));
  nb_iters = scalar_evolution_in_region (region, loop, nb_iters);
  gcc_assert (!chrec_contains_undetermined (nb_iters));

nb_iters is (unsigned int) _2 + 4294967295, defined outside of loop,
loops outer loop is not fully contained within the region.
scalar_evolution_in_region goes

  if (TREE_CODE (t) != SSA_NAME
  || loop_in_sese_p (loop, region))
/* FIXME: we would need instantiate SCEV to work on a region, and be more
   flexible wrt. memory loads that may be invariant in the region.  */
return instantiate_scev (before, loop,
 analyze_scalar_evolution (loop, t));

where analyze_scalar_evolution just does nothing (obviously) but
instantiate_scev returns scev_not_known because in 'before' we have
_2 = middle_39 - bottom_30 and that's not analyzable (but graphite
expects instantiation to stop there, evaluating to this symbolically).

But we do

static tree
instantiate_scev_name (basic_block instantiate_below,
   struct loop *evolution_loop, struct loop *inner_loop,
   tree chrec,
   bool *fold_conversions,
   int size_expr)
{
...
  /* If the analysis yields a parametric chrec, instantiate the
 result again.  */
  res = analyze_scalar_evolution (def_loop, chrec);

and that fails and we run in circles via

  else if (res != chrec_dont_know)
{
  if (inner_loop
  && def_bb->loop_father != inner_loop
  && !flow_loop_nested_p (def_bb->loop_father, inner_loop))
/* ???  We could try to compute the overall effect of the loop here. 
*/
res = chrec_dont_know;
  else
res = instantiate_scev_r (instantiate_below, evolution_loop,
  inner_loop, res,
  fold_conversions, size_expr);

with the same SSA name again and again until we give up due to the recursion
limit.  So the expectation of GRAPHITE is sth like

Index: gcc/tree-scalar-evolution.c
===
--- gcc/tree-scalar-evolution.c (revision 245058)
+++ gcc/tree-scalar-evolution.c (working copy)
@@ -280,6 +280,7 @@ along with GCC; see the file COPYING3.
 #include "params.h"
 #include "tree-ssa-propagate.h"
 #include "gimple-fold.h"
+#include "cfgexpand.h"

 static tree analyze_scalar_evolution_1 (struct loop *, tree, tree);
 static tree analyze_scalar_evolution_for_address_of (struct loop *loop,
@@ -2460,9 +2461,14 @@ instantiate_scev_name (basic_block insta
/* ???  We could try to compute the overall effect of the loop here. 
*/
res = chrec_dont_know;
   else
-   res = instantiate_scev_r (instantiate_below, evolution_loop,
- inner_loop, res,
- fold_conversions, size_expr);
+   {
+ if (res == chrec
+ && is_gimple_assign (SSA_NAME_DEF_STMT (res)))
+   res = gimple_assign_rhs_to_tree (SSA_NAME_DEF_STMT (res));
+ res = instantiate_scev_r (instantiate_below, evolution_loop,
+   inner_loop, res,
+   fold_conversions, size_expr);
+   }
 }

   /* Store the correct value to the cache.  */

which fixes the ICE.  But we can probably simply deal with this case in
add_loop_constraints with

Index: gcc/graphite-sese-to-poly.c
===
--- gcc/graphite-sese-to-poly.c (revision 245058)
+++ gcc/graphite-sese-to-poly.c (working copy)
@@ -930,7 +931,11 @@ add_loop_constraints (scop_p scop, __isl
   /* loop_i <= expr_nb_iters */
   gcc_assert (!chrec_contains_undetermined (nb_iters));
   nb_iters = scalar_evolution_in_region (region, loop, nb_iters);
-  gcc_assert (!chrec_contains_undetermined (nb_iters));
+  if (chrec_contains_undetermined (nb_iters))
+{
+  isl_space_free (space);
+  return domain;
+}

   isl_pw_aff *aff_nb_iters = extract_affine (scop, nb_iters,
 isl_space_copy (space));

[Bug tree-optimization/79302] [6/7 Regression] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

Martin Liška  changed:

   What|Removed |Added

 Resolution|FIXED   |DUPLICATE

--- Comment #7 from Martin Liška  ---
Dup.

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

[Bug tree-optimization/71824] [6/7 Regression] ICE when compiling libiberty with Graphite loop optimizations

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71824

Martin Liška  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #9 from Martin Liška  ---
*** Bug 79302 has been marked as a duplicate of this bug. ***

[Bug target/79299] [7 Regression] Operand size mismatch for `vpgatherqd' w/ -O3 -masm=intel -mavx512bw

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79299

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek  ---
Created attachment 40636
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40636&action=edit
gcc7-pr79299.patch

Untested patch that makes gcc emit what gas expects, though it isn't clear if
that is the right thing.

[Bug target/79038] Improve PowerPC ISA 3.0 conversion between integers and hardware _Float128

2017-01-31 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79038

--- Comment #2 from Michael Meissner  ---
Author: meissner
Date: Tue Jan 31 13:38:35 2017
New Revision: 245059

URL: https://gcc.gnu.org/viewcvs?rev=245059&root=gcc&view=rev
Log:
2017-01-31  Michael Meissner  

PR target/78597
PR target/79038
* config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
no longer used.
(convert_int_to_float128): Likewise.
* config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
(convert_int_to_float128): Likewise.
* config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
(UNSPEC_IEEE128_CONVERT): Likewise.
(floatsi2, FLOAT128 iterator): Bypass calling
rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
Use local variables for IBM extended format.
(fix_truncsi2, FLOAT128 iterator): Likewise.
(fix_truncsi2_fprs): Likewise.
(fixuns_trunc2): Likewise.
(floatuns2, IEEE128 iterator): Likewise.
(fix_si2_hw): Rework the IEEE 128-bt hardware support
to know that we can now have integers of all sizes in vector
registers.
(fix_di2_hw): Likewise.
(float_si2_hw): Likewise.
(fix_si2_hw): Likewise.
(fixuns_si2_hw): Likewise.
(float_di2_hw): Likewise.
(float_di2_hw): Likewise.
(float_si2_hw): Likewise.
(floatuns_di2_hw): Likewise.
(floatuns_si2_hw): Likewise.
(xscvqpwz_): Delete, no longer used.
(xscvqpdz_): Likewise.
(xscvdqp_): Likewise.
(ieee128_mfvsrd_64bit): Likewise.
(ieee128_mfvsrd_32bit): Likewise.
(ieee128_mfvsrwz): Likewise.
(ieee128_mtvsrw): Likewise.
(ieee128_mtvsrd_64bit): Likewise.
(ieee128_mtvsrd_32bit): Likewise.



Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000-protos.h
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/config/rs6000/rs6000.md

[Bug target/78597] test case gcc.dg/torture/fp-int-convert-float128-ieee.c (and others) fail starting with r242780

2017-01-31 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78597

--- Comment #3 from Michael Meissner  ---
Author: meissner
Date: Tue Jan 31 13:38:35 2017
New Revision: 245059

URL: https://gcc.gnu.org/viewcvs?rev=245059&root=gcc&view=rev
Log:
2017-01-31  Michael Meissner  

PR target/78597
PR target/79038
* config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
no longer used.
(convert_int_to_float128): Likewise.
* config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
(convert_int_to_float128): Likewise.
* config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
(UNSPEC_IEEE128_CONVERT): Likewise.
(floatsi2, FLOAT128 iterator): Bypass calling
rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
Use local variables for IBM extended format.
(fix_truncsi2, FLOAT128 iterator): Likewise.
(fix_truncsi2_fprs): Likewise.
(fixuns_trunc2): Likewise.
(floatuns2, IEEE128 iterator): Likewise.
(fix_si2_hw): Rework the IEEE 128-bt hardware support
to know that we can now have integers of all sizes in vector
registers.
(fix_di2_hw): Likewise.
(float_si2_hw): Likewise.
(fix_si2_hw): Likewise.
(fixuns_si2_hw): Likewise.
(float_di2_hw): Likewise.
(float_di2_hw): Likewise.
(float_si2_hw): Likewise.
(floatuns_di2_hw): Likewise.
(floatuns_si2_hw): Likewise.
(xscvqpwz_): Delete, no longer used.
(xscvqpdz_): Likewise.
(xscvdqp_): Likewise.
(ieee128_mfvsrd_64bit): Likewise.
(ieee128_mfvsrd_32bit): Likewise.
(ieee128_mfvsrwz): Likewise.
(ieee128_mtvsrw): Likewise.
(ieee128_mtvsrd_64bit): Likewise.
(ieee128_mtvsrd_32bit): Likewise.



Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000-protos.h
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/config/rs6000/rs6000.md

[Bug target/79170] [7 regression] memcmp builtin expansion sequence can overflow

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79170

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek  ---
So fixed?

[Bug tree-optimization/79302] [6/7 Regression] ICE in add_loop_constraints, at graphite-sese-to-poly.c:933 building 445.gobmk

2017-01-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79302

--- Comment #8 from Martin Liška  ---
ICEs with:

./cc1 -fpreprocessed pr79302.i -march=haswell -mmmx -mno-3dnow -msse -msse2
-msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mmovbe -maes -mno-sha -mpclmul
-mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mno-sgx -mbmi2 -mno-tbm
-mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mrdrnd -mf16c
-mfsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt
-mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1
-mno-clflushopt -mno-xsavec -mno-xsaves -mno-avx512dq -mno-avx512bw
-mno-avx512vl -mno-avx512ifma -mno-avx512vbmi -mno-avx5124fmaps
-mno-avx5124vnniw -mno-clwb -mno-mwaitx -mno-clzero -mno-pku --param
l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192
-mtune=haswell -quiet -dumpbase pr79302.c -auxbase pr79302 -Ofast -version
-floop-nest-optimize -o pr79302.s

[Bug c++/78689] [7 Regression] ICE (segfault) within cleanup_dead_labels

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78689

--- Comment #5 from Jakub Jelinek  ---
*** Bug 79297 has been marked as a duplicate of this bug. ***

[Bug middle-end/79297] [7 Regression] ICE (segfault) in main_block_label

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79297

Jakub Jelinek  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||jakub at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #3 from Jakub Jelinek  ---
This is a clear dup.

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

[Bug target/79038] Improve PowerPC ISA 3.0 conversion between integers and hardware _Float128

2017-01-31 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79038

--- Comment #3 from Michael Meissner  ---
Subversion id 245059 fixes the majority of the issues.  However, there are some
enhancements that should be added for GCC 8:

1) Add support for converting IEEE 128-bit floating point to/from char/short
data types that is similar to the support that when in for normal 32-bit and
64-bit floating point types.

2) Add a combiner pattern for converting IEEE 128-bit floating point to 32-bit
integer and storing it in memory so that the register allocator can do the
store directly from the Altivec register instead of using direct move to save
it as a GPR (since the GPR side allows more address forms for int).

3) Similarly, add a combiner pattern when converting from a 32-bit integer in
memory to IEEE 128-bit floating point to avoid having to move it through a GPR.

[Bug middle-end/79297] [7 Regression] ICE (segfault) in main_block_label

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79297

--- Comment #4 from Jakub Jelinek  ---
Even from the same package...

[Bug tree-optimization/71824] [6/7 Regression] ICE when compiling libiberty with Graphite loop optimizations

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71824

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #10 from Richard Biener  ---
I have a patch.

[Bug tree-optimization/79303] ICE: Segmentation fault from apply_schedule_map_to_scop, graphite-optimize-isl.c:429 building 464.h264ref

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79303

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #2 from Richard Biener  ---
Works with new ISL -> ISL bug.

[Bug tree-optimization/79303] ICE: Segmentation fault from apply_schedule_map_to_scop, graphite-optimize-isl.c:429 building 464.h264ref

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79303

--- Comment #1 from Richard Biener  ---
segfault occurs within ISL with isl 0.14 but not with isl 0.16.1 so not sure if
worth pursuing (well, I guess not).

[Bug c++/79304] [7 Regression] diagnostic shows bogus expression ((X*)this)->.c

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |7.0

[Bug middle-end/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

2017-01-31 Thread jgreenhalgh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #15 from James Greenhalgh  ---
(In reply to Segher Boessenkool from comment #14)
> I'm not sure how to read your remark.  An insn where the result is
> not used is not on the critical path by definition; and you seem to
> be arguing for -fno-sched-spec by default?

For cores with in-order execution, a long-running instruction like a
square-root stalls execution until it completes. Even as you move to partially
out-of-order and fully out-of-order execution the cost of executing a useless
instruction is increased demand for limited system resources. For example, even
an insn with an unused result can prevent retire of subsequent instructions
until it completes, and at the very least it holds sqrt/divide resource.

Modelling this resource usage in terms of unit reservations increases the size
of the automaton in a way that quickly makes it unfeasible (see pr70473 and
pr60743 for recent ARM examples).

"Latency" may not be a great name for the cost we're looking for, but it is a
reasonable approximation. If an instruction causes significant resource usage
we ought not to make it speculative.

That isn't an argument for -fno-sched-spec, it is an argument for a cost model
which better matches the cost of the transformation, using the information
available, without bloating the automaton.

[Bug middle-end/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

2017-01-31 Thread dje at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #16 from David Edelsohn  ---
> That isn't an argument for -fno-sched-spec, it is an argument for a cost 
> model which better matches the cost of the transformation, using the 
> information available, without bloating the automaton.

And that's what Segher proposed with the patch for the hook on the mailing
list.

[Bug middle-end/68664] [6/7 Regression] Speculative sqrt in c-ray main loop causes large slow down

2017-01-31 Thread jgreenhalgh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68664

--- Comment #17 from James Greenhalgh  ---
(In reply to David Edelsohn from comment #16)
> > That isn't an argument for -fno-sched-spec, it is an argument for a cost 
> > model which better matches the cost of the transformation, using the 
> > information available, without bloating the automaton.
> 
> And that's what Segher proposed with the patch for the hook on the mailing
> list.

I totally missed the proposal!
https://gcc.gnu.org/ml/gcc-patches/2017-01/msg02101.html for others following
this thread.

[Bug tree-optimization/79284] [7 Regression] ICE on valid code at -O3 on x86_64-linux-gnu: verify_gimple failed

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79284

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek  ---
So, the problem seems to be that useless_type_conversion_p considers
conversions between BOOLEAN_TYPE and INTEGER_TYPE with precision 1 as useless,
but the vectorizer handles BOOLEAN_TYPE and INTEGER_TYPE with precision 1 very
differently.  When some propagation propagates e.g. INTEGER_TYPE with precision
1 into one operand of a stmt and the other operand is still BOOLEAN_TYPE, we'll
use VECTOR_BOOLEAN_TYPE_P vectype for one of the operands, but a V*QI mode
vectype for the other operand and obviously very bad things happen.

So, shall we change all the places in the vectorizer that check for
BOOLEAN_TYPE to also allow INTEGRAL_TYPE_P that is TYPE_PRECISION == 1 and
TYPE_UNSIGNED?
grep -w BOOLEAN_TYPE tree-vect-[lps]*.c
tree-vect-loop.c: if (TREE_CODE (scalar_type) == BOOLEAN_TYPE
tree-vect-loop.c:!= BOOLEAN_TYPE)
tree-vect-loop.c: && TREE_CODE (TREE_TYPE (gimple_assign_rhs1 (stmt)))
!= BOOLEAN_TYPE)
tree-vect-patterns.c: && TREE_CODE (TREE_TYPE (rhs1)) != BOOLEAN_TYPE)
tree-vect-patterns.c:  && TREE_CODE (TREE_TYPE (var)) != BOOLEAN_TYPE)
tree-vect-patterns.c: if (TREE_CODE (TREE_TYPE (rhs1)) == BOOLEAN_TYPE)
tree-vect-patterns.c:  && TREE_CODE (TREE_TYPE (var)) != BOOLEAN_TYPE)
tree-vect-patterns.c:  if (TREE_CODE (TREE_TYPE (lhs)) != BOOLEAN_TYPE)
tree-vect-slp.c:  if (TREE_CODE (TREE_TYPE (op)) == BOOLEAN_TYPE
tree-vect-stmts.c:  else if (TREE_CODE (TREE_TYPE (op)) == BOOLEAN_TYPE
tree-vect-stmts.c:  if (TREE_CODE (TREE_TYPE (mask)) != BOOLEAN_TYPE)
tree-vect-stmts.c:  if (TREE_CODE (TREE_TYPE (op0)) == BOOLEAN_TYPE)
tree-vect-stmts.c:if (TREE_CODE (TREE_TYPE (scalar_dest)) !=
BOOLEAN_TYPE)
tree-vect-stmts.c:  && TREE_CODE (TREE_TYPE (cond)) == BOOLEAN_TYPE)
tree-vect-stmts.c:  if (TREE_CODE (scalar_type) == BOOLEAN_TYPE)

[Bug c++/79304] [7 Regression] diagnostic shows bogus expression ((X*)this)->.c

2017-01-31 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304

Jonathan Wakely  changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #1 from Jonathan Wakely  ---
bisection suggests r236221

[Bug tree-optimization/77318] [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90 -O (internal compiler error)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

--- Comment #12 from Richard Biener  ---
Author: rguenth
Date: Tue Jan 31 14:44:37 2017
New Revision: 245064

URL: https://gcc.gnu.org/viewcvs?rev=245064&root=gcc&view=rev
Log:
2017-01-31  Richard Biener  

PR tree-optimization/77318
* graphite-sese-to-poly.c (extract_affine): Fix assert.
(create_pw_aff_from_tree): Take loop parameter.
(add_condition_to_pbb): Pass loop of the condition to
create_pw_aff_from_tree.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/graphite-sese-to-poly.c

[Bug tree-optimization/77362] [6/7 Regression] [graphite] ICE in sese_build_liveouts_use w/ -O2 -floop-nest-optimize

2017-01-31 Thread spop at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77362

--- Comment #7 from Sebastian Pop  ---
The fix looks good.  Thanks!

[Bug tree-optimization/77362] [6/7 Regression] [graphite] ICE in sese_build_liveouts_use w/ -O2 -floop-nest-optimize

2017-01-31 Thread spop at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77362

--- Comment #8 from Sebastian Pop  ---
LIM in general is bad for loop transforms: it introduces loop carried
dependences. If we can move graphite before LIM that would solve some problems.

[Bug c++/79264] [7 Regression] ICE verify_type failed

2017-01-31 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79264

--- Comment #3 from Nathan Sidwell  ---
Author: nathan
Date: Tue Jan 31 15:10:41 2017
New Revision: 245065

URL: https://gcc.gnu.org/viewcvs?rev=245065&root=gcc&view=rev
Log:
PR c++/79264
* lambda.c (maybe_generic_this_capture): Deal with
template-id-exprs.
* semantics.c (finish_member_declaration): Assert class is being
defined.

PR c++/79264
* g++.dg/cpp1y/pr61636-1.C: Augment.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/lambda.c
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/cpp1y/pr61636-1.C

[Bug tree-optimization/79284] [7 Regression] ICE on valid code at -O3 on x86_64-linux-gnu: verify_gimple failed

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79284

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #4 from Jakub Jelinek  ---
Created attachment 40637
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40637&action=edit
gcc7-pr79284.patch

Untested fix.

[Bug c++/79264] [7 Regression] ICE verify_type failed

2017-01-31 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79264

Nathan Sidwell  changed:

   What|Removed |Added

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

--- Comment #4 from Nathan Sidwell  ---
Fixed r245065.

[Bug tree-optimization/77318] [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90 -O (internal compiler error)

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

Richard Biener  changed:

   What|Removed |Added

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

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

[Bug tree-optimization/77362] [6/7 Regression] [graphite] ICE in sese_build_liveouts_use w/ -O2 -floop-nest-optimize

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77362

--- Comment #9 from Richard Biener  ---
(In reply to Sebastian Pop from comment #8)
> LIM in general is bad for loop transforms: it introduces loop carried
> dependences. If we can move graphite before LIM that would solve some
> problems.

Yeah, but the user can write such dependences himself so ideally we have
a way to undo them, like by using local scratch memory?  So

  x_0 = 1;

loop:
  # x_1 = PHI 
  ...
  x_2 = ...;
  goto loop;

turns into

  mem = 1;

loop:
  x_1 = mem;
  x_2 = ...;
  mem = x_2;
  goto loop;

plus replacement of exit PHIs with loads.  Would that help?  Or does the
new (non-aliased, loop invariant) memory location complicate things as well?

[Bug tree-optimization/70729] Loop marked with omp simd pragma is not vectorized

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70729
Bug 70729 depends on bug 77318, which changed state.

Bug 77318 Summary: [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90   -O  
(internal compiler error)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

   What|Removed |Added

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

[Bug tree-optimization/59859] [meta-bug] GRAPHITE issues

2017-01-31 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59859
Bug 59859 depends on bug 77318, which changed state.

Bug 77318 Summary: [7 regression] FAIL: gfortran.dg/graphite/pr68279.f90   -O  
(internal compiler error)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77318

   What|Removed |Added

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

[Bug c++/79298] [7 Regression] ICE on invalid C++ code on x86_64-linux-gnu: Segmentation fault

2017-01-31 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79298

David Malcolm  changed:

   What|Removed |Added

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

--- Comment #2 from David Malcolm  ---
My bad, sorry.  Working on a fix.

[Bug fortran/79305] New: real128 - undefined reference to cexpl

2017-01-31 Thread mexas at bristol dot ac.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79305

Bug ID: 79305
   Summary: real128 - undefined reference to cexpl
   Product: gcc
   Version: 6.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mexas at bristol dot ac.uk
  Target Milestone: ---

FreeBSD 11.0-RELEASE-p2

use, intrinsic :: iso_fortran_env, only: real128
integer, parameter :: fk = real128
complex( kind=fk ) :: z
z = cmplx( 1.0_fk, -1.0_fk, kind=fk )
write (*,*) exp( z )
end

$ gfortran49 z.f90 
/tmp//ccIF7kVE.o: In function `MAIN__':
z.f90:(.text+0x79): undefined reference to `cexpl'
collect2: error: ld returned 1 exit status

$ gfortran6 z.f90 
/tmp//ccq1EOKO.o: In function `MAIN__':
z.f90:(.text+0x62): undefined reference to `cexpl'
collect2: error: ld returned 1 exit status

$ gfortran7 z.f90 
/tmp//ccgH1sQM.o: In function `MAIN__':
z.f90:(.text+0x62): undefined reference to `cexpl'
collect2: error: ld returned 1 exit status

Have I missed something?

Thanks

Anton

[Bug tree-optimization/77362] [6/7 Regression] [graphite] ICE in sese_build_liveouts_use w/ -O2 -floop-nest-optimize

2017-01-31 Thread spop at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77362

--- Comment #10 from Sebastian Pop  ---
(In reply to Richard Biener from comment #9)
> Yeah, but the user can write such dependences himself so ideally we have
> a way to undo them, like by using local scratch memory?  So

You are right.  LLVM-Polly has a pass that undoes LIM, it is non trivial, and
furthermore we'd better catch the LIM once the loop transforms are done!

> 
>   x_0 = 1;
> 
> loop:
>   # x_1 = PHI 
>   ...
>   x_2 = ...;
>   goto loop;
> 
> turns into
> 
>   mem = 1;
>   
> loop:
>   x_1 = mem;
>   x_2 = ...;
>   mem = x_2;
>   goto loop;
> 
> plus replacement of exit PHIs with loads.  Would that help?

That's how we were handling reductions and end of loop values in the dependence
graph.  Today we can reason about scalars themselves and add the scalars to the
dependence graph instead of generating the loads that would need to be cleaned
up after graphite.

[Bug tree-optimization/54810] VRP doesn't handle comparison of narrowing cast like comparison of BIT_AND_EXPR

2017-01-31 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54810

Jeffrey A. Law  changed:

   What|Removed |Added

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

--- Comment #3 from Jeffrey A. Law  ---
This was fixed long ago (2013) by improving VRP's ASSERT_EXPR insertion for
loop latches.

[Bug pch/79306] New: ICE on valid code

2017-01-31 Thread vi0oss at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79306

Bug ID: 79306
   Summary: ICE on valid code
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: pch
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vi0oss at gmail dot com
  Target Milestone: ---

I noticed this message on some build log:

(command line approximate)

cd .../WebRTC/webrtc && /usr/bin/c++ -D... -fPIC -msse2 -msse3 -m64 -std=c++11
-g -O0 -fno-inline -D_DEBUG -I... -I.../WebRTC/webrtc/video_coding_pch
-Winvalid-pch -include .../WebRTC/webrtc/video_coding_pch/stdafx.h -o o -c
.../WebRTC/webrtc/modules/video_coding/main/source/codec_database.cc
c++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.

Version is 4.8.x. If needed I may try to reproduce and minimize it, but it is
not simple. Turning off precompiled headers makes it build successfully.

[Bug c++/79304] [7 Regression] diagnostic shows bogus expression ((X*)this)->.c

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek  ---
Created attachment 40638
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40638&action=edit
gcc7-pr79304.patch

Untested fix.

[Bug c++/79267] [6 Regression] internal compiler error with -O3 or -O2 -finline-functions

2017-01-31 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79267

Jakub Jelinek  changed:

   What|Removed |Added

Summary|[6/7 Regression] internal   |[6 Regression] internal
   |compiler error with -O3 or  |compiler error with -O3 or
   |-O2 -finline-functions  |-O2 -finline-functions

--- Comment #7 from Jakub Jelinek  ---
Fixed on the trunk so far.

[Bug c++/67273] Incorrect -Wshadow warning with generic lambdas

2017-01-31 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67273

Nathan Sidwell  changed:

   What|Removed |Added

 CC||jens.auer at cgi dot com

--- Comment #3 from Nathan Sidwell  ---
*** Bug 67951 has been marked as a duplicate of this bug. ***

[Bug c++/67951] Wshadow for variable with same name as generic (auto) lambda parameters

2017-01-31 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67951

Nathan Sidwell  changed:

   What|Removed |Added

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

--- Comment #1 from Nathan Sidwell  ---
Essentially same as 67273, to which I added a clearer testcase

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

[Bug c++/78771] [5/6/7 Regression] ICE when using inherited constructors (instantiate_template_1 in gcc/cp/pt.c:17391)

2017-01-31 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78771

Nathan Sidwell  changed:

   What|Removed |Added

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

--- Comment #4 from Nathan Sidwell  ---
jason fixed it

[Bug target/79170] [7 regression] memcmp builtin expansion sequence can overflow

2017-01-31 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79170

acsawdey at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #5 from acsawdey at gcc dot gnu.org ---
Fixed in 245041.

[Bug target/79170] [7 regression] memcmp builtin expansion sequence can overflow

2017-01-31 Thread acsawdey at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79170

--- Comment #4 from acsawdey at gcc dot gnu.org ---
Yes, should be fixed with 245041 -- different instruction sequence and a better
memcmp/strncmp regtest to catch this and other things.

  1   2   >