fixed mode suffix emitter
[libfirm] / ir / be / ia32 / ia32_emitter.c
index e6b866d..8e1fa6e 100644 (file)
@@ -293,7 +293,9 @@ static int ia32_get_mode_suffix(lc_appendable_t *app,
        ir_mode *mode = get_irn_mode(irn);
 
        if (mode == mode_T) {
-               mode = (is_ia32_Ld(irn) || is_ia32_St(irn)) ? get_ia32_ls_mode(irn) : get_ia32_res_mode(irn);
+               mode = get_ia32_res_mode(irn);
+               if (! mode)
+                       mode = get_ia32_ls_mode(irn);
        }
 
        if (! irn)
@@ -587,7 +589,7 @@ const char *ia32_emit_am(const ir_node *n, ia32_emit_env_t *env) {
        /* obstack_free with NULL results in an uninitialized obstack */
        obstack_init(obst);
 
-       p = pointer_size(mode, has_x87_register(n));
+       p = pointer_size(mode, has_x87_register(n) || is_ia32_GetST0(n) || is_ia32_SetST0(n));
        if (p)
                obstack_printf(obst, "%s ", p);