| Submitter | Jan-Benedict Glaw |
|---|---|
| Date | Aug. 17, 2012, 8:40 p.m. |
| Message ID | <20120817204013.GX11564@lug-owl.de> |
| Download | mbox | patch |
| Permalink | /patch/178370/ |
| State | New |
| Headers | show |
Comments
2012/8/18 Jan-Benedict Glaw <jbglaw@lug-owl.de>: > Hi! > > I see these warnings/errors right now: > > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../../../gcc/gcc -I../../../../gcc/gcc/. -I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include -I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I. -I. -I../../../../gcc/gcc -I../../../../gcc/gcc/. -I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include -I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber ../../../../gcc/gcc/config/avr/avr-log.c > cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wold-style-definition’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wc++-compat’ is valid for C/ObjC but not for C++ [enabled by default] > ../../../../gcc/gcc/config/avr/avr-log.c: In function ‘void avr_log_vadump(FILE*, const char*, va_list)’: > ../../../../gcc/gcc/config/avr/avr-log.c:287:22: warning: ‘machine_mode’ is promoted to ‘int’ when passed through ‘...’ [enabled by default] > ../../../../gcc/gcc/config/avr/avr-log.c:287:22: note: (so you should pass ‘int’ not ‘machine_mode’ to ‘va_arg’) > ../../../../gcc/gcc/config/avr/avr-log.c:287:22: note: if this code is reached, the program will abort > ../../../../gcc/gcc/config/avr/avr-log.c:291:31: warning: ‘rtx_code’ is promoted to ‘int’ when passed through ‘...’ [enabled by default] > ../../../../gcc/gcc/config/avr/avr-log.c:291:31: note: if this code is reached, the program will abort > ../../../../gcc/gcc/config/avr/avr-log.c:295:38: warning: ‘reg_class’ is promoted to ‘int’ when passed through ‘...’ [enabled by default] > ../../../../gcc/gcc/config/avr/avr-log.c:295:38: note: if this code is reached, the program will abort > > [...] > > g++ -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common -DHAVE_CONFIG_H -I. -I. -I../../../../gcc/gcc -I../../../../gcc/gcc/. -I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include -I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I. -I. -I../../../../gcc/gcc -I../../../../gcc/gcc/. -I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include -I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber ../../../../gcc/gcc/config/avr/gen-avr-mmcu-texi.c -o gen-avr-mmcu-texi > cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wold-style-definition’ is valid for C/ObjC but not for C++ [enabled by default] > cc1plus: warning: command line option ‘-Wc++-compat’ is valid for C/ObjC but not for C++ [enabled by default] > ../../../../gcc/gcc/config/avr/gen-avr-mmcu-texi.c: In function ‘int main()’: > ../../../../gcc/gcc/config/avr/gen-avr-mmcu-texi.c:53:24: error: invalid conversion from ‘int’ to ‘avr_arch’ [-fpermissive] > ../../../../gcc/gcc/config/avr/gen-avr-mmcu-texi.c:75:23: error: invalid conversion from ‘int’ to ‘avr_arch’ [-fpermissive] > make[3]: *** [gen-avr-mmcu-texi] Error 1 > make[3]: Leaving directory `/mnt/devel/src/linux/build/avr/gcc-stage1/gcc' > make[2]: *** [all-gcc] Error 2 > make[2]: Leaving directory `/mnt/devel/src/linux/build/avr/gcc-stage1' > > > I suggest this patch. Okay? > > > > 2012-08-17 Jan-Benedict Glaw <jbglaw@lug-owl.de> > > gcc/Changelog: > * config/avr/avr-log.c (avr_log_vadump): Properly use > int-promoted enum values. > * config/avr/avr.h (struct mcu_type_s): Change `arch' from > int to enum avr_arch. > * config/avr/gen-avr-mmcu-texi.c (main): Use correct initializer. > > Thank you for the fix. Committed. Denis.
Patch
diff --git a/gcc/config/avr/avr-log.c b/gcc/config/avr/avr-log.c index f054bb5..f86165d 100644 --- a/gcc/config/avr/avr-log.c +++ b/gcc/config/avr/avr-log.c @@ -284,15 +284,15 @@ avr_log_vadump (FILE *file, const char *fmt, va_list ap) break; case 'm': - fputs (GET_MODE_NAME (va_arg (ap, enum machine_mode)), file); + fputs (GET_MODE_NAME ((enum machine_mode) va_arg (ap, int)), file); break; case 'C': - fputs (rtx_name[va_arg (ap, enum rtx_code)], file); + fputs (rtx_name[va_arg (ap, int)], file); break; case 'R': - fputs (reg_class_names[va_arg (ap, enum reg_class)], file); + fputs (reg_class_names[va_arg (ap, int)], file); break; case 'F': diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 48fd495..0ce0af4 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -95,7 +95,7 @@ struct mcu_type_s { const char *const name; /* Index in avr_arch_types[]. */ - int arch; + enum avr_arch arch; /* Must lie outside user's namespace. NULL == no macro. */ const char *const macro; diff --git a/gcc/config/avr/gen-avr-mmcu-texi.c b/gcc/config/avr/gen-avr-mmcu-texi.c index b5cb3c4..f4cb24e 100644 --- a/gcc/config/avr/gen-avr-mmcu-texi.c +++ b/gcc/config/avr/gen-avr-mmcu-texi.c @@ -50,7 +50,7 @@ print_mcus (size_t n_mcus) int main (void) { - enum avr_arch arch = 0; + enum avr_arch arch = ARCH_UNKNOWN; size_t i, n_mcus = 0; const struct mcu_type_s *mcu;