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

Data references and dependences detectors.
   Copyright (C) 2003-2024 Free Software Foundation, Inc.
   Contributed by Sebastian Pop <pop@cri.ensmp.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

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
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
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

  - to define an interface to access this data.


  - 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.


  - "Advanced Compilation for High Performance Computing" by Randy
  Allen and Ken Kennedy.

  - "Loop Transformations for Restructuring Compilers - The Foundations"
  by Utpal Banerjee.

Field Documentation

◆ num_dependence_dependent

int datadep_stats::num_dependence_dependent

◆ num_dependence_independent

int datadep_stats::num_dependence_independent

◆ num_dependence_tests

int datadep_stats::num_dependence_tests

◆ num_dependence_undetermined

int datadep_stats::num_dependence_undetermined

◆ num_miv

int datadep_stats::num_miv

◆ num_miv_dependent

int datadep_stats::num_miv_dependent

◆ num_miv_independent

int datadep_stats::num_miv_independent

◆ num_miv_unimplemented

int datadep_stats::num_miv_unimplemented

◆ num_same_subscript_function

int datadep_stats::num_same_subscript_function

◆ num_siv

int datadep_stats::num_siv

◆ num_siv_dependent

int datadep_stats::num_siv_dependent

◆ num_siv_independent

int datadep_stats::num_siv_independent

◆ num_siv_unimplemented

int datadep_stats::num_siv_unimplemented

◆ num_subscript_tests

int datadep_stats::num_subscript_tests

◆ num_subscript_undetermined

int datadep_stats::num_subscript_undetermined

◆ num_ziv

int datadep_stats::num_ziv

◆ num_ziv_dependent

int datadep_stats::num_ziv_dependent

◆ num_ziv_independent

int datadep_stats::num_ziv_independent

◆ num_ziv_unimplemented

int datadep_stats::num_ziv_unimplemented

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