only set pinned state when not already pinned
[libfirm] / ir / be / ia32 / ia32_fpu.c
index b19c944..53eecf5 100644 (file)
@@ -153,8 +153,12 @@ static
 void collect_fpu_mode_nodes_walker(ir_node *node, void *data)
 {
        collect_fpu_mode_nodes_env_t *env = data;
+       const arch_register_t *reg;
 
-       const arch_register_t *reg = arch_get_irn_register(env->arch_env, node);
+       if(!mode_is_data(get_irn_mode(node)))
+               return;
+
+       reg = arch_get_irn_register(env->arch_env, node);
        if(reg == &ia32_fp_cw_regs[REG_FPCW] && !is_ia32_ChangeCW(node)) {
                ARR_APP1(ir_node*, env->state_nodes, node);
        }