rs6000.c (rs6000_float_const): Remove warning.
authorGeoffrey Keating <geoffk@redhat.com>
Mon, 12 Feb 2001 19:47:11 +0000 (19:47 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Mon, 12 Feb 2001 19:47:11 +0000 (19:47 +0000)
* config/rs6000/rs6000.c (rs6000_float_const): Remove warning.
(setup_incoming_varargs): Remove warning.

* config/rs6000/rs6000.c (validate_condition_mode): When
flag_fast_math, allow floating-point conditionals to be reversed.
(rs6000_generate_compare): When flag_fast_math, don't generate
cror operations for FP conditionals.

From-SVN: r39610

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 7c2bac9..98e0a9f 100644 (file)
@@ -1,5 +1,13 @@
 2001-02-12  Geoffrey Keating  <geoffk@redhat.com>
 
+       * config/rs6000/rs6000.c (rs6000_float_const): Remove warning.
+       (setup_incoming_varargs): Remove warning.
+
+       * config/rs6000/rs6000.c (validate_condition_mode): When
+       flag_fast_math, allow floating-point conditionals to be reversed.
+       (rs6000_generate_compare): When flag_fast_math, don't generate
+       cror operations for FP conditionals.
+
        * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Handle
        -mcall-i960.
        (ASM_SPEC): Likewise.
index 2640c60..5f14dcd 100644 (file)
@@ -471,7 +471,8 @@ rs6000_float_const (string, mode)
      const char *string;
      enum machine_mode mode;
 {
-  REAL_VALUE_TYPE value = REAL_VALUE_ATOF (string, mode);
+  REAL_VALUE_TYPE value;
+  value = REAL_VALUE_ATOF (string, mode);
   return immed_real_const_1 (value, mode);
 }
 \f
@@ -2206,7 +2207,7 @@ setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl)
 {
   CUMULATIVE_ARGS next_cum;
   int reg_size = TARGET_32BIT ? 4 : 8;
-  rtx save_area, mem;
+  rtx save_area = NULL_RTX, mem;
   int first_reg_offset, set;
 
   if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
@@ -3237,8 +3238,9 @@ validate_condition_mode (code, mode)
          || code == UNGE || code == UNLE))
     abort();
   
-  /* These should never be generated.  */
+  /* These should never be generated except for fast_math.  */
   if (mode == CCFPmode
+      && ! flag_fast_math
       && (code == LE || code == GE
          || code == UNEQ || code == LTGT
          || code == UNGT || code == UNLT))
@@ -4451,8 +4453,10 @@ rs6000_generate_compare (code)
                                           rs6000_compare_op0, 
                                           rs6000_compare_op1)));
   
-  /* Some kinds of FP comparisons need an OR operation.  */
+  /* Some kinds of FP comparisons need an OR operation;
+     except that for fast_math we don't bother.  */
   if (rs6000_compare_fp_p
+      && ! flag_fast_math
       && (code == LE || code == GE
          || code == UNEQ || code == LTGT
          || code == UNGT || code == UNLT))