Committed: Fix C99:ism (declaration after statement) in java FE.

Steven Bosscher stevenb@suse.de
Sun Oct 17 13:22:00 GMT 2004


On Sunday 17 October 2004 12:59, Hans-Peter Nilsson wrote:
> On Sat, 16 Oct 2004, Kaveh R. Ghazi wrote:
> >  > Hope to look into adding -Wdeclaration-after-statement for all
> >  > front-ends @WERROR@ settings (stage2 or where supported).
> >
> > No need for a new flag, just add -pedantic like the other FEs do.
> > (Haven't tried it myself, probably requires cleaning other fallout.)
>
> Hmm, looks like you're right.  Tom Tromey mentioned on IRC that
> he'd like more warnings enabled, so it seems this would be the
> way to go.  Maybe I'll do it.

I've just done it.  It's still bootstrapping on x86_64-suse-linux-gnu
but I'm not expecting any problems (it's well into libjava now).

OK if it completes bootstrapping and testing?

Gr.
Steven



	* class.c (ident_subst): Always alloca buffer.
	* java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
	opcode after including javaop.def.
	* jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
	conditional expression that exits, to avoid warnings.
	* verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
	a user of an extension.
	* win32-host.c: Move check down to have non-empty file when
	WIN32 is not defined.

	* Make-lang.in (java-warn): Add STRICT_WARN.
	(java/jcf-io.o-warn): Don't have Werror for this file.
	* jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.

Index: Make-lang.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/Make-lang.in,v
retrieving revision 1.145
diff -c -3 -p -r1.145 Make-lang.in
*** Make-lang.in	22 Sep 2004 11:21:21 -0000	1.145
--- Make-lang.in	17 Oct 2004 11:41:56 -0000
*************** JCFDUMP_OBJS = java/jcf-dump.o java/jcf-
*** 118,128 ****
  
  JVGENMAIN_OBJS = java/jvgenmain.o java/mangle_name.o errors.o intl.o
  
! # Use loose warnings for this front end.
! java-warn = $(WERROR)
  # String length warnings
  jvspec.o-warn = -Wno-error
  
  jc1$(exeext): $(JAVA_OBJS) $(BACKEND) $(LIBDEPS)
  	rm -f $@
  	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
--- 118,132 ----
  
  JVGENMAIN_OBJS = java/jvgenmain.o java/mangle_name.o errors.o intl.o
  
! # Use strict warnings for this front end.
! java-warn = $(STRICT_WARN) $(WERROR)
! 
  # String length warnings
  jvspec.o-warn = -Wno-error
  
+ # Use of non-standardized scandir
+ java/jcf-io.o-warn = -Wno-error
+ 
  jc1$(exeext): $(JAVA_OBJS) $(BACKEND) $(LIBDEPS)
  	rm -f $@
  	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
