]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc/java
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Feb 2006 23:34:06 +0000 (23:34 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Feb 2006 23:34:06 +0000 (23:34 +0000)
PR java/25676:
* builtins.c (max_builtin): Skip floating point 'max'.
(min_builtin): Skip floating point 'min'.
(check_for_builtin): Never return NULL_TREE.
libjava
PR java/25676:
* testsuite/libjava.lang/pr25676.out: New file.
* testsuite/libjava.lang/pr25676.java: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110599 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/builtins.c
libjava/ChangeLog
libjava/testsuite/libjava.lang/pr25676.java [new file with mode: 0644]
libjava/testsuite/libjava.lang/pr25676.out [new file with mode: 0644]

index bce385b48457000040c198686a725c834b6b6d02..5d2515ace3f1f101c2a5267263405ac8a8230497 100644 (file)
@@ -1,3 +1,10 @@
+2006-02-04  Tom Tromey  <tromey@redhat.com>
+
+       PR java/25676:
+       * builtins.c (max_builtin): Skip floating point 'max'.
+       (min_builtin): Skip floating point 'min'.
+       (check_for_builtin): Never return NULL_TREE.
+
 2006-02-04  Tom Tromey  <tromey@redhat.com>
 
        PR java/26097:
index ff6da981a0ea80b676745a6a41ebd9dd1bd701bb..5082cd02afc82949230d3b0cce8b1b14cab8c2ea 100644 (file)
@@ -1,5 +1,5 @@
 /* Built-in and inline functions for gcj
-   Copyright (C) 2001, 2003, 2004, 2005
+   Copyright (C) 2001, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -94,6 +94,9 @@ static GTY(()) struct builtin_record java_builtins[] =
 static tree
 max_builtin (tree method_return_type, tree method_arguments)
 {
+  /* MAX_EXPR does not handle -0.0 in the Java style.  */
+  if (TREE_CODE (method_return_type) == REAL_TYPE)
+    return NULL_TREE;
   return fold_build2 (MAX_EXPR, method_return_type,
                      TREE_VALUE (method_arguments),
                      TREE_VALUE (TREE_CHAIN (method_arguments)));
@@ -102,6 +105,9 @@ max_builtin (tree method_return_type, tree method_arguments)
 static tree
 min_builtin (tree method_return_type, tree method_arguments)
 {
+  /* MIN_EXPR does not handle -0.0 in the Java style.  */
+  if (TREE_CODE (method_return_type) == REAL_TYPE)
+    return NULL_TREE;
   return fold_build2 (MIN_EXPR, method_return_type,
                      TREE_VALUE (method_arguments),
                      TREE_VALUE (TREE_CHAIN (method_arguments)));
@@ -265,11 +271,15 @@ check_for_builtin (tree method, tree call)
              tree fn;
 
              if (java_builtins[i].creator != NULL)
-               return (*java_builtins[i].creator) (method_return_type,
-                                                   method_arguments);
+               {
+                 tree result
+                   = (*java_builtins[i].creator) (method_return_type,
+                                                  method_arguments);
+                 return result == NULL_TREE ? call : result;
+               }
              fn = built_in_decls[java_builtins[i].builtin_code];
              if (fn == NULL_TREE)
-               return NULL_TREE;
+               return call;
              return java_build_function_call_expr (fn, method_arguments);
            }
        }
index bdb0a89adab1294b949249e428a3b428930f997b..970d975a1e87acf5eea3946ebdd101ca332b9b0d 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-04  Tom Tromey  <tromey@redhat.com>
+
+       PR java/25676:
+       * testsuite/libjava.lang/pr25676.out: New file.
+       * testsuite/libjava.lang/pr25676.java: New file.
+
 2006-02-03  Thomas Fitzsimmons  <fitzsim@redhat.com>
 
        * Makefile.am (src.zip): Update src.zip file search to look in
diff --git a/libjava/testsuite/libjava.lang/pr25676.java b/libjava/testsuite/libjava.lang/pr25676.java
new file mode 100644 (file)
index 0000000..e79a2c2
--- /dev/null
@@ -0,0 +1,12 @@
+public class pr25676
+{
+  public static double g(double a, double b)
+  {
+    return Math.min(a, b);
+  }
+  public static void main(String a[])
+  {
+    System.out.println (g(0.0, -0.0));
+    System.out.println (g(-0.0, 0.0));
+  }
+}
diff --git a/libjava/testsuite/libjava.lang/pr25676.out b/libjava/testsuite/libjava.lang/pr25676.out
new file mode 100644 (file)
index 0000000..e6ffe0d
--- /dev/null
@@ -0,0 +1,2 @@
+-0.0
+-0.0