Hi Terry,

I still think this is stage1 material.

> +  /* Don't combine if dest contains a user specified register and i3 contains
> +     ASM_OPERANDS, because the user specified register (same with dest) in i3
> +     would be replaced by the src of insn which might be different with
> +     the user's expectation.  */

"Do not eliminate a register asm in an asm input" or similar?  Text
explaining why REG_USERVAR_P && HARD_REGISTER_P works here would be
good to have, too.

> +  if (REG_P (dest) && REG_USERVAR_P (dest) && HARD_REGISTER_P (dest)
> +      && (GET_CODE (PATTERN (i3)) == SET
> +       && GET_CODE (SET_SRC (PATTERN (i3))) == ASM_OPERANDS))
> +    return 0;

That works only for asms with exactly one output.  You want
extract_asm_operands.


Segher

Reply via email to