Tighten tree-ssa-ccp.c:get_value_for_expr condition
bit_value_unop and bit_value_binop require constant values to be INTEGER_CSTs: gcc_assert ((rval.lattice_val == CONSTANT && TREE_CODE (rval.value) == INTEGER_CST) || wi::sext (rval.mask, TYPE_PRECISION (TREE_TYPE (rhs))) == -1); However, when deciding whether to record a constant value, the for_bits_p handling in get_value_for_expr used a negative test for ADDR_EXPR: else if (is_gimple_min_invariant (expr) && (!for_bits_p || TREE_CODE (expr) != ADDR_EXPR)) This patch uses a positive test for INTEGER_CST instead. Existing tests showed the need for this once polynomial constants are added. 2017-09-21 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for INTEGER_CST rather than a negative test for ADDR_EXPR. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r253056
This commit is contained in:
parent
dd72b5f952
commit
4a77e88747
@ -1,3 +1,10 @@
|
||||
2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
||||
* tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
|
||||
INTEGER_CST rather than a negative test for ADDR_EXPR.
|
||||
|
||||
2017-09-21 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
@ -617,7 +617,7 @@ get_value_for_expr (tree expr, bool for_bits_p)
|
||||
}
|
||||
}
|
||||
else if (is_gimple_min_invariant (expr)
|
||||
&& (!for_bits_p || TREE_CODE (expr) != ADDR_EXPR))
|
||||
&& (!for_bits_p || TREE_CODE (expr) == INTEGER_CST))
|
||||
{
|
||||
val.lattice_val = CONSTANT;
|
||||
val.value = expr;
|
||||
|
Loading…
Reference in New Issue
Block a user