// each incoming edge now and accumulate the results.
r.set_undefined ();
edge_iterator ei;
- int_range_max er;
+ Value_Range er (TREE_TYPE (name));
FOR_EACH_EDGE (e, ei, prev_bb->preds)
{
edge_range (er, e, name, RFD_READ_ONLY);
tree lhs = gimple_get_lhs (s);
if (lhs)
{
- int_range_max tmp;
+ Value_Range tmp (TREE_TYPE (lhs));
if (range_of_stmt (tmp, s, lhs) && !tmp.varying_p ()
&& update_global_range (tmp, lhs) && dump_file)
{
- value_range vr = tmp;
+ // ?? This section should be adjusted when non-iranges can
+ // be exported. For now, the only way update_global_range
+ // above can succeed is with an irange so this is safe.
+ value_range vr = as_a <irange> (tmp);
fprintf (dump_file, "Global Exported: ");
print_generic_expr (dump_file, lhs, TDF_SLIM);
fprintf (dump_file, " = ");
vr.dump (dump_file);
int_range_max same = vr;
- if (same != tmp)
+ if (same != as_a <irange> (tmp))
{
fprintf (dump_file, " ... irange was : ");
tmp.dump (dump_file);
Value_Range ();
Value_Range (const vrange &r);
Value_Range (tree type);
+ Value_Range (const Value_Range &);
void set_type (tree type);
vrange& operator= (const vrange &);
bool operator== (const Value_Range &r) const;
unsupported_range m_unsupported;
vrange *m_vrange;
int_range_max m_irange;
- DISABLE_COPY_AND_ASSIGN (Value_Range);
};
inline
init (type);
}
+inline
+Value_Range::Value_Range (const Value_Range &r)
+{
+ m_vrange = r.m_vrange;
+}
+
// Initialize object so it is possible to store temporaries of TYPE
// into it.