tree.c (int_fits_type_p): Compare the result of force_fit_type with the original constant rather than...

* tree.c (int_fits_type_p): Compare the result of force_fit_type
	with the original constant rather than require TREE_OVERFLOW.

From-SVN: r92786
This commit is contained in:
Roger Sayle 2005-01-01 17:29:53 +00:00 committed by Roger Sayle
parent 7a4515d72d
commit 69618c4943
2 changed files with 11 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2005-01-01 Roger Sayle <roger@eyesopen.com>
* tree.c (int_fits_type_p): Compare the result of force_fit_type
with the original constant rather than require TREE_OVERFLOW.
2005-01-01 Steven Bosscher <stevenb@suse.de> 2005-01-01 Steven Bosscher <stevenb@suse.de>
PR middle-end/17544 PR middle-end/17544

View File

@ -1,6 +1,6 @@
/* Language-independent node constructors for parse phase of GNU compiler. /* Language-independent node constructors for parse phase of GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
@ -4926,10 +4926,11 @@ int_fits_type_p (tree c, tree type)
/* Or to force_fit_type, if nothing else. */ /* Or to force_fit_type, if nothing else. */
else else
{ {
c = copy_node (c); tree n = copy_node (c);
TREE_TYPE (c) = type; TREE_TYPE (n) = type;
c = force_fit_type (c, -1, false, false); n = force_fit_type (n, -1, false, false);
return !TREE_OVERFLOW (c); return TREE_INT_CST_HIGH (n) == TREE_INT_CST_HIGH (c)
&& TREE_INT_CST_LOW (n) == TREE_INT_CST_LOW (c);
} }
} }