PR preprocessor/83173: New test

2018-11-27  Mike Gulick  <mgulick@mathworks.com>

	PR preprocessor/83173
	* gcc.dg/plugin/location-overflow-test-pr83173.c: New test.
	* gcc.dg/plugin/location-overflow-test-pr83173.h: Header for
	pr83173.c.
	* gcc.dg/plugin/location-overflow-test-pr83173-1.h: Header for
	pr83173.c.
	* gcc.dg/plugin/location-overflow-test-pr83173-2.h: Header for
	pr83173.c.
	* gcc.dg/plugin/location_overflow_plugin.c: Use PLUGIN_PRAGMAS
	instead of PLUGIN_START_UNIT.
	* gcc.dg/plugin/plugin.exp: Enable new test.

From-SVN: r266518
This commit is contained in:
Mike Gulick 2018-11-27 15:53:51 +00:00 committed by David Malcolm
parent 862ec76377
commit 4d8da4df6b
7 changed files with 51 additions and 6 deletions

View file

@ -1,3 +1,17 @@
2018-11-27 Mike Gulick <mgulick@mathworks.com>
PR preprocessor/83173
* gcc.dg/plugin/location-overflow-test-pr83173.c: New test.
* gcc.dg/plugin/location-overflow-test-pr83173.h: Header for
pr83173.c.
* gcc.dg/plugin/location-overflow-test-pr83173-1.h: Header for
pr83173.c.
* gcc.dg/plugin/location-overflow-test-pr83173-2.h: Header for
pr83173.c.
* gcc.dg/plugin/location_overflow_plugin.c: Use PLUGIN_PRAGMAS
instead of PLUGIN_START_UNIT.
* gcc.dg/plugin/plugin.exp: Enable new test.
2018-11-27 Jakub Jelinek <jakub@redhat.com>
PR target/88188

View file

@ -0,0 +1,2 @@
#pragma once
#define LOCATION_OVERFLOW_TEST_PR83173_1_H

View file

@ -0,0 +1,2 @@
#pragma once
#define LOCATION_OVERFLOW_TEST_PR83173_2_H

View file

@ -0,0 +1,21 @@
/*
{ dg-options "-fplugin-arg-location_overflow_plugin-value=0x60000001" }
{ dg-do preprocess }
*/
#include "location-overflow-test-pr83173.h"
int
main ()
{
return 0;
}
/*
The preprocessor output should contain
'# 1 "path/to/location-overflow-test-pr83173-1.h" 1', but should not
contain any other references to location-overflow-test-pr83183-1.h.
{ dg-final { scan-file location-overflow-test-pr83173.i "# 1 \[^\r\n\]+location-overflow-test-pr83173-1\.h\" 1" } }
{ dg-final { scan-file-not location-overflow-test-pr83173.i "# (?!1 \[^\r\n\]+location-overflow-test-pr83173-1\.h\" 1)\[0-9\]+ \[^\r\n\]+location-overflow-test-pr83173-1\.h\"" } }
*/

View file

@ -0,0 +1,2 @@
#include "location-overflow-test-pr83173-1.h"
#include "location-overflow-test-pr83173-2.h"

View file

@ -12,11 +12,14 @@ int plugin_is_GPL_compatible;
static location_t base_location;
/* Callback handler for the PLUGIN_START_UNIT event; pretend
we parsed a very large include file. */
/* Callback handler for the PLUGIN_PRAGMAS event; pretend we parsed a
very large include file. This is used to set the initial line table
offset for the preprocessor, to make it appear as if we had parsed a
very large file. PRAGMA_START_UNIT is not suitable here as is not
invoked during the preprocessor stage. */
static void
on_start_unit (void */*gcc_data*/, void */*user_data*/)
on_pragma_registration (void */*gcc_data*/, void */*user_data*/)
{
/* Act as if we've already parsed a large body of code;
so that we can simulate various fallbacks in libcpp:
@ -81,8 +84,8 @@ plugin_init (struct plugin_name_args *plugin_info,
error_at (UNKNOWN_LOCATION, "missing plugin argument");
register_callback (plugin_info->base_name,
PLUGIN_START_UNIT,
on_start_unit,
PLUGIN_PRAGMAS,
on_pragma_registration,
NULL); /* void *user_data */
/* Hack in additional testing, based on the exact value supplied. */

View file

@ -96,7 +96,8 @@ set plugin_test_list [list \
diagnostic-test-inlining-4.c } \
{ location_overflow_plugin.c \
location-overflow-test-1.c \
location-overflow-test-2.c } \
location-overflow-test-2.c \
location-overflow-test-pr83173.c } \
{ must_tail_call_plugin.c \
must-tail-call-1.c \
must-tail-call-2.c } \