fix warnings, fix gasmode selection on linux
authorMatthias Braun <matze@braunis.de>
Mon, 14 Jul 2008 13:58:26 +0000 (13:58 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 14 Jul 2008 13:58:26 +0000 (13:58 +0000)
[r20445]

Makefile
ast2firm.c
driver/firm_opt.c
main.c
parser.c

index 1f8c7b1..87b732d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,7 @@ OBJECTS = $(SOURCES:%.c=build/%.o)
 SPLINTS = $(addsuffix .splint, $(SOURCES))
 CPARSERS = $(addsuffix .cparser, $(SOURCES))
 CPARSEROS = $(SOURCES:%.c=build/cpb/%.o)
+CPARSEROS_E = $(SOURCES:%.c=build/cpbe/%.o)
 CPARSEROS2 = $(SOURCES:%.c=build/cpb2/%.o)
 
 Q = @
@@ -80,7 +81,7 @@ endif
        @echo "===> DEPEND"
        @rm -f $@ && touch $@ && makedepend -p "$@ build/" -Y -f $@ -- $(CPPFLAGS) -- $(SOURCES) 2> /dev/null && rm $@.bak
 
-DIRS = build build/adt build/driver build/cpb build/cpb/adt build/cpb/driver build/cpb2 build/cpb2/adt build/cpb2/driver
+DIRS = build build/adt build/driver build/cpb build/cpb/adt build/cpb/driver build/cpb2 build/cpb2/adt build/cpb2/driver build/cpbe build/cpbe/adt build/cpbe/driver
 UNUSED := $(shell mkdir -p $(DIRS))
 
 $(GOAL): $(OBJECTS)
@@ -93,6 +94,8 @@ selfcheck: $(CPARSERS)
 
 bootstrap: build/cpb build/cpb/adt build/cpb/driver $(CPARSEROS) cparser.bootstrap
 
+bootstrape: build/cpb build/cpb/adt build/cpb/driver $(CPARSEROS_E) cparser.bootstrape
+
 bootstrap2: build/cpb2 build/cpb2/adt build/cpb2/driver $(CPARSEROS2) cparser.bootstrap2
 
 %.c.splint: %.c
@@ -109,7 +112,11 @@ $(DIRS):
 
 build/cpb/%.o: %.c build/cparser
        @echo '===> CPARSER $<'
-       $(Q)./build/cparser $(CPPFLAGS) -Wall -g3 -c $< -o $@
+       $(Q)./build/cparser $(CPPFLAGS) -std=c99 -Wall -g3 -c $< -o $@
+
+build/cpbe/%.o: %.c
+       @echo '===> ECCP $<'
+       $(Q)eccp $(CPPFLAGS) -std=c99 -Wall -c $< -o $@
 
 build/cpb2/%.o: %.c cparser.bootstrap
        @echo '===> CPARSER.BOOTSTRAP $<'
@@ -119,6 +126,10 @@ cparser.bootstrap: $(CPARSEROS)
        @echo "===> LD $@"
        $(Q)./build/cparser $(CPARSEROS) $(LFLAGS) -o $@
 
+cparser.bootstrape: $(CPARSEROS_E)
+       @echo "===> LD $@"
+       $(Q)gcc $(CPARSEROS_E) $(LFLAGS) -o $@
+
 cparser.bootstrap2: $(CPARSEROS2)
        @echo "===> LD $@"
        $(Q)./cparser.bootstrap $(CPARSEROS2) $(LFLAGS) -o $@
index 97814fc..97d2604 100644 (file)
@@ -741,7 +741,6 @@ static ir_type *get_ir_type_incomplete(type_t *type)
        case TYPE_COMPOUND_STRUCT:
                return create_compound_type(&type->compound, NULL, NULL, NULL,
                                            true, COMPOUND_IS_STRUCT);
-               break;
        case TYPE_COMPOUND_UNION:
                return create_compound_type(&type->compound, NULL, NULL, NULL,
                                            true, COMPOUND_IS_UNION);
@@ -5106,14 +5105,16 @@ void init_ast2firm(void)
                break;
        case OS_SUPPORT_LINUX:
                create_ld_ident = create_ld_ident_linux_elf;
-               s = "ia32-gasmode=linux"; break;
+               s = "ia32-gasmode=elf";
                break;
        case OS_SUPPORT_MACHO:
                create_ld_ident = create_ld_ident_macho;
-               s = "ia32-gasmode=macho"; break;
+               s = "ia32-gasmode=macho";
                break;
        }
-       firm_be_option(s);
+       int res = firm_be_option(s);
+       (void) res;
+       assert(res);
 
        /* create idents for all known runtime functions */
        for (size_t i = 0; i < sizeof(rts_data) / sizeof(rts_data[0]); ++i) {
index 5d0c619..abbcd31 100644 (file)
@@ -363,13 +363,13 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi
     normalize_one_return(irg);
 #endif
 
-
 #if 0
     if (firm_opt.modes) {
       /* convert all modes into integer if possible */
       arch_mode_conversion(irg, predefs.mode_uint);
     }
 #endif
+
     timer_push(TV_SCALAR_REPLACE);
       scalar_replacement_opt(irg);
     timer_pop();
@@ -424,11 +424,13 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi
       CHECK_ONE(firm_opt.check_all, irg);
     }
 
