PIPS
effects-util-local.h File Reference
#include "linear.h"
#include "newgen.h"
#include "ri.h"
#include "effects.h"
#include "points_to_private.h"
+ Include dependency graph for effects-util-local.h:

Go to the source code of this file.

Data Structures

struct  sensitivity_information
 

Macros

#define ANY_MODULE_NAME   "*ANY_MODULE*"
 
#define ANYWHERE_LOCATION   "*ANYWHERE*"
 
#define NOWHERE_LOCATION   "*NOWHERE*"
 
#define NULL_POINTER_NAME   "*NULL*"
 
#define UNDEFINED_LOCATION   "*UNDEFINED*"
 
#define UNDEFINED_POINTER_VALUE_NAME   "*UNDEFINED*"
 
#define NULL_POINTER_VALUE_NAME   "*NULL*"
 
#define PHI_PREFIX   "PHI"
 
#define PSI_PREFIX   "PSI"
 
#define RHO_PREFIX   "RHO"
 
#define BETA_PREFIX   "BETA"
 
#define PROPER   true
 
#define SUMMARY   false
 
#define effect_any_entity(e)   effect_to_entity(e)
 some useful SHORTHANDS for EFFECT: More...
 
#define effect_action_tag(eff)   action_tag(effect_action(eff))
 
#define effect_approximation_tag(eff)    approximation_tag(effect_approximation(eff))
 
#define effect_read_p(eff)   (action_tag(effect_action(eff))==is_action_read)
 #define effect_scalar_p(eff) entity_scalar_p(effect_entity(eff)) More...
 
#define effect_write_p(eff)   (action_tag(effect_action(eff))==is_action_write)
 
#define effect_may_p(eff)    (approximation_tag(effect_approximation(eff)) == is_approximation_may)
 
#define effect_must_p(eff)    (approximation_tag(effect_approximation(eff)) == is_approximation_must)
 
#define effect_exact_p(eff)    (approximation_tag(effect_approximation(eff)) ==is_approximation_exact)
 
#define effect_variable(e)   reference_variable(effect_any_reference(e))
 For COMPATIBILITY purpose only - DO NOT USE anymore. More...
 
#define variable_phi_p(e)
 true if e is a phi variable PHI entities have a name like: REGIONS:PHI#, where # is a number. More...
 
#define variable_psi_p(e)
 
#define variable_rho_p(e)
 
#define variable_beta_p(e)
 
#define effect_system(e)
 
#define effect_reference(e)
 FI: it would be useful to assert cell_preference_p(effect_cell(e)), but I do not know how to do it in such a way that it works both for left hand sides and right hand sides using commas. More...
 
#define effect_any_reference(e)    (cell_preference_p(effect_cell(e))? preference_reference(cell_preference(effect_cell(e))) : cell_reference(effect_cell(e)))
 FI: cannot be used as a left hand side. More...
 
#define make_preference_simple_effect(reference, action, approximation)
 
#define make_reference_simple_effect(reference, action, approximation)
 
#define make_simple_effect(reference, action, approximation)
 
#define make_convex_effect(reference, action, approximation, system)
 
#define cell_relation_first_cell(cr)    interpreted_cell_cell(cell_relation_first(cr))
 
#define cell_relation_first_interpretation_tag(cr)    cell_interpretation_tag(interpreted_cell_cell_interpretation(cell_relation_first(cr)))
 
#define cell_relation_first_value_of_p(cr)    cell_interpretation_value_of_p(interpreted_cell_cell_interpretation(cell_relation_first(cr)))
 
#define cell_relation_first_address_of_p(cr)    cell_interpretation_address_of_p(interpreted_cell_cell_interpretation(cell_relation_first(cr)))
 
#define cell_relation_second_cell(cr)    interpreted_cell_cell(cell_relation_second(cr))
 
#define cell_relation_second_interpretation_tag(cr)    cell_interpretation_tag(interpreted_cell_cell_interpretation(cell_relation_second(cr)))
 
