re PR middle-end/32931 (FORALL and WHERE give an ICE with -m64)
authorAndrew Pinski <pinskia@gmail.com>
Sun, 4 Nov 2007 19:04:49 +0000 (11:04 -0800)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Sun, 4 Nov 2007 19:04:49 +0000 (11:04 -0800)
2007-11-04  Andrew Pinski  <pinskia@gmail.com>

        PR middle-end/32931
        * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
        for TRUTH_NOT_EXPR to type.

2007-11-04  Andrew Pinski  <pinskia@gmail.com>

        PR middle-end/32931
        * gfortran.fortran-torture/compile/forall-1.f90: New testcase.

From-SVN: r129886

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

index 7a984d33857951b617d848c15ae3a7b085c955f5..7e16d426b95e6aac2615431a7552b4720988efa5 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-04  Andrew Pinski  <pinskia@gmail.com>
+
+       PR middle-end/32931
+       * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
+       for TRUTH_NOT_EXPR to type.
+
 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
 
        * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
index a7d2756116b991cb82d0bbaa59867c1477db7db3..a09c9ea7ea0e80870101113fe8eeff678fccc4f4 100644 (file)
@@ -11709,12 +11709,12 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
       /* bool_var != 1 becomes !bool_var. */
       if (TREE_CODE (TREE_TYPE (arg0)) == BOOLEAN_TYPE && integer_onep (arg1)
           && code == NE_EXPR)
-        return fold_build1 (TRUTH_NOT_EXPR, type, arg0);
+        return fold_build1 (TRUTH_NOT_EXPR, type, fold_convert (type, arg0));
 
       /* bool_var == 0 becomes !bool_var. */
       if (TREE_CODE (TREE_TYPE (arg0)) == BOOLEAN_TYPE && integer_zerop (arg1)
           && code == EQ_EXPR)
-        return fold_build1 (TRUTH_NOT_EXPR, type, arg0);
+        return fold_build1 (TRUTH_NOT_EXPR, type, fold_convert (type, arg0));
 
       /* If this is an equality comparison of the address of two non-weak,
         unaliased symbols neither of which are extern (since we do not
index 1f5e5caaf023c6c3df1a3eee84bd68303a264b3c..7d13083e68290c2673889009e6863d50e9b2d296 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-04  Andrew Pinski  <pinskia@gmail.com>
+
+       PR middle-end/32931
+       * gfortran.fortran-torture/compile/forall-1.f90: New testcase.
+
 2007-11-04  David Edelsohn  <edelsohn@gnu.org>
 
        * g++.dg/cpp/_Pragma1.C: Disable on AIX.
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/forall-1.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/forall-1.f90
new file mode 100644 (file)
index 0000000..caaea08
--- /dev/null
@@ -0,0 +1,7 @@
+  integer i, a(1)
+  logical(kind=8) s(1)
+
+  s = .true.
+  a = 42
+  forall (i=1:1, .not. s(1)) a(i) = 0
+  end