[Bug c++/67161] [5/6 Regression] ICE with a static_assert using our internal __not/__or/__and traits

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67161

Jason Merrill jason at gcc dot gnu.org 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 debug/67192] New: Backward-goto in loop can get wrong line number

2015-08-12 Thread arnez at linux dot vnet.ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67192

Bug ID: 67192
   Summary: Backward-goto in loop can get wrong line number
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: arnez at linux dot vnet.ibm.com
  Target Milestone: ---

This bug causes a number of failures in the GDB test suite, e.g. with
checkpoint.exp.  I can reproduce it with the command line:

gcc -fdump-tree-gimple-lineno -o foo.o -c -g foo.c

 foo.c 
extern int bar(void);
extern int baz(void);

extern int foo(int x);

int foo(int x)
{
  for (;;)
{
  if (bar ())
break;
  baz ();
}
  baz (); /* Line 14. */
}

 foo.c.004t.gimple 
foo (int x)
[foo.c:7:1] {
  int D.1415;

  D.1413:
  [foo.c:10:11] D.1415 = bar ();
  [foo.c:10:10] if (D.1415 != 0) goto D.1416; else goto D.1417;
  D.1416:
  [foo.c:11:2] goto D.1412;
  D.1417:
  [foo.c:12:7] baz ();
  [foo.c:14:3] goto D.1413; /* == WRONG! Should be [foo.c:13:5]. */
  D.1412:
  [foo.c:14:3] baz ();
}


[Bug other/67092] bootstrap failure in running genpreds, libstdc++ version mismatch

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67092

--- Comment #15 from vries at gcc dot gnu.org ---
Author: vries
Date: Wed Aug 12 15:13:35 2015
New Revision: 226819

URL: https://gcc.gnu.org/viewcvs?rev=226819root=gccview=rev
Log:
Remove --with-host-libstdcxx

2015-08-12  Tom de Vries  t...@codesourcery.com

PR other/67092
PR other/67098
* configure.ac: Remove --with_host_libstdcxx support.
* configure: Regenerate.

* doc/install.texi: Remove --with_host_libstdcxx item.  Update
--with-stage1-libs, --with-boot-ldflags and --with-boot-libs items
accordingly.  Mention default for --with-stage1-ldflags.

Modified:
trunk/ChangeLog
trunk/configure
trunk/configure.ac
trunk/gcc/ChangeLog
trunk/gcc/doc/install.texi


[Bug other/67098] Documentation --with-stage1-ldflags does not mention default -static-libstdc++ -static-libgcc

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67098

--- Comment #2 from vries at gcc dot gnu.org ---
Author: vries
Date: Wed Aug 12 15:13:35 2015
New Revision: 226819

URL: https://gcc.gnu.org/viewcvs?rev=226819root=gccview=rev
Log:
Remove --with-host-libstdcxx

2015-08-12  Tom de Vries  t...@codesourcery.com

PR other/67092
PR other/67098
* configure.ac: Remove --with_host_libstdcxx support.
* configure: Regenerate.

* doc/install.texi: Remove --with_host_libstdcxx item.  Update
--with-stage1-libs, --with-boot-ldflags and --with-boot-libs items
accordingly.  Mention default for --with-stage1-ldflags.

Modified:
trunk/ChangeLog
trunk/configure
trunk/configure.ac
trunk/gcc/ChangeLog
trunk/gcc/doc/install.texi


[Bug other/67099] Documentation --with-host-libstdcxx is outdated, mentions ppl

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67099

vries at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from vries at gcc dot gnu.org ---
https://gcc.gnu.org/ml/gcc-cvs/2015-08/msg00361.html :

Author: vries
Date: Wed Aug 12 15:13:35 2015
New Revision: 226819

URL: https://gcc.gnu.org/viewcvs?rev=226819root=gccview=rev
Log:
Remove --with-host-libstdcxx

2015-08-12  Tom de Vries  t...@codesourcery.com

PR other/67092
PR other/67098
* configure.ac: Remove --with_host_libstdcxx support.
* configure: Regenerate.

* doc/install.texi: Remove --with_host_libstdcxx item.  Update
--with-stage1-libs, --with-boot-ldflags and --with-boot-libs items
accordingly.  Mention default for --with-stage1-ldflags.

Modified:
trunk/ChangeLog
trunk/configure
trunk/configure.ac
trunk/gcc/ChangeLog
trunk/gcc/doc/install.texi


[Bug other/67098] Documentation --with-stage1-ldflags does not mention default -static-libstdc++ -static-libgcc

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67098

vries at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from vries at gcc dot gnu.org ---
Patch in docs committed, marking resolved-fixed.


[Bug other/67092] bootstrap failure in running genpreds, libstdc++ version mismatch

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67092

vries at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |FIXED

--- Comment #16 from vries at gcc dot gnu.org ---
Committed patch that removes configure option --with-host-libstdcxx. Marking
resolved-fixed.


[Bug c++/47461] warn_unused_result attribute ignored for templates

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47461

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

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

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com ---
Done.


[Bug c++/49409] some possible new warnings for strange code

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49409

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||polacek at redhat dot com

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com ---
Maybe Marek is interested (beyond -Wtautological-compare)


[Bug fortran/35234] Undetected use before definition.

2015-08-12 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35234

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|NEW
   Last reconfirmed||2015-08-12
 CC||manu at gcc dot gnu.org
 Resolution|DUPLICATE   |---
 Ever confirmed|0   |1

--- Comment #3 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Francois-Xavier Coudert from comment #2)
 It's indeed a duplicate of 27120.

It seems it wasn't.

[Bug tree-optimization/67191] [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Oh, maybe just the reduced testcase no longer fails after r226814.


[Bug tree-optimization/67191] [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |6.0

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Hmm, doesn't reproduce on x86_64 for me.  Anyway mine, hopefully we'll get a
x86_64 testcase as well.


[Bug tree-optimization/67191] [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

--- Comment #4 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Richard Biener from comment #3)
 Oh, maybe just the reduced testcase no longer fails after r226814.

Still fails on ppc64le after r226814. So a cross should reproduce this.


[Bug tree-optimization/67191] [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread antoine.balestrat at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

Antoine Balestrat antoine.balestrat at gmail dot com changed:

   What|Removed |Added

 CC||antoine.balestrat at gmail dot 
com

--- Comment #5 from Antoine Balestrat antoine.balestrat at gmail dot com ---
Hello ! This simpler C testcase seemingly triggers the exact same ICE at -O1 on
my x86_64 machine :

$ cat tested.c
int a;
void f(void)
{
int b;
for(a=1; a;);
for(; b; b++)
lbl:
b || a;
if(a)
goto lbl;
}

$ xgcc -w -O1 tested.c
tested.c: In function ‘f’:
tested.c:11:1: internal compiler error: in before_dom_children, at
tree-ssa-sccvn.c:4372
 }
 ^
0xc66ffc sccvn_dom_walker::before_dom_children(basic_block_def*)
../../srcdir/gcc/tree-ssa-sccvn.c:4371
0x10c46a1 dom_walker::walk(basic_block_def*)
../../srcdir/gcc/domwalk.c:177
0xc681d6 run_scc_vn(vn_lookup_kind)
../../srcdir/gcc/tree-ssa-sccvn.c:4459
0xc3a3b2 execute
../../srcdir/gcc/tree-ssa-pre.c:4959
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.

[Bug c++/47461] warn_unused_result attribute ignored for templates

2015-08-12 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47461

--- Comment #4 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Wed Aug 12 14:47:58 2015
New Revision: 226816

URL: https://gcc.gnu.org/viewcvs?rev=226816root=gccview=rev
Log:
2015-08-12  Paolo Carlini  paolo.carl...@oracle.com

PR c++/47461
* g++.dg/warn/Wunused-result-1.C: New.

Added:
trunk/gcc/testsuite/g++.dg/warn/Wunused-result-1.C
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug c++/67108] [6 Regression] ICE: in cxx_eval_call_expression, at cp/constexpr.c:1345 when dumping

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67108

Jason Merrill jason at gcc dot gnu.org 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++/49409] some possible new warnings for strange code

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49409

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mpolacek at gcc dot gnu.org

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
With -Wall -Wlogical-op we warn for all the cases except if ((i - i)  10)
and I'm not sure if we really want a warning for this case.


[Bug bootstrap/66521] xgcc: cc1plus segfaults when compiling libstdc++-v3/src/c++11/ostream-inst.cc

2015-08-12 Thread ctice at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66521

--- Comment #14 from ctice at gcc dot gnu.org ---
Author: ctice
Date: Wed Aug 12 15:40:11 2015
New Revision: 226820

URL: https://gcc.gnu.org/viewcvs?rev=226820root=gccview=rev
Log:
Fix warnings when bootstrapping on darwin with vtable verification enabled.

libstdc++-v3/ChangeLog:

2015-08-11  Caroline Tice cmt...@google.com

PR 66521, Contributed by Eric Gallager
* acinclude.m4 (VTV_CXXLINKFLAGS): Make this variable OS-specific, and
fix the rpath flag to work properly for darwin.
* configure: Regenerated.


Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/acinclude.m4
trunk/libstdc++-v3/configure


[Bug target/67172] [5/6 regression] i686-w64-mingw32 dwarf2 bootstrap fails with undefined reference to __EH_FRAME_BEGIN__

2015-08-12 Thread breedlove.matt at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67172

--- Comment #5 from Matt Breedlove breedlove.matt at gmail dot com ---
On previous builds, you could have DWARF2_UNWIND_INFO be defined and have
EH_FRAME_SECTION_NAME undefined within libgcc2.c (the section name was still
defined within cygming-crtbegin.c - crtbegin.o).  When compiling,
EH_FRAME_SECTION_NAME ends up defined while building libgcc's crtbegin.o while
it was undefined during libgcc2.c preventing that extern from being emitted.

Now, it is instead tied to __LIBGCC_EH_FRAME_SECTION_NAME__ which is primarily
tied to DWARF2_UNWIND_INFO and part of a large amount of definitions common to
both cygwin and mingw most of which I don't know the significance of.  Using
the new builtin causes the definition to be synchronized between crtbegin and
libgcc2.c which not emits an undefined extern which fails to link.

It's not a question of whether it should be reverted or not (the patch merely
returned to prior behavior until a proper fix), but rather where and how it has
to be changed.  You can't simply undefine it within a target-section because
defaults.h gets pulled into c-cppbuiltin.c right beforehand which then
redefines it.  There are also blocks which use DWARF2_UNWIND_INFO as a check
before attempting to use it which would break those as well.  I'm still waiting
for input from Kai or someone more familiar with how the target should be
configured.  You're right though; some sort of change needs to happen there,
but I don't know enough about the target's dwarf2 implementation to say what
especially when other parts of the code rely on the set of definitions that
make-up the following block of code in defaults.h that both decides to define
it first or ultimately redefines it if we were to undefine it along the way.

