/*

  $Id$

  Copyright 1989-2016 MINES ParisTech

  This file is part of PIPS.

  PIPS 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 of the License, or
  any later version.

  PIPS 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 PIPS.  If not, see <http://www.gnu.org/licenses/>.

*/
/*
   #define ATOMIZER_MODULE_NAME "ATOMIZE"
   */
#define TMP_ENT 1
#define AUX_ENT 2
#define DOUBLE_PRECISION_SIZE 8

/* During the computation, the program has to deal with blocks of statements.
 * We define a new structure in order to have a simple control over all
 * the manipulations of the blocks of statements.
 *
 * With this new structure we know the current statement being translated
 * and the list of statements (ie the block) in which we put the new
 * statements created.
 */
typedef struct {
     list last;
     list first;
     bool stmt_generated;
    } Block;
/* The list "first" is a truncated list from the first to the current
 * statement (not included).
 * The list "last" is a truncated list from the current statement (included)
 * to the last.
 * The union of "first" and "last" is equal to the entire block.
 *
 * The bool "stmt_generated" says if the current statement has:
 *       _ true : already generated statements.
 *       _ false : not generated statements.
 *
 * Thus, when the current statement generates a new statement it is put at the
 * end of the list "first" (just before the current statement).
 * The current statement gives its caracteristics to the new one if the bool
 * "stmt_generated" is false; this allows to keep these caracteristics
 * at the first statement of the list generated by the translation of the
 * current statement.
 * The caracteristics of a statement are its "label", "number", "ordering" and
 * "comments" (cf. RI).
 */

/* This global variable is used for the modification of the control graph,
 * see commentaries of atomizer_of_unstructured() in atomizer.c.
 */
extern list l_inst;

// moved to ri-util/variable.c
// extern list integer_entities, real_entities, complex_entities,
// logical_entities, double_entities, char_entities;

/* Mappings for the cumulated effects of statements. */
/* extern statement_mapping cumulated_effects_map;*/
