public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/61659] New: Extra undefined symbol because of devirtualization
@ 2014-06-30 15:01 rafael.espindola at gmail dot com
2014-06-30 15:06 ` [Bug c++/61659] " rafael.espindola at gmail dot com
` (35 more replies)
0 siblings, 36 replies; 37+ messages in thread
From: rafael.espindola at gmail dot com @ 2014-06-30 15:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Bug ID: 61659
Summary: Extra undefined symbol because of devirtualization
Product: gcc
Version: 4.10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: rafael.espindola at gmail dot com
CC: hubicka at gcc dot gnu.org
Given
struct generic_parser_base {
virtual void getOption();
void getExtraOptionNames() { getOption(); }
};
template <class DataType> struct parser : public generic_parser_base {
virtual void getOption() {}
};
struct PassNameParser : public parser<int> {
PassNameParser();
};
struct list {
PassNameParser Parser;
virtual void getExtraOptionNames() { return Parser.getExtraOptionNames(); }
};
list PassList;
gcc 4.9 and trunk will produce an undefined reference to
_ZN6parserIiE9getOptionEv (parser<int>::getOption()) which suggest that the
template is not being instantiated when the call is devirtualized.
Using -fno-devirtualize avoids the bug.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug c++/61659] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
@ 2014-06-30 15:06 ` rafael.espindola at gmail dot com
2014-06-30 15:15 ` pinskia at gcc dot gnu.org
` (34 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: rafael.espindola at gmail dot com @ 2014-06-30 15:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #1 from Rafael Avila de Espindola <rafael.espindola at gmail dot com> ---
The undefined is still present with -fno-devirtualize-speculatively.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug c++/61659] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
2014-06-30 15:06 ` [Bug c++/61659] " rafael.espindola at gmail dot com
@ 2014-06-30 15:15 ` pinskia at gcc dot gnu.org
2014-06-30 15:20 ` pinskia at gcc dot gnu.org
` (33 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-06-30 15:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I don't see why you think this is a bug. parser<int>::getOption will be part
of the vtable of PassNameParser anyways.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug c++/61659] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
2014-06-30 15:06 ` [Bug c++/61659] " rafael.espindola at gmail dot com
2014-06-30 15:15 ` pinskia at gcc dot gnu.org
@ 2014-06-30 15:20 ` pinskia at gcc dot gnu.org
2014-06-30 15:22 ` [Bug ipa/61659] [4.9/4.10 Regression] " trippels at gcc dot gnu.org
` (32 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-06-30 15:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Oh I see it, it is declared inside the template.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (2 preceding siblings ...)
2014-06-30 15:20 ` pinskia at gcc dot gnu.org
@ 2014-06-30 15:22 ` trippels at gcc dot gnu.org
2014-06-30 15:26 ` rafael.espindola at gmail dot com
` (31 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-06-30 15:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Known to work| |4.8.3
Last reconfirmed| |2014-06-30
Component|c++ |ipa
CC| |trippels at gcc dot gnu.org
Ever confirmed|0 |1
Summary|Extra undefined symbol |[4.9/4.10 Regression] Extra
|because of devirtualization |undefined symbol because of
| |devirtualization
Target Milestone|--- |4.9.1
Known to fail| |4.10.0, 4.9.1
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (3 preceding siblings ...)
2014-06-30 15:22 ` [Bug ipa/61659] [4.9/4.10 Regression] " trippels at gcc dot gnu.org
@ 2014-06-30 15:26 ` rafael.espindola at gmail dot com
2014-06-30 16:20 ` jakub at gcc dot gnu.org
` (30 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: rafael.espindola at gmail dot com @ 2014-06-30 15:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #4 from Rafael Avila de Espindola <rafael.espindola at gmail dot com> ---
I ran the testcase with just -O2 (original code with -O3, but the reduced
testcase with -O2).
getOption will be part of the vtable, but it can end up being hidden.
In the original source code it ends up being hidden because of
-fvisibility-inlines-hidden (I think, haven't checked).
It also seems invalid to produce the extra undefined at a more fundamental
level. The ABI doesn't say that symbol has to be exposed. In particular, the
vtable can be in another DSO and it is legal to remeve the symbol of getOption
from the dso since the compiler knows that any user can emit a copy.
The above optimization is why PREVAILING_DEF_IRONLY_EXP was added to the gold
plugin api and both gcc and llvm LTO's optimizations do it.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53808 for a related
discussion.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (4 preceding siblings ...)
2014-06-30 15:26 ` rafael.espindola at gmail dot com
@ 2014-06-30 16:20 ` jakub at gcc dot gnu.org
2014-06-30 16:42 ` hubicka at gcc dot gnu.org
` (29 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-06-30 16:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started to ICE with r205019, and since r205528 there is no ICE but the
undefined symbol.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (5 preceding siblings ...)
2014-06-30 16:20 ` jakub at gcc dot gnu.org
@ 2014-06-30 16:42 ` hubicka at gcc dot gnu.org
2014-06-30 17:15 ` hubicka at gcc dot gnu.org
` (28 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: hubicka at gcc dot gnu.org @ 2014-06-30 16:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
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 #6 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
mine.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (6 preceding siblings ...)
2014-06-30 16:42 ` hubicka at gcc dot gnu.org
@ 2014-06-30 17:15 ` hubicka at gcc dot gnu.org
2014-06-30 20:21 ` jason at gcc dot gnu.org
` (27 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: hubicka at gcc dot gnu.org @ 2014-06-30 17:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Jan Hubicka <hubicka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at redhat dot com
--- Comment #7 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Jason, it seems that the symbol in question is getting into symtab as:
_ZN6parserIiE9getOptionEv/21 (void parser<DataType>::getOption() [with DataType
= int]) @0x7ffff6c665c0
Type: function
Visibility: external public virtual
References:
Referring:
Availability: not_available
First run: 0
Function flags:
Called by: _ZN4list19getExtraOptionNamesEv/1 (1.00 per call) (can throw
external)
Calls:
I think it should be declared comdat that would make us to output the body.
Perhaps it somehow misses import/export decl?
The devirtualization happens as part of normal folding in early inline. We
inline:
void generic_parser_base::getExtraOptionNames() (struct generic_parser_base *
const this)
{
int (*__vtbl_ptr_type) () * _3;
int (*__vtbl_ptr_type) () _4;
<bb 2>:
_3 = this_2(D)->_vptr.generic_parser_base;
_4 = *_3;
OBJ_TYPE_REF(_4;(struct generic_parser_base)this_2(D)->0) (this_2(D));
return;
}
to
virtual void list::getExtraOptionNames() (struct list * const this)
{
struct generic_parser_base * _2;
<bb 2>:
_2 = &this_1(D)->Parser.D.2262.D.2251;
generic_parser_base::getExtraOptionNames (_2);
return;
}
this makes base type known and given the visibility we just fold it.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (7 preceding siblings ...)
2014-06-30 17:15 ` hubicka at gcc dot gnu.org
@ 2014-06-30 20:21 ` jason at gcc dot gnu.org
2014-06-30 22:05 ` trippels at gcc dot gnu.org
` (26 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-06-30 20:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Mon Jun 30 20:20:55 2014
New Revision: 212174
URL: https://gcc.gnu.org/viewcvs?rev=212174&root=gcc&view=rev
Log:
PR c++/61659
PR lto/53808
gcc/cp
* decl2.c (maybe_emit_vtables): Mark all vtable entries if
devirtualizing.
* init.c (build_vtbl_address): Don't mark destructor.
* class.c (finish_struct_1): Add all classes to keyed_classes
if devirtualizing.
libstdc++-v3/
* libsupc++/cxxabi.h (class __pbase_type_info): __pointer_catch
is pure, not inline.
Added:
trunk/gcc/testsuite/g++.dg/opt/devirt5.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/cp/decl2.c
trunk/gcc/cp/init.c
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/libsupc++/cxxabi.h
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (8 preceding siblings ...)
2014-06-30 20:21 ` jason at gcc dot gnu.org
@ 2014-06-30 22:05 ` trippels at gcc dot gnu.org
2014-06-30 23:24 ` pinskia at gcc dot gnu.org
` (25 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-06-30 22:05 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 10162 bytes --]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #9 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Unfortunately llvm still fails to build:
FAILED: /var/tmp/gcc_test/usr/local/bin/g++ -DGTEST_HAS_RTTI=0
-DLLVMCodeGen_EXPORTS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fPIC -fvisibility-inlines-hidden
-Wall -W -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers
-pedantic -Wno-long-long -Wno-maybe-uninitialized -Wnon-virtual-dtor
-Wno-comment -std=c++11 -ffunction-sections -fdata-sections -O2 -DNDEBUG -pipe
-fPIC -Ilib/CodeGen -I/var/tmp/llvm-project/llvm/lib/CodeGen -Iinclude
-I/var/tmp/llvm-project/llvm/include -fno-exceptions -fno-rtti -MMD -MT
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunctionAnalysis.cpp.o -MF
"lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunctionAnalysis.cpp.o.d" -o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunctionAnalysis.cpp.o -c
/var/tmp/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp
In file included from
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/memory:81:0,
from
/var/tmp/llvm-project/llvm/include/llvm/ADT/SmallVector.h:28,
from
/var/tmp/llvm-project/llvm/include/llvm/Support/Allocator.h:24,
from
/var/tmp/llvm-project/llvm/include/llvm/ADT/StringMap.h:18,
from
/var/tmp/llvm-project/llvm/include/llvm/PassRegistry.h:23,
from /var/tmp/llvm-project/llvm/include/llvm/PassSupport.h:27,
from /var/tmp/llvm-project/llvm/include/llvm/Pass.h:377,
from
/var/tmp/llvm-project/llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h:17,
from
/var/tmp/llvm-project/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp:14:
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/unique_ptr.h: In
instantiation of âvoid std::default_delete<_Tp>::operator()(_Tp*) const [with
_Tp = llvm::GCStrategy]â:
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/unique_ptr.h:236:16:
required from âstd::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp =
llvm::GCStrategy; _Dp = std::default_delete<llvm::GCStrategy>]â
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/stl_construct.h:93:7:
required from âvoid std::_Destroy(_Tp*) [with _Tp =
std::unique_ptr<llvm::GCStrategy>]â
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/stl_construct.h:103:46:
required from âstatic void std::_Destroy_aux<<anonymous>
>::__destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator =
std::unique_ptr<llvm::GCStrategy>*; bool <anonymous> = false]â
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/stl_construct.h:127:27:
required from âvoid std::_Destroy(_ForwardIterator, _ForwardIterator) [with
_ForwardIterator = std::unique_ptr<llvm::GCStrategy>*]â
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/stl_construct.h:151:31:
required from âvoid std::_Destroy(_ForwardIterator, _ForwardIterator,
std::allocator<_T2>&) [with _ForwardIterator =
std::unique_ptr<llvm::GCStrategy>*; _Tp = std::unique_ptr<llvm::GCStrategy>]â
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/stl_vector.h:425:30:
required from âstd::vector<_Tp, _Alloc>::~vector() [with _Tp =
std::unique_ptr<llvm::GCStrategy>; _Alloc =
std::allocator<std::unique_ptr<llvm::GCStrategy> >]â
/var/tmp/llvm-project/llvm/include/llvm/CodeGen/GCMetadata.h:166:9: required
from here
/var/tmp/gcc_test/usr/local/include/c++/4.10.0/bits/unique_ptr.h:74:22: error:
invalid application of âsizeofâ to incomplete type âllvm::GCStrategyâ
static_assert(sizeof(_Tp)>0,
^
markus@x4 llvm_build % cat MachineFunctionAnalysis.ii
[25/7733]
template <typename _Tp> _Tp *__addressof (_Tp &);
template <typename _Tp> struct integral_constant
{
static constexpr _Tp value = 0;
};
template <typename...> struct __and_;
template <typename _B1> struct __and_<_B1> : _B1
{
};
template <typename> struct G : integral_constant<int>
{
};
template <int> struct H
{
typedef int type;
};
template <typename... _Cond>
using _Require = typename H<__and_<_Cond...>::value>::type;
template <typename> class unique_ptr;
class new_allocator
{
};
template <typename> using __allocator_base = new_allocator;
template <typename> class allocator : __allocator_base<unique_ptr<int> >
{
};
class ModulePass
{
public:
virtual ~ModulePass ();
};
template <typename _Alloc> struct allocator_traits
{
static unique_ptr<int> *_S_pointer_helper (...);
typedef decltype(_S_pointer_helper ()) __pointer;
typedef __pointer pointer;
struct B
{
template <typename> static integral_constant<int> __test (...);
using type = decltype(__test<_Alloc>);
};
template <typename> using __has_destroy = typename B::type;
template <typename _Tp>
static _Require<G<__has_destroy<_Tp> > >
_S_destroy (allocator<unique_ptr<int> > &, _Tp *p2)
{
p2->~_Tp ();
}
template <class _Tp>
static void destroy (allocator<unique_ptr<int> > &p1, _Tp *p2)
{
_S_destroy (p1, p2);
}
};
template <typename>
struct __alloc_traits : allocator_traits<allocator<unique_ptr<int> > >
{
};
template <typename _ForwardIterator, typename _Allocator>
void _Destroy (_ForwardIterator p1, _ForwardIterator, _Allocator &p3)
{
__alloc_traits<_Allocator>::destroy (p3, __addressof (*p1));
}
template <typename> struct _Vector_base
{
typedef allocator<unique_ptr<int> > _Tp_alloc_type;
typedef __alloc_traits<_Tp_alloc_type>::pointer pointer;
struct D
{
pointer _M_start;
pointer _M_finish;
};
_Tp_alloc_type &_M_get_Tp_allocator ();
D _M_impl;
};
template <typename> class vector : _Vector_base<allocator<unique_ptr<int> > >
{
public:
~vector ()
{
std:
_Destroy (this->_M_impl._M_start, this->_M_impl._M_finish,
_M_get_Tp_allocator ());
}
};
template <typename _Tp> struct F
{
void operator()(_Tp *) { sizeof(_Tp); }
};
class A;
template <typename> class unique_ptr
{
class C
{
template <typename> static A *__test (...);
typedef F<int> _Del;
public:
typedef decltype(__test<_Del>()) type;
};
public:
typename C::type pointer;
~unique_ptr () { get_deleter ()(0); }
F<A> &get_deleter ();
};
class I : ModulePass
{
vector<unique_ptr<int> > StrategyList;
};
markus@x4 llvm_build % g++ -c -std=c++11 -O2 MachineFunctionAnalysis.ii
MachineFunctionAnalysis.ii: In instantiation of âvoid F<_Tp>::operator()(_Tp*)
[with _Tp = A]â:
MachineFunctionAnalysis.ii:106:33: required from âunique_ptr<
<template-parameter-1-1> >::~unique_ptr() [with <template-parameter-1-1> =
int]â
MachineFunctionAnalysis.ii:47:5: required from âstatic _Require<G<typename
allocator_traits<_Alloc>::B::type> >
allocator_traits<_Alloc>::_S_destroy(allocator<unique_ptr<int> >&, _Tp*) [with
_Tp = unique_ptr<int>; _Alloc = allocator<unique_ptr<int> >;
_Require<G<typename allocator_traits<_Alloc>::B::type> > = int]â
MachineFunctionAnalysis.ii:52:23: required from âstatic void
allocator_traits<_Alloc>::destroy(allocator<unique_ptr<int> >&, _Tp*) [with _Tp
= unique_ptr<int>; _Alloc = allocator<unique_ptr<int> >]â
MachineFunctionAnalysis.ii:63:61: required from âvoid
_Destroy(_ForwardIterator, _ForwardIterator, _Allocator&) [with
_ForwardIterator = unique_ptr<int>*; _Allocator = allocator<unique_ptr<int> >]â
MachineFunctionAnalysis.ii:85:37: required from âvector<
<template-parameter-1-1> >::~vector() [with <template-parameter-1-1> =
unique_ptr<int>]â
MachineFunctionAnalysis.ii:110:7: required from here
MachineFunctionAnalysis.ii:90:34: error: invalid application of âsizeofâ to
incomplete type âAâ
void operator()(_Tp *) { sizeof(_Tp); }
>From gcc-bugs-return-455404-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Jun 30 22:07:46 2014
Return-Path: <gcc-bugs-return-455404-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 9958 invoked by alias); 30 Jun 2014 22:07:45 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 9631 invoked by uid 48); 30 Jun 2014 22:07:34 -0000
From: "trippels at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
Date: Mon, 30 Jun 2014 22:07:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: ipa
X-Bugzilla-Version: 4.10.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: trippels at gcc dot gnu.org
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: jason at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.1
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: attachments.created
Message-ID: <bug-61659-4-gWby4TGmMc@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-61659-4@http.gcc.gnu.org/bugzilla/>
References: <bug-61659-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-06/txt/msg02486.txt.bz2
Content-length: 233
https://gcc.gnu.org/bugzilla/show_bug.cgi?ida659
--- Comment #10 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Created attachment 33036
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id3036&actioníit
testcase
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (9 preceding siblings ...)
2014-06-30 22:05 ` trippels at gcc dot gnu.org
@ 2014-06-30 23:24 ` pinskia at gcc dot gnu.org
2014-07-01 5:59 ` trippels at gcc dot gnu.org
` (24 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-06-30 23:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Markus Trippelsdorf from comment #10)
> Created attachment 33036 [details]
> testcase
I think this is a correct error message. See
https://gcc.gnu.org/gcc-4.9/porting_to.html at the end.
GCC now checks return types more strictly and will reject declarations of
functions which return abstract types, including in uninstantiated templates
and in typedefs to function pointers. Returning an abstract type is not
possible so the code must be fixed.
Also see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60775#c4:
14.7.1 [temp.inst] p1:
"The implicit instantiation of a class template specialization causes the
implicit
instantiation of the declarations, but not of the definitions, default
arguments, or exception-specifications of the class member functions, member
classes, scoped member enumerations, static data members and member templates;"
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (10 preceding siblings ...)
2014-06-30 23:24 ` pinskia at gcc dot gnu.org
@ 2014-07-01 5:59 ` trippels at gcc dot gnu.org
2014-07-01 7:20 ` trippels at gcc dot gnu.org
` (23 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-07-01 5:59 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #12 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Well, if I revert Jason's patch it compiles just fine.
gcc-4.9 is also fine. And -fno-devirtualize, too.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (11 preceding siblings ...)
2014-07-01 5:59 ` trippels at gcc dot gnu.org
@ 2014-07-01 7:20 ` trippels at gcc dot gnu.org
2014-07-01 8:55 ` jason at gcc dot gnu.org
` (22 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-07-01 7:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #13 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Adding "#include "llvm/CodeGen/GCStrategy.h" to
llvm/lib/CodeGen/MachineFunctionAnalysis.cpp fixes the issue.
Can you take care of this Rafael?
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (12 preceding siblings ...)
2014-07-01 7:20 ` trippels at gcc dot gnu.org
@ 2014-07-01 8:55 ` jason at gcc dot gnu.org
2014-07-01 12:58 ` rafael.espindola at gmail dot com
` (21 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-01 8:55 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #14 from Jason Merrill <jason at gcc dot gnu.org> ---
Right. My patch causes us to synthesize ~I so that it's available for
devirtualization, which we weren't doing before. This is allowed by the C++
standard: 3.2p3 says "A virtual member function is odr-used if it is not pure."
so the compiler is free to instantiate/synthesize any virtual function.
Avoiding this while still getting the devirtualization benefit would require
some mechanism for devirtualization to call back into the front end to trigger
the instantiation/synthesis directly. This might be workable for an individual
translation unit, but not for LTO.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (13 preceding siblings ...)
2014-07-01 8:55 ` jason at gcc dot gnu.org
@ 2014-07-01 12:58 ` rafael.espindola at gmail dot com
2014-07-10 19:30 ` jason at gcc dot gnu.org
` (20 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: rafael.espindola at gmail dot com @ 2014-07-01 12:58 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #15 from Rafael Avila de Espindola <rafael.espindola at gmail dot com> ---
(In reply to Jason Merrill from comment #14)
> Right. My patch causes us to synthesize ~I so that it's available for
> devirtualization, which we weren't doing before. This is allowed by the C++
> standard: 3.2p3 says "A virtual member function is odr-used if it is not
> pure." so the compiler is free to instantiate/synthesize any virtual
> function.
>
> Avoiding this while still getting the devirtualization benefit would require
> some mechanism for devirtualization to call back into the front end to
> trigger the instantiation/synthesis directly. This might be workable for an
> individual translation unit, but not for LTO.
And make which c++ errors user see dependent on which optimizations they run,
which is not very friendly. I agree your approach is better.
Markus Trippelsdorf:
The include should go where it is used, so in GCMetadata.h.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (14 preceding siblings ...)
2014-07-01 12:58 ` rafael.espindola at gmail dot com
@ 2014-07-10 19:30 ` jason at gcc dot gnu.org
2014-07-16 13:29 ` jakub at gcc dot gnu.org
` (19 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-10 19:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #16 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Thu Jul 10 19:29:59 2014
New Revision: 212436
URL: https://gcc.gnu.org/viewcvs?rev=212436&root=gcc&view=rev
Log:
PR c++/61659
PR c++/61687
gcc/c-family/
* c.opt (-fuse-all-virtuals): New.
gcc/cp/
* decl2.c (mark_all_virtuals): New variable.
(maybe_emit_vtables): Check it instead of flag_devirtualize.
(cp_write_global_declarations): Set it and give helpful diagnostic
if it introduces errors.
* class.c (finish_struct_1): Check it.
* decl.c (grokdeclarator): Clear virtualp after 'virtual auto' error.
Added:
trunk/gcc/testsuite/g++.dg/template/dtor9a.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/decl2.c
trunk/gcc/testsuite/g++.dg/template/dtor9.C
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (15 preceding siblings ...)
2014-07-10 19:30 ` jason at gcc dot gnu.org
@ 2014-07-16 13:29 ` jakub at gcc dot gnu.org
2014-07-30 17:27 ` jason at gcc dot gnu.org
` (18 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-07-16 13:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.9.1 |4.9.2
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.9.1 has been released.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (17 preceding siblings ...)
2014-07-30 17:27 ` jason at gcc dot gnu.org
@ 2014-07-30 17:27 ` jason at gcc dot gnu.org
2014-07-30 17:28 ` jason at gcc dot gnu.org
` (16 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-30 17:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #18 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Jul 30 17:27:14 2014
New Revision: 213307
URL: https://gcc.gnu.org/viewcvs?rev=213307&root=gcc&view=rev
Log:
PR lto/53808
PR c++/61659
* pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
(check_explicit_specialization): Clear it on specializations.
* decl.c (duplicate_decls, start_decl): Likewise.
(grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
* method.c (implicitly_declare_fn): Set DECL_COMDAT. Determine
linkage after setting the appropriate flags.
* tree.c (decl_linkage): Don't check DECL_COMDAT.
* decl2.c (mark_needed): Mark clones.
(import_export_decl): Not here.
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/cp/decl2.c
trunk/gcc/cp/method.c
trunk/gcc/cp/pt.c
trunk/gcc/cp/tree.c
trunk/gcc/testsuite/g++.dg/opt/devirt4.C
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (16 preceding siblings ...)
2014-07-16 13:29 ` jakub at gcc dot gnu.org
@ 2014-07-30 17:27 ` jason at gcc dot gnu.org
2014-07-30 17:27 ` jason at gcc dot gnu.org
` (17 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-30 17:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Jul 30 17:27:20 2014
New Revision: 213308
URL: https://gcc.gnu.org/viewcvs?rev=213308&root=gcc&view=rev
Log:
PR c++/61659
PR c++/61687
Revert:
gcc/c-family/
* c.opt (-fuse-all-virtuals): New.
gcc/cp/
* decl2.c (mark_all_virtuals): New variable.
(maybe_emit_vtables): Check it instead of flag_devirtualize.
(cp_write_global_declarations): Set it and give helpful diagnostic
if it introduces errors.
* class.c (finish_struct_1): Check it.
Removed:
trunk/gcc/testsuite/g++.dg/template/dtor9a.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/cp/decl2.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/g++.dg/template/dtor9.C
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (18 preceding siblings ...)
2014-07-30 17:27 ` jason at gcc dot gnu.org
@ 2014-07-30 17:28 ` jason at gcc dot gnu.org
2014-07-30 21:30 ` jason at gcc dot gnu.org
` (15 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-30 17:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Jul 30 17:27:20 2014
New Revision: 213308
URL: https://gcc.gnu.org/viewcvs?rev=213308&root=gcc&view=rev
Log:
PR c++/61659
PR c++/61687
Revert:
gcc/c-family/
* c.opt (-fuse-all-virtuals): New.
gcc/cp/
* decl2.c (mark_all_virtuals): New variable.
(maybe_emit_vtables): Check it instead of flag_devirtualize.
(cp_write_global_declarations): Set it and give helpful diagnostic
if it introduces errors.
* class.c (finish_struct_1): Check it.
Removed:
trunk/gcc/testsuite/g++.dg/template/dtor9a.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/cp/decl2.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/g++.dg/template/dtor9.C
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (19 preceding siblings ...)
2014-07-30 17:28 ` jason at gcc dot gnu.org
@ 2014-07-30 21:30 ` jason at gcc dot gnu.org
2014-08-12 6:14 ` amker.cheng at gmail dot com
` (14 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-07-30 21:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #20 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Jul 30 21:29:25 2014
New Revision: 213311
URL: https://gcc.gnu.org/viewcvs?rev=213311&root=gcc&view=rev
Log:
PR lto/53808
PR c++/61659
* pt.c (push_template_decl_real): Don't set DECL_COMDAT on friends.
Added:
trunk/gcc/testsuite/g++.dg/template/friend56.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/pt.c
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/4.10 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (20 preceding siblings ...)
2014-07-30 21:30 ` jason at gcc dot gnu.org
@ 2014-08-12 6:14 ` amker.cheng at gmail dot com
2014-08-19 17:30 ` [Bug ipa/61659] [4.9/5 " jason at gcc dot gnu.org
` (13 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: amker.cheng at gmail dot com @ 2014-08-12 6:14 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
bin.cheng <amker.cheng at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |amker.cheng at gmail dot com
--- Comment #21 from bin.cheng <amker.cheng at gmail dot com> ---
(In reply to Jason Merrill from comment #18)
> Author: jason
> Date: Wed Jul 30 17:27:14 2014
> New Revision: 213307
>
> URL: https://gcc.gnu.org/viewcvs?rev=213307&root=gcc&view=rev
> Log:
> PR lto/53808
> PR c++/61659
> * pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
> (check_explicit_specialization): Clear it on specializations.
> * decl.c (duplicate_decls, start_decl): Likewise.
> (grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
> * method.c (implicitly_declare_fn): Set DECL_COMDAT. Determine
> linkage after setting the appropriate flags.
> * tree.c (decl_linkage): Don't check DECL_COMDAT.
> * decl2.c (mark_needed): Mark clones.
> (import_export_decl): Not here.
>
> Modified:
> trunk/gcc/cp/ChangeLog
> trunk/gcc/cp/decl.c
> trunk/gcc/cp/decl2.c
> trunk/gcc/cp/method.c
> trunk/gcc/cp/pt.c
> trunk/gcc/cp/tree.c
> trunk/gcc/testsuite/g++.dg/opt/devirt4.C
Hi Jason,
After setting DECL_COMDAT, testcase g++.dg/ext/arm-fp16/fp16-mangle-1.C as
below no longer works.
/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-mfp16-format=ieee" } */
/* Test mangling */
/* { dg-final { scan-assembler "\t.global\t_Z1fPDh" } } */
void f (__fp16 *x) { }
/* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */
void g (__fp16 *x, __fp16 *y) { }
/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */
template <typename T, typename U> struct S { static int i; };
template <> int S<__fp16, __fp16>::i = 3;
Since g++ now outputs:
.weak _ZN1SIDhDhE1iE
.section .data._ZN1SIDhDhE1iE,"awG",%progbits,_ZN1SIDhDhE1iE,comdat
.align 2
.type _ZN1SIDhDhE1iE, %object
.size _ZN1SIDhDhE1iE, 4
_ZN1SIDhDhE1iE:
.word 3
.ident "GCC: (GNU) 4.10.0 20140811 (experimental)"
rather than ".global\t_ZN1SIDhDhE1iE".
I assume we should refine the testcase?
Thanks.
>From gcc-bugs-return-458228-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Aug 12 06:43:52 2014
Return-Path: <gcc-bugs-return-458228-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 15648 invoked by alias); 12 Aug 2014 06:43:51 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 15581 invoked by uid 48); 12 Aug 2014 06:43:43 -0000
From: "law at redhat dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/62025] [4.9/4.10 Regression] Miscompilation of openssl sha512.c
Date: Tue, 12 Aug 2014 06:43:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 4.9.1
X-Bugzilla-Keywords: wrong-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: law at redhat dot com
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.2
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-62025-4-MUn98bHDy9@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-62025-4@http.gcc.gnu.org/bugzilla/>
References: <bug-62025-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-08/txt/msg00725.txt.bz2
Content-length: 529
https://gcc.gnu.org/bugzilla/show_bug.cgi?idb025
--- Comment #6 from Jeffrey A. Law <law at redhat dot com> ---
It's late and I need to catch some zzzs. But as I hinted in my prior update, I
think we may chasing something latent. I would recommend looking very closely
at r204497, which my bisecting implicated as the failing commit for a severely
hacked up test.
Reverting r204497 by hand on the trunk results in the original testcase working
properly. I'm too tired to really analyze, but I think it's worth a looksie.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9/5 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (21 preceding siblings ...)
2014-08-12 6:14 ` amker.cheng at gmail dot com
@ 2014-08-19 17:30 ` jason at gcc dot gnu.org
2014-08-27 15:54 ` [Bug ipa/61659] [4.9 " trippels at gcc dot gnu.org
` (12 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-08-19 17:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #22 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Tue Aug 19 17:29:41 2014
New Revision: 214177
URL: https://gcc.gnu.org/viewcvs?rev=214177&root=gcc&view=rev
Log:
PR lto/53808
PR c++/61659
* decl.c (maybe_commonize_var): Don't use DECL_COMDAT to trigger
comdat_linkage.
Added:
trunk/gcc/testsuite/g++.dg/abi/spec1.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (22 preceding siblings ...)
2014-08-19 17:30 ` [Bug ipa/61659] [4.9/5 " jason at gcc dot gnu.org
@ 2014-08-27 15:54 ` trippels at gcc dot gnu.org
2014-09-01 12:49 ` trippels at gcc dot gnu.org
` (11 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-08-27 15:54 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to work| |5.0
Summary|[4.9/5 Regression] Extra |[4.9 Regression] Extra
|undefined symbol because of |undefined symbol because of
|devirtualization |devirtualization
Known to fail|4.10.0 |
--- Comment #23 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
gcc-4.9 branch is still affected. Do you plan a backport, Jason?
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (23 preceding siblings ...)
2014-08-27 15:54 ` [Bug ipa/61659] [4.9 " trippels at gcc dot gnu.org
@ 2014-09-01 12:49 ` trippels at gcc dot gnu.org
2014-09-01 13:03 ` trippels at gcc dot gnu.org
` (10 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-09-01 12:49 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #25 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
(In reply to Jason Merrill from comment #24)
> Created attachment 33407 [details]
> Patch for 4.9
>
> Here's a patch for the 4.9 branch. I'm nervous about applying it because I
> suspect that we haven't yet found all the effects of setting DECL_COMDAT.
I've tested your patch and it causes a qt-5.4 build failure
(also happens on trunk):
markus@x4 WebCore % cat Font.ii
namespace WTF
{
template <typename T> inline void deleteOwnedPtr (T *);
}
namespace WebCore
{
class TextLayout;
}
namespace WTF
{
template <>
void
deleteOwnedPtr (WebCore::TextLayout *)
{
}
}
(Without your patch:)
markus@x4 WebCore % g++ -c -O2 Font.ii
markus@x4 WebCore % nm Font.o
0000000000000000 T _ZN3WTF14deleteOwnedPtrIN7WebCore10TextLayoutEEEvPT_
(with patch applied)
markus@x4 WebCore % g++ -c -O2 Font.ii
markus@x4 WebCore % nm Font.o
markus@x4 WebCore %
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (24 preceding siblings ...)
2014-09-01 12:49 ` trippels at gcc dot gnu.org
@ 2014-09-01 13:03 ` trippels at gcc dot gnu.org
2014-09-01 16:50 ` trippels at gcc dot gnu.org
` (9 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-09-01 13:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #26 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
§14.7.3/12 says:
An explicit specialization of a function template is inline only if it is
declared with the inline specifier or defined as deleted, and independently of
whether its function template is inline.
>From gcc-bugs-return-460298-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Sep 01 13:11:20 2014
Return-Path: <gcc-bugs-return-460298-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 9984 invoked by alias); 1 Sep 2014 13:11:19 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 9898 invoked by uid 48); 1 Sep 2014 13:11:09 -0000
From: "ro at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/62265] [4.8/4.9/5 regression] FAIL: gcc.dg/20111227-2.c scan-rtl-dump ree "Elimination opportunities = 3 realized = 3"
Date: Mon, 01 Sep 2014 13:11:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: rtl-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ro at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.8.4
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cf_gcctarget cc
Message-ID: <bug-62265-4-LeCgISCktD@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-62265-4@http.gcc.gnu.org/bugzilla/>
References: <bug-62265-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-09/txt/msg00132.txt.bz2
Content-length: 591
https://gcc.gnu.org/bugzilla/show_bug.cgi?idb265
Rainer Orth <ro at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|ia64-*-*, m68k-*-*, |ia64-*-*, m68k-*-*,
|s390x-*-*, powerpc64-*-*, |s390x-*-*, powerpc64-*-*,
|avr-*-* |avr-*-*. sparc*-*-*
CC| |ro at gcc dot gnu.org
--- Comment #2 from Rainer Orth <ro at gcc dot gnu.org> ---
Same on SPARC.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (25 preceding siblings ...)
2014-09-01 13:03 ` trippels at gcc dot gnu.org
@ 2014-09-01 16:50 ` trippels at gcc dot gnu.org
2014-09-02 15:48 ` jason at gcc dot gnu.org
` (8 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-09-01 16:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #27 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Possible fix:
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index d03f8a4707e5..d8fb35e21237 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -2215,7 +2215,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool
newdecl_is_friend)
olddecl);
SET_DECL_TEMPLATE_SPECIALIZATION (olddecl);
- DECL_COMDAT (newdecl) = DECL_DECLARED_INLINE_P (olddecl);
+ DECL_COMDAT (newdecl) = DECL_DECLARED_INLINE_P (newdecl);
/* Don't propagate visibility from the template to the
specialization here. We'll do that in determine_visibility if
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (26 preceding siblings ...)
2014-09-01 16:50 ` trippels at gcc dot gnu.org
@ 2014-09-02 15:48 ` jason at gcc dot gnu.org
2014-09-04 7:26 ` trippels at gcc dot gnu.org
` (7 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-09-02 15:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #28 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Markus Trippelsdorf from comment #27)
> Possible fix:
Applied to trunk, thanks.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (27 preceding siblings ...)
2014-09-02 15:48 ` jason at gcc dot gnu.org
@ 2014-09-04 7:26 ` trippels at gcc dot gnu.org
2014-09-04 12:37 ` jason at gcc dot gnu.org
` (6 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-09-04 7:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #29 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
(In reply to Jason Merrill from comment #28)
> (In reply to Markus Trippelsdorf from comment #27)
> > Possible fix:
>
> Applied to trunk, thanks.
The fix isn't in trunk yet. Forgot to push?
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (28 preceding siblings ...)
2014-09-04 7:26 ` trippels at gcc dot gnu.org
@ 2014-09-04 12:37 ` jason at gcc dot gnu.org
2014-09-04 12:39 ` jason at gcc dot gnu.org
` (5 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-09-04 12:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #30 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Thu Sep 4 12:37:05 2014
New Revision: 214900
URL: https://gcc.gnu.org/viewcvs?rev=214900&root=gcc&view=rev
Log:
PR ipa/61659
* decl.c (duplicate_decls): Check DECL_DECLARED_INLINE_P on
newdecl, not olddecl.
Added:
trunk/gcc/testsuite/g++.dg/template/spec38.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (29 preceding siblings ...)
2014-09-04 12:37 ` jason at gcc dot gnu.org
@ 2014-09-04 12:39 ` jason at gcc dot gnu.org
2014-09-05 2:13 ` danglin at gcc dot gnu.org
` (4 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-09-04 12:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|jason at redhat dot com |
--- Comment #31 from Jason Merrill <jason at gcc dot gnu.org> ---
Apparently so. Really applied now. :)
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (30 preceding siblings ...)
2014-09-04 12:39 ` jason at gcc dot gnu.org
@ 2014-09-05 2:13 ` danglin at gcc dot gnu.org
2014-09-09 15:26 ` danglin at gcc dot gnu.org
` (3 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: danglin at gcc dot gnu.org @ 2014-09-05 2:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
John David Anglin <danglin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |danglin at gcc dot gnu.org
--- Comment #32 from John David Anglin <danglin at gcc dot gnu.org> ---
At r214748, GCC build fails on hppa1.1-hp-hpux10.20:
/xxx/gnu/gcc/objdir/./prev-gcc/xg++ -B/xxx/gnu/gcc/objdir/./prev-gcc/
-B/opt/gnu/gcc/gcc-5.0/hppa1.1-hp-hpux10.20/bin/ -nostdinc++
-B/xxx/gnu/gcc/objdir/prev-hp
pa1.1-hp-hpux10.20/libstdc++-v3/src/.libs
-B/xxx/gnu/gcc/objdir/prev-hppa1.1-hp-hpux10.20/libstdc++-v3/libsupc++/.libs
-isystem /xxx/gnu/gcc/objdir/prev-hppa1.
1-hp-hpux10.20/libstdc++-v3/include/hppa1.1-hp-hpux10.20 -isystem
/xxx/gnu/gcc/objdir/prev-hppa1.1-hp-hpux10.20/libstdc++-v3/include -isystem
/xxx/gnu/gcc/gcc
/libstdc++-v3/libsupc++
-L/xxx/gnu/gcc/objdir/prev-hppa1.1-hp-hpux10.20/libstdc++-v3/src/.libs
-L/xxx/gnu/gcc/objdir/prev-hppa1.1-hp-hpux10.20/libstdc++-v3/libs
upc++/.libs -g -O2 -DIN_GCC -fno-exceptions -fno-rtti
-fasynchronous-unwind
-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual
-Wmissing-format-att
ribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-o
verlength-strings -Werror -fno-common -DHAVE_CONFIG_H -static-libstdc++
-static
-libgcc -o cc1 c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o
c/c-decl.
o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o
c/c-a
rray-notation.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o
c-
family/c-format.o c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o
c-fami
ly/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o
c-family/
c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o
c-family/c-cilkplu
s.o c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o
default-c.o \
cc1-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a
libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a
../libcpp/libcpp.a ../libbacktrace/.libs/libbacktrace.a
../libiberty/libiberty.a ../libdecnumber/libdecnumber.a
-L/opt/gnu/gcc/gmp/lib -lmpc -lmpfr -lgmp -L../zlib -lz
/usr/ccs/bin/ld: Duplicate symbol "sd_iterator_start(rtx_def*, int)::null_link"
in files libbackend.a(sched-rgn.o) and libbackend.a(ddg.o)
/usr/ccs/bin/ld: Duplicate symbol "sd_iterator_start(rtx_def*, int)::null_link"
in files libbackend.a(sched-rgn.o) and libbackend.a(haifa-sched.o)
/usr/ccs/bin/ld: Duplicate symbol "sd_iterator_start(rtx_def*, int)::null_link"
in files libbackend.a(sched-rgn.o) and libbackend.a(sched-deps.o)
/usr/ccs/bin/ld: Duplicate symbol "sd_iterator_start(rtx_def*, int)::null_link"
in files libbackend.a(sched-rgn.o) and libbackend.a(sched-ebb.o)
/usr/ccs/bin/ld: Found 4 duplicate symbol(s)
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (31 preceding siblings ...)
2014-09-05 2:13 ` danglin at gcc dot gnu.org
@ 2014-09-09 15:26 ` danglin at gcc dot gnu.org
2014-09-10 14:28 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
35 siblings, 0 replies; 37+ messages in thread
From: danglin at gcc dot gnu.org @ 2014-09-09 15:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #33 from John David Anglin <danglin at gcc dot gnu.org> ---
The issue in comment 32 was introduced in revision 214177
.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (32 preceding siblings ...)
2014-09-09 15:26 ` danglin at gcc dot gnu.org
@ 2014-09-10 14:28 ` jason at gcc dot gnu.org
2014-09-10 15:43 ` trippels at gcc dot gnu.org
2014-09-10 17:29 ` jason at gcc dot gnu.org
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-09-10 14:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #34 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Sep 10 14:27:40 2014
New Revision: 215131
URL: https://gcc.gnu.org/viewcvs?rev=215131&root=gcc&view=rev
Log:
PR lto/53808
PR c++/61659
* decl2.c (note_comdat_fn): New.
(set_comdat): New.
(cp_write_global_declarations): Call set_comdat.
* method.c (implicitly_declare_fn): Call note_comdat_fn.
* pt.c (tsubst_decl) [FUNCTION_DECL]: Likewise.
* decl2.c (mark_needed): Mark clones.
(import_export_decl): Not here.
Added:
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/abi/no-weak1.C
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/abi/spec1.C
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/opt/devirt5.C
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/template/friend56.C
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/template/spec38.C
Modified:
branches/gcc-4_9-branch/gcc/cp/ChangeLog
branches/gcc-4_9-branch/gcc/cp/cp-tree.h
branches/gcc-4_9-branch/gcc/cp/decl2.c
branches/gcc-4_9-branch/gcc/cp/method.c
branches/gcc-4_9-branch/gcc/cp/pt.c
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/opt/devirt4.C
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (33 preceding siblings ...)
2014-09-10 14:28 ` jason at gcc dot gnu.org
@ 2014-09-10 15:43 ` trippels at gcc dot gnu.org
2014-09-10 17:29 ` jason at gcc dot gnu.org
35 siblings, 0 replies; 37+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-09-10 15:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #35 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [Bug ipa/61659] [4.9 Regression] Extra undefined symbol because of devirtualization
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
` (34 preceding siblings ...)
2014-09-10 15:43 ` trippels at gcc dot gnu.org
@ 2014-09-10 17:29 ` jason at gcc dot gnu.org
35 siblings, 0 replies; 37+ messages in thread
From: jason at gcc dot gnu.org @ 2014-09-10 17:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61659
--- Comment #36 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Sep 10 17:28:59 2014
New Revision: 215134
URL: https://gcc.gnu.org/viewcvs?rev=215134&root=gcc&view=rev
Log:
PR c++/61659
* decl.c (grokfndecl): Don't set DECL_COMDAT on static inlines.
(duplicate_decls, start_decl): Likewise.
* pt.c (check_explicit_specialization): Likewise.
(push_template_decl_real): Or static templates.
Added:
trunk/gcc/testsuite/g++.dg/abi/no-weak1.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/cp/pt.c
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2014-09-10 17:29 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-30 15:01 [Bug c++/61659] New: Extra undefined symbol because of devirtualization rafael.espindola at gmail dot com
2014-06-30 15:06 ` [Bug c++/61659] " rafael.espindola at gmail dot com
2014-06-30 15:15 ` pinskia at gcc dot gnu.org
2014-06-30 15:20 ` pinskia at gcc dot gnu.org
2014-06-30 15:22 ` [Bug ipa/61659] [4.9/4.10 Regression] " trippels at gcc dot gnu.org
2014-06-30 15:26 ` rafael.espindola at gmail dot com
2014-06-30 16:20 ` jakub at gcc dot gnu.org
2014-06-30 16:42 ` hubicka at gcc dot gnu.org
2014-06-30 17:15 ` hubicka at gcc dot gnu.org
2014-06-30 20:21 ` jason at gcc dot gnu.org
2014-06-30 22:05 ` trippels at gcc dot gnu.org
2014-06-30 23:24 ` pinskia at gcc dot gnu.org
2014-07-01 5:59 ` trippels at gcc dot gnu.org
2014-07-01 7:20 ` trippels at gcc dot gnu.org
2014-07-01 8:55 ` jason at gcc dot gnu.org
2014-07-01 12:58 ` rafael.espindola at gmail dot com
2014-07-10 19:30 ` jason at gcc dot gnu.org
2014-07-16 13:29 ` jakub at gcc dot gnu.org
2014-07-30 17:27 ` jason at gcc dot gnu.org
2014-07-30 17:27 ` jason at gcc dot gnu.org
2014-07-30 17:28 ` jason at gcc dot gnu.org
2014-07-30 21:30 ` jason at gcc dot gnu.org
2014-08-12 6:14 ` amker.cheng at gmail dot com
2014-08-19 17:30 ` [Bug ipa/61659] [4.9/5 " jason at gcc dot gnu.org
2014-08-27 15:54 ` [Bug ipa/61659] [4.9 " trippels at gcc dot gnu.org
2014-09-01 12:49 ` trippels at gcc dot gnu.org
2014-09-01 13:03 ` trippels at gcc dot gnu.org
2014-09-01 16:50 ` trippels at gcc dot gnu.org
2014-09-02 15:48 ` jason at gcc dot gnu.org
2014-09-04 7:26 ` trippels at gcc dot gnu.org
2014-09-04 12:37 ` jason at gcc dot gnu.org
2014-09-04 12:39 ` jason at gcc dot gnu.org
2014-09-05 2:13 ` danglin at gcc dot gnu.org
2014-09-09 15:26 ` danglin at gcc dot gnu.org
2014-09-10 14:28 ` jason at gcc dot gnu.org
2014-09-10 15:43 ` trippels at gcc dot gnu.org
2014-09-10 17:29 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).