*
* @file firm_opt.c -- Firm-generating back end optimizations.
*
- * (C) 2005-2007 Michael Beck beck@ipd.info.uni-karlsruhe.de
+ * (C) 2005-2009 Michael Beck beck@ipd.info.uni-karlsruhe.de
*
* $Id$
*/
{ &rts_entities[rts_tanhl], i_mapper_tanh },
/* string */
- { &rts_entities[rts_memcpy], i_mapper_memcpy },
- { &rts_entities[rts_memset], i_mapper_memset },
{ &rts_entities[rts_strcmp], i_mapper_strcmp },
{ &rts_entities[rts_strncmp], i_mapper_strncmp },
- { &rts_entities[rts_strlen], i_mapper_strlen }
+ { &rts_entities[rts_strcpy], i_mapper_strcpy },
+ { &rts_entities[rts_strlen], i_mapper_strlen },
+ { &rts_entities[rts_memcpy], i_mapper_memcpy },
+ { &rts_entities[rts_mempcpy], i_mapper_mempcpy },
+ { &rts_entities[rts_memmove], i_mapper_memmove },
+ { &rts_entities[rts_memset], i_mapper_memset },
+ { &rts_entities[rts_memcmp], i_mapper_memcmp }
};
i_record rec[sizeof(mapper)/sizeof(mapper[0])];
unsigned i, n_map;
set_irp_memory_disambiguator_options(aa_opt);
/* parameter passing code should set them directly sometime... */
- set_opt_enabled("rts", firm_opt.freestanding);
+ set_opt_enabled("rts", !firm_opt.freestanding);
set_opt_enabled("gc_irgs", firm_opt.remove_unused);
set_opt_enabled("tailrec", firm_opt.tail_rec);
set_opt_enabled("funccalls", firm_opt.func_calls);
ir_type *ent_ty = get_entity_type(ent);
unsigned align, misalign;
+ /* inner functions do not expand the frame */
+ if (is_Method_type(ent_ty) && is_frame_type(ty))
+ continue;
+
/* compute member types */
if (! compute_type_size(ent_ty))
return 0;