Commit 6a02a719 by Sebastian Pop Committed by Sebastian Pop

Fix PR45297: handle ADDR_EXPR in interpret_rhs_expr as in follow_ssa_edge_expr.

2010-12-01  Sebastian Pop  <sebastian.pop@amd.com>

	PR middle-end/45297
	* tree-scalar-evolution.c (interpret_rhs_expr): Handle ADDR_EXPR
	with MEM_REFs as POINTER_PLUS_EXPR.

From-SVN: r167390
parent 35caf1bd
2010-12-02 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/45297
* tree-scalar-evolution.c (interpret_rhs_expr): Handle ADDR_EXPR
with MEM_REFs as POINTER_PLUS_EXPR.
2010-12-02 Joseph Myers <joseph@codesourcery.com> 2010-12-02 Joseph Myers <joseph@codesourcery.com>
* config/i386/linux.h, config/m32r/linux.h, config/m68k/linux.h, * config/i386/linux.h, config/m32r/linux.h, config/m68k/linux.h,
...@@ -1715,12 +1715,22 @@ interpret_rhs_expr (struct loop *loop, gimple at_stmt, ...@@ -1715,12 +1715,22 @@ interpret_rhs_expr (struct loop *loop, gimple at_stmt,
return chrec_convert (type, analyze_scalar_evolution (loop, rhs1), return chrec_convert (type, analyze_scalar_evolution (loop, rhs1),
at_stmt); at_stmt);
} }
return chrec_dont_know;
} }
switch (code) switch (code)
{ {
case ADDR_EXPR:
/* Handle &MEM[ptr + CST] which is equivalent to POINTER_PLUS_EXPR. */
if (TREE_CODE (TREE_OPERAND (rhs1, 0)) != MEM_REF)
{
res = chrec_dont_know;
break;
}
rhs2 = TREE_OPERAND (TREE_OPERAND (rhs1, 0), 1);
rhs1 = TREE_OPERAND (TREE_OPERAND (rhs1, 0), 0);
/* Fall through. */
case POINTER_PLUS_EXPR: case POINTER_PLUS_EXPR:
chrec1 = analyze_scalar_evolution (loop, rhs1); chrec1 = analyze_scalar_evolution (loop, rhs1);
chrec2 = analyze_scalar_evolution (loop, rhs2); chrec2 = analyze_scalar_evolution (loop, rhs2);
......
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