diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ac0fec1f16612fec0c415fe08d5c5fea42af023..77788ab21315501928bb388ab088c0d8083cf26a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index e26347b0d86fa5a23a8ea77fc7e8b8dcadb159e5..5baf635e820ae97c56a05049e0bcb82cdc9b28a1 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -3899,7 +3899,9 @@ (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")]) @@ -3926,7 +3928,9 @@ (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")]) @@ -3972,7 +3976,9 @@ (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")]) @@ -3994,7 +4000,9 @@ (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")]) @@ -4038,7 +4046,9 @@ (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")]) @@ -4063,7 +4073,9 @@ (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")]) @@ -4088,7 +4100,9 @@ (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")]) @@ -4113,7 +4127,9 @@ (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")]) @@ -4135,7 +4151,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")]) @@ -4153,7 +4170,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")]) @@ -4241,7 +4259,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")])