mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-24 11:24:05 +08:00
PR preprocessor/69126: avoid comparing ad-hoc and non-ad-hoc locations
gcc/testsuite/ChangeLog: PR preprocessor/69126 PR preprocessor/69543 * c-c++-common/pr69126-2-long.c: New test. * c-c++-common/pr69126-2-short.c: New test. * c-c++-common/pr69543-1.c: Remove xfail. libcpp/ChangeLog: PR preprocessor/69126 PR preprocessor/69543 * line-map.c (linemap_compare_locations): At the function top, replace inlined bodies of get_location_from_adhoc_loc with calls to get_location_from_adhoc_loc. Add a pair of calls to get_location_from_adhoc_loc at the bottom of the function, to avoid meaningless comparisons of ad-hoc and non-ad-hoc locations. From-SVN: r233638
This commit is contained in:
parent
1d3121af3a
commit
196440f844
@ -1,3 +1,11 @@
|
||||
2016-02-23 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR preprocessor/69126
|
||||
PR preprocessor/69543
|
||||
* c-c++-common/pr69126-2-long.c: New test.
|
||||
* c-c++-common/pr69126-2-short.c: New test.
|
||||
* c-c++-common/pr69543-1.c: Remove xfail.
|
||||
|
||||
2016-02-23 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR preprocessor/69126
|
||||
|
11
gcc/testsuite/c-c++-common/pr69126-2-long.c
Normal file
11
gcc/testsuite/c-c++-common/pr69126-2-long.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* { dg-options "-Wdeprecated-declarations" } */
|
||||
|
||||
/* The macro's name is >= 32 characters long, and hence its location
|
||||
requires an ad-hoc location. */
|
||||
|
||||
#define IGNORE_WHERE_MACRO_IS_LONGER_THAN_31_CHARS _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
|
||||
__attribute__((deprecated)) void f();
|
||||
int main() {
|
||||
IGNORE_WHERE_MACRO_IS_LONGER_THAN_31_CHARS
|
||||
f();
|
||||
}
|
11
gcc/testsuite/c-c++-common/pr69126-2-short.c
Normal file
11
gcc/testsuite/c-c++-common/pr69126-2-short.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* { dg-options "-Wdeprecated-declarations" } */
|
||||
|
||||
/* IGNORE_SHORT_MACRO is < 32 characters long, and hence its location
|
||||
can be stored without needing an ad-hoc location. */
|
||||
|
||||
#define IGNORE_SHORT_MACRO _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
|
||||
__attribute__((deprecated)) void f();
|
||||
int main() {
|
||||
IGNORE_SHORT_MACRO
|
||||
f();
|
||||
}
|
@ -3,8 +3,6 @@
|
||||
/* Verify disabling a warning, where the _Pragma is within
|
||||
a macro, but the affected code is *not* in a macro. */
|
||||
|
||||
/* TODO: XFAIL: why does g++ still emit a warning here? (works for C). */
|
||||
|
||||
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
|
||||
_Pragma ("GCC diagnostic push") \
|
||||
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
|
||||
@ -16,6 +14,6 @@ void test (char yylval)
|
||||
{
|
||||
char *yyvsp;
|
||||
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
||||
*++yyvsp = yylval; /* { dg-bogus "used uninitialized" "" { xfail { c++ } } } */
|
||||
*++yyvsp = yylval;
|
||||
YY_IGNORE_MAYBE_UNINITIALIZED_END
|
||||
}
|
||||
|
@ -1,3 +1,13 @@
|
||||
2016-02-23 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR preprocessor/69126
|
||||
PR preprocessor/69543
|
||||
* line-map.c (linemap_compare_locations): At the function top,
|
||||
replace inlined bodies of get_location_from_adhoc_loc with calls
|
||||
to get_location_from_adhoc_loc. Add a pair of calls to
|
||||
get_location_from_adhoc_loc at the bottom of the function, to
|
||||
avoid meaningless comparisons of ad-hoc and non-ad-hoc locations.
|
||||
|
||||
2016-02-08 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
PR preprocessor/69664
|
||||
|
@ -1328,9 +1328,9 @@ linemap_compare_locations (struct line_maps *set,
|
||||
source_location l0 = pre, l1 = post;
|
||||
|
||||
if (IS_ADHOC_LOC (l0))
|
||||
l0 = set->location_adhoc_data_map.data[l0 & MAX_SOURCE_LOCATION].locus;
|
||||
l0 = get_location_from_adhoc_loc (set, l0);
|
||||
if (IS_ADHOC_LOC (l1))
|
||||
l1 = set->location_adhoc_data_map.data[l1 & MAX_SOURCE_LOCATION].locus;
|
||||
l1 = get_location_from_adhoc_loc (set, l1);
|
||||
|
||||
if (l0 == l1)
|
||||
return 0;
|
||||
@ -1365,6 +1365,11 @@ linemap_compare_locations (struct line_maps *set,
|
||||
return i1 - i0;
|
||||
}
|
||||
|
||||
if (IS_ADHOC_LOC (l0))
|
||||
l0 = get_location_from_adhoc_loc (set, l0);
|
||||
if (IS_ADHOC_LOC (l1))
|
||||
l1 = get_location_from_adhoc_loc (set, l1);
|
||||
|
||||
return l1 - l0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user