re PR middle-end/82976 (Error: non-trivial conversion at assignment since r254526)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 7 Apr 2018 23:52:03 +0000 (23:52 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sat, 7 Apr 2018 23:52:03 +0000 (23:52 +0000)
2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
Andrew Pinski <pinsika@gcc.gnu.org>

PR middle-end/82976
* match.pd: Use constant_boolean_node of correct type instead of
boolean_true_node or boolean_false_node for simplifying
pointer comparisons to zero.

2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR middle-end/82976
* gfortran.dg/realloc_on_assign_16a.f90: New test.

Co-Authored-By: Andrew Pinski <pinskia@gcc.gnu.org>
From-SVN: r259212

gcc/ChangeLog
gcc/match.pd
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/realloc_on_assign_16a.f90 [new file with mode: 0644]

index a263974867937ffe70e693acc9bb043cd7a56fac..2430cce09688d51b6e6bf11a967243c0ddc9a2e5 100644 (file)
@@ -1,3 +1,11 @@
+2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+       Andrew Pinski <pinsika@gcc.gnu.org>
+
+       PR middle-end/82976
+       * match.pd: Use constant_boolean_node of correct type instead of
+       boolean_true_node or boolean_false_node for simplifying
+       pointer comparisons to zero.
+
 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/80021
index 02753c0f85ce4c606e94d53f609602906888ad5d..1bbf09f96f0162864363bc997d3c0c72de401d30 100644 (file)
@@ -3700,7 +3700,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
   (neeq @0 @1)
   (if (POINTER_TYPE_P (TREE_TYPE (@0))
        && ptrs_compare_unequal (@0, @1))
-   { neeq == EQ_EXPR ? boolean_false_node : boolean_true_node; })))
+   { constant_boolean_node (neeq != EQ_EXPR, type); })))
 
 /* PR70920: Transform (intptr_t)x eq/ne CST to x eq/ne (typeof x) CST.
    and (typeof ptr_cst) x eq/ne ptr_cst to x eq/ne (typeof x) CST.
index 00ac96fca36399add7fbd33ca0615be0f462c95e..08a80f15e9935bbeaf577a5a3cda57455b65fa0d 100644 (file)
@@ -1,3 +1,8 @@
+2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR middle-end/82976
+       * gfortran.dg/realloc_on_assign_16a.f90: New test.
+
 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/85257
diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_16a.f90 b/gcc/testsuite/gfortran.dg/realloc_on_assign_16a.f90
new file mode 100644 (file)
index 0000000..9d16d6c
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! { dg-options "-Ofast -fno-tree-forwprop" }
+! Test that PR 82976 is fixed, this used to ICE.
+!
+! Contributed by Stefan Mauerberger  <stefan.mauerberger@gmail.com>
+!
+PROGRAM main
+    !USE MPI
+
+    TYPE :: test_typ
+        REAL, ALLOCATABLE :: a(:)
+    END TYPE
+
+    TYPE(test_typ) :: xx, yy
+    TYPE(test_typ), ALLOCATABLE :: conc(:)
+
+    !CALL MPI_INIT(i)
+
+    xx = test_typ( [1.0,2.0] )
+    yy = test_typ( [4.0,4.9] )
+
+    conc = [ xx, yy ]
+
+    if (any (int (10.0*conc(1)%a) .ne. [10,20])) STOP 1
+    if (any (int (10.0*conc(2)%a) .ne. [40,49])) STOP 2
+
+    !CALL MPI_FINALIZE(i)
+
+END PROGRAM main