diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e5dd4c106e..19a856cafc5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-10-08 Andrew Pinski + + PR target/24136 + * config/rs6000/darwin.md (movdf_low_si): Remove early clobber. + Rewrite for no need for the early clobber. + 2005-10-08 Kazu Hirata Merge from csl-arm-branch: diff --git a/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md index 0732817ef15..49c6caa03ce 100644 --- a/gcc/config/rs6000/darwin.md +++ b/gcc/config/rs6000/darwin.md @@ -28,10 +28,10 @@ Boston, MA 02110-1301, USA. */ [(set_attr "length" "4")]) (define_insn "movdf_low_si" - [(set (match_operand:DF 0 "gpc_reg_operand" "=f,!&r") + [(set (match_operand:DF 0 "gpc_reg_operand" "=f,!r") (mem:DF (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b,b") (match_operand 2 "" ""))))] - "TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && ! TARGET_64BIT" + "TARGET_MACHO && TARGET_HARD_FLOAT && TARGET_FPRS && !TARGET_64BIT" "* { switch (which_alternative) @@ -45,9 +45,9 @@ Boston, MA 02110-1301, USA. */ return \"ld %0,lo16(%2)(%1)\"; else { - output_asm_insn (\"{l|lwz} %0,lo16(%2)(%1)\", operands); - output_asm_insn (\"{cal|la} %L0,lo16(%2)(%1)\", operands); - return (\"{l|lwz} %L0,4(%L0)\"); + output_asm_insn (\"{cal|la} %0,lo16(%2)(%1)\", operands); + output_asm_insn (\"{l|lwz} %L0,4(%0)\", operands); + return (\"{l|lwz} %0,0(%0)\"); } } default: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 811c6cb6dbb..eca19404c5d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-07 Andrew Pinski + + PR target/24136 + * gfortran.fortran-torture/compile/pr24136.f: New test. + 2005-10-08 James A. Morrison PR c++/22172 diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f b/gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f new file mode 100644 index 00000000000..87e3c61e03a --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f @@ -0,0 +1,43 @@ + subroutine electra(ro,t,ye,ee,pe,se + a ,eer,eet,per,pet,ser,set,keyps) + implicit real*8 (a-h,o-z) + common /nunu/ nu,dnudr,dnudb,eta,detadnu,nup + data facen,facpr,facs,rg /2.037300d+24,1.358200d+24,1.686304d-10 + 1,8.314339d+07/ + data a1,a2,a3,a4 /2.059815d-03,-7.027778d-03 + 1,4.219747d-02,-1.132427d+00/ + beta=facs*t + b32=b12*beta + u=(f62/f52)**2 + dudnu=2.0d0*u*(df62/f62-df52/f52) + x=beta*u + f=1.0d0+x*(2.5d0+x*(2.0d0+0.5d0*x)) + df=2.5d0+x*(4.0d0+1.5d0*x) + dfdb=u*df + fi32=f32+(f-1.0d0)*f52/u + dfidnu=dfidu*dudnu+df32+(f-1.0d0)*df52/u + dfidb=dfdb*f52/u + dfidbet=dfidb+dfidnu*dnudb + gs=sqrt(g) + dg=0.75d0*gs + dgdb=u*dg + dgdu=beta*dg + gi32=f32+(g-1.0d0)*f52/u + dgidu=(u*dgdu-g+1.0d0)*f52/us + dgidnu=dgidu*dudnu+df32+(g-1.0d0)*df52/u + dgidb=dgdb*f52/u + dgidbet=dgidb+dgidnu*dnudb + dgidroe=dgidnu*dnudr + em=facen*b52*fi32 + demdbet=facen*b32*(2.5d0*fi32+beta*dfidbet) + dpmdbet=facpr*b32*(2.5d0*gi32+beta*dgidbet) + demdroe=facen*b52*dfidroe + dpmdroe=facpr*b52*dgidroe + call divine(nup,fp12,dfp12,s12) + s42=2.0d0 + call divine(nup,fp42,dfp42,s42) + eer=(ye*(demdroe+depdroe)-(em+ep)/ro)/ro + eet=facs*(demdbet+depdbet)/ro + per=ye*(dpmdroe+dppdroe) + pet=facs*(dpmdbet+dppdbet) + end