[Bug tree-optimization/58011] GCC segfaults at -O1

2014-02-28 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58011

--- Comment #3 from Oleg Endo olegendo at gcc dot gnu.org ---
Is this done?  If so, can we close this PR?


[Bug regression/60363] [4.9 Regression]: logical_op_short_circuit, gcc.dg/tree-ssa/ssa-dom-thread-4.c scan-tree-dump-times dom1 Threaded 4

2014-02-28 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60363

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0


[Bug c/60360] __attribute((aligned(...))) changes sizeof(...) of struct

2014-02-28 Thread dabler at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60360

--- Comment #6 from DaBler dabler at gmail dot com ---
When I call sizeof(...) on the int type (instead of a variable), it is the
same:

typedef int TypeInt __attribute((aligned(64)));

printf(%zu %zu\n, sizeof(TypeInt), alignof(TypeInt)); // Output: 4 64

Moreover, It is not possible to use this type for a construction of arrays. In
contrast, When I call sizeof(...) on the struct type:

typedef struct {
int i;
} __attribute((aligned(64))) TypeStruct;

printf(%zu %zu\n, sizeof(TypeStruct), alignof(TypeStruct)); // Output: 64 64

Thus, I still see an inconsistency.


[Bug lto/55113] ICE with LTO and -fshort-double

2014-02-28 Thread pmatos at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55113

