https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35503

--- Comment #13 from Martin Sebor <msebor at gcc dot gnu.org> ---
Author: msebor
Date: Tue Nov 12 17:18:37 2019
New Revision: 278098

URL: https://gcc.gnu.org/viewcvs?rev=278098&root=gcc&view=rev
Log:
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.


Added:
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-23.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-ssa-sprintf.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-strlen.c

Reply via email to