#define cell_relation_second_value_of_p(cr)    cell_interpretation_value_of_p(interpreted_cell_cell_interpretation(cell_relation_second(cr)))
 
#define cell_relation_second_address_of_p(cr)    cell_interpretation_address_of_p(interpreted_cell_cell_interpretation(cell_relation_second(cr)))
 
#define cell_relation_approximation_tag(cr)    approximation_tag(cell_relation_approximation(cr))
 
#define cell_relation_may_p(cr)    approximation_tag(cell_relation_approximation(cr))==is_approximation_may
 
#define cell_relation_exact_p(cr)    approximation_tag(cell_relation_approximation(cr))==is_approximation_exact
 
#define pips_debug_pv(level, message, pv)
 
#define pips_debug_pvs(level, message, l_pv)
 

Macro Definition Documentation

◆ ANY_MODULE_NAME

#define ANY_MODULE_NAME   "*ANY_MODULE*"

Definition at line 31 of file effects-util-local.h.

◆ ANYWHERE_LOCATION

#define ANYWHERE_LOCATION   "*ANYWHERE*"

Definition at line 32 of file effects-util-local.h.

◆ BETA_PREFIX

#define BETA_PREFIX   "BETA"

Definition at line 44 of file effects-util-local.h.

◆ cell_relation_approximation_tag

#define cell_relation_approximation_tag (   cr)     approximation_tag(cell_relation_approximation(cr))

Definition at line 180 of file effects-util-local.h.

◆ cell_relation_exact_p

#define cell_relation_exact_p (   cr)     approximation_tag(cell_relation_approximation(cr))==is_approximation_exact

Definition at line 186 of file effects-util-local.h.

◆ cell_relation_first_address_of_p

#define cell_relation_first_address_of_p (   cr)     cell_interpretation_address_of_p(interpreted_cell_cell_interpretation(cell_relation_first(cr)))

Definition at line 165 of file effects-util-local.h.

◆ cell_relation_first_cell

#define cell_relation_first_cell (   cr)     interpreted_cell_cell(cell_relation_first(cr))

Definition at line 156 of file effects-util-local.h.

◆ cell_relation_first_interpretation_tag

#define cell_relation_first_interpretation_tag (   cr)     cell_interpretation_tag(interpreted_cell_cell_interpretation(cell_relation_first(cr)))

Definition at line 159 of file effects-util-local.h.

◆ cell_relation_first_value_of_p

#define cell_relation_first_value_of_p (   cr)     cell_interpretation_value_of_p(interpreted_cell_cell_interpretation(cell_relation_first(cr)))

Definition at line 162 of file effects-util-local.h.

◆ cell_relation_may_p

#define cell_relation_may_p (   cr)     approximation_tag(cell_relation_approximation(cr))==is_approximation_may

Definition at line 183 of file effects-util-local.h.

◆ cell_relation_second_address_of_p

#define cell_relation_second_address_of_p (   cr)     cell_interpretation_address_of_p(interpreted_cell_cell_interpretation(cell_relation_second(cr)))

Definition at line 177 of file effects-util-local.h.

◆ cell_relation_second_cell

#define cell_relation_second_cell (   cr)     interpreted_cell_cell(cell_relation_second(cr))

Definition at line 168 of file effects-util-local.h.

◆ cell_relation_second_interpretation_tag

#define cell_relation_second_interpretation_tag (   cr)     cell_interpretation_tag(interpreted_cell_cell_interpretation(cell_relation_second(cr)))

Definition at line 171 of file effects-util-local.h.

◆ cell_relation_second_value_of_p

#define cell_relation_second_value_of_p (   cr)     cell_interpretation_value_of_p(interpreted_cell_cell_interpretation(cell_relation_second(cr)))

Definition at line 174 of file effects-util-local.h.

◆ effect_action_tag

#define effect_action_tag (   eff)    action_tag(effect_action(eff))

Definition at line 52 of file effects-util-local.h.

