PIPS
hpfc.c File Reference
#include "defines-local.h"
#include "semantics.h"
#include "resources.h"
#include "pipsdbm.h"
#include "transformations.h"
#include "effects-generic.h"
#include "effects-simple.h"
#include "effects-convex.h"
+ Include dependency graph for hpfc.c:

Go to the source code of this file.

Macros

#define HPFC_FILTERED_SUFFIX   ".hpfc_filtered"
 bool hpfc_filter(string name) More...
 

Functions

void add_a_common (entity c)
 HPFC module by Fabien COELHO. More...
 
static void compile_common (entity c)
 
void add_a_pure (entity f)
 
bool hpf_pure_p (entity f)
 ??? some intrinsics should also be considered as pure. More...
 
void add_an_io_function (entity f)
 
bool hpfc_special_io (entity f)
 
void add_a_fake_function (entity f)
 
bool hpfc_special_fake (entity f)
 
bool remapping_already_computed_p (renaming x)
 list of already computed remappings... More...
 
void add_remapping_as_computed (renaming r, list vars)
 variables to be declared More...
 
void add_remapping_as_used (renaming x)
 
static void init_hpfc_status ()
 current hpfc status More...
 
static void reset_hpfc_status ()
 
static void save_hpfc_status ()
 GET them. More...
 
static void load_hpfc_status ()
 SET them. More...
 
static void hpfc_error_handler (void)
 
static void automatic_translation (entity old, entity host, entity node)
 
static void set_resources_for_module (entity module)
 
static void reset_resources_for_module ()
 
static void loop_rwt (loop l)
 removes DOALL ??? More...
 
static void clean_the_code (statement s)
 
void hpfc_add_ahead_of_node_code (statement s)
 
static void compile_module (entity module)
 
bool hpfc_init (const string name)
 bool hpfc_init(string name) More...
 
static bool directive_in_file_p (string name)
 
bool hpfc_filter (const string name)
 
static bool hpfc_directives_handler (string name, bool dyn)
 what: deals with directives. More...
 
bool hpfc_static_directives (const string name)
 
bool hpfc_dynamic_directives (const string name)
 
bool hpfc_compile (const string name)
 bool hpfc_compile(string name) More...
 
bool hpfc_common (const string name)
 bool hpfc_common(string name) More...
 
bool hpfc_close (const string name)
 bool hpfc_close(string name) More...
 
bool hpfc_install (const string name)
 bool hpfc_install(string name) More...
 
bool hpfc_make (const string name)
 bool hpfc_make(string name) More...
 
bool hpfc_run (const string name)
 bool hpfc_run(string name) More...
 

Variables

static list the_fakes_object =NIL
 ??? to be added to HPFC_STATUS More...
 
static hpfc_status chs = (hpfc_status) NULL
 ??? some memory leaks in the hpfc_status management... More...
 
static list added_ahead_of_node_code
 ??? some quick hack to move bound computations ahead if possible More...
 

Macro Definition Documentation

◆ HPFC_FILTERED_SUFFIX

#define HPFC_FILTERED_SUFFIX   ".hpfc_filtered"

bool hpfc_filter(string name)

what: filter the source code for module name. to be called by pipsmake. how: call to a shell script, "hpfc_directives", that transforms hpf directives in "special" subroutine calls to be parsed by the fortran 77 parser. input: the module name. output: none. side effects:

  • a new source code file is created for module name.
  • the old one is saved... bugs or features:
  • ??? not all hpf syntaxes are managable this way.

Definition at line 557 of file hpfc.c.

Function Documentation

◆ add_a_common()

void add_a_common ( entity  c)

HPFC module by Fabien COELHO.

Definition at line 48 of file hpfc.c.

49 { the_commons_object = gen_once(c, the_commons_object);}
list gen_once(const void *vo, list l)
Prepend an item to a list only if it is not already in the list.
Definition: list.c:722

References gen_once().

Referenced by init_host_and_node_entities().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_a_fake_function()

void add_a_fake_function ( entity  f)

Definition at line 88 of file hpfc.c.

static list the_fakes_object
??? to be added to HPFC_STATUS
Definition: hpfc.c:86
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Definition: offsets.c:15

References f(), gen_once(), and the_fakes_object.

Referenced by handle_fake_directive(), and new_fake_function().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_a_pure()

void add_a_pure ( entity  f)

Definition at line 62 of file hpfc.c.

63 { the_pures_object = gen_once(f, the_pures_object);}

References f(), and gen_once().

Referenced by handle_pure_directive(), and new_pure_function().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_an_io_function()

void add_an_io_function ( entity  f)

Definition at line 74 of file hpfc.c.

75 { the_ios_object = gen_once(f, the_ios_object);}

References f(), and gen_once().

Referenced by handle_io_directive(), and new_io_function().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_remapping_as_computed()

void add_remapping_as_computed ( renaming  r,
list  vars 
)

variables to be declared

Parameters
varsold -> new remapping of entity

Definition at line 121 of file hpfc.c.

124 {
125  computed_remaps_object = CONS(REMAPPING,
127  computed_remaps_object);
128 }
renaming copy_renaming(renaming p)
RENAMING.
Definition: hpf_private.c:845
remapping make_remapping(renaming a1, list a2)
Definition: hpf_private.c:839
list gen_copy_seq(list l)
Copy a list structure.
Definition: list.c:501
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
Definition: newgen_list.h:150
#define REMAPPING(x)
REMAPPING.
Definition: hpf_private.h:903

References CONS, copy_renaming(), gen_copy_seq(), make_remapping(), and REMAPPING.

Referenced by generate_hpf_remapping_file().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add_remapping_as_used()

void add_remapping_as_used ( renaming  x)

Definition at line 135 of file hpfc.c.

