Patchwork Fix AVR fallout

login
register
mail settings
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

Jan-Benedict Glaw - Aug. 17, 2012, 8:40 p.m.
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.
Denis Chertykov - Aug. 19, 2012, 6:19 a.m.
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;