On Thu, May 07, 2015 at 10:59:01AM +0200, Thomas Schwinge wrote:
>      build/genrecog [...]/source-gcc/gcc/common.md 
> [...]/source-gcc/gcc/config/nvptx/nvptx.md \
>                insn-conditions.md > tmp-recog.c
>     -[...]/source-gcc/gcc/config/nvptx/nvptx.md:1206: warning: operand 0 
> missing mode?
>     -[...]/source-gcc/gcc/config/nvptx/nvptx.md:1206: warning: operand 1 
> missing mode?
> 
> gcc/config/nvptx/nvptx.md:
> 
>     1206 (define_insn "allocate_stack"
>     1207   [(set (match_operand 0 "nvptx_register_operand" "=R")
>     1208         (unspec [(match_operand 1 "nvptx_register_operand" "R")]
>     1209                   UNSPEC_ALLOCA))]
>     1210   ""
>     1211   "%.\\tcall (%0), %%alloca, (%1);")
> 
> Are these two (former) warnings a) something that should still be
> reported by genrecog, 

Yes.

> and b) something that should be addressed (Bernd)?

Yes.  Supposedly you want :P on both match_operand and unspec too, but
as this serves not just as an insn pattern, but also as expander that
needs to have this particular name, supposedly you want:

(define_expand "allocate_stack"
  [(match_operand 0 "nvptx_register_operand")
   (match_operand 1 "nvptx_register_operand")]
  ""
{
  if (TARGET_ABI64)
    emit_insn (gen_allocate_stack_di (operands[0], operands[1]));
  else
    emit_insn (gen_allocate_stack_si (operands[0], operands[1]));
  DONE;
})

(define_insn "allocate_stack_<mode>"
  [(set (match_operand:P 0 "nvptx_register_operand" "=R")
        (unspec:P [(match_operand:P 1 "nvptx_register_operand" "R")]
                   UNSPEC_ALLOCA))]
  ""
  "%.\\tcall (%0), %%alloca, (%1);")

rr so.  Of course, as even latest Cuda drop doesn't support alloca, this is
quite dubious, perhaps better would be sorry on it.

BTW, with Cuda 7.0, even printf doesn't work anymore, is that known?

        Jakub

Reply via email to