diff options
author | Martin Sebor <msebor@redhat.com> | 2019-11-12 17:18:37 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2019-11-12 10:18:37 -0700 |
commit | 937a86b49e4ed8ef72c1384d617feff26580a048 (patch) | |
tree | f247820d00501e7e2424408054361e5b8ea56067 /gcc/targhooks.c | |
parent | 966e31a17b92d627dc323a77d363948012c3163d (diff) | |
download | gcc-937a86b49e4ed8ef72c1384d617feff26580a048.zip gcc-937a86b49e4ed8ef72c1384d617feff26580a048.tar.gz gcc-937a86b49e4ed8ef72c1384d617feff26580a048.tar.bz2 |
PR middle-end/83688 - check if buffers may overlap when copying strings using sprintf
gcc/ChangeLog:
PR middle-end/83688
* gimple-ssa-sprintf.c (format_result::alias_info): New struct.
(directive::argno): New member.
(format_result::aliases, format_result::alias_count): New data members.
(format_result::append_alias): New member function.
(fmtresult::dst_offset): New data member.
(pass_sprintf_length::call_info::dst_origin): New data member.
(pass_sprintf_length::call_info::dst_field, dst_offset): Same.
(char_type_p, array_elt_at_offset, field_at_offset): New functions.
(get_origin_and_offset): Same.
(format_string): Call it.
(format_directive): Call append_alias and set directive argument
number.
(maybe_warn_overlap): New function.
(pass_sprintf_length::compute_format_length): Call it.
(pass_sprintf_length::handle_gimple_call): Initialize new members.
* gcc/tree-ssa-strlen.c (): Also enable when -Wrestrict is on.
gcc/testsuite/ChangeLog:
PR tree-optimization/35503
* gcc.dg/tree-ssa/builtin-sprintf-warn-23.c: New test.
From-SVN: r278098
Diffstat (limited to 'gcc/targhooks.c')
0 files changed, 0 insertions, 0 deletions