summaryrefslogtreecommitdiffstats
path: root/gcc/java
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-17 15:09:11 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-17 15:09:11 +0000
commitcc1a5185c7d9f249a5026abe7c40d91a05651e6a (patch)
tree84788bbf3494f51aaf3b9a72b5efd940a15ed280 /gcc/java
parentb34c39765dcfb29481dbc16f2b9633986ed3daec (diff)
downloadppe42-gcc-cc1a5185c7d9f249a5026abe7c40d91a05651e6a.tar.gz
ppe42-gcc-cc1a5185c7d9f249a5026abe7c40d91a05651e6a.zip
2004-12-17 Andrew Haley <aph@redhat.com>
PR java/18931 * typeck.c (convert): Use a CONVERT_EXPR when converting to BOOLEAN_TYPE or CHAR_TYPE. (convert_to_boolean, convert_to_char) : Remove. * convert.h (convert_to_boolean, convert_to_char) : Remove. * expr.c (expand_load_internal): Do type conversion if type is not as required. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92314 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog12
-rw-r--r--gcc/java/convert.h2
-rw-r--r--gcc/java/expr.c3
-rw-r--r--gcc/java/typeck.c18
4 files changed, 16 insertions, 19 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 4a88e83fa05..fba18330945 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,13 @@
+2004-12-17 Andrew Haley <aph@redhat.com>
+
+ PR java/18931
+ * typeck.c (convert): Use a CONVERT_EXPR when converting to
+ BOOLEAN_TYPE or CHAR_TYPE.
+ (convert_to_boolean, convert_to_char) : Remove.
+ * convert.h (convert_to_boolean, convert_to_char) : Remove.
+ * expr.c (expand_load_internal): Do type conversion if type is not
+ as required.
+
2004-12-13 Danny Smith <dannysmith@users.sourceforge.net>
PR target/18459
@@ -51,7 +61,7 @@
range we're demoting.
2004-12-03 Andrew Haley <aph@redhat.com>
-
+
PR java/18697
* class.c (layout_class_method): Don't fail to override a method
simply because it has DECL_ARTIFICIAL set.
diff --git a/gcc/java/convert.h b/gcc/java/convert.h
index bcdaf18acfc..c27ceed2510 100644
--- a/gcc/java/convert.h
+++ b/gcc/java/convert.h
@@ -20,8 +20,6 @@ Boston, MA 02111-1307, USA. */
/* Written by Jeffrey Hsu <hsu@cygnus.com> */
-extern tree convert_to_boolean (tree, tree);
-extern tree convert_to_char (tree, tree);
extern tree convert_to_integer (tree type, tree expr);
extern tree convert_to_real (tree type, tree expr);
extern tree convert_to_pointer (tree type, tree expr);
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index fdc8ae69ce6..8c1ad70e141 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -1329,6 +1329,9 @@ expand_load_internal (int index, tree type, int pc)
value into it. Then we push this new local on the stack.
Hopefully this all gets optimized out. */
copy = build_decl (VAR_DECL, NULL_TREE, type);
+ if (INTEGRAL_TYPE_P (type)
+ && TREE_TYPE (copy) != TREE_TYPE (var))
+ var = convert (type, var);
java_add_local_var (copy);
java_add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (var), copy, var));
diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c
index 4db69b4ea0c..2b85e475d95 100644
--- a/gcc/java/typeck.c
+++ b/gcc/java/typeck.c
@@ -129,8 +129,8 @@ convert (tree type, tree expr)
return error_mark_node;
if (code == VOID_TYPE)
return build1 (CONVERT_EXPR, type, expr);
- if (code == BOOLEAN_TYPE)
- return fold (convert_to_boolean (type, expr));
+ if (code == BOOLEAN_TYPE || code == CHAR_TYPE)
+ return fold (build1 (CONVERT_EXPR, type, expr));
if (code == INTEGER_TYPE)
{
if ((really_constant_p (expr)
@@ -151,8 +151,6 @@ convert (tree type, tree expr)
}
if (code == REAL_TYPE)
return fold (convert_to_real (type, expr));
- if (code == CHAR_TYPE)
- return fold (convert_to_char (type, expr));
if (code == POINTER_TYPE)
return fold (convert_to_pointer (type, expr));
error ("conversion to non-scalar type requested");
@@ -160,18 +158,6 @@ convert (tree type, tree expr)
}
-tree
-convert_to_char (tree type, tree expr)
-{
- return build1 (NOP_EXPR, type, expr);
-}
-
-tree
-convert_to_boolean (tree type, tree expr)
-{
- return build1 (NOP_EXPR, type, expr);
-}
-
/* Return a data type that has machine mode MODE.
If the mode is an integer,
then UNSIGNEDP selects between signed and unsigned types. */
OpenPOWER on IntegriCloud