OSDN Git Service

* input.h: If USE_MAPPED_LOCATION, define separate expanded_location
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Jul 2004 00:02:30 +0000 (00:02 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Jul 2004 00:02:30 +0000 (00:02 +0000)
structure with extra column field.
* tree.c (expand_location):  Also fill in column field.
* gengtype-lex.l:  Ignore expanded_location typedef, sinze gengtype
gets confused by the two conditionally-compiled definitions.

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

gcc/ChangeLog
gcc/gengtype-lex.l
gcc/input.h
gcc/tree.c

index 6f4c6c0..cb26f13 100644 (file)
@@ -1,3 +1,11 @@
+2004-07-14  Per Bothner  <per@bothner.com>
+
+       * input.h:  If USE_MAPPED_LOCATION, define separate expanded_location
+       structure with extra column field.
+       * tree.c (expand_location):  Also fill in column field.
+       * gengtype-lex.l:  Ignore expanded_location typedef, sinze gengtype
+       gets confused by the two conditionally-compiled definitions.
+
 2004-07-14  Eric Christopher  <echristo@redhat.com>
 
        * calls.c (expand_call): Fix typo in comment.
 2004-07-14  Eric Christopher  <echristo@redhat.com>
 
        * calls.c (expand_call): Fix typo in comment.
index 22a5cd8..60b738e 100644 (file)
@@ -91,7 +91,8 @@ ITYPE {IWORD}({WS}{IWORD})*
   namestart = xmemdup (namestart, namelen, namelen+1);
 #ifdef USE_MAPPED_LOCATION
   /* temporary kludge - gentype doesn't handle cpp conditionals */
   namestart = xmemdup (namestart, namelen, namelen+1);
 #ifdef USE_MAPPED_LOCATION
   /* temporary kludge - gentype doesn't handle cpp conditionals */
-  if (strcmp (namestart, "location_t") != 0)
+  if (strcmp (namestart, "location_t") != 0
+      && strcmp (namestart, "expanded_location") != 0)
 #endif
   do_typedef (namestart, t, &lexer_line);
   update_lineno (yytext, yyleng);
 #endif
   do_typedef (namestart, t, &lexer_line);
   update_lineno (yytext, yyleng);
index f34c74e..f15ce66 100644 (file)
@@ -28,7 +28,9 @@ extern struct line_maps line_table;
 /* The location for declarations in "<built-in>" */
 #define BUILTINS_LOCATION ((source_location) 2)
 
 /* The location for declarations in "<built-in>" */
 #define BUILTINS_LOCATION ((source_location) 2)
 
-typedef struct location_s GTY(())
+#ifdef USE_MAPPED_LOCATION
+
+typedef struct
 {
   /* The name of the source file involved.  */
   const char *file;
 {
   /* The name of the source file involved.  */
   const char *file;
@@ -36,11 +38,9 @@ typedef struct location_s GTY(())
   /* The line-location in the source file.  */
   int line;
 
   /* The line-location in the source file.  */
   int line;
 
-  /* FUTURE (but confuses gentype): int column. */
+  int column;
 } expanded_location;
 
 } expanded_location;
 
-#ifdef USE_MAPPED_LOCATION
-
 extern expanded_location expand_location (source_location);
 
 #define UNKNOWN_LOCATION ((source_location) 0)
 extern expanded_location expand_location (source_location);
 
 #define UNKNOWN_LOCATION ((source_location) 0)
@@ -49,6 +49,16 @@ typedef source_location source_locus; /* to be removed */
 
 #else /* ! USE_MAPPED_LOCATION */
 
 
 #else /* ! USE_MAPPED_LOCATION */
 
+struct location_s GTY(())
+{
+  /* The name of the source file involved.  */
+  const char *file;
+
+  /* The line-location in the source file.  */
+  int line;
+};
+
+typedef struct location_s expanded_location;
 typedef struct location_s location_t;
 typedef location_t *source_locus;
 
 typedef struct location_s location_t;
 typedef location_t *source_locus;
 
index 09a9633..8066cd1 100644 (file)
@@ -2760,12 +2760,13 @@ expanded_location
 expand_location (source_location loc)
 {
   expanded_location xloc;
 expand_location (source_location loc)
 {
   expanded_location xloc;
-  if (loc == 0) { xloc.file = NULL; xloc.line = 0; }
+  if (loc == 0) { xloc.file = NULL; xloc.line = 0;  xloc.column = 0; }
   else
     {
       const struct line_map *map = linemap_lookup (&line_table, loc);
       xloc.file = map->to_file;
       xloc.line = SOURCE_LINE (map, loc);
   else
     {
       const struct line_map *map = linemap_lookup (&line_table, loc);
       xloc.file = map->to_file;
       xloc.line = SOURCE_LINE (map, loc);
+      xloc.column = SOURCE_COLUMN (map, loc);
     };
   return xloc;
 }
     };
   return xloc;
 }