aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2005-12-05 16:24:47 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2005-12-05 16:24:47 +0000
commit53917868b8f482e3c378d7b67f469c768d720206 (patch)
tree93a3b56ff049d43a4d3bd219deaac5249b0ab4ed /gcc/ada
parent2abefe3d992a31a4f060f25857b067b397b7bac9 (diff)
downloadgcc-53917868b8f482e3c378d7b67f469c768d720206.zip
gcc-53917868b8f482e3c378d7b67f469c768d720206.tar.gz
gcc-53917868b8f482e3c378d7b67f469c768d720206.tar.bz2
utils.c (convert): Use fold_convert where appropriate.
2005-12-05 Richard Guenther <rguenther@suse.de> * utils.c (convert): Use fold_convert where appropriate. From-SVN: r108061
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/utils.c17
2 files changed, 12 insertions, 9 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index d418de5..3d978b5 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2005-12-05 Richard Guenther <rguenther@suse.de>
+
+ * utils.c (convert): Use fold_convert where appropriate.
+
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (gnatlib): Fix regex, using \. instead of . when
diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c
index 0e0153f..f029dbf 100644
--- a/gcc/ada/utils.c
+++ b/gcc/ada/utils.c
@@ -2789,9 +2789,8 @@ convert (tree type, tree expr)
/* If the input is a biased type, adjust first. */
if (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype))
return convert (type, fold (build2 (PLUS_EXPR, TREE_TYPE (etype),
- fold (build1 (NOP_EXPR,
- TREE_TYPE (etype),
- expr)),
+ fold_convert (TREE_TYPE (etype),
+ expr),
TYPE_MIN_VALUE (etype))));
/* If the input is a justified modular type, we need to extract the actual
@@ -2940,7 +2939,7 @@ convert (tree type, tree expr)
else if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (etype)
|| (code == INTEGER_CST && ecode == INTEGER_CST
&& (type == TREE_TYPE (etype) || etype == TREE_TYPE (type))))
- return fold (build1 (NOP_EXPR, type, expr));
+ return fold_convert (type, expr);
switch (code)
{
@@ -2948,7 +2947,7 @@ convert (tree type, tree expr)
return build1 (CONVERT_EXPR, type, expr);
case BOOLEAN_TYPE:
- return fold (build1 (NOP_EXPR, type, gnat_truthvalue_conversion (expr)));
+ return fold_convert (type, gnat_truthvalue_conversion (expr));
case INTEGER_TYPE:
if (TYPE_HAS_ACTUAL_BOUNDS_P (type)
@@ -2956,10 +2955,10 @@ convert (tree type, tree expr)
|| (ecode == RECORD_TYPE && TYPE_CONTAINS_TEMPLATE_P (etype))))
return unchecked_convert (type, expr, false);
else if (TYPE_BIASED_REPRESENTATION_P (type))
- return fold (build1 (CONVERT_EXPR, type,
- fold (build2 (MINUS_EXPR, TREE_TYPE (type),
- convert (TREE_TYPE (type), expr),
- TYPE_MIN_VALUE (type)))));
+ return fold_convert (type,
+ fold_build2 (MINUS_EXPR, TREE_TYPE (type),
+ convert (TREE_TYPE (type), expr),
+ TYPE_MIN_VALUE (type)));
/* ... fall through ... */