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

            Bug ID: 123115
           Summary: -Wunused-but-set-variable warning for
                    EH_RETURN_DATA_REGNO on nvptx
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
  Target Milestone: ---

```
x86_64-pc-linux-gnu-g++  -fPIE -c    -O2 -pipe     -DIN_GCC
-DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti
-fasynchronous-unwind-tables -W -Wall -Wno-error=narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -Wconditionally-supported
-Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings  -DHAVE_CONFIG_H -fPIE -I. -I.
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/.
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../include

-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../libcpp/include
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../libcody

-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../libdecnumber
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../libdecnumber/dpd
-I../libdecnumber
-I/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/../libbacktrace
 -D_GENTOO_TIME64_FORCE=0 -o df-scan.o -MT df-scan.o -MMD -MP -MF
./.deps/df-scan.TPo
/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/df-scan.cc
/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/df-scan.cc:
In function ‘void df_bb_refs_collect(df_collection_rec*, basic_block)’:
/var/tmp/portage/cross-accel-nvptx-none/gcc-16.0.9999/work/gcc-16.0.9999/gcc/df-scan.cc:3291:20:
warning: variable ‘i’ set but not used [-Wunused-but-set-variable=]
 3291 |       unsigned int i;
      |                    ^
```

```
  if (bb_has_eh_pred (bb))
    {
      unsigned int i;
      /* Mark the registers that will contain data for the handler.  */
      for (i = 0; ; ++i)
        {
          unsigned regno = EH_RETURN_DATA_REGNO (i);
          if (regno == INVALID_REGNUM)
            break;
          df_ref_record (DF_REF_ARTIFICIAL, collection_rec,
regno_reg_rtx[regno], NULL,
                         bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP);
        }
    }
```


On nvptx, EH_RETURN_DATA_REGNO is from gcc/defaults.h:
```
/* Provide defaults for stuff that may not be defined when using
   sjlj exceptions.  */
#ifndef EH_RETURN_DATA_REGNO
#define EH_RETURN_DATA_REGNO(N) INVALID_REGNUM
#endif
```

Reply via email to