OSDN Git Service

2005-10-08 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 8 Oct 2005 21:41:50 +0000 (21:41 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 8 Oct 2005 21:41:50 +0000 (21:41 +0000)
        PR target/24136
        * config/rs6000/darwin.md (movdf_low_si): Remove early clobber.
        Rewrite for no need for the early clobber.
2005-10-07  Andrew Pinski  <pinskia@physics.uc.edu>

        PR target/24136
        * gfortran.fortran-torture/compile/pr24136.f: New test.

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

gcc/ChangeLog
gcc/config/rs6000/darwin.md
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/pr24136.f [new file with mode: 0644]

index 1e5dd4c..19a856c 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-08  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       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  <kazu@codesourcery.com>
 
        Merge from csl-arm-branch:
index 0732817..49c6caa 100644 (file)
@@ -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:
index 811c6cb..eca1940 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR target/24136
+       * gfortran.fortran-torture/compile/pr24136.f: New test.
+
 2005-10-08  James A. Morrison  <phython@gcc.gnu.org>
 
        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 (file)
index 0000000..87e3c61
--- /dev/null
@@ -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