Re: add names for constants in line-map.c

2015-05-26 Thread Jeff Law

On 05/23/2015 04:46 AM, Manuel López-Ibáñez wrote:

This patch adds descriptive names to various constants in line-map.c.

There were some differences between the constants used a various
places, but my understanding is that these differences are arbitrary
and it is easier to understand the code if they are harmonized.

Bootstrapped and regression tested on x86-linux-gnu.

OK?

libcpp/ChangeLog:

2015-05-23  Manuel López-Ibáñez  

 * line-map.c (LINE_MAP_MAX_COLUMN_NUMBER
 LINE_MAP_MAX_LOCATION_WITH_COLS,LINE_MAP_MAX_SOURCE_LOCATION):
 New constants.
 (linemap_line_start): Use them.
 (linemap_position_for_column): Use them.

OK for the trunk, please install.

Thanks,
Jeff



add names for constants in line-map.c

2015-05-23 Thread Manuel López-Ibáñez
This patch adds descriptive names to various constants in line-map.c.

There were some differences between the constants used a various
places, but my understanding is that these differences are arbitrary
and it is easier to understand the code if they are harmonized.

Bootstrapped and regression tested on x86-linux-gnu.

OK?

libcpp/ChangeLog:

2015-05-23  Manuel López-Ibáñez  

* line-map.c (LINE_MAP_MAX_COLUMN_NUMBER
LINE_MAP_MAX_LOCATION_WITH_COLS,LINE_MAP_MAX_SOURCE_LOCATION):
New constants.
(linemap_line_start): Use them.
(linemap_position_for_column): Use them.
Index: libcpp/line-map.c
===
--- libcpp/line-map.c   (revision 223596)
+++ libcpp/line-map.c   (working copy)
@@ -24,10 +24,22 @@ along with this program; see the file CO
 #include "line-map.h"
 #include "cpplib.h"
 #include "internal.h"
 #include "hashtab.h"
 
+/* Do not track column numbers higher than this one.  As a result, the
+   range of column_bits is [7, 18] (or 0 if column numbers are
+   disabled).  */
+const unsigned int LINE_MAP_MAX_COLUMN_NUMBER = (1U << 17);
+
+/* Do not track column numbers if locations get higher than this.  */
+const source_location LINE_MAP_MAX_LOCATION_WITH_COLS = 0x6000;
+
+/* Highest possible source location encoded within an ordinary or
+   macro map.  */
+const source_location LINE_MAP_MAX_SOURCE_LOCATION = 0x7000;
+
 static void trace_include (const struct line_maps *, const line_map_ordinary 
*);
 static const line_map_ordinary * linemap_ordinary_map_lookup (struct line_maps 
*,
  source_location);
 static const line_map_macro* linemap_macro_map_lookup (struct line_maps *,
   source_location);
@@ -542,26 +554,27 @@ linemap_line_start (struct line_maps *se
   || (line_delta > 10
  && line_delta * ORDINARY_MAP_NUMBER_OF_COLUMN_BITS (map) > 1000)
   || (max_column_hint >= (1U << ORDINARY_MAP_NUMBER_OF_COLUMN_BITS (map)))
   || (max_column_hint <= 80
  && ORDINARY_MAP_NUMBER_OF_COLUMN_BITS (map) >= 10)
-  || (highest > 0x6000
- && (set->max_column_hint || highest > 0x7000)))
+  || (highest > LINE_MAP_MAX_LOCATION_WITH_COLS
+ && (set->max_column_hint || highest >= LINE_MAP_MAX_SOURCE_LOCATION)))
 add_map = true;
   else
 max_column_hint = set->max_column_hint;
   if (add_map)
 {
   int column_bits;
-  if (max_column_hint > 10 || highest > 0x6000)
+  if (max_column_hint > LINE_MAP_MAX_COLUMN_NUMBER
+ || highest > LINE_MAP_MAX_LOCATION_WITH_COLS)
{
  /* If the column number is ridiculous or we've allocated a huge
 number of source_locations, give up on column numbers. */
  max_column_hint = 0;
- if (highest > 0x7000)
-   return 0;
  column_bits = 0;
+ if (highest > LINE_MAP_MAX_SOURCE_LOCATION)
+   return 0;
}
   else
{
  column_bits = 7;
  while (max_column_hint >= (1U << column_bits))
@@ -613,11 +626,12 @@ linemap_position_for_column (struct line
   linemap_assert
 (!linemap_macro_expansion_map_p (LINEMAPS_LAST_ORDINARY_MAP (set)));
 
   if (to_column >= set->max_column_hint)
 {
-  if (r >= 0xC00 || to_column > 10)
+  if (r > LINE_MAP_MAX_LOCATION_WITH_COLS
+ || to_column > LINE_MAP_MAX_COLUMN_NUMBER)
{
  /* Running low on source_locations - disable column numbers.  */
  return r;
}
   else