Index: class.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/class.c,v
retrieving revision 1.210
diff -c -3 -p -r1.210 class.c
*** class.c	15 Oct 2004 18:43:10 -0000	1.210
--- class.c	17 Oct 2004 11:41:57 -0000
*************** ident_subst (const char* old_name,
*** 268,278 ****
    int prefix_len = strlen (prefix);
    int suffix_len = strlen (suffix);
    int i = prefix_len + old_length + suffix_len + 1;
- #ifdef __GNUC__
-   char buffer[i];
- #else
    char *buffer = alloca (i);
! #endif
    strcpy (buffer, prefix);
    for (i = 0; i < old_length; i++)
      {
--- 268,275 ----
    int prefix_len = strlen (prefix);
    int suffix_len = strlen (suffix);
    int i = prefix_len + old_length + suffix_len + 1;
    char *buffer = alloca (i);
! 
    strcpy (buffer, prefix);
    for (i = 0; i < old_length; i++)
      {
Index: java-opcodes.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/java-opcodes.h,v
retrieving revision 1.2
diff -c -3 -p -r1.2 java-opcodes.h
*** java-opcodes.h	16 Dec 1998 21:20:04 -0000	1.2
--- java-opcodes.h	17 Oct 2004 11:41:57 -0000
*************** enum java_opcode {
*** 2,5 ****
--- 2,6 ----
  #define JAVAOP(NAME, CODE, KIND, TYPE, VALUE) OPCODE_##NAME = CODE,
  #include "javaop.def"
  #undef JAVAOP
+ LAST_AND_UNUSED_JAVA_OPCODE
  };
Index: jcf-dump.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/jcf-dump.c,v
retrieving revision 1.62
diff -c -3 -p -r1.62 jcf-dump.c
*** jcf-dump.c	25 Sep 2004 13:49:22 -0000	1.62
--- jcf-dump.c	17 Oct 2004 11:41:57 -0000
*************** disassemble_method (JCF* jcf, const unsi
*** 1181,1187 ****
  #define VAR_INDEX_2 (saw_index = 1, IMMEDIATE_u2)
  
  #define CHECK_PC_IN_RANGE(PC) (PC < 0 || PC > len ? \
!   (fprintf(stderr, _("Bad byte codes.\n")), exit(-1)) : 1)
  
  /* Print out operand (if not implied by the opcode) for PUSCH opcodes.
     These all push a constant onto the opcode stack. */
--- 1181,1187 ----
  #define VAR_INDEX_2 (saw_index = 1, IMMEDIATE_u2)
  
  #define CHECK_PC_IN_RANGE(PC) (PC < 0 || PC > len ? \
!   (fprintf(stderr, _("Bad byte codes.\n")), exit(-1), 0) : 1)
  
  /* Print out operand (if not implied by the opcode) for PUSCH opcodes.
     These all push a constant onto the opcode stack. */
Index: jcf-io.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/jcf-io.c,v
retrieving revision 1.52
diff -c -3 -p -r1.52 jcf-io.c
*** jcf-io.c	15 Oct 2004 18:43:10 -0000	1.52
--- jcf-io.c	17 Oct 2004 11:41:57 -0000
*************** caching_stat (char *filename, struct sta
*** 376,382 ****
  	 particular, the type of the function pointer passed as the
  	 third argument sometimes takes a "const struct dirent *"
  	 parameter, and sometimes just a "struct dirent *".  We cast
! 	 to (void *) so that either way it is quietly accepted.  */
        dent->num_files = scandir (filename, &dent->files, 
  				 (void *) java_or_class_file, 
  				 alphasort);
--- 376,383 ----
  	 particular, the type of the function pointer passed as the
  	 third argument sometimes takes a "const struct dirent *"
  	 parameter, and sometimes just a "struct dirent *".  We cast
! 	 to (void *) so that either way it is quietly accepted.
! 	 FIXME: scandir is not in POSIX.  */
        dent->num_files = scandir (filename, &dent->files, 
  				 (void *) java_or_class_file, 
  				 alphasort);
Index: verify.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/verify.c,v
retrieving revision 1.65
diff -c -3 -p -r1.65 verify.c
*** verify.c	24 Jul 2004 00:03:28 -0000	1.65
--- verify.c	17 Oct 2004 11:41:57 -0000
*************** pop_argument_types (tree arg_types)
*** 404,410 ****
              { oldpc = LABEL_PC (tmplab); goto verify_error; }} while (0)
  
  #ifdef __GNUC__
! #define CHECK_PC_IN_RANGE(PC) ({if (PC < 0 || PC > length) goto bad_pc; (void)1;})
  #else
  #define CHECK_PC_IN_RANGE(PC) (PC < 0 || PC > length ? (abort (), 0) : 1)
  #endif
--- 404,411 ----
              { oldpc = LABEL_PC (tmplab); goto verify_error; }} while (0)
  
  #ifdef __GNUC__
! #define CHECK_PC_IN_RANGE(PC) __extension__ \
!   ({if (PC < 0 || PC > length) goto bad_pc; (void)1;})
  #else
  #define CHECK_PC_IN_RANGE(PC) (PC < 0 || PC > length ? (abort (), 0) : 1)
  #endif
Index: win32-host.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/win32-host.c,v
retrieving revision 1.6
diff -c -3 -p -r1.6 win32-host.c
*** win32-host.c	15 Oct 2004 14:55:00 -0000	1.6
--- win32-host.c	17 Oct 2004 11:41:57 -0000
*************** The Free Software Foundation is independ
*** 24,36 ****
  
  /* Written by Mohan Embar <gnustuff@thisiscool.com>, March 2003. */
  
- #ifdef WIN32
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "jcf.h"
  
  #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #undef WIN32_LEAN_AND_MEAN
--- 24,37 ----
  
  /* Written by Mohan Embar <gnustuff@thisiscool.com>, March 2003. */
  
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "jcf.h"
  
+ #ifdef WIN32
+ 
  #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #undef WIN32_LEAN_AND_MEAN



More information about the Gcc-patches mailing list