X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fmips_gen_decls.c;h=0957fb363d53d5cc4b890bb5dd9ca47f135a0679;hb=b2dba3350d751a784b350c19ddd839566e0eb3f0;hp=b6afcb1d97d61982876bdec7e24d7256860bd120;hpb=e40d15943089ef251f5e8bb25f6d2e5836e9e169;p=libfirm diff --git a/ir/be/mips/mips_gen_decls.c b/ir/be/mips/mips_gen_decls.c index b6afcb1d9..0957fb363 100644 --- a/ir/be/mips/mips_gen_decls.c +++ b/ir/be/mips/mips_gen_decls.c @@ -1,3 +1,22 @@ +/* + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + /** * Dumps global variables and constants as mips assembler. * @date 14.02.2006 @@ -230,7 +249,7 @@ static void dump_atomic_init(struct obstack *obst, ir_node *init) * @param ent The entity * @return 1 if it is a string constant, 0 otherwise */ -static int ent_is_string_const(entity *ent) +static int ent_is_string_const(ir_entity *ent) { int res = 0; ir_type *ty; @@ -281,7 +300,7 @@ static int ent_is_string_const(entity *ent) * @param obst The obst to dump on. * @param ent The entity to dump. */ -static void dump_string_cst(struct obstack *obst, entity *ent) +static void dump_string_cst(struct obstack *obst, ir_entity *ent) { int i, n; @@ -304,7 +323,7 @@ static void dump_string_cst(struct obstack *obst, entity *ent) if (isprint(c)) obstack_printf(obst, "%c", c); else - obstack_printf(obst, "%O", c); + obstack_printf(obst, "\\%o", c); break; } } @@ -321,7 +340,7 @@ struct arr_info { * Dumps the initialization of global variables that are not * "uninitialized". */ -static void dump_global(struct obstack *rdata_obstack, struct obstack *data_obstack, struct obstack *comm_obstack, entity *ent) +static void dump_global(struct obstack *rdata_obstack, struct obstack *data_obstack, struct obstack *comm_obstack, ir_entity *ent) { ir_type *ty = get_entity_type(ent); const char *ld_name = get_entity_ld_name(ent); @@ -366,7 +385,7 @@ static void dump_global(struct obstack *rdata_obstack, struct obstack *data_obst /* potential spare values should be already included! */ for (i = 0; i < get_compound_ent_n_values(ent); ++i) { - entity *step = get_compound_ent_value_member(ent, i); + ir_entity *step = get_compound_ent_value_member(ent, i); ir_type *stype = get_entity_type(step); if (get_type_mode(stype)) { @@ -416,10 +435,10 @@ static void dump_global(struct obstack *rdata_obstack, struct obstack *data_obst /* We wanna know how many arrays are on the path to the entity. We also have to know how * many elements each array holds to calculate the offset for the entity. */ for (j = 0; j < graph_length; j++) { - entity *step = get_compound_graph_path_node(path, j); - ir_type *step_type = get_entity_type(step); - int ty_size = (get_type_size_bits(step_type) + 7) >> 3; - int k, n = 0; + ir_entity *step = get_compound_graph_path_node(path, j); + ir_type *step_type = get_entity_type(step); + int ty_size = (get_type_size_bits(step_type) + 7) >> 3; + int k, n = 0; if (is_Array_type(step_type)) for (k = 0; k < get_array_n_dimensions(step_type); k++) @@ -434,7 +453,7 @@ static void dump_global(struct obstack *rdata_obstack, struct obstack *data_obst if (aipos) aipos--; for (offset = j = 0; j < graph_length; j++) { - entity *step = get_compound_graph_path_node(path, j); + ir_entity *step = get_compound_graph_path_node(path, j); ir_type *step_type = get_entity_type(step); int ent_ofs = get_entity_offset(step); int stepsize = 0; @@ -519,32 +538,6 @@ void mips_dump_globals(struct obstack *rdata_obstack, struct obstack *data_obsta dump_global(rdata_obstack, data_obstack, comm_obstack, get_class_member(gt, i)); } - -static void mips_emit_stdlib_call(FILE *F, const char* name, int num) { - fprintf(F, "%s:\n", name); - fprintf(F, "\tori $v0, $zero, %d\n", num); - fprintf(F, "\tsyscall\n"); - fprintf(F, "\tj $ra\n"); - fprintf(F, "\n"); -} - -/** - * Emits a default library for spim... Hack for now... - */ -static void mips_emit_standard_lib(FILE* F) { - static int output = 0; - if(output) - return; - output = 1; - - mips_emit_stdlib_call(F, "print_int", 1); - mips_emit_stdlib_call(F, "print_string", 4); - mips_emit_stdlib_call(F, "read_int", 5); - mips_emit_stdlib_call(F, "read_string", 8); - mips_emit_stdlib_call(F, "sbrk", 9); - mips_emit_stdlib_call(F, "exit", 10); -} - /************************************************************************/ void mips_gen_decls(FILE *out) { @@ -582,8 +575,4 @@ void mips_gen_decls(FILE *out) { obstack_free(&rodata, NULL); obstack_free(&data, NULL); obstack_free(&comm, NULL); - - fprintf(out, "\t.text\n"); - - mips_emit_standard_lib(out); }