GCC Middle and Back End API Reference
datadep_stats Struct 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

Detailed Description

@verbatim 

Data references and dependences detectors. Copyright (C) 2003-2013 Free Software Foundation, Inc. Contributed by Sebastian Pop pop@c.nosp@m.ri.e.nosp@m.nsmp..nosp@m.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.

Field Documentation

int datadep_stats::num_dependence_dependent
int datadep_stats::num_dependence_independent
int datadep_stats::num_dependence_tests
int datadep_stats::num_dependence_undetermined
int datadep_stats::num_miv
int datadep_stats::num_miv_dependent
int datadep_stats::num_miv_independent
int datadep_stats::num_miv_unimplemented
int datadep_stats::num_same_subscript_function

Referenced by analyze_miv_subscript().

int datadep_stats::num_siv
int datadep_stats::num_siv_dependent
int datadep_stats::num_siv_independent
int datadep_stats::num_siv_unimplemented
int datadep_stats::num_subscript_tests
int datadep_stats::num_subscript_undetermined
int datadep_stats::num_ziv
int datadep_stats::num_ziv_dependent
int datadep_stats::num_ziv_independent
int datadep_stats::num_ziv_unimplemented

The documentation for this struct was generated from the following file: