re PR c++/37006 (explicitly deleted inline function gives warning "used but never defined")
PR c++/37006 * pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted instantiations. From-SVN: r138648
This commit is contained in:
parent
7eeef08ed8
commit
9b26c96e33
|
@ -1,3 +1,9 @@
|
||||||
|
2008-08-04 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
PR c++/37006
|
||||||
|
* pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted
|
||||||
|
instantiations.
|
||||||
|
|
||||||
2008-08-04 Simon Baldwin <simonb@google.com>
|
2008-08-04 Simon Baldwin <simonb@google.com>
|
||||||
|
|
||||||
PR c++/36999
|
PR c++/36999
|
||||||
|
|
|
@ -8143,7 +8143,9 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
|
||||||
/* Clear out the mangled name and RTL for the instantiation. */
|
/* Clear out the mangled name and RTL for the instantiation. */
|
||||||
SET_DECL_ASSEMBLER_NAME (r, NULL_TREE);
|
SET_DECL_ASSEMBLER_NAME (r, NULL_TREE);
|
||||||
SET_DECL_RTL (r, NULL_RTX);
|
SET_DECL_RTL (r, NULL_RTX);
|
||||||
DECL_INITIAL (r) = NULL_TREE;
|
/* Leave DECL_INITIAL set on deleted instantiations. */
|
||||||
|
if (!DECL_DELETED_FN (r))
|
||||||
|
DECL_INITIAL (r) = NULL_TREE;
|
||||||
DECL_CONTEXT (r) = ctx;
|
DECL_CONTEXT (r) = ctx;
|
||||||
|
|
||||||
if (member && DECL_CONV_FN_P (r))
|
if (member && DECL_CONV_FN_P (r))
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
// PR c++/37006
|
||||||
|
// { dg-options "-std=c++0x" }
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
struct A {
|
||||||
|
template<class U>
|
||||||
|
bool operator==(const A<U>&) = delete; // { dg-error "deleted function" }
|
||||||
|
operator bool () { return true; }
|
||||||
|
};
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
A<int> a1;
|
||||||
|
A<void> a2;
|
||||||
|
if(a1 == a2) {} // { dg-error "used here" }
|
||||||
|
}
|
Loading…
Reference in New Issue