tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look through any value-preserving cast.
* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look through any value-preserving cast. From-SVN: r84244
This commit is contained in:
parent
b49fcebddd
commit
d969ee71f4
@ -1,3 +1,8 @@
|
||||
2004-07-07 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look
|
||||
through any value-preserving cast.
|
||||
|
||||
2004-07-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* function.c (assign_parm_find_data_types): Call
|
||||
|
@ -2460,15 +2460,33 @@ simplify_switch_and_lookup_avail_expr (tree stmt,
|
||||
def = TREE_OPERAND (def, 1);
|
||||
if (TREE_CODE (def) == NOP_EXPR)
|
||||
{
|
||||
int need_precision;
|
||||
bool fail;
|
||||
|
||||
def = TREE_OPERAND (def, 0);
|
||||
|
||||
#ifdef ENABLE_CHECKING
|
||||
/* ??? Why was Jeff testing this? We are gimple... */
|
||||
if (!is_gimple_val (def))
|
||||
abort ();
|
||||
#endif
|
||||
|
||||
to = TREE_TYPE (cond);
|
||||
ti = TREE_TYPE (def);
|
||||
|
||||
/* If we have an extension that preserves sign, then we
|
||||
/* If we have an extension that preserves value, then we
|
||||
can copy the source value into the switch. */
|
||||
if (TYPE_UNSIGNED (to) == TYPE_UNSIGNED (ti)
|
||||
&& TYPE_PRECISION (to) >= TYPE_PRECISION (ti)
|
||||
&& is_gimple_val (def))
|
||||
|
||||
need_precision = TYPE_PRECISION (ti);
|
||||
fail = false;
|
||||
if (TYPE_UNSIGNED (to) && !TYPE_UNSIGNED (ti))
|
||||
fail = true;
|
||||
else if (!TYPE_UNSIGNED (to) && TYPE_UNSIGNED (ti))
|
||||
need_precision += 1;
|
||||
if (TYPE_PRECISION (to) < need_precision)
|
||||
fail = true;
|
||||
|
||||
if (!fail)
|
||||
{
|
||||
SWITCH_COND (stmt) = def;
|
||||
ann->modified = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user