[4/7] Preprocessor location-kind predicates
authorNathan Sidwell <nathan@acm.org>
Wed, 31 Oct 2018 14:57:13 +0000 (14:57 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 31 Oct 2018 14:57:13 +0000 (14:57 +0000)
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

libcpp/ChangeLog
libcpp/include/line-map.h
libcpp/line-map.c

index a02a335eae9a50d92471944aaee4996a90a67e03..42433d9fe123c71e452b728e03ec6ad4bfa7bf1a 100644 (file)
@@ -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.
index 23f0e4a3514348bce0656706450c4fe7a6bf76af..ae9780e5d1a9d101760b09dedb0729ed265c20f0 100644 (file)
@@ -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.  */
 
index 66d92cf34aa2ccac522391f5863a8b05b38fae70..2d3ed839122693aa482a04da0c30e52dd964c535 100644 (file)
@@ -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