Commit 96c169e1 by Jakub Jelinek Committed by Jakub Jelinek

re PR preprocessor/41543 (BUILTINS_LOCATION wrong with -fpreprocessed)

	PR preprocessor/41543
	* input.h (BUILTINS_LOCATION): Change to 1 from 2.
	Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
	* tree.c: Include intl.h.
	(expand_location): Handle BUILTINS_LOCATION.
	* Makefile.in (tree.o): Depend on intl.h.

	* include/line-map.h (RESERVED_LOCATION_COUNT): Define.
	* line-map.c (linemap_init): Initialize highest_location and
	highest_line to RESERVED_LOCATION_COUNT-1 instead of 0.

	* gcc.dg/debug/dwarf2/pr41543.c: New test.

From-SVN: r152761
parent b29ee46c
2009-10-14 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/41543
* input.h (BUILTINS_LOCATION): Change to 1 from 2.
Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
* tree.c: Include intl.h.
(expand_location): Handle BUILTINS_LOCATION.
* Makefile.in (tree.o): Depend on intl.h.
PR debug/41695
* dwarf2out.c (dwarf2out_var_location): Always clear
last_postcall_label when changing last_label.
......@@ -2243,7 +2243,7 @@ tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
langhooks.h $(REAL_H) gt-tree.h $(TREE_INLINE_H) tree-iterator.h \
$(BASIC_BLOCK_H) $(TREE_FLOW_H) $(OBSTACK_H) pointer-set.h fixed-value.h \
tree-pass.h $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) $(TIMEVAR_H) \
$(EXCEPT_H) debug.h
$(EXCEPT_H) debug.h intl.h
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TOPLEV_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) \
tree-iterator.h $(TREE_PASS_H) $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h
......
/* Declarations for variables relating to reading the source file.
Used by parsers, lexical analyzers, and error message routines.
Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008
Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
......@@ -30,7 +30,12 @@ extern GTY(()) struct line_maps *line_table;
#define UNKNOWN_LOCATION ((source_location) 0)
/* The location for declarations in "<built-in>" */
#define BUILTINS_LOCATION ((source_location) 2)
#define BUILTINS_LOCATION ((source_location) 1)
/* line-map.c reserves RESERVED_LOCATION_COUNT to the user. Ensure
both UNKNOWN_LOCATION and BUILTINS_LOCATION fit into that. */
extern char builtins_location_check[(BUILTINS_LOCATION
< RESERVED_LOCATION_COUNT) ? 1 : -1];
typedef struct GTY (())
{
......
2009-10-14 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/41543
* gcc.dg/debug/dwarf2/pr41543.c: New test.
PR debug/41695
* gcc.dg/debug/dwarf2/pr41695.c: New test.
......
/* PR preprocessor/41543 */
/* { dg-do compile } */
/* { dg-options "-save-temps -g -O0 -dA -fno-merge-debug-strings" } */
#include <stdarg.h>
int
foo (va_list ap)
{
return va_arg (ap, int);
}
/* { dg-final { scan-assembler-not "DW_AT_decl_file\[^\\r\\n\]*\(pr41543\.i\)" } } */
/* { dg-final { cleanup-saved-temps } } */
......@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "except.h"
#include "debug.h"
#include "intl.h"
/* Tree code classes. */
......@@ -3952,9 +3953,9 @@ expanded_location
expand_location (source_location loc)
{
expanded_location xloc;
if (loc == 0)
if (loc <= BUILTINS_LOCATION)
{
xloc.file = NULL;
xloc.file = loc == UNKNOWN_LOCATION ? NULL : _("<built-in>");
xloc.line = 0;
xloc.column = 0;
xloc.sysp = 0;
......
2009-10-14 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/41543
* include/line-map.h (RESERVED_LOCATION_COUNT): Define.
* line-map.c (linemap_init): Initialize highest_location and
highest_line to RESERVED_LOCATION_COUNT-1 instead of 0.
2009-10-09 Jason Merrill <jason@redhat.com>
* charset.c (_cpp_valid_ucn): Update C++0x restrictions.
......
......@@ -143,6 +143,11 @@ extern const struct line_map *linemap_add
extern const struct line_map *linemap_lookup
(struct line_maps *, source_location);
/* source_location values from 0 to RESERVED_LOCATION_COUNT-1 will
be reserved for libcpp user as special values, no token from libcpp
will contain any of those locations. */
#define RESERVED_LOCATION_COUNT 2
/* Converts a map and a source_location to source line. */
#define SOURCE_LINE(MAP, LOC) \
((((LOC) - (MAP)->start_location) >> (MAP)->column_bits) + (MAP)->to_line)
......
......@@ -38,8 +38,8 @@ linemap_init (struct line_maps *set)
set->trace_includes = false;
set->depth = 0;
set->cache = 0;
set->highest_location = 0;
set->highest_line = 0;
set->highest_location = RESERVED_LOCATION_COUNT - 1;
set->highest_line = RESERVED_LOCATION_COUNT - 1;
set->max_column_hint = 0;
set->reallocator = 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment