GCC Middle and Back End API Reference
|
Data Fields | |
gimple | stmt |
vec< data_reference_p > | datarefs |
bool | has_mem_write |
bool | has_mem_reads |
@verbatim
Loop distribution. Copyright (C) 2006-2013 Free Software Foundation, Inc. Contributed by Georges-Andre Silber Georg and Sebastian Pop es-A ndre. Silb er@en smp. frsebas. tian .pop@ amd. com
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.
This pass performs loop distribution: for example, the loop |DO I = 2, N | A(I) = B(I) + C | D(I) = A(I-1)*E |ENDDO is transformed to |DOALL I = 2, N | A(I) = B(I) + C |ENDDO | |DOALL I = 2, N | D(I) = A(I-1)*E |ENDDO This pass uses an RDG, Reduced Dependence Graph built on top of the data dependence relations. The RDG is then topologically sorted to obtain a map of information producers/consumers based on which it generates the new loops.
A Reduced Dependence Graph (RDG) vertex representing a statement.
vec<data_reference_p> rdg_vertex::datarefs |
Vector of data-references in this statement.
bool rdg_vertex::has_mem_reads |
True when the statement contains a read from memory.
bool rdg_vertex::has_mem_write |
True when the statement contains a write to memory.
gimple rdg_vertex::stmt |
The statement represented by this vertex.