Commit 0e36bb52 by Jakub Jelinek Committed by Jakub Jelinek

tree-chkp.c (chkp_get_hard_register_var_fake_base_address): Rewritten to avoid…

tree-chkp.c (chkp_get_hard_register_var_fake_base_address): Rewritten to avoid overflow for > 32-bit pointers.

	* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
	Rewritten to avoid overflow for > 32-bit pointers.

From-SVN: r249398
parent cb6794f6
2017-06-20 Jakub Jelinek <jakub@redhat.com> 2017-07-20 Jakub Jelinek <jakub@redhat.com>
* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
Rewritten to avoid overflow for > 32-bit pointers.
PR sanitizer/81125 PR sanitizer/81125
* ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
......
...@@ -690,9 +690,8 @@ chkp_erase_completed_bounds (void) ...@@ -690,9 +690,8 @@ chkp_erase_completed_bounds (void)
static tree static tree
chkp_get_hard_register_var_fake_base_address () chkp_get_hard_register_var_fake_base_address ()
{ {
tree base = fold_convert (ptr_type_node, integer_zero_node); int prec = TYPE_PRECISION (ptr_type_node);
unsigned HOST_WIDE_INT offset = 1 << (TYPE_PRECISION (ptr_type_node) - 1); return wide_int_to_tree (ptr_type_node, wi::min_value (prec, SIGNED));
return fold_build_pointer_plus_hwi (base, offset);
} }
/* If we check bounds for a hard register variable, we cannot /* If we check bounds for a hard register variable, we cannot
......
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