i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__.
authorJan Hubicka <jh@suse.cz>
Mon, 30 Sep 2002 13:00:32 +0000 (15:00 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 30 Sep 2002 13:00:32 +0000 (13:00 +0000)
* i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__.

* gcse.c (cprop_jump): Check that the register has not
been modified
(cprop_jump): Likewise.

From-SVN: r57648

gcc/ChangeLog
gcc/config/i386/i386.h
gcc/gcse.c

index 15dfb25db7f2269a46a5ef424647dccdfea36f94..76793fb896f0ff29d76a76c7ab763ae4961a848f 100644 (file)
@@ -1,3 +1,11 @@
+Mon Sep 30 14:57:18 CEST 2002  Jan Hubicka  <jh@suse.cz>
+
+       * i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__.
+
+       * gcse.c (cprop_jump): Check that the register has not
+       been modified
+       (cprop_jump): Likewise.
+
 2002-09-30  Richard Earnshaw  <rearnsha@arm.com>
 
        * arm.h (BASE_REG_CLASS): Always return LO_REGS for Thumb.
index 68fa7409b7ea44b4995a1c64da466f63a4c903cd..af9c37fc131776369171bcaf648b75e7d3180386 100644 (file)
@@ -529,6 +529,10 @@ extern int x86_prefetch_sse;
        builtin_define ("__SSE__");                             \
       if (TARGET_SSE2)                                         \
        builtin_define ("__SSE2__");                            \
+      if (TARGET_SSE_MATH && TARGET_SSE)                       \
+       builtin_define ("__SSE_MATH__");                        \
+      if (TARGET_SSE_MATH && TARGET_SSE2)                      \
+       builtin_define ("__SSE2_MATH__");                       \
                                                                \
       /* Built-ins based on -march=.  */                       \
       if (ix86_arch == PROCESSOR_I486)                         \
index fbe3fcb1200782106c2f5d31ef0a3eac9be84f2e..081275a0c7de1e87728c2d40c6094f28c991455b 100644 (file)
@@ -4054,7 +4054,9 @@ cprop_jump (bb, setcc, jump, from, src)
 
   /* First substitute in the INSN condition as the SET_SRC of the JUMP,
      then substitute that given values in this expanded JUMP.  */
-  if (setcc != NULL)
+  if (setcc != NULL
+      && !modified_between_p (from, setcc, jump)
+      && !modified_between_p (src, setcc, jump))
     {
       rtx setcc_set = single_set (setcc);
       new_set = simplify_replace_rtx (SET_SRC (set),
@@ -4068,7 +4070,7 @@ cprop_jump (bb, setcc, jump, from, src)
 
   /* If no simplification can be made, then try the next
      register.  */
-  if (rtx_equal_p (new, new_set))
+  if (rtx_equal_p (new, new_set) || rtx_equal_p (new, SET_SRC (set)))
     return 0;
 
   /* If this is now a no-op delete it, otherwise this must be a valid insn.  */
@@ -4076,6 +4078,11 @@ cprop_jump (bb, setcc, jump, from, src)
     delete_insn (jump);
   else
     {
+      /* Ensure the value computed inside the jump insn to be equivalent
+         to one computed by setcc.  */
+      if (setcc 
+         && modified_in_p (new, setcc))
+       return 0;
       if (! validate_change (jump, &SET_SRC (set), new, 0))
        return 0;