input.h: If USE_MAPPED_LOCATION...
authorPer Bothner <per@bothner.com>
Thu, 15 Jul 2004 00:02:30 +0000 (17:02 -0700)
committerPer Bothner <bothner@gcc.gnu.org>
Thu, 15 Jul 2004 00:02:30 +0000 (17:02 -0700)
* 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.

From-SVN: r84721

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

index 6f4c6c040b07865b5c573694370d7ee945d3abde..cb26f13af36d2d0e076c65ac379972d1b836a801 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.
index 22a5cd8ee0fdd988cbe09804600a6e41acbf3d2e..60b738eadce98df8bd2b2ee987d39229bf3fdba8 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 */
-  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);
index f34c74e908a70b3b269393b8df8337f0f9f426e8..f15ce6688bf5f6ab4d90d65220ad8811947b9f10 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)
 
-typedef struct location_s GTY(())
+#ifdef USE_MAPPED_LOCATION
+
+typedef struct
 {
   /* 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;
 
-  /* FUTURE (but confuses gentype): int column. */
+  int column;
 } expanded_location;
 
-#ifdef USE_MAPPED_LOCATION
-
 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 */
 
+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;
 
index 09a963304632474367607b9bde8e2470552fea0c..8066cd100ff20f7fdcb957f2f02ff4df3b3c861e 100644 (file)
@@ -2760,12 +2760,13 @@ expanded_location
 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);
+      xloc.column = SOURCE_COLUMN (map, loc);
     };
   return xloc;
 }