[Bug tree-optimization/70614] GCC gets stuck with -O

2016-04-10 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70614

Markus Trippelsdorf  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-04-10
 CC||trippels at gcc dot gnu.org
  Component|c   |tree-optimization
 Ever confirmed|0   |1
  Known to fail||4.9.3, 5.3.0, 6.0

--- Comment #1 from Markus Trippelsdorf  ---
Looping in tree-scalar-evolution:

#0  chrec_contains_symbols_defined_in_loop (chrec=0x76ba7948, loop_nb=1) at
../../gcc/gcc/tree-scalar-evolution.c:402
#1  0x00c02843 in no_evolution_in_loop_p (res=,
loop_num=1, chrec=0x76ba7948) at ../../gcc/gcc/tree-chrec.h:118
#2  compute_scalar_evolution_in_loop (wrto_loop=0x7728ad20,
def_loop=, ev=) at
../../gcc/gcc/tree-scalar-evolution.c:2002
#3  0x00bfcbb5 in analyze_scalar_evolution_1 (loop=0x7728ad20,
var=0x76b64bd0, res=0x0) at ../../gcc/gcc/tree-scalar-evolution.c:2048
#4  0x00bfd778 in analyze_scalar_evolution
(loop=loop@entry=0x7728ad20, var=0x76b64bd0) at
../../gcc/gcc/tree-scalar-evolution.c:2111
#5  0x00bfcd34 in interpret_condition_phi (condition_phi=, loop=0x7728ad20) at ../../gcc/gcc/tree-scalar-evolution.c:1687
#6  analyze_scalar_evolution_1 (loop=0x7728ad20, var=0x76ba3828,
res=) at ../../gcc/gcc/tree-scalar-evolution.c:2063
#7  0x00bfcbb5 in analyze_scalar_evolution_1 (loop=0x7728ad20,
var=0x76b64ca8, res=0x0) at ../../gcc/gcc/tree-scalar-evolution.c:2048
#8  0x00bfd778 in analyze_scalar_evolution
(loop=loop@entry=0x7728ad20, var=0x76b64ca8) at
../../gcc/gcc/tree-scalar-evolution.c:2111
#9  0x00bfcd34 in interpret_condition_phi (condition_phi=, loop=0x7728ad20) at ../../gcc/gcc/tree-scalar-evolution.c:1687
#10 analyze_scalar_evolution_1 (loop=0x7728ad20, var=0x76b9b678,
res=) at ../../gcc/gcc/tree-scalar-evolution.c:2063
...

[Bug c++/69066] SFINAE compilation error on lambda with trailing return type

2016-04-10 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69066

Paolo Carlini  changed:

   What|Removed |Added

   Severity|major   |normal

--- Comment #1 from Paolo Carlini  ---
This works in trunk (for gcc6.0). I'm adding the testcase and closing the bug.

[Bug c++/69066] SFINAE compilation error on lambda with trailing return type

2016-04-10 Thread paolo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69066

--- Comment #2 from paolo at gcc dot gnu.org  ---
Author: paolo
Date: Sun Apr 10 09:32:46 2016
New Revision: 234869

URL: https://gcc.gnu.org/viewcvs?rev=234869&root=gcc&view=rev
Log:
2016-04-10  Paolo Carlini  

PR c++/69066
* g++.dg/cpp1y/pr69066.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp1y/pr69066.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug c++/69066] SFINAE compilation error on lambda with trailing return type

2016-04-10 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69066

Paolo Carlini  changed:

   What|Removed |Added

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

--- Comment #3 from Paolo Carlini  ---
Done.

[Bug c++/64519] variadic template as the first argument

2016-04-10 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64519

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-04-10
 Ever confirmed|0   |1

[Bug fortran/58000] Accept OPEN( ... NAME=) with -std=legacy

2016-04-10 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58000

--- Comment #3 from Dominique d'Humieres  ---
Patch I am planning to submit

