X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_new_nodes.c;h=2ddc4678d262e9e2ce4b07d42b899911dd6a932b;hb=fa4ec191e159484f0fcbea2ef044deaa2ab2d293;hp=fe858a04ba7a57e34f50f6854a143328707df382;hpb=43bf9b1e3e74401cfb602676f379dcf75523244a;p=libfirm diff --git a/ir/be/ia32/ia32_new_nodes.c b/ir/be/ia32/ia32_new_nodes.c index fe858a04b..2ddc4678d 100644 --- a/ir/be/ia32/ia32_new_nodes.c +++ b/ir/be/ia32/ia32_new_nodes.c @@ -9,9 +9,11 @@ #include "config.h" #endif -#ifdef _WIN32 +#ifdef HAVE_MALLOC_H #include -#else +#endif + +#ifdef HAVE_ALLOCA_H #include #endif @@ -34,16 +36,6 @@ #include "ia32_new_nodes.h" #include "gen_ia32_regalloc_if.h" -#ifdef obstack_chunk_alloc -# undef obstack_chunk_alloc -# define obstack_chunk_alloc xmalloc -#else -# define obstack_chunk_alloc xmalloc -# define obstack_chunk_free free -#endif - -extern int obstack_printf(struct obstack *obst, char *fmt, ...); - /** * Returns the ident of a SymConst. * @param symc The SymConst @@ -1227,11 +1219,17 @@ void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags, const ia32_regi /* default compare operation to compare immediate ops */ int ia32_compare_immop_attr(ia32_attr_t *a, ia32_attr_t *b) { + int equ = 0; + if (a->data.tp == b->data.tp) { - return a->cnst != b->cnst; + equ = (a->cnst == b->cnst); + equ = equ ? (a->data.use_frame == b->data.use_frame) : 0; + + if (equ && a->data.use_frame && b->data.use_frame) + equ = (a->frame_ent == b->frame_ent); } - return 1; + return !equ; } /* copies the ia32 attributes */ @@ -1260,9 +1258,5 @@ void ia32_register_copy_attr_func(void) { } } -static void ia32_register_additional_opcodes(int n) { - /* we don't need any additional opcodes */ -} - /* Include the generated constructor functions */ #include "gen_ia32_new_nodes.c.inl"