◆ effect_any_entity

#define effect_any_entity (   e)    effect_to_entity(e)

some useful SHORTHANDS for EFFECT:

FI: Let's hope this one is not used as lhs!

Definition at line 51 of file effects-util-local.h.

◆ effect_any_reference

#define effect_any_reference (   e)     (cell_preference_p(effect_cell(e))? preference_reference(cell_preference(effect_cell(e))) : cell_reference(effect_cell(e)))

FI: cannot be used as a left hand side.

Definition at line 131 of file effects-util-local.h.

◆ effect_approximation_tag

#define effect_approximation_tag (   eff)     approximation_tag(effect_approximation(eff))

Definition at line 53 of file effects-util-local.h.

◆ effect_exact_p

#define effect_exact_p (   eff)     (approximation_tag(effect_approximation(eff)) ==is_approximation_exact)

Definition at line 78 of file effects-util-local.h.

◆ effect_may_p

#define effect_may_p (   eff)     (approximation_tag(effect_approximation(eff)) == is_approximation_may)

Definition at line 74 of file effects-util-local.h.

◆ effect_must_p

#define effect_must_p (   eff)     (approximation_tag(effect_approximation(eff)) == is_approximation_must)

Definition at line 76 of file effects-util-local.h.

◆ effect_read_p

#define effect_read_p (   eff)    (action_tag(effect_action(eff))==is_action_read)

#define effect_scalar_p(eff) entity_scalar_p(effect_entity(eff))

The semantics of effects_scalar_p() must be refined. If all the indices are constant expressions, we still have a scalar effect, unless they are later replaced by "*", as is the case currently for summary effects.

Potential bug: eff is evaluated twice. Should be copied in a local variable and braces be used.

Definition at line 72 of file effects-util-local.h.

◆ effect_reference

#define effect_reference (   e)
Value:
/**DO NOT REMOVE, PREVENT REDEFINITION :)
* use effect_any_reference instead !
*/ \
effect_reference_not_defined_anymore()

FI: it would be useful to assert cell_preference_p(effect_cell(e)), but I do not know how to do it in such a way that it works both for left hand sides and right hand sides using commas.

I definitely remove this one : it is too dangerous. #define effect_reference(e) \ preference_reference(cell_preference(effect_cell(e)))

Definition at line 126 of file effects-util-local.h.

◆ effect_system

#define effect_system (   e)
Value:
descriptor_convex(effect_descriptor(e)) : SC_UNDEFINED)
#define descriptor_convex_p(x)
Definition: effects.h:599
#define effect_descriptor(x)
Definition: effects.h:646

Definition at line 115 of file effects-util-local.h.

◆ effect_variable

#define effect_variable (   e)    reference_variable(effect_any_reference(e))

For COMPATIBILITY purpose only - DO NOT USE anymore.

Definition at line 86 of file effects-util-local.h.

◆ effect_write_p

#define effect_write_p (   eff)    (action_tag(effect_action(eff))==is_action_write)

Definition at line 73 of file effects-util-local.h.

◆ make_convex_effect

#define make_convex_effect (   reference,
  action,
  approximation,
  system 
)
Value:
make_effect(make_cell(is_reference, (reference)), \
descriptor make_descriptor(enum descriptor_utype tag, void *val)
Definition: effects.c:433
cell make_cell(enum cell_utype tag, void *val)
Definition: effects.c:290
effect make_effect(cell a1, action a2, approximation a3, descriptor a4)
Definition: effects.c:484
@ is_descriptor_convex
Definition: effects.h:575

Definition at line 148 of file effects-util-local.h.

◆ make_preference_simple_effect

#define make_preference_simple_effect (   reference,
  action,
  approximation 
)
Value:
preference make_preference(reference a1)
Definition: ri.c:1862
@ is_cell_preference
Definition: effects.h:446
@ is_descriptor_none
Definition: effects.h:576
#define UU
Definition: newgen_types.h:98