136 {
137  entity src = renaming_old(x), trg = renaming_new(x);
139 
140  MAP(REMAPPING, r,
141  {
143 
144  if (renaming_old(y)==src && renaming_new(y)==trg)
145  {
146  p = r;
147  break;
148  }
149  },
150  get_computed_remaps());
151 
152  pips_assert("defined remapping", !remapping_undefined_p(p));
153 
154  MAP(ENTITY, e,
155  include_entities_object = gen_once(e, include_entities_object),
157 }
#define MAP(_map_CASTER, _map_item, _map_code, _map_list)
Apply/map an instruction block on all the elements of a list (old fashioned)
Definition: newgen_list.h:226
#define remapping_undefined_p(x)
Definition: hpf_private.h:910
#define renaming_old(x)
Definition: hpf_private.h:969
#define remapping_undefined
Definition: hpf_private.h:909
#define remapping_referenced(x)
Definition: hpf_private.h:935
#define renaming_new(x)
Definition: hpf_private.h:971
#define remapping_renaming(x)
Definition: hpf_private.h:933
#define src(name, suf)
HPFC by Fabien Coelho, May 1993 and later...
Definition: compile.c:41
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172
#define ENTITY(x)
ENTITY.
Definition: ri.h:2755
static char * x
Definition: split_file.c:159

References ENTITY, gen_once(), MAP, pips_assert, REMAPPING, remapping_referenced, remapping_renaming, remapping_undefined, remapping_undefined_p, renaming_new, renaming_old, src, and x.

Referenced by remapping_compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ automatic_translation()

static void automatic_translation ( entity  old,
entity  host,
entity  node 
)
static

Definition at line 278 of file hpfc.c.

279 {
280  store_new_host_variable(host, old);
282 }
static void node(FILE *out, string name)
Build for module name a node and link to its successors.
Definition: graph.c:56
void store_new_node_variable(entity new, entity old)
void store_new_host_variable(entity new, entity old)

References node(), store_new_host_variable(), and store_new_node_variable().

Referenced by set_resources_for_module().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clean_the_code()

static void clean_the_code ( statement  s)
static

Definition at line 395 of file hpfc.c.

396 {
398 }
#define gen_recurse(start, domain_number, flt, rwt)
Definition: genC.h:283
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
Definition: genClib.c:2780
static void loop_rwt(loop l)
removes DOALL ???
Definition: hpfc.c:390
#define loop_domain
newgen_language_domain_defined
Definition: ri.h:218

References gen_recurse, gen_true(), loop_domain, and loop_rwt().

Referenced by compile_module().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compile_common()

static void compile_common ( entity  c)
static

Definition at line 51 of file hpfc.c.

52 {
54 // statement_remove_unused_declarations(statement_undefined,load_new_host(c));
56 }
void put_generated_resources_for_common(entity common)
Definition: compile.c:417
void declaration_with_overlaps_for_module(entity module)
Definition: declarations.c:835

References declaration_with_overlaps_for_module(), and put_generated_resources_for_common().

Referenced by hpfc_close(), and hpfc_common().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compile_module()

static void compile_module ( entity  module)
static

INIT

NORMALIZATIONS

here because the module was updated with some external declarations

ACTUAL COMPILATION

DECLARATIONS

SG: we need to add included entites into node_module declaration but only if they are not already present see how beautiful the list usage is, a O(n^2) algorithm !

MORE CODE CLEANING

PUT IN DB

CLOSE

Definition at line 410 of file hpfc.c.

411 {
412  statement s, host_stat, node_stat;
413 
414  /* INIT
415  */
421 
422  /* NORMALIZATIONS
423  */
426 
427  /* here because the module was updated with some external declarations
428  */
430 
431  /* ACTUAL COMPILATION
432  */
433  hpf_compiler(s, &host_stat, &node_stat);
435  node_stat = make_block_statement
437  CONS(STATEMENT, node_stat, NIL)));
438 
439  clean_the_code(host_stat);
440  clean_the_code(node_stat);
441 
443  add_pvm_init_and_end(&host_stat, &node_stat);
444 
445  /* DECLARATIONS
446  */
448 
450 
453 
456 
459 
460  /* SG: we need to add included entites into node_module declaration
461  * but only if they are not already present
462  * see how beautiful the list usage is, a O(n^2) algorithm !
463  */
464  list included_entities_to_add = NIL;
465  FOREACH(ENTITY,e,get_include_entities())
468  included_entities_to_add = CONS(ENTITY,e,included_entities_to_add);
470  gen_nconc(entity_declarations(node_module),included_entities_to_add);
471 
472  /* MORE CODE CLEANING
473  */
476 
479 
480  /* PUT IN DB
481  */
482  put_generated_resources_for_module(s, host_stat, node_stat);
483 
484  /* CLOSE
485  */
489 }
void hpfc_close_dummy_to_prime()
Definition: build-system.c:168
void hpfc_init_dummy_to_prime()
Definition: build-system.c:155
void hpf_compiler(statement stat, statement *hoststatp, statement *nodestatp)
what: compile a statement into a host and SPMD node code.
Definition: compiler.c:710
entity host_module
HPFC - Fabien Coelho, May 1993 and later...
Definition: compiler.c:47
entity node_module
Definition: compiler.c:47
void set_similar_mappings_for_updates(void)
Definition: dynamic.c:162
#define gen_chunk_undefined_p(c)
Definition: genC.h:75
if(!(yy_init))
Definition: genread_lex.c:1029
statement make_block_statement(list)
Make a block statement from a list of statement.
Definition: statement.c:616
statement get_current_module_statement(void)
Get the current module statement.
Definition: static.c:208
#define NIL
The empty list (nil in Lisp)
Definition: newgen_list.h:47
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
Definition: list.c:344
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
Definition: newgen_list.h:179
void * gen_find_eq(const void *item, const list seq)
Definition: list.c:422
void update_object_for_module(void *obj, entity module)
void kill_statement_number_and_ordering(statement s)
Definition: hpfc-util.c:232
void statement_structural_cleaning(statement s)
Definition: hpfc-util.c:847
void make_host_and_node_modules(entity module)
compile.c
Definition: compile.c:45
void NormalizeCodeForHpfc(statement s)
Definition: compile.c:848
void init_host_and_node_entities()
both host and node modules are initialized with the same declarations than the compiled module,...
Definition: compile.c:246
void put_generated_resources_for_module(_UNUSED_ statement stat, statement host_stat, statement node_stat)
Definition: compile.c:516
void NormalizeHpfDeclarations()
Definition: declarations.c:437
static void clean_the_code(statement s)
Definition: hpfc.c:395
static list added_ahead_of_node_code
??? some quick hack to move bound computations ahead if possible
Definition: hpfc.c:402
static void set_resources_for_module(entity module)
Definition: hpfc.c:284
static void reset_resources_for_module()
Definition: hpfc.c:367
void add_pvm_init_and_end(statement *, statement *)
this is for the main.
Definition: run-time.c:364
static char * module
Definition: pips.c:74
#define entity_declarations(e)
MISC: newgen shorthands.
code entity_code(entity e)
Definition: entity.c:1098
bool entity_main_module_p(entity e)
Definition: entity.c:700
#define STATEMENT(x)
STATEMENT.
Definition: ri.h:2413
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
void entity_clean_declarations(entity, statement)
remove all entities declared in module but never used in s
Definition: util.c:177

References add_pvm_init_and_end(), added_ahead_of_node_code, clean_the_code(), CONS, declaration_with_overlaps_for_module(), ENTITY, entity_clean_declarations(), entity_code(), entity_declarations, entity_main_module_p(), FOREACH, gen_chunk_undefined_p, gen_find_eq(), gen_nconc(), get_current_module_statement(), host_module, hpf_compiler(), hpfc_close_dummy_to_prime(), hpfc_init_dummy_to_prime(), init_host_and_node_entities(), kill_statement_number_and_ordering(), make_block_statement(), make_host_and_node_modules(), module, NIL, node_module, NormalizeCodeForHpfc(), NormalizeHpfDeclarations(), put_generated_resources_for_module(), reset_resources_for_module(), set_resources_for_module(), set_similar_mappings_for_updates(), STATEMENT, statement_structural_cleaning(), and update_object_for_module().

Referenced by hpfc_compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ directive_in_file_p()

static bool directive_in_file_p ( string  name)
static

checks for any directive before calling the filter... looks for /^[!Cc*]([Hh][Pp][Ff]|[Ff][Cc][Ff])$/

beginning a line

starting a comment

next char

Definition at line 559 of file hpfc.c.

560 {
561  FILE * f;
562  bool no_directive;
563  char c;
564 
565  /* checks for any directive before calling the filter...
566  * looks for /^[!Cc*]([Hh][Pp][Ff]|[Ff][Cc][Ff])$/
567  */
568  f = safe_fopen(name, "r");
569  c='\n';
570  no_directive = true;
571  while (!feof(f) && no_directive)
572  {
573  if (c=='\n') /* beginning a line */
574  {
575  c = getc(f);
576  if (c=='!' || c=='C' || c=='c' || c=='*') /* starting a comment */
577  {
578  c = getc(f); if (c=='\n') continue;
579  c = getc(f); if (c=='\n') continue;
580  c = getc(f); if (c=='\n') continue;
581  c = getc(f); if (c=='$') no_directive = false;
582  }
583  }
584  else /* next char */
585  c = getc(f);
586  }
587  safe_fclose(f, name);
588 
589  pips_debug(1, "directive for %s: %s\n", name, no_directive? "NO": "YES");
590 
591  return !no_directive;
592 }
FILE * safe_fopen(const char *filename, const char *what)
Definition: file.c:67
int safe_fclose(FILE *stream, const char *filename)
Definition: file.c:77
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
Definition: misc-local.h:145

References f(), pips_debug, safe_fclose(), and safe_fopen().

Referenced by hpfc_filter().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpf_pure_p()

bool hpf_pure_p ( entity  f)

??? some intrinsics should also be considered as pure.

all of them ?

Definition at line 67 of file hpfc.c.

68 { return gen_in_list_p(f, the_pures_object);}
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
Definition: list.c:734

References f(), and gen_in_list_p().

Referenced by hpfc_compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpfc_add_ahead_of_node_code()

void hpfc_add_ahead_of_node_code ( statement  s)

Definition at line 404 of file hpfc.c.

References added_ahead_of_node_code, CONS, and STATEMENT.

Referenced by generate_optimized_code_for_loop_nest().

+ Here is the caller graph for this function:

◆ hpfc_close()

bool hpfc_close ( const string  name)

bool hpfc_close(string name)

what: closes the hpf compiler execution. to be called by pipsmake. input: the program (workspace) name. output: none. side effects:

  • deals with the commons.
  • generates global files. bugs or features:
  • ??? COMMON should be managable thru pipsmake ad-hoc rules.

global informations

not close, because it would free the memory and pipsdbm will run into troubles when trying to free the resource...

??? the next function is in pipsmake... (should be in pipsdbm only, but pipsmake manages its own cache which must be destroyed also...

fake

Parameters
nameame

Definition at line 798 of file hpfc.c.

799 {
800  debug_on("HPFC_DEBUG_LEVEL");
801  pips_debug(1, "considering program %s\n", name);
803 
805 
806  set_string_property("PRETTYPRINT_COMMONS", "declaration");
807  set_string_property("PIPSDBM_RESOURCES_TO_DELETE", "all");
808  gen_map((gen_iter_func_t)compile_common, get_the_commons());
809 
810  put_generated_resources_for_program(name); /* global informations */
811 
812  /* not close, because it would free the memory and
813  * pipsdbm will run into troubles when trying to free the resource...
814  */
816 
817  /* ??? the next function is in pipsmake... (should be in pipsdbm only,
818  * but pipsmake manages its own cache which must be destroyed also...
819  */
820  DB_PUT_FILE_RESOURCE(DBR_HPFC_COMMONS, name, NO_FILE); /* fake */
821 
823  debug_off();
824  return true;
825 }
void gen_map(gen_iter_func_t fp, const list l)
Definition: list.c:172
#define DB_PUT_FILE_RESOURCE
Put a file resource into the current workspace database.
Definition: pipsdbm-local.h:85
void put_generated_resources_for_program(_UNUSED_ string program_name)
Definition: compile.c:567
#define NO_FILE
fake resources...
static void save_hpfc_status()
GET them.
Definition: hpfc.c:209
static void compile_common(entity c)
Definition: hpfc.c:51
static void hpfc_error_handler(void)
Definition: hpfc.c:265
static void load_hpfc_status()
SET them.
Definition: hpfc.c:229
#define debug_on(env)
Definition: misc-local.h:157
#define debug_off()
Definition: misc-local.h:160
void reset_hooks_unregister(reset_func_t)
remove registered cleanup hook.
Definition: reset_hooks.c:73
void reset_hooks_register(reset_func_t)
reset_hooks.c
Definition: reset_hooks.c:44
void(* gen_iter_func_t)(void *)
Definition: newgen_types.h:116
void set_string_property(const char *, const char *)

References compile_common(), DB_PUT_FILE_RESOURCE, debug_off, debug_on, gen_map(), hpfc_error_handler(), load_hpfc_status(), NO_FILE, pips_debug, put_generated_resources_for_program(), reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), and set_string_property().

