From 24ee43194a542768b987be5d8021ae4ba7bad7b5 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sun, 20 Mar 2022 12:10:45 +0100 Subject: [PATCH] [nvptx] Use '%' as register prefix The percentage sign as first character of a ptx identifier can be used to avoid name conflicts, e.g., between user-defined variable names and compiler-generated names. The insn nvptx_uniform_warp_check contains register names without '%' prefix, which potentially could lead to name conflicts with user-defined variable names. Fix this by adding a '%' prefix, more specifically a '%r_' prefix to avoid a name conflict with ptx special registers. Tested on x86_64 with nvptx accelerator. gcc/ChangeLog: 2022-03-20 Tom de Vries PR target/104925 * config/nvptx/nvptx.md (define_insn "nvptx_uniform_warp_check"): Use % as register prefix. --- gcc/config/nvptx/nvptx.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index 5550ce2..8ed6850 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -2280,13 +2280,14 @@ { const char *insns[] = { "{", - "\\t" ".reg.b32" "\\t" "act;", - "%.\\t" "vote.ballot.b32" "\\t" "act,1;", - "\\t" ".reg.pred" "\\t" "do_abort;", - "\\t" "mov.pred" "\\t" "do_abort,0;", - "%.\\t" "setp.ne.b32" "\\t" "do_abort,act,0xffffffff;", - "@ do_abort\\t" "trap;", - "@ do_abort\\t" "exit;", + "\\t" ".reg.b32" "\\t" "%%r_act;", + "%.\\t" "vote.ballot.b32" "\\t" "%%r_act,1;", + "\\t" ".reg.pred" "\\t" "%%r_do_abort;", + "\\t" "mov.pred" "\\t" "%%r_do_abort,0;", + "%.\\t" "setp.ne.b32" "\\t" "%%r_do_abort,%%r_act," + "0xffffffff;", + "@ %%r_do_abort\\t" "trap;", + "@ %%r_do_abort\\t" "exit;", "}", NULL }; -- 2.7.4