on the line (up to or before EXPLOC). */
static bool
-get_visual_column (expanded_location exploc, location_t loc,
+get_visual_column (expanded_location exploc,
unsigned int *out,
unsigned int *first_nws,
unsigned int tab_width)
{
- /* PR c++/68819: if the column number is zero, we presumably
- had a location_t > LINE_MAP_MAX_LOCATION_WITH_COLS, and so
- we have no column information.
- Act as if no conversion was possible, triggering the
- error-handling path in the caller. */
- if (!exploc.column)
- {
- static bool issued_note = false;
- if (!issued_note)
- {
- /* Notify the user the first time this happens. */
- issued_note = true;
- inform (loc,
- "%<-Wmisleading-indentation%> is disabled from this point"
- " onwards, since column-tracking was disabled due to"
- " the size of the code/headers");
- if (!flag_large_source_files)
- inform (loc,
- "adding %<-flarge-source-files%> will allow for more"
- " column-tracking support, at the expense of compilation"
- " time and memory");
- }
- return false;
- }
-
char_span line = location_get_source_line (exploc.file, exploc.line);
if (!line)
return false;
NULL);
}
- /* Give up if the loci are not all distinct. */
- if (guard_loc == body_loc || body_loc == next_stmt_loc)
- return false;
-
expanded_location body_exploc = expand_location (body_loc);
expanded_location next_stmt_exploc = expand_location (next_stmt_loc);
expanded_location guard_exploc = expand_location (guard_loc);
+ /* PR c++/68819: if the column number is zero, we presumably
+ had a location_t > LINE_MAP_MAX_LOCATION_WITH_COLS, and so
+ we have no column information. */
+ if (!guard_exploc.column || !body_exploc.column || !next_stmt_exploc.column)
+ {
+ static bool issued_note = false;
+ if (!issued_note)
+ {
+ /* Notify the user the first time this happens. */
+ issued_note = true;
+ inform (guard_loc,
+ "%<-Wmisleading-indentation%> is disabled from this point"
+ " onwards, since column-tracking was disabled due to"
+ " the size of the code/headers");
+ if (!flag_large_source_files)
+ inform (guard_loc,
+ "adding %<-flarge-source-files%> will allow for more"
+ " column-tracking support, at the expense of compilation"
+ " time and memory");
+ }
+ return false;
+ }
+
+ /* Give up if the loci are not all distinct. */
+ if (guard_loc == body_loc || body_loc == next_stmt_loc)
+ return false;
+
const unsigned int tab_width = global_dc->tabstop;
/* They must be in the same file. */
gcc_assert (guard_exploc.line == next_stmt_exploc.line);
unsigned int guard_vis_column;
unsigned int guard_line_first_nws;
- if (!get_visual_column (guard_exploc, guard_loc,
+ if (!get_visual_column (guard_exploc,
&guard_vis_column,
&guard_line_first_nws, tab_width))
return false;
the case for input files containing #line directives, and these
are often for autogenerated sources (e.g. from .md files), where
it's not clear that it's meaningful to look at indentation. */
- if (!get_visual_column (next_stmt_exploc, next_stmt_loc,
+ if (!get_visual_column (next_stmt_exploc,
&next_stmt_vis_column,
&next_stmt_line_first_nws, tab_width))
return false;
- if (!get_visual_column (body_exploc, body_loc,
+ if (!get_visual_column (body_exploc,
&body_vis_column,
&body_line_first_nws, tab_width))
return false;
- if (!get_visual_column (guard_exploc, guard_loc,
+ if (!get_visual_column (guard_exploc,
&guard_vis_column,
&guard_line_first_nws, tab_width))
return false;
exploc.sysp = false;
unsigned int actual_visual_column;
unsigned int actual_first_nws;
- bool result = get_visual_column (exploc, UNKNOWN_LOCATION,
+ bool result = get_visual_column (exploc,
&actual_visual_column,
&actual_first_nws, tab_width);
ASSERT_TRUE_AT (loc, result);
exploc.sysp = false;
unsigned int actual_visual_column;
unsigned int actual_first_nws;
- bool result = get_visual_column (exploc, UNKNOWN_LOCATION,
+ bool result = get_visual_column (exploc,
&actual_visual_column,
&actual_first_nws, tab_width);
ASSERT_FALSE_AT (loc, result);