OSDN Git Service

2006-11-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Nov 2006 17:04:56 +0000 (17:04 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Nov 2006 17:04:56 +0000 (17:04 +0000)
        PR tree-opt/29788
        * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
        to what is the const decl is a place holder for.

2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/29788
        * gfortran.fortran-torture/compile/inline_1.f90:
        New testcase.

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

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/inline_1.f90 [new file with mode: 0644]

index eb0dd2e..382a8a3 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR tree-opt/29788
+       * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
+       to what is the const decl is a place holder for.
+
 2006-11-15  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.opt: New target option -mx87regparm.
index eb3b457..143dcad 100644 (file)
@@ -13038,6 +13038,9 @@ fold_indirect_ref_1 (tree type, tree op0)
     {
       tree op = TREE_OPERAND (sub, 0);
       tree optype = TREE_TYPE (op);
+      /* *&CONST_DECL -> to the value of the const decl.  */
+      if (TREE_CODE (op) == CONST_DECL)
+       return DECL_INITIAL (op);
       /* *&p => p;  make sure to handle *&"str"[cst] here.  */
       if (type == optype)
        {
index d5f56ee..b60e1b8 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR tree-opt/29788
+       * gfortran.fortran-torture/compile/inline_1.f90:
+       New testcase.
+
 2006-11-15  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.target/i386/x87regparm-1.c: New test.
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/inline_1.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/inline_1.f90
new file mode 100644 (file)
index 0000000..58c02f2
--- /dev/null
@@ -0,0 +1,17 @@
+program gfcbug43
+  call try_fit (1)
+  call try_fit (1)
+contains
+  subroutine try_fit (k)
+    call fit (1, debug=.true.)
+  end subroutine try_fit
+  subroutine fit (k, debug)
+    logical,  intent(in),  optional :: debug
+    do j = 1, 2
+      maxerr1 = funk (r ,x1 , x1)
+    end do
+    if (debug) then
+      print "help"
+    end if
+  end subroutine fit
+end program gfcbug43