On Mon, 4 Nov 2013, Richard Biener wrote:
Well, host_integer_p (, 0) looks correct to me. But ...
Ok, I'll put it back.
Index: gcc/tree-ssa-alias.h
===================================================================
--- gcc/tree-ssa-alias.h (revision 204267)
+++ gcc/tree-ssa-alias.h (working copy)
@@ -139,30 +139,30 @@ extern void pt_solution_set_var (struct
extern void dump_pta_stats (FILE *);
extern GTY(()) struct pt_solution ipa_escaped_pt;
/* Return true, if the two ranges [POS1, SIZE1] and [POS2, SIZE2]
overlap. SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
range is open-ended. Otherwise return false. */
static inline bool
-ranges_overlap_p (unsigned HOST_WIDE_INT pos1,
- unsigned HOST_WIDE_INT size1,
- unsigned HOST_WIDE_INT pos2,
- unsigned HOST_WIDE_INT size2)
+ranges_overlap_p (HOST_WIDE_INT pos1,
+ HOST_WIDE_INT size1,
+ HOST_WIDE_INT pos2,
+ HOST_WIDE_INT size2)
I think size[12] should still be unsigned (we don't allow negative
sizes but only the special value -1U which we special-case only to
avoid pos + size to wrap)
But all we do with size[12] is compare it to -1 and perform arithmetic
with pos[12]. At least for the second one, we need to cast size to a
signed type so the comparisons make sense (unless we decide to use a
double_int there). So I thought I would do the cast in the argument.
Otherwise, I'll start the function with:
HOST_WIDE_INT ssize1 = (HOST_WIDE_INT)size1;
and replace size1 with ssize1 through the function.
Is the reason of keeping size[12] unsigned for documentation? Or am I
missing a reason why I may be breaking things?
--
Marc Glisse