re PR preprocessor/90581 (provide an option to adjust the maximum depth of nested #include)
PR preprocessor/90581 Add a cpp option -fmax-include-depth to set the maximum depth of the nested #include. From-SVN: r272948
This commit is contained in:
parent
709877bf76
commit
1c6ffbab63
|
@ -1,3 +1,9 @@
|
||||||
|
2019-07-02 qing zhao <qing.zhao@oracle.com>
|
||||||
|
|
||||||
|
PR preprocessor/90581
|
||||||
|
* doc/cppopts.texi: Add document for -fmax-include-depth.
|
||||||
|
* doc/invoke.texi (Preprocessor Options): List -fmax-include-depth.
|
||||||
|
|
||||||
2019-07-02 Uroš Bizjak <ubizjak@gmail.com>
|
2019-07-02 Uroš Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* config/i386/mmx.md (mmx_pack<s_trunsuffix>swb):
|
* config/i386/mmx.md (mmx_pack<s_trunsuffix>swb):
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2019-07-02 qing zhao <qing.zhao@oracle.com>
|
||||||
|
|
||||||
|
PR preprocessor/90581
|
||||||
|
* c-opts.c (c_common_handle_option): Handle -fmax-include-depth.
|
||||||
|
* c.opt: Add new option -fmax-include-depth.
|
||||||
|
|
||||||
2019-06-26 Jason Merrill <jason@redhat.com>
|
2019-06-26 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/55442 - memory-hog with highly recursive constexpr.
|
PR c++/55442 - memory-hog with highly recursive constexpr.
|
||||||
|
|
|
@ -460,6 +460,10 @@ c_common_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value,
|
||||||
cpp_opts->extended_identifiers = value;
|
cpp_opts->extended_identifiers = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_fmax_include_depth_:
|
||||||
|
cpp_opts->max_include_depth = value;
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_foperator_names:
|
case OPT_foperator_names:
|
||||||
cpp_opts->operator_names = value;
|
cpp_opts->operator_names = value;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1575,6 +1575,10 @@ flax-vector-conversions
|
||||||
C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
|
C ObjC C++ ObjC++ Var(flag_lax_vector_conversions)
|
||||||
Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
|
Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types.
|
||||||
|
|
||||||
|
fmax-include-depth=
|
||||||
|
C ObjC C++ ObjC++ Joined RejectNegative UInteger
|
||||||
|
fmax-include-depth=<number> Set the maximum depth of the nested #include.
|
||||||
|
|
||||||
fms-extensions
|
fms-extensions
|
||||||
C ObjC C++ ObjC++ Var(flag_ms_extensions)
|
C ObjC C++ ObjC++ Var(flag_ms_extensions)
|
||||||
Don't warn about uses of Microsoft extensions.
|
Don't warn about uses of Microsoft extensions.
|
||||||
|
|
|
@ -261,6 +261,10 @@ enabled by default for C99 (and later C standard versions) and C++.
|
||||||
@opindex fno-canonical-system-headers
|
@opindex fno-canonical-system-headers
|
||||||
When preprocessing, do not shorten system header paths with canonicalization.
|
When preprocessing, do not shorten system header paths with canonicalization.
|
||||||
|
|
||||||
|
@item -fmax-include-depth=@var{depth}
|
||||||
|
@opindex fmax-include-depth
|
||||||
|
Set the maximum depth of the nested #include. The default is 200.
|
||||||
|
|
||||||
@item -ftabstop=@var{width}
|
@item -ftabstop=@var{width}
|
||||||
@opindex ftabstop
|
@opindex ftabstop
|
||||||
Set the distance between tab stops. This helps the preprocessor report
|
Set the distance between tab stops. This helps the preprocessor report
|
||||||
|
|
|
@ -518,6 +518,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||||
-fdebug-cpp -fdirectives-only -fdollars-in-identifiers @gol
|
-fdebug-cpp -fdirectives-only -fdollars-in-identifiers @gol
|
||||||
-fexec-charset=@var{charset} -fextended-identifiers @gol
|
-fexec-charset=@var{charset} -fextended-identifiers @gol
|
||||||
-finput-charset=@var{charset} -fmacro-prefix-map=@var{old}=@var{new} @gol
|
-finput-charset=@var{charset} -fmacro-prefix-map=@var{old}=@var{new} @gol
|
||||||
|
-fmax-include-depth=@var{depth} @gol
|
||||||
-fno-canonical-system-headers -fpch-deps -fpch-preprocess @gol
|
-fno-canonical-system-headers -fpch-deps -fpch-preprocess @gol
|
||||||
-fpreprocessed -ftabstop=@var{width} -ftrack-macro-expansion @gol
|
-fpreprocessed -ftabstop=@var{width} -ftrack-macro-expansion @gol
|
||||||
-fwide-exec-charset=@var{charset} -fworking-directory @gol
|
-fwide-exec-charset=@var{charset} -fworking-directory @gol
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2019-07-02 qing zhao <qing.zhao@oracle.com>
|
||||||
|
|
||||||
|
PR preprocessor/90581
|
||||||
|
* c-c++-common/cpp/fmax-include-depth-1a.h: New test.
|
||||||
|
* c-c++-common/cpp/fmax-include-depth-1b.h: New test.
|
||||||
|
* c-c++-common/cpp/fmax-include-depth.c: New test.
|
||||||
|
|
||||||
2019-07-02 Jan Hubicka <jh@suse.cz>
|
2019-07-02 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
* gcc.dg/tree-ssa/alias-access-path-7.c: New testcase.
|
* gcc.dg/tree-ssa/alias-access-path-7.c: New testcase.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
int a;
|
|
@ -0,0 +1 @@
|
||||||
|
#include "fmax-include-depth-1a.h"
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do preprocess} */
|
||||||
|
/* { dg-options "-fmax-include-depth=1" } */
|
||||||
|
|
||||||
|
#include "fmax-include-depth-1b.h" /* { dg-error ".include nested depth 1 exceeds maximum of 1 .use -fmax-include-depth=DEPTH to increase the maximum." } */
|
|
@ -1,3 +1,13 @@
|
||||||
|
2019-07-02 qing zhao <qing.zhao@oracle.com>
|
||||||
|
|
||||||
|
PR preprocessor/90581
|
||||||
|
* directives.c (do_include_common): Replace CPP_STACK_MAX with
|
||||||
|
CPP_OPTION (pfile, max_include_depth).
|
||||||
|
* include/cpplib.h (struct cpp_options): Add new field
|
||||||
|
max_include_depth.
|
||||||
|
* init.c (cpp_create_reader): Initiate new field max_include_depth.
|
||||||
|
* internal.h: Delete CPP_STACK_MAX.
|
||||||
|
|
||||||
2019-06-26 Nathan Sidwell <nathan@acm.org>
|
2019-06-26 Nathan Sidwell <nathan@acm.org>
|
||||||
|
|
||||||
PR preprocessor/90927
|
PR preprocessor/90927
|
||||||
|
|
|
@ -831,8 +831,13 @@ do_include_common (cpp_reader *pfile, enum include_type type)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prevent #include recursion. */
|
/* Prevent #include recursion. */
|
||||||
if (pfile->line_table->depth >= CPP_STACK_MAX)
|
if (pfile->line_table->depth >= CPP_OPTION (pfile, max_include_depth))
|
||||||
cpp_error (pfile, CPP_DL_ERROR, "#include nested too deeply");
|
cpp_error (pfile,
|
||||||
|
CPP_DL_ERROR,
|
||||||
|
"#include nested depth %u exceeds maximum of %u"
|
||||||
|
" (use -fmax-include-depth=DEPTH to increase the maximum)",
|
||||||
|
pfile->line_table->depth,
|
||||||
|
CPP_OPTION (pfile, max_include_depth));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Get out of macro context, if we are. */
|
/* Get out of macro context, if we are. */
|
||||||
|
|
|
@ -550,6 +550,9 @@ struct cpp_options
|
||||||
|
|
||||||
/* True enables canonicalization of system header file paths. */
|
/* True enables canonicalization of system header file paths. */
|
||||||
bool canonical_system_headers;
|
bool canonical_system_headers;
|
||||||
|
|
||||||
|
/* The maximum depth of the nested #include. */
|
||||||
|
unsigned int max_include_depth;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Diagnostic levels. To get a diagnostic without associating a
|
/* Diagnostic levels. To get a diagnostic without associating a
|
||||||
|
|
|
@ -185,6 +185,7 @@ cpp_create_reader (enum c_lang lang, cpp_hash_table *table,
|
||||||
CPP_OPTION (pfile, warn_multichar) = 1;
|
CPP_OPTION (pfile, warn_multichar) = 1;
|
||||||
CPP_OPTION (pfile, discard_comments) = 1;
|
CPP_OPTION (pfile, discard_comments) = 1;
|
||||||
CPP_OPTION (pfile, discard_comments_in_macro_exp) = 1;
|
CPP_OPTION (pfile, discard_comments_in_macro_exp) = 1;
|
||||||
|
CPP_OPTION (pfile, max_include_depth) = 200;
|
||||||
CPP_OPTION (pfile, tabstop) = 8;
|
CPP_OPTION (pfile, tabstop) = 8;
|
||||||
CPP_OPTION (pfile, operator_names) = 1;
|
CPP_OPTION (pfile, operator_names) = 1;
|
||||||
CPP_OPTION (pfile, warn_trigraphs) = 2;
|
CPP_OPTION (pfile, warn_trigraphs) = 2;
|
||||||
|
|
|
@ -74,10 +74,6 @@ struct cset_converter
|
||||||
linemap_line_start (PFILE->line_table, line + 1, COLS_HINT); \
|
linemap_line_start (PFILE->line_table, line + 1, COLS_HINT); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Maximum nesting of cpp_buffers. We use a static limit, partly for
|
|
||||||
efficiency, and partly to limit runaway recursion. */
|
|
||||||
#define CPP_STACK_MAX 200
|
|
||||||
|
|
||||||
/* Host alignment handling. */
|
/* Host alignment handling. */
|
||||||
struct dummy
|
struct dummy
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue