+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.
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);
/* 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 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)
#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;
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;
}