Commit 0f05a199 by Max Ostapenko Committed by Maxim Ostapenko

Do not instrument first byte in strlen if already instrumented.

gcc/
	* asan.c (instrument_strlen_call): Do not instrument first byte in strlen
	if already instrumented.

gcc/testsuite/
	* c-c++-common/asan/no-redundant-instrumentation-9.c: New test.

From-SVN: r212332
parent 625685be
2014-06-24 Max Ostapenko <m.ostapenko@partner.samsung.com>
* asan.c (instrument_strlen_call): Do not instrument first byte in strlen
if already instrumented.
2014-07-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.opt (mwords-little-endian): Delete.
......
......@@ -2026,6 +2026,7 @@ instrument_strlen_call (gimple_stmt_iterator *iter)
location_t loc = gimple_location (call);
tree str_arg = gimple_call_arg (call, 0);
bool start_instrumented = has_mem_ref_been_instrumented (str_arg, 1);
tree cptr_type = build_pointer_type (char_type_node);
gimple str_arg_ssa =
......@@ -2037,7 +2038,8 @@ instrument_strlen_call (gimple_stmt_iterator *iter)
build_check_stmt (loc, gimple_assign_lhs (str_arg_ssa), NULL_TREE, 1, iter,
/*non_zero_len_p*/true, /*before_p=*/true,
/*is_store=*/false, /*is_scalar_access*/true, /*align*/0);
/*is_store=*/false, /*is_scalar_access*/true, /*align*/0,
start_instrumented, start_instrumented);
gimple g =
gimple_build_assign_with_ops (POINTER_PLUS_EXPR,
......
2014-06-24 Max Ostapenko <m.ostapenko@partner.samsung.com>
* c-c++-common/asan/no-redundant-instrumentation-9.c: New test.
2014-07-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58898
......
/* { dg-options "-fdump-tree-asan0" } */
/* { dg-do compile } */
/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
__SIZE_TYPE__
f (char *a)
{
a[0] = '1';
return __builtin_strlen (a);
}
/* { dg-final { scan-tree-dump-times "__asan_report_load1" 1 "asan0" } } */
/* { dg-final { cleanup-tree-dump "asan0" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment