1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
4 * Authors: Christian Schaefer
6 * irflag --- optimization flags
16 #include "firm_common.h"
19 /* 0 - don't do this optimization
20 1 - lets see, if there is a better graph */
21 int optimized = 1; /* Turn off all optimizations */
23 int opt_cse = 1; /* Hash the nodes */
24 int opt_global_cse = 0; /* Don't use block predecessor for comparison */
25 /* @@@ 0 solage code placement fehlt */
26 int opt_constant_folding = 1; /* Evaluate operations */
27 int opt_unreachable_code = 1; /* Bad node propagation */
28 int opt_control_flow_straightening = 1; /* */
29 int opt_control_flow_weak_simplification = 1; /* */
30 int opt_control_flow_strong_simplification = 1; /* */
31 int opt_dead_node_elimination = 1; /* Reclaim memory */
32 int opt_reassociation = 1; /* Reassociate nodes */
33 int opt_inline = 1; /* Do inlining transformation */
35 /* set the flags with set_flagname, get the flag with get_flagname */
37 set_opt_cse (int value)
48 void set_opt_global_cse (int value)
50 opt_global_cse = value;
53 int get_opt_global_cse (void)
55 return opt_global_cse;
59 set_opt_constant_folding (int value)
61 opt_constant_folding=value;
65 get_opt_constant_folding (void)
67 return opt_constant_folding;
71 set_opt_unreachable_code(int value)
73 opt_unreachable_code = value;
77 get_opt_unreachable_code(void)
79 return opt_unreachable_code;
82 INLINE void set_opt_control_flow(int value) {
83 set_opt_control_flow_straightening(value);
84 set_opt_control_flow_weak_simplification(value);
85 set_opt_control_flow_strong_simplification(value);
88 /* Performs Straightening */
89 void set_opt_control_flow_straightening(int value) {
90 opt_control_flow_straightening = value;
92 int get_opt_control_flow_straightening(void) {
93 return opt_control_flow_straightening;
95 /* Performs if simplifications in local optimizations. */
96 void set_opt_control_flow_weak_simplification(int value) {
97 opt_control_flow_weak_simplification = value;
99 int get_opt_control_flow_weak_simplification(void) {
100 return opt_control_flow_weak_simplification;
102 /* Performs strong if and loop simplification (in optimize_cf). */
103 void set_opt_control_flow_strong_simplification(int value) {
104 opt_control_flow_strong_simplification = value;
106 int get_opt_control_flow_strong_simplification(void) {
107 return opt_control_flow_strong_simplification;
112 set_opt_reassociation(int value)
114 opt_reassociation = value;
118 get_opt_reassociation(void)
120 return opt_reassociation;
124 set_opt_dead_node_elimination (int value)
126 opt_dead_node_elimination = value;
130 get_opt_dead_node_elimination (void)
132 return opt_dead_node_elimination;
136 set_optimize (int value)
148 INLINE void set_opt_inline (int value) {
152 INLINE int get_opt_inline (void) {