Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Mon, Jul 17, 2023 at 9:44 AM Andreas Schwab wrote: > > On Jul 17 2023, Christoph Müllner wrote: > > > My host compiler is: gcc version 13.1.1 20230614 (Red Hat 13.1.1-4) (GCC) > > Too old. Ok understood. Thanks, Christoph > > -- > Andreas Schwab, sch...@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Mon, Jul 17, 2023 at 9:31 AM Andrew Pinski wrote: > > On Sun, Jul 16, 2023 at 11:49 PM Christoph Müllner > wrote: > > > > On Fri, Jul 14, 2023 at 12:28 PM Andreas Schwab > > wrote: > > > > > > Why didn't you test that? > > > > Thanks for reporting, and sorry for introducing this warning. > > > > I test all patches before sending them. > > In the case of RISC-V backend patches, I build a 2-stage > > cross-toolchain and run all regression tests for RV32 and RV64 (using > > QEMU). > > Testing is done with and without patches applied to identify regressions. > > > > The build process shows a lot of warnings. Therefore I did not > > investigate finding a way to use -Werror. > > This means that looking for compiler warnings is a manual step, and I > > might miss one while scrolling through the logs. > > If you are building a cross compiler, and want to clean up warnings, > first build a native compiler and then build the cross using that. Ok, will adjust my workflow accordingly. > Also maybe it is finding a way to do native bootstraps on riscv to do > testing of patches rather than doing just cross builds when testing > backend patches. > Especially when I have found the GCC testsuite but the bootstrap is > more likely to find backend issues and such. Yes, using the patch-under-testing to build a toolchain can identify issues that the testsuite can't find. I did that a couple of times in a QEMU environment, but I prefer the cross-toolchain approach because it is faster. For patches that have a bigger impact, I test the toolchain with SPEC CPU 2017. Thanks, Christoph > > Thanks, > Andrew > > > > > Sorry for the inconvenience, > > Christoph > > > > > > > > > > ../../gcc/config/riscv/riscv.cc: In function 'int > > > riscv_regno_ok_for_index_p(int)': > > > ../../gcc/config/riscv/riscv.cc:864:33: error: unused parameter 'regno' > > > [-Werror=unused-parameter] > > > 864 | riscv_regno_ok_for_index_p (int regno) > > > | ^ > > > cc1plus: all warnings being treated as errors > > > make[3]: *** [Makefile:2499: riscv.o] Error 1 > > > > > > -- > > > Andreas Schwab, sch...@linux-m68k.org > > > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > > > "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Jul 17 2023, Christoph Müllner wrote: > My host compiler is: gcc version 13.1.1 20230614 (Red Hat 13.1.1-4) (GCC) Too old. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Mon, Jul 17, 2023 at 9:24 AM Andreas Schwab wrote: > > On Jul 17 2023, Christoph Müllner wrote: > > > The build process shows a lot of warnings. > > Then you are using a bad compiler. The build is 100% -Werror clean. My host compiler is: gcc version 13.1.1 20230614 (Red Hat 13.1.1-4) (GCC) Some examples: > /home/cm/src/gcc/riscv-mainline/gcc/text-art/table.cc: In member function > ‘int text_art::table_geometry::table_x_to_canvas_x(int) const’: > /home/cm/src/gcc/riscv-mainline/gcc/text-art/table.cc:561:15: warning: > comparison of integer expressions of different signedness: ‘int’ and > ‘std::vector::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] > 561 | if (table_x == m_col_start_x.size ()) > | ^~~~ > /home/cm/src/gcc/riscv-mainline/gcc/text-art/table.cc: In function ‘void > selftest::test_spans_3()’: > /home/cm/src/gcc/riscv-mainline/gcc/text-art/table.cc:947:62: warning: > unquoted keyword ‘char’ in format [-Wformat-diag] > 947 | "'buf' > (char[%i])", > | ^~~~ > /home/cm/src/gcc/riscv-mainline/gcc/gengtype-lex.l: In function ‘int > yylex(const char**)’: > gengtype-lex.cc:356:15: warning: this statement may fall through > [-Wimplicit-fallthrough=] > 356 | */ > | ~~ ^ > In file included from /home/cm/src/gcc/riscv-mainline/libgcc/unwind-dw2.c:410: > ./md-unwind-support.h: In function 'riscv_fallback_frame_state': > ./md-unwind-support.h:67:6: warning: assignment to 'struct sigcontext *' from > incompatible pointer type 'mcontext_t *' [-Wincompatible-pointer-types] > 67 | sc = _->uc.uc_mcontext; > | ^ > /home/cm/src/gcc/riscv-mainline/libgcc/config/riscv/atomic.c:36:8: warning: > conflicting types for built-in function '__sync_fetch_and_add_1'; expected > 'unsigned char(volatile void *, unsigned char)' > [-Wbuiltin-declaration-mismatch] >36 | type __sync_fetch_and_ ## opname ## _ ## size (type *p, type v) > \ > |^ Please let me know if I am doing something wrong. BR Christoph > > -- > Andreas Schwab, sch...@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Sun, Jul 16, 2023 at 11:49 PM Christoph Müllner wrote: > > On Fri, Jul 14, 2023 at 12:28 PM Andreas Schwab wrote: > > > > Why didn't you test that? > > Thanks for reporting, and sorry for introducing this warning. > > I test all patches before sending them. > In the case of RISC-V backend patches, I build a 2-stage > cross-toolchain and run all regression tests for RV32 and RV64 (using > QEMU). > Testing is done with and without patches applied to identify regressions. > > The build process shows a lot of warnings. Therefore I did not > investigate finding a way to use -Werror. > This means that looking for compiler warnings is a manual step, and I > might miss one while scrolling through the logs. If you are building a cross compiler, and want to clean up warnings, first build a native compiler and then build the cross using that. Also maybe it is finding a way to do native bootstraps on riscv to do testing of patches rather than doing just cross builds when testing backend patches. Especially when I have found the GCC testsuite but the bootstrap is more likely to find backend issues and such. Thanks, Andrew > > Sorry for the inconvenience, > Christoph > > > > > > ../../gcc/config/riscv/riscv.cc: In function 'int > > riscv_regno_ok_for_index_p(int)': > > ../../gcc/config/riscv/riscv.cc:864:33: error: unused parameter 'regno' > > [-Werror=unused-parameter] > > 864 | riscv_regno_ok_for_index_p (int regno) > > | ^ > > cc1plus: all warnings being treated as errors > > make[3]: *** [Makefile:2499: riscv.o] Error 1 > > > > -- > > Andreas Schwab, sch...@linux-m68k.org > > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > > "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Jul 17 2023, Christoph Müllner wrote: > The build process shows a lot of warnings. Then you are using a bad compiler. The build is 100% -Werror clean. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
On Fri, Jul 14, 2023 at 12:28 PM Andreas Schwab wrote: > > Why didn't you test that? Thanks for reporting, and sorry for introducing this warning. I test all patches before sending them. In the case of RISC-V backend patches, I build a 2-stage cross-toolchain and run all regression tests for RV32 and RV64 (using QEMU). Testing is done with and without patches applied to identify regressions. The build process shows a lot of warnings. Therefore I did not investigate finding a way to use -Werror. This means that looking for compiler warnings is a manual step, and I might miss one while scrolling through the logs. Sorry for the inconvenience, Christoph > > ../../gcc/config/riscv/riscv.cc: In function 'int > riscv_regno_ok_for_index_p(int)': > ../../gcc/config/riscv/riscv.cc:864:33: error: unused parameter 'regno' > [-Werror=unused-parameter] > 864 | riscv_regno_ok_for_index_p (int regno) > | ^ > cc1plus: all warnings being treated as errors > make[3]: *** [Makefile:2499: riscv.o] Error 1 > > -- > Andreas Schwab, sch...@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different."
Re: [gcc r14-2455] riscv: Prepare backend for index registers
Why didn't you test that? ../../gcc/config/riscv/riscv.cc: In function 'int riscv_regno_ok_for_index_p(int)': ../../gcc/config/riscv/riscv.cc:864:33: error: unused parameter 'regno' [-Werror=unused-parameter] 864 | riscv_regno_ok_for_index_p (int regno) | ^ cc1plus: all warnings being treated as errors make[3]: *** [Makefile:2499: riscv.o] Error 1 -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."