8 #include "pips_config.h"
214 pips_debug(5,
"finish with string: %s\n", str);
285 pips_debug(5,
"finish with pragma: %s\n", result);
319 const char* omp_entities[] = {
326 for(
const char **iter=omp_entities;*iter;++iter) {
357 pips_debug (5,
"new reduction pragma as an extension added\n");
359 return (exprs != NULL);
375 pips_debug (5,
"new for pragma as an extension added\n");
377 return (exprs != NULL);
list gen_expression_cons(expression p, list l)
call make_call(entity a1, list a2)
syntax make_syntax_call(call _field_)
expression make_expression(syntax a1, normalized a2)
reference make_reference(entity a1, list a2)
reference copy_reference(reference p)
REFERENCE.
syntax make_syntax_reference(reference _field_)
static reference ref
Current stmt (an integer)
#define gen_recurse(start, domain_number, flt, rwt)
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
list loop_private_variables_as_entites(loop obj, bool local, bool index)
Get the variables local or private to a loop.
void gen_remove_once(list *pl, const void *o)
Remove the first occurence of o in list pl:
#define NIL
The empty list (nil in Lisp)
list gen_copy_seq(list l)
Copy a list structure.
size_t gen_length(const list l)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
bool prettyprint_language_is_fortran_p()
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
string concatenate(const char *,...)
Return the concatenation of the given strings.
#define same_string_p(s1, s2)
void string_buffer_free_all(string_buffer *)
free string buffer structure and force string freeing
void string_buffer_append(string_buffer, const string)
append string s (if non empty) to string buffer sb, the duplication is done if needed according to th...
string string_buffer_to_string(const string_buffer)
return malloc'ed string from string buffer sb
string_buffer string_buffer_make(bool dup)
allocate a new string buffer
string reference_to_string(reference r)
static bool statement_is_reduction(statement stmt)
static bool all_reduction
list reductions_get_omp_pragma_expr(loop l, statement stmt, bool strict)
pragma.c
static expression reduction_as_expr(reduction r)
static const string REDUCTION_KEYWORD
static void compute_all_reduction(statement stmt)
remenber if all the statement analazed are reduction since the last reset
static bool reductions_on_scalar(reductions reds)
static string omp_operator_str(reduction_operator o)
static const string OMP_PRAGMA_FOR_HEADER_C
static entity omp_operator_entity(reduction_operator o)
bool omp_pragma_expr_for(loop l, statement stmt)
generate "pragma omp for" as a list of expressions
static void reset_all_reduction(void)
reset the all_reduction flag
string reductions_get_omp_pragma_str(loop l, statement stmt)
static const string OMP_PRAGMA_FOR_HEADER_F
static string reduction_as_str(reduction r)
allocates and returns a string for reduction r
static void statement_remove_omp_clauses(statement stmt)
bool omp_pragma_expr_for_reduction(loop l, statement stmt, bool strict)
generate pragma for a reduction as a list of expressions
static list omp_append_private_clause(loop l, list exprs)
reductions load_printed_reductions(statement)
bool bound_printed_reductions_p(statement)
@ is_reduction_operator_bitwise_xor
@ is_reduction_operator_none
@ is_reduction_operator_min
@ is_reduction_operator_bitwise_and
@ is_reduction_operator_neqv
@ is_reduction_operator_max
@ is_reduction_operator_bitwise_or
@ is_reduction_operator_csum
@ is_reduction_operator_eqv
@ is_reduction_operator_prod
@ is_reduction_operator_or
@ is_reduction_operator_and
@ is_reduction_operator_sum
#define REDUCTION(x)
REDUCTION.
#define reduction_operator_tag(x)
#define reduction_reference(x)
#define reductions_list(x)
#define BITWISE_OR_OPERATOR_NAME
#define MAX_OPERATOR_NAME
#define BITWISE_XOR_OPERATOR_NAME
#define C_AND_OPERATOR_NAME
#define EQUIV_OPERATOR_NAME
#define PLUS_OPERATOR_NAME
#define NON_EQUIV_OPERATOR_NAME
#define AND_OPERATOR_NAME
FI: intrinsics are defined at a third place after bootstrap and effects! I guess the name should be d...
#define OMP_OMP_FUNCTION_NAME
#define MULTIPLY_OPERATOR_NAME
#define C_OR_OPERATOR_NAME
#define BITWISE_AND_OPERATOR_NAME
#define OMP_REDUCTION_FUNCTION_NAME
#define PLUS_C_OPERATOR_NAME
#define OMP_PRIVATE_FUNCTION_NAME
#define MIN_OPERATOR_NAME
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
entity CreateIntrinsic(string name)
this function does not create an intrinsic function because they must all be created beforehand by th...
bool expression_call_p(expression e)
call expression_call(expression e)
void add_pragma_expr_to_statement(statement st, list l)
Add a pragma as a list of expression to a statement.
list pragma_omp_parallel_for_as_exprs(void)
expression pragma_private_as_expr(list args_ent)
#define normalized_undefined
#define loop_execution(x)
#define pragma_expression_p(x)
#define pragma_string_p(x)
#define statement_domain
newgen_sizeofexpression_domain_defined
#define EXPRESSION(x)
EXPRESSION.
#define extension_pragma(x)
#define EXTENSION(x)
EXTENSION.
#define pragma_expression(x)
#define reference_indices(x)
#define statement_extensions(x)
#define extensions_extension(x)
#define execution_parallel_p(x)
static int lname(char *s, int look_for_entry)
check for keywords for subprograms return 0 if comment card, 1 if found name and put in arg string.
internally defined structure.
The structure used to build lists in NewGen.
#define exp
Avoid some warnings from "gcc -Wshadow".