https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80035

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tschwinge at gcc dot gnu.org

--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
>       {
>               .param.u32 %out_arg1;
>               st.param.u32 [%out_arg1], %r31;
>               call exit, (%out_arg1);
>               trap; // (noreturn)
>       }

At nvptx_output_call_insn, we see:
...
  if (find_reg_note (insn, REG_NORETURN, NULL))
    /* No return functions confuse the PTX JIT, as it doesn't realize           
       the flow control barrier they imply.  It can seg fault if it             
       encounters what looks like an unexitable loop.  Emit a trailing          
       trap, which it does grok.  */
    fprintf (asm_out_file, "\t\ttrap; // (noreturn)\n");
...

Replacing trap with exit or ret (or adding it after trap), makes the sigsegv go
away.

Reply via email to