+#if 1
     if (firm_opt.luffig) {
       opt_ldst2(irg);
       DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "ldst2");
       CHECK_ONE(firm_opt.check_all, irg);
     }
+#endif
 
     timer_push(TV_CF_OPT);
       optimize_cf(irg);
@@ -534,7 +536,7 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi
   }
 
   if (firm_opt.do_inline) {
-    inline_functions(500, 50);
+    inline_functions(5000, 500);
     DUMP_ALL_C(firm_dump.ir_graph && firm_dump.all_phases, "inl");
     CHECK_ALL(firm_opt.check_all);
   }
@@ -554,6 +556,12 @@ static void do_firm_optimizations(const char *input_filename, int firm_const_exi
 
   if (firm_opt.cond_eval) {
     for (i = 0; i < get_irp_n_irgs(); i++) {
+               if (firm_opt.luffig) {
+                       opt_ldst2(irg);
+                       DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "ldst2");
+                       CHECK_ONE(firm_opt.check_all, irg);
+               }
+
       irg = get_irp_irg(i);
       timer_push(TV_COND_EVAL);
         opt_cond_eval(irg);
diff --git a/main.c b/main.c
index 5e66ff1..9890beb 100644 (file)
--- a/main.c
+++ b/main.c
@@ -384,6 +384,20 @@ static void print_cparser_version(void) {
        puts(")\n");
 }
 
+static void set_be_option(const char *arg)
+{
+       int res = firm_be_option(arg);
+       (void) res;
+       assert(res);
+}
+
+static void set_option(const char *arg)
+{
+       int res = firm_option(arg);
+       (void) res;
+       assert(res);
+}
+
 int main(int argc, char **argv)
 {
        initialize_firm();
@@ -438,23 +452,23 @@ int main(int argc, char **argv)
        /* apply optimisation level */
        switch(opt_level) {
        case 0:
-               firm_option("no-opt");
+               set_option("no-opt");
                break;
        case 1:
-               firm_option("no-inline");
+               set_option("no-inline");
                break;
        default:
        case 4:
-               firm_option("strict-aliasing");
+               set_option("strict-aliasing");
                /* fallthrough */
        case 3:
-               firm_option("cond-eval");
-               firm_option("if-conv");
+               set_option("cond-eval");
+               set_option("if-conv");
                /* fallthrough */
        case 2:
-               firm_option("inline");
-               firm_option("deconv");
-               firm_be_option("omitfp");
+               set_option("inline");
+               set_option("deconv");
+               set_be_option("omitfp");
                break;
        }
 
@@ -469,9 +483,9 @@ int main(int argc, char **argv)
                        if(option[0] == 'o') {
                                GET_ARG_AFTER(outname, "-o");
                        } else if(option[0] == 'g') {
-                               firm_be_option("stabs=yes");
-                               firm_be_option("omitfp=no");
-                               firm_be_option("ia32-nooptcc=yes");
+                               set_be_option("debuginfo=stabs");
+                               set_be_option("omitfp=no");
+                               set_be_option("ia32-nooptcc=yes");
                        } else if(SINGLE_OPTION('c')) {
                                mode = CompileAssemble;
                        } else if(SINGLE_OPTION('E')) {
@@ -511,9 +525,9 @@ int main(int argc, char **argv)
                                if(strcmp(opt, "syntax-only") == 0) {
                                        mode = ParseOnly;
                                } else if(strcmp(opt, "omit-frame-pointer") == 0) {
-                                       firm_be_option("omitfp");
+                                       set_be_option("omitfp");
                                } else if(strcmp(opt, "no-omit-frame-pointer") == 0) {
-                                       firm_be_option("omitfp=no");
+                                       set_be_option("omitfp=no");
                                } else {
                                        int res = firm_option(opt);
                                        if (res == 0) {
@@ -594,13 +608,9 @@ int main(int argc, char **argv)
                                        if (res == 0)
                                                argument_errors = true;
                                } else if(strcmp(opt, "omit-leaf-frame-pointer") == 0) {
-                                       int res = firm_be_option("omitleaffp=1");
-                                       if (res == 0)
-                                               argument_errors = true;
+                                       set_be_option("omitleaffp=1");
                                } else if(strcmp(opt, "no-omit-leaf-frame-pointer") == 0) {
-                                       int res = firm_be_option("omitleaffp=0");
-                                       if (res == 0)
-                                               argument_errors = true;
+                                       set_be_option("omitleaffp=0");
                                } else {
                                        char *endptr;
                                        long int value = strtol(opt, &endptr, 10);
@@ -623,7 +633,7 @@ int main(int argc, char **argv)
                                        input = arg;
                                }
                        } else if(strcmp(option, "pg") == 0) {
-                               firm_be_option("-b gprof");
+                               set_be_option("-b gprof");
                                obstack_printf(&ldflags_obst, " -pg");
                        } else if(strcmp(option, "pedantic") == 0) {
                                fprintf(stderr, "warning: ignoring gcc option '%s'\n", arg);
index 2681891..1882d8a 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1096,7 +1096,6 @@ static gnu_attribute_t *allocate_gnu_attribute(gnu_attribute_kind_t kind) {
        attribute->have_arguments  = false;
 
        return attribute;
-       return attribute;
 }
 
 /**