+ Here is the call graph for this function:

◆ hpfc_common()

bool hpfc_common ( const string  name)

bool hpfc_common(string name)

what: compile a common, that is generate the common for both host and nodes. how: generate files to be included. input: a common name. output: none. side effects:

  • uses the hpfc_status.
  • generates 4 files. bugs or features:
  • never called by pipsmake (:-)
Parameters
nameame

Definition at line 769 of file hpfc.c.

770 {
771  debug_on("HPFC_DEBUG_LEVEL");
772  pips_debug(1, "considering common %s\n", name);
774 
776 
777  set_string_property("PRETTYPRINT_COMMONS", "declaration");
779 
781 
783  debug_off();
784  return true;
785 }
entity local_name_to_top_level_entity(const char *n)
This function try to find a top-level entity from a local name.
Definition: entity.c:1450

References compile_common(), debug_off, debug_on, hpfc_error_handler(), load_hpfc_status(), local_name_to_top_level_entity(), pips_debug, reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), and set_string_property().

+ Here is the call graph for this function:

◆ hpfc_compile()

bool hpfc_compile ( const string  name)

bool hpfc_compile(string name)

what: hpf compile module name. to be called by pipsmake. input: the name of the module to compile. output: none side effects: (many)

  • creates the statements for the host and nodes.
  • store the generated resources. bugs or features:
  • fortran library, reduction and hpfc special functions are skipped.
  • a fake file is put as the generated resource for such modules.

just fake for pipsmake...

for callers

Parameters
nameame

Definition at line 699 of file hpfc.c.

700 {
702  bool do_compile;
703 
704  debug_on("HPFC_DEBUG_LEVEL");
705  pips_debug(1, "considering module %s\n", name);
707 
710 
711  do_compile =
716 
717  if (do_compile)
718  {
719  set_string_property("PRETTYPRINT_COMMONS", "none");
720 
721  if (hpfc_special_io(module))
723  else if (hpf_pure_p(module))
725  else
727  }
728  else /* just fake for pipsmake... */
729  {
730  pips_debug(2, "skipping %s compilation\n", name);
731  DB_PUT_FILE_RESOURCE(DBR_HPFC_PARAMETERS, name, NO_FILE);
732  DB_PUT_FILE_RESOURCE(DBR_HPFC_HOST, name, NO_FILE);
733  DB_PUT_FILE_RESOURCE(DBR_HPFC_NODE, name, NO_FILE);
734  DB_PUT_FILE_RESOURCE(DBR_HPFC_RTINIT, name, NO_FILE);
735  }
736 
737  /* for callers */
738  if (hpfc_special_io(module))
739  {
742  }
743  else if (hpf_pure_p(module))
744  {
747  }
748 
751 
753  debug_off();
754  return true;
755 }
void reset_current_module_entity(void)
Reset the current module entity.
Definition: static.c:97
entity set_current_module_entity(entity)
static.c
Definition: static.c:66
void compile_a_special_io_function(entity module)
just copied for the host
Definition: compile.c:469
void compile_a_pure_function(entity module)
simply copied for both host and node...
Definition: compile.c:493
bool hpfc_special_fake(entity f)
Definition: hpfc.c:91
static void compile_module(entity module)
Definition: hpfc.c:410
bool hpf_pure_p(entity f)
??? some intrinsics should also be considered as pure.
Definition: hpfc.c:67
bool hpfc_special_io(entity f)
Definition: hpfc.c:77
bool fortran_library_entity_p(entity)
Definition: local-ri-util.c:52
bool hpfc_entity_reduction_p(entity)
special_cases.c
Definition: special_cases.c:82
#define CONTINUE_FUNCTION_NAME
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
Definition: entity.c:1479
entity entity_intrinsic(const char *name)
FI: I do not understand this function name (see next one!).
Definition: entity.c:1292
bool hpf_directive_entity_p(entity e)
Definition: hpfc.c:56

References compile_a_pure_function(), compile_a_special_io_function(), compile_module(), CONTINUE_FUNCTION_NAME, DB_PUT_FILE_RESOURCE, debug_off, debug_on, entity_intrinsic(), fortran_library_entity_p(), hpf_directive_entity_p(), hpf_pure_p(), hpfc_entity_reduction_p(), hpfc_error_handler(), hpfc_special_fake(), hpfc_special_io(), load_hpfc_status(), module, module_name_to_entity(), NO_FILE, pips_debug, reset_current_module_entity(), reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), set_current_module_entity(), set_string_property(), store_new_host_variable(), and store_new_node_variable().

+ Here is the call graph for this function:

◆ hpfc_directives_handler()

static bool hpfc_directives_handler ( string  name,
bool  dyn 
)
static

what: deals with directives.

to be called by pipsmake. input: the name of the module. output: none. side effects: (many)

  • the module's code statement will be modified.
  • the hpf mappings and so are stored in the compiler status. bugs or features:
  • fortran library, reduction and hpfc special functions are skipped.
  • ??? obscure problem with the update of common entities.

Definition at line 632 of file hpfc.c.

633 {
635 
636  debug_on("HPFC_DEBUG_LEVEL");
637  pips_debug(1, "considering module %s\n", name);
638  debug_on("HPFC_DIRECTIVES_DEBUG_LEVEL");
640 
644  {
645  statement s = (statement) db_get_memory_resource(DBR_CODE, name, true);
646 
647  if (dyn)
649  db_get_memory_resource(DBR_PROPER_EFFECTS, name, true));
650 
656 
657  if (!dyn) NormalizeCommonVariables(module, s);
658  handle_hpf_directives(s, dyn); // do the job...
659 
664 
665  if (dyn) reset_proper_rw_effects();
666 
667  DB_PUT_MEMORY_RESOURCE(DBR_CODE, name, s);
668  }
669 
671  debug_off();
672  debug_off();
673  return true;
674 }
struct _newgen_struct_statement_ * statement
Definition: cloning.h:21
void reset_proper_rw_effects(void)
void set_proper_rw_effects(statement_effects)
void reset_current_module_statement(void)
Reset the current module statement.
Definition: static.c:221
statement set_current_module_statement(statement)
Set the current module statement.
Definition: static.c:165
string db_get_memory_resource(const char *rname, const char *oname, bool pure)
Return the pointer to the resource, whatever it is.
Definition: database.c:755
#define DB_PUT_MEMORY_RESOURCE(res_name, own_name, res_val)
conform to old interface.
Definition: pipsdbm-local.h:66
void NormalizeCommonVariables(entity module, statement stat)
Definition: compile.c:940
void handle_hpf_directives(statement s, bool dyn)
void handle_hpf_directives(s) statement s;
Definition: directives.c:1069
void hpfc_init_run_time_entities(void)
to be seen from outside of this file
Definition: run-time.c:751
void free_update_common_map(void)
void make_update_common_map(void)

