emit pointer size for GetST0 and SetST0 as well
[libfirm] / ir / be / ia32 / ia32_emitter.c
index 29ae459..528816e 100644 (file)
@@ -587,7 +587,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);
 
@@ -1091,7 +1091,7 @@ static void Set_emitter(ir_node *irn, ir_mode *mode, ia32_emit_env_t *env) {
                lc_esnprintf(arg_env, cmd_buf, SNPRINTF_BUF_LEN, "cmp %s", ia32_emit_binop(irn, env));
        }
        else if (is_ia32_xCmpSet(irn)) {
-               lc_esnprintf(arg_env, cmd_buf, SNPRINTF_BUF_LEN, "ucomis%M %s", get_irn_n(irn, 0), ia32_emit_binop(irn, env));
+               lc_esnprintf(arg_env, cmd_buf, SNPRINTF_BUF_LEN, "ucomis%M %s", get_irn_n(irn, 2), ia32_emit_binop(irn, env));
        }
        else if (is_ia32_PsiCondSet(irn)) {
                /* omit compare because flags are already set by And/Or */