GCC Middle and Back End API Reference
|
Data Fields | |
int | num_dependence_tests |
int | num_dependence_dependent |
int | num_dependence_independent |
int | num_dependence_undetermined |
int | num_subscript_tests |
int | num_subscript_undetermined |
int | num_same_subscript_function |
int | num_ziv |
int | num_ziv_independent |
int | num_ziv_dependent |
int | num_ziv_unimplemented |
int | num_siv |
int | num_siv_independent |
int | num_siv_dependent |
int | num_siv_unimplemented |
int | num_miv |
int | num_miv_independent |
int | num_miv_dependent |
int | num_miv_unimplemented |
@verbatim Data references and dependences detectors.
Copyright (C) 2003-2013 Free Software Foundation, Inc. Contributed by Sebastian Pop pop@c ri.e nsmp. fr
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 walks a given loop structure searching for array references. The information about the array accesses is recorded in DATA_REFERENCE structures. The basic test for determining the dependences is: given two access functions chrec1 and chrec2 to a same array, and x and y two vectors from the iteration domain, the same element of the array is accessed twice at iterations x and y if and only if: | chrec1 (x) == chrec2 (y). The goals of this analysis are: - to determine the independence: the relation between two independent accesses is qualified with the chrec_known (this information allows a loop parallelization), - when two data references access the same data, to qualify the dependence relation with classic dependence representations: - distance vectors - direction vectors - loop carried level dependence - polyhedron dependence or with the chains of recurrences based representation, - to define a knowledge base for storing the data dependence information, - to define an interface to access this data. Definitions: - subscript: given two array accesses a subscript is the tuple composed of the access functions for a given dimension. Example: Given A[f1][f2][f3] and B[g1][g2][g3], there are three subscripts: (f1, g1), (f2, g2), (f3, g3). - Diophantine equation: an equation whose coefficients and solutions are integer constants, for example the equation | 3*x + 2*y = 1 has an integer solution x = 1 and y = -1. References: - "Advanced Compilation for High Performance Computing" by Randy Allen and Ken Kennedy. http://citeseer.ist.psu.edu/goff91practical.html - "Loop Transformations for Restructuring Compilers - The Foundations" by Utpal Banerjee.
int datadep_stats::num_dependence_dependent |
Referenced by compute_data_dependences_for_loop(), and subscript_dependence_tester().
int datadep_stats::num_dependence_independent |
Referenced by compute_data_dependences_for_loop(), and subscript_dependence_tester_1().
int datadep_stats::num_dependence_tests |
Referenced by compute_affine_dependence(), and compute_data_dependences_for_loop().
int datadep_stats::num_dependence_undetermined |
int datadep_stats::num_miv |
Referenced by analyze_miv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_miv_dependent |
Referenced by analyze_miv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_miv_independent |
Referenced by analyze_miv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_miv_unimplemented |
Referenced by analyze_miv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_same_subscript_function |
Referenced by analyze_overlapping_iterations(), and compute_data_dependences_for_loop().
int datadep_stats::num_siv |
Referenced by analyze_siv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_siv_dependent |
Referenced by analyze_siv_subscript(), analyze_siv_subscript_cst_affine(), and compute_data_dependences_for_loop().
int datadep_stats::num_siv_independent |
Referenced by analyze_siv_subscript(), analyze_siv_subscript_cst_affine(), and compute_data_dependences_for_loop().
int datadep_stats::num_siv_unimplemented |
Referenced by analyze_siv_subscript(), analyze_siv_subscript_cst_affine(), and compute_data_dependences_for_loop().
int datadep_stats::num_subscript_tests |
Referenced by analyze_overlapping_iterations(), and compute_data_dependences_for_loop().
int datadep_stats::num_subscript_undetermined |
Referenced by analyze_overlapping_iterations(), and compute_data_dependences_for_loop().
int datadep_stats::num_ziv |
Referenced by analyze_ziv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_ziv_dependent |
Referenced by analyze_ziv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_ziv_independent |
Referenced by analyze_ziv_subscript(), and compute_data_dependences_for_loop().
int datadep_stats::num_ziv_unimplemented |
Referenced by analyze_ziv_subscript(), and compute_data_dependences_for_loop().