References db_get_memory_resource(), DB_PUT_MEMORY_RESOURCE, debug_off, debug_on, fortran_library_entity_p(), free_update_common_map(), handle_hpf_directives(), hpf_directive_entity_p(), hpfc_entity_reduction_p(), hpfc_error_handler(), hpfc_init_run_time_entities(), load_hpfc_status(), make_update_common_map(), module, module_name_to_entity(), NormalizeCommonVariables(), pips_debug, reset_current_module_entity(), reset_current_module_statement(), reset_hooks_register(), reset_hooks_unregister(), reset_proper_rw_effects(), save_hpfc_status(), set_current_module_entity(), set_current_module_statement(), and set_proper_rw_effects().

Referenced by hpfc_dynamic_directives(), and hpfc_static_directives().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpfc_dynamic_directives()

bool hpfc_dynamic_directives ( const string  name)
Parameters
nameame

Definition at line 681 of file hpfc.c.

682 {
683  return hpfc_directives_handler(name, true);
684 }
static bool hpfc_directives_handler(string name, bool dyn)
what: deals with directives.
Definition: hpfc.c:632

References hpfc_directives_handler().

+ Here is the call graph for this function:

◆ hpfc_error_handler()

static void hpfc_error_handler ( void  )
static

An error_reset_hpfc_status() would be necessary

reset_hpfc_status();

Definition at line 265 of file hpfc.c.

266 {
267  /* An error_reset_hpfc_status() would be necessary */
268  /* reset_hpfc_status(); */
274 }
void hpfc_util_error_handler()
removes IF (.TRUE.) THEN and DO X=n, n
Definition: hpfc-util.c:785
void hpfc_compile_error_handler()
Definition: compile.c:644
void hpfc_directives_error_handler()
the local stack is used to retrieve the current statement while scanning the AST with gen_recurse.
Definition: directives.c:109
void hpfc_special_cases_error_handler(void)
void hpfc_io_util_error_handler(void)
??? neglect expression side effects...
Definition: io-util.c:82

References hpfc_compile_error_handler(), hpfc_directives_error_handler(), hpfc_io_util_error_handler(), hpfc_special_cases_error_handler(), and hpfc_util_error_handler().

Referenced by hpfc_close(), hpfc_common(), hpfc_compile(), hpfc_directives_handler(), hpfc_filter(), and hpfc_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpfc_filter()

bool hpfc_filter ( const string  name)
Parameters
nameame

Definition at line 594 of file hpfc.c.

595 {
596  string file_name, dir_name, new_name, src_name;
597 
599  file_name = db_get_file_resource(DBR_SOURCE_FILE, name, true);
600  new_name = strdup(concatenate(name, HPFC_FILTERED_SUFFIX, NULL));
601  src_name = strdup(concatenate(dir_name, "/", file_name, NULL));
602 
603  debug_on("HPFC_DEBUG_LEVEL");
604  pips_debug(1, "considering module %s\n", name);
606 
608  "PATH=${PATH}:${PIPS_ROOT}/Share ",
609  hpf_directive_string_p(name) || !directive_in_file_p(src_name)?
610  "cat" : "hpfc_directives",
611  " < ", src_name, " > ", dir_name, "/", new_name, NULL));
612 
613  DB_PUT_FILE_RESOURCE(DBR_HPFC_FILTERED_FILE, name, new_name);
614 
615  free(src_name);
616 
618  debug_off();
619  return true;
620 }
void free(void *)
static bool directive_in_file_p(string name)
Definition: hpfc.c:559
#define HPFC_FILTERED_SUFFIX
bool hpfc_filter(string name)
Definition: hpfc.c:557
void safe_system(string)
system.c
Definition: system.c:38
string concatenate(const char *,...)
Return the concatenation of the given strings.
Definition: string.c:183
#define db_get_file_resource
string db_get_current_workspace_directory(void)
Definition: workspace.c:96
bool hpf_directive_string_p(const char *s)
recognize an hpf directive special entity.
Definition: hpfc.c:51
char * strdup()
static string file_name

References concatenate(), db_get_current_workspace_directory(), db_get_file_resource, DB_PUT_FILE_RESOURCE, debug_off, debug_on, directive_in_file_p(), file_name, free(), hpf_directive_string_p(), hpfc_error_handler(), HPFC_FILTERED_SUFFIX, pips_debug, reset_hooks_register(), reset_hooks_unregister(), safe_system(), and strdup().

+ Here is the call graph for this function:

◆ hpfc_init()

bool hpfc_init ( const string  name)

bool hpfc_init(string name)

what: initialize the hpfc status for a program. input: the program (workspace) name. output: none. side effects:

  • the hpfc status is initialized and stored in the pips dbm. bugs or features:
  • some callees are filtered out with a property, to deal with pipsmake.

vars local to commons

drop hpfc specials

Parameters
nameame

Definition at line 503 of file hpfc.c.

504 {
505  debug_on("HPFC_DEBUG_LEVEL");
506  pips_debug(1, "considering program %s\n", name);
507 
509 
510  set_string_property("PRETTYPRINT_VARIABLE_DIMENSIONS", "common");
511  set_bool_property("PRETTYPRINT_HPFC", true); /* vars local to commons */
512  set_bool_property("HPFC_FILTER_CALLEES", true); /* drop hpfc specials */
513  set_bool_property("GLOBAL_EFFECTS_TRANSLATION", false);
514  set_bool_property("WARNING_ON_STAT_ERROR", false); // for fake files
515 
516  // should not be there. if true, obscure coredump in proper
517  // effects on a preference which has been cleanup up...
518  // see validation/Hpfc/io_4.tpips that triggers the issue
519  set_bool_property("PRETTYPRINT_IO_EFFECTS", false); // ??????
520 
521  // too verbose...
522  set_bool_property("UNSPAGHETTIFY_DISPLAY_STATISTICS", false);
523  set_bool_property("CLEAN_UP_SEQUENCES_DISPLAY_STATISTICS", false);
524  set_bool_property("WARN_ABOUT_EMPTY_SEQUENCES", false);
525 
526  // where the specials dummy/variables are stored... ???
528 
529  // mkdir...
530  {
532  free(dir_name);
533  }
534 
537 
539  debug_off();
540  return true;
541 }
language make_language_fortran(void)
Definition: ri.c:1250
#define HPFC_PACKAGE
local definitions
Definition: hpfc-local.h:27
static void init_hpfc_status()
current hpfc status
Definition: hpfc.c:168
string db_get_directory_name_for_module(const char *name)
returns the allocated and mkdir'ed directory for module name
Definition: lowlevel.c:150
#define WORKSPACE_SRC_SPACE
Definition: pipsdbm-local.h:32
void set_bool_property(const char *, bool)
entity make_empty_program(const char *name, language l)
Definition: entity.c:261

