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
```