Files
gcc/libcpp
Lewis Hyatt 942497ad74 libcpp: Fix macro expansion for argument of __has_include [PR110558]
When the file name for a #include directive is the result of stringifying a
macro argument, libcpp needs to take some care to get the whitespace
correct; in particular stringify_arg() needs to see a CPP_PADDING token
between macro tokens so that it can figure out when to output space between
tokens. The CPP_PADDING tokens are not normally generated when handling a
preprocessor directive, but for #include-like directives, libcpp sets the
state variable pfile->state.directive_wants_padding to TRUE so that the
CPP_PADDING tokens will be output, and then everything works fine for
computed includes.

As the PR points out, things do not work fine for __has_include. Fix that by
setting the state variable the same as is done for #include.

libcpp/ChangeLog:

	PR preprocessor/110558
	* macro.cc (builtin_has_include): Set
	pfile->state.directive_wants_padding prior to lexing the
	file name, in case it comes from macro expansion.

gcc/testsuite/ChangeLog:

	PR preprocessor/110558
	* c-c++-common/cpp/has-include-2.c: New test.
	* c-c++-common/cpp/has-include-2.h: New test.
2024-03-14 07:33:02 -04:00
..
2024-02-22 00:18:58 +00:00
2023-11-14 00:47:11 +01:00
2024-02-23 00:16:46 +00:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00
2024-01-03 12:19:35 +01:00