Tue Nov 2 14:21:37 1999 Jason Eckhardt <jle@cygnus.com>
authorjle <jle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Nov 1999 20:29:50 +0000 (20:29 +0000)
committerjle <jle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Nov 1999 20:29:50 +0000 (20:29 +0000)
        * config/pa/pa.md (height reduction patterns): Add checks for
        overlapping operands to avoid semantic-destroying splits for
        height reduction patterns.

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

gcc/ChangeLog
gcc/config/pa/pa.md

index 9ac0fec..77788ab 100644 (file)
@@ -1,3 +1,9 @@
+Tue Nov  2 14:21:37 1999  Jason Eckhardt  <jle@cygnus.com>
+
+       * config/pa/pa.md (height reduction patterns): Add checks for
+        overlapping operands to avoid semantic-destroying splits for 
+        height reduction patterns.
+
 Tue Nov  2 15:27:31 1999  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
 
        * configure.in (m68k-hp-hpux*, xm_alloca.h): The underscore should
@@ -85,6 +91,7 @@ Mon Nov  1 15:41:01 1999  Mark P. Mitchell  <mark@codesourcery.com>
 
        * combine.c (combine_instructions): Use xmalloc instead of alloca.
 
+>>>>>>> 1.4890
 Mon Nov  1 13:22:30 1999  Richard Henderson  <rth@cygnus.com>
 
        * toplev.c (rest_of_compilation): Don't optimize the CFG
@@ -834,6 +841,7 @@ Wed Oct 27 12:33:40 1999  Mark Mitchell  <mark@codesourcery.com>
        * stupid.c (find_clobbered_regs): Take additional parameter.
        (stupid_life_analysis): Adjust calls to note_stores.
        
+>>>>>>> 1.4876
 Wed Oct 27 19:26:12 1999  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/coff.h (STRUCTURE_SIZE_BOUNDARY): Delete
index e26347b..5baf635 100644 (file)
                 (match_operand:DF 3 "register_operand" "f")))
    (set (match_operand:DF 4 "register_operand" "=&f")
        (mult:DF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                 (match_operand:SF 3 "register_operand" "f")))
    (set (match_operand:SF 4 "register_operand" "=&f")
        (mult:SF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                         (match_operand:DF 2 "register_operand" "f"))))
    (set (match_operand:DF 3 "register_operand" "=&f")
        (mult:DF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[3], operands[1])
+          || reg_overlap_mentioned_p (operands[3], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                         (match_operand:SF 2 "register_operand" "f"))))
    (set (match_operand:SF 3 "register_operand" "=&f")
        (mult:SF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[3], operands[1])
+          || reg_overlap_mentioned_p (operands[3], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                 (match_operand:DF 3 "register_operand" "f")))
    (set (match_operand:DF 4 "register_operand" "=&f")
        (mult:DF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                 (match_operand:SF 3 "register_operand" "f")))
    (set (match_operand:SF 4 "register_operand" "=&f")
        (mult:SF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                           (match_operand:DF 2 "register_operand" "f"))))
    (set (match_operand:DF 4 "register_operand" "=&f")
        (mult:DF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
                           (match_operand:SF 2 "register_operand" "f"))))
    (set (match_operand:SF 4 "register_operand" "=&f")
        (mult:SF (match_dup 1) (match_dup 2)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! (reg_overlap_mentioned_p (operands[4], operands[1])
+          || reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "fpmuldbl")
    (set_attr "length" "8")])
   [(set (match_operand:DF 0 "register_operand" "=f")
        (neg:DF (abs:DF (match_operand:DF 1 "register_operand" "f"))))
    (set (match_operand:DF 2 "register_operand" "=&f") (abs:DF (match_dup 1)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! reg_overlap_mentioned_p (operands[2], operands[1]))"
   "#"
   [(set_attr "type" "fpalu")
    (set_attr "length" "8")])
   [(set (match_operand:SF 0 "register_operand" "=f")
        (neg:SF (abs:SF (match_operand:SF 1 "register_operand" "f"))))
    (set (match_operand:SF 2 "register_operand" "=&f") (abs:SF (match_dup 1)))]
-  "! TARGET_SOFT_FLOAT && TARGET_PA_20"
+  "(! TARGET_SOFT_FLOAT && TARGET_PA_20
+    && ! reg_overlap_mentioned_p (operands[2], operands[1]))"
   "#"
   [(set_attr "type" "fpalu")
    (set_attr "length" "8")])
    (set (match_operand:SI 4 "register_operand" "=&r")
        (ashift:SI (match_dup 2)
                   (match_operand:SI 5 "const_int_operand" "i")))]
-  "INTVAL (operands[5]) == exact_log2 (INTVAL (operands[3]))"
+  "(INTVAL (operands[5]) == exact_log2 (INTVAL (operands[3]))
+    && ! (reg_overlap_mentioned_p (operands[4], operands[2])))"
   "#"
   [(set_attr "type" "binary")
    (set_attr "length" "8")])