public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix PR middle-end/57370
@ 2013-06-27 17:21 Easwaran Raman
  2013-07-12 15:36 ` Easwaran Raman
  0 siblings, 1 reply; 16+ messages in thread
From: Easwaran Raman @ 2013-06-27 17:21 UTC (permalink / raw)
  To: gcc-patches; +Cc: Richard Biener

A newly generated statement in build_and_add_sum  function of
tree-ssa-reassoc.c has to be assigned the UID of its adjacent
statement. In one instance, it was assigned the wrong uid (of an
earlier phi statement) which messed up the IR and caused the test
program to hang. Bootstraps and no test regressions on x86_64/linux.
Ok for trunk?

Thanks,
Easwaran


2013-06-27  Easwaran Raman  <eraman@google.com>

        PR middle-end/57370
        * tree-ssa-reassoc.c (build_and_add_sum): Do not use the UID of a phi
        node for a non-phi gimple statement.

testsuite/ChangeLog:
2013-06-27  Easwaran Raman  <eraman@google.com>

        PR middle-end/57370
        * gfortran.dg/reassoc_12.f90: New testcase.


Index: gcc/testsuite/gfortran.dg/reassoc_12.f90
===================================================================
--- gcc/testsuite/gfortran.dg/reassoc_12.f90 (revision 0)
+++ gcc/testsuite/gfortran.dg/reassoc_12.f90 (revision 0)
@@ -0,0 +1,74 @@
+! { dg-do compile }
+! { dg-options "-O2 -ffast-math" }
+! PR middle-end/57370
+
+ SUBROUTINE xb88_lr_adiabatic_lda_calc(e_ndrho_ndrho_ndrho, &
+                                       grad_deriv,npoints, sx)
+    IMPLICIT REAL*8 (t)
+    INTEGER, PARAMETER :: dp=8
+    REAL(kind=dp), DIMENSION(1:npoints) :: e_ndrho_ndrho_ndrho, &
+                                           e_ndrho_ndrho_rho
+      DO ii=1,npoints
+          IF( grad_deriv >= 2 .OR. grad_deriv == -2 ) THEN
+            t1425 = t233 * t557
+            t1429 = beta * t225
+            t1622 = t327 * t1621
+            t1626 = t327 * t1625
+            t1632 = t327 * t1631
+            t1685 = t105 * t1684
+            t2057 = t1636 + t8 * (t2635 + t3288)
+          END IF
+          IF( grad_deriv >= 3 .OR. grad_deriv == -3 ) THEN
+            t5469 = t5440 - t5443 - t5446 - t5449 - &
+                    t5451 - t5454 - t5456 + t5459  - &
+                    t5462 + t5466 - t5468
+            t5478 = 0.240e2_dp * t1616 * t973 * t645 * t1425
+            t5489 = 0.1600000000e2_dp * t1429 * t1658
+            t5531 = 0.160e2_dp * t112 * t1626
+            t5533 = 0.160e2_dp * t112 * t1632
+            t5537 = 0.160e2_dp * t112 * t1622
+            t5541 = t5472 - t5478 - t5523 + t5525 + &
+                    t5531 + t5533 + t5535 + t5537 + &
+                    t5540
+            t5565 = t112 * t1685
+            t5575 = t5545 - t5548 + t5551 + t5553 - &
+                    t5558 + t5560 - t5562 + t5564 - &
+                    0.80e1_dp * t5565 + t5568 + t5572 + &
+                    t5574
+            t5611 = t5579 - t5585 + t5590 - t5595 + &
+                    t5597 - t5602 + t5604 + t5607 + &
+                    t5610
+            t5613 = t5469 + t5541 + t5575 + t5611
+            t6223 = t6189 - &
+                    0.3333333336e0_dp  * t83 * t84 * t5613 + &
+                    t6222
+            t6227 = - t8 * (t5305 + t6223)
+            e_ndrho_ndrho_rho(ii) = e_ndrho_ndrho_rho(ii) + &
+                     t6227 * sx
+            t6352 = t5440 - t5443 - t5446 - t5449 - &
+                    t5451 - t5454 + &
+                    0.40e1_dp * t102  * t327 * t2057 * t557 - &
+                    t5456 + t5459 - t5462 + t5466 - &
+                    t5468
+            t6363 = t5480 - t5489 + &
+                    0.9600000000e2_dp  * t1054 * t640 * t3679
+            t6367 = t5472 - t5474 - t5478 - t5523 + &
+                    t5525 + t5531 + t5533 + t5535 + &
+                    t5537 - 0.20e1_dp * t102 * t105 * t6363 + &
+                    t5540
+            t6370 = t5545 - t5548 + t5551 + t5553 - &
+                    t5558 + t5560 - t5562 + t5564  - &
+                    0.40e1_dp * t5565 + &
+                    t5568 + t5572 + t5574
+            t6373 = t5579 - t5585 + t5590 - t5595 + &
+                    t5597 - t5602 + t5604 + t5607 + &
+                    t5610
+            t6375 = t6352 + t6367 + t6370 + t6373
+            t6380 = - 0.3333333336e0_dp * t83 * t84 * t6375 + t5701
+            t6669 = -t4704 - t8 * (t6344 + t6380 + t6665)
+            e_ndrho_ndrho_ndrho(ii) = e_ndrho_ndrho_ndrho(ii) + &
+                     t6669 * sx
+          END IF
+      END DO
+  END SUBROUTINE xb88_lr_adiabatic_lda_calc
+
Index: gcc/tree-ssa-reassoc.c
===================================================================
--- gcc/tree-ssa-reassoc.c        (revision 200429)
+++ gcc/tree-ssa-reassoc.c        (working copy)
@@ -1207,7 +1207,7 @@ build_and_add_sum (tree type, tree op1, tree op2,
       if (gimple_code (op1def) == GIMPLE_PHI)
         {
           gsi = gsi_after_labels (gimple_bb (op1def));
-           gimple_set_uid (sum, gimple_uid (op1def));
+          gimple_set_uid (sum, gimple_uid (gsi_stmt (gsi)));
           gsi_insert_before (&gsi, sum, GSI_NEW_STMT);
         }
       else

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2013-09-09  8:54 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-27 17:21 Fix PR middle-end/57370 Easwaran Raman
2013-07-12 15:36 ` Easwaran Raman
     [not found]   ` <CAPK5YPYXHtxs=+LpJNeZuKU+hmx80zjG1qQgeetxLt6qtGBSJA@mail.gmail.com>
2013-08-07 16:52     ` Easwaran Raman
2013-08-27 10:48     ` Richard Biener
2013-08-30  0:41       ` Easwaran Raman
2013-08-30  8:30         ` Richard Biener
2013-08-30 16:14           ` Easwaran Raman
2013-08-30 16:27             ` Jakub Jelinek
2013-08-30 17:02               ` Easwaran Raman
2013-08-30 17:18                 ` Jakub Jelinek
2013-09-02  9:31             ` Richard Biener
2013-09-04 17:50               ` Easwaran Raman
2013-09-05 19:23       ` Easwaran Raman
2013-09-06  7:05         ` Richard Biener
2013-09-06 18:47           ` Easwaran Raman
2013-09-09  8:58             ` Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).