[nvptx] Add exit after call to noreturn function
2017-09-25 Tom de Vries <tom@codesourcery.com>
PR target/80035
PR target/81069
* config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
noreturn function.
---
gcc/config/nvptx/nvptx.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
@@ -2304,11 +2304,14 @@ nvptx_output_call_insn (rtx_insn *insn, rtx result, rtx callee)
fprintf (asm_out_file, ";\n");
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");
+ {
+ /* 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 and exit, which it does grok. */
+ fprintf (asm_out_file, "\t\ttrap; // (noreturn)\n");
+ fprintf (asm_out_file, "\t\texit; // (noreturn)\n");
+ }
if (result)
{