PIPS
expressions.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/expressions/expressions-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef expressions_header_included
7 #define expressions_header_included
8 /* expressions-local.h */
9 /*
10 
11  $Id: expressions-local.h 23065 2016-03-02 09:05:50Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 #ifndef EXPRESSION_H_
33 #define EXPRESSION_H_
34 /*
35  * for partial_eval.c:
36  *
37  * EFORMAT: the expression format used in recursiv evaluations.
38  * = ((ICOEF * EXPR) + ISHIFT)
39  * it is SIMPLER when it is interesting to replace initial expression by the
40  * one generated from eformat.
41  */
42 struct eformat {
44  int icoef;
45  int ishift;
46  bool simpler;
47 };
48 
49 typedef struct eformat eformat_t;
50 #endif
51 /* cproto-generated files */
52 /* partial_eval.c */
53 extern void set_live_loop_indices(void);
54 extern void reset_live_loop_indices(void);
55 extern void dump_live_loop_indices(void);
56 extern void init_use_proper_effects(const char */*module_name*/);
57 extern effects stmt_to_fx(statement /*stmt*/, statement_effects /*fx_map*/);
58 extern bool entity_written_p(entity /*ent*/, effects /*fx*/);
59 extern void init_use_preconditions(const char */*module_name*/);
60 extern Psysteme stmt_prec(statement /*stmt*/);
61 extern void transformer_map_print(void);
62 extern bool eformat_equivalent_p(eformat_t /*ef1*/, eformat_t /*ef2*/);
63 extern void print_eformat(eformat_t /*ef*/, char */*name*/);
64 extern void partial_eval_expression_and_regenerate(expression */*ep*/, Psysteme /*ps*/, effects /*fx*/);
66 extern eformat_t partial_eval_expression(expression /*e*/, Psysteme /*ps*/, effects /*fx*/);
67 extern eformat_t partial_eval_syntax(expression /*e*/, Psysteme /*ps*/, effects /*fx*/);
68 extern eformat_t partial_eval_reference(expression /*e*/, Psysteme /*ps*/, effects /*fx*/);
69 extern void partial_eval_call_and_regenerate(call /*ca*/, Psysteme /*ps*/, effects /*fx*/);
70 extern eformat_t partial_eval_call(call /*ec*/, Psysteme /*ps*/, effects /*fx*/);
71 extern eformat_t partial_eval_call_expression(expression /*exp*/, Psysteme /*ps*/, effects /*fx*/);
72 extern eformat_t partial_eval_unary_operator(entity /*func*/, cons */*la*/, Psysteme /*ps*/, effects /*fx*/);
73 extern eformat_t partial_eval_mult_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
74 extern eformat_t partial_eval_plus_or_minus_operator(int /*token*/, expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
75 extern eformat_t partial_eval_plus_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
76 extern eformat_t partial_eval_plus_c_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
77 extern eformat_t partial_eval_minus_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
78 extern eformat_t partial_eval_minus_c_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
79 extern eformat_t partial_eval_div_or_mod_operator(int /*token*/, expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
80 extern eformat_t partial_eval_div_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
81 extern eformat_t partial_eval_mod_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
82 extern eformat_t partial_eval_c_mod_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
83 extern eformat_t partial_eval_min_or_max_operator(int /*token*/, expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
84 extern eformat_t partial_eval_min_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
85 extern eformat_t partial_eval_max_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
86 extern eformat_t partial_eval_power_operator(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
87 extern eformat_t partial_eval_update_operators(expression */*ep1*/, expression */*ep2*/, Psysteme /*ps*/, effects /*fx*/);
88 extern eformat_t partial_eval_binary_operator(entity /*func*/, cons */*la*/, Psysteme /*ps*/, effects /*fx*/);
89 extern eformat_t partial_eval_binary_operator_old(entity /*func*/, cons */*la*/, Psysteme /*ps*/, effects /*fx*/);
90 extern void regenerate_expression(eformat_t */*efp*/, expression */*ep*/);
91 extern void regenerate_call(eformat_t */*efp*/, call /*ca*/);
92 extern expression generate_monome(int /*coef*/, expression /*expr*/);
93 extern void partial_eval_declaration(entity /*v*/, Psysteme /*pre_sc*/, effects /*fx*/);
94 extern void partial_eval_declarations(list /*el*/, Psysteme /*pre_sc*/, effects /*fx*/);
95 extern void partial_eval_statement(statement /*stmt*/);
96 extern bool partial_eval(const char */*module_name*/);
97 /* simple_atomize.c */
98 extern statement atomize_this_expression(entity (* /*create*/)(entity, basic), expression /*e*/);
99 extern void cleanup_subscripts(void */*obj*/);
100 extern void atomize_as_required(statement /*stat*/, bool (* /*ref_decide*/)(reference, expression), bool (* /*call_decide*/)(call, expression), bool (* /*test_decide*/)(test, expression), bool (* /*range_decide*/)(range, expression), bool (* /*while_decide*/)(whileloop, expression), entity (* /*new*/)(entity, basic));
101 /* forward_substitution.c */
102 extern bool forward_substitute(const char */*module_name*/);
103 /* optimize.c */
104 extern void naryfication_of_expressions(statement /*s*/);
105 extern entity inverse_operator_of(entity /*e*/);
107 extern void convert_to_c_operators(void */*v*/);
108 extern void convert_to_standard_operators(void */*v*/);
109 extern bool optimize_expressions(const char */*module_name*/);
110 /* sequence_gcm_cse.c */
111 extern void perform_icm_association(const char */*name*/, statement /*s*/);
112 extern void try_reorder_expressions(void */*s*/, bool /*icm*/);
113 extern void perform_ac_cse(const char */*name*/, statement /*s*/);
114 extern bool common_subexpression_elimination(const char */*module_name*/);
115 extern bool icm(const char */*module_name*/);
116 /* instruction_selection.c */
117 extern bool instruction_selection(const char */*module_name*/);
118 /* expression_substitution.c */
119 extern void substitute_expression(void */*in*/, expression /*pattern*/, expression /*into*/);
120 extern bool expression_substitution(const char */*module_name*/);
121 /* simplify.c */
122 extern bool simplify_subscripts(const char */*module_name*/);
123 extern bool split_structures(const char */*module_name*/);
124 extern void complex_translation_array_of_structs(list */*pl*/, list /*l*/);
125 extern void complex_translation_struct_of_array(list */*pl*/, list /*l*/);
126 extern bool simplify_complex(const char */*module_name*/);
127 extern void simplify_c_operator(statement /*s*/);
128 extern bool simplify_constant_address_expressions(const char */*module_name*/);
129 /* rename_operator.c */
130 extern bool rename_operator(const char */*module_name*/);
131 #endif /* expressions_header_included */
void perform_icm_association(const char *, statement)
sequence_gcm_cse.c
eformat_t partial_eval_expression(expression, Psysteme, effects)
Definition: partial_eval.c:318
bool simplify_subscripts(const char *)
simplify.c
Definition: simplify.c:64
eformat_t partial_eval_call_expression(expression, Psysteme, effects)
Definition: partial_eval.c:664
eformat_t partial_eval_minus_c_operator(expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:972
void partial_eval_declarations(list, Psysteme, effects)
void regenerate_expression(eformat_t *, expression *)
in order to regenerate expression from eformat.
eformat_t partial_eval_max_operator(expression *, expression *, Psysteme, effects)
void convert_to_c_operators(void *)
Definition: optimize.c:1343
void naryfication_of_expressions(statement)
optimize.c
Definition: optimize.c:810
void substitute_expression(void *, expression, expression)
expression_substitution.c
eformat_t partial_eval_mult_operator(expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:727
bool icm(const char *)
Pipsmake phase: Invariant Code Motion.
bool expression_substitution(const char *)
simple pass that performs substitution of expression by module call
eformat_t partial_eval_unary_operator(entity, cons *, Psysteme, effects)
Definition: partial_eval.c:680
eformat_t partial_eval_min_or_max_operator(int, expression *, expression *, Psysteme, effects)
void set_live_loop_indices(void)
cproto-generated files
Definition: partial_eval.c:129
void partial_eval_declaration(entity, Psysteme, effects)
assumes conditions checked by partial_eval_declarations()
eformat_t partial_eval_call(call, Psysteme, effects)
Definition: partial_eval.c:574
bool simplify_constant_address_expressions(const char *)
transforms *"aer" into 'a' do not take care of "aer"[2] but could be extended to
Definition: simplify.c:657
void perform_ac_cse(const char *, statement)
void atomize_as_required(statement, bool(*)(reference, expression), bool(*)(call, expression), bool(*)(test, expression), bool(*)(range, expression), bool(*)(whileloop, expression), entity(*)(entity, basic))
eformat_t partial_eval_reference(expression, Psysteme, effects)
Definition: partial_eval.c:436
bool rename_operator(const char *)
rename_operator.c
eformat_t partial_eval_power_operator(expression *, expression *, Psysteme, effects)
void try_reorder_expressions(void *, bool)
bool simplify_complex(const char *)
split complexes into an array with first element <> real part and second element <> imaginary part
Definition: simplify.c:578
eformat_t partial_eval_binary_operator_old(entity, cons *, Psysteme, effects)
void inverse_normalization_of_expressions(statement)
Definition: optimize.c:940
bool instruction_selection(const char *)
instruction_selection.c
bool forward_substitute(const char *)
forward_substitution.c
bool entity_written_p(entity, effects)
Definition: partial_eval.c:198
eformat_t partial_eval_div_or_mod_operator(int, expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:993
bool optimize_expressions(const char *)
pipsmake interface to apply expression optimization according to various strategy.
Definition: optimize.c:1391
void init_use_preconditions(const char *)
Definition: partial_eval.c:216
void print_eformat(eformat_t, char *)
Definition: partial_eval.c:277
bool common_subexpression_elimination(const char *)
Pipsmake phase: Common Subexpression Elimination.
bool eformat_equivalent_p(eformat_t, eformat_t)
Definition: partial_eval.c:269
effects stmt_to_fx(statement, statement_effects)
returns proper effects associated to statement stmt
Definition: partial_eval.c:179
void reset_live_loop_indices(void)
Definition: partial_eval.c:135
eformat_t partial_eval_c_mod_operator(expression *, expression *, Psysteme, effects)
void partial_eval_call_and_regenerate(call, Psysteme, effects)
Definition: partial_eval.c:553
eformat_t partial_eval_plus_or_minus_operator(int, expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:792
eformat_t partial_eval_expression_and_copy(expression, Psysteme, effects)
Definition: partial_eval.c:305
void init_use_proper_effects(const char *)
Definition: partial_eval.c:171
void dump_live_loop_indices(void)
Definition: partial_eval.c:145
bool partial_eval(const char *)
Top-level function.
eformat_t partial_eval_div_operator(expression *, expression *, Psysteme, effects)
void regenerate_call(eformat_t *, call)
We are likely to end up in trouble because the regenerated expression may not be a call; for instance...
eformat_t partial_eval_update_operators(expression *, expression *, Psysteme, effects)
expression generate_monome(int, expression)
entity inverse_operator_of(entity)
Definition: optimize.c:852
void cleanup_subscripts(void *)
eformat_t partial_eval_binary_operator(entity, cons *, Psysteme, effects)
void complex_translation_struct_of_array(list *, list)
Definition: simplify.c:416
eformat_t partial_eval_syntax(expression, Psysteme, effects)
Definition: partial_eval.c:355
void complex_translation_array_of_structs(list *, list)
Definition: simplify.c:412
eformat_t partial_eval_min_operator(expression *, expression *, Psysteme, effects)
void transformer_map_print(void)
Definition: partial_eval.c:252
eformat_t partial_eval_minus_operator(expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:959
void partial_eval_expression_and_regenerate(expression *, Psysteme, effects)
Definition: partial_eval.c:284
eformat_t partial_eval_mod_operator(expression *, expression *, Psysteme, effects)
void convert_to_standard_operators(void *)
Definition: optimize.c:1364
Psysteme stmt_prec(statement)
Definition: partial_eval.c:230
statement atomize_this_expression(entity(*)(entity, basic), expression)
simple_atomize.c
void simplify_c_operator(statement)
replace PLUS_C_OPERATOR_NAME by PLUS_OPERATOR_NAME when relevant
Definition: simplify.c:621
eformat_t partial_eval_plus_c_operator(expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:937
bool split_structures(const char *)
Definition: simplify.c:365
void partial_eval_statement(statement)
apply partial eval on each statement we cannot recurse on something other than a statement because we...
eformat_t partial_eval_plus_operator(expression *, expression *, Psysteme, effects)
Definition: partial_eval.c:924
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
expression expr