Definition at line 133 of file effects-util-local.h.

◆ make_reference_simple_effect

#define make_reference_simple_effect (   reference,
  action,
  approximation 
)

◆ make_simple_effect

◆ NOWHERE_LOCATION

#define NOWHERE_LOCATION   "*NOWHERE*"

Definition at line 33 of file effects-util-local.h.

◆ NULL_POINTER_NAME

#define NULL_POINTER_NAME   "*NULL*"

Definition at line 35 of file effects-util-local.h.

◆ NULL_POINTER_VALUE_NAME

#define NULL_POINTER_VALUE_NAME   "*NULL*"

Definition at line 39 of file effects-util-local.h.

◆ PHI_PREFIX

#define PHI_PREFIX   "PHI"

Definition at line 41 of file effects-util-local.h.

◆ pips_debug_pv

#define pips_debug_pv (   level,
  message,
  pv 
)
Value:
print_pointer_value(pv);}
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
Definition: misc-local.h:145
#define level
#define ifdebug(n)
Definition: sg.c:47

Definition at line 189 of file effects-util-local.h.

◆ pips_debug_pvs

#define pips_debug_pvs (   level,
  message,
  l_pv 
)
Value:
print_pointer_values(l_pv);}

Definition at line 193 of file effects-util-local.h.

◆ PROPER

#define PROPER   true

Definition at line 45 of file effects-util-local.h.

◆ PSI_PREFIX

#define PSI_PREFIX   "PSI"

Definition at line 42 of file effects-util-local.h.

◆ RHO_PREFIX

#define RHO_PREFIX   "RHO"

Definition at line 43 of file effects-util-local.h.

◆ SUMMARY

#define SUMMARY   false

Definition at line 46 of file effects-util-local.h.

◆ UNDEFINED_LOCATION

#define UNDEFINED_LOCATION   "*UNDEFINED*"

Definition at line 36 of file effects-util-local.h.

◆ UNDEFINED_POINTER_VALUE_NAME

#define UNDEFINED_POINTER_VALUE_NAME   "*UNDEFINED*"

Definition at line 38 of file effects-util-local.h.

◆ variable_beta_p

#define variable_beta_p (   e)
Value:
((e)!=(entity)NULL && (e)!=entity_undefined && \
strncmp(entity_name(e), REGIONS_MODULE_NAME, 10)==0 && \
strstr(entity_name(e), BETA_PREFIX) != NULL)
#define BETA_PREFIX
#define REGIONS_MODULE_NAME
Already defined.
#define entity_undefined
Definition: ri.h:2761
#define entity_name(x)
Definition: ri.h:2790

Definition at line 110 of file effects-util-local.h.

◆ variable_phi_p

#define variable_phi_p (   e)
Value:
((e)!=(entity)NULL && (e)!=entity_undefined && \
strncmp(entity_name(e), REGIONS_MODULE_NAME, 10)==0 && \
strstr(entity_name(e), PHI_PREFIX) != NULL)
#define PHI_PREFIX

true if e is a phi variable PHI entities have a name like: REGIONS:PHI#, where # is a number.

takes care if TCST and undefined entities, just in case. FC, 09/12/94

Definition at line 95 of file effects-util-local.h.

◆ variable_psi_p

#define variable_psi_p (   e)
Value:
((e)!=(entity)NULL && (e)!=entity_undefined && \
strncmp(entity_name(e), REGIONS_MODULE_NAME, 10)==0 && \
strstr(entity_name(e), PSI_PREFIX) != NULL)
#define PSI_PREFIX

Definition at line 100 of file effects-util-local.h.

◆ variable_rho_p

#define variable_rho_p (   e)
Value:
((e)!=(entity)NULL && (e)!=entity_undefined && \
strncmp(entity_name(e), REGIONS_MODULE_NAME, 10)==0 && \
strstr(entity_name(e), RHO_PREFIX) != NULL)
#define RHO_PREFIX

Definition at line 105 of file effects-util-local.h.