OSDN Git Service

* expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Feb 2008 12:55:06 +0000 (12:55 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Feb 2008 12:55:06 +0000 (12:55 +0000)
method.
* java-tree.h (struct lang_decl_func): Remove obsolete comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132767 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/expr.c
gcc/java/java-tree.h

index 90f9a0c..eed2fd2 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-29  Tom Tromey  <tromey@redhat.com>
+
+       * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on
+       method.
+       * java-tree.h (struct lang_decl_func): Remove obsolete comment.
+
 2008-02-26  Tom Tromey  <tromey@redhat.com>
 
        * lang.c (java_post_options): Remove conditional.
 2008-02-26  Tom Tromey  <tromey@redhat.com>
 
        * lang.c (java_post_options): Remove conditional.
index c174ed9..b113df1 100644 (file)
@@ -3132,6 +3132,7 @@ expand_byte_code (JCF *jcf, tree method)
   int dead_code_index = -1;
   unsigned char* byte_ops;
   long length = DECL_CODE_LENGTH (method);
   int dead_code_index = -1;
   unsigned char* byte_ops;
   long length = DECL_CODE_LENGTH (method);
+  location_t max_location = input_location;
 
   stack_pointer = 0;
   JCF_SEEK (jcf, DECL_CODE_OFFSET (method));
 
   stack_pointer = 0;
   JCF_SEEK (jcf, DECL_CODE_OFFSET (method));
@@ -3219,6 +3220,8 @@ expand_byte_code (JCF *jcf, tree method)
                {
                  int line = GET_u2 (linenumber_pointer - 2);
                  input_location = linemap_line_start (line_table, line, 1);
                {
                  int line = GET_u2 (linenumber_pointer - 2);
                  input_location = linemap_line_start (line_table, line, 1);
+                 if (input_location > max_location)
+                   max_location = input_location;
                  if (!(instruction_bits[PC] & BCODE_HAS_MULTI_LINENUMBERS))
                    break;
                }
                  if (!(instruction_bits[PC] & BCODE_HAS_MULTI_LINENUMBERS))
                    break;
                }
@@ -3238,6 +3241,8 @@ expand_byte_code (JCF *jcf, tree method)
        warning (0, "unreachable bytecode from %d to the end of the method", 
                 dead_code_index);
     }
        warning (0, "unreachable bytecode from %d to the end of the method", 
                 dead_code_index);
     }
+
+  DECL_FUNCTION_LAST_LINE (method) = max_location;
 }
 
 static void
 }
 
 static void
index a19d400..494c428 100644 (file)
@@ -1,7 +1,7 @@
 /* Definitions for parsing and type checking for the GNU compiler for
    the Java(TM) language.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 /* Definitions for parsing and type checking for the GNU compiler for
    the Java(TM) language.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2005, 2006, 2007 Free Software Foundation, Inc.
+   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
 
 This file is part of GCC.
 
@@ -793,8 +793,6 @@ struct lang_decl_func GTY(())
   int max_locals;
   int max_stack;
   int arg_slot_count;
   int max_locals;
   int max_stack;
   int arg_slot_count;
-  /* A temporary lie for the sake of ggc.  Actually, last_line is
-     only a source_location if USE_MAPPED_LOCATION.  FIXME.  */
   source_location last_line;   /* End line number for a function decl */
   tree throws_list;            /* Exception specified by `throws' */
 
   source_location last_line;   /* End line number for a function decl */
   tree throws_list;            /* Exception specified by `throws' */