tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR doesn't produce pointers.

2019-05-20  Richard Biener  <rguenther@suse.de>

	* tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR
	doesn't produce pointers.
	{TRUNC,CEIL,FLOOR,ROUND,EXACT}_{DIV,MOD}_EXPR points to what
	the first operand points to.

From-SVN: r271414
This commit is contained in:
Richard Biener 2019-05-20 12:02:35 +00:00 committed by Richard Biener
parent c6b84edb61
commit 810c42c38d
2 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2019-05-20 Richard Biener <rguenther@suse.de>
* tree-ssa-structalias.c (find_func_aliases): POINTER_DIFF_EXPR
doesn't produce pointers.
{TRUNC,CEIL,FLOOR,ROUND,EXACT}_{DIV,MOD}_EXPR points to what
the first operand points to.
2019-05-20 Jan Hubicka <hubicka@ucw.cz>
* tree-ssa-alias.c (compare_sizes): New function.

View File

@ -4900,6 +4900,9 @@ find_func_aliases (struct function *fn, gimple *origt)
if (code == POINTER_PLUS_EXPR)
get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
gimple_assign_rhs2 (t), &rhsc);
else if (code == POINTER_DIFF_EXPR)
/* The result is not a pointer (part). */
;
else if (code == BIT_AND_EXPR
&& TREE_CODE (gimple_assign_rhs2 (t)) == INTEGER_CST)
{
@ -4908,6 +4911,17 @@ find_func_aliases (struct function *fn, gimple *origt)
get_constraint_for_ptr_offset (gimple_assign_rhs1 (t),
NULL_TREE, &rhsc);
}
else if (code == TRUNC_DIV_EXPR
|| code == CEIL_DIV_EXPR
|| code == FLOOR_DIV_EXPR
|| code == ROUND_DIV_EXPR
|| code == EXACT_DIV_EXPR
|| code == TRUNC_MOD_EXPR
|| code == CEIL_MOD_EXPR
|| code == FLOOR_MOD_EXPR
|| code == ROUND_MOD_EXPR)
/* Division and modulo transfer the pointer from the LHS. */
get_constraint_for_rhs (gimple_assign_rhs1 (t), &rhsc);
else if ((CONVERT_EXPR_CODE_P (code)
&& !(POINTER_TYPE_P (gimple_expr_type (t))
&& !POINTER_TYPE_P (TREE_TYPE (rhsop))))