libcpp: location comparison within macro [PR100796]
authorJason Merrill <jason@redhat.com>
Mon, 14 Jun 2021 21:37:43 +0000 (17:37 -0400)
committerJason Merrill <jason@redhat.com>
Wed, 16 Jun 2021 15:41:08 +0000 (11:41 -0400)
commit9e64426dae129cca5b62355ef6c5a3bd6137e830
tree743aef1e7b4ba903473889568e8f79aedd136b35
parentdd835ec24be9b1a89c6b0c78673de88c81a23966
libcpp: location comparison within macro [PR100796]

The patch for 96391 changed linemap_compare_locations to give up on
comparing locations from macro expansions if we don't have column
information.  But in this testcase, the BOILERPLATE macro is multiple lines
long, so we do want to compare locations within the macro.  So this patch
moves the LINE_MAP_MAX_LOCATION_WITH_COLS check inside the block, to use it
for failing gracefully.

PR c++/100796
PR preprocessor/96391

libcpp/ChangeLog:

* line-map.c (linemap_compare_locations): Only use comparison with
LINE_MAP_MAX_LOCATION_WITH_COLS to avoid abort.

gcc/testsuite/ChangeLog:

* g++.dg/plugin/location-overflow-test-pr100796.c: New test.
* g++.dg/plugin/plugin.exp: Run it.
gcc/testsuite/g++.dg/plugin/location-overflow-test-pr100796.c [new file with mode: 0644]
gcc/testsuite/g++.dg/plugin/plugin.exp
libcpp/line-map.c