drm/radeon/r600_cs: Build failures with GCC 16

Brahmajit Das listout at listout.xyz
Sat Aug 9 09:36:35 UTC 2025


On 09.08.2025 04:45, Brahmajit Das wrote:
> Hello Developers,
> 
> Building linux-next with GCC 16 results in this following build error
> 
> $ make
>   CALL    scripts/checksyscalls.sh
>   DESCEND objtool
>   INSTALL libsubcmd_headers
>   CC      drivers/gpu/drm/radeon/r600_cs.o
> drivers/gpu/drm/radeon/r600_cs.c: In function ‘r600_texture_size’:
> drivers/gpu/drm/radeon/r600_cs.c:1411:29: error: variable ‘level’ set but not used [-Werror=unused-but-set-variable=]
>  1411 |         unsigned offset, i, level;
>       |                             ^~~~~
> cc1: all warnings being treated as errors
> make[6]: *** [scripts/Makefile.build:287: drivers/gpu/drm/radeon/r600_cs.o] Error 1
> make[5]: *** [scripts/Makefile.build:556: drivers/gpu/drm/radeon] Error 2
> make[4]: *** [scripts/Makefile.build:556: drivers/gpu/drm] Error 2
> make[3]: *** [scripts/Makefile.build:556: drivers/gpu] Error 2
> make[2]: *** [scripts/Makefile.build:556: drivers] Error 2
> make[1]: *** [/home/listout/linux/Makefile:2011: .] Error 2
> make: *** [Makefile:248: __sub-make] Error 2
> 
> I'm not sure whether this is kernel bug or GCC bug at the moment. But
> building with GCC 15 does not give this error, hence I'm more inclined
> towards the latter.
> Planning to also report this on GCC side, wanted to get some
> opinion/feedback from kernel devs as well.
> I'm on GCC 16.0.0_p2025080.
> 
> -- 
> Regards,
> listout

After giving a more thorough look, the level usage seems like dead code?
It's just set (level = blevel) and incremented in the loop (level++). I
don't see any other usage of the level variable. So if we do something
like

diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
index ac77d1246b94..953ce0c57dfb 100644
--- a/drivers/gpu/drm/radeon/r600_cs.c
+++ b/drivers/gpu/drm/radeon/r600_cs.c
@@ -1408,7 +1408,7 @@ static void r600_texture_size(unsigned nfaces, unsigned blevel, unsigned llevel,
 			      unsigned block_align, unsigned height_align, unsigned base_align,
 			      unsigned *l0_size, unsigned *mipmap_size)
 {
-	unsigned offset, i, level;
+	unsigned offset, i;
 	unsigned width, height, depth, size;
 	unsigned blocksize;
 	unsigned nbx, nby;
@@ -1420,7 +1420,7 @@ static void r600_texture_size(unsigned nfaces, unsigned blevel, unsigned llevel,
 	w0 = r600_mip_minify(w0, 0);
 	h0 = r600_mip_minify(h0, 0);
 	d0 = r600_mip_minify(d0, 0);
-	for(i = 0, offset = 0, level = blevel; i < nlevels; i++, level++) {
+	for(i = 0, offset = 0; i < nlevels; i++) {
 		width = r600_mip_minify(w0, i);
 		nbx = r600_fmt_get_nblocksx(format, width);

I think it should be fine.

Would really appreciate some feedback.
(CC-ed Dave)

-- 
Regards,
listout


More information about the amd-gfx mailing list