References db_get_directory_name_for_module(), debug_off, debug_on, free(), hpfc_error_handler(), HPFC_PACKAGE, init_hpfc_status(), make_empty_program(), make_language_fortran(), pips_debug, reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), set_bool_property(), set_string_property(), and WORKSPACE_SRC_SPACE.

+ Here is the call graph for this function:

◆ hpfc_install()

bool hpfc_install ( const string  name)

bool hpfc_install(string name)

what: install generated files in a directory. done for wpips. how: all in the hpfc_install shell script. input: program name. output: none. side effects:

  • creates an hpfc directory in the database
  • copies the files in this directory... bugs or features:
Parameters
nameame

Definition at line 838 of file hpfc.c.

839 {
840  string dir, wks;
841  debug_on("HPFC_DEBUG_LEVEL");
842  pips_debug(1, "considering program %s\n", name);
843 
846 
847  safe_system(concatenate("hpfc_install -iob ", dir, " -n ", wks, NULL));
848 
849  DB_PUT_FILE_RESOURCE(DBR_HPFC_INSTALLATION, name, NO_FILE);
850 
851  debug_off();
852  return true;
853 }
string db_get_current_workspace_name(void)
the function is used to check that there is some current workspace...
Definition: workspace.c:82

References concatenate(), db_get_current_workspace_directory(), db_get_current_workspace_name(), DB_PUT_FILE_RESOURCE, debug_off, debug_on, NO_FILE, pips_debug, and safe_system().

+ Here is the call graph for this function:

◆ hpfc_make()

bool hpfc_make ( const string  name)

bool hpfc_make(string name)

what: compile the generated and installed code. for wpips. how: system call to $HPFC_MAKE input: the workspace name (which is not used) output: none. side effects: may stop if can't execute bugs or features:

Parameters
nameame

Definition at line 864 of file hpfc.c.

865 {
866  string dir = db_get_current_workspace_directory();
867 
868  debug_on("HPFC_DEBUG_LEVEL");
869  pips_debug(1, "considering program %s\n", name);
870 
871  safe_system(concatenate("cd ", dir, "/hpfc ; "
872  "${HPFC_MAKE:-gmake} make &", NULL));
873 
874  debug_off();
875  return true;
876 }

References concatenate(), db_get_current_workspace_directory(), debug_off, debug_on, pips_debug, and safe_system().

+ Here is the call graph for this function:

◆ hpfc_run()

bool hpfc_run ( const string  name)

bool hpfc_run(string name)

what: run the program. how: system call sut $HPFC_MAKE... input: none. output: none. side effects:

  • forks a process.
  • may stop if cannot execute. bugs or features:
Parameters
nameame

Definition at line 889 of file hpfc.c.

890 {
891  string dir = db_get_current_workspace_directory();
892 
893  debug_on("HPFC_DEBUG_LEVEL");
894  pips_debug(1, "considering program %s\n", name);
895 
896  safe_system(concatenate("cd ", dir, "/hpfc ; "
897  "${HPFC_MAKE:-gmake} run &", NULL));
898 
899  debug_off();
900  return true;
901 }

References concatenate(), db_get_current_workspace_directory(), debug_off, debug_on, pips_debug, and safe_system().

+ Here is the call graph for this function:

◆ hpfc_special_fake()

bool hpfc_special_fake ( entity  f)

Definition at line 91 of file hpfc.c.

92 { return gen_in_list_p(f, the_fakes_object);}

References f(), gen_in_list_p(), and the_fakes_object.

Referenced by hpfc_compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpfc_special_io()

bool hpfc_special_io ( entity  f)

Definition at line 77 of file hpfc.c.

78 { return gen_in_list_p(f, the_ios_object);}

References f(), and gen_in_list_p().

Referenced by hpfc_compile(), and only_io_call().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hpfc_static_directives()

bool hpfc_static_directives ( const string  name)
Parameters
nameame

Definition at line 676 of file hpfc.c.

677 {
678  return hpfc_directives_handler(name, false);
679 }

References hpfc_directives_handler().

+ Here is the call graph for this function:

◆ init_hpfc_status()

static void init_hpfc_status ( )
static

current hpfc status

initialization of data that belongs to the hpf compiler status

Definition at line 168 of file hpfc.c.

169 {
174  init_the_commons();
176  init_the_pures();
177  init_the_ios();
178  init_computed_remaps();
180 
182  get_data_status(),
185  get_the_commons(),
187  get_the_pures(),
188  get_the_ios(),
189  get_computed_remaps(),
191 }
hpfc_status make_hpfc_status(overlapsmap a1, data_status a2, numbers_status a3, entity_status a4, list a5, dynamic_status a6, list a7, list a8, list a9, statement_entities a10)
Definition: hpf_private.c:490
void init_dynamic_status()
DYNAMIC STATUS management.
Definition: dynamic.c:81
dynamic_status get_dynamic_status()
Definition: dynamic.c:99
entity_status get_entity_status()
void init_entity_status()
numbers_status get_hpf_number_status()
Definition: declarations.c:134
void init_hpf_number_status()
STANDARS STATIC MANAGEMENT.
Definition: declarations.c:128
data_status get_data_status()
Definition: declarations.c:308
void init_data_status()
Definition: declarations.c:300
static hpfc_status chs
??? some memory leaks in the hpfc_status management...
Definition: hpfc.c:164
void init_overlap_status(void)
void init_hpf_reductions(void)
statement_entities get_hpf_reductions(void)
overlapsmap get_overlap_status(void)

