diff options
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r-- | gcc/gcse.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c index 928b6397624..b7b08f2840a 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -1315,6 +1315,7 @@ want_to_gcse_p (x) case SUBREG: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case CALL: return 0; @@ -1400,6 +1401,7 @@ oprs_unchanged_p (x, insn, avail_p) case CONST: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -1635,6 +1637,22 @@ hash_expr_1 (x, mode, do_not_record_p) + (unsigned int) CONST_DOUBLE_HIGH (x)); return hash; + case CONST_VECTOR: + { + int units; + rtx elt; + + units = CONST_VECTOR_NUNITS (x); + + for (i = 0; i < units; ++i) + { + elt = CONST_VECTOR_ELT (x, i); + hash += hash_expr_1 (elt, GET_MODE (elt), do_not_record_p); + } + + return hash; + } + /* Assume there is only one rtx object for any given label. */ case LABEL_REF: /* We don't hash on the address of the CODE_LABEL to avoid bootstrap @@ -2756,6 +2774,7 @@ oprs_not_set_p (x, insn) case CONST: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -3089,6 +3108,7 @@ expr_killed_p (x, bb) case CONST: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -3789,6 +3809,7 @@ compute_transp (x, indx, bmap, set_p) case CONST: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -6289,6 +6310,7 @@ store_ops_ok (x, bb) case CONST: case CONST_INT: case CONST_DOUBLE: + case CONST_VECTOR: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: |