gcc/gcc6-pr69126-revert.patch

92 lines
3.8 KiB
Diff

Revert:
2016-01-28 Jakub Jelinek <jakub@redhat.com>
* directives.c (destringize_and_run): Adjust prototype.
2016-01-27 David Malcolm <dmalcolm@redhat.com>
PR preprocessor/69126
* directives.c (destringize_and_run): Add expansion_loc param; use
it when handling unexpanded pragmas to fixup the locations of the
synthesized tokens.
(_cpp_do__Pragma): Add expansion_loc param and use it when calling
destringize_and_run.
* internal.h (_cpp_do__Pragma): Add expansion_loc param.
* macro.c (builtin_macro): Pass expansion location of _Pragma to
_cpp_do__Pragma.
--- libcpp/macro.c (revision 232893)
+++ libcpp/macro.c (revision 232892)
@@ -430,7 +430,7 @@ builtin_macro (cpp_reader *pfile, cpp_ha
if (pfile->state.in_directive)
return 0;
- return _cpp_do__Pragma (pfile, loc);
+ return _cpp_do__Pragma (pfile);
}
buf = _cpp_builtin_macro_text (pfile, node);
--- libcpp/directives.c (revision 232928)
+++ libcpp/directives.c (revision 232892)
@@ -122,8 +122,7 @@ static void do_pragma_error (cpp_reader
static void do_linemarker (cpp_reader *);
static const cpp_token *get_token_no_padding (cpp_reader *);
static const cpp_token *get__Pragma_string (cpp_reader *);
-static void destringize_and_run (cpp_reader *, const cpp_string *,
- source_location);
+static void destringize_and_run (cpp_reader *, const cpp_string *);
static int parse_answer (cpp_reader *, struct answer **, int, source_location);
static cpp_hashnode *parse_assertion (cpp_reader *, struct answer **, int);
static struct answer ** find_answer (cpp_hashnode *, const struct answer *);
@@ -1753,8 +1752,7 @@ get__Pragma_string (cpp_reader *pfile)
/* Destringize IN into a temporary buffer, by removing the first \ of
\" and \\ sequences, and process the result as a #pragma directive. */
static void
-destringize_and_run (cpp_reader *pfile, const cpp_string *in,
- source_location expansion_loc)
+destringize_and_run (cpp_reader *pfile, const cpp_string *in)
{
const unsigned char *src, *limit;
char *dest, *result;
@@ -1834,12 +1832,6 @@ destringize_and_run (cpp_reader *pfile,
toks = XRESIZEVEC (cpp_token, toks, maxcount);
}
toks[count] = *cpp_get_token (pfile);
- /* _Pragma is a builtin, so we're not within a macro-map, and so
- the token locations are set to bogus ordinary locations
- near to, but after that of the "_Pragma".
- Paper over this by setting them equal to the location of the
- _Pragma itself (PR preprocessor/69126). */
- toks[count].src_loc = expansion_loc;
/* Macros have been already expanded by cpp_get_token
if the pragma allowed expansion. */
toks[count++].flags |= NO_EXPAND;
@@ -1874,14 +1866,14 @@ destringize_and_run (cpp_reader *pfile,
/* Handle the _Pragma operator. Return 0 on error, 1 if ok. */
int
-_cpp_do__Pragma (cpp_reader *pfile, source_location expansion_loc)
+_cpp_do__Pragma (cpp_reader *pfile)
{
const cpp_token *string = get__Pragma_string (pfile);
pfile->directive_result.type = CPP_PADDING;
if (string)
{
- destringize_and_run (pfile, &string->val.str, expansion_loc);
+ destringize_and_run (pfile, &string->val.str);
return 1;
}
cpp_error (pfile, CPP_DL_ERROR,
--- libcpp/internal.h (revision 232893)
+++ libcpp/internal.h (revision 232892)
@@ -688,7 +688,7 @@ extern int _cpp_handle_directive (cpp_re
extern void _cpp_define_builtin (cpp_reader *, const char *);
extern char ** _cpp_save_pragma_names (cpp_reader *);
extern void _cpp_restore_pragma_names (cpp_reader *, char **);
-extern int _cpp_do__Pragma (cpp_reader *, source_location);
+extern int _cpp_do__Pragma (cpp_reader *);
extern void _cpp_init_directives (cpp_reader *);
extern void _cpp_init_internal_pragmas (cpp_reader *);
extern void _cpp_do_file_change (cpp_reader *, enum lc_reason, const char *,