diff options
author | Martin Sebor <msebor@redhat.com> | 2017-08-14 18:35:13 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2017-08-14 12:35:13 -0600 |
commit | da67acb9b37cf139da014f5bc11e2dbf25a7d597 (patch) | |
tree | d3cc608c3e0c1104bf054ef4e742c6af1439c24f /gcc/gimple-pretty-print.c | |
parent | 9e3b1778b6207a10f2f1534fc9f01e6c8320a1dc (diff) | |
download | gcc-da67acb9b37cf139da014f5bc11e2dbf25a7d597.zip gcc-da67acb9b37cf139da014f5bc11e2dbf25a7d597.tar.gz gcc-da67acb9b37cf139da014f5bc11e2dbf25a7d597.tar.bz2 |
PR c/81117 - Improve buffer overflow checking in strncpy - part 1
gcc/ChangeLog:
PR c/81117
* tree-diagnostic.c (default_tree_printer): Handle %G.
* gimple-pretty-print.h (percent_G_format): Declare new function.
* gimple-pretty-print.c (percent_G_format): Define.
* tree-pretty-print.c (percent_K_format): Add argument.
gcc/c/ChangeLog:
PR c/81117
* c-objc-common.c (c_objc_common_init): Handle 'G'.
gcc/c-family/ChangeLog:
PR c/81117
* c-format.h (T89_G): New macro.
* c-format.c (local_gcall_ptr_node): New variable.
(init_dynamic_diag_info): Initialize it.
gcc/cp/ChangeLog:
PR c/81117
* error.c (cp_printer): Handle 'G'.
gcc/testsuite/ChangeLog:
PR c/81117
* gcc.dg/format/gcc_diag-10.c: Exercise %G.
From-SVN: r251098
Diffstat (limited to 'gcc/gimple-pretty-print.c')
-rw-r--r-- | gcc/gimple-pretty-print.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c index 5727d14..ed8e51c 100644 --- a/gcc/gimple-pretty-print.c +++ b/gcc/gimple-pretty-print.c @@ -2911,3 +2911,22 @@ gimple_dump_bb_for_graph (pretty_printer *pp, basic_block bb) pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true); } + +/* Handle the %G format for TEXT. Same as %K in handle_K_format in + tree-pretty-print.c but with a Gimple call statement as an argument. */ + +void +percent_G_format (text_info *text) +{ + gcall *stmt = va_arg (*text->args_ptr, gcall*); + + /* Build a call expression from the Gimple call statement and + pass it to the K formatter that knows how to format it. */ + tree exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3); + CALL_EXPR_FN (exp) = gimple_call_fn (stmt); + TREE_TYPE (exp) = gimple_call_return_type (stmt); + CALL_EXPR_STATIC_CHAIN (exp) = gimple_call_chain (stmt); + SET_EXPR_LOCATION (exp, gimple_location (stmt)); + + percent_K_format (text, exp); +} |