Do not strip the 0x prefix from the textual representation of hexadecimal constants.
[cparser] / driver / firm_opt.c
index ada3dda..defb7aa 100644 (file)
@@ -756,12 +756,9 @@ void generate_code(FILE *out, const char *input_filename)
 {
        int i;
 
-       set_optimize(1);
-       set_opt_constant_folding(firm_opt.const_folding);
-       set_opt_algebraic_simplification(firm_opt.const_folding);
-       set_opt_cse(firm_opt.cse);
-       set_opt_global_cse(0);
-
+       /* initialize implicit opts, just to be sure because really the frontend
+        * should have called it already before starting graph construction */
+       init_implicit_optimizations();
        init_statistics();
 
        do_node_verification((firm_verification_t) firm_opt.verify);
@@ -833,6 +830,7 @@ static void disable_all_opts(void)
        firm_opt.alias_analysis  = false;
        firm_opt.strict_alias    = false;
        firm_opt.no_alias        = false;
+       firm_opt.const_folding   = false;
 
        FOR_EACH_OPT(config) {
                if (config->flags & OPT_FLAG_ESSENTIAL) {
@@ -965,3 +963,12 @@ void choose_optimization_pack(int level)
                break;
        }
 }
+
+void init_implicit_optimizations(void)
+{
+       set_optimize(1);
+       set_opt_constant_folding(firm_opt.const_folding);
+       set_opt_algebraic_simplification(firm_opt.const_folding);
+       set_opt_cse(firm_opt.cse);
+       set_opt_global_cse(0);
+}