Propagate the source location of a template's function_decl to the template_decl built out of it.
Propagate the source location of a template's function_decl to the template_decl built out of it. Without this, specializations generated before the template was defined get the location of the closing ')' instead of the location of the template's name, which can produce inconsistent locations between translation units, which makes gold's ODR checker unhappy. * gcc/cp/pt.c (build_template_decl): Copy the function_decl's source location to the new template_decl. * gcc/testsuite/g++.old-deja/g++.pt/crash60.C: Updated. * libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated. From-SVN: r176845
This commit is contained in:
parent
f22cfb2e4e
commit
ce77c22f1b
@ -1,3 +1,8 @@
|
||||
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
|
||||
|
||||
* pt.c (build_template_decl): Copy the function_decl's
|
||||
source location to the new template_decl.
|
||||
|
||||
2011-07-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/49776
|
||||
|
@ -4121,6 +4121,7 @@ build_template_decl (tree decl, tree parms, bool member_template_p)
|
||||
tree tmpl = build_lang_decl (TEMPLATE_DECL, DECL_NAME (decl), NULL_TREE);
|
||||
DECL_TEMPLATE_PARMS (tmpl) = parms;
|
||||
DECL_CONTEXT (tmpl) = DECL_CONTEXT (decl);
|
||||
DECL_SOURCE_LOCATION (tmpl) = DECL_SOURCE_LOCATION (decl);
|
||||
DECL_MEMBER_TEMPLATE_P (tmpl) = member_template_p;
|
||||
|
||||
return tmpl;
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
|
||||
|
||||
* g++.old-deja/g++.pt/crash60.C: Updated.
|
||||
|
||||
2011-07-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/49866
|
||||
|
@ -5,9 +5,9 @@
|
||||
// We ICE'd rather than fail to instantiate.
|
||||
|
||||
template< typename SID, class SDR >
|
||||
void k( SID sid, SDR* p,
|
||||
void k( SID sid, SDR* p, // { dg-error "no type named 'T'" }
|
||||
void (SDR::*)
|
||||
( typename SID::T ) ); // { dg-error "no type named 'T'" }
|
||||
( typename SID::T ) );
|
||||
|
||||
struct E { };
|
||||
struct S { void f( int ); };
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
|
||||
|
||||
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated.
|
||||
|
||||
2011-07-25 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/std/array (at): Remove constexpr when -fno-exceptions.
|
||||
|
@ -44,16 +44,16 @@ main()
|
||||
|
||||
// { dg-warning "note" "" { target *-*-* } 370 }
|
||||
// { dg-warning "note" "" { target *-*-* } 365 }
|
||||
// { dg-warning "note" "" { target *-*-* } 357 }
|
||||
// { dg-warning "note" "" { target *-*-* } 356 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1103 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1098 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1090 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1089 }
|
||||
// { dg-warning "note" "" { target *-*-* } 485 }
|
||||
// { dg-warning "note" "" { target *-*-* } 479 }
|
||||
// { dg-warning "note" "" { target *-*-* } 469 }
|
||||
// { dg-warning "note" "" { target *-*-* } 814 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1056 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1050 }
|
||||
// { dg-warning "note" "" { target *-*-* } 342 }
|
||||
// { dg-warning "note" "" { target *-*-* } 292 }
|
||||
// { dg-warning "note" "" { target *-*-* } 468 }
|
||||
// { dg-warning "note" "" { target *-*-* } 813 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1055 }
|
||||
// { dg-warning "note" "" { target *-*-* } 1049 }
|
||||
// { dg-warning "note" "" { target *-*-* } 341 }
|
||||
// { dg-warning "note" "" { target *-*-* } 291 }
|
||||
// { dg-warning "note" "" { target *-*-* } 224 }
|
||||
|
Loading…
x
Reference in New Issue
Block a user