References chs, get_data_status(), get_dynamic_status(), get_entity_status(), get_hpf_number_status(), get_hpf_reductions(), get_overlap_status(), init_data_status(), init_dynamic_status(), init_entity_status(), init_hpf_number_status(), init_hpf_reductions(), init_overlap_status(), and make_hpfc_status().

Referenced by hpfc_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ load_hpfc_status()

static void load_hpfc_status ( )
static

SET them.

Definition at line 229 of file hpfc.c.

230 {
231  chs = (hpfc_status) db_get_memory_resource(DBR_HPFC_STATUS, "", true);
232 
237  set_the_commons(hpfc_status_commons(chs));
239  set_the_pures(hpfc_status_pures(chs));
240  set_the_ios(hpfc_status_ios(chs));
241  set_computed_remaps(hpfc_status_computed(chs));
243 }
void set_dynamic_status(dynamic_status d)
Definition: dynamic.c:108
void set_entity_status(entity_status s)
#define hpfc_status_reductions(x)
Definition: hpf_private.h:640
struct _newgen_struct_hpfc_status_ * hpfc_status
Definition: hpf_private.h:129
#define hpfc_status_pures(x)
Definition: hpf_private.h:634
#define hpfc_status_ios(x)
Definition: hpf_private.h:636
#define hpfc_status_computed(x)
Definition: hpf_private.h:638
#define hpfc_status_numbers_status(x)
Definition: hpf_private.h:626
#define hpfc_status_dynamic_status(x)
Definition: hpf_private.h:632
#define hpfc_status_entity_status(x)
Definition: hpf_private.h:628
#define hpfc_status_commons(x)
Definition: hpf_private.h:630
#define hpfc_status_overlapsmap(x)
Definition: hpf_private.h:622
#define hpfc_status_data_status(x)
Definition: hpf_private.h:624
void set_hpf_number_status(numbers_status s)
Definition: declarations.c:148
void set_data_status(data_status s)
Definition: declarations.c:328
void set_overlap_status(overlapsmap)
void set_hpf_reductions(statement_entities)

References chs, db_get_memory_resource(), hpfc_status_commons, hpfc_status_computed, hpfc_status_data_status, hpfc_status_dynamic_status, hpfc_status_entity_status, hpfc_status_ios, hpfc_status_numbers_status, hpfc_status_overlapsmap, hpfc_status_pures, hpfc_status_reductions, set_data_status(), set_dynamic_status(), set_entity_status(), set_hpf_number_status(), set_hpf_reductions(), and set_overlap_status().

Referenced by hpfc_close(), hpfc_common(), hpfc_compile(), and hpfc_directives_handler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loop_rwt()

static void loop_rwt ( loop  l)
static

removes DOALL ???

Definition at line 390 of file hpfc.c.

391 {
393 }
#define execution_tag(x)
Definition: ri.h:1207
#define loop_execution(x)
Definition: ri.h:1648
@ is_execution_sequential
Definition: ri.h:1189

References execution_tag, is_execution_sequential, and loop_execution.

Referenced by clean_the_code().

+ Here is the caller graph for this function:

◆ remapping_already_computed_p()

bool remapping_already_computed_p ( renaming  x)

list of already computed remappings...

exported interface

Definition at line 105 of file hpfc.c.

106 {
107  entity src = renaming_old(x), trg = renaming_new(x);
108 
109  MAP(REMAPPING, r,
110  {
112  if (renaming_old(p)==src && renaming_new(p)==trg)
113  return true;
114  },
115  get_computed_remaps());
116 
117  return false;
118 }

References MAP, REMAPPING, remapping_renaming, renaming_new, renaming_old, src, and x.

Referenced by remapping_compile().

+ Here is the caller graph for this function:

◆ reset_hpfc_status()

static void reset_hpfc_status ( )
static

Definition at line 193 of file hpfc.c.

194 {
199  reset_the_commons();
201  reset_the_pures();
202  reset_the_ios();
203  reset_computed_remaps();
205 
206  chs = (hpfc_status) NULL;
207 }
void reset_dynamic_status()
Definition: dynamic.c:90
void reset_entity_status()
void reset_hpf_number_status()
Definition: declarations.c:142
void reset_data_status()
Definition: declarations.c:320
void reset_overlap_status(void)
void reset_hpf_reductions(void)

References chs, reset_data_status(), reset_dynamic_status(), reset_entity_status(), reset_hpf_number_status(), reset_hpf_reductions(), and reset_overlap_status().

Referenced by save_hpfc_status().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset_resources_for_module()

static void reset_resources_for_module ( )
static

Definition at line 367 of file hpfc.c.

368 {
373 
376 
378  close_include_entities();
379 
380  // IN & OUT Regions are not always used
381  if (!get_bool_property("HPFC_IGNORE_IN_OUT_REGIONS"))
382  {
385  }
386 }
void free_hpfc_current_mappings()
Definition: build-system.c:200
void reset_cumulated_references(void)
void reset_out_effects(void)
void reset_in_effects(void)
void reset_rw_effects(void)
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
void free_only_io_map(void)
void free_postcondition_map(void)
void reset_precondition_map(void)

References free_hpfc_current_mappings(), free_only_io_map(), free_postcondition_map(), get_bool_property(), reset_cumulated_references(), reset_current_module_statement(), reset_in_effects(), reset_out_effects(), reset_precondition_map(), and reset_rw_effects().

Referenced by compile_module().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ save_hpfc_status()

static void save_hpfc_status ( )
static

GET them.

cleaned!

Definition at line 209 of file hpfc.c.

210 {
211  pips_assert("some current hpfc status", chs);
212 
217  hpfc_status_commons(chs) = get_the_commons() ;
219  hpfc_status_pures(chs) = get_the_pures();
220  hpfc_status_ios(chs) = get_the_ios();
221  hpfc_status_computed(chs) = get_computed_remaps();
223 
224  DB_PUT_MEMORY_RESOURCE(DBR_HPFC_STATUS, "", chs);
225 
226  reset_hpfc_status(); /* cleaned! */
227 }
static void reset_hpfc_status()
Definition: hpfc.c:193

