Commit 1fe04fdc by Jakub Jelinek Committed by Jakub Jelinek

asan.c (instrument_derefs): Handle bitfield COMPONENT_REFs accesses as reads/writes to their...

	* asan.c (instrument_derefs): Handle bitfield COMPONENT_REFs
	accesses as reads/writes to their DECL_BIT_FIELD_REPRESENTATIVE.

From-SVN: r194344
parent cf8d35fa
2012-12-10 Jakub Jelinek <jakub@redhat.com>
* asan.c (instrument_derefs): Handle bitfield COMPONENT_REFs
accesses as reads/writes to their DECL_BIT_FIELD_REPRESENTATIVE.
2012-12-08 Eric Botcazou <ebotcazou@adacore.com>
* lto-streamer-out.c (lto_write_tree): Do not reset the DECL_INITIAL of
......@@ -797,9 +797,6 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
|| (unsigned HOST_WIDE_INT) size_in_bytes - 1 >= 16)
return;
/* For now just avoid instrumenting bit field acceses.
Fixing it is doable, but expected to be messy. */
HOST_WIDE_INT bitsize, bitpos;
tree offset;
enum machine_mode mode;
......@@ -808,7 +805,17 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
&mode, &unsignedp, &volatilep, false);
if (bitpos % (size_in_bytes * BITS_PER_UNIT)
|| bitsize != size_in_bytes * BITS_PER_UNIT)
return;
{
if (TREE_CODE (t) == COMPONENT_REF
&& DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1)) != NULL_TREE)
{
tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1));
instrument_derefs (iter, build3 (COMPONENT_REF, TREE_TYPE (repr),
TREE_OPERAND (t, 0), repr,
NULL_TREE), location, is_store);
}
return;
}
base = build_fold_addr_expr (t);
build_check_stmt (location, base, iter, /*before_p=*/true,
......
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