Commit acf601ae by Jakub Jelinek Committed by Jakub Jelinek

re PR preprocessor/56824 (pragma GCC diagnostic push/pop fail with GCC…

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
parent 177bc204
2014-02-07 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/56824
* gcc.dg/pr56824.c: New test.
2014-02-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2014-02-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/gcc-have-sync-compare-and-swap.c: Align the 16 byte * gcc.dg/gcc-have-sync-compare-and-swap.c: Align the 16 byte
......
/* PR preprocessor/56824 */
/* { dg-do compile } */
/* { dg-options "-Waggregate-return" } */
struct S { int i; };
struct S foo (void);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Waggregate-return"
int
main ()
{
foo ();
return 0;
}
#pragma GCC diagnostic pop
2014-02-07 Jakub Jelinek <jakub@redhat.com>
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.
2014-01-23 Dodji Seketeli <dodji@redhat.com> 2014-01-23 Dodji Seketeli <dodji@redhat.com>
PR PR preprocessor/58580 PR PR preprocessor/58580
......
...@@ -106,8 +106,8 @@ get_combined_adhoc_loc (struct line_maps *set, ...@@ -106,8 +106,8 @@ get_combined_adhoc_loc (struct line_maps *set,
linemap_assert (data); linemap_assert (data);
if (IS_ADHOC_LOC (locus)) if (IS_ADHOC_LOC (locus))
locus = locus
set->location_adhoc_data_map.data[locus & MAX_SOURCE_LOCATION].locus; = set->location_adhoc_data_map.data[locus & MAX_SOURCE_LOCATION].locus;
if (locus == 0 && data == NULL) if (locus == 0 && data == NULL)
return 0; return 0;
lb.locus = locus; lb.locus = locus;
...@@ -141,8 +141,8 @@ get_combined_adhoc_loc (struct line_maps *set, ...@@ -141,8 +141,8 @@ get_combined_adhoc_loc (struct line_maps *set,
} }
*slot = set->location_adhoc_data_map.data *slot = set->location_adhoc_data_map.data
+ set->location_adhoc_data_map.curr_loc; + set->location_adhoc_data_map.curr_loc;
set->location_adhoc_data_map.data[ set->location_adhoc_data_map.data[set->location_adhoc_data_map.curr_loc++]
set->location_adhoc_data_map.curr_loc++] = lb; = lb;
} }
return ((*slot) - set->location_adhoc_data_map.data) | 0x80000000; return ((*slot) - set->location_adhoc_data_map.data) | 0x80000000;
} }
...@@ -833,8 +833,8 @@ linemap_get_expansion_line (struct line_maps *set, ...@@ -833,8 +833,8 @@ linemap_get_expansion_line (struct line_maps *set,
const struct line_map *map = NULL; const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT) if (location < RESERVED_LOCATION_COUNT)
return 0; return 0;
...@@ -861,8 +861,8 @@ linemap_get_expansion_filename (struct line_maps *set, ...@@ -861,8 +861,8 @@ linemap_get_expansion_filename (struct line_maps *set,
const struct line_map *map = NULL; const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT) if (location < RESERVED_LOCATION_COUNT)
return NULL; return NULL;
...@@ -899,8 +899,8 @@ linemap_location_in_system_header_p (struct line_maps *set, ...@@ -899,8 +899,8 @@ linemap_location_in_system_header_p (struct line_maps *set,
const struct line_map *map = NULL; const struct line_map *map = NULL;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
if (location < RESERVED_LOCATION_COUNT) if (location < RESERVED_LOCATION_COUNT)
return false; return false;
...@@ -942,8 +942,8 @@ linemap_location_from_macro_expansion_p (struct line_maps *set, ...@@ -942,8 +942,8 @@ linemap_location_from_macro_expansion_p (struct line_maps *set,
source_location location) source_location location)
{ {
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
linemap_assert (location <= MAX_SOURCE_LOCATION linemap_assert (location <= MAX_SOURCE_LOCATION
&& (set->highest_location && (set->highest_location
...@@ -1024,6 +1024,11 @@ linemap_compare_locations (struct line_maps *set, ...@@ -1024,6 +1024,11 @@ linemap_compare_locations (struct line_maps *set,
bool pre_virtual_p, post_virtual_p; bool pre_virtual_p, post_virtual_p;
source_location l0 = pre, l1 = post; 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) if (l0 == l1)
return 0; return 0;
...@@ -1086,8 +1091,8 @@ linemap_macro_loc_to_spelling_point (struct line_maps *set, ...@@ -1086,8 +1091,8 @@ linemap_macro_loc_to_spelling_point (struct line_maps *set,
struct line_map *map; struct line_map *map;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT); linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
...@@ -1124,8 +1129,8 @@ linemap_macro_loc_to_def_point (struct line_maps *set, ...@@ -1124,8 +1129,8 @@ linemap_macro_loc_to_def_point (struct line_maps *set,
struct line_map *map; struct line_map *map;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT); linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
...@@ -1166,8 +1171,8 @@ linemap_macro_loc_to_exp_point (struct line_maps *set, ...@@ -1166,8 +1171,8 @@ linemap_macro_loc_to_exp_point (struct line_maps *set,
struct line_map *map; struct line_map *map;
if (IS_ADHOC_LOC (location)) if (IS_ADHOC_LOC (location))
location = set->location_adhoc_data_map.data[ location = set->location_adhoc_data_map.data[location
location & MAX_SOURCE_LOCATION].locus; & MAX_SOURCE_LOCATION].locus;
linemap_assert (set && location >= RESERVED_LOCATION_COUNT); linemap_assert (set && location >= RESERVED_LOCATION_COUNT);
...@@ -1374,8 +1379,8 @@ linemap_expand_location (struct line_maps *set, ...@@ -1374,8 +1379,8 @@ linemap_expand_location (struct line_maps *set,
if (IS_ADHOC_LOC (loc)) if (IS_ADHOC_LOC (loc))
{ {
loc = set->location_adhoc_data_map.data[loc & MAX_SOURCE_LOCATION].locus; loc = set->location_adhoc_data_map.data[loc & MAX_SOURCE_LOCATION].locus;
xloc.data = set->location_adhoc_data_map.data[ xloc.data
loc & MAX_SOURCE_LOCATION].data; = set->location_adhoc_data_map.data[loc & MAX_SOURCE_LOCATION].data;
} }
if (loc < RESERVED_LOCATION_COUNT) if (loc < RESERVED_LOCATION_COUNT)
......
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