aboutsummaryrefslogtreecommitdiff
path: root/libcpp/line-map.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-02-07 17:42:24 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-02-07 17:42:24 +0100
commitacf601aefd44b7c2615c78408b32e862212d34ef (patch)
tree0bdd845c1adb622d79a45e91abf5a44001f7be1c /libcpp/line-map.c
parent177bc204a2f3a13c9fad9c8f88eb3449c8752552 (diff)
downloadgcc-acf601aefd44b7c2615c78408b32e862212d34ef.zip
gcc-acf601aefd44b7c2615c78408b32e862212d34ef.tar.gz
gcc-acf601aefd44b7c2615c78408b32e862212d34ef.tar.bz2
re PR preprocessor/56824 (pragma GCC diagnostic push/pop fail with GCC diagnostic ignored "-Waggregate-return")
PR preprocessor/56824 * line-map.c (get_combined_adhoc_loc, linemap_get_expansion_line, linemap_get_expansion_filename, linemap_location_in_system_header_p, linemap_location_from_macro_expansion_p, linemap_macro_loc_to_spelling_point, linemap_macro_loc_to_def_point, linemap_macro_loc_to_exp_point, linemap_expand_location): Fix formatting. (linemap_compare_locations): Look through adhoc locations for both l0 and l1. * gcc.dg/pr56824.c: New test. From-SVN: r207606
Diffstat (limited to 'libcpp/line-map.c')
-rw-r--r--libcpp/line-map.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 7c7facb..f9a7658 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -106,8 +106,8 @@ get_combined_adhoc_loc (struct line_maps *set,
linemap_assert (data);
if (IS_ADHOC_LOC (locus))
- locus =
- set->location_adhoc_data_map.data[locus & MAX_SOURCE_LOCATION].locus;
+ locus
+ = set->location_adhoc_data_map.data[locus & MAX_SOURCE_LOCATION].locus;
if (locus == 0 && data == NULL)
return 0;
lb.locus = locus;
@@ -141,8 +141,8 @@ get_combined_adhoc_loc (struct line_maps *set,
}
*slot = set->location_adhoc_data_map.data
+ set->location_adhoc_data_map.curr_loc;
- set->location_adhoc_data_map.data[
- set->location_adhoc_data_map.curr_loc++] = lb;
+ set->location_adhoc_data_map.data[set->location_adhoc_data_map.curr_loc++]
+ = lb;
}
return ((*slot) - set->location_adhoc_data_map.data) | 0x80000000;
}
@@ -833,8 +833,8 @@ linemap_get_expansion_line (struct line_maps *set,
const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT)
return 0;
@@ -861,8 +861,8 @@ linemap_get_expansion_filename (struct line_maps *set,
const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT)
return NULL;
@@ -899,8 +899,8 @@ linemap_location_in_system_header_p (struct line_maps *set,
const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT)
return false;
@@ -942,8 +942,8 @@ linemap_location_from_macro_expansion_p (struct line_maps *set,
source_location location)
{
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
linemap_assert (location <= MAX_SOURCE_LOCATION
&& (set->highest_location
@@ -1024,6 +1024,11 @@ linemap_compare_locations (struct line_maps *set,
bool pre_virtual_p, post_virtual_p;
source_location l0 = pre, l1 = post;
+ if (IS_ADHOC_LOC (l0))
+ l0 = set->location_adhoc_data_map.data[l0 & MAX_SOURCE_LOCATION].locus;
+ if (IS_ADHOC_LOC (l1))
+ l1 = set->location_adhoc_data_map.data[l1 & MAX_SOURCE_LOCATION].locus;
+
if (l0 == l1)
return 0;
@@ -1086,8 +1091,8 @@ linemap_macro_loc_to_spelling_point (struct line_maps *set,
struct line_map *map;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
@@ -1124,8 +1129,8 @@ linemap_macro_loc_to_def_point (struct line_maps *set,
struct line_map *map;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
@@ -1166,8 +1171,8 @@ linemap_macro_loc_to_exp_point (struct line_maps *set,
struct line_map *map;
if (IS_ADHOC_LOC (location))
- location = set->location_adhoc_data_map.data[
- location & MAX_SOURCE_LOCATION].locus;
+ location = set->location_adhoc_data_map.data[location
+ & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
@@ -1374,8 +1379,8 @@ linemap_expand_location (struct line_maps *set,
if (IS_ADHOC_LOC (loc))
{
loc = set->location_adhoc_data_map.data[loc & MAX_SOURCE_LOCATION].locus;
- xloc.data = set->location_adhoc_data_map.data[
- loc & MAX_SOURCE_LOCATION].data;
+ xloc.data
+ = set->location_adhoc_data_map.data[loc & MAX_SOURCE_LOCATION].data;
}
if (loc < RESERVED_LOCATION_COUNT)