--- Comment #16 from pmatos at gcc dot gnu.org ---
(In reply to Richard Biener from comment #14)
 
 Well.  At least to my theory (didn't try).
 

Theory and practice match. It seems to fix the bug and work fine. I will do
some further testing and post a patch. 

Thanks.


[Bug c++/60364] New: [[noreturn]] specified for second declaration but not first doesn't result in a diagnostic

2014-02-28 Thread filip.roseen at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60364

Bug ID: 60364
   Summary: [[noreturn]] specified for second declaration but not
first doesn't result in a diagnostic
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: filip.roseen at gmail dot com

Created attachment 32232
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32232action=edit
testcase.cpp

void func ();

void func [[noreturn]] ();

int main () { }

--

The above should result in an error since [dcl.attr.noreturn]p1 explicitly
says;

   The first declaration of a function shall specify the noreturn
   attribute if any declaration of that function specifies the noreturn
   attribute.

Both clang and icc correctly issues a diagnostic when trying to compile the
provided snippet.


[Bug c++/60365] New: multiple noreturn attribute specifiers in single declaration doesn't result in a diagnostic

2014-02-28 Thread filip.roseen at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60365

Bug ID: 60365
   Summary: multiple noreturn attribute specifiers in single
declaration doesn't result in a diagnostic
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: filip.roseen at gmail dot com

Created attachment 32233
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32233action=edit
testcase.cpp

void func [[noreturn, noreturn]] ();

int main () { }

--

noreturn shall only be specified once for each declaration it is a part of, as
stated in [dcl.attr.noreturn]p1

   The attribute-token noreturn specifies that a function does not
   return. It shall appear at most once in each attribute-list and no
   attribute-argument-clause shall be present.

Both clang and icc correctly issues a diagnostic when trying to compile the
provided snippet.


[Bug ipa/60306] [4.9 Regression] Incorrect devirtualization pure virtual method called

2014-02-28 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60306

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Jan Hubicka from comment #4)
 OK, I am re-considering my decision to not assign this to Martin.
 The problem is the following.  We have call:
 
   struct Box x;
 ...
   x = edges_connecting_to_node (1); [return slot optimization]
 ...
   _19 = OBJ_TYPE_REF(_18;(const struct Object)x.D.8084-0) (x.D.8084);
 
 The dynamic type of x at that point is Box. We however get it wrong as
 Object. This is what come from detect_type_change.
 
 The reason is that detect_type_change actually ignores
   x = edges_connecting_to_node (1); [return slot optimization]
 which it should not, since it gives it an useful information that x is fully
 constructed when the return value happens.
 
 But it considers other statement:
   MEM[(struct new_allocator *)x + 8B] ={v} {CLOBBER};
   MEM[(struct allocator *)x + 8B] ={v} {CLOBBER};
   MEM[(struct _Vector_impl *)x + 8B] ={v} {CLOBBER};
   MEM[(struct _Vector_base *)x + 8B] ={v} {CLOBBER};
   MEM[(struct vector *)x + 8B] ={v} {CLOBBER};
   MEM[(struct Object *)x]._vptr.Object = MEM[(void *)_ZTV6Object + 16B];
   MEM[(struct Object *)x] ={v} {CLOBBER};
   x ={v} {CLOBBER};
 
 which is end of the loop the whole thing is contained in.  The dead store to
 ._vptr.Object come from inlined destructor and it makes detect_type_change
 to believe that the dynamic type is Object.  That is true if you manage to
 ignore the initialization.
 
 Now I wonder how to fix this; simple fix is to make detect_type_change to
 notice the call and constructors, that is useful by itself.
 But I believe there is deeper problem, we need to prove that on _all_ paths
 to the statement the dynamic type was changed in known way, not that on all
 paths where we can understand the dynamic change the type changed same way.

It seems that the current code doesn't properly perform that merging.  The
walker will happily walks all incoming edges of PHIs.

 Can alias oracle walker tell us when it runs into default def?

Well, it simply stops walking, so no, it doesn't return whether the
callback returned always false (I didn't need it so I didn't implement it ...).


[Bug ipa/60306] [4.9 Regression] Incorrect devirtualization pure virtual method called

2014-02-28 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60306

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Of course the bug seems to be

static bool
stmt_may_be_vtbl_ptr_store (gimple stmt)
{
  if (is_gimple_call (stmt))
return false;
^^^

this.  I remember being very curious when seeing this ;)

Please at this point only fix that bug, not introduce more fancy stuff (we're
long past a stage where that is appropriate).


[Bug debug/57232] wcstol.c:213:1: internal compiler error

2014-02-28 Thread aoliva at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57232

--- Comment #20 from Alexandre Oliva aoliva at gcc dot gnu.org ---
Author: aoliva
Date: Fri Feb 28 12:45:36 2014
New Revision: 208219

URL: http://gcc.gnu.org/viewcvs?rev=208219root=gccview=rev
Log:
PR debug/57232
* var-tracking.c (vt_initialize): Apply the same condition to
preserve the CFA base value.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/var-tracking.c


[Bug debug/59992] [4.9 Regression] Compilation of insn-recog.c too slow due to var-tracking

2014-02-28 Thread aoliva at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59992

--- Comment #11 from Alexandre Oliva aoliva at gcc dot gnu.org ---
Author: aoliva
Date: Fri Feb 28 12:57:06 2014
New Revision: 208220

URL: http://gcc.gnu.org/viewcvs?rev=208220root=gccview=rev
Log:
PR debug/59992
* cselib.c (remove_useless_values): Skip to avoid quadratic
behavior if the condition moved from...
(cselib_process_insn): ... here holds.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cselib.c


[Bug debug/59992] [4.9 Regression] Compilation of insn-recog.c too slow due to var-tracking

2014-02-28 Thread aoliva at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59992

Alexandre Oliva aoliva at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #13 from Alexandre Oliva aoliva at gcc dot gnu.org ---
Fixed


[Bug debug/57232] wcstol.c:213:1: internal compiler error

2014-02-28 Thread aoliva at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57232

Alexandre Oliva aoliva at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #21 from Alexandre Oliva aoliva at gcc dot gnu.org ---
Fixed


[Bug tree-optimization/60280] [4.9 Regression] gcc.target/arm/ivopts.c and gcc.target/arm/ivopts-2.c failed caused by preserving loop structure.

2014-02-28 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60280

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Fri Feb 28 13:14:23 2014
New Revision: 208222

URL: http://gcc.gnu.org/viewcvs?rev=208222root=gccview=rev
Log:
2014-02-28  Richard Biener  rguent...@suse.de

PR target/60280
* tree-cfgcleanup.c (tree_forwarder_block_p): Restrict
previous fix and only allow to remove trivial pre-headers
and latches.  Also honor LOOPS_MAY_HAVE_MULTIPLE_LATCHES.
(remove_forwarder_block): Properly update the latch of
a loop.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-cfgcleanup.c


[Bug debug/59992] [4.9 Regression] Compilation of insn-recog.c too slow due to var-tracking

2014-02-28 Thread aoliva at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59992

--- Comment #12 from Alexandre Oliva aoliva at gcc dot gnu.org ---
Author: aoliva
Date: Fri Feb 28 12:57:40 2014
New Revision: 208221

URL: http://gcc.gnu.org/viewcvs?rev=208221root=gccview=rev
Log:
PR debug/59992
* cselib.c (cselib_hasher::equal): Special-case VALUE lookup.
(cselib_preserved_hash_table): New.
(preserve_constants_and_equivs): Move preserved vals to it.
(cselib_find_slot): Look it up first.
(cselib_init): Initialize it.
(cselib_finish): Release it.
(dump_cselib_table): Dump it.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cselib.c


[Bug tree-optimization/53787] Possible IPA-SRA / IPA-CP improvement

2014-02-28 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53787

--- Comment #18 from Igor Zamyatin izamyatin at gmail dot com ---
Martin,

I checked the patch and can confirm it gives necessary speedup on the test
(UMTmk_1.1)
Thanks!


[Bug c++/60366] New: ICE with self-invoking lambdas

2014-02-28 Thread jengelh at inai dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60366

Bug ID: 60366
   Summary: ICE with self-invoking lambdas
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jengelh at inai dot de

This not-so-serious code:

$ cat w.cpp 
int main(int argc, const char **argv)
{
auto f = [](const struct __lambda0 self) { self(self); };
f(f);
return 0;
}

causes an ICE instead of just exiting(1):

$ g++ w.cpp -std=gnu++11 -o w -ggdb3 -Wall
w.cpp: In lambda function:
w.cpp:3:55: error: use of ‘main(int, const char**)::__lambda0’ before deduction
of ‘auto’
  auto f = [](const struct __lambda0 self) { self(self); };
   ^
w.cpp:3:55: error: invalid use of ‘auto’
g++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugs.opensuse.org/ for instructions.

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8
--enable-ssp --disable-libssp --disable-plugin
--with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
--disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib
--enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch
--enable-version-specific-runtime-libs --enable-linker-build-id
--enable-linux-futex --program-suffix=-4.8 --without-system-libunwind
--with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux
--host=x86_64-suse-linux
Thread model: posix
gcc version 4.8.2 20140225 [gcc-4_8-branch revision 208119] (SUSE Linux) 

$ g++-4.9 w.cpp -std=gnu++11 -o w -ggdb3 -Wall
g++-4.9: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugs.opensuse.org/ for instructions.

$ g++-4.9 -v
Using built-in specs.
COLLECT_GCC=g++-4.9
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.9/lto-wrapper
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada,go --enable-checking=yes
--with-gxx-include-dir=/usr/include/c++/4.9 --enable-ssp --disable-libssp
--disable-libvtv --disable-plugin --with-bugurl=http://bugs.opensuse.org/
--with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib64
--with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new
--disable-libstdcxx-pch --enable-version-specific-runtime-libs
--enable-linker-build-id --enable-linux-futex --program-suffix=-4.9
--without-system-libunwind --enable-multilib --with-arch-32=i586
--with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
gcc version 4.9.0 20140226 (experimental) [trunk revision 208172] (SUSE Linux)

[Bug fortran/60359] [OOP] symbol `__io_MOD___copy_character_1' is already defined

2014-02-28 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-02-28
 CC||janus at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |janus at gcc dot gnu.org
Summary|Assembler messages symbol   |[OOP] symbol
   |`__io_MOD___copy_character_ |`__io_MOD___copy_character_
   |1' is already defined   |1' is already defined
 Ever confirmed|0   |1

--- Comment #4 from janus at gcc dot gnu.org ---
This is due to a small bug in find_intrinsic_vtab. Patch:


Index: gcc/fortran/class.c
===
--- gcc/fortran/class.c(revision 208224)
+++ gcc/fortran/class.c(working copy)
@@ -2532,17 +2532,22 @@ find_intrinsic_vtab (gfc_typespec *ts)
   c-tb = XCNEW (gfc_typebound_proc);
   c-tb-ppc = 1;

-  /* Check to see if copy function already exists.  Note
- that this is only used for characters of different
- lengths.  */
-  contained = ns-contained;
-  for (; contained; contained = contained-sibling)
-if (contained-proc_name
- strcmp (name, contained-proc_name-name) == 0)
-  {
-copy = contained-proc_name;
-goto got_char_copy;
-  }
+  if (ts-type != BT_CHARACTER)
+sprintf (name, __copy_%s, tname);
+  else
+{
+  /* __copy is always the same for characters.
+ Check to see if copy function already exists.  */
+  sprintf (name, __copy_character_%d, ts-kind);
+  contained = ns-contained;
+  for (; contained; contained = contained-sibling)
+if (contained-proc_name
+ strcmp (name, contained-proc_name-name) == 0)
+  {
+copy = contained-proc_name;
+goto got_char_copy;
+  }
+}

   /* Set up namespace.  */
   sub_ns = gfc_get_namespace (ns, 0);
@@ -2550,11 +2555,6 @@ find_intrinsic_vtab (gfc_typespec *ts)
   ns-contained = sub_ns;
   sub_ns-resolved = 1;
   /* Set up procedure symbol.  */
-  if (ts-type != BT_CHARACTER)
-sprintf (name, __copy_%s, tname);
-  else
-/* __copy is always the same for characters.  */
-sprintf (name, __copy_character_%d, ts-kind);
   gfc_get_symbol (name, sub_ns, copy);
   sub_ns-proc_name = copy;
   copy-attr.flavor = FL_PROCEDURE;


[Bug middle-end/59176] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed

2014-02-28 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59176

Martin Jambor jamborm at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jamborm at gcc dot gnu.org
   Assignee|mjambor at suse dot cz |unassigned at gcc dot 
gnu.org

--- Comment #9 from Martin Jambor jamborm at gcc dot gnu.org ---
(In reply to Jan Hubicka from comment #8)
 
 I believe it is bug somewhere in logic skipping thunks.  Martin, this is
 probably yours.

I on the other hand think this is either a verification false positive
or some sort of cgraph node removal bug.

What happens in IPA-CP is this: m_fn3/8 originally calls B::~B()/5 which
is an alias (not a thunk as far as I can see but I do not see how that
matters even if I was wrong) to B::~B()/4.  IPA-CP does not gather
constants for aliases or thunks separately (though it is careful not to
propagate first parameters through thunks), so IPA-CP is only interested
in the /4 real thing.  Furthermore, it decides to clone B::~B()/4 and
redirect the call from m_fn3/8 to the new clone.

In fact, the modified edge passes verify_edge_corresponds_to_fndecl
just fine several times because of

!clone_of_p (cgraph_function_or_thunk_node (node, NULL), e-callee))

part of the checking correctly detects this case.

But then, after being successfully verified a number of times, the above
fails, because the cgraph_function_or_thunk_node (node, NULL) part stops
returning the /4 node but returns the argument itself which is /5.  When
I now dump the node I cannot see it being an alias and that is because
symtab_remove_unreachable_nodes had zapped it.

I think that either symtab_remove_unreachable_nodes should remove nodes
it cripples from the decl-symtab hash (why does it not call
cgraph_remove_node?)  or the verifier needs to understand that these
nodes are no good and ignore them.


[Bug c++/60314] [C++1y] ICE with decltype(auto) when generating debug information

2014-02-28 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60314

--- Comment #4 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Fri Feb 28 16:51:21 2014
New Revision: 208225

URL: http://gcc.gnu.org/viewcvs?rev=208225root=gccview=rev
Log:
2014-02-25  Paolo Carlini  paolo.carl...@oracle.com

PR c++/60314
* dwarf2out.c (is_cxx_auto): Handle decltype(auto).

/testsuite
2014-02-25  Paolo Carlini  paolo.carl...@oracle.com

PR c++/60314
* g++.dg/cpp1y/auto-fn24.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/dwarf2out.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/60314] [C++1y] ICE with decltype(auto) when generating debug information

2014-02-28 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60314

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Assignee|paolo.carlini at oracle dot com|unassigned at gcc dot 
gnu.org

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com ---
Sorry, this is the actual CL entry:

2014-02-28  Paolo Carlini  paolo.carl...@oracle.com

PR c++/60314
* dwarf2out.c (decltype_auto_die): New static.
(gen_subprogram_die): Handle 'decltype(auto)' like 'auto'.
(gen_type_die_with_usage): Handle 'decltype(auto)'.
(is_cxx_auto): Likewise.

Fixed for 4.9.0 anyway.


[Bug lto/60150] [4.9 Regression] ICE in function_and_variable_visibility, at ipa.c:1000

2014-02-28 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60150

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org ---
OK, this is ordering issue in the localization process: we localize comdat
groups one by one, but we also copy visibilities from functions to thunks (that
is somewhat useless fixup at LTO time).
This patch makes the comdat group localization to happen all at once.

Index: ipa.c
===
--- ipa.c   (revision 207934)
+++ ipa.c   (working copy)
@@ -970,15 +970,32 @@ function_and_variable_visibility (bool w
  gcc_assert (whole_program || in_lto_p
  || !TREE_PUBLIC (node-decl));
  node-unique_name = ((node-resolution == LDPR_PREVAILING_DEF_IRONLY
- || node-resolution ==
LDPR_PREVAILING_DEF_IRONLY_EXP)
-  TREE_PUBLIC (node-decl));
+   || node-unqiue_name
+   || node-resolution ==
LDPR_PREVAILING_DEF_IRONLY_EXP)
+TREE_PUBLIC (node-decl));
  node-resolution = LDPR_PREVAILING_DEF_IRONLY;
  if (node-same_comdat_group  TREE_PUBLIC (node-decl))
-   /* cgraph_externally_visible_p has already checked all other nodes
-  in the group and they will all be made local.  We need to
-  dissolve the group at once so that the predicate does not
-  segfault though. */
-   symtab_dissolve_same_comdat_group_list (node);
+   {
+ symtab_node *next = node;
+
+ /* Set all members of comdat group local.  */
+ if (node-same_comdat_group)
+   for (next = node-same_comdat_group;
+next != node;
+next = next-same_comdat_group)
+   {
+ symtab_make_decl_local (next-decl);
+ next-unique_name = ((next-resolution ==
LDPR_PREVAILING_DEF_IRONLY
+   || next-unqiue_name
+   || next-resolution ==
LDPR_PREVAILING_DEF_IRONLY_EXP)
+TREE_PUBLIC (next-decl));
+   }
+ /* cgraph_externally_visible_p has already checked all other
nodes
+in the group and they will all be made local.  We need to
+dissolve the group at once so that the predicate does not
+segfault though. */
+ symtab_dissolve_same_comdat_group_list (node);
+   }
  symtab_make_decl_local (node-decl);
}


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-02-28 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #18 from Jan Hubicka hubicka at gcc dot gnu.org ---
It is a speculative devirtualization; we see no other option than B, so we try
to inline it. Speculative devirtualization already has logic in it so it won't
pick method without definition (it also will pick if the method is const/pure,
I can change that)

Here we have extern inline function with a definition so speculative
devirtualization is happy and inline it.  I don't think we should be checking
at devirtualization time if the inlined function has refernce to something
external or not.
So I would say that C++ FE should not produce extern inlines that can not be
inlined after all or better mark them UNINLINABLE so they can be used for side
effects analysis. Or perhaps we can extend tree_inlinable_function_p this way?

Honza


[Bug c++/60367] New: Default argument object is not getting constructed

2014-02-28 Thread rob.desbois at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60367

Bug ID: 60367
   Summary: Default argument object is not getting constructed
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rob.desbois at gmail dot com

Created attachment 32234
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32234action=edit
Preprocessed, minimal testcase triggering unexpected behaviour

The attached minimal testcase has the following function with
default-constructed default argument:
void do_something( foo f = {} )
{
std::cout  default argument is at   f  std::endl;
}

The constructor for foo outputs its address; I got the following output from a
single run:
constructed foo @ 0x710bdb7f
default argument is at 0x710bdb60

It shows that only 1 foo was constructed, and not at the same address as that
of the default argument. It's been a lng week, but I can't see anything
wrong with the code. In the real code on which this was based, a segfault was
occurring when running the destructor of a foo that was move-constructed from
the default argument, because the underlying memory was seemingly
uninitialised.


build command  output
--
[rob@localhost tests]$ g++ -v -save-temps -Wall -Wextra --std=c++0x
-fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations
default-args-fail.cpp -o ./default-args-fail
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla
--enable-bootstrap --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object
--enable-linker-build-id --with-linker-hash-style=gnu
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin
--enable-initfini-array --enable-java-awt=gtk --disable-dssi
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
--enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib
--with-isl=/builddir/build/BUILD/gcc-4.8.2-20131212/obj-x86_64-redhat-linux/isl-install
--with-cloog=/builddir/build/BUILD/gcc-4.8.2-20131212/obj-x86_64-redhat-linux/cloog-install
--with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-Wextra' '-std=c++11'
'-fno-strict-aliasing' '-fwrapv' '-fno-aggressive-loop-optimizations' '-o'
'./default-args-fail' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-redhat-linux/4.8.2/cc1plus -E -quiet -v -D_GNU_SOURCE
default-args-fail.cpp -mtune=generic -march=x86-64 -std=c++11 -Wall -Wextra
-fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations
-fpch-preprocess -o default-args-fail.ii
ignoring nonexistent directory
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include-fixed
ignoring nonexistent directory
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../x86_64-redhat-linux/include
#include ... search starts here:
#include ... search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/backward
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
 /usr/local/include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-Wextra' '-std=c++11'
'-fno-strict-aliasing' '-fwrapv' '-fno-aggressive-loop-optimizations' '-o'
'./default-args-fail' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-redhat-linux/4.8.2/cc1plus -fpreprocessed
default-args-fail.ii -quiet -dumpbase default-args-fail.cpp -mtune=generic
-march=x86-64 -auxbase default-args-fail -Wall -Wextra -std=c++11 -version
-fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations -o
default-args-fail.s
GNU C++ (GCC) version 4.8.2 20131212 (Red Hat 4.8.2-7) (x86_64-redhat-linux)
compiled by GNU C version 4.8.2 20131212 (Red Hat 4.8.2-7), GMP version
5.1.2, MPFR version 3.1.2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++ (GCC) version 4.8.2 20131212 (Red Hat 4.8.2-7) (x86_64-redhat-linux)
compiled by GNU C version 4.8.2 20131212 (Red Hat 4.8.2-7), GMP version
5.1.2, MPFR version 3.1.2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 36de953cba87bab1ad58280401e36d59
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-Wextra' 

[Bug fortran/60357] [F08] structure constructor with unspecified values for allocatable components

2014-02-28 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60357

janus at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from janus at gcc dot gnu.org ---
(In reply to janus from comment #2)
 Draft patch:

... regtests cleanly!


[Bug middle-end/59176] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed

2014-02-28 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59176

--- Comment #10 from Jan Hubicka hubicka at gcc dot gnu.org ---
hmm, I see, same body alias...

Well, remove_unreachable_nodes does two things, it removes nodes that are
completely unreachable and also removes definitions of nodes where definition
is not needed, but they are still referenced and thus needs to stay.  I suppose
it is what happens here.
I will check how to silence the verifier.


[Bug fortran/60359] [OOP] symbol `__io_MOD___copy_character_1' is already defined

2014-02-28 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359

--- Comment #5 from janus at gcc dot gnu.org ---
(In reply to janus from comment #4)
 This is due to a small bug in find_intrinsic_vtab. Patch:

The patch from comment #4 regtests cleanly.


[Bug fortran/60359] [OOP] symbol `__io_MOD___copy_character_1' is already defined

2014-02-28 Thread sgk at troutmask dot apl.washington.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359

--- Comment #6 from Steve Kargl sgk at troutmask dot apl.washington.edu ---
On Fri, Feb 28, 2014 at 05:36:54PM +, janus at gcc dot gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359
 
 --- Comment #5 from janus at gcc dot gnu.org ---
 (In reply to janus from comment #4)
  This is due to a small bug in find_intrinsic_vtab. Patch:
 
 The patch from comment #4 regtests cleanly.
 

I've tested the patch against the original code.  Looks
good.  You can commit the patch.


[Bug preprocessor/60368] New: ICE on not unibyte character in execution character set

2014-02-28 Thread rmansfield at qnx dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60368

Bug ID: 60368
   Summary: ICE on not unibyte character in execution character
set
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: preprocessor
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rmansfield at qnx dot com

$ cat ~/ice.c
#include stdio.h

int main(int argc, char *argv[])
{
printf(hello world\n);
}


$ ./xgcc -v
Using built-in specs.
COLLECT_GCC=./xgcc
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-languages=c++,lto
Thread model: posix
gcc version 4.9.0 20140228 (experimental) [trunk revision 208224] (GCC)

$ ./xgcc -B. -fexec-charset=UTF-16 ~/ice.c
/home/ryan/ice.c: In function ‘main’:
/home/ryan/ice.c:9:0: internal compiler error: character 0xa is not unibyte in
execution character set

 ^
0x5d0b64 c_cpp_error(cpp_reader*, int, int, unsigned int, unsigned int, char
const*, __va_list_tag (*) [1])
../../gcc/c-family/c-common.c:9713
0xf16cea cpp_diagnostic
../../libcpp/errors.c:63
0xf16e36 cpp_error(cpp_reader*, int, char const*, ...)
../../libcpp/errors.c:78
0xf0e15a cpp_host_to_exec_charset(cpp_reader*, unsigned int)
../../libcpp/charset.c:804
0x5d0c63 c_common_to_target_charset(long)
../../gcc/c-family/c-common.c:9731
0x618a8e init_target_chars
../../gcc/builtins.c:13529
0x63367c init_target_chars
../../gcc/builtins.c:13527
0x63367c fold_builtin_printf
../../gcc/builtins.c:13315
0x637a79 fold_builtin_1
../../gcc/builtins.c:10705
0x62d9a3 fold_builtin_n
../../gcc/builtins.c:11102
0x63b895 fold_call_expr(unsigned int, tree_node*, bool)
../../gcc/builtins.c:11233
0x7f8009 gimplify_call_expr
../../gcc/gimplify.c:2286
0x7ed947 gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc/gimplify.c:7419
0x7f2296 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc/gimplify.c:5341
0x7f2f9f gimplify_bind_expr
../../gcc/gimplify.c:1079
0x7ede8e gimplify_expr(tree_node**, gimple_statement_base**,
gimple_statement_base**, bool (*)(tree_node*), int)
../../gcc/gimplify.c:7645
0x7f2296 gimplify_stmt(tree_node**, gimple_statement_base**)
../../gcc/gimplify.c:5341
0x7f3b09 gimplify_body(tree_node*, bool)
../../gcc/gimplify.c:8555
0x7f40e6 gimplify_function_tree(tree_node*)
../../gcc/gimplify.c:8708
0x6827b7 analyze_function
../../gcc/cgraphunit.c:649
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++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-02-28 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #19 from Jason Merrill jason at gcc dot gnu.org ---
I think it would make sense to suppress speculative devirtualization of a
DECL_ARTIFICIAL destructor, since that seems to be the problem here (and in
53808).  I think it's better to address this in devirtualization rather than
inlining so that an explicitly non-virtual call (e.g. from a destructor to a
base destructor) can still be inlined.

This doesn't address user-declared inline destructors, including those declared
as =default in the class body, but I'm comfortable saying that people who do
that should expect it to be inlined, whereas people who don't mention a
destructor at all can be forgiven for being surprised that we inline the
destructor they weren't thinking about.

I think I'm also inclined to allow non-speculative devirtualization, since in
cases where we know the type of the object we presumably have access to the
vtable in the current shared object.

Do you have an opinion about whether this restriction should apply to virtual
operator= as well?  I think that's much less likely to occur, but it probably
makes most sense to handle it the same way.

Testing a patch now.


[Bug preprocessor/60368] ICE on not unibyte character in execution character set

2014-02-28 Thread rmansfield at qnx dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60368

--- Comment #1 from Ryan Mansfield rmansfield at qnx dot com ---
Maybe a WONTFIX. It's not clear to me why cpp_host_to_exec_charset is using 
CPP_DL_ICE for this instead of CPP_DL_ERROR


[Bug ada/51483] [4.7/4.8/4.9 regression] cstand.adb:Register_Float_Type makes invalid assumptions about FP representation

2014-02-28 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51483

--- Comment #17 from Jeffrey A. Law law at redhat dot com ---
Eric, there's an updated patch in c#8 which reportedly fixes the problem by
passing both the precision and storage size of Register_Float_Type.

I'm nowhere near versed enough in Ada to know if Mikael's on the right track
with that patch. It's been sitting there for ~2 years now ;(

The SPARK issues in c#14 is separate and we should probably create a distinct
BZ for that since I believe it completely stands in the way bootstrapping Ada
on platforms without a functional Ada compiler.

If you could help move along these issues, it'd be appreciated.

Thanks,
Jeff


[Bug target/60369] New: [PATCH] [TIC6X] new compiler intrinsics

2014-02-28 Thread wojtek.golf at interia dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60369

Bug ID: 60369
   Summary: [PATCH] [TIC6X] new compiler intrinsics
   Product: gcc
   Version: 4.8.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wojtek.golf at interia dot pl
  Host: Linux wmigda-desktop 3.11.0-13-generic #20-Ubuntu SMP
Wed Oct 23 17:26:33 UTC 2013 i686 i686 i686 GNU/Linux
Target: tic6x-none-elf
 Build: 4.8.3 20140224 (prerelease)

Texas Instruments TIC6X compiler suite offers a number of compiler intrinsics
(see e.g. SPRU197u document) which are absent in gcc.
This is a patch proposal which is supposed to amend that. The scope is rather
limited as this would be my first contribution to gcc so I would like to treat
this as a pilot to see if I got everything right.

The intrinsics I would like to add with my patch are:
_swap2
_swap4
_dmv
_packlh2
_packhl2
_rotl

1. Legal Prerequisites
I think this proposal is small enough not to require for a separate copyright
disclaimer/assignment.

2. Coding Standards
Applied.

3. Testing Patches
I have prepared few testcases which check whether the instruction descriptions
are correct and whether the expected assembler instruction is generated for
each of the intrinsics.

4. Documentation Changes
TIC6X intrinsics are not listed in gcc documentation, so no update is
necessary.

5. Web Site Changes
As above.

6. Submitting Patches

A description of the problem/bug and how your patch addresses it.
GCC is missing some of the compiler intrinsics available in the Texas
Instruments TIC6X compiler suite. This patch attempts to extend the intrinsics
set offered by gcc.

Testcases
I have created a total of 12 testcases and placed them inside the
gcc/testsuite/gcc.target/tic6x folder.

ChangeLog
2014-02-28  Wojciech Migda  wojtek.g...@interia.pl

* gcc/config/c6x/c6x.c: new intrinsics entries in enum c6x_builtins,
c6x_init_builtins, bdesc_2arg, and bdesc_1arg. v2si_ftype_si_si definition.
* gcc/config/c6x/c6x.md: new instruction definitions.
* gcc/config/c6x/c6x_intrinsics.h: new intrinsics functions.
* gcc/testsuite/gcc.target/tic6x/{dmv-O2-scan.c,dmv-O2-volatile-scan.c,
packhl2-O2-scan.c,packhl2-O2-volatile-scan.c,packlh2-O2-scan.c,
packlh2-O2-volatile-scan.c,rotl-O2-scan.c,rotl-O2-volatile-scan.c,
swap2-O2-scan.c,swap2-O2-volatile-scan.c,swap4-O2-scan.c,
swap4-O2-volatile-scan.c}: testcases for new intrinsics.

Bootstrapping and testing
Host: Linux wmigda-desktop 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 17:26:33
UTC 2013 i686 i686 i686 GNU/Linux
Target: tic6x-none-elf
Results for the new testcases (run with make check-gcc
RUNTESTFLAGS=CFLAGS_FOR_TARGET='$CFLAGS_FOR_TARGET
--sysroot=${CXTOOLS}${TRIPLET}/sysroot' -v -v tic6x.exp)
PASS: gcc.target/tic6x/dmv-O2-scan.c (test for excess errors)
PASS: gcc.target/tic6x/dmv-O2-scan.c scan-assembler \\(exit\\)
PASS: gcc.target/tic6x/dmv-O2-scan.c scan-assembler-not [\\t ]dmv[\\t ]
PASS: gcc.target/tic6x/dmv-O2-volatile-scan.c (test for excess errors)
PASS: gcc.target/tic6x/dmv-O2-volatile-scan.c scan-assembler dmv
PASS: gcc.target/tic6x/dmv-O2-volatile-scan.c scan-assembler-not \\(_dmv\\)
PASS: gcc.target/tic6x/packhl2-O2-scan.c (test for excess errors)
PASS: gcc.target/tic6x/packhl2-O2-scan.c scan-assembler \\(exit\\)
PASS: gcc.target/tic6x/packhl2-O2-scan.c scan-assembler-not [\\t ]packhl2[\\t ]
PASS: gcc.target/tic6x/packhl2-O2-volatile-scan.c (test for excess errors)
PASS: gcc.target/tic6x/packhl2-O2-volatile-scan.c scan-assembler packhl2
PASS: gcc.target/tic6x/packhl2-O2-volatile-scan.c scan-assembler-not
\\(_packhl2\\)
PASS: gcc.target/tic6x/packlh2-O2-scan.c (test for excess errors)
PASS: gcc.target/tic6x/packlh2-O2-scan.c scan-assembler \\(exit\\)
PASS: gcc.target/tic6x/packlh2-O2-scan.c scan-assembler-not [\\t ]packlh2[\\t ]
PASS: gcc.target/tic6x/packlh2-O2-volatile-scan.c (test for excess errors)
PASS: gcc.target/tic6x/packlh2-O2-volatile-scan.c scan-assembler packlh2
PASS: gcc.target/tic6x/packlh2-O2-volatile-scan.c scan-assembler-not
\\(_packlh2\\)
PASS: gcc.target/tic6x/rotl-O2-scan.c (test for excess errors)
PASS: gcc.target/tic6x/rotl-O2-scan.c scan-assembler \\(exit\\)
PASS: gcc.target/tic6x/rotl-O2-scan.c scan-assembler-not [\\t ]rotl[\\t ]
PASS: gcc.target/tic6x/rotl-O2-volatile-scan.c (test for excess errors)
PASS: gcc.target/tic6x/rotl-O2-volatile-scan.c scan-assembler rotl
PASS: gcc.target/tic6x/rotl-O2-volatile-scan.c scan-assembler-not \\(_rotl\\)
PASS: gcc.target/tic6x/swap2-O2-scan.c (test for excess errors)
PASS: gcc.target/tic6x/swap2-O2-scan.c scan-assembler \\(exit\\)
PASS: gcc.target/tic6x/swap2-O2-scan.c scan-assembler-not packlh2
PASS: gcc.target/tic6x/swap2-O2-scan.c scan-assembler-not _swap2
PASS: gcc.target/tic6x/swap2-O2-volatile-scan.c (test for excess errors)
PASS: 

[Bug fortran/60370] New: TRANSPOSE on rhs of allocatable array assignment gives bounds error

2014-02-28 Thread townsend at astro dot wisc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60370

Bug ID: 60370
   Summary: TRANSPOSE on rhs of allocatable array assignment gives
bounds error
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: townsend at astro dot wisc.edu

The following code:

program foo

  real, allocatable :: a(:,:)
  real, allocatable :: b(:,:)

  allocate(a(10,5))

  a = 0.

  b = TRANSPOSE(a)

end program foo

...produces this error message at runtime, when compiled with -fcheck=all:

At line 10 of file foo.f90
Fortran runtime error: Array bound mismatch for dimension 1 of array 'b' (1/5)

This is on OS X:

Using built-in specs.
COLLECT_GCC=/Applications/madsdk/bin/gfortran.exec
COLLECT_LTO_WRAPPER=/Applications/madsdk/libexec/gcc/x86_64-apple-darwin11.4.2/4.9.0/lto-wrapper
Target: x86_64-apple-darwin11.4.2
Configured with: ./configure CC='gcc -D_FORTIFY_SOURCE=0'
--build=x86_64-apple-darwin11.4.2 --prefix=/Applications/madsdk
--with-gmp=/Applications/madsdk --with-mpfr=/Applications/madsdk
--with-mpc=/Applications/madsdk --enable-languages=c,c++,fortran
--disable-multilib --disable-nls --disable-libsanitizer
Thread model: posix
gcc version 4.9.0 20140201 (experimental) (GCC)


[Bug c++/58610] [4.7/4.8/4.9 Regression] [c++11] ICE with constexpr of class with template constructor

2014-02-28 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58610

--- Comment #2 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Fri Feb 28 20:20:21 2014
New Revision: 208226

URL: http://gcc.gnu.org/viewcvs?rev=208226root=gccview=rev
Log:
/cp
2014-02-28  Paolo Carlini  paolo.carl...@oracle.com

PR c++/58610
* cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
* call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
* lambda.c (maybe_add_lambda_conv_op): Likewise.

/testsuite
2014-02-28  Paolo Carlini  paolo.carl...@oracle.com

PR c++/58610
* g++.dg/cpp0x/constexpr-ice11.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-ice11.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/lambda.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/58610] [4.7/4.8/4.9 Regression] [c++11] ICE with constexpr of class with template constructor

2014-02-28 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58610

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Assignee|paolo.carlini at oracle dot com|unassigned at gcc dot 
gnu.org
   Target Milestone|4.7.4   |4.9.0

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com ---
Fixed for 4.9.0.


[Bug c++/55004] [meta-bug] constexpr issues

2014-02-28 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55004
Bug 55004 depends on bug 58610, which changed state.

Bug 58610 Summary: [4.7/4.8/4.9 Regression] [c++11] ICE with constexpr of class 
with template constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58610

   What|Removed |Added

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


[Bug ipa/60306] [4.9 Regression] Incorrect devirtualization pure virtual method called

2014-02-28 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60306

--- Comment #8 from Jan Hubicka hubicka at gcc dot gnu.org ---
Created attachment 32235
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32235action=edit
Better WIP patch

Yep, ignoring the calls also surprised me. I spent some time trying to think of
and produce more evil testcases to this issue, but rest of Martin's reasoning
seems right. The code really just mixes up the case where it knows something on
all understood places with the case it knows something on all possible paths
through the code. It implements the first but wants the second.

I also tried to give up on all calls first. That makes the intraprocedural and
part of inter-procedural devirt to give up almost always. Except for trivial
cases that are handled by SCCVN you almost always have a call in a way, so
testsuite is not really happy about it.

Other option is to simply give up on recording anything when type change is
seen. This also fixes the bug, perhaps with less fallout.

Third option is to record if walk ever reached top of function and if it did
give up when type change is seen. This seems to be simple addition to ao
walker, we just need some interface for it.

Fourth option is to be smarter about the calls defining type that is something
I would like to do for next stage1, patch attached. It is ortoghonal to 1/2/3,
if we have it we will just understand more paths (and currently I punt if I see
some not understood path)

I can get some data on difference in between options 1,2,3 for mainline, or do
we just want to give up?


[Bug target/57295] target c6x-elf // internal compiler error: in extract_insn, at recog.c:2150

2014-02-28 Thread wojtek.golf at interia dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57295

Wojciech Migda wojtek.golf at interia dot pl changed:

   What|Removed |Added

 CC||wojtek.golf at interia dot pl

--- Comment #1 from Wojciech Migda wojtek.golf at interia dot pl ---
This is the smallest source code to reproduce this problem:

void foo(foid)
{
  *(volatile int *)-1L = 0;
}


[Bug fortran/60359] [OOP] symbol `__io_MOD___copy_character_1' is already defined

2014-02-28 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359

--- Comment #7 from janus at gcc dot gnu.org ---
Author: janus
Date: Fri Feb 28 21:30:04 2014
New Revision: 208227

URL: http://gcc.gnu.org/viewcvs?rev=208227root=gccview=rev
Log:
2014-02-28  Janus Weil  ja...@gcc.gnu.org

PR fortran/60359
* class.c (find_intrinsic_vtab): Prevent duplicate creation of copy
procedure for characters.


2014-02-28  Janus Weil  ja...@gcc.gnu.org

PR fortran/60359
* gfortran.dg/unlimited_polymorphic_16.f90: New.

Added:
trunk/gcc/testsuite/gfortran.dg/unlimited_polymorphic_16.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/class.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/60359] [OOP] symbol `__io_MOD___copy_character_1' is already defined

2014-02-28 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359

janus at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #8 from janus at gcc dot gnu.org ---
Fixed with r208227. Closing.


[Bug c++/60371] New: std::vector::emplace_back

2014-02-28 Thread dilyan.palauzov at aegee dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60371

Bug ID: 60371
   Summary: std::vector::emplace_back
   Product: gcc
   Version: 4.8.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dilyan.palauzov at aegee dot org

I use gcc 4.8.3 20140220 (prerelease), with libc 2.17 on a x86_64 bit system.

Compiling:
#include vector
#include string.h
#include stdlib.h

struct z {
  char* var;
  z (const char* str) { var = strdup (str);  }
  ~z () { free (var); }
};

std::vectorz y;

int main () {
  y.emplace_back (a);
  y.emplace_back (b);
}

with
gcc -O0 -ggdb3 -std=c++11 vector_emplace_back.cpp -o vector_emplace_back
-lstdc++
I get the attached binary file.

Running valgrind revision 13842 on the resulting file with

valgrind --tool=memcheck --track-origins=yes ./vector_emplace_back

results the output

== Memcheck, a memory error detector
== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
== Command: ./vector_emplace_back
==
== Invalid free() / delete / delete[] / realloc()
==at 0x4C2B10C: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==by 0x400B1C: z::~z() (vector_emplace_back.cpp:8)
==by 0x401495: void std::_Destroyz(z*) (stl_construct.h:93)
==by 0x401397: void std::_Destroy_auxfalse::__destroyz*(z*, z*)
(stl_construct.h:103)
==by 0x4012C5: void std::_Destroyz*(z*, z*) (stl_construct.h:126)
==by 0x401103: void std::_Destroyz*, z(z*, z*, std::allocatorz)
(stl_construct.h:151)
==by 0x4015DC: std::vectorz, std::allocatorz ::~vector()
(stl_vector.h:415)
==by 0x53871E0: __run_exit_handlers (in /lib64/libc-2.17.so)
==by 0x5387264: exit (in /lib64/libc-2.17.so)
==by 0x5370A2B: (below main) (in /lib64/libc-2.17.so)
==  Address 0x59fc090 is 0 bytes inside a block of size 2 free'd
==at 0x4C2B10C: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==by 0x400B1C: z::~z() (vector_emplace_back.cpp:8)
==by 0x401495: void std::_Destroyz(z*) (stl_construct.h:93)
==by 0x401397: void std::_Destroy_auxfalse::__destroyz*(z*, z*)
(stl_construct.h:103)
==by 0x4012C5: void std::_Destroyz*(z*, z*) (stl_construct.h:126)
==by 0x401103: void std::_Destroyz*, z(z*, z*, std::allocatorz)
(stl_construct.h:151)
==by 0x400D70: void std::vectorz, std::allocatorz
::_M_emplace_back_auxchar const () [2](char const () [2]) (vector.tcc:428)
==by 0x400BC6: void std::vectorz, std::allocatorz ::emplace_backchar
const () [2](char const () [2]) (vector.tcc:101)
==by 0x400A6E: main (vector_emplace_back.cpp:15)
==
==
== HEAP SUMMARY:
== in use at exit: 0 bytes in 0 blocks
==   total heap usage: 4 allocs, 5 frees, 28 bytes allocated
==
== All heap blocks were freed -- no leaks are possible
==
== For counts of detected and suppressed errors, rerun with: -v
== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 1 from 1)

There shall not be double free().

Inserting y.clear(); between the two y.emplace_back() does not lead to any
warnings from valgrind for the whole resulting programme.

std::list does not have this problem, as expected.


[Bug ada/51483] [4.7/4.8/4.9 regression] cstand.adb:Register_Float_Type makes invalid assumptions about FP representation

2014-02-28 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51483

--- Comment #18 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
 Eric, there's an updated patch in c#8 which reportedly fixes the problem by
 passing both the precision and storage size of Register_Float_Type.

Right, this is the way to go.

 I'm nowhere near versed enough in Ada to know if Mikael's on the right track
 with that patch. It's been sitting there for ~2 years now ;(
 
 The SPARK issues in c#14 is separate and we should probably create a
 distinct BZ for that since I believe it completely stands in the way
 bootstrapping Ada on platforms without a functional Ada compiler.
 
 If you could help move along these issues, it'd be appreciated.

Geert, could you have a look at the patch?


[Bug c++/60371] std::vector::emplace_back

2014-02-28 Thread dilyan.palauzov at aegee dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60371

Дилян Палаузов dilyan.palauzov at aegee dot org changed:

   What|Removed |Added

 CC||dilyan.palauzov at aegee dot 
org

--- Comment #1 from Дилян Палаузов dilyan.palauzov at aegee dot org ---
Created attachment 32236
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32236action=edit
Resulting binary on my system

[Bug c++/32039] Using declaration accepts non-visible members from base classes

2014-02-28 Thread fabien at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039

--- Comment #2 from fabien at gcc dot gnu.org ---
(In reply to Andrew Stubbs from comment #0)
 The problem should be that B::foo hides A::foo from class C. Clause 7.3.3/14
 of the C++ standard says the using declaration should not work, in this case
 - class A is not a direct base class of class C. However, GCC 4.1.1 accepts
 it with no diagnostic.

7.3.3/14 says ...The base class members mentioned by a using-declaration shall
be visible in the scope of at least one of the direct base classes of the class
where the using-declaration is specified...

In the example above, A (from using A::foo) is visible from its direct base
class B. Consequently, it is valid. Adding 'using A::foo' within B does not
change anything to that.

without 'using A::foo':
'int B::foo(long)' hides int A::foo(int) in B
and 'using A::foo' brings 'int A::foo(int)' into C and hides 'int
B::foo(long)'.

with 'using A::foo':
two overloads of 'foo' are present in B: 'int B::foo(long)' and 'int
A::foo(int)' (brought into B scope by the using-declaration).
and 'using A::foo' brings 'int A::foo(int)' into C and hides 'int B::foo(long)'
(and 'using A::foo)


[Bug c++/32039] Using declaration accepts non-visible members from base classes

2014-02-28 Thread fabien at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039

--- Comment #3 from fabien at gcc dot gnu.org ---
(In reply to Eelis from comment #1)
 Still accepted by 4.4. Comeau concurs with reporter, and rejects saying:
 
   line 15: error: class member designated by a
 using-declaration must be visible in a direct base class

Which seems wrong according to the standard quoted above.
From Clang results and the analysis done in bug 19377, I am inclined to close
this bug as invalid.


[Bug c++/32039] Using declaration accepts non-visible members from base classes

2014-02-28 Thread fabien at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039

fabien at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from fabien at gcc dot gnu.org ---
Closed as invalid.


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-28 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

--- Comment #3 from jye2 at gcc dot gnu.org ---
Author: jye2
Date: Fri Feb 28 21:53:40 2014
New Revision: 208229

URL: http://gcc.gnu.org/viewcvs?rev=208229root=gccview=rev
Log:
2014-02-28  Joey Ye  joey...@arm.com

PR libgcc/60166
* config/arm/sfp-machine.h (_FP_NANFRAC_H,
_FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q):
Set to zero.

Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config/arm/sfp-machine.h


[Bug c++/60372] New: incorrect destruction order for function parameter objects

2014-02-28 Thread jens.maurer at gmx dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60372

Bug ID: 60372
   Summary: incorrect destruction order for function parameter
objects
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jens.maurer at gmx dot net

Parameter objects are not destroyed when the called function returns, but later
(too late).  The C++ standard says in 5.2.2p4 [expr.call]:
... The lifetime of a parameter ends when the function in which it is defined
returns. ...

However, the following program shows that S is destroyed too late, after the
call to h():

#include stdio.h

struct S {
  S(int) { printf(S(int)\n); }
  ~S() { printf(~S\n); }
};

void f(S) { printf(f(S)\n); }
void h() { printf(h()\n); }

int main()
{
  f({0}), h();
}

 g++ -Wall -Wextra -std=c++11 -pedantic func-destroy.cc 
 ./a.out
S(int)
f(S)
h()
~S

S should be destroyed before the call to h().  Note that no temporary is
involved (which would correctly be destroyed at the end of the
full-expression); the copy-list-initialization initializes the parameter
object.


[Bug c++/60371] std::vector::emplace_back

2014-02-28 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60371

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
This sounds like there is a copy constructor happening and you don't have a
copy constructor defined so it is a direct assignment which means you will get
a double free.


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-28 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

--- Comment #4 from jye2 at gcc dot gnu.org ---
Author: jye2
Date: Fri Feb 28 22:00:52 2014
New Revision: 208230

URL: http://gcc.gnu.org/viewcvs?rev=208230root=gccview=rev
Log:
2014-02-28  Joey Ye  joey...@arm.com

Backport from mainline r208229
2014-02-28  Joey Ye  joey...@arm.com

PR libgcc/60166
* config/arm/sfp-machine.h (_FP_NANFRAC_H,
_FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q):
Set to zero.

Modified:
branches/gcc-4_8-branch/libgcc/ChangeLog
branches/gcc-4_8-branch/libgcc/config/arm/sfp-machine.h


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-28 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

Joey Ye joey.ye at arm dot com changed:

   What|Removed |Added

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

--- Comment #5 from Joey Ye joey.ye at arm dot com ---
Fixed in trunk 208229


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-28 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

--- Comment #6 from jye2 at gcc dot gnu.org ---
Author: jye2
Date: Fri Feb 28 22:05:13 2014
New Revision: 208233

URL: http://gcc.gnu.org/viewcvs?rev=208233root=gccview=rev
Log:
2014-02-28  Joey Ye  joey...@arm.com

Backport from mainline r208229
2014-02-28  Joey Ye  joey...@arm.com

PR libgcc/60166
* config/arm/sfp-machine.h (_FP_NANFRAC_H,
_FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q):
Set to zero.

Modified:
branches/gcc-4_7-branch/libgcc/ChangeLog
branches/gcc-4_7-branch/libgcc/config/arm/sfp-machine.h


[Bug c++/60371] std::vector::emplace_back

2014-02-28 Thread dilyan.palauzov at aegee dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60371

--- Comment #3 from Дилян Палаузов dilyan.palauzov at aegee dot org ---
Indeed, adding

  z (const z x) { var = strdup (x.var); }

solves the problem.  However, I don't understand how that y.clear(); between
the y.emplace_back() in the original program avoids the double free.

[Bug c++/60371] std::vector::emplace_back

2014-02-28 Thread dilyan.palauzov at aegee dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60371

Дилян Палаузов dilyan.palauzov at aegee dot org changed:

   What|Removed |Added

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

--- Comment #4 from Дилян Палаузов dilyan.palauzov at aegee dot org ---
I have to put here some comment, despite the comment I posted on the bug report
some minutes ago.  Otherwise the system does not permit me to change the status
from UNCONFIRMED to RESOLVED/INVALID.

[Bug c++/60373] New: half warning: visibility attribute ignored because it

2014-02-28 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60373

Bug ID: 60373
   Summary: half warning: visibility attribute ignored because it
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: glisse at gcc dot gnu.org

#include new
__attribute__((visibility(hidden)))void*operator new(std::size_t);

g++ -std=c++11 v.cc -c 
v.cc:2:43: warning: 'void* operator new(std::size_t)': visibility attribute
ignored because it [-Wattributes]
 __attribute__((visibility(hidden)))void*operator new(std::size_t);
   ^

You need -Wsystem-headers to kill the suspense. I think we should get the
second half of the sentence in all cases...


[Bug c++/60190] [c++1y] ICE with invalid return type of template lambda

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60190

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||error-recovery,
   ||ice-on-invalid-code
 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |4.9.0

--- Comment #5 from Volker Reichelt reichelt at gcc dot gnu.org ---
Fixed by Adam's patch.


[Bug c++/60374] New: [4.7/4.8/4.9 Regression] ICE with invalid template specialization

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60374

Bug ID: 60374
   Summary: [4.7/4.8/4.9 Regression] ICE with invalid template
specialization
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: error-recovery, ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid testcase (compiled with -std=c++11) triggers
an ICE since GCC 4.7.0:

===
templatetypename struct A {};

templatetypename...T struct AT::T... {};

Aint a;
===

bug.cc:3:31: error: template argument 'T:: T' involves template parameter(s)
 templatetypename...T struct AT::T... {};
   ^
bug.cc:5:8: internal compiler error: in unify_one_argument, at cp/pt.c:16311
 Aint a;
^
0x63a5ec unify_one_argument
../../gcc/gcc/cp/pt.c:16310
0x63b430 unify_pack_expansion
../../gcc/gcc/cp/pt.c:17129
0x6389de unify
../../gcc/gcc/cp/pt.c:17884
0x63e6ff get_class_bindings
../../gcc/gcc/cp/pt.c:18610
0x63f37e most_specialized_class
../../gcc/gcc/cp/pt.c:18852
0x64ecf9 instantiate_class_template_1
../../gcc/gcc/cp/pt.c:8867
0x64ecf9 instantiate_class_template(tree_node*)
../../gcc/gcc/cp/pt.c:9399
0x6e1d83 complete_type(tree_node*)
../../gcc/gcc/cp/typeck.c:134
0x5c8e58 start_decl_1(tree_node*, bool)
../../gcc/gcc/cp/decl.c:4719
0x5f1ef7 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
../../gcc/gcc/cp/decl.c:4682
0x6ce2be cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16684
0x6cfd49 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11205
0x6b3003 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6da2d2 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10983
0x6d8fc8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6da87a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6da87a c_parse_file()
../../gcc/gcc/cp/parser.c:31590
0x7f9fe3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


[Bug c++/60374] [4.7/4.8/4.9 Regression] ICE with invalid template specialization

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60374

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.5.0, 4.6.0
   Target Milestone|--- |4.7.4
  Known to fail||4.7.0, 4.8.0, 4.9.0


[Bug c++/32039] Using declaration accepts non-visible members from base classes

2014-02-28 Thread harald at gigawatt dot nl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039

Harald van Dijk harald at gigawatt dot nl changed:

   What|Removed |Added

 CC||harald at gigawatt dot nl

--- Comment #5 from Harald van Dijk harald at gigawatt dot nl ---
This bug is about visibility, bug 19337 is about accessibility. I incorrectly
used visibility in my comment on the other bug, I apologise if that has
confused matters. The comments there do not apply here.

Normally, a qualified name such as A::foo can be used to refer to a hidden
member. In this instance, however, the standard makes a special exception, and
states that A::foo must be visible in B as well, even though a qualified name
is used, for the using declaration to be valid.

In B, int A::foo(int) is hidden by int B::foo(long) because B's member function
has the same name. (3.3.10p1) A name is said to be visible, if it is in scope,
and not hidden. (3.3.10p5)

So I think this bug report is valid and unrelated to 19337: A's member function
is indeed not visible in any of the direct bases of C.

Your comment (the In the example above, A (from using A::foo) is visible bit)
suggests that you read the standard as requiring that the base class be
visible, rather than the base class member.


[Bug c++/60375] New: [4.9 Regression] ICE with invalid use of lambda

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60375

Bug ID: 60375
   Summary: [4.9 Regression] ICE with invalid use of lambda
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: error-recovery, ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid testcase (compiled with -std=c++11) triggers
an ICE on trunk:

===
struct A
{
  decltype( [](){ return this; }() ) x;
};
===

bug.cc:3:13: error: lambda-expression in unevaluated context
   decltype( [](){ return this; }() ) x;
 ^
bug.cc: In lambda function:
bug.cc:3:26: internal compiler error: Segmentation fault
   decltype( [](){ return this; }() ) x;
  ^
0xbaa60f crash_signal
../../gcc/gcc/toplev.c:337
0x7587ed contains_struct_check
../../gcc/gcc/tree.h:2822
0x7587ed rvalue(tree_node*)
../../gcc/gcc/cp/tree.c:698
0x6b5fd2 cp_parser_primary_expression
../../gcc/gcc/cp/parser.c:4353
0x6b84cd cp_parser_postfix_expression
../../gcc/gcc/cp/parser.c:5971
0x6bb493 cp_parser_unary_expression
../../gcc/gcc/cp/parser.c:7170
0x6bc17f cp_parser_binary_expression
../../gcc/gcc/cp/parser.c:7874
0x6bc661 cp_parser_assignment_expression
../../gcc/gcc/cp/parser.c:8112
0x6bea73 cp_parser_expression
../../gcc/gcc/cp/parser.c:8274
0x6b7bf2 cp_parser_expression
../../gcc/gcc/cp/parser.c:8313
0x6b7bf2 cp_parser_lambda_body
../../gcc/gcc/cp/parser.c:9228
0x6b7bf2 cp_parser_lambda_expression
../../gcc/gcc/cp/parser.c:8757
0x6b7bf2 cp_parser_primary_expression
../../gcc/gcc/cp/parser.c:4305
0x6b84cd cp_parser_postfix_expression
../../gcc/gcc/cp/parser.c:5971
0x6b9a3e cp_parser_decltype_expr
../../gcc/gcc/cp/parser.c:11904
0x6b9a3e cp_parser_decltype
../../gcc/gcc/cp/parser.c:12003
0x6ba117 cp_parser_qualifying_entity
../../gcc/gcc/cp/parser.c:5494
0x6ba117 cp_parser_nested_name_specifier_opt
../../gcc/gcc/cp/parser.c:5249
0x6baadb cp_parser_nested_name_specifier
../../gcc/gcc/cp/parser.c:5448
0x6b2cd3 cp_parser_using_declaration
../../gcc/gcc/cp/parser.c:15938
Please submit a full bug report, [etc.]


[Bug c++/60375] [4.9 Regression] ICE with invalid use of lambda

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60375

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.5.0, 4.6.0, 4.7.0, 4.8.0
   Target Milestone|--- |4.9.0
  Known to fail||4.9.0


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-02-28 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

--- Comment #20 from Jason Merrill jason at gcc dot gnu.org ---
Author: jason
Date: Sat Mar  1 00:17:09 2014
New Revision: 208241

URL: http://gcc.gnu.org/viewcvs?rev=208241root=gccview=rev
Log:
PR c++/58678
* ipa-devirt.c (ipa_devirt): Don't choose an implicitly-declared
function.

Added:
trunk/gcc/testsuite/g++.dg/ipa/devirt-28.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-devirt.c


[Bug c++/60376] New: [4.9 Regression] ICE with invalid use of using

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60376

Bug ID: 60376
   Summary: [4.9 Regression] ICE with invalid use of using
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: error-recovery, ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid testcase (compiled with -std=c++1y) triggers
an ICE on trunk:


struct A
{
  int foo();
};

templatetypename void bar()
{
  using (A().foo);
}


bug.cc: In function 'void bar()':
bug.cc:8:9: error: expected nested-name-specifier before '(' token
   using (A().foo);
 ^
bug.cc:8:9: error: expected unqualified-id before '(' token
bug.cc:8:9: error: expected ';' before '(' token
bug.cc:8:18: internal compiler error: in type_dependent_expression_p, at
cp/pt.c:20901
   using (A().foo);
  ^
0x6049a1 type_dependent_expression_p(tree_node*)
../../gcc/gcc/cp/pt.c:20900
0x72d994 finish_expr_stmt(tree_node*)
../../gcc/gcc/cp/semantics.c:686
0x6b4788 cp_parser_statement
../../gcc/gcc/cp/parser.c:9473
0x6b5559 cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:9745
0x6b56c6 cp_parser_compound_statement
../../gcc/gcc/cp/parser.c:9699
0x6c667b cp_parser_function_body
../../gcc/gcc/cp/parser.c:18694
0x6c667b cp_parser_ctor_initializer_opt_and_function_body
../../gcc/gcc/cp/parser.c:18730
0x6cdc12 cp_parser_function_definition_after_declarator
../../gcc/gcc/cp/parser.c:22843
0x6ceab1 cp_parser_function_definition_from_specifiers_and_declarator
../../gcc/gcc/cp/parser.c:22755
0x6ceab1 cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16589
0x6cee4a cp_parser_single_declaration
../../gcc/gcc/cp/parser.c:23164
0x6cf134 cp_parser_template_declaration_after_export
../../gcc/gcc/cp/parser.c:22966
0x6da4d9 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10947
0x6d8fc8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6da87a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6da87a c_parse_file()
../../gcc/gcc/cp/parser.c:31590
0x7f9fe3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


[Bug c++/60376] [4.9 Regression] ICE with invalid use of using

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60376

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.8.0
   Target Milestone|--- |4.9.0
  Known to fail||4.9.0


[Bug c++/60305] [4.7 Regression] ICE constexpr array of functions in template

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60305

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Known to work||4.6.0, 4.8.3, 4.9.0
   Keywords||ice-on-valid-code
   Last reconfirmed||2014-03-01
 CC||reichelt at gcc dot gnu.org
 Ever confirmed|0   |1
Summary|ICE constexpr array of  |[4.7 Regression] ICE
   |functions in template   |constexpr array of
   ||functions in template
   Target Milestone|--- |4.7.4
  Known to fail||4.7.0, 4.8.0, 4.8.1, 4.8.2

--- Comment #2 from Volker Reichelt reichelt at gcc dot gnu.org ---
Confirmed. Happens since GCC 4.7.0, but is already fixed on the trunk (for GCC
4.9.0) and on the 4.8 branch (for GCC 4.8.3). Valid testcase:

===
templateint I int foo() { return I; }

templateint... I void bar()
{
  constexpr int (*X[])() = { fooI... };
}

template void bar1,3,5();
===


[Bug c++/60377] New: [c++1y] ICE with invalid function parameter in conjunction with auto parameter

2014-02-28 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60377

Bug ID: 60377
   Summary: [c++1y] ICE with invalid function parameter in
conjunction with auto parameter
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: diagnostic, error-recovery, ice-on-invalid-code
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid testcase (compiled with -std=c++1y) triggers
an ICE on trunk:


void foo(auto, void (f*)());

struct A
{
  int i;
};


bug.cc:1:23: error: expected ')' before '*' token
 void foo(auto, void (f*)());
   ^
bug.cc:1:23: error: expected ')' before '*' token
bug.cc:1:23: error: expected initializer before '*' token
bug.cc:5:7: error: data member 'i' cannot be a member template
   int i;
   ^
bug.cc:5:7: internal compiler error: in poplevel, at cp/decl.c:568
0x5c54a3 poplevel(int, int, int)
../../gcc/gcc/cp/decl.c:568
0x5feba8 end_template_decl()
../../gcc/gcc/cp/pt.c:3807
0x6a3951 finish_fully_implicit_template
../../gcc/gcc/cp/parser.c:32047
0x6acb0c cp_parser_member_declaration
../../gcc/gcc/cp/parser.c:20482
0x6afa84 cp_parser_member_specification_opt
../../gcc/gcc/cp/parser.c:20029
0x6afa84 cp_parser_class_specifier_1
../../gcc/gcc/cp/parser.c:19263
0x6afa84 cp_parser_class_specifier
../../gcc/gcc/cp/parser.c:19490
0x6afa84 cp_parser_type_specifier
../../gcc/gcc/cp/parser.c:14305
0x6c8fb0 cp_parser_decl_specifier_seq
../../gcc/gcc/cp/parser.c:11547
0x6cfb69 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11137
0x6b3003 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6da2d2 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10983
0x6d8fc8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6da87a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6da87a c_parse_file()
../../gcc/gcc/cp/parser.c:31590
0x7f9fe3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]

Note that the error message in line 5 is bogus.

Adam, would you mind having a look?


[Bug c++/58678] [4.9 Regression] pykde4-4.11.2 link error (devirtualization too trigger happy)

2014-02-28 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org

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


[Bug c++/32039] Using declaration accepts non-visible members from base classes

2014-02-28 Thread fabien at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32039

fabien at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|ASSIGNED
 Resolution|INVALID |---

--- Comment #6 from fabien at gcc dot gnu.org ---
(In reply to Harald van Dijk from comment #5)
[...]
 Your comment (the In the example above, A (from using A::foo) is visible
 bit) suggests that you read the standard as requiring that the base class be
 visible, rather than the base class member.

Obviously should read members of A are visible... Anyway thanks for the
clarification.