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

Reply via email to