diff options
author | Nathan Sidwell <nathan@acm.org> | 2018-10-31 14:57:13 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2018-10-31 14:57:13 +0000 |
commit | 87bacc2b392f48951491bf6454d7d6bcde127c90 (patch) | |
tree | 2f2758bb919239d08146f1801e6c722d58eb633c /libcpp | |
parent | c9fb347ea14cd8f519a71374c97547044413a71f (diff) | |
download | gcc-87bacc2b392f48951491bf6454d7d6bcde127c90.zip gcc-87bacc2b392f48951491bf6454d7d6bcde127c90.tar.gz gcc-87bacc2b392f48951491bf6454d7d6bcde127c90.tar.bz2 |
[4/7] Preprocessor location-kind predicates
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02040.html
* include/line-map.h (IS_ORDINARY_LOC, IS_MACRO_LOC): New
predicates.
(IS_ADHOC_LOC): Move earlier.
(MAP_ORDINARY_P): Use IS_ORDINARY_LOC.
* line-map.c (linemap_location_from_macro_expansion_p): Use
IS_MACRO_LOC.
From-SVN: r265689
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 7 | ||||
-rw-r--r-- | libcpp/include/line-map.h | 30 | ||||
-rw-r--r-- | libcpp/line-map.c | 2 |
3 files changed, 29 insertions, 10 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index a02a335..42433d9 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,5 +1,12 @@ 2018-10-31 Nathan Sidwell <nathan@acm.org> + * include/line-map.h (IS_ORDINARY_LOC, IS_MACRO_LOC): New + predicates. + (IS_ADHOC_LOC): Move earlier. + (MAP_ORDINARY_P): Use IS_ORDINARY_LOC. + * line-map.c (linemap_location_from_macro_expansion_p): Use + IS_MACRO_LOC. + * include/cpplib.h (cpp_macro_definition_location): Make inline. * macro.c (warn_of_redefinition): Fix comments, examine macro type, use C++ for. diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 23f0e4a..ae9780e 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -558,12 +558,32 @@ struct GTY((tag ("2"))) line_map_macro : public line_map { #define linemap_assert_fails(EXPR) (! (EXPR)) #endif +/* Get whether location LOC is an ad-hoc, ordinary or macro location. */ + +inline bool +IS_ORDINARY_LOC (source_location loc) +{ + return loc < LINE_MAP_MAX_LOCATION; +} + +inline bool +IS_ADHOC_LOC (source_location loc) +{ + return loc > MAX_SOURCE_LOCATION; +} + +inline bool +IS_MACRO_LOC (source_location loc) +{ + return !IS_ORDINARY_LOC (loc) && !IS_ADHOC_LOC (loc); +} + /* Categorize line map kinds. */ inline bool MAP_ORDINARY_P (const line_map *map) { - return map->start_location < LINE_MAP_MAX_LOCATION; + return IS_ORDINARY_LOC (map->start_location); } /* Return TRUE if MAP encodes locations coming from a macro @@ -1037,14 +1057,6 @@ extern source_location get_location_from_adhoc_loc (struct line_maps *, extern source_range get_range_from_loc (line_maps *set, source_location loc); -/* Get whether location LOC is an ad-hoc location. */ - -inline bool -IS_ADHOC_LOC (source_location loc) -{ - return (loc & MAX_SOURCE_LOCATION) != loc; -} - /* Get whether location LOC is a "pure" location, or whether it is an ad-hoc location, or embeds range information. */ diff --git a/libcpp/line-map.c b/libcpp/line-map.c index 66d92cf..2d3ed83 100644 --- a/libcpp/line-map.c +++ b/libcpp/line-map.c @@ -1238,7 +1238,7 @@ linemap_location_from_macro_expansion_p (const struct line_maps *set, location = set->location_adhoc_data_map.data[location & MAX_SOURCE_LOCATION].locus; - return location >= LINE_MAP_MAX_LOCATION; + return IS_MACRO_LOC (location); } /* Given two virtual locations *LOC0 and *LOC1, return the first |