Lines Matching refs:vno
4025 /* Initialize VNO from the pieces provided. */
4028 init_vn_nary_op_from_pieces (vn_nary_op_t vno, unsigned int length,
4031 vno->opcode = code;
4032 vno->length = length;
4033 vno->type = type;
4034 memcpy (&vno->op[0], ops, sizeof (tree) * length);
4060 /* Initialize VNO from STMT. */
4063 init_vn_nary_op_from_stmt (vn_nary_op_t vno, gassign *stmt)
4067 vno->opcode = gimple_assign_rhs_code (stmt);
4068 vno->type = TREE_TYPE (gimple_assign_lhs (stmt));
4069 switch (vno->opcode)
4074 vno->length = 1;
4075 vno->op[0] = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
4079 vno->length = 3;
4080 vno->op[0] = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
4081 vno->op[1] = TREE_OPERAND (gimple_assign_rhs1 (stmt), 1);
4082 vno->op[2] = TREE_OPERAND (gimple_assign_rhs1 (stmt), 2);
4086 vno->length = CONSTRUCTOR_NELTS (gimple_assign_rhs1 (stmt));
4087 for (i = 0; i < vno->length; ++i)
4088 vno->op[i] = CONSTRUCTOR_ELT (gimple_assign_rhs1 (stmt), i)->value;
4093 vno->length = gimple_num_ops (stmt) - 1;
4094 for (i = 0; i < vno->length; ++i)
4095 vno->op[i] = gimple_op (stmt, i + 1);
4099 /* Compute the hashcode for VNO and look for it in the hash table;
4106 vn_nary_op_lookup_1 (vn_nary_op_t vno, vn_nary_op_t *vnresult)
4113 for (unsigned i = 0; i < vno->length; ++i)
4114 if (TREE_CODE (vno->op[i]) == SSA_NAME)
4115 vno->op[i] = SSA_VAL (vno->op[i]);
4117 vno->hashcode = vn_nary_op_compute_hash (vno);
4118 slot = valid_info->nary->find_slot_with_hash (vno, vno->hashcode, NO_INSERT);
4181 /* Insert VNO into TABLE. */
4184 vn_nary_op_insert_into (vn_nary_op_t vno, vn_nary_op_table_type *table)
4188 gcc_assert (! vno->predicated_values
4189 || (! vno->u.values->next
4190 && vno->u.values->n == 1));
4192 for (unsigned i = 0; i < vno->length; ++i)
4193 if (TREE_CODE (vno->op[i]) == SSA_NAME)
4194 vno->op[i] = SSA_VAL (vno->op[i]);
4196 vno->hashcode = vn_nary_op_compute_hash (vno);
4197 slot = table->find_slot_with_hash (vno, vno->hashcode, INSERT);
4198 vno->unwind_to = *slot;
4206 && ! vno->predicated_values)
4211 *slot = vno;
4225 vno->next = last_inserted_nary;
4226 last_inserted_nary = vno;
4227 return vno;
4229 else if (vno->predicated_values
4232 else if (vno->predicated_values
4237 gcc_assert (!vno->u.values->next && vno->u.values->n == 1);
4239 = BASIC_BLOCK_FOR_FN (cfun, vno->u.values->valid_dominated_by_p[0]);
4240 vn_pval *nval = vno->u.values;
4241 vn_pval **next = &vno->u.values;
4287 *slot = vno;
4288 vno->next = last_inserted_nary;
4289 last_inserted_nary = vno;
4290 return vno;
4299 if ((*slot)->u.result == vno->u.result)
4306 /* ??? We should return NULL if we do not use 'vno' and have the
4310 *slot = vno;
4311 vno->next = last_inserted_nary;
4312 last_inserted_nary = vno;
4313 return vno;
4380 vn_nary_op_get_predicated_value (vn_nary_op_t vno, basic_block bb)
4382 if (! vno->predicated_values)
4383 return vno->u.result;
4384 for (vn_pval *val = vno->u.values; val; val = val->next)
6010 vn_nary_op_t vno;
6017 FOR_EACH_HASH_TABLE_ELEMENT (*valid_info->nary, vno, vn_nary_op_t, hin)
6018 if (! vno->predicated_values)
6019 set_value_id_for_result (vno->u.result, &vno->value_id);