References chs, DB_PUT_MEMORY_RESOURCE, get_data_status(), get_dynamic_status(), get_entity_status(), get_hpf_number_status(), get_hpf_reductions(), get_overlap_status(), hpfc_status_commons, hpfc_status_computed, hpfc_status_data_status, hpfc_status_dynamic_status, hpfc_status_entity_status, hpfc_status_ios, hpfc_status_numbers_status, hpfc_status_overlapsmap, hpfc_status_pures, hpfc_status_reductions, pips_assert, and reset_hpfc_status().

Referenced by hpfc_close(), hpfc_common(), hpfc_compile(), hpfc_directives_handler(), and hpfc_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_resources_for_module()

static void set_resources_for_module ( entity  module)
static

set_bool_property("MUST_REGIONS", true); set_bool_property("EXACT_REGIONS", true);
get_regions_properties(); set_out_effects
((statement_effects)
db_get_memory_resource(DBR_OUT_REGIONS, module_name, true)); set_in_effects ((statement_effects)
db_get_memory_resource(DBR_IN_REGIONS, module_name, true));

Definition at line 284 of file hpfc.c.

285 {
286  const char* module_name = module_local_name(module);
287 
288  // STATEMENT
290  ((statement) db_get_memory_resource(DBR_CODE, module_name, false));
291 
292  // PRECONDITIONS
295  db_get_memory_resource(DBR_PRECONDITIONS, module_name, true));
296 
297  // POSTCONDITIONS
302 
303  // REGIONS
306  db_get_memory_resource(DBR_REGIONS, module_name, true));
307 
308  // IN & OUT Regions are not always used
309  if (!get_bool_property("HPFC_IGNORE_IN_OUT_REGIONS"))
310  {
311  set_out_effects((statement_effects) // OUT EFFECTS
312  db_get_memory_resource(DBR_OUT_EFFECTS, module_name, true));
313  set_in_effects((statement_effects) // IN EFFECTS
314  db_get_memory_resource(DBR_IN_EFFECTS, module_name, true));
315 
316  /* set_bool_property("MUST_REGIONS", true);
317  set_bool_property("EXACT_REGIONS", true);
318  get_regions_properties();
319  set_out_effects
320  ((statement_effects)
321  db_get_memory_resource(DBR_OUT_REGIONS, module_name, true));
322  set_in_effects
323  ((statement_effects)
324  db_get_memory_resource(DBR_IN_REGIONS, module_name, true));*/
325  }
326 
327  // CUMMULATED REFERENCES
330  db_get_memory_resource(DBR_CUMULATED_REFERENCES, module_name, true));
331 
332  // ONLY I/O
334 
335  // NEW VARIABLES NEEDED
337 
338  // OTHERS
340  init_include_entities();
341 
342  // next in hpfc_init ???
344 
345  // STOP is to be translated into hpfc_{host,node}_end. the special FCD calls.
364 }
void make_hpfc_current_mappings()
??? used with a temporary hack to differentiate array and templates
Definition: build-system.c:192
void set_rw_effects(statement_effects)
void set_out_effects(statement_effects)
void set_cumulated_references(statement_effects)
void set_in_effects(statement_effects)
const char * module_name(const char *s)
Return the module part of an entity name.
Definition: entity_names.c:296
#define HOST_TIMEON
special FCD calls.
#define NODE_TIMEON
#define HPFC_STOP
#define HPFC_NTELL
#define SYNCHRO
#define NODE_TIMEOFF
#define HOST_TIMEOFF
#define HPFC_HTELL
static void automatic_translation(entity old, entity host, entity node)
Definition: hpfc.c:278
entity hpfc_name_to_entity(const char *)
Definition: run-time.c:817
void only_io_mapping_initialize(statement)
Definition: io-util.c:163
#define MAKE_STATEMENT_MAPPING()
Definition: newgen-local.h:43
statement_mapping compute_postcondition(statement stat, statement_mapping post_map, statement_mapping pre_map)
statement_mapping compute_postcondition(stat, post_map, pre_map) statement stat; statement_mapping po...
#define HPF_PREFIX
moved here because needed by syntax:-(
#define TIMEON_SUFFIX
#define SYNCHRO_SUFFIX
#define HOSTSECTION_SUFFIX
#define TIMEOFF_SUFFIX
#define TELL_SUFFIX
suffixes for my own (FCD:-) directives.
#define STOP_FUNCTION_NAME
const char * module_local_name(entity e)
Returns the module local user name.
Definition: entity.c:582
void reset_unique_variable_numbers(void)
Definition: variable.c:421
void set_postcondition_map(statement_mapping)
void set_precondition_map(statement_mapping)
statement_mapping get_precondition_map(void)

References automatic_translation(), compute_postcondition(), CONTINUE_FUNCTION_NAME, db_get_memory_resource(), entity_intrinsic(), get_bool_property(), get_current_module_statement(), get_precondition_map(), HOST_TIMEOFF, HOST_TIMEON, HOSTSECTION_SUFFIX, HPF_PREFIX, HPFC_HTELL, hpfc_init_run_time_entities(), hpfc_name_to_entity(), HPFC_NTELL, HPFC_STOP, local_name_to_top_level_entity(), make_hpfc_current_mappings(), MAKE_STATEMENT_MAPPING, module, module_local_name(), module_name(), NODE_TIMEOFF, NODE_TIMEON, only_io_mapping_initialize(), reset_unique_variable_numbers(), set_cumulated_references(), set_current_module_statement(), set_in_effects(), set_out_effects(), set_postcondition_map(), set_precondition_map(), set_rw_effects(), STOP_FUNCTION_NAME, SYNCHRO, SYNCHRO_SUFFIX, TELL_SUFFIX, TIMEOFF_SUFFIX, and TIMEON_SUFFIX.

Referenced by compile_module().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ added_ahead_of_node_code

list added_ahead_of_node_code
static

??? some quick hack to move bound computations ahead if possible

of statement

Definition at line 402 of file hpfc.c.

Referenced by compile_module(), and hpfc_add_ahead_of_node_code().

◆ chs

hpfc_status chs = (hpfc_status) NULL
static

??? some memory leaks in the hpfc_status management...

Definition at line 164 of file hpfc.c.

Referenced by init_hpfc_status(), load_hpfc_status(), reset_hpfc_status(), and save_hpfc_status().

◆ the_fakes_object

list the_fakes_object =NIL
static

??? to be added to HPFC_STATUS

GENERIC_STATIC_STATUS(static, the_fakes, list, NIL, gen_free_list)

Definition at line 86 of file hpfc.c.

Referenced by add_a_fake_function(), and hpfc_special_fake().