From f5b02f1ec1a25063efed41329cee69a6c530b0ed Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 11 Oct 2012 10:29:54 +0000 Subject: [PATCH] c-ada-spec.c (dump_ada_template): Bail out for template declarations declaring something coming from another file. * c-ada-spec.c (dump_ada_template): Bail out for template declarations declaring something coming from another file. From-SVN: r192353 --- gcc/c-family/ChangeLog | 7 ++++++- gcc/c-family/c-ada-spec.c | 10 +++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 9a438f038f0..04b6971fef7 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,6 +1,11 @@ +2012-10-11 Eric Botcazou + + * c-ada-spec.c (dump_ada_template): Bail out for template declarations + declaring something coming from another file. + 2012-10-10 Arnaud Charlet -PR ada/54845 + PR ada/54845 * c-ada-spec.c (print_ada_struct_decl): Increase buf size. 2012-10-09 Paolo Carlini diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index 36a86e5abd5..631ee7a5843 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -1700,10 +1700,18 @@ static int dump_ada_template (pretty_printer *buffer, tree t, int (*cpp_check)(tree, cpp_operation), int spc) { - tree inst = DECL_VINDEX (t); /* DECL_VINDEX is DECL_TEMPLATE_INSTANTIATIONS in this context. */ + tree inst = DECL_VINDEX (t); + /* DECL_RESULT_FLD is DECL_TEMPLATE_RESULT in this context. */ + tree result = DECL_RESULT_FLD (t); int num_inst = 0; + /* Don't look at template declarations declaring something coming from + another file. This can occur for template friend declarations. */ + if (LOCATION_FILE (decl_sloc (result, false)) + != LOCATION_FILE (decl_sloc (t, false))) + return 0; + while (inst && inst != error_mark_node) { tree types = TREE_PURPOSE (inst); -- 2.30.2