http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54850



--- Comment #5 from Pat Haugen <pthaugen at gcc dot gnu.org> 2012-10-17 
23:38:16 UTC ---

I'm seeing the same thing on cpu2006 benchmark 44.namd on PowerPC64. A load is

being moved above a store to the same location, starting with revision 191493.



Reduced testcase and compile command:



[pthaugen@igoo pr54850]$ cat junk.C

// g++ -S -m64 -O2 -mcpu=power7 junk.C



class Vector {

   public:

     double x,y,z;



     //  v1 += v2;

     inline void operator+=(const Vector &v2) {

       x += v2.x;

       y += v2.y;

       z += v2.z;

     }

};





Vector* foo(Vector *p, Vector *shift, Vector *p1, int n) {

  int i;



  for(i = 0; i < n; i++) {

    p[i] = p1[i];

    p[i] += *shift;

  }

  return p;

}



[pthaugen@igoo pr54850]$ /home/pthaugen/install/gcc/temp/bin/g++ -S -m64 -O2

-mcpu=power7 junk.C





The sched1 dump correctly lists forward dependencies of the initial store(s) to

p1[i] to the subsequent loads of p1[i], but those dependencies are gone in the

.sched2 pass.



>From .sched1  (stores are insn 75,77,79, and dependent loads are insn

80,84,88):



;;   ======================================================

;;   -- basic block 4 from 74 to 96 -- before reload

;;   ======================================================



;;   --------------- forward dependences: ------------



;;   --- Region Dependences --- b 4 bb 0

;;      insn  code    bb   dep  prio  cost   reservation

;;      ----  ----    --   ---  ----  ----   -----------

;;       74   379     4     0    47     2   DU_power7,LSU_power7        : 96 92

91n 87n 83n 79n 77n 75nm

;;       76   379     4     0    45     2   DU_power7,LSU_power7        : 96 92

91n 87n 83n 79n 77nm 75n

;;       78   379     4     0    45     2   DU_power7,LSU_power7        : 96 92

91n 87n 83n 79nm 77n 75n

;;       75   379     4     3    45     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 93 89n 85n 83n 81n 80n

;;       77   379     4     3    31     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 93 89n 87n 85n 84n

;;       79   379     4     3    17     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 93 91n 89n 88n

;;       80   366     4     1    39     2   DU_power7,LSU_power7        : 96 93

83n 82

;;       81   366     4     1    39     2   DU_power7,LSU_power7        : 96

91n 87n 83n 82

;;       82   740     4     2    37     6   DU_power7,VSU_power7        : 96 83

;;       83   366     4     7    31     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 93 89n 85n

;;       84   366     4     1    25     2   DU_power7,LSU_power7        : 96 93

87n 86

;;       85   366     4     3    25     2   DU_power7,LSU_power7        : 96

91n 87n 86

;;       86   740     4     2    23     6   DU_power7,VSU_power7        : 96 87

;;       87   366     4     8    17     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 93 89n

;;       88   366     4     1    11     2   DU_power7,LSU_power7        : 96 93

91n 90







>From .sched2 pass:



;;   ======================================================

;;   -- basic block 4 from 74 to 96 -- after reload

;;   ======================================================



;;   --------------- forward dependences: ------------



;;   --- Region Dependences --- b 4 bb 0

;;      insn  code    bb   dep  prio  cost   reservation

;;      ----  ----    --   ---  ----  ----   -----------

;;       74   379     4     0    50     2   DU_power7,LSU_power7        : 96

91n 87n 83n 92 79n 77n 75nm

;;       76   379     4     0    48     2   DU_power7,LSU_power7        : 96

91n 87n 83n 92 79n 77nm 75n

;;       78   379     4     0    48     2   DU_power7,LSU_power7        : 96

91n 87n 83n 92 79nm 77n 75n

;;       75   379     4     3    48     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 89n 85n 81n 93

;;       77   379     4     3    43     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 89n 85n 93

;;       79   379     4     3    43     6   DU_power7,(LSU_power7+FXU_power7)  

: 96m 89n 93

;;       92    80     4     3     7     1   DU_power7,FXU_power7        : 96 95

;;       95   545     4     1     6     1   DU_power7,FXU_power7        : 96m

;;       93    80     4     3    43     1   DU_power7,FXU_power7        : 96 91

87 83 88 84 80

;;       81   366     4     1    42     3   DU_power7,LSU_power7        : 96

91n 87n 83n 82m

;;       80   366     4     1    42     3   DU_power7,LSU_power7        : 96

83n 88 82

;;       84   366     4     1    27     3   DU_power7,LSU_power7        : 96

87n 86

;;       82   740     4     2    39     6   DU_power7,VSU_power7        : 96 85

83 88

;;       88   366     4     3    12     3   DU_power7,LSU_power7        : 96

91n 90

Reply via email to