+2018-09-25 Martin Liska <mliska@suse.cz>
+
+ * alias.c (set_dest_equal_p): Remove unused function.
+ * config/i386/i386.c (def_builtin_pure2): Likewise.
+ * diagnostic-show-locus.c (class layout): Remove
+ unused field.
+ (layout::layout): Likewise here.
+ * dump-context.h (class temp_dump_context): Likewise.
+ * dwarf2out.c (add_AT_fde_ref): Remove unused function.
+ (add_AT_loclistsptr): Likewise.
+ (add_AT_offset): Likewise.
+ (get_AT_hi_pc): Likewise.
+ (is_comdat_die): Likewise.
+ (type_is_enum): Likewise.
+ (ceiling): Likewise.
+ (add_AT_vms_delta): Likewise.
+ (is_class_die): Likewise.
+ * edit-context.c (class line_event): Remove unused field.
+ * graphite-sese-to-poly.c (tree_int_to_gmp): Remove
+ unused function.
+ * ipa-cp.c (ipa_get_vr_lat): Likewise.
+ * lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
+ (ok_for_base_p_nonstrict): Likewise.
+ * tree-chrec.c (is_not_constant_evolution): Likewise.
+ (chrec_fold_poly_cst): Likewise.
+ * tree-if-conv.c (has_pred_critical_p): Likewise.
+ * tree-ssa-coalesce.c (print_exprs): Likewise.
+ * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
+ * tree-ssa-uninit.c (is_and_or_or_p): Likewise.
+ * tree-vrp.c (value_ranges_intersect_p): Likewise.
+ (value_range_nonnegative_p): Likewise.
+
2018-09-25 Martin Liska <mliska@suse.cz>
* config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
return memory_modified;
}
-/* Return TRUE if the destination of a set is rtx identical to
- ITEM. */
-static inline bool
-set_dest_equal_p (const_rtx set, const_rtx item)
-{
- rtx dest = SET_DEST (set);
- return rtx_equal_p (dest, item);
-}
-
/* Initialize the aliasing machinery. Initialize the REG_KNOWN_VALUE
array. */
return decl;
}
-/* Like def_builtin, but also marks the function decl "pure". */
-
-static inline tree
-def_builtin_pure2 (HOST_WIDE_INT mask, const char *name,
- enum ix86_builtin_func_type tcode, enum ix86_builtins code)
-{
- tree decl = def_builtin2 (mask, name, tcode, code);
- if (decl)
- DECL_PURE_P (decl) = 1;
- else
- ix86_builtins_isa[(int) code].pure_p = true;
-
- return decl;
-}
-
/* Add any new builtin functions for a given ISA that may not have been
declared. This saves a bit of space compared to adding all of the
declarations to the tree, even if we didn't use them. */
+2018-09-25 Martin Liska <mliska@suse.cz>
+
+ * name-lookup.c (namespace_scope_ht_size): Remove
+ unused function.
+ * parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
+
2018-09-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85070
verbatim ("%s %s %p %d\n", action, desc, (void *) scope, line);
}
-/* Return the estimated initial size of the hashtable of a NAMESPACE
- scope. */
-
-static inline size_t
-namespace_scope_ht_size (tree ns)
-{
- tree name = DECL_NAME (ns);
-
- return name == std_identifier
- ? NAMESPACE_STD_HT_SIZE
- : (name == global_identifier
- ? GLOBAL_SCOPE_HT_SIZE
- : NAMESPACE_ORDINARY_HT_SIZE);
-}
-
/* A chain of binding_level structures awaiting reuse. */
static GTY((deletable)) cp_binding_level *free_binding_level;
return cp_lexer_peek_nth_token (lexer, n)->keyword == keyword;
}
-/* Return true if the next token is not the indicated KEYWORD. */
-
-static inline bool
-cp_lexer_next_token_is_not_keyword (cp_lexer* lexer, enum rid keyword)
-{
- return cp_lexer_peek_token (lexer)->keyword != keyword;
-}
-
/* Return true if KEYWORD can start a decl-specifier. */
bool
private:
diagnostic_context *m_context;
pretty_printer *m_pp;
- diagnostic_t m_diagnostic_kind;
location_t m_primary_loc;
expanded_location m_exploc;
colorizer m_colorizer;
diagnostic_t diagnostic_kind)
: m_context (context),
m_pp (context->printer),
- m_diagnostic_kind (diagnostic_kind),
m_primary_loc (richloc->get_range (0)->m_loc),
m_exploc (richloc->get_expanded_location (0)),
m_colorizer (context, diagnostic_kind),
pretty_printer m_pp;
dump_context m_context;
dump_context *m_saved;
- bool m_saved_flag_remarks;
};
#endif /* CHECKING_P */
static inline dw_die_ref AT_ref (dw_attr_node *);
static inline int AT_ref_external (dw_attr_node *);
static inline void set_AT_ref_external (dw_attr_node *, int);
-static void add_AT_fde_ref (dw_die_ref, enum dwarf_attribute, unsigned);
static void add_AT_loc (dw_die_ref, enum dwarf_attribute, dw_loc_descr_ref);
static inline dw_loc_descr_ref AT_loc (dw_attr_node *);
static void add_AT_loc_list (dw_die_ref, enum dwarf_attribute,
static void add_AT_lbl_id (dw_die_ref, enum dwarf_attribute, const char *);
static void add_AT_lineptr (dw_die_ref, enum dwarf_attribute, const char *);
static void add_AT_macptr (dw_die_ref, enum dwarf_attribute, const char *);
-static void add_AT_loclistsptr (dw_die_ref, enum dwarf_attribute,
- const char *);
-static void add_AT_offset (dw_die_ref, enum dwarf_attribute,
- unsigned HOST_WIDE_INT);
static void add_AT_range_list (dw_die_ref, enum dwarf_attribute,
unsigned long, bool);
static inline const char *AT_lbl (dw_attr_node *);
static dw_attr_node *get_AT (dw_die_ref, enum dwarf_attribute);
static const char *get_AT_low_pc (dw_die_ref);
-static const char *get_AT_hi_pc (dw_die_ref);
static const char *get_AT_string (dw_die_ref, enum dwarf_attribute);
static int get_AT_flag (dw_die_ref, enum dwarf_attribute);
static unsigned get_AT_unsigned (dw_die_ref, enum dwarf_attribute);
static int same_attr_p (dw_attr_node *, dw_attr_node *, int *);
static int same_die_p (dw_die_ref, dw_die_ref, int *);
static int is_type_die (dw_die_ref);
-static int is_comdat_die (dw_die_ref);
static inline bool is_template_instantiation (dw_die_ref);
static int is_declaration_die (dw_die_ref);
static int should_move_die_to_comdat (dw_die_ref);
static dw_die_ref modified_type_die (tree, int, bool, dw_die_ref);
static dw_die_ref generic_parameter_die (tree, tree, bool, dw_die_ref);
static dw_die_ref template_parameter_pack_die (tree, tree, dw_die_ref);
-static int type_is_enum (const_tree);
static unsigned int dbx_reg_number (const_rtx);
static void add_loc_descr_op_piece (dw_loc_descr_ref *, int);
static dw_loc_descr_ref reg_loc_descriptor (rtx, enum var_init_status);
struct loc_descr_context *);
static dw_loc_descr_ref loc_descriptor_from_tree (tree, int,
struct loc_descr_context *);
-static HOST_WIDE_INT ceiling (HOST_WIDE_INT, unsigned int);
static tree field_type (const_tree);
static unsigned int simple_type_align_in_bits (const_tree);
static unsigned int simple_decl_align_in_bits (const_tree);
static int maybe_emit_file (struct dwarf_file_data *fd);
static inline const char *AT_vms_delta1 (dw_attr_node *);
static inline const char *AT_vms_delta2 (dw_attr_node *);
-static inline void add_AT_vms_delta (dw_die_ref, enum dwarf_attribute,
- const char *, const char *);
static void append_entry_to_tmpl_value_parm_die_table (dw_die_ref, tree);
static void gen_remaining_tmpl_value_param_die_attribute (void);
static bool generic_type_p (tree);
a->dw_attr_val.v.val_die_ref.external = i;
}
-/* Add an FDE reference attribute value to a DIE. */
-
-static inline void
-add_AT_fde_ref (dw_die_ref die, enum dwarf_attribute attr_kind, unsigned int targ_fde)
-{
- dw_attr_node attr;
-
- attr.dw_attr = attr_kind;
- attr.dw_attr_val.val_class = dw_val_class_fde_ref;
- attr.dw_attr_val.val_entry = NULL;
- attr.dw_attr_val.v.val_fde_index = targ_fde;
- add_dwarf_attr (die, &attr);
-}
-
/* Add a location description attribute value to a DIE. */
static inline void
return a->dw_attr_val.v.val_file;
}
-/* Add a vms delta attribute value to a DIE. */
-
-static inline void
-add_AT_vms_delta (dw_die_ref die, enum dwarf_attribute attr_kind,
- const char *lbl1, const char *lbl2)
-{
- dw_attr_node attr;
-
- attr.dw_attr = attr_kind;
- attr.dw_attr_val.val_class = dw_val_class_vms_delta;
- attr.dw_attr_val.val_entry = NULL;
- attr.dw_attr_val.v.val_vms_delta.lbl1 = xstrdup (lbl1);
- attr.dw_attr_val.v.val_vms_delta.lbl2 = xstrdup (lbl2);
- add_dwarf_attr (die, &attr);
-}
-
/* Add a symbolic view identifier attribute value to a DIE. */
static inline void
add_dwarf_attr (die, &attr);
}
-/* Add a section offset attribute value to a DIE, an offset into the
- debug_loclists section. */
-
-static inline void
-add_AT_loclistsptr (dw_die_ref die, enum dwarf_attribute attr_kind,
- const char *label)
-{
- dw_attr_node attr;
-
- attr.dw_attr = attr_kind;
- attr.dw_attr_val.val_class = dw_val_class_loclistsptr;
- attr.dw_attr_val.val_entry = NULL;
- attr.dw_attr_val.v.val_lbl_id = xstrdup (label);
- add_dwarf_attr (die, &attr);
-}
-
/* Add a section offset attribute value to a DIE, an offset into the
debug_macinfo section. */
add_dwarf_attr (die, &attr);
}
-/* Add an offset attribute value to a DIE. */
-
-static inline void
-add_AT_offset (dw_die_ref die, enum dwarf_attribute attr_kind,
- unsigned HOST_WIDE_INT offset)
-{
- dw_attr_node attr;
-
- attr.dw_attr = attr_kind;
- attr.dw_attr_val.val_class = dw_val_class_offset;
- attr.dw_attr_val.val_entry = NULL;
- attr.dw_attr_val.v.val_offset = offset;
- add_dwarf_attr (die, &attr);
-}
-
/* Add a range_list attribute value to a DIE. When using
dwarf_split_debug_info, address attributes in dies destined for the
final executable should be direct references--setting the parameter
return a ? AT_lbl (a) : NULL;
}
-/* Return the "high pc" attribute value, typically associated with a subprogram
- DIE. Return null if the "high pc" attribute is either not present, or if it
- cannot be represented as an assembler label identifier. */
-
-static inline const char *
-get_AT_hi_pc (dw_die_ref die)
-{
- dw_attr_node *a = get_AT (die, DW_AT_high_pc);
-
- return a ? AT_lbl (a) : NULL;
-}
-
/* Return the value of the string attribute designated by ATTR_KIND, or
NULL if it is not present. */
}
}
-/* Returns 1 iff C is the sort of DIE that should go into a COMDAT CU.
- Basically, we want to choose the bits that are likely to be shared between
- compilations (types) and leave out the bits that are specific to individual
- compilations (functions). */
-
-static int
-is_comdat_die (dw_die_ref c)
-{
- /* I think we want to leave base types and __vtbl_ptr_type in the main CU, as
- we do for stabs. The advantage is a greater likelihood of sharing between
- objects that don't include headers in the same order (and therefore would
- put the base types in a different comdat). jason 8/28/00 */
-
- if (c->die_tag == DW_TAG_base_type)
- return 0;
-
- if (c->die_tag == DW_TAG_pointer_type
- || c->die_tag == DW_TAG_reference_type
- || c->die_tag == DW_TAG_rvalue_reference_type
- || c->die_tag == DW_TAG_const_type
- || c->die_tag == DW_TAG_volatile_type)
- {
- dw_die_ref t = get_AT_ref (c, DW_AT_type);
-
- return t ? is_comdat_die (t) : 0;
- }
-
- return is_type_die (c);
-}
-
/* Returns true iff C is a compile-unit DIE. */
static inline bool
return c && c->die_tag == DW_TAG_namespace;
}
-/* Returns true iff C is a class or structure DIE. */
-
-static inline bool
-is_class_die (dw_die_ref c)
-{
- return c && (c->die_tag == DW_TAG_class_type
- || c->die_tag == DW_TAG_structure_type);
-}
-
/* Return non-zero if this DIE is a template parameter. */
static inline bool
return die;
}
-/* Given a pointer to an arbitrary ..._TYPE tree node, return true if it is
- an enumerated type. */
-
-static inline int
-type_is_enum (const_tree type)
-{
- return TREE_CODE (type) == ENUMERAL_TYPE;
-}
-
/* Return the DBX register number described by a given RTL node. */
static unsigned int
return ret->expr;
}
-/* Given a value, round it up to the lowest multiple of `boundary'
- which is not less than the value itself. */
-
-static inline HOST_WIDE_INT
-ceiling (HOST_WIDE_INT value, unsigned int boundary)
-{
- return (((value + boundary - 1) / boundary) * boundary);
-}
-
/* Given a pointer to what is assumed to be a FIELD_DECL node, return a
pointer to the declared type for the relevant field variable, or return
`integer_type_node' if the given node turns out to be an
{
public:
line_event (int start, int next, int len) : m_start (start),
- m_next (next), m_delta (len - (next - start)) {}
+ m_delta (len - (next - start)) {}
int get_effective_column (int orig_column) const
{
private:
int m_start;
- int m_next;
int m_delta;
};
+2018-09-25 Martin Liska <mliska@suse.cz>
+
+ * trans.c (remove_suffix): Remove
+ unused function.
+
2018-09-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/87397
return t;
}
-
-/* Strip off a legitimate source ending from the input
- string NAME of length LEN. */
-
-static inline void
-remove_suffix (char *name, int len)
-{
- int i;
-
- for (i = 2; i < 8 && len > i; i++)
- {
- if (name[len - i] == '.')
- {
- name[len - i] = '\0';
- break;
- }
- }
-}
-
-
/* Creates a variable declaration with a given TYPE. */
tree
+2018-09-25 Martin Liska <mliska@suse.cz>
+
+ * gofrontend/escape.cc (Gogo::analyze_escape): Remove
+ usage of a parameter.
+ (Gogo::assign_connectivity): Likewise.
+ (class Escape_analysis_tag): Likewise.
+ (Gogo::tag_function): Likewise.
+ * gofrontend/expressions.cc (Call_expression::do_type): Likewise.
+ * gofrontend/gogo.h (class Gogo): Likewise.
+ * gofrontend/types.cc (class Call_multiple_result_type): Likewise.
+ (Type::make_call_multiple_result_type): Likewise.
+ * gofrontend/types.h (class Type): Likewise.
+ * gofrontend/wb.cc (class Check_escape): Likewise.
+ (Gogo::add_write_barriers): Likewise.
+
2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
* gospec.c (lang_specific_driver): Handle -r like -nostdlib.
for (std::vector<Named_object*>::iterator fn = stack.begin();
fn != stack.end();
++fn)
- this->tag_function(context, *fn);
+ this->tag_function(*fn);
if (this->debug_escape_level() != 0)
{
class Escape_analysis_assign : public Traverse
{
public:
- Escape_analysis_assign(Escape_context* context, Named_object* fn)
+ Escape_analysis_assign(Escape_context* context)
: Traverse(traverse_statements
| traverse_expressions),
- context_(context), fn_(fn)
+ context_(context)
{ }
// Model statements within a function as assignments and flows between nodes.
private:
// The escape context for this set of functions.
Escape_context* context_;
- // The current function being analyzed.
- Named_object* fn_;
};
// Helper function to detect self assignment like the following.
int save_depth = context->loop_depth();
context->set_loop_depth(1);
- Escape_analysis_assign ea(context, fn);
+ Escape_analysis_assign ea(context);
Function::Results* res = fn->func_value()->result_variables();
if (res != NULL)
{
class Escape_analysis_tag
{
public:
- Escape_analysis_tag(Escape_context* context)
- : context_(context)
+ Escape_analysis_tag()
{ }
// Add notes to the function's type about the escape information of its
// input parameters.
void
tag(Named_object* fn);
-
- private:
- Escape_context* context_;
};
void
// retain analysis results across imports.
void
-Gogo::tag_function(Escape_context* context, Named_object* fn)
+Gogo::tag_function(Named_object* fn)
{
- Escape_analysis_tag eat(context);
+ Escape_analysis_tag eat;
eat.tag(fn);
}
else if (results->size() == 1)
ret = results->begin()->type();
else
- ret = Type::make_call_multiple_result_type(this);
+ ret = Type::make_call_multiple_result_type();
this->type_ = ret;
// Add notes about the escape level of a function's input and output
// parameters for exporting and importing top level functions.
void
- tag_function(Escape_context*, Named_object*);
+ tag_function(Named_object*);
// Reclaim memory of escape analysis Nodes.
void
class Call_multiple_result_type : public Type
{
public:
- Call_multiple_result_type(Call_expression* call)
- : Type(TYPE_CALL_MULTIPLE_RESULT),
- call_(call)
+ Call_multiple_result_type()
+ : Type(TYPE_CALL_MULTIPLE_RESULT)
{ }
protected:
void
do_mangled_name(Gogo*, std::string*) const
{ go_assert(saw_errors()); }
-
- private:
- // The expression being called.
- Call_expression* call_;
};
// Make a call result type.
Type*
-Type::make_call_multiple_result_type(Call_expression* call)
+Type::make_call_multiple_result_type()
{
- return new Call_multiple_result_type(call);
+ return new Call_multiple_result_type();
}
// Class Struct_field.
make_nil_type();
static Type*
- make_call_multiple_result_type(Call_expression*);
+ make_call_multiple_result_type();
static Struct_type*
make_struct_type(Struct_field_list* fields, Location);
class Check_escape : public Traverse
{
public:
- Check_escape(Gogo* gogo)
- : Traverse(traverse_expressions | traverse_variables),
- gogo_(gogo)
+ Check_escape()
+ : Traverse(traverse_expressions | traverse_variables)
{ }
int
int
variable(Named_object*);
-
- private:
- Gogo* gogo_;
};
int
{
this->propagate_writebarrierrec();
- Check_escape chk(this);
+ Check_escape chk;
this->traverse(&chk);
}
#include "graphite.h"
-/* Assigns to RES the value of the INTEGER_CST T. */
-
-static inline void
-tree_int_to_gmp (tree t, mpz_t res)
-{
- wi::to_mpz (wi::to_wide (t), res, TYPE_SIGN (TREE_TYPE (t)));
-}
-
/* Return an isl identifier for the polyhedral basic block PBB. */
static isl_id *
return &plats->ctxlat;
}
-/* Return the lattice corresponding to the value range of the Ith formal
- parameter of the function described by INFO. */
-
-static inline ipcp_vr_lattice *
-ipa_get_vr_lat (struct ipa_node_params *info, int i)
-{
- struct ipcp_param_lattices *plats = ipa_get_parm_lattices (info, i);
- return &plats->m_value_range;
-}
-
/* Return whether LAT is a lattice with a single constant and without an
undefined value. */
}
\f
-
-/* The page contains code to extract memory address parts. */
-
-/* Wrapper around REGNO_OK_FOR_INDEX_P, to allow pseudos. */
-static inline bool
-ok_for_index_p_nonstrict (rtx reg)
-{
- unsigned regno = REGNO (reg);
-
- return regno >= FIRST_PSEUDO_REGISTER || REGNO_OK_FOR_INDEX_P (regno);
-}
-
-/* A version of regno_ok_for_base_p for use here, when all pseudos
- should count as OK. Arguments as for regno_ok_for_base_p. */
-static inline bool
-ok_for_base_p_nonstrict (rtx reg, machine_mode mode, addr_space_t as,
- enum rtx_code outer_code, enum rtx_code index_code)
-{
- unsigned regno = REGNO (reg);
-
- if (regno >= FIRST_PSEUDO_REGISTER)
- return true;
- return ok_for_base_p_1 (regno, mode, as, outer_code, index_code);
-}
-
-\f
-
/* The page contains major code to choose the current insn alternative
and generate reloads for it. */
/* Extended folder for chrecs. */
-/* Determines whether CST is not a constant evolution. */
-
-static inline bool
-is_not_constant_evolution (const_tree cst)
-{
- return (TREE_CODE (cst) == POLYNOMIAL_CHREC);
-}
-
-/* Fold CODE for a polynomial function and a constant. */
-
-static inline tree
-chrec_fold_poly_cst (enum tree_code code,
- tree type,
- tree poly,
- tree cst)
-{
- gcc_assert (poly);
- gcc_assert (cst);
- gcc_assert (TREE_CODE (poly) == POLYNOMIAL_CHREC);
- gcc_checking_assert (!is_not_constant_evolution (cst));
- gcc_checking_assert (useless_type_conversion_p (type, chrec_type (poly)));
-
- switch (code)
- {
- case PLUS_EXPR:
- return build_polynomial_chrec
- (CHREC_VARIABLE (poly),
- chrec_fold_plus (type, CHREC_LEFT (poly), cst),
- CHREC_RIGHT (poly));
-
- case MINUS_EXPR:
- return build_polynomial_chrec
- (CHREC_VARIABLE (poly),
- chrec_fold_minus (type, CHREC_LEFT (poly), cst),
- CHREC_RIGHT (poly));
-
- case MULT_EXPR:
- return build_polynomial_chrec
- (CHREC_VARIABLE (poly),
- chrec_fold_multiply (type, CHREC_LEFT (poly), cst),
- chrec_fold_multiply (type, CHREC_RIGHT (poly), cst));
-
- default:
- return chrec_dont_know;
- }
-}
-
/* Fold the addition of two polynomial functions. */
static inline tree
return true;
}
-/* Returns true if at least one successor in on critical edge. */
-static inline bool
-has_pred_critical_p (basic_block bb)
-{
- edge e;
- edge_iterator ei;
-
- FOR_EACH_EDGE (e, ei, bb->preds)
- if (EDGE_COUNT (e->src->succs) > 1)
- return true;
- return false;
-}
-
/* Return true when BB is if-convertible. This routine does not check
basic block's statements and phis.
return graph;
}
-
-/* Shortcut routine to print messages to file F of the form:
- "STR1 EXPR1 STR2 EXPR2 STR3." */
-
-static inline void
-print_exprs (FILE *f, const char *str1, tree expr1, const char *str2,
- tree expr2, const char *str3)
-{
- fprintf (f, "%s", str1);
- print_generic_expr (f, expr1, TDF_SLIM);
- fprintf (f, "%s", str2);
- print_generic_expr (f, expr2, TDF_SLIM);
- fprintf (f, "%s", str3);
-}
-
-
/* Print a failure to coalesce a MUST_COALESCE pair X and Y. */
static inline void
return bitmap_bit_p (&set->values, value_id);
}
-static inline bool
-bitmap_set_contains_expr (bitmap_set_t set, const pre_expr expr)
-{
- return bitmap_bit_p (&set->expressions, get_expression_id (expr));
-}
-
/* Return true if two bitmap sets are equal. */
static bool
return true;
}
-/* Returns true if TC is AND or OR. */
-
-static inline bool
-is_and_or_or_p (enum tree_code tc, tree type)
-{
- return (tc == BIT_IOR_EXPR
- || (tc == BIT_AND_EXPR
- && (type == 0 || TREE_CODE (type) == BOOLEAN_TYPE)));
-}
-
/* Returns true if X1 is the negate of X2. */
static inline bool
}
-/* Return true if value ranges VR0 and VR1 have a non-empty
- intersection.
-
- Benchmark compile/20001226-1.c compilation time after changing this
- function.
- */
-
-static inline bool
-value_ranges_intersect_p (const value_range *vr0, const value_range *vr1)
-{
- /* The value ranges do not intersect if the maximum of the first range is
- less than the minimum of the second range or vice versa.
- When those relations are unknown, we can't do any better. */
- if (operand_less_p (vr0->max, vr1->min) != 0)
- return false;
- if (operand_less_p (vr1->max, vr0->min) != 0)
- return false;
- return true;
-}
-
-
/* Return TRUE if *VR includes the value zero. */
bool
return value_inside_range (zero, vr->min, vr->max) != 0;
}
-/* Return true if *VR is know to only contain nonnegative values. */
-
-static inline bool
-value_range_nonnegative_p (const value_range *vr)
-{
- /* Testing for VR_ANTI_RANGE is not useful here as any anti-range
- which would return a useful value should be encoded as a
- VR_RANGE. */
- if (vr->type == VR_RANGE)
- {
- int result = compare_values (vr->min, integer_zero_node);
- return (result == 0 || result == 1);
- }
-
- return false;
-}
-
/* If *VR has a value rante that is a single constant value return that,
otherwise return NULL_TREE. */