OSDN Git Service

2004-12-17 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Dec 2004 15:09:11 +0000 (15:09 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Dec 2004 15:09:11 +0000 (15:09 +0000)
        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

gcc/java/ChangeLog
gcc/java/convert.h
gcc/java/expr.c
gcc/java/typeck.c

index 4a88e83..fba1833 100644 (file)
@@ -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.
index bcdaf18..c27ceed 100644 (file)
@@ -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);
index fdc8ae6..8c1ad70 100644 (file)
@@ -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));
   
index 4db69b4..2b85e47 100644 (file)
@@ -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.  */