/* If we have named sections, and we're using crtstuff to run ctors,
   use them for registering eh frame information.  */
#if defined (TARGET_ASM_NAMED_SECTION)  DWARF2_UNWIND_INFO \
 !defined (EH_FRAME_IN_DATA_SECTION)
#ifndef EH_FRAME_SECTION_NAME
#define EH_FRAME_SECTION_NAME .eh_frame
#endif
#endif


[Bug go/67198] [5/6 Regression] change of type of syscall.RawSockaddr.Data on ppc64 breaks compilation of existing programs

2015-08-12 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67198

Ian Lance Taylor ian at airs dot com changed:

   What|Removed |Added

 CC||boger at us dot ibm.com

--- Comment #1 from Ian Lance Taylor ian at airs dot com ---
I can't win.

I deeply do not care about this type.  Please sort it out with Lynn Boger. 
Thanks.


[Bug tree-optimization/67196] Another false positive from -Wmaybe-uninitialized

2015-08-12 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67196

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-12
 CC||manu at gcc dot gnu.org
 Blocks||24639
 Ever confirmed|0   |1

--- Comment #1 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
For some reason, the uninit pass does not even analyze the predicates and
thinks all uses are unguarded (or it doesn't dump it).

A shorter testcase:

int some_test(int);

int test (int n)
{
  int num_captions_in_row = 0;
  int first_caption = 0; /* set to zero here */
  int first_caption_idx;
  int i;
  for (i = 0; i  n; i++)
{
  if (some_test (i))
{
  num_captions_in_row++;
  first_caption = 1; /* only ever set here */
  first_caption_idx = i; /* set here */
}
}

  /* The guard on first_caption here requires we entered the block
 above that sets first_caption_idx. */
  if (first_caption  num_captions_in_row == 1)
return first_caption_idx; /* get bogus warning here at -O1 and above */
  return 0;
}


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
[Bug 24639] [meta-bug] bug to track all Wuninitialized issues

[Bug go/67198] New: gccgo: change of type of syscall.RawSockaddr.Data on ppc64 breaks compilation of existing programs

2015-08-12 Thread michael.hudson at canonical dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67198

Bug ID: 67198
   Summary: gccgo: change of type of syscall.RawSockaddr.Data on
ppc64 breaks compilation of existing programs
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
  Assignee: ian at airs dot com
  Reporter: michael.hudson at canonical dot com
CC: cmang at google dot com
  Target Milestone: ---

https://github.com/golang/go/issues/11469 /
https://go.googlesource.com/gofrontend/+/a850225433a66a58613c22185c3b09626f5545eb%5E!/
fixed gccgo tip to match what Go 1.5 does for the type of
syscall.RawSockaddr.Data on ppc64le, which sounds good, but it means that the
type is different from previous releases of gccgo on ppc64le, which means that
programs that used to compile now don't, including docker:

https://launchpadlibrarian.net/214319094/buildlog_ubuntu-wily-ppc64el.docker.io_1.6.2~dfsg1-1ubuntu4_BUILDING.txt.gz

I don't know that docker can be changed in a way that will build with both new
and old gccgo, which seems pretty unfortunate. At least changing the Go 1.5
type would allow that, but it's way too late for that.


[Bug target/67172] [5/6 regression] i686-w64-mingw32 dwarf2 bootstrap fails with undefined reference to __EH_FRAME_BEGIN__

2015-08-12 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67172

--- Comment #4 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Tue, 11 Aug 2015, breedlove.matt at gmail dot com wrote:

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67172
 
 --- Comment #3 from Matt Breedlove breedlove.matt at gmail dot com ---
 In gcc/defaults.h, it gets defined via:

So why does not exactly the same sequence of conditional macro definitions 
apply when libgcc is being built and so cause your patch to be 
ineffective, given that libgcc does still include the host-side tm.h until 
the transition away from host-side target macros in target-side code is 
complete?  (In any case, my point still applies: stop 
__LIBGCC_EH_FRAME_SECTION_NAME__ being defined if it's incorrect, which 
means some sort of host-side change.)


[Bug middle-end/66214] [6 Regression] ICE verify_type failed with -O0 -g via gen_type_die_with_usage's dwarf2out.c:20250

2015-08-12 Thread anton at samba dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66214

Anton Blanchard anton at samba dot org changed:

   What|Removed |Added

 CC||anton at samba dot org

--- Comment #12 from Anton Blanchard anton at samba dot org ---
I hit this when building MariaDB. Reduced testcase:


typedef struct bn_gencb_st BN_GENCB;

struct bn_gencb_st {
void *arg;
union {
int (*cb_2)(int, int, BN_GENCB *);
};
};


g++ -O0 -g -c testcase.i
testcase.i:5:15: error: TYPE_CANONICAL is not compatible
 union {
   ^
 record_type 0x3fff76fbc630 bn_gencb_st type_5 VOID
align 8 symtab 1995243680 alias set -1 canonical type 0x3fff76fbc630
fields field_decl 0x3fff76eb49a0 arg
type pointer_type 0x3fff76e01110 type void_type 0x3fff76e00fc0 void
public unsigned DI
size integer_cst 0x3fff76db1470 constant 64
unit size integer_cst 0x3fff76db1488 constant 8
align 64 symtab 0 alias set -1 canonical type 0x3fff76e01110
pointer_to_this pointer_type 0x3fff76e04cc8
decl_3 VOID file testcase.i line 4 col 15
align 1 offset_align 1 context record_type 0x3fff76fbc630 bn_gencb_st
chain type_decl 0x3fff76eb4908 bn_gencb_st type record_type
0x3fff76fbc8d0 bn_gencb_st
nonlocal decl_4 VOID file testcase.i line 3 col 20
align 1 context record_type 0x3fff76fbc630 bn_gencb_st result
record_type 0x3fff76fbc630 bn_gencb_st
chain type_decl 0x3fff76eb4ad0 ._0 context
translation_unit_decl 0x3fff79680078 D.1
full-name struct bn_gencb_st
n_parents=0 use_template=0 interface-unknown
pointer_to_this pointer_type 0x3fff76fbcb70 chain type_decl
0x3fff76eb47d8 bn_gencb_st
 record_type 0x3fff76fbc6d8 BN_GENCB type_5 VOID
align 8 symtab 1995243600 alias set -1 canonical type 0x3fff76fbc630
context translation_unit_decl 0x3fff79680078 D.1
full-name BN_GENCB
n_parents=0 use_template=0 interface-unknown
pointer_to_this pointer_type 0x3fff76fbcac8 chain type_decl
0x3fff76eb47d8 bn_gencb_st
testcase.i:5:15: internal compiler error: verify_type failed
0x10dd6617 verify_type(tree_node const*)
../../gcc/gcc/tree.c:13570
0x1067fc67 gen_type_die_with_usage
../../gcc/gcc/dwarf2out.c:20685
0x10680887 gen_type_die_with_usage
../../gcc/gcc/dwarf2out.c:20783
0x10681d97 gen_type_die
../../gcc/gcc/dwarf2out.c:20879
0x1067f3d3 gen_formal_types_die
../../gcc/gcc/dwarf2out.c:18225
0x1067f91b gen_subroutine_type_die
../../gcc/gcc/dwarf2out.c:20505
0x1068046f gen_type_die_with_usage
../../gcc/gcc/dwarf2out.c:20812
0x10680887 gen_type_die_with_usage
../../gcc/gcc/dwarf2out.c:20783
0x10681d97 gen_type_die
../../gcc/gcc/dwarf2out.c:20879
0x1067538f gen_decl_die
../../gcc/gcc/dwarf2out.c:21519
0x106786bb gen_member_die
../../gcc/gcc/dwarf2out.c:20356
0x106786bb gen_struct_or_union_type_die
../../gcc/gcc/dwarf2out.c:20461
0x106786bb gen_tagged_type_die
../../gcc/gcc/dwarf2out.c:20662
0x1068079f gen_type_die_with_usage
../../gcc/gcc/dwarf2out.c:20824
0x10681d97 gen_type_die
../../gcc/gcc/dwarf2out.c:20879
0x10675b9b gen_decl_die
../../gcc/gcc/dwarf2out.c:21465
0x1067681f dwarf2out_decl
../../gcc/gcc/dwarf2out.c:21915
0x10676c77 dwarf2out_type_decl
../../gcc/gcc/dwarf2out.c:21625
0x1098065f rest_of_type_compilation(tree_node*, int)
../../gcc/gcc/passes.c:336
0x102c2223 finish_struct_1(tree_node*)
../../gcc/gcc/cp/class.c:6747


[Bug c++/53330] new() operator can return NULL on a zero-length allocation

2015-08-12 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53330

--- Comment #4 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Wed Aug 12 22:38:04 2015
New Revision: 226840

URL: https://gcc.gnu.org/viewcvs?rev=226840root=gccview=rev
Log:
2015-08-12  Paolo Carlini  paolo.carl...@oracle.com

PR c++/53330
* g++.dg/init/new42.C: New.

Added:
trunk/gcc/testsuite/g++.dg/init/new42.C
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug c++/53330] new() operator can return NULL on a zero-length allocation

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53330

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Known to work||4.9.0, 5.0
 Resolution|--- |WORKSFORME

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com ---
I'm adding a testcase and closing the bug.


[Bug tree-optimization/67153] [5/6 Regression] integer optimizations 53% slower than std::bitset

2015-08-12 Thread ncm at cantrip dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67153

--- Comment #9 from ncm at cantrip dot org ---
I did experiment with -m[no-]bmi[2] a fair bit.  It all made a significant
difference in the instructions emitted, but exactly zero difference in 
runtime. That's actually not surprising at all; those instructions get 
decomposed into micro-ops that exactly match those from the equivalent
instructions, and are cached, and the loops that dominate runtime execute 
out of the micro-op cache.  The only real effect is maybe slightly shorter
object code, which could matter in a program dominated by bus traffic
with loops too big to cache well.  I say maybe slightly shorter because
instruction-set extension instructions are actually huge, mostly prefixes.

I.e. most of the BMI stuff is marketing fluff, added mainly to make the 
competition waste money matching them instead of improving the product.


[Bug tree-optimization/61441] ARM aarch64 fails to quiet signaling NaN

2015-08-12 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61441

--- Comment #3 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
Bugs in -fsignaling-nans (in this case, that a conversion of a signaling 
NaN from float to double is incorrectly folded) should be fixed just like 
any other bug.  That sentence is simply warning that there are many known 
bugs in this area.


[Bug target/67071] GCC misses an optimization to load vector constants

2015-08-12 Thread meissner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67071

--- Comment #2 from Michael Meissner meissner at gcc dot gnu.org ---
Author: meissner
Date: Wed Aug 12 21:54:23 2015
New Revision: 226836

URL: https://gcc.gnu.org/viewcvs?rev=226836root=gccview=rev
Log:
[gcc]
2015-08-12  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/67071
* config/rs6000/predicates.md (easy_vector_constant_vsldoi): New
predicate to allow construction of vector constants using the
VSLDOI vector shift instruction.

* config/rs6000/rs6000-protos.h (vspltis_shifted): Add
declaration.

* config/rs6000/rs6000.c (vspltis_shifted): New function to return
the number of bytes to be shifted left and filled in with either
all zero or all one bits.
(gen_easy_altivec_constant): Call vsplitis_shifted if no other
methods exist.
(output_vec_const_move): On power8, generate XXLORC to generate
a vector constant with all 1's. Do a split if we need to use a
VSLDOI instruction.

* config/rs6000/rs6000.h (EASY_VECTOR_MSB): Use mode mask to
properly test for the MSB.

* config/rs6000/altivec.md (VSLDOI splitter): Add splitter for
vector constants that can be created with VSLDOI.

[gcc/testsuite]
2015-08-12  Michael Meissner  meiss...@linux.vnet.ibm.com

PR target/67071
* gcc.target/powerpc/pr67071-1.c: New file to test PR 67071 new
vector constants.
* gcc.target/powerpc/pr67071-2.c: Likewise.
* gcc.target/powerpc/pr67071-3.c: Likewise.


Added:
trunk/gcc/testsuite/gcc.target/powerpc/pr67071-1.c
trunk/gcc/testsuite/gcc.target/powerpc/pr67071-2.c
trunk/gcc/testsuite/gcc.target/powerpc/pr67071-3.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/altivec.md
trunk/gcc/config/rs6000/predicates.md
trunk/gcc/config/rs6000/rs6000-protos.h
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/config/rs6000/rs6000.h
trunk/gcc/testsuite/ChangeLog


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #61 from Bill Schmidt wschmidt at gcc dot gnu.org ---
(In reply to amker from comment #60)
 (In reply to Bill Schmidt from comment #59)
  We don't have a lot of data yet, but we have seen several examples in SPEC
  and other benchmarks where turning on -funroll-loops is helpful, but should
  be much more helpful -- in many cases performance improves with a much
  higher unroll factor.  However, the effectiveness of unrolling is very much
  tied up with these issues in IVOPTS, where we currently end up with too many
  separate base registers for IVs.  As we increase the unroll factor, we
 By this, do you mean too many candidates are chosen?  Or the issue just like
 this PR describes?  Thanks.
 

On the surface, it's the issue from this PR where we have lots of separate
induction variables with their own index registers each requiring an add during
each iteration.  The presence of this issue masks whether we have too many
candidates, but in the sense that we often see register spill associated with
this kind of code, we do have too many.  I.e., the register pressure model may
not be in tune with the kind of addressing mode that's being selected, but
that's just a theory.  Or perhaps pressure is just being generically
under-predicted for POWER.

Up till now we haven't done a lot of detailed analysis.  Hopefully we can free
somebody up to start looking at some of our unrolling issues soon.


[Bug tree-optimization/67153] [5/6 Regression] integer optimizations 53% slower than std::bitset

2015-08-12 Thread ncm at cantrip dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67153

--- Comment #11 from ncm at cantrip dot org ---
Aha, Uroš, I see your name in 

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62011

Please forgive me for teaching you about micro-ops.

The code being generated for all versions does use (e.g.)
popcntq %rax, %rax almost everywhere.  Not quite everywhere -- I see 
one popcntq %rax, %rdx -- but certainly in all the performance-sensitive 
bits.

[Bug tree-optimization/67199] New: ICE with compile bug related to vector_size

2015-08-12 Thread zhongyunde at huawei dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67199

Bug ID: 67199
   Summary: ICE with compile bug related to vector_size
   Product: gcc
   Version: 4.9.4
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zhongyunde at huawei dot com
  Target Milestone: ---

testcase:

__attribute__ ((vector_size (16))) g_73 = {0x15FE687EL, 0x5827DF98L,
0xF8411272L, 0x235E695EL};
__attribute__ ((vector_size (16))) g_1124;

int func_1(void)
{  
__attribute__ ((vector_size (16))) l_1117 = {0x15FE688EL, 0x5827DF98L,
0xF8411272L, 0x235E695EL};
__attribute__ ((vector_size (16))) zhong = ( g_73 = g_73);
 g_1124 = (((g_73  l_1117) == (zhong))  9);

return 0;
}

the following issue can be reproduced  with -O2 when the gcc built on 64 bits
system.

internal compiler error: in fold_convert_loc, at fold-const.c:1974
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions


[Bug c++/67200] New: Copy elision and implicit move in return performed in cases not allowed by standard

2015-08-12 Thread rs2740 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67200

Bug ID: 67200
   Summary: Copy elision and implicit move in return performed in
cases not allowed by standard
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rs2740 at gmail dot com
  Target Milestone: ---

Consider:

struct A {
A() = default;
A(const A) = delete;
A(A) = default;
};

A f() {
A a;
return true ? a : a;
}

This code is ill-formed; `true ? a : a` is an lvalue of type `A`; it neither
qualifies for copy elision under [class.copy]/p31 (it is not the name of a
nonvolatile
automatic object) nor for implicit moving under [class.copy]/p32 (it's not an
id-expression, either). Therefore, overload resolution should select the copy
constructor, which in the above example is deleted.

GCC compiles this code and in fact elides a move.


[Bug go/66870] split stack issues on ppc64le and ppc64

2015-08-12 Thread amodra at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66870

--- Comment #22 from Alan Modra amodra at gcc dot gnu.org ---
Author: amodra
Date: Thu Aug 13 05:25:02 2015
New Revision: 226848

URL: https://gcc.gnu.org/viewcvs?rev=226848root=gccview=rev
Log:
More split-stack fixes

Backport rev 226443
2015-07-31  Alan Modra  amo...@gmail.com

PR target/66870
* config/rs6000/rs6000.c (machine_function): Add split_stack_argp_used.
(rs6000_emit_prologue): Set it.
(rs6000_set_up_by_prologue): Specify r12 when split_stack_argp_used.

Backport rev 223878
2015-05-30  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.c (split_stack_arg_pointer_used_p): Scan
correct block for use of r12.
(rs6000_expand_split_stack_prologue): Error on r29 asm global reg.

Backport rev 223427
2015-05-20  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Return
stack adjusting insn.  Formatting.
(rs6000_emit_prologue): Track stack adjusting insn, and use of
r12.  If possible, emit first -fsplit-stack arg pointer insn
before stack adjust.  Don't use r12 to save cr if split-stack.

Backport rev 223425
2015-05-20  Alan Modra  amo...@gmail.com

* config/rs6000/rs6000.c (struct rs6000_stack): Correct comments.
(direct_return): Test vrsave_size rather than vrsave_mask.
(rs6000_emit_prologue): Likewise.  Remove redundant altivec tests.
(rs6000_emit_epilogue): Likewise.

Revert bogus rs6000_function_ok_for_sibcall change that caused failure
of glibc build.

Revert rs6000_can_eliminate cosmetic change


Modified:
branches/ibm/gcc-5-branch/gcc/config/rs6000/rs6000.c


[Bug tree-optimization/66070] [GRAPHITE] cc1 gets killed by OOM killer

2015-08-12 Thread andrey.turkin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66070

Andrey Turkin andrey.turkin at gmail dot com changed:

   What|Removed |Added

 CC||andrey.turkin at gmail dot com

--- Comment #1 from Andrey Turkin andrey.turkin at gmail dot com ---
Created attachment 36177
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36177action=edit
Minified sample

Same here. I don't think it is just a memory hog; compiler probably enters some
kind of infinite loop.
Tested on 4.9.2, 4.9.3 and 5.2.0. Command line to reproduce is
x86_64-pc-linux-gnu-gcc -m32 -O2 -floop-interchange -c fram_gen.c. It only
happens when using this specific combination of flags (32-bit mode, O2 and loop
interchange enabled).


[Bug tree-optimization/67153] [5/6 Regression] integer optimizations 53% slower than std::bitset

2015-08-12 Thread ncm at cantrip dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67153

--- Comment #10 from ncm at cantrip dot org ---
I found this, which at first blush seems like it might be relevant.
The hardware complained about here is the same Haswell i7-4770.

http://stackoverflow.com/questions/25078285/replacing-a-32-bit-loop-count-variable-with-64-bit-introduces-crazy-performance


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #60 from amker at gcc dot gnu.org ---
(In reply to Bill Schmidt from comment #59)
 (In reply to rguent...@suse.de from comment #57)
  
  It's been a long time since I've done SPEC measuring with/without
  -funroll-loops (or/and -fpeel-loops).  Note that these flags have
  secondary effects as well:
  
  toplev.c:flag_web = flag_unroll_loops || flag_peel_loops;
  toplev.c:flag_rename_registers = flag_unroll_loops || flag_peel_loops;
 
 We don't have a lot of data yet, but we have seen several examples in SPEC
 and other benchmarks where turning on -funroll-loops is helpful, but should
 be much more helpful -- in many cases performance improves with a much
 higher unroll factor.  However, the effectiveness of unrolling is very much
 tied up with these issues in IVOPTS, where we currently end up with too many
 separate base registers for IVs.  As we increase the unroll factor, we
By this, do you mean too many candidates are chosen?  Or the issue just like
this PR describes?  Thanks.

 eventually hit this as a limiting factor, so fixing this IVOPTS issue would
 be very helpful for POWER.
 
 As a side note, with -fprofile-use a GIMPLE unroller could peel and unroll
 hot loop traces in loops that would otherwise be too complex to unroll. 
 I.e., if there is a single hot trace through a loop, you can do tail
 duplication on the trace to force it into superblock form, and then peel and
 unroll that superblock while falling into the original loop if the trace is
 left.  Complete unrolling and unrolling by a factor are both possible.  I
 don't know of specific benchmarks that would be helped by this, though.
 
 (An RTL unroller could do this as well, but it seems much more natural and
 implementable in GIMPLE.)


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #62 from amker at gcc dot gnu.org ---
(In reply to Bill Schmidt from comment #61)
 (In reply to amker from comment #60)
  (In reply to Bill Schmidt from comment #59)
   We don't have a lot of data yet, but we have seen several examples in SPEC
   and other benchmarks where turning on -funroll-loops is helpful, but 
   should
   be much more helpful -- in many cases performance improves with a much
   higher unroll factor.  However, the effectiveness of unrolling is very 
   much
   tied up with these issues in IVOPTS, where we currently end up with too 
   many
   separate base registers for IVs.  As we increase the unroll factor, we
  By this, do you mean too many candidates are chosen?  Or the issue just like
  this PR describes?  Thanks.
  
 
 On the surface, it's the issue from this PR where we have lots of separate
 induction variables with their own index registers each requiring an add
 during each iteration.  The presence of this issue masks whether we have too
IMHO, this issue should be fixed by a gimple unroller before IVO, or in RTL
unroller.  It's not that practical to fix it in IVO.

 many candidates, but in the sense that we often see register spill
 associated with this kind of code, we do have too many.  I.e., the register
 pressure model may not be in tune with the kind of addressing mode that's
 being selected, but that's just a theory.  Or perhaps pressure is just being
 generically under-predicted for POWER.
IVO's reg-pressure model fails to preserve a small iv set sometime on aarch64
too.  I have this issue on list.  On the other hand, the loops I saw are
generally very big, it's might be inappropriate that rtl unroller decides to
unroll them at the first place.

 
 Up till now we haven't done a lot of detailed analysis.  Hopefully we can
 free somebody up to start looking at some of our unrolling issues soon.


[Bug middle-end/25529] (unsigned * 2)/2 is not changed into unsigned 0x7FFFFFFF

2015-08-12 Thread naveenh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25529

--- Comment #3 from naveenh at gcc dot gnu.org ---
Author: naveenh
Date: Thu Aug 13 04:37:22 2015
New Revision: 226847

URL: https://gcc.gnu.org/viewcvs?rev=226847root=gccview=rev
Log:
2015-08-13  Naveen H.S  naveen.hurugalaw...@caviumnetworks.com

PR middle-end/25529
* match.pd (div (mult @0 @1) @1) : New simplifier.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/match.pd


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #58 from amker at gcc dot gnu.org ---
(In reply to Bill Schmidt from comment #56)
 (In reply to Bill Schmidt from comment #53)
  I'm not a fan of a tree-level unroller.  It's impossible to make good
  decisions about unroll factors that early.  But your second approach sounds
  quite promising to me.
 
 I would be willing to soften this statement.  I think that an early unroller
 might well be a profitable approach for most systems with large caches and
 so forth, where if the unrolling heuristics are not completely accurate we
 are still likely to make a reasonably good decision.  However, I would
 expect to see ports with limited caches/memory to want more accurate control
 over unrolling decisions.  So I could see allowing ports to select between a
 GIMPLE unroller and an RTL unroller (I doubt anybody would want both).

Thanks for the comments.
As David suggested, we can try to implement a relatively conservative unroller
and make sure it's a win in most unrolled cases, even with some opportunities
missed.  Then we can enable it at O3/Ofast level, that would be wanted I think
since now we don't have a general unroller by default.

 
 In general it seems like PowerPC could benefit from more aggressive
 unrolling much of the time, provided we can also solve the related IVOPTS
 problems that cause too much register spill.
 
 I may have an interest in working on a GIMPLE unroller, depending on how
 quickly I can complete or shed some other projects...

(In reply to rguent...@suse.de from comment #57)
 On Tue, 11 Aug 2015, wschmidt at gcc dot gnu.org wrote:
 
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256
  
  --- Comment #56 from Bill Schmidt wschmidt at gcc dot gnu.org ---
  (In reply to Bill Schmidt from comment #53)
   I'm not a fan of a tree-level unroller.  It's impossible to make good
   decisions about unroll factors that early.  But your second approach 
   sounds
   quite promising to me.
  
  I would be willing to soften this statement.  I think that an early unroller
  might well be a profitable approach for most systems with large caches and 
  so
  forth, where if the unrolling heuristics are not completely accurate we are
  still likely to make a reasonably good decision.  However, I would expect to
  see ports with limited caches/memory to want more accurate control over
  unrolling decisions.  So I could see allowing ports to select between a 
  GIMPLE
  unroller and an RTL unroller (I doubt anybody would want both).
  
  In general it seems like PowerPC could benefit from more aggressive 
  unrolling
  much of the time, provided we can also solve the related IVOPTS problems 
  that
  cause too much register spill.
  
  I may have an interest in working on a GIMPLE unroller, depending on how
  quickly I can complete or shed some other projects...
 
 I think that a separate unrolling on GIMPLE would be a hard sell
 due to the lack of a good cost mode.  _But_ doing unrolling as part
 of another transform like we are doing now makes sense.  So does
 eventually moving parts of an RTL pass involving unrolling to
 GIMPLE, like modulo scheduling or SMS (leaving the scheduling part
 to RTL).
(In reply to Bill Schmidt from comment #56)
 (In reply to Bill Schmidt from comment #53)
  I'm not a fan of a tree-level unroller.  It's impossible to make good
  decisions about unroll factors that early.  But your second approach sounds
  quite promising to me.
 
 I would be willing to soften this statement.  I think that an early unroller
 might well be a profitable approach for most systems with large caches and
 so forth, where if the unrolling heuristics are not completely accurate we
 are still likely to make a reasonably good decision.  However, I would
 expect to see ports with limited caches/memory to want more accurate control
 over unrolling decisions.  So I could see allowing ports to select between a
 GIMPLE unroller and an RTL unroller (I doubt anybody would want both).

As David suggested, we can try to implement a relatively conservative unroller
and make sure it's a win in most unrolled cases, even with some opportunities
missed.  Then we can enable it at O3/Ofast level, it would be nice since we
don't have a general unroller by default.

About cost-model.  Is it possible to introduce cache information model in GCC? 
I don't see it's a difficult problem, and can be a start for possible cache
sensitive optimizations in the future?  Another general question is: what kind
of cost do we need in a fine unroller, besides cache/branch ones?

 
 In general it seems like PowerPC could benefit from more aggressive
 unrolling much of the time, provided we can also solve the related IVOPTS
 problems that cause too much register spill.
 
 I may have an interest in working on a GIMPLE unroller, depending on how
 quickly I can complete or shed some other projects...


 
 Note that the RTL unroller is not enabled by default by any 

[Bug libgomp/67141] wrong libgomp mutex initialisation order

2015-08-12 Thread xantares09 at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67141

--- Comment #2 from xantares09 at hotmail dot com ---
Note that you'll need mingw-w64 4.0.4, not 4.0.2 to reproduce, I used gcc
5.2.0.


[Bug driver/67187] Not able to build GMP for Mac OS Yosemite

2015-08-12 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67187

--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Jai from comment #2)
 I am talking about this

[snip wall of text with some warnings but no error as far as I can see]

 How to remove this issue?

Again, what issue?


[Bug driver/67187] Not able to build GMP for Mac OS Yosemite

2015-08-12 Thread jai.sharma3521 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67187

--- Comment #4 from Jai jai.sharma3521 at gmail dot com ---
Created attachment 36175
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36175action=edit
Config file While building GMP6.0.0

Attached is the config while when I try to build GMP.There is Clang Error.


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #57 from rguenther at suse dot de rguenther at suse dot de ---
On Tue, 11 Aug 2015, wschmidt at gcc dot gnu.org wrote:

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256
 
 --- Comment #56 from Bill Schmidt wschmidt at gcc dot gnu.org ---
 (In reply to Bill Schmidt from comment #53)
  I'm not a fan of a tree-level unroller.  It's impossible to make good
  decisions about unroll factors that early.  But your second approach sounds
  quite promising to me.
 
 I would be willing to soften this statement.  I think that an early unroller
 might well be a profitable approach for most systems with large caches and so
 forth, where if the unrolling heuristics are not completely accurate we are
 still likely to make a reasonably good decision.  However, I would expect to
 see ports with limited caches/memory to want more accurate control over
 unrolling decisions.  So I could see allowing ports to select between a GIMPLE
 unroller and an RTL unroller (I doubt anybody would want both).
 
 In general it seems like PowerPC could benefit from more aggressive unrolling
 much of the time, provided we can also solve the related IVOPTS problems that
 cause too much register spill.
 
 I may have an interest in working on a GIMPLE unroller, depending on how
 quickly I can complete or shed some other projects...

I think that a separate unrolling on GIMPLE would be a hard sell
due to the lack of a good cost mode.  _But_ doing unrolling as part
of another transform like we are doing now makes sense.  So does
eventually moving parts of an RTL pass involving unrolling to
GIMPLE, like modulo scheduling or SMS (leaving the scheduling part
to RTL).

Note that the RTL unroller is not enabled by default by any optimization
level and note that unfortunately the RTL unroller shares flags with
the GIMPLE level complete peeling (where it mainly controls cost 
modeling).  Oh, but it's enabled with -fprofile-use.

It's been a long time since I've done SPEC measuring with/without
-funroll-loops (or/and -fpeel-loops).  Note that these flags have
secondary effects as well:

toplev.c:flag_web = flag_unroll_loops || flag_peel_loops;
toplev.c:flag_rename_registers = flag_unroll_loops || flag_peel_loops;


[Bug preprocessor/67132] gcc -D__WCHAR_TYPE__='unsigned int' should not complain about built-in types redefined

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67132

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

  Component|c   |preprocessor

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
Sorry, I meant to say that the warning about the redefinition seems in place to
me.


[Bug driver/67187] Not able to build GMP for Mac OS Yosemite

2015-08-12 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67187

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #6 from Andrew Pinski pinskia at gcc dot gnu.org ---
This is not a GCC bug as GCC does not control either clang or GMP.


[Bug c++/67183] Darwin stub vs. non_lazy pointer ordering incompatible with clang assembler.

2015-08-12 Thread jay.krell at cornell dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67183

--- Comment #2 from Jay jay.krell at cornell dot edu ---
er, three traversals.

Also, ideally, nothing is ever output in hash order.
At least not to assembly source and objects. It might be unavoidable for final
executables.

i.e. adding one randomly named function should not cause the output to be
ordered, but that one function merely inserted in its predictable place.


[Bug c++/67183] Darwin stub vs. non_lazy pointer ordering incompatible with clang assembler.

2015-08-12 Thread jay.krell at cornell dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67183

--- Comment #3 from Jay jay.krell at cornell dot edu ---
https://github.com/modula3/cm3/commit/14d5e667e19abaab679b52bc8fd35a4e38073330

is a simple patch against 4.7 that establishes a partial ordering,
separating the indirect functions from the indirect data,
and appears to workaround the llvm-as bug.

It still outputs in hash order mostly.

Something similar/trivial against trunk should do.


[Bug bootstrap/66801] [6 Regression] gcc miscompiled during PGO/LTO bootstrap

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66801

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #20 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Cannot reproduce the issue anymore. Closing.


[Bug bootstrap/66994] [6 Regression] ICE: Segmentation fault during bootstrap-O3

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66994

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Cannot reproduce the issue anymore. Closing.


[Bug driver/67187] Not able to build GMP for Mac OS Yosemite

2015-08-12 Thread jai.sharma3521 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67187

--- Comment #5 from Jai jai.sharma3521 at gmail dot com ---
(In reply to Marc Glisse from comment #3)
 (In reply to Jai from comment #2)
  I am talking about this
 
 [snip wall of text with some warnings but no error as far as I can see]
 
  How to remove this issue?
 
 Again, what issue?

See the Config.log you can see the Clang error.

ndefined symbols for architecture x86_64:
  _main, referenced from:
 implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


[Bug driver/67187] Not able to build GMP for Mac OS Yosemite

2015-08-12 Thread jai.sharma3521 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67187

Jai jai.sharma3521 at gmail dot com changed:

   What|Removed |Added

Version|unknown |5.1.0

--- Comment #2 from Jai jai.sharma3521 at gmail dot com ---
(In reply to Marc Glisse from comment #1)
 Where do you see an error? I can only find warnings in that config.log file.

Hi 

Thanks for replying 


I am talking about this

Applications/Xcode.app/Contents/Developer/usr/bin/make  install-recursive
Making install in tests
Making install in .
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in devel
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in mpn
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in mpz
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in mpq
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in mpf
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in rand
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in misc
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in cxx
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in mpn
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in mpz
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in mpq
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in mpf
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in printf
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in scanf
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in rand
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in cxx
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in demos
Making install in calc
/Applications/Xcode.app/Contents/Developer/usr/bin/make  install-am
make[5]: Nothing to be done for `install-exec-am'.
make[5]: Nothing to be done for `install-data-am'.
Making install in expr
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
Making install in tune
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
Making install in doc
make[3]: Nothing to be done for `install-exec-am'.
 ../../install-sh -c -d '/usr/gcc-5.1.0/share/info'
 /usr/bin/install -c -m 644 ../../doc/gmp.info ../../doc/gmp.info-1
../../doc/gmp.info-2 '/usr/gcc-5.1.0/share/info'
 install-info --info-dir='/usr/gcc-5.1.0/share/info'
'/usr/gcc-5.1.0/share/info/gmp.info'
 ../install-sh -c -d '/usr/gcc-5.1.0/lib'
 /bin/sh ./libtool   --mode=install /usr/bin/install -c   libgmp.la libgmpxx.la
'/usr/gcc-5.1.0/lib'
libtool: install: /usr/bin/install -c .libs/libgmp.10.dylib
/usr/gcc-5.1.0/lib/libgmp.10.dylib
libtool: install: (cd /usr/gcc-5.1.0/lib  { ln -s -f libgmp.10.dylib
libgmp.dylib || { rm -f libgmp.dylib  ln -s libgmp.10.dylib libgmp.dylib; };
})
libtool: install: /usr/bin/install -c .libs/libgmp.lai
/usr/gcc-5.1.0/lib/libgmp.la
libtool: install: /usr/bin/install -c .libs/libgmpxx.4.dylib
/usr/gcc-5.1.0/lib/libgmpxx.4.dylib
libtool: install: (cd /usr/gcc-5.1.0/lib  { ln -s -f libgmpxx.4.dylib
libgmpxx.dylib || { rm -f libgmpxx.dylib  ln -s libgmpxx.4.dylib
libgmpxx.dylib; }; })
libtool: install: /usr/bin/install -c .libs/libgmpxx.lai
/usr/gcc-5.1.0/lib/libgmpxx.la
libtool: install: /usr/bin/install -c .libs/libgmp.a
/usr/gcc-5.1.0/lib/libgmp.a
libtool: install: chmod 644 /usr/gcc-5.1.0/lib/libgmp.a
libtool: install: ranlib /usr/gcc-5.1.0/lib/libgmp.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib:
file: /usr/gcc-5.1.0/lib/libgmp.a(mp_clz_tab.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib:
file: /usr/gcc-5.1.0/lib/libgmp.a(obprintf.o) has no symbols

[Bug testsuite/67175] gcc.dg/vect/trapv-vect-reduc-4.c FAILs

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67175

vries at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #5 from vries at gcc dot gnu.org ---
Patch committed, marking resolved-fixed


[Bug testsuite/67175] gcc.dg/vect/trapv-vect-reduc-4.c FAILs

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67175

--- Comment #4 from vries at gcc dot gnu.org ---
(In reply to r...@cebitec.uni-bielefeld.de from comment #2)

 I just wonder if it wouldn't be better to skip part of
 the test based on some target property rather than target triplet.
 

Submitted '[RFC] Add check_effective_target_vect_min_max' at
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00567.html .


[Bug c++/67183] Darwin stub vs. non_lazy pointer ordering incompatible with clang assembler.

2015-08-12 Thread jay.krell at cornell dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67183

--- Comment #1 from Jay jay.krell at cornell dot edu ---
It turns out, this looks easy to fix on the gcc side.

See machopic_finish.

Have it run two traversla instead of one. The first editing stubs, the second
non-lazy pointers.


[Bug c++/65143] [C++11] missing devirtualization for virtual base in final classes

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65143

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||gpderetta at gmail dot com

--- Comment #5 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
*** Bug 67184 has been marked as a duplicate of this bug. ***


[Bug c++/67184] Missed optimization with C++11 final specifier

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67184

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Paolo Carlini from comment #2)
 Related to c++/65143.

Yes, lets close this one.

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


[Bug c/65452] strcmp (foo, foo) could give a warning

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65452

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
We now warn for the testcase in Comment 2.


[Bug c++/67184] Missed optimization with C++11 final specifier

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67184

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC|gpderetta at gmail dot com |

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com ---
Related to c++/65143.


[Bug c/55892] Bogus compiler warning

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55892

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Marek Polacek mpolacek at gcc dot gnu.org ---
With current trunk I get two warnings, on line 33 and on line 34.  I guess
fixed then.


[Bug middle-end/24639] [meta-bug] bug to track all Wuninitialized issues

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
Bug 24639 depends on bug 27120, which changed state.

Bug 27120 Summary: Should warn about uninitialized use of variable array element
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27120

   What|Removed |Added

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


[Bug c/27120] Should warn about uninitialized use of variable array element

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27120

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
We now warn even for the first testcase in Description (both C and C++).


[Bug middle-end/10138] warn for uninitialized arrays passed as const* arguments

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=10138
Bug 10138 depends on bug 27120, which changed state.

Bug 27120 Summary: Should warn about uninitialized use of variable array element
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27120

   What|Removed |Added

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


[Bug c/25702] feature request: generate a warning for sizeof on a pointer

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25702

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Marek Polacek mpolacek at gcc dot gnu.org ---
I think -Wsizeof-pointer-memaccess should be enough for this PR be closed now.


[Bug c/35694] Error about bad function argument isn't issued on the line of the argument but on the line where function ends

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35694

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
I fixed this for 4.9.  Closing as fixed thus.


[Bug preprocessor/67132] gcc -D__WCHAR_TYPE__='unsigned int' should not complain about built-in types redefined

2015-08-12 Thread giacomo at tesio dot it
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67132

--- Comment #4 from Giacomo Tesio giacomo at tesio dot it ---
Indeed, this is a request for an enhancement, not a bug report.

I mean, being able to decide how gcc defines wchar_t is an enhancement, given
the poor definition of such type in the standard.
With -Wno-pointer-sign one will miss useful warnings for pointer signedness
unrelated to wide characters.

Note however that I don't want to be able to redefine *any* built-in definition
without warnings, just those three. 

To me, an even better alternative is: add a -funsigned-wchar to gcc to enable
unsigned 32bit wchar_t. Something along the line of -fshort-wchar, but that
change only the sign of wchar_t, not the size.

Given that according to the unicode standard the width of wchar_t is
compiler-specific, such a flag can improve the ability to use gcc for code
developed with more exotic compilers and platforms.


[Bug c++/65143] [C++11] missing devirtualization for virtual base in final classes

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65143

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||trippels at gcc dot gnu.org

--- Comment #6 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Testcase from PR67184:

markus@x4 tmp % cat test.ii
struct V {
  virtual void foo();
};

struct wV final : V {};

struct oV final : V {
  void foo();
};

void call(V x) { x.foo(); }

void call(wV x) { x.foo(); }

void call(oV x) { x.foo(); }

markus@x4 tmp % clang++ -std=c++14 -c -O3 -S test.ii -o -
...
_Z4callR2wV:# @_Z4callR2wV
.cfi_startproc
# BB#0: # %entry
jmp _ZN1V3fooEv # TAILCALL
...

markus@x4 tmp % g++ -std=c++14 -O3 -c -S test.ii -o -
...
_Z4callR2wV:
.LFB1:
.cfi_startproc
movq(%rdi), %rax
jmp *(%rax)


[Bug c++/67193] New: Overzealous -Wstack-usage warning

2015-08-12 Thread tobi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67193

Bug ID: 67193
   Summary: Overzealous -Wstack-usage warning
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tobi at gcc dot gnu.org
  Target Milestone: ---

-Wstack-usage throws a warning if it cannot prove that the stack is bounded. 
Therefore it is more noisy with optimization turned off.  That is fine, but
sometimes it's really too noisy, such as in this example (this is with current
trunk):

$ cat t.cc
#include alloca.h

void f(char *p) {
  char *q = (char*)alloca(1);
  *q = *p;
  return;
}
$ bin/g++ -c -Wstack-usage=898989 t.cc
t.cc: In function ‘void f(char*)’:
t.cc:3:6: warning: stack usage might be unbounded [-Wstack-usage=]
 void f(char *p) {
  ^
$ bin/g++ -O -c -Wstack-usage=898989 t.cc
$ bin/g++ --version
g++ (GCC) 6.0.0 20150812 (experimental)
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.

$ 

Constant folding should suffice to get rid of this warning but apparently
alloca is converted to some more complicated operation before the warning is
issued.  (I know that alloca with a fixed argument is fairly pointless, but
this can happen with templates.)

[Bug c++/66941] Missing diagnostic extraneous template parameter list in template specialization

2015-08-12 Thread miyuki at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66941

Mikhail Maltsev miyuki at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Mikhail Maltsev miyuki at gcc dot gnu.org ---
dup

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


[Bug c++/63809] Missing warning on extra template

2015-08-12 Thread miyuki at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63809

Mikhail Maltsev miyuki at gcc dot gnu.org changed:

   What|Removed |Added

 CC||miyuki at gcc dot gnu.org

--- Comment #3 from Mikhail Maltsev miyuki at gcc dot gnu.org ---
*** Bug 66941 has been marked as a duplicate of this bug. ***


[Bug c++/63809] Missing warning on extra template

2015-08-12 Thread vanyacpp at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63809

--- Comment #2 from Ivan Sorokin vanyacpp at gmail dot com ---
(In reply to Marc Glisse from comment #0)
 g++ fails to warn about the extra parameter list. clang does warn, see
 PR63750.

Why is it a warning? Isn't this code incorrect? I can not find anything in
[temp.expl.spec] that forbid a code like this, but I can not find anything that
assign a specific meaning to this code either.

At least one compiler (MSVC) rejects this code with an error.


[Bug c++/67190] New: gcc allows extra template on explicit template specializations

2015-08-12 Thread vanyacpp at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67190

Bug ID: 67190
   Summary: gcc allows extra template  on explicit template
specializations
   Product: gcc
   Version: 5.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vanyacpp at gmail dot com
  Target Milestone: ---

GCC accepts this code:

template typename T
struct vector
{};

template typename T
struct z
{};

template 
template  // extra
struct zvectorint 
{};

After reading [temp.expl.spec] I can not find anything that forbids or allows
extra 'template'. MSVC rejects this code and I find this reasonable.

1main.cpp(44): error C2910: 'zvectorT' : cannot be explicitly specialized

Clang accepts this code, but it gives a warning: extraneous template parameter
list in template specialization.


[Bug c/25702] feature request: generate a warning for sizeof on a pointer

2015-08-12 Thread meklund at cisco dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25702

--- Comment #11 from Mark Eklund meklund at cisco dot com ---
-Wsizeof-pointer-memaccess is definitely a good targeted fix and probably hits
a majority of what I've seen.  I'm good with this being resolved.


[Bug other/67098] Documentation --with-stage1-ldflags does not mention default -static-libstdc++ -static-libgcc

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67098

vries at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch

--- Comment #1 from vries at gcc dot gnu.org ---
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00603.html


[Bug fortran/67170] PRE can't hoist out a readonly argument

2015-08-12 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67170

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Ok, the argument may go like foo (D.3438) may not modify *arg_29(D)
because then the fnspec on foo would be incorrect - *arg_29(D) would be
modified.

Untested patch (works for the testcase):

Index: gcc/tree-ssa-alias.c
===
--- gcc/tree-ssa-alias.c(revision 226807)
+++ gcc/tree-ssa-alias.c(working copy)
@@ -2153,6 +2153,33 @@ call_may_clobber_ref_p_1 (gcall *call, a
return false;
 }

+  /* If the base of an indirect access is a parameter which by means
+ of the fnspec of ourselves not clobbered by us then it is surely
+ not modified by calls we do.  */
+  tree base_ptr;
+  tree fnspec;
+  if (TREE_CODE (base) == MEM_REF
+   (base_ptr = TREE_OPERAND (base, 0))
+   TREE_CODE (base_ptr) == SSA_NAME
+   SSA_NAME_IS_DEFAULT_DEF (base_ptr)
+   SSA_NAME_VAR (base_ptr)
+   TREE_CODE (SSA_NAME_VAR (base_ptr)) == PARM_DECL
+   (fnspec = lookup_attribute (fn spec,
+TYPE_ATTRIBUTES (TREE_TYPE
(cfun-decl)
+{
+  unsigned i = 0;
+  tree arg;
+  for (arg = DECL_ARGUMENTS (cfun-decl);
+  arg  arg != SSA_NAME_VAR (base_ptr); arg = DECL_CHAIN (arg), ++i)
+   ;
+  gcc_assert (arg == SSA_NAME_VAR (base_ptr));
+  fnspec = TREE_VALUE (TREE_VALUE (fnspec));
+  if ((unsigned) TREE_STRING_LENGTH (fnspec)  i + 1
+  (TREE_STRING_POINTER (fnspec)[i + 1] == 'R'
+ || TREE_STRING_POINTER (fnspec)[i + 1] == 'r'))
+   return false;
+}
+
   /* Check if the base variable is call-clobbered.  */
   if (DECL_P (base))
 return pt_solution_includes (gimple_call_clobber_set (call), base);


of course this asks for the argument being marked somehow to avoid the
linear search for its index.  It also requires some thinking on if and
when derived pointers (from the argument) allow similar handling.

A way simpler approach would be to change code generation by the Frontend
for scalar pass-by-reference intent-in arguments to load such parameters
at the beginning of the function and further use that load result for
all references to that parameter.

Martin, can you check if the above solves the RA issue it was blocking?


[Bug c++/47461] warn_unused_result attribute ignored for templates

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47461

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com ---
Let's add a testcase and close the bug.


[Bug c++/55095] Wshift-overflow

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55095

--- Comment #18 from Marek Polacek mpolacek at gcc dot gnu.org ---
Testing a fix for the sign bit problem.


[Bug other/67092] bootstrap failure in running genpreds, libstdc++ version mismatch

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67092

vries at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch

--- Comment #14 from vries at gcc dot gnu.org ---
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00603.html


[Bug target/29256] [4.9/5/6 regression] loop performance regression

2015-08-12 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29256

--- Comment #59 from Bill Schmidt wschmidt at gcc dot gnu.org ---
(In reply to rguent...@suse.de from comment #57)
 
 It's been a long time since I've done SPEC measuring with/without
 -funroll-loops (or/and -fpeel-loops).  Note that these flags have
 secondary effects as well:
 
 toplev.c:flag_web = flag_unroll_loops || flag_peel_loops;
 toplev.c:flag_rename_registers = flag_unroll_loops || flag_peel_loops;

We don't have a lot of data yet, but we have seen several examples in SPEC and
other benchmarks where turning on -funroll-loops is helpful, but should be much
more helpful -- in many cases performance improves with a much higher unroll
factor.  However, the effectiveness of unrolling is very much tied up with
these issues in IVOPTS, where we currently end up with too many separate base
registers for IVs.  As we increase the unroll factor, we eventually hit this as
a limiting factor, so fixing this IVOPTS issue would be very helpful for POWER.

As a side note, with -fprofile-use a GIMPLE unroller could peel and unroll hot
loop traces in loops that would otherwise be too complex to unroll.  I.e., if
there is a single hot trace through a loop, you can do tail duplication on the
trace to force it into superblock form, and then peel and unroll that
superblock while falling into the original loop if the trace is left.  Complete
unrolling and unrolling by a factor are both possible.  I don't know of
specific benchmarks that would be helped by this, though.

(An RTL unroller could do this as well, but it seems much more natural and
implementable in GIMPLE.)


[Bug c++/67190] gcc allows extra template on explicit template specializations

2015-08-12 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67190

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Marc Glisse glisse at gcc dot gnu.org ---
Dup

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


[Bug target/67127] [ARM] Avoiding odd-number ldrd/strd in movdi introduced a regression on armeb-linux-gnueabihf

2015-08-12 Thread yroux at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67127

--- Comment #1 from Yvan Roux yroux at gcc dot gnu.org ---
Author: yroux
Date: Wed Aug 12 13:27:41 2015
New Revision: 226811

URL: https://gcc.gnu.org/viewcvs?rev=226811root=gccview=rev
Log:
2015-08-12  Yvan Roux  yvan.r...@linaro.org

PR target/67127
* config/arm/arm.md (movdi): Restrict illegitimate ldrd/strd checking
to ARM core registers.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm.md


[Bug c++/55095] Wshift-overflow

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55095

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #17 from Marek Polacek mpolacek at gcc dot gnu.org ---
Reopening.


[Bug c++/63809] Missing warning on extra template

2015-08-12 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63809

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 CC||vanyacpp at gmail dot com

--- Comment #1 from Marc Glisse glisse at gcc dot gnu.org ---
*** Bug 67190 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/67191] New: [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

Bug ID: 67191
   Summary: [6 Regression] ICE: in before_dom_children, at
tree-ssa-sccvn.c:4372
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: trippels at gcc dot gnu.org
  Target Milestone: ---

r226801 causes: 

trippels@gcc2-power8 tools % ~/gcc_test/usr/local/bin/g++ -ftemplate-depth-128
-O3 -finline-functions -Wno-inline -Wall -pedantic -fPIC -m64 -pedantic
-Wstrict-aliasing -fstrict-aliasing -Wextra -Wsign-promo -Wunused-parameter
-Wconversion -Wfloat-equal -Wshadow -Wno-long-long -DBOOST_ALL_NO_LIB=1
-DNDEBUG -I.. -c -o
/home/trippels/boost_testing/results/boost/bin.v2/libs/unordered/test/unordered/fwd_set_test.test/gcc-6.0.0/release/fwd_set_test.o
../libs/unordered/test/unordered/fwd_set_test.cpp
In file included from
../libs/unordered/test/unordered/../helpers/test.hpp:10:0,
 from ../libs/unordered/test/unordered/fwd_set_test.cpp:61:
../libs/unordered/test/unordered/fwd_set_test.cpp: In member function ‘virtual
void use_multiset_fwd_declared_function_type::run()’:
../libs/unordered/test/unordered/fwd_set_test.cpp:96:21: internal compiler
error: in before_dom_children, at tree-ssa-sccvn.c:4372
 UNORDERED_AUTO_TEST(use_multiset_fwd_declared_function) {
 ^
../boost/preprocessor/cat.hpp:29:34: note: in definition of macro
‘BOOST_PP_CAT_I’
 #define BOOST_PP_CAT_I(a, b) a ## b
  ^
../libs/unordered/test/unordered/../helpers/test.hpp:24:10: note: in expansion
of macro ‘BOOST_PP_CAT’
 void BOOST_PP_CAT(x, _type)::run()  \
  ^
../libs/unordered/test/unordered/fwd_set_test.cpp:96:1: note: in expansion of
macro ‘UNORDERED_AUTO_TEST’
 UNORDERED_AUTO_TEST(use_multiset_fwd_declared_function) {
 ^
0x10c518c7 sccvn_dom_walker::before_dom_children(basic_block_def*)
../../gcc/gcc/tree-ssa-sccvn.c:4371
0x110b0e2b dom_walker::walk(basic_block_def*)
../../gcc/gcc/domwalk.c:177
0x10c53033 run_scc_vn(vn_lookup_kind)
../../gcc/gcc/tree-ssa-sccvn.c:4459
0x10c23503 execute
../../gcc/gcc/tree-ssa-pre.c:4847
Please submit a full bug report,
with preprocessed source if appropriate

reducing...

[Bug other/67099] Documentation --with-host-libstdcxx is outdated, mentions ppl

2015-08-12 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67099

--- Comment #2 from vries at gcc dot gnu.org ---
If this ( https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00603.html ) gets
approved, --with-host-libstdcxx will be removed, and we can mark this as
resolved-wont-fix.


[Bug tree-optimization/67191] [6 Regression] ICE: in before_dom_children, at tree-ssa-sccvn.c:4372

2015-08-12 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67191

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-12
 Ever confirmed|0   |1

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
trippels@gcc2-power8 tools % cat fwd_set_test.ii
template typename class A;
template typename _Tp using __allocator_base = _Tp;
template class T, class = T, class = int, class = __allocator_baseint
class B;
template class T, class H, class P, class A
bool operator==(BT, H, P, A const , BT, H, P, A const );
template class T, class H, class P, class A
bool operator!=(BT, H, P, A const , BT, H, P, A const );
typedef Bint int_multiset;
int a;
template typename struct C {
  C(int) {}
};
template typename struct D;
template typename struct K;
struct L : CADint, CAKint {
  template typename First, typename Second
  L(First, Second)
  : CADint(0), CAKint(0) {}
};
template typename Node struct F {
  typedef typename Node::node_pointer node_pointer;
  node_pointer node_;
  F();
  F(typename Node::link_pointer p1) : node_(static_castnode_pointer(p1)) {}
  void operator++() { node_ = 0; }
  int operator!=(F p1) { return node_ != p1.node_; }
};
struct G {
  typedef G *link_pointer;
};
struct H {
  static int new_bucket_count(int) {
int b;
int *c = 0;
if (a)
  b = *c;
return b;
  }
};
class functions {
public:
  functions(int, int) {}
  ~functions();
};
template typename Types struct table : functions {
  typedef typename Types::policy policy;
  typedef Types node_allocator;
  typedef Ftypename Types::node iterator;
  L allocators_;
  int bucket_count_;
  int size_;
  typename Types::link_pointer get_previous_start() const;
  iterator begin() const { return size_ ? get_previous_start() : 0; }
  table(int, typename Types::hasher, typename Types::key_equal, node_allocator)
  : functions(0, 0), allocators_(0, 0),
bucket_count_(policy::new_bucket_count(0)), size_() {}
};
template typename struct K : G { typedef K *node_pointer; };
struct I {
  typedef G *link_pointer;
};
struct J {
  typedef I::link_pointer link_pointer;
};
template typename struct D {
  typedef int hasher;
  typedef int key_equal;
  typedef Kint node;
  typedef J::link_pointer link_pointer;
  typedef H policy;
};
struct M : tableDint {
  node_allocator grouped_table_impl_a;
  M(int, int) : table(0, 0, 0, grouped_table_impl_a) {}
  void equals(M const ) const {
for (iterator d = begin(); d.node_;) {
  iterator e;
  group_equals(e);
}
  }
  static int group_equals(iterator p1) {
int f;
iterator g;
for (; g != p1; ++g)
  if (find())
if (f)
  return 0;
  }
  static int find();
};
template class, class, class, class class B {
  M table_;

public:
  B(unsigned long = 0);
  friend bool operator==(B const , B const );
  friend bool operator!=(B const , B const );
};
template class T, class H, class P, class A
BT, H, P, A::B(unsigned long)
: table_(0, 0) {}
template class T, class H, class P, class A
bool operator==(BT, H, P, A const p1, BT, H, P, A const p2) {
  p1.table_.equals(p2.table_);
}
template class T, class H, class P, class A
bool operator!=(BT, H, P, A const p1, BT, H, P, A const p2) {
  p1.table_.equals(p2.table_);
}
void use_multiset_fwd_declared_function_typerun() {
  int_multiset x, y;
  x == y;
  x != y;
}


trippels@gcc2-power8 tools % g++ -O2 -c fwd_set_test.ii
fwd_set_test.ii: In function ‘void
use_multiset_fwd_declared_function_typerun()’:
fwd_set_test.ii:111:6: internal compiler error: in before_dom_children, at
tree-ssa-sccvn.c:4372
 void use_multiset_fwd_declared_function_typerun() {
  ^

[Bug c++/52742] Initializing an array using brace initializer and template parameters

2015-08-12 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52742

--- Comment #4 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Wed Aug 12 17:18:14 2015
New Revision: 226824

URL: https://gcc.gnu.org/viewcvs?rev=226824root=gccview=rev
Log:
2015-08-12  Paolo Carlini  paolo.carl...@oracle.com

PR c++/52742
* g++.dg/cpp0x/pr52742.C: New.

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


[Bug c++/67161] [5/6 Regression] ICE with a static_assert using our internal __not/__or/__and traits

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67161

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Wed Aug 12 17:33:39 2015
New Revision: 226827

URL: https://gcc.gnu.org/viewcvs?rev=226827root=gccview=rev
Log:
PR c++/67161
* error.c (dump_decl) [TEMPLATE_ID_EXPR]: Pass
TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS.

Added:
trunk/gcc/testsuite/g++.dg/cpp1y/var-templ44.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/error.c


[Bug c++/67195] New: cpp and g++ does not define __GLIBCXX__

2015-08-12 Thread noloader at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67195

Bug ID: 67195
   Summary: cpp and g++ does not define __GLIBCXX__
   Product: gcc
   Version: 5.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: noloader at gmail dot com
  Target Milestone: ---

I'm trying to detect a debug build, and enjoy the benefit of additional
instrumentation:

# Debug testing
ifneq ($(filter -DDEBUG -DDEBUG=1 -O0 -O1 -Og,$(CXXFLAGS)),)
  CXXFLAGS += -D_GLIBCXX_DEBUG=1 -D_GLIBCXX_CONCEPT_CHECKS=1
endif # Debug build

According to Chapter 3. Using Macros
(https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html):

__GLIBCXX__

The current version of libstdc++ in compressed ISO date format, as an
unsigned long.

However, on Fedora22 x86_64:

$ cpp -x c++ -dM  /dev/null | grep -i lib
$ cpp -x c++ -dM  /dev/null | grep -i c++
#define __GLIBCXX_BITSIZE_INT_N_0 128
#define __GLIBCXX_TYPE_INT_N_0 __int128
$ cpp -x c++ -dM  /dev/null | grep -i cxx
#define __GLIBCXX_BITSIZE_INT_N_0 128
#define __GLIBCXX_TYPE_INT_N_0 __int128
$ g++ -E -dM -  /dev/null | grep -i lib
$ g++ -E -dM -  /dev/null | grep -i c++
$ g++ -E -dM -  /dev/null | grep -i cxx
$

-

$ uname -a
Linux localhost.localdomain 4.1.3-201.fc22.x86_64 #1 SMP Wed Jul 29 19:50:22
UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ g++ --version
g++ (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4)
Copyright (C) 2015 Free Software Foundation, Inc


[Bug c++/67108] [6 Regression] ICE: in cxx_eval_call_expression, at cp/constexpr.c:1345 when dumping

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67108

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org ---
Fixed.


[Bug c++/49409] some possible new warnings for strange code

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49409

--- Comment #6 from Marek Polacek mpolacek at gcc dot gnu.org ---
-Wtautological-compare has been added to GCC 6.  -Wlogical-op is older, but the
part of it that warns about i  i is new and has only been added to GCC 6.

I agree about closing the bug now, BTW.


[Bug tree-optimization/65709] [5 Regression] Bad code for LZ4 decompression with -O3 on x86_64

2015-08-12 Thread yann.collet.73 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65709

--- Comment #18 from Yann Collet yann.collet.73 at gmail dot com ---
This issue makes me wonder : how to efficiently access unaligned memory ?


The case in point is ARM cpu.
They don't support SSE/AVX, so they seem unaffected by this specific issue,
but this issue force writing the source code in a certain way, to remain
compatible with vectorizer assumtion.
Therefore, for portable code, it becomes an issue :
how to write a code which is both portable and efficient on both targets ?


Since apparently, writing : u32 = *(U32*)ptr;
is forbidden if ptr is not guaranteed to be aligned on 4-bytes boundaries
as the compiler will then be authorized to assume ptr is properly aligned,
how to efficiently load 4-bytes from memory at unaligned position ?

I know 3 ways :

1) byte by byte : secure, but slow == not efficient

2) using memcpy : memcpy(u32, ptr, sizeof(u32));
It works. It's safe, and on x86/x64 it's correctly translated into a single mov
instruction, so it's also fast.
Alas, on ARM target, this get translated into much more complex /cautious
sequence, depending on optimization settings.
This is not a small difference :
at -O3 settings, we get a x2 performance difference.
at -O2 settings, it becomes x5 (unaligned code is slower).

3) using __packed instruction : Basically, feature the same benefits and
problems than memcpy() method above


The problem is therefore for newer ARM CPU, which efficiently support unaligned
memory.
Accessing this performance is not possible using memcpy() nor __packed.
And it seems the only way to get it is to do : u32 = *(U32*)ptr;

The difference in performance is really huge, in fact it totally changes the
application, so it can't be ignored.


The question is :
Is there a way to access this performance without violating the principle which
has been stated into this thread, 
that is : it's not authorized to write : u32 = *(U32*)ptr; if ptr is not
guaranteed to be properly aligned on 4-bytes boundaries.


[Bug tree-optimization/67196] New: Another false positive from -Wmaybe-uninitialized

2015-08-12 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67196

Bug ID: 67196
   Summary: Another false positive from -Wmaybe-uninitialized
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Created attachment 36176
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36176action=edit
Reproducer

The attached generates a false -Wmaybe-uninitialized warning:

$ gcc -O1 -Wall -c diagnostic.cc
diagnostic.cc: In function ‘void test(int)’:
diagnostic.cc:28:28: warning: ‘first_caption_idx’ may be used uninitialized in
this function [-Wmaybe-uninitialized]
 foo (first_caption_idx); /* get bogus warning here at -O1 and above */
^
Seen with gcc 4.8.3 and with trunk (specifically, r226697).

[Bug c++/55095] Wshift-overflow

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55095

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #20 from Marek Polacek mpolacek at gcc dot gnu.org ---
Hopefully fixed for good.


[Bug c++/55095] Wshift-overflow

2015-08-12 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55095

--- Comment #19 from Marek Polacek mpolacek at gcc dot gnu.org ---
Author: mpolacek
Date: Wed Aug 12 17:25:23 2015
New Revision: 226826

URL: https://gcc.gnu.org/viewcvs?rev=226826root=gccview=rev
Log:
PR c++/55095
* c-common.c (maybe_warn_shift_overflow): Properly handle
left-shifting 1 into the sign bit.

* c-c++-common/Wshift-overflow-6.c: New test.
* c-c++-common/Wshift-overflow-7.c: New test.
* g++.dg/cpp1y/left-shift-2.C: New test.

Added:
trunk/gcc/testsuite/c-c++-common/Wshift-overflow-6.c
trunk/gcc/testsuite/c-c++-common/Wshift-overflow-7.c
trunk/gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-common.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/49409] some possible new warnings for strange code

2015-08-12 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49409

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org,
   ||jsm28 at gcc dot gnu.org

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com ---
Marek, could you please add to the audit trail which warnings work in which
version of GCC? Thanks in advance!

About the remaining case, I would be tempted to close the bug or maybe we could
first ask other maintainers...


[Bug tree-optimization/65709] [5 Regression] Bad code for LZ4 decompression with -O3 on x86_64

2015-08-12 Thread noloader at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65709

--- Comment #19 from Jeffrey Walton noloader at gmail dot com ---
(In reply to Yann Collet from comment #18)
 This issue makes me wonder : how to efficiently access unaligned memory ?
 
 
 The case in point is ARM cpu.
 They don't support SSE/AVX, so they seem unaffected by this specific issue,
 but this issue force writing the source code in a certain way, to remain
 compatible with vectorizer assumtion.

Just one comment here (sorry for speaking out of turn)

Modern ARM has __ARM_FEATURE_UNALIGNED, which means the processor tolerates
unaligned access. However, I believe it runs afoul of the C/C++ standard and
GCC aliasing rules.

 Therefore, for portable code, it becomes an issue :
 how to write a code which is both portable and efficient on both targets ?

I've been relying on intrinsics to side step C/C++ requirements. In the absence
of intrinsics, I use inline assembler to avoid the C/C++ language rules.

Now, I could be totally wrong, but I don't feel I'm violating the C/C++
language rules until a write a C/C++ statement that performs the violation.
Hence the reason I use intrinsics or drop into assembler.


[Bug c++/67161] [5/6 Regression] ICE with a static_assert using our internal __not/__or/__and traits

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67161

--- Comment #5 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Wed Aug 12 18:05:49 2015
New Revision: 226831

URL: https://gcc.gnu.org/viewcvs?rev=226831root=gccview=rev
Log:
PR c++/67161
* error.c (dump_decl) [TEMPLATE_ID_EXPR]: Pass
TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS.

Added:
branches/gcc-5-branch/gcc/testsuite/g++.dg/cpp1y/var-templ44.C
Modified:
branches/gcc-5-branch/gcc/cp/ChangeLog
branches/gcc-5-branch/gcc/cp/error.c


[Bug c++/67104] [5/6 regression] Constant expression factory function initializes std::array with static storage duration strangely

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67104

--- Comment #8 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Wed Aug 12 18:08:45 2015
New Revision: 226833

URL: https://gcc.gnu.org/viewcvs?rev=226833root=gccview=rev
Log:
PR c++/67104
* constexpr.c (cxx_eval_array_reference): Fix typo.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c


[Bug c++/67161] [5/6 Regression] ICE with a static_assert using our internal __not/__or/__and traits

2015-08-12 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67161

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.3

--- Comment #6 from Jason Merrill jason at gcc dot gnu.org ---
Fixed.


  1   2   >