diff options
author | Manuel López-Ibáñez <manu@gcc.gnu.org> | 2012-03-15 09:57:29 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2012-03-15 09:57:29 +0000 |
commit | a12bf402815d0aa90dd32eb3a279281ca3a1dffd (patch) | |
tree | 70731acae4b8c0682512aff60d80deeae2d69531 | |
parent | 1f163ef7ac70375b21ab891ec543a2bca7205dda (diff) | |
download | gcc-a12bf402815d0aa90dd32eb3a279281ca3a1dffd.zip gcc-a12bf402815d0aa90dd32eb3a279281ca3a1dffd.tar.gz gcc-a12bf402815d0aa90dd32eb3a279281ca3a1dffd.tar.bz2 |
re PR c++/44783 (implement -ftemplate-backtrace-limit=)
/c-family
2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/44783
* c.opt (ftemplate-backtrace-limit) Add.
/cp
2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/44783
* error.c (print_instantiation_partial_context): Use
template_backtrace_limit.
/doc
2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/44783
* doc/invoke.texi [C++ Language Options]: Document
-ftemplate-backtrace-limit.
From-SVN: r185424
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c.opt | 4 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/cp/error.c | 24 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 8 |
6 files changed, 49 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fff00bd..fcd2c2e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/44783 + * doc/invoke.texi [C++ Language Options]: Document + -ftemplate-backtrace-limit. + 2012-03-15 Tristan Gingold <gingold@adacore.com> * c-parser.c (c_parser_parameter_declaration): Handle #pragma diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b5085cd..274eacd 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/44783 + * c.opt (ftemplate-backtrace-limit) Add. + 2012-03-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * c-cppbuiltin.c (c_cpp_builtins): Remove #pragma extern_prefix diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 40ff96c..a14514a 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1035,6 +1035,10 @@ ftabstop= C ObjC C++ ObjC++ Joined RejectNegative UInteger -ftabstop=<number> Distance between tab stops for column reporting +ftemplate-backtrace-limit= +C++ ObjC++ Joined RejectNegative UInteger Var(template_backtrace_limit) Init(10) +Set the maximum number of template instantiation notes for a single warning or error + ftemplate-depth- C++ ObjC++ Joined RejectNegative Undocumented Alias(ftemplate-depth=) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4c99dec..f4f46fe 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org> + + PR c++/44783 + * error.c (print_instantiation_partial_context): Use + template_backtrace_limit. + 2012-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * Make-lang.in (doc/g++.1): Remove IRIX 6.5 reference. @@ -13,10 +19,10 @@ PR c++/51641 * cp-tree.h (template_type_parameter_p): Declare new function. - (parameter_of_template_p): Remove - * pt.c (template_type_parameter_p): Define new function. (parameter_of_template_p): Remove. - * name-lookup.c (binding_to_template_parms_of_scope_p): Don't rely + * pt.c (template_type_parameter_p): Define new function. + (parameter_of_template_p): Remove. + * name-lookup.c (binding_to_template_parms_of_scope_p): Don't rely on parameter_of_template_p anymore. Compare the level of the template parameter to the depth of the template. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 4ec263b..ee8f0e0 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -3076,10 +3076,20 @@ print_instantiation_partial_context (diagnostic_context *context, t = t0; - if (n_total >= 12) + if (template_backtrace_limit + && n_total > template_backtrace_limit) { - int skip = n_total - 10; - for (n = 0; n < 5; n++) + int skip = n_total - template_backtrace_limit; + int head = template_backtrace_limit / 2; + + /* Avoid skipping just 1. If so, skip 2. */ + if (skip == 1) + { + skip = 2; + head = (template_backtrace_limit - 1) / 2; + } + + for (n = 0; n < head; n++) { gcc_assert (t != NULL); if (loc != t->locus) @@ -3088,17 +3098,19 @@ print_instantiation_partial_context (diagnostic_context *context, loc = t->locus; t = t->next; } - if (t != NULL && skip > 1) + if (t != NULL && skip > 0) { expanded_location xloc; xloc = expand_location (loc); if (context->show_column) pp_verbatim (context->printer, - _("%s:%d:%d: [ skipping %d instantiation contexts ]\n"), + _("%s:%d:%d: [ skipping %d instantiation contexts, " + "use -ftemplate-backtrace-limit=0 to disable ]\n"), xloc.file, xloc.line, xloc.column, skip); else pp_verbatim (context->printer, - _("%s:%d: [ skipping %d instantiation contexts ]\n"), + _("%s:%d: [ skipping %d instantiation contexts, " + "use -ftemplate-backtrace-limit=0 to disable ]\n"), xloc.file, xloc.line, skip); do { diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index cf23ced..8571a8b 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -192,7 +192,8 @@ in the following sections. -fno-nonansi-builtins -fnothrow-opt -fno-operator-names @gol -fno-optional-diags -fpermissive @gol -fno-pretty-templates @gol --frepo -fno-rtti -fstats -ftemplate-depth=@var{n} @gol +-frepo -fno-rtti -fstats -ftemplate-backtrace-limit=@var{n} @gol +-ftemplate-depth=@var{n} @gol -fno-threadsafe-statics -fuse-cxa-atexit -fno-weak -nostdinc++ @gol -fno-default-inline -fvisibility-inlines-hidden @gol -fvisibility-ms-compat @gol @@ -2124,6 +2125,11 @@ represented in the minimum number of bits needed to represent all the enumerators). This assumption may not be valid if the program uses a cast to convert an arbitrary integer value to the enumerated type. +@item -ftemplate-backtrace-limit=@var{n} +@opindex ftemplate-backtrace-limit +Set the maximum number of template instantiation notes for a single +warning or error to @var{n}. The default value is 10. + @item -ftemplate-depth=@var{n} @opindex ftemplate-depth Set the maximum instantiation depth for template classes to @var{n}. |