On Fri, Feb 07, 2014 at 12:58:37PM +0100, Andreas Krebbel wrote:
> 2014-02-07  Andreas Krebbel  <andreas.kreb...@de.ibm.com>
> 
>       * optabs.c (expand_atomic_compare_and_swap): Allow expander to
>       fail.

Ok.

> --- a/gcc/optabs.c
> +++ b/gcc/optabs.c
> @@ -7383,12 +7383,13 @@ expand_atomic_compare_and_swap (rtx *ptarget_bool, 
> rtx *ptarget_oval,
>        create_integer_operand (&ops[5], is_weak);
>        create_integer_operand (&ops[6], succ_model);
>        create_integer_operand (&ops[7], fail_model);
> -      expand_insn (icode, 8, ops);
> -
> -      /* Return success/failure.  */
> -      target_bool = ops[0].value;
> -      target_oval = ops[1].value;
> -      goto success;
> +      if (maybe_expand_insn (icode, 8, ops))
> +     {
> +       /* Return success/failure.  */
> +       target_bool = ops[0].value;
> +       target_oval = ops[1].value;
> +       goto success;
> +     }
>      }
>  
>    /* Otherwise fall back to the original __sync_val_compare_and_swap

        Jakub

Reply via email to