OSDN Git Service

*** empty log message ***
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jun 1992 19:50:09 +0000 (19:50 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jun 1992 19:50:09 +0000 (19:50 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1213 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/i386/i386.h
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/rs6000/rs6000.h
gcc/integrate.c
gcc/loop.c
gcc/protoize.c

index 69ea279..847cf3e 100644 (file)
@@ -1170,7 +1170,7 @@ while (0)
    For floating-point equality comparisons, CCFPEQmode should be used.
    VOIDmode should be used in all other cases.  */
 
-#define SELECT_CC_MODE(OP,X) \
+#define SELECT_CC_MODE(OP,X,Y) \
   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT                 \
    && ((OP) == EQ || (OP) == NE) ? CCFPEQmode : CCmode)
 
index 653edd2..1d0a3c5 100644 (file)
@@ -1631,7 +1631,7 @@ gen_compare_reg (code, x, y)
      enum rtx_code code;
      rtx x, y;
 {
-  enum machine_mode mode = SELECT_CC_MODE (code, x);
+  enum machine_mode mode = SELECT_CC_MODE (code, x, y);
   rtx cc_reg = gen_rtx (REG, mode, 0);
 
   emit_insn (gen_rtx (SET, VOIDmode, cc_reg,
index d3a1357..ee28c2d 100644 (file)
@@ -1288,7 +1288,7 @@ while (0)
    should be used.  CC_NOOVmode should be used when the first operand is a
    PLUS, MINUS, or NEG.  CCmode should be used when no special processing is
    needed.  */
-#define SELECT_CC_MODE(OP,X) \
+#define SELECT_CC_MODE(OP,X,Y) \
   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? CCFPmode : CCmode)    \
 
 /* A function address in a call instruction
index 094d4db..8b44a9a 100644 (file)
@@ -1268,7 +1268,7 @@ struct rs6000_args {int words, fregno, nargs_prototype; };
    CCEQmode should be used when we are doing an inequality comparison on
    the result of a comparison. CCmode should be used in all other cases.  */
 
-#define SELECT_CC_MODE(OP,X) \
+#define SELECT_CC_MODE(OP,X,Y) \
   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT ? CCFPmode      \
    : (OP) == GTU || (OP) == LTU || (OP) == GEU || (OP) == LEU ? CCUNSmode \
    : (((OP) == EQ || (OP) == NE) && GET_RTX_CLASS (GET_CODE (X)) == '<'   \
index a10f483..367d76f 100644 (file)
@@ -2376,6 +2376,11 @@ subst_constants (loc, insn, map)
          op_mode = GET_MODE (XEXP (x, 1));
        new = simplify_relational_operation (code, op_mode,
                                             XEXP (x, 0), XEXP (x, 1));
+#ifdef FLOAT_STORE_FLAG_VALUE
+       if (new != 0 && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
+         new = ((new == const0_rtx) ? CONST0_RTX (GET_MODE (x))
+                : immed_real_const_1 (FLOAT_STORE_FLAG_VALUE, GET_MODE (x)));
+#endif
        break;
       }
 
index 24dff2d..c3007c8 100644 (file)
@@ -6254,18 +6254,32 @@ get_condition (jump, earliest)
          enum machine_mode inner_mode = GET_MODE (SET_SRC (set));
 
          if ((GET_CODE (SET_SRC (set)) == COMPARE
-              || ((code == NE
-                  || (code == LT
-                      && GET_MODE_BITSIZE (inner_mode) <= HOST_BITS_PER_INT
-                      && (STORE_FLAG_VALUE
-                          & (1 << (GET_MODE_BITSIZE (inner_mode) - 1)))))
+              || (((code == NE
+                    || (code == LT
+                        && GET_MODE_CLASS (inner_mode) == MODE_INT
+                        && GET_MODE_BITSIZE (inner_mode) <= HOST_BITS_PER_INT
+                        && (STORE_FLAG_VALUE
+                            & (1 << (GET_MODE_BITSIZE (inner_mode) - 1))))
+#ifdef FLOAT_STORE_FLAG_VALUE
+                    || (code == LT
+                        && GET_MODE_CLASS (inner_mode) == MODE_FLOAT
+                        && FLOAT_STORE_FLAG_VALUE < 0)
+#endif
+                    ))
                   && GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<')))
            x = SET_SRC (set);
-         else if ((code == EQ
-                   || (code == GE
-                       && GET_MODE_BITSIZE (inner_mode) <= HOST_BITS_PER_INT
-                       && (STORE_FLAG_VALUE
-                           & (1 << (GET_MODE_BITSIZE (inner_mode) - 1)))))
+         else if (((code == EQ
+                    || (code == GE
+                        && GET_MODE_BITSIZE (inner_mode) <= HOST_BITS_PER_INT
+                        && GET_MODE_CLASS (inner_mode) == MODE_INT
+                        && (STORE_FLAG_VALUE
+                            & (1 << (GET_MODE_BITSIZE (inner_mode) - 1))))
+#ifdef FLOAT_STORE_FLAG_VALUE
+                    || (code == GE
+                        && GET_MODE_CLASS (inner_mode) == MODE_FLOAT
+                        && FLOAT_STORE_FLAG_VALUE < 0)
+#eneif
+                    ))
                   && GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<')
            {
              /* We might have reversed a LT to get a GE here.  But this wasn't
index 0850924..53ae866 100644 (file)
@@ -194,15 +194,6 @@ extern char *   strrchr ();
 #define STRINGIFY(STRING) "STRING"
 #endif
 
-/* POSIX systems will not have definitions for WIFEXITED or WEXITSTATUS.
-   Define them correctly and so that they work for all environments.  */
-
-#undef WIFEXITED
-#define WIFEXITED(status_word) ((*((int *)&status_word) & 0xff) == 0x00)
-
-#undef WEXITSTATUS
-#define WEXITSTATUS(status_word) ((*((int *)&status_word) & 0xff00) >> 8)
-
 /* Define a default place to find the SYSCALLS.X file.  */
 
 #ifndef STD_PROTO_DIR