mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-28 16:01:00 +08:00
convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW bits of the argument.
* convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW bits of the argument. Return quickly if the argument is already of the correct type. Call fold_build1 instead of build1. Tidy up blank lines. From-SVN: r112511
This commit is contained in:
parent
9b71c701c6
commit
0a931ce5d4
@ -1,3 +1,10 @@
|
||||
2006-03-29 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW
|
||||
and TREE_CONSTANT_OVERFLOW bits of the argument. Return
|
||||
quickly if the argument is already of the correct type.
|
||||
Call fold_build1 instead of build1. Tidy up blank lines.
|
||||
|
||||
2006-03-29 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* genemit.c (main): Add tm-constrs.h to included headers.
|
||||
|
@ -33,22 +33,31 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
#include "toplev.h"
|
||||
#include "langhooks.h"
|
||||
#include "real.h"
|
||||
/* Convert EXPR to some pointer or reference type TYPE.
|
||||
|
||||
/* Convert EXPR to some pointer or reference type TYPE.
|
||||
EXPR must be pointer, reference, integer, enumeral, or literal zero;
|
||||
in other cases error is called. */
|
||||
|
||||
tree
|
||||
convert_to_pointer (tree type, tree expr)
|
||||
{
|
||||
if (TREE_TYPE (expr) == type)
|
||||
return expr;
|
||||
|
||||
if (integer_zerop (expr))
|
||||
return build_int_cst (type, 0);
|
||||
{
|
||||
tree t = build_int_cst (type, 0);
|
||||
if (TREE_OVERFLOW (expr) || TREE_CONSTANT_OVERFLOW (expr))
|
||||
t = force_fit_type (t, 0, TREE_OVERFLOW (expr),
|
||||
TREE_CONSTANT_OVERFLOW (expr));
|
||||
return t;
|
||||
}
|
||||
|
||||
switch (TREE_CODE (TREE_TYPE (expr)))
|
||||
{
|
||||
case POINTER_TYPE:
|
||||
case REFERENCE_TYPE:
|
||||
return build1 (NOP_EXPR, type, expr);
|
||||
return fold_build1 (NOP_EXPR, type, expr);
|
||||
|
||||
case INTEGER_TYPE:
|
||||
case ENUMERAL_TYPE:
|
||||
|
Loading…
x
Reference in New Issue
Block a user