--- ../_clean/gcc/fortran/gfortran.texi 2016-01-04 19:51:09.0 +0100
+++ gcc/fortran/gfortran.texi   2016-04-10 14:00:11.0 +0200
@@ -2148,6 +2148,7 @@ code that uses them running with the GNU
 @c * Omitted arguments in procedure call::
 * Alternate complex function syntax::
 * Volatile COMMON blocks::
+* OPEN( ... NAME=)::
 @end menu


@@ -2355,6 +2356,19 @@ invalid standard Fortran syntax and is n



+@node OPEN( ... NAME=)
+@subsection @code{OPEN( ... NAME=)}
+@cindex @code{NAM}
+
+Some Fortran compilers, including @command{g77}, let the user declare
+@code{OPEN( ... NAME=)}. This is
+invalid standard Fortran syntax and is not supported by
+@command{gfortran}.  @code{OPEN( ... NAME=)} should be replaced
+with @code{OPEN( ... FILE=)}.
+
+
+
+@c -
 @c -
 @c Mixed-Language Programming
 @c -

[Bug fortran/68401] improve 'Allocation would exceed memory limit'

2016-04-10 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68401

Dominique d'Humieres  changed:

   What|Removed |Added

 Status|NEW |WAITING

--- Comment #9 from Dominique d'Humieres  ---
Any progress?

[Bug fortran/68600] Inlined MATMUL is too slow.

2016-04-10 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68600

--- Comment #12 from Thomas Koenig  ---
(In reply to Jerry DeLisle from comment #11)

> I was experimenting some more here a few days ago.  I really think that
> inlineing shold be disabled above some threshold.  On larger arrays, the
> runtime library outperforms inline and right now by default the runtime
> routines are never used unless you provide -fno-frontend-optimize which is
> counter intuitive for the larger arrays.

May I suggest reading the docs? ;-)

`-finline-matmul-limit=N'
 When front-end optimiztion is active, some calls to the `MATMUL'
 intrinsic function will be inlined.  This may result in code size
 increase if the size of the matrix cannot be determined at compile
 time, as code for both cases is generated.  Setting
 `-finline-matmul-limit=0' will disable inlining in all cases.
 Setting this option with a value of N will produce inline code for
 matrices with size up to N. If the matrices involved are not
 square, the size comparison is performed using the geometric mean
 of the dimensions of the argument and result matrices.

> If one compiles with -march=native -mavx -Ofast etc etc, the inline can do
> fairly well on the larger, however when we update the runtime routines to
> something like shown in comment #8 it will make even more sense to not do
> inline all the time. (Unless of course we further optimize the
> frontend-optimize to do better.)

We can give this option a reasonable default value.  The current
status is

 The default value for N is the value specified for
 `-fblas-matmul-limit' if this option is specified, or unlimitited
 otherwise.

[Bug testsuite/69807] FAIL: gcc.dg/graphite/scop-19.c scan-tree-dump-times graphite "number of SCoPs: 0" 1

2016-04-10 Thread danglin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69807

John David Anglin  changed:

   What|Removed |Added

 Target|x86_64-apple-darwin15   |x86_64-apple-darwin15
   ||hppa64-hp-hpux11.11
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-04-10
 CC||danglin at gcc dot gnu.org
   Host|x86_64-apple-darwin15   |x86_64-apple-darwin15
   ||hppa64-hp-hpux11.11
 Ever confirmed|0   |1
  Build|x86_64-apple-darwin15   |x86_64-apple-darwin15
   ||hppa64-hp-hpux11.11

[Bug target/70416] [SH]: error: 'asm' operand requires impossible reload when building ruby2.3

2016-04-10 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70416

--- Comment #30 from John Paul Adrian Glaubitz  ---
(In reply to Oleg Endo from comment #28)
> Fixed for GCC 6 and GCC 5.

Ok, great. Matthias just imported r234858 for gcc-5 yesterday. I'll report back
in case the issue persists.

Thanks for your work!

Adrian

[Bug c++/70617] New: internal compiler error: Segmentation fault

2016-04-10 Thread jan.sm...@alcatel-lucent.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70617

Bug ID: 70617
   Summary: internal compiler error: Segmentation fault
   Product: gcc
   Version: 5.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jan.sm...@alcatel-lucent.com
  Target Milestone: ---

gcc (GCC) 5.3.1 20160404 

Unfortunately I have been unable to get a reduced testcase to upload. 
Creduce keeps running in loops and minor modifications to the source make it go
away.
The code is proprietary and therefor I can not share it.

C++ , -O0


file.cpp:1335:1: internal compiler error: Segmentation fault
0xa3dd85 crash_signal
.././gcc-5.3.1/gcc/toplev.c:383
0x6cd7e3 lookup_page_table_entry
.././gcc-5.3.1/gcc/ggc-page.c:659
0x6cd7e3 ggc_set_mark(void const*)
.././gcc-5.3.1/gcc/ggc-page.c:1540
0x638e97 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:236
0x63a33c gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:594
0x63a246 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:567
0x63a18d gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:543
0x63a20e gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:563
0x63a1d3 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:548
0x63a33c gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:594
0x63a373 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:602
0x63a373 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:602
0x63a373 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:602
0x89db2e gt_ggc_mx_gimple_statement_base(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:2397
0x89b90d gt_ggc_mx_basic_block_def(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:2055
0x89d7fd gt_ggc_mx_gimple_statement_base(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:2428
0x89f2c1 gt_ggc_mx_cgraph_edge(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:907
0x89f2b3 gt_ggc_mx_cgraph_edge(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:906
0x89f2b3 gt_ggc_mx_cgraph_edge(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:906
0x89eded gt_ggc_mx_symtab_node(void*)
/toolchains/gcc53/gcc-builddir/gcc/gtype-desc.c:1712
Please submit a full bug report,

[Bug c++/69095] internal compiler error: in dependent_type_p, at cp/pt.c:19399

2016-04-10 Thread paolo.carlini at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69095

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com

--- Comment #3 from Paolo Carlini  ---
Mine.

[Bug c++/70617] internal compiler error: Segmentation fault

2016-04-10 Thread jan.sm...@alcatel-lucent.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70617

--- Comment #1 from Jan Smets  ---
with checking=all

../pchip_code/vfp_combined_c.cpp:85:1: internal compiler error: Segmentation
fault
0xd42735 crash_signal
.././gcc-5.3.1/gcc/toplev.c:383
0x732f37 c_tree_chain_next
.././gcc-5.3.1/gcc/c-family/c-common.h:1269
0x732f37 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:237
0x734651 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:567
0x734598 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:543
0x734619 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:563
0x7345de gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:548
0x733aa8 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:382
0x734673 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:569
0x734619 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:563
0x734192 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:437
0x75ede5 gt_ggc_mx_cp_binding_level(void*)
./gt-cp-name-lookup.h:64
0x733395 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:758
0x7341ae gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:439
0x734651 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:567
0x733aa8 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:382
0x734673 gt_ggc_mx_lang_tree_node(void*)
./gt-cp-tree.h:569
0xa34e55 ggc_mark_root_tab
.././gcc-5.3.1/gcc/ggc-common.c:81
0xa34e55 ggc_mark_roots()
.././gcc-5.3.1/gcc/ggc-common.c:98
0x8269ff ggc_collect()
.././gcc-5.3.1/gcc/ggc-page.c:2199
Please submit a full bug report,

[Bug c++/70617] internal compiler error: Segmentation fault

2016-04-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70617

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
Try to reduce with --param ggc-min-expand=0 --param ggc-min-heapsize=0
(although it will be slow).

[Bug c++/36159] C++ compiler should issue a warning with missing new operator

2016-04-10 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36159

--- Comment #18 from Martin Sebor  ---
The link works for me.  An older version of the paper is here:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3396.htm
If that doesn't work for you either try searching for the paper titled Dynamic
memory allocation for over-aligned data by Clark Nelson.

[Bug c++/70617] internal compiler error: Segmentation fault

2016-04-10 Thread jan.sm...@alcatel-lucent.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70617

--- Comment #3 from Jan Smets  ---
output is the same

[Bug c++/70617] internal compiler error: Segmentation fault

2016-04-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70617

--- Comment #4 from Jakub Jelinek  ---
Yeah, but with the always collect options presumably it might be easier to
reduce the testcase more, so creduce and/or delta might be successful on it.

[Bug c/70618] New: better error messages for missing/too many arguments

2016-04-10 Thread andi-gcc at firstfloor dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70618

Bug ID: 70618
   Summary: better error messages for missing/too many arguments
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: andi-gcc at firstfloor dot org
  Target Milestone: ---

When doing API refactorings it is reasonable common to have too many or not
enough arguments in function calls. The existing errors in gcc/g++ are not very
good for that, i get at least two consecutive ones and they are not very clear.

Since that is common it would be much better if the compiler could compute the
minimum edit distance to the real prototype (or the nearest for C++) and then
directl ysuggest what arguments are missing or which are too many.

void foo(int *xp, float *yp, double *zp)
{
}

int x;
float y;
double z;
short k;

void f2(void)
{
foo(&y, &z);/* forgot x */
foo(&x, &z);/* forgot y */
foo(&x, &z);/* forgot z */
foo(&x);/* forgot y and z */
foo(&z);/* forgot x and y*/

foo(&x, &y, &z, &x);/* x too many at end */
foo(&x, &x, &y, &z);/* x too man at start */
foo(&x, &y, &y, &z);/* y too much in the middle */
foo(&x, &y, &k, &z);/* different y in middle */
foo(&k, &x, &y, &z);/* different x at start */
foo(&x, &y, &z, &k);/* different x at end */
}
gcc/tsrc/tmissing.c: In function ‘f2’:
gcc/tsrc/tmissing.c:14:6: warning: passing argument 1 of ‘foo’ from
incompatible pointer type [-Wincompatible-pointer-types]
  foo(&y, &z);  /* forgot x */
  ^
gcc/tsrc/tmissing.c:3:6: note: expected ‘int *’ but argument is of type ‘float
*’
 void foo(int *xp, float *yp, double *zp)
  ^
gcc/tsrc/tmissing.c:14:10: warning: passing argument 2 of ‘foo’ from
incompatible pointer type [-Wincompatible-pointer-types]
  foo(&y, &z);  /* forgot x */
  ^
gcc/tsrc/tmissing.c:3:6: note: expected ‘float *’ but argument is of type
‘double *’
 void foo(int *xp, float *yp, double *zp)
  ^
gcc/tsrc/tmissing.c:14:2: error: too few arguments to function ‘foo’
  foo(&y, &z);  /* forgot x */
  ^
gcc/tsrc/tmissing.c:3:6: note: declared here
 void foo(int *xp, float *yp, double *zp)
  ^
gcc/tsrc/tmissing.c:15:10: warning: passing argument 2 of ‘foo’ from
incompatible pointer type [-Wincompatible-pointer-types]
  foo(&x, &z); /* forgot y */
  ^
gcc/tsrc/tmissing.c:3:6: note: expected ‘float *’ but argument is of type
‘double *’
 void foo(int *xp, float *yp, double *zp)
  ^
gcc/tsrc/tmissing.c:15:2: error: too few arguments to function ‘foo’
  foo(&x, &z); /* forgot y */

[Bug c/70619] New: Wrong warning with VLA, comma and sizeof

2016-04-10 Thread ch3root at openwall dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70619

Bug ID: 70619
   Summary: Wrong warning with VLA, comma and sizeof
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ch3root at openwall dot com
  Target Milestone: ---

Compiling the program:

int main()
{
  int a[1][(0, 1)];
  int i = 0;
  sizeof a[i++];
}

gives such warnings:

$ gcc -Wall example.c
example.c: In function ‘main’:
example.c:3:14: warning: left-hand operand of comma expression has no effect
[-Wunused-value]
   int a[1][(0, 1)];
  ^
example.c:5:10: warning: right-hand operand of comma expression has no effect
[-Wunused-value]
   sizeof a[i++];
   ~~~^~

The first one is fine but the second one is wrong and confusing.

[Bug c++/70610] [6 regression] error: invalid initialization of non-const reference of type

2016-04-10 Thread ppalka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70610

--- Comment #1 from Patrick Palka  ---
The problem is that during template processing we think the operand to the
unary + is an lvalue (because it's wrapped in a NON_DEPENDENT_EXPR node) and so
during overload resolution we select the non-const overload of operator+.  Then
during instantiation, since the operand is actually an rvalue we reject the
function call since it requires the operand to be an lvalue.

[Bug c++/70610] [6 regression] error: invalid initialization of non-const reference of type

2016-04-10 Thread ppalka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70610

--- Comment #2 from Patrick Palka  ---
This general issue about the unconditional lvalue-ness of NON_DEPENDENT_EXPR
existed before my patch for PR c++/21802 though.  For example, ere's a test
case that should compile cleanly but doesn't since at least g++ 4.4 (-std=c++98
is required) for basically the same reason:

struct A { };

void operator+ (const A &, A &);
void operator+ (A &, const A &);
void operator+ (const A &, const A &);

template 
void
foo ()
{
  A () + A ();
}

unary_plus.C: In function ‘void foo()’:
unary_plus.C:11:8: error: ambiguous overload for ‘operator+’ (operand types are
‘A’ and ‘A’)
   A () + A ();
   ~^~
unary_plus.C:3:6: note: candidate: void operator+(const A&, A&)
 void operator+ (const A &, A &);
  ^~~~
unary_plus.C:4:6: note: candidate: void operator+(A&, const A&)
 void operator+ (A &, const A &);
  ^~~~
unary_plus.C:5:6: note: candidate: void operator+(const A&, const A&)
 void operator+ (const A &, const A &);
  ^~~~

[Bug c++/70610] [6 regression] error: invalid initialization of non-const reference of type

2016-04-10 Thread ppalka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70610

--- Comment #3 from Patrick Palka  ---
Not limited to operator overloads either:

void bar (const int &, int &);
void bar (int &, const int &);
void bar (const int &, const int &);

int a, b;

template 
void
foo ()
{
  bar (a + 1, b + 2);
}

[Bug c++/70620] New: possible wrong code at -Os on x86_64-linux-gnu for C++ code with multiple inheritance and casting

2016-04-10 Thread su at cs dot ucdavis.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70620

Bug ID: 70620
   Summary: possible wrong code at -Os on x86_64-linux-gnu for C++
code with multiple inheritance and casting
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu
  Target Milestone: ---

The current gcc trunk possibly miscompiles the following code on
x86_64-linux-gnu at -Os in both 32-bit and 64-bit modes.

It also affects 5.x at -Os and above and seems to be a regression from 4.9.x. 


$ g++-trunk -v
Using built-in specs.
COLLECT_GCC=g++-trunk
COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto
--prefix=/usr/local/gcc-trunk --disable-bootstrap
Thread model: posix
gcc version 6.0.0 20160410 (experimental) [trunk revision 234869] (GCC) 
$ 
$ g++-trunk -O1 small.cpp; ./a.out; echo $?
0
$ g++-4.9 -Os small.cpp; ./a.out; echo $?
0
$ 
$ g++-trunk -Os small.cpp
$ ./a.out
Segmentation fault (core dumped)
$ 





int a; 

class A 
{ 
public: 
  virtual ~A () {} 
};

class B1 : public A {};
class B2 : public A {};

class C 
{ 
public: 
  virtual ~C () {} 
};

class D : public C, public B2 
{ 
public: 
  virtual ~D () {} 
};

class E : public B1, virtual public D
{ 
public: 
  virtual ~E () {  a = 0; } 
};

int
main ()
{
  a = 1;
  delete (D *) (B1 *) new E;  // Does this lead to undefined behavior?  
  if (a) 
return 1; 
  return 0; 
}

[Bug c++/70621] New: ICE on invalid code at -O1 and above on x86_64-linux-gnu in record_reference, at cgraphbuild.c:64

2016-04-10 Thread su at cs dot ucdavis.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70621

Bug ID: 70621
   Summary: ICE on invalid code at -O1 and above on
x86_64-linux-gnu in record_reference, at
cgraphbuild.c:64
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: su at cs dot ucdavis.edu
  Target Milestone: ---

The following code causes an ICE when compiled with the current GCC trunk at
-O1 and above on x86_64-linux-gnu in both 32-bit and 64-bit modes.  

This is a regression from 5.3.x. 


$ g++-trunk -v
Using built-in specs.
COLLECT_GCC=g++-trunk
COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto
--prefix=/usr/local/gcc-trunk --disable-bootstrap
Thread model: posix
gcc version 6.0.0 20160410 (experimental) [trunk revision 234869] (GCC) 
$ 
$ g++-trunk -O0 -c small.cpp
small.cpp:30:12: error: conflicting declaration ‘const B D::e’
 const B D::e = { 0, (fp) &E::foo };
^
small.cpp:20:12: note: previous declaration as ‘B D::e’
   static B e;
^
small.cpp:30:12: error: declaration of ‘B D::e’ outside of class is not
definition [-fpermissive]
 const B D::e = { 0, (fp) &E::foo };
^
$ 
$ g++-5.3 -O1 -c small.cpp
small.cpp:30:12: error: conflicting declaration ‘const B D::e’
 const B D::e = { 0, (fp) &E::foo }; 
^
small.cpp:20:12: note: previous declaration as ‘B D::e’
   static B e;
^
small.cpp:30:12: error: declaration of ‘B D::e’ outside of class is not
definition [-fpermissive]
 const B D::e = { 0, (fp) &E::foo }; 
^
$ 
$ g++-trunk -O1 -c small.cpp
small.cpp:30:12: error: conflicting declaration ‘const B D::e’
 const B D::e = { 0, (fp) &E::foo };
^
small.cpp:20:12: note: previous declaration as ‘B D::e’
   static B e;
^
small.cpp:30:12: error: declaration of ‘B D::e’ outside of class is not
definition [-fpermissive]
 const B D::e = { 0, (fp) &E::foo };
^
cc1plus: internal compiler error: in record_reference, at cgraphbuild.c:64
0x95ef53 record_reference
../../gcc-source-trunk/gcc/cgraphbuild.c:64
0x100fec4 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set >*))
../../gcc-source-trunk/gcc/tree.c:11531
0x1010474 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set >*))
../../gcc-source-trunk/gcc/tree.c:11848
0x1010474 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set >*))
../../gcc-source-trunk/gcc/tree.c:11848
0x96008a record_references_in_initializer(tree_node*, bool)
../../gcc-source-trunk/gcc/cgraphbuild.c:404
0x1051957 varpool_node::analyze()
../../gcc-source-trunk/gcc/varpool.c:526
0x966359 analyze_functions
../../gcc-source-trunk/gcc/cgraphunit.c:1133
0x966f98 symbol_table::finalize_compilation_unit()
../../gcc-source-trunk/gcc/cgraphunit.c:2542
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.
$ 


--


class A; 

typedef void (A::*fp) (void);

struct B
{
  int n; 
  fp f;
};

struct C
{
  const C *c;
  const B b; 
};

class D 
{
public: 
  static B e;
  static C m;
};

class E : public D 
{
public: 
  void foo (); 
};

// OK: B D::e = { 0, (fp) &E::foo }; 
const B D::e = { 0, (fp) &E::foo }; 

C D::m = { &D::m, E::e };

[Bug fortran/58000] Accept OPEN( ... NAME=) with -std=legacy

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58000

Jerry DeLisle  changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot gnu.org

--- Comment #4 from Jerry DeLisle  ---
(In reply to Dominique d'Humieres from comment #3)
> Patch I am planning to submit
> 
> --- ../_clean/gcc/fortran/gfortran.texi   2016-01-04 19:51:09.0 
> +0100
> +++ gcc/fortran/gfortran.texi 2016-04-10 14:00:11.0 +0200
> @@ -2148,6 +2148,7 @@ code that uses them running with the GNU
>  @c * Omitted arguments in procedure call::
>  * Alternate complex function syntax::
>  * Volatile COMMON blocks::
> +* OPEN( ... NAME=)::
>  @end menu
>  
>  
> @@ -2355,6 +2356,19 @@ invalid standard Fortran syntax and is n
>  
>  
>  
> +@node OPEN( ... NAME=)
> +@subsection @code{OPEN( ... NAME=)}
> +@cindex @code{NAM}
> +
> +Some Fortran compilers, including @command{g77}, let the user declare
> +@code{OPEN( ... NAME=)}. This is
> +invalid standard Fortran syntax and is not supported by
> +@command{gfortran}.  @code{OPEN( ... NAME=)} should be replaced
> +with @code{OPEN( ... FILE=)}.
> +
> +
> +
> +@c -
>  @c -
>  @c Mixed-Language Programming
>  @c -

Approved! Please proceed.

[Bug fortran/51820] [doc] underscoring documentation incorrect

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51820

Jerry DeLisle  changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot gnu.org

--- Comment #3 from Jerry DeLisle  ---
(In reply to Dominique d'Humieres from comment #2)
> Is the following patch a step in the right direction?

---snip---

This all looks good to me except the following:

>  @item -fsecond-underscore
>  @opindex @code{fsecond-underscore}
> @@ -1355,8 +1365,7 @@ By default, GNU Fortran appends an under
>  names.  If this option is used GNU Fortran appends two
>  underscores to names with underscores and one underscore to external names
>  with no underscores.  GNU Fortran also appends two underscores to
> -internal names with underscores to avoid naming collisions with external
> -names.
> +internal names with underscores.
>  
>  This option has no effect if @option{-fno-underscoring} is
>  in effect.  It is implied by the @option{-ff2c} option.

It is confusing to me about names with underscores. For example, on internal
names, does foo_ become foo__ or foo___, appending one underscore to the
existing for a total of two or appending two more to the existing for a total
of three underscores.  I think the wording needs to be a little more concise.

[Bug fortran/60751] Extra comma in WRITE statement not diagnosed

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60751

--- Comment #18 from Jerry DeLisle  ---
(In reply to Dominique d'Humieres from comment #17)
> Note that the extra comma is used in the following tests:
> 
> gfortran.dg/array_constructor_49.f90
> gfortran.dg/integer_exponentiation_6.F90
> gfortran.dg/graphite/pr38083.f90
> 
> Any reason to keep it?

No, and I am planning to fix the diagnostic on this.

[Bug fortran/67039] Documentation of pseudorandom number intrinsics is incorrect

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67039

Jerry DeLisle  changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot gnu.org

--- Comment #7 from Jerry DeLisle  ---
(In reply to Dominique d'Humieres from comment #6)
> I am planning to submit the following patch

---snip---

I think this word should be singular. 
> +@code{RANDOM_SEED} to initialize the pseudo-random numbers <= no 's'
> +generator and @code{RANDOM_NUMBER} to generate pseudo-random numbers.
> +These subroutines should be used in new codes.

Even if internally there may be multiple 'generators' involved, from the user
perspective it is just one generator.

[Bug c++/70622] New: auto specifier don't deduce value type and its pointer type within single declaration.

2016-04-10 Thread flast at flast dot jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70622

Bug ID: 70622
   Summary: auto specifier don't deduce value type and its pointer
type within single declaration.
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: flast at flast dot jp
  Target Milestone: ---

GCC 6 doesn't compile following code, but others (e.g. GCC 5, clang) do.

```
int main()
{
auto x = 0, *y = &x;
}
```

GCC 6 20160410: http://melpon.org/wandbox/permlink/kBVR4JiKMCMnfWe6
GCC 5.3.0: http://melpon.org/wandbox/permlink/61qqamq6MeInqgXF
clang 3.8.0: http://melpon.org/wandbox/permlink/qdw2lwZE17Rf4Ioz

[dcl.spec.auto]/4 indicates that code should be well-formed.

[Bug fortran/52884] double precision constants promoted to 16 byte by -fdefault-real-8

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52884

Jerry DeLisle  changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot gnu.org

--- Comment #3 from Jerry DeLisle  ---
May I suggest the following wording:

-fdefault-real-8
Set the default real type to an 8 byte wide type. This option
also affects the kind of non-double real constants like 1.0.
This option promotes the default width of DOUBLE PRECISION
and double real constants like 1.d0 to 16 bytes if possible.
If -fdefault-double-8 is given along with -fdefault-real-8,
DOUBLE PRECISION and double real constants are not promoted.
Note, -fdefault-real-8, does not promote variables with explicit
kind declarations.

-fdefault-double-8
Set the DOUBLE PRECISION type to an 8 byte wide type. Do nothing
if this is already the default. This option prevents -fdefault-real-8
from promoting DOUBLE PRECISION and double real constants like 1.d0
to 16 bytes.

[Bug sanitizer/65479] sanitizer stack trace missing frames past #0 on powerpc64

2016-04-10 Thread wschmidt at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65479

--- Comment #14 from Bill Schmidt  ---
I wonder if this is just support that hasn't been updated in the GCC copy of
libsanitizer.  I recall fixing this bug (or one very similar to it) on the
Clang side in 2015.  There is some Power-specific logic in there for doing the
stack unwinding.  I will try to dig that information up and compare the two.

[Bug tree-optimization/70623] New: [6 Regression] ICE in compute_antic at -O2

2016-04-10 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70623

Bug ID: 70623
   Summary: [6 Regression] ICE in compute_antic at -O2
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: asolokha at gmx dot com
  Target Milestone: ---

gcc-6.0.0-alpha20160403 and gcc-6.0.0-alpha20160410 snippets ICE when compiling
the following reduced snippet at -O2:

int nm;
int *av;

void
h9(void)
{
  for (;;) {
int wk, rc;
int **ptr_10 = &av;
if (*av != 0) {
}
u4:
wk = 0;
for (rc = 0; rc < 3; ++rc) {
  int bc = (rc ? rc : nm);
  int ud = bc ? (*av ? 0 : rc) : 1;
  if (ud != 0) {
if (*av != 0)
  goto u4;
for (;;) {
}
  }
}
while (wk < 3) {
  av = **ptr_10;
  ++wk;
}
  }
}

% gcc-6.0.0-alpha20160410 -c -O2 oqqpkhyr.c   
oqqpkhyr.c: In function 'h9':
oqqpkhyr.c:25:10: warning: assignment makes pointer from integer without a cast
[-Wint-conversion]
   av = **ptr_10;
  ^
oqqpkhyr.c:5:1: internal compiler error: in compute_antic, at
tree-ssa-pre.c:2403
 h9(void)
 ^~

gcc-6.0.0-alpha20160110 doesn't ICE for me.

[Bug fortran/68600] Inlined MATMUL is too slow.

2016-04-10 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68600

--- Comment #13 from Jerry DeLisle  ---
(In reply to Thomas Koenig from comment #12)
> (In reply to Jerry DeLisle from comment #11)

---snip--
> 
> May I suggest reading the docs? ;-)
> 
--- snip ---

>  The default value for N is the value specified for
>  `-fblas-matmul-limit' if this option is specified, or unlimitited
>  otherwise.

Oh gosh!, Sorry about that Thomas. I just did not see it.  And I was even
looking for it because I thought it was there! This is excellent because I am
working on a modification to the run-time libraries. This will give us
something like:

 
 Matmul  
 fixed   
 Size  Loops explicit   NewMatmul
 
   16  2000  1.496  1.719
   32  2000  2.427  1.784
   64  2000  1.343  1.967
  128  2000  1.657  2.113
  256   477  2.660  2.185
  51259  2.027  2.195
 1024 7  1.530  2.208
 2048 1  1.516  2.210

On this particular machine, the inlining at high levels of optimization has
some sweet spots at size of 32 x 32 for example, so allowing the tuning is
essential depending on users application.