POINTER_SIZE is the proper macro to retrieve pointer size in bits for the
target ABI, but new code incorrectly used BITS_PER_WORD, breaking 32-bit
code generation.

        * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
        POINTER_SIZE instead of BITS_PER_WORD.
        (nvptx_declare_function_name): Ditto.
        (nvptx_output_return): Ditto.
        (nvptx_file_end): Ditto.
---
 gcc/ChangeLog.gomp-nvptx | 8 ++++++++
 gcc/config/nvptx/nvptx.c | 8 ++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index e69e0be..93bf781 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -946,7 +946,7 @@ nvptx_init_axis_predicate (FILE *file, int regno, const 
char *name)
 static void
 nvptx_init_unisimt_predicate (FILE *file)
 {
-  int bits = BITS_PER_WORD;
+  int bits = POINTER_SIZE;
   int master = REGNO (cfun->machine->unisimt_master);
   int pred = REGNO (cfun->machine->unisimt_predicate);
   fprintf (file, "\t{\n");
@@ -1108,7 +1108,7 @@ nvptx_declare_function_name (FILE *file, const char 
*name, const_tree decl)
       /* Maintain 64-bit stack alignment.  */
       int keep_align = BIGGEST_ALIGNMENT / BITS_PER_UNIT;
       sz = ROUND_UP (sz, keep_align);
-      int bits = BITS_PER_WORD;
+      int bits = POINTER_SIZE;
       fprintf (file, "\t.reg.u%d %%frame;\n", bits);
       fprintf (file, "\t.reg.u32 %%fstmp0;\n");
       fprintf (file, "\t.reg.u%d %%fstmp1;\n", bits);
@@ -1177,7 +1177,7 @@ nvptx_output_return (void)
 
   if (cfun->machine->using_softstack)
     fprintf (asm_out_file, "\tst.shared.u%d [%%fstmp2], %%fstmp1;\n",
-            BITS_PER_WORD);
+            POINTER_SIZE);
 
   if (mode != VOIDmode)
     fprintf (asm_out_file, "\tst.param%s\t[%s_out], %s;\n",
@@ -4191,7 +4191,7 @@ nvptx_file_end (void)
     {
       write_var_marker (asm_out_file, false, true, "__nvptx_stacks");
       fprintf (asm_out_file, ".extern .shared .u%d __nvptx_stacks[32];\n",
-              BITS_PER_WORD);
+              POINTER_SIZE);
     }
   if (need_unisimt_decl)
     {

Reply via email to