Commit 0339d239 by DJ Delorie Committed by DJ Delorie

integrate.c (compare_blocks): Make comparisons safe for when sizeof(int) < sizeof(char *).

* integrate.c (compare_blocks): Make comparisons safe for when
sizeof(int) < sizeof(char *).
(find_block): Likewise.

From-SVN: r52232
parent cc4d5fec
2002-04-12 DJ Delorie <dj@redhat.com>
* integrate.c (compare_blocks): Make comparisons safe for when
sizeof(int) < sizeof(char *).
(find_block): Likewise.
2002-04-12 Jan Hubicka <jh@suse.cz> 2002-04-12 Jan Hubicka <jh@suse.cz>
David Edelsohn <edelsohn@gnu.org> David Edelsohn <edelsohn@gnu.org>
......
...@@ -595,7 +595,8 @@ process_reg_param (map, loc, copy) ...@@ -595,7 +595,8 @@ process_reg_param (map, loc, copy)
} }
/* Compare two BLOCKs for qsort. The key we sort on is the /* Compare two BLOCKs for qsort. The key we sort on is the
BLOCK_ABSTRACT_ORIGIN of the blocks. */ BLOCK_ABSTRACT_ORIGIN of the blocks. We cannot just subtract the
two pointers, because it may overflow sizeof(int). */
static int static int
compare_blocks (v1, v2) compare_blocks (v1, v2)
...@@ -604,9 +605,12 @@ compare_blocks (v1, v2) ...@@ -604,9 +605,12 @@ compare_blocks (v1, v2)
{ {
tree b1 = *((const tree *) v1); tree b1 = *((const tree *) v1);
tree b2 = *((const tree *) v2); tree b2 = *((const tree *) v2);
char *p1 = (char *) BLOCK_ABSTRACT_ORIGIN (b1);
char *p2 = (char *) BLOCK_ABSTRACT_ORIGIN (b2);
return ((char *) BLOCK_ABSTRACT_ORIGIN (b1) if (p1 == p2)
- (char *) BLOCK_ABSTRACT_ORIGIN (b2)); return 0;
return p1 < p2 ? -1 : 1;
} }
/* Compare two BLOCKs for bsearch. The first pointer corresponds to /* Compare two BLOCKs for bsearch. The first pointer corresponds to
...@@ -619,8 +623,12 @@ find_block (v1, v2) ...@@ -619,8 +623,12 @@ find_block (v1, v2)
{ {
const union tree_node *b1 = (const union tree_node *) v1; const union tree_node *b1 = (const union tree_node *) v1;
tree b2 = *((const tree *) v2); tree b2 = *((const tree *) v2);
char *p1 = (char *) b1;
char *p2 = (char *) BLOCK_ABSTRACT_ORIGIN (b2);
return ((const char *) b1 - (char *) BLOCK_ABSTRACT_ORIGIN (b2)); if (p1 == p2)
return 0;
return p1 < p2 ? -1 : 1;
} }
/* Integrate the procedure defined by FNDECL. Note that this function /* Integrate the procedure defined by FNDECL. Note that this function
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment