This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, Pointer Bounds Checker 14/x] Passes [3/n] Helper functions


On 10/08/14 12:57, Ilya Enkovich wrote:
Hi,

This patch introduces helper functions used by instrumentation.  These helpers are used to access local structures, generate typical expressions, vars and statements.  I also included local data initializer into this patch.

Thanks,
Ilya
--
2014-10-08  Ilya Enkovich  <ilya.enkovich@intel.com>

	* tree-chkp.c (assign_handler): New.
	(chkp_get_zero_bounds): New.
	(chkp_uintptr_type): New.
	(chkp_none_bounds_var): New.
	(entry_block): New.
	(zero_bounds): New.
	(none_bounds): New.
	(incomplete_bounds): New.
	(tmp_var): New.
	(size_tmp_var): New.
	(chkp_abnormal_copies): New.
	(chkp_invalid_bounds): New.
	(chkp_completed_bounds_set): New.
	(chkp_reg_bounds): New.
	(chkp_bound_vars): New.
	(chkp_reg_addr_bounds): New.
	(chkp_incomplete_bounds_map): New.
	(chkp_static_var_bounds): New.
	(in_chkp_pass): New.
	(CHKP_BOUND_TMP_NAME): New.
	(CHKP_SIZE_TMP_NAME): New.
	(CHKP_BOUNDS_OF_SYMBOL_PREFIX): New.
	(CHKP_STRING_BOUNDS_PREFIX): New.
	(CHKP_VAR_BOUNDS_PREFIX): New.
	(CHKP_NONE_BOUNDS_VAR_NAME): New.
	(chkp_get_tmp_var): New.
	(chkp_get_tmp_reg): New.
	(chkp_get_size_tmp_var): New.
	(chkp_register_addr_bounds): New.
	(chkp_get_registered_addr_bounds): New.
	(chkp_mark_completed_bounds): New.
	(chkp_completed_bounds): New.
	(chkp_erase_completed_bounds): New.
	(chkp_register_incomplete_bounds): New.
	(chkp_incomplete_bounds): New.
	(chkp_erase_incomplete_bounds): New.
	(chkp_mark_invalid_bounds): New.
	(chkp_valid_bounds): New.
	(chkp_mark_invalid_bounds_walker): New.
	(chkp_build_addr_expr): New.
	(chkp_get_entry_block): New.
	(chkp_get_bounds_var): New.
	(chkp_get_registered_bounds): New.
	(chkp_check_lower): New.
	(chkp_check_upper): New.
	(chkp_check_mem_access): New.
	(chkp_build_component_ref): New.
	(chkp_build_array_ref): New.
	(chkp_can_be_shared): New.
	(chkp_make_bounds): New.
	(chkp_get_none_bounds_var): New.
	(chkp_get_zero_bounds): New.
	(chkp_get_none_bounds): New.
	(chkp_get_invalid_op_bounds): New.
	(chkp_get_nonpointer_load_bounds): New.
	(chkp_get_next_bounds_parm): New.
	(chkp_build_bndldx): New.
	(chkp_make_static_bounds): New.
	(chkp_generate_extern_var_bounds): New.
	(chkp_intersect_bounds): New.
	(chkp_may_narrow_to_field): New.
	(chkp_narrow_bounds_for_field): New.
	(chkp_narrow_bounds_to_field): New.
	(chkp_walk_pointer_assignments): New.
	(chkp_init): New.


diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c
index 4ab8de6..c65334c 100644
--- a/gcc/tree-chkp.c
+++ b/gcc/tree-chkp.c

+      fprintf (dump_file, "Regsitered bound ");
s/Regsitered/Registered/

Where does chkp_can_be_shared get used? Normally the thing to do would just be to call unshare_expr. It'll create copies as needed. If it's something that is supposed to be shared then it'll leave it alone. If you need to do something different than unshare_expr, then that needs deeper investigation as you're mucking around in the structure sharing assumptions and that's not to be done lightly.

jeff



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]