re PR java/19070 (internal compiler error: in generate_bytecode_conditional, at java...
authorRanjit Mathew <rmathew@hotmail.com>
Tue, 25 Jan 2005 06:12:32 +0000 (06:12 +0000)
committerRanjit Mathew <rmathew@gcc.gnu.org>
Tue, 25 Jan 2005 06:12:32 +0000 (06:12 +0000)
        PR java/19070
        * parse.y (patch_binop): Allow comparisons against NULL only
        if the other operand is of a reference type.

From-SVN: r94205

gcc/java/ChangeLog
gcc/java/parse.y

index 116df16036da79011363caea57c0e00296f58eda..ee418645219b48a16781b4a0231c255f04975064 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-18  Ranjit Mathew  <rmathew@hotmail.com>
+
+       PR java/19070
+       * parse.y (patch_binop): Allow comparisons against NULL only
+       if the other operand is of a reference type.
+
 2005-01-24  Tom Tromey  <tromey@redhat.com>
 
        * java-tree.h (gcj_abi_version): Declare.
index b09bb87515741d41050c1ec41a8f93f8f97f614b..1c3eb92b1eb20a8775a6f60be55f603479efdd69 100644 (file)
@@ -1,6 +1,6 @@
 /* Source code parsing and tree node generation for the GNU compiler
    for the Java(TM) language.
-   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
    Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
 
@@ -13798,7 +13798,9 @@ patch_binop (tree node, tree wfl_op1, tree wfl_op2)
       /* Types have to be either references or the null type. If
          they're references, it must be possible to convert either
          type to the other by casting conversion. */
-      else if (op1 == null_pointer_node || op2 == null_pointer_node
+      else if ((op1 == null_pointer_node && op2 == null_pointer_node)
+               || (op1 == null_pointer_node && JREFERENCE_TYPE_P (op2_type))
+               || (JREFERENCE_TYPE_P (op1_type) && op2 == null_pointer_node)
               || (JREFERENCE_TYPE_P (op1_type) && JREFERENCE_TYPE_P (op2_type)
                   && (valid_ref_assignconv_cast_p (op1_type, op2_type, 1)
                       || valid_ref_assignconv_cast_p (op2_type,