cppinit.c (cpp_post_options): Shut off macro expansion if -fpreprocessed.
* cppinit.c (cpp_post_options): Shut off macro expansion if -fpreprocessed. * cpplib.c (_cpp_handle_directive): If -fpreprocessed, accept IN_I directives only if the # is in column 1 and the directive name begins in column 2. * cppmain.c (scan_buffer): Insert a space between # and an identifier, when that identifier is a directive name. * tradcpp.c (struct file_buf): Add a pointer to the next entry in the header search path. (enum node_type): Add T_INCLUDE_NEXT. (directive_table): Add entry for include_next. (do_include_next): New function. (process_include): New routine, broken out of do_include. (finclude): Insert 'nhd' argument, to be copied into next_header_dir of the new buffer. (main): Adjust to match. * gsyslimits.h, limity.h: Un-indent #include_next. testsuite: * gcc.dg/cpp/direct2.c: New test. * gcc.dg/cpp/direct2s.c: New test. * gcc.c-torture/execute/920730-1t.c: #undef __GNUC__ at head. From-SVN: r41932
This commit is contained in:
parent
6ebe3121aa
commit
6d4587f735
|
@ -1,3 +1,24 @@
|
|||
2001-05-09 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* cppinit.c (cpp_post_options): Shut off macro expansion if
|
||||
-fpreprocessed.
|
||||
* cpplib.c (_cpp_handle_directive): If -fpreprocessed, accept
|
||||
IN_I directives only if the # is in column 1 and the directive
|
||||
name begins in column 2.
|
||||
* cppmain.c (scan_buffer): Insert a space between # and an
|
||||
identifier, when that identifier is a directive name.
|
||||
|
||||
* tradcpp.c (struct file_buf): Add a pointer to the next entry
|
||||
in the header search path.
|
||||
(enum node_type): Add T_INCLUDE_NEXT.
|
||||
(directive_table): Add entry for include_next.
|
||||
(do_include_next): New function.
|
||||
(process_include): New routine, broken out of do_include.
|
||||
(finclude): Insert 'nhd' argument, to be copied into
|
||||
next_header_dir of the new buffer.
|
||||
(main): Adjust to match.
|
||||
* gsyslimits.h, limity.h: Un-indent #include_next.
|
||||
|
||||
2001-05-09 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* objc.texi: Move from ../libobjc/objc-features.texi. Adjust for
|
||||
|
@ -466,7 +487,7 @@ Fri May 4 13:10:03 CEST 2001 Jan Hubicka <jh@suse.cz>
|
|||
(REG_OK_FOR_INDEX_P): Use INT_REG_OK_FOR_INDEX_P.
|
||||
(REG_OK_FOR_BASE_P): Use INT_REG_OK_FOR_BASE_P.
|
||||
(LEGITIMATE_OFFSET_ADDRESS_P): Use INT_REG_OK_FOR_INDEX_P and
|
||||
INT_REG_OK_FOR_BASE_P instead of REG_OK_FOR_INDEX_P and
|
||||
INT_REG_OK_FOR_BASE_P instead of REG_OK_FOR_INDEX_P and
|
||||
REG_OK_FOR_BASE_P. Take an additional parameter.
|
||||
(LEGITIMATE_INDEXED_ADDRESS_P): Likeewise.
|
||||
(LEGITIMATE_INDIRECT_ADDRESS_P): Likewise.
|
||||
|
|
|
@ -1716,6 +1716,11 @@ cpp_post_options (pfile)
|
|||
if (CPP_OPTION (pfile, user_label_prefix) == NULL)
|
||||
CPP_OPTION (pfile, user_label_prefix) = USER_LABEL_PREFIX;
|
||||
|
||||
/* Permanently disable macro expansion if we are rescanning
|
||||
preprocessed text. */
|
||||
if (CPP_OPTION (pfile, preprocessed))
|
||||
pfile->state.prevent_expansion = 1;
|
||||
|
||||
/* We need to do this after option processing and before
|
||||
cpp_start_read, as cppmain.c relies on the options->no_output to
|
||||
set its callbacks correctly before calling cpp_start_read. */
|
||||
|
|
27
gcc/cpplib.c
27
gcc/cpplib.c
|
@ -311,7 +311,32 @@ _cpp_handle_directive (pfile, indented)
|
|||
|
||||
/* If we are rescanning preprocessed input, only directives tagged
|
||||
with IN_I are honored, and the warnings below are suppressed. */
|
||||
if (! CPP_OPTION (pfile, preprocessed) || dir->flags & IN_I)
|
||||
if (CPP_OPTION (pfile, preprocessed))
|
||||
{
|
||||
/* Kluge alert. In order to be sure that code like this
|
||||
#define HASH #
|
||||
HASH define foo bar
|
||||
does not cause '#define foo bar' to get executed when
|
||||
compiled with -save-temps, we recognize directives in
|
||||
-fpreprocessed mode only if the # is in column 1 and the
|
||||
directive name starts in column 2. This output can only
|
||||
be generated by the directive callbacks in cppmain.c (see
|
||||
also the special case in scan_buffer). */
|
||||
if (dir->flags & IN_I && !indented && !(dname.flags & PREV_WHITE))
|
||||
(*dir->handler) (pfile);
|
||||
/* That check misses '# 123' linemarkers. Let them through too. */
|
||||
else if (dname.type == CPP_NUMBER)
|
||||
(*dir->handler) (pfile);
|
||||
else
|
||||
{
|
||||
/* We don't want to process this directive. Put back the
|
||||
tokens so caller will see them (and issue an error,
|
||||
probably). */
|
||||
_cpp_push_token (pfile, &dname, &pfile->directive_pos);
|
||||
skip = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Traditionally, a directive is ignored unless its # is in
|
||||
column 1. Therefore in code intended to work with K+R
|
||||
|
|
|
@ -238,6 +238,13 @@ scan_buffer (pfile)
|
|||
== AVOID_LPASTE
|
||||
&& cpp_avoid_paste (pfile, &tokens[1 - index], token))
|
||||
token->flags |= PREV_WHITE;
|
||||
/* Special case '# <directive name>': insert a space between
|
||||
the # and the token. This will prevent it from being
|
||||
treated as a directive when this code is re-preprocessed.
|
||||
XXX Should do this only at the beginning of a line, but how? */
|
||||
else if (token->type == CPP_NAME && token->val.node->directive_index
|
||||
&& tokens[1 - index].type == CPP_HASH)
|
||||
token->flags |= PREV_WHITE;
|
||||
|
||||
cpp_output_token (token, print.outf);
|
||||
print.printed = 1;
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
instead of this text. */
|
||||
|
||||
#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */
|
||||
#include_next <limits.h>
|
||||
#include_next <limits.h>
|
||||
#undef _GCC_NEXT_LIMITS_H
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#else /* not _GCC_LIMITS_H_ */
|
||||
|
||||
#ifdef _GCC_NEXT_LIMITS_H
|
||||
#include_next <limits.h> /* recurse down to the real one */
|
||||
#include_next <limits.h> /* recurse down to the real one */
|
||||
#endif
|
||||
|
||||
#endif /* not _GCC_LIMITS_H_ */
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2001-05-09 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* gcc.dg/cpp/direct2.c: New test.
|
||||
* gcc.dg/cpp/direct2s.c: New test.
|
||||
|
||||
* gcc.c-torture/execute/920730-1t.c: #undef __GNUC__ at head.
|
||||
|
||||
2001-05-07 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.other/op2.C: Don't use `glob' as a variable.
|
||||
|
@ -26,7 +33,7 @@
|
|||
|
||||
* lib/g++.exp (g++_include_flags): Don't use any special flags
|
||||
if TESTING_IN_BUILD_TREE is not defined.
|
||||
(g++_init): Use a plain 'c++' as the compiler if
|
||||
(g++_init): Use a plain 'c++' as the compiler if
|
||||
TESTING_IN_BUILD_TREEE is not defined.
|
||||
|
||||
2001-05-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
@ -187,7 +194,7 @@ Thu Apr 26 11:15:12 2001 Jeffrey A Law (law@cygnus.com)
|
|||
* gcc.dg/wtr-conversion-1.c: Don't test for width changes.
|
||||
|
||||
2001-04-12 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
|
||||
* g++.old-deja/g++.abi/primary3.C (main): Correct expected layout.
|
||||
* g++.old-deja/g++.abi/crash1.C: New test.
|
||||
|
||||
|
@ -205,7 +212,7 @@ Thu Apr 26 11:15:12 2001 Jeffrey A Law (law@cygnus.com)
|
|||
|
||||
22001-04-11 Peter Schmid <schmid@snake.iap.physik.tu-darmstadt.de>
|
||||
|
||||
* g++.old-deja/g++.robertl/eb42.C: Same.
|
||||
* g++.old-deja/g++.robertl/eb42.C: Same.
|
||||
|
||||
001-04-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
|
@ -470,9 +477,9 @@ Fri Apr 6 15:36:15 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-03-06 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* objc/execute/string1.m, objc/execute/string2.m: Compare the
|
||||
result of -cString against what we expect it to be; don't just
|
||||
print it out for no one to read.
|
||||
* objc/execute/string1.m, objc/execute/string2.m: Compare the
|
||||
result of -cString against what we expect it to be; don't just
|
||||
print it out for no one to read.
|
||||
|
||||
* objc/execute/string3.m, objc/execute/string4.m: New tests.
|
||||
Based on testcases provided by Nicola Pero.
|
||||
|
@ -546,8 +553,8 @@ Wed Feb 21 12:38:22 2001 Ovidiu Predescu <ovidiu@cup.hp.com>
|
|||
|
||||
2001-02-21 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.other/lookup22.C: New test.
|
||||
|
||||
* g++.old-deja/g++.other/lookup22.C: New test.
|
||||
|
||||
2001-02-19 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* g77.dg: New directory.
|
||||
|
@ -562,7 +569,7 @@ Wed Feb 21 12:38:22 2001 Ovidiu Predescu <ovidiu@cup.hp.com>
|
|||
2001-02-16 Gabriel Dos Reis <gdr@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.other/decl9.C: New test.
|
||||
|
||||
|
||||
2001-02-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* g++.old-deja/g++.other/init16.C: Update the test so that it does
|
||||
|
@ -676,7 +683,7 @@ Wed Feb 7 09:54:47 2001 Ovidiu Predescu <ovidiu@cup.hp.com>
|
|||
|
||||
2001-02-06 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/avoidpaste1.c: Update.
|
||||
* gcc.dg/cpp/avoidpaste1.c: Update.
|
||||
|
||||
Tue Feb 5 8:53:33 2001 Ovidiu Predescu <ovidiu@cup.hp.com>
|
||||
|
||||
|
@ -718,7 +725,7 @@ Tue Feb 5 8:53:33 2001 Ovidiu Predescu <ovidiu@cup.hp.com>
|
|||
|
||||
2001-02-01 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/avoidpaste2.c: New tests.
|
||||
* gcc.dg/cpp/avoidpaste2.c: New tests.
|
||||
|
||||
2001-01-31 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -739,12 +746,12 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-01-31 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/tr-warn1.c: Add tests.
|
||||
* gcc.dg/cpp/tr-warn1.c: Add tests.
|
||||
|
||||
2001-01-31 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/avoidpaste1.c: Update.
|
||||
* gcc.dg/cpp/paste4.c: Update.
|
||||
* gcc.dg/cpp/avoidpaste1.c: Update.
|
||||
* gcc.dg/cpp/paste4.c: Update.
|
||||
|
||||
2001-01-30 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
|
@ -770,7 +777,7 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-01-28 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/avoidpaste1.c: Test case.
|
||||
* gcc.dg/cpp/avoidpaste1.c: Test case.
|
||||
|
||||
2001-01-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -886,7 +893,7 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-01-18 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/assembl2.S: New test case.
|
||||
* gcc.dg/cpp/assembl2.S: New test case.
|
||||
|
||||
2001-01-17 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
|
@ -926,9 +933,9 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-01-15 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/if-2.c: Comment out occasionally bogus test; we
|
||||
have an equivalent working one below it.
|
||||
|
||||
* gcc.dg/cpp/if-2.c: Comment out occasionally bogus test; we
|
||||
have an equivalent working one below it.
|
||||
|
||||
2001-01-14 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.ext/instantiate2.C: Add explanatory comment.
|
||||
|
@ -970,8 +977,8 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2001-01-13 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/widestr1.c: Update.
|
||||
* gcc.dg/cpp/prag-imp.c: Remove.
|
||||
* gcc.dg/cpp/widestr1.c: Update.
|
||||
* gcc.dg/cpp/prag-imp.c: Remove.
|
||||
|
||||
2001-01-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -1018,7 +1025,7 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
2001-01-10 Alan Lehotsky <lehotsky@tiac.net>
|
||||
|
||||
* gcc.dg/20000926-1.c: Parameterize for machines with 16-bit ints.
|
||||
|
||||
|
||||
2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.pt/error3.C: New test.
|
||||
|
@ -1034,17 +1041,17 @@ Wed Jan 31 12:23:32 2001 J"orn Rennecke <amylaar@redhat.com>
|
|||
2001-01-08 Jonathan Larmour <jlarmour@redhat.com>
|
||||
|
||||
* gcc.dg/20000419-2.c: Move to "special" subdirectory.
|
||||
* gcc.dg/special/20000419-2.c: New file. Identical to above.
|
||||
* gcc.dg/special/special.exp: New test driver which will check
|
||||
for alias support for the above test.
|
||||
* gcc.dg/special/20000419-2.c: New file. Identical to above.
|
||||
* gcc.dg/special/special.exp: New test driver which will check
|
||||
for alias support for the above test.
|
||||
|
||||
2001-01-09 Alan Lehotsky <lehotsky@tiac.net>
|
||||
|
||||
* gcc.c-torture/execute/921202-1.c: Use STACK_SIZE to avoid
|
||||
problems on small machines.
|
||||
* gcc.c-torture/execute/920730-1.c: Use values from <limits.h> to
|
||||
parameterize.
|
||||
|
||||
parameterize.
|
||||
|
||||
2001-01-09 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.ext/instantiate2.C: ERROR line should fail for
|
||||
|
@ -1229,7 +1236,7 @@ Thu Jan 4 13:54:11 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
|||
2001-01-03 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
* lib/target-supports.exp (check_alias_available): Modified to
|
||||
indicate aliases not supported if only weak aliases are supported.
|
||||
indicate aliases not supported if only weak aliases are supported.
|
||||
|
||||
2001-01-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
|
@ -1362,12 +1369,12 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-17 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/multiline.c: New test.
|
||||
* gcc.dg/cpp/multiline.c: New test.
|
||||
|
||||
2000-12-17 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* g++.old-deja/g++.other/syshdr1.C: Update.
|
||||
* gcc.dg/cpp/lineflags.c: Remove temporarily.
|
||||
* g++.old-deja/g++.other/syshdr1.C: Update.
|
||||
* gcc.dg/cpp/lineflags.c: Remove temporarily.
|
||||
|
||||
2000-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
|
@ -1415,7 +1422,7 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-11 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/if-2.c: Separate tests so that which failed is obvious.
|
||||
* gcc.dg/cpp/if-2.c: Separate tests so that which failed is obvious.
|
||||
|
||||
2000-12-09 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
|
@ -1423,10 +1430,10 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-09 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/lineflags.c: New tests.
|
||||
* gcc.dg/cpp/poison.c: Update.
|
||||
* gcc.dg/cpp/redef2.c: Update.
|
||||
* gcc.dg/cpp/skipping.c: New test.
|
||||
* gcc.dg/cpp/lineflags.c: New tests.
|
||||
* gcc.dg/cpp/poison.c: Update.
|
||||
* gcc.dg/cpp/redef2.c: Update.
|
||||
* gcc.dg/cpp/skipping.c: New test.
|
||||
|
||||
2000-12-07 Geoffrey Keating <geoffk@redhat.com>
|
||||
|
||||
|
@ -1434,12 +1441,12 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-07 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/wtr-aggr-init-1.c, wtr-escape-1.c, wtr-int-type-1.c,
|
||||
wtr-label-1.c, wtr-static-1.c, wtr-strcat-1.c, wtr-suffix-1.c,
|
||||
wtr-switch-1.c, wtr-unary-plus-1.c, wtr-union-init-1.c
|
||||
wtr-union-init-2.c, wtr-union-init-3.c: Update.
|
||||
* gcc.dg/cpp/extratokens.c, tr-warn4.c, tr-warn5.c, tr-warn6.c:
|
||||
Update.
|
||||
* gcc.dg/wtr-aggr-init-1.c, wtr-escape-1.c, wtr-int-type-1.c,
|
||||
wtr-label-1.c, wtr-static-1.c, wtr-strcat-1.c, wtr-suffix-1.c,
|
||||
wtr-switch-1.c, wtr-unary-plus-1.c, wtr-union-init-1.c
|
||||
wtr-union-init-2.c, wtr-union-init-3.c: Update.
|
||||
* gcc.dg/cpp/extratokens.c, tr-warn4.c, tr-warn5.c, tr-warn6.c:
|
||||
Update.
|
||||
|
||||
2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
|
@ -1514,8 +1521,8 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-04 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/assert_trad1.c, assert_trad2.c, assert_trad3.c:
|
||||
New tests.
|
||||
* gcc.dg/cpp/assert_trad1.c, assert_trad2.c, assert_trad3.c:
|
||||
New tests.
|
||||
|
||||
2000-12-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
|
@ -1528,7 +1535,7 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-03 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/macro6.c: New test cases.
|
||||
* gcc.dg/cpp/macro6.c: New test cases.
|
||||
|
||||
2000-12-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
|
@ -1548,19 +1555,19 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-02 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* g++.old-deja/g++.other/externC4.C,
|
||||
g++.old-deja/g++.other/friend10.C: New tests.
|
||||
* g++.old-deja/g++.other/externC4.C,
|
||||
g++.old-deja/g++.other/friend10.C: New tests.
|
||||
|
||||
2000-12-02 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* g++.old-deja/g++.other/instan2.C
|
||||
* g++.old-deja/g++.other/instan3.C: New test.
|
||||
* g++.old-deja/g++.other/instan2.C
|
||||
* g++.old-deja/g++.other/instan3.C: New test.
|
||||
|
||||
2000-12-02 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/c++98.c,c++98-pedantic.c,c89.c,c89-pedantic.c,
|
||||
c94.c,c94-pedantic.c,c99.c,c99-pedantic.c,gnuc89.c,gnuc89-pedantic.c,
|
||||
gnuc99.c,gnuc99-pedantic.c: New tests.
|
||||
* gcc.dg/cpp/c++98.c,c++98-pedantic.c,c89.c,c89-pedantic.c,
|
||||
c94.c,c94-pedantic.c,c99.c,c99-pedantic.c,gnuc89.c,gnuc89-pedantic.c,
|
||||
gnuc99.c,gnuc99-pedantic.c: New tests.
|
||||
|
||||
2000-12-01 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
|
@ -1569,9 +1576,9 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-12-01 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/20000720-1.S: Remove duplicate testcase.
|
||||
* gcc.dg/cpp/poison.c: Update.
|
||||
* gcc.dg/cpp/spacing1.c: New testcase for all spacing issues.
|
||||
* gcc.dg/cpp/20000720-1.S: Remove duplicate testcase.
|
||||
* gcc.dg/cpp/poison.c: Update.
|
||||
* gcc.dg/cpp/spacing1.c: New testcase for all spacing issues.
|
||||
|
||||
2000-12-01 Toon Moene <toon@moene.indiv.nluug.nl>
|
||||
|
||||
|
@ -1727,7 +1734,7 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-11-22 Loren J. Rittle <ljrittle@acm.org>
|
||||
|
||||
* g++.old-deja/g++.robertl/eb39.C: Don't include libio.h.
|
||||
* g++.old-deja/g++.robertl/eb39.C: Don't include libio.h.
|
||||
|
||||
2000-11-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -1747,7 +1754,7 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-11-21 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/integrated1.c: Remove.
|
||||
* gcc.dg/cpp/integrated1.c: Remove.
|
||||
|
||||
2000-11-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -1773,8 +1780,8 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-11-20 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/paste2.c: Update test.
|
||||
* objc/execute/paste.m: New test.
|
||||
* gcc.dg/cpp/paste2.c: Update test.
|
||||
* objc/execute/paste.m: New test.
|
||||
|
||||
2000-11-20 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
|
@ -1853,8 +1860,8 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-11-15 Neil Booth <neilb@earthling.net>
|
||||
|
||||
gcc.dg/cpp/_Pragma1.c: Update.
|
||||
gcc.dg/cpp/_Pragma2.c: New test.
|
||||
gcc.dg/cpp/_Pragma1.c: Update.
|
||||
gcc.dg/cpp/_Pragma2.c: New test.
|
||||
|
||||
2000-11-15 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
|
@ -2038,7 +2045,7 @@ Thu Dec 21 22:43:03 2000 J"orn Rennecke <amylaar@redhat.com>
|
|||
|
||||
2000-11-04 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/include2.c: New tests.
|
||||
* gcc.dg/cpp/include2.c: New tests.
|
||||
|
||||
Fri Nov 3 13:32:14 2000 Mark P Mitchell <mark@codesourcery.com>
|
||||
|
||||
|
@ -2092,7 +2099,7 @@ Fri Nov 3 13:32:14 2000 Mark P Mitchell <mark@codesourcery.com>
|
|||
|
||||
2000-10-29 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/macro4.c, macro5.c: New tests.
|
||||
* gcc.dg/cpp/macro4.c, macro5.c: New tests.
|
||||
* mi1.c, mi1c.h: Add null directives to multiple-include test.
|
||||
* mi5.c: Test multiple includes work with -C.
|
||||
* trigraphs.c: Test ^= version.
|
||||
|
@ -2341,7 +2348,7 @@ Mon Oct 9 23:32:06 MET DST 2000 Jan Hubicka <jh@suse.cz>
|
|||
|
||||
2000-09-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c-torture/compile/20000923-1.c: New test.
|
||||
* gcc.c-torture/compile/20000923-1.c: New test.
|
||||
|
||||
2000-09-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
|
||||
|
||||
|
@ -2473,7 +2480,7 @@ Tue Sep 12 18:32:07 2000 J"orn Rennecke <amylaar@redhat.co.uk>
|
|||
|
||||
2000-09-07 Catherine Moore <clm@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/unroll-1.c: New test.
|
||||
* gcc.c-torture/execute/unroll-1.c: New test.
|
||||
|
||||
2000-09-06 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
/* This is just 920730-1.c compiled with -traditional.
|
||||
See 920730-1t.x. */
|
||||
|
||||
/* It is necessary to undefine __GNUC__ in order to prevent glibc 2.2's
|
||||
sys/cdefs.h from issuing an #error. Do Not Ask. */
|
||||
#undef __GNUC__
|
||||
|
||||
#include "920730-1.c"
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Nathan Sidwell 8 May 2001 <nathan@codesourcery.com> */
|
||||
|
||||
/* Test of prohibition on directives which result from macro expansion.
|
||||
See also direct2s.c */
|
||||
|
||||
/* { dg-do compile } */
|
||||
|
||||
#define HASH #
|
||||
#define HASHDEFINE #define
|
||||
#define HASHINCLUDE #include
|
||||
|
||||
HASH include "somerandomfile" /*{ dg-error "syntax|parse" "non-include" }*/
|
||||
/*{ dg-bogus "No such" "don't execute non-include" { target *-*-* } 13 }*/
|
||||
HASHINCLUDE <somerandomfile> /*{ dg-error "syntax|parse" "non-include 2" }*/
|
||||
/*{ dg-bogus "No such" "don't execute non-include 2" { target *-*-* } 15 }*/
|
||||
|
||||
void g ()
|
||||
{
|
||||
HASH define X 1 /* { dg-error "syntax error" "# from macro" } */
|
||||
HASHDEFINE Y 1 /* { dg-error "syntax error" "#define from macro" } */
|
||||
}
|
||||
|
||||
#pragma GCC dependency "direct2.c"
|
||||
#
|
||||
|
||||
void f ()
|
||||
{
|
||||
int i = X; /* { dg-error "undeclared|for each" "no macro X" } */
|
||||
int j = Y; /* { dg-error "undeclared|for each" "no macro Y" } */
|
||||
}
|
||||
|
||||
#define slashstar /##*
|
||||
#define starslash *##/
|
||||
|
||||
slashstar starslash /* { dg-error "parse error" "not a comment" } */
|
||||
/* { dg-warning "does not give" "paste warning(s)" { target *-*-* } 36 } */
|
|
@ -0,0 +1,39 @@
|
|||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Nathan Sidwell 8 May 2001 <nathan@codesourcery.com> */
|
||||
|
||||
/* Test of prohibition on directives which result from macro
|
||||
expansion. Same as direct2.c, with -save-temps applied; results
|
||||
should be identical. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-save-temps -ansi -pedantic-errors" } */
|
||||
|
||||
#define HASH #
|
||||
#define HASHDEFINE #define
|
||||
#define HASHINCLUDE #include
|
||||
|
||||
HASH include "somerandomfile" /*{ dg-error "syntax|parse" "non-include" }*/
|
||||
/*{ dg-bogus "No such" "don't execute non-include" { target *-*-* } 15 }*/
|
||||
HASHINCLUDE <somerandomfile> /*{ dg-error "syntax|parse" "non-include 2" }*/
|
||||
/*{ dg-bogus "No such" "don't execute non-include 2" { target *-*-* } 17 }*/
|
||||
|
||||
void g ()
|
||||
{
|
||||
HASH define X 1 /* { dg-error "syntax error" "# from macro" } */
|
||||
HASHDEFINE Y 1 /* { dg-error "syntax error" "#define from macro" } */
|
||||
}
|
||||
|
||||
#pragma GCC dependency "direct2s.c"
|
||||
#
|
||||
|
||||
void f ()
|
||||
{
|
||||
int i = X; /* { dg-error "undeclared|for each" "no macro X" } */
|
||||
int j = Y; /* { dg-error "undeclared|for each" "no macro Y" } */
|
||||
}
|
||||
|
||||
#define slashstar /##*
|
||||
#define starslash *##/
|
||||
|
||||
slashstar starslash /* { dg-error "parse error" "not a comment" } */
|
||||
/* { dg-warning "does not give" "paste warning(s)" { target *-*-* } 38 } */
|
108
gcc/tradcpp.c
108
gcc/tradcpp.c
|
@ -105,6 +105,7 @@ static const char *user_label_prefix;
|
|||
It is zero for rescanning results of macro expansion
|
||||
and for expanding macro arguments. */
|
||||
#define INPUT_STACK_MAX 200
|
||||
struct file_name_list;
|
||||
struct file_buf {
|
||||
const char *fname;
|
||||
int lineno;
|
||||
|
@ -120,6 +121,8 @@ struct file_buf {
|
|||
struct if_stack *if_stack;
|
||||
/* Object to be freed at end of input at this level. */
|
||||
U_CHAR *free_ptr;
|
||||
/* Position to start scanning for #include_next in this file. */
|
||||
struct file_name_list *next_header_dir;
|
||||
} instack[INPUT_STACK_MAX];
|
||||
|
||||
typedef struct file_buf FILE_BUF;
|
||||
|
@ -240,6 +243,7 @@ union hashval {
|
|||
enum node_type {
|
||||
T_DEFINE = 1, /* `#define' */
|
||||
T_INCLUDE, /* `#include' */
|
||||
T_INCLUDE_NEXT,/* `#include_next' */
|
||||
T_IFDEF, /* `#ifdef' */
|
||||
T_IFNDEF, /* `#ifndef' */
|
||||
T_IF, /* `#if' */
|
||||
|
@ -358,6 +362,7 @@ static void do_error PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
|||
static void do_warning PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_line PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_include PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_include_next PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_undef PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_if PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
static void do_ifdef PARAMS ((U_CHAR *, U_CHAR *, FILE_BUF *));
|
||||
|
@ -415,7 +420,10 @@ static void make_assertion PARAMS ((const char *));
|
|||
|
||||
static void grow_outbuf PARAMS ((FILE_BUF *, int));
|
||||
static int handle_directive PARAMS ((FILE_BUF *, FILE_BUF *));
|
||||
static void finclude PARAMS ((int, const char *, FILE_BUF *));
|
||||
static void process_include PARAMS ((struct file_name_list *,
|
||||
const U_CHAR *, int, int, FILE_BUF *));
|
||||
static void finclude PARAMS ((int, const char *,
|
||||
struct file_name_list *, FILE_BUF *));
|
||||
static void init_dependency_output PARAMS ((void));
|
||||
static void rescan PARAMS ((FILE_BUF *, int));
|
||||
static void newline_fix PARAMS ((U_CHAR *));
|
||||
|
@ -450,6 +458,7 @@ struct directive directive_table[] = {
|
|||
{ 4, do_elif, "elif", T_ELIF },
|
||||
{ 5, do_error, "error", T_ERROR },
|
||||
{ 7, do_warning, "warning", T_WARNING },
|
||||
{ 12, do_include_next, "include_next", T_INCLUDE_NEXT },
|
||||
{ 6, do_assert, "assert", T_ASSERT },
|
||||
{ 8, do_unassert,"unassert",T_UNASSERT},
|
||||
{ -1, 0, "", T_UNUSED},
|
||||
|
@ -853,7 +862,7 @@ main (argc, argv)
|
|||
if (print_deps)
|
||||
deps_add_dep (deps, pend[i].arg);
|
||||
|
||||
finclude (fd, pend[i].arg, &outbuf);
|
||||
finclude (fd, pend[i].arg, 0, &outbuf);
|
||||
}
|
||||
indepth--;
|
||||
no_output--;
|
||||
|
@ -2278,22 +2287,17 @@ do_include (buf, limit, op)
|
|||
U_CHAR *buf, *limit;
|
||||
FILE_BUF *op;
|
||||
{
|
||||
char *fname; /* Dynamically allocated fname buffer */
|
||||
U_CHAR *fbeg, *fend; /* Beginning and end of fname */
|
||||
|
||||
struct file_name_list *stackp = include; /* Chain of dirs to search */
|
||||
struct file_name_list dsp[1]; /* First in chain, if #include "..." */
|
||||
int flen;
|
||||
|
||||
int f; /* file number */
|
||||
|
||||
int retried = 0; /* Have already tried macro
|
||||
expanding the include line*/
|
||||
FILE_BUF trybuf; /* It got expanded into here */
|
||||
int system_header_p = 0; /* 0 for "...", 1 for <...> */
|
||||
|
||||
f= -1; /* JF we iz paranoid! */
|
||||
|
||||
get_filename:
|
||||
|
||||
fbeg = buf;
|
||||
|
@ -2374,6 +2378,90 @@ get_filename:
|
|||
}
|
||||
|
||||
flen = fend - fbeg;
|
||||
process_include (stackp, fbeg, flen, system_header_p, op);
|
||||
}
|
||||
|
||||
static void
|
||||
do_include_next (buf, limit, op)
|
||||
U_CHAR *buf, *limit;
|
||||
FILE_BUF *op;
|
||||
{
|
||||
U_CHAR *fbeg, *fend; /* Beginning and end of fname */
|
||||
|
||||
struct file_name_list *stackp; /* Chain of dirs to search */
|
||||
int flen;
|
||||
|
||||
int retried = 0; /* Have already tried macro
|
||||
expanding the include line*/
|
||||
FILE_BUF trybuf; /* It got expanded into here */
|
||||
int system_header_p = 0; /* 0 for "...", 1 for <...> */
|
||||
|
||||
/* Treat as plain #include if we don't know where to start
|
||||
looking. */
|
||||
stackp = instack[indepth].next_header_dir;
|
||||
if (stackp == 0)
|
||||
{
|
||||
do_include (buf, limit, op);
|
||||
return;
|
||||
}
|
||||
|
||||
get_filename:
|
||||
|
||||
fbeg = buf;
|
||||
SKIP_WHITE_SPACE (fbeg);
|
||||
/* Discard trailing whitespace so we can easily see
|
||||
if we have parsed all the significant chars we were given. */
|
||||
while (limit != fbeg && is_nvspace (limit[-1])) limit--;
|
||||
|
||||
switch (*fbeg++) {
|
||||
case '\"':
|
||||
fend = fbeg;
|
||||
while (fend != limit && *fend != '\"')
|
||||
fend++;
|
||||
if (*fend == '\"' && fend + 1 == limit)
|
||||
break;
|
||||
goto fail;
|
||||
|
||||
case '<':
|
||||
fend = fbeg;
|
||||
while (fend != limit && *fend != '>') fend++;
|
||||
if (*fend == '>' && fend + 1 == limit) {
|
||||
system_header_p = 1;
|
||||
break;
|
||||
}
|
||||
goto fail;
|
||||
|
||||
default:
|
||||
fail:
|
||||
if (retried) {
|
||||
error ("#include expects \"fname\" or <fname>");
|
||||
return;
|
||||
} else {
|
||||
trybuf = expand_to_temp_buffer (buf, limit, 0);
|
||||
buf = (U_CHAR *) alloca (trybuf.bufp - trybuf.buf + 1);
|
||||
memcpy (buf, trybuf.buf, trybuf.bufp - trybuf.buf);
|
||||
limit = buf + (trybuf.bufp - trybuf.buf);
|
||||
free (trybuf.buf);
|
||||
retried++;
|
||||
goto get_filename;
|
||||
}
|
||||
}
|
||||
|
||||
flen = fend - fbeg;
|
||||
process_include (stackp, fbeg, flen, system_header_p, op);
|
||||
}
|
||||
|
||||
static void
|
||||
process_include (stackp, fbeg, flen, system_header_p, op)
|
||||
struct file_name_list *stackp;
|
||||
const U_CHAR *fbeg;
|
||||
int flen;
|
||||
int system_header_p;
|
||||
FILE_BUF *op;
|
||||
{
|
||||
char *fname;
|
||||
int f = -1; /* file number */
|
||||
|
||||
fname = (char *) alloca (max_include_len + flen + 2);
|
||||
/* + 2 above for slash and terminating null. */
|
||||
|
||||
|
@ -2472,7 +2560,7 @@ get_filename:
|
|||
system_include_depth++;
|
||||
|
||||
/* Actually process the file. */
|
||||
finclude (f, fname, op);
|
||||
finclude (f, fname, stackp->next, op);
|
||||
|
||||
if (system_header_p)
|
||||
system_include_depth--;
|
||||
|
@ -2485,9 +2573,10 @@ get_filename:
|
|||
with output to OP. */
|
||||
|
||||
static void
|
||||
finclude (f, fname, op)
|
||||
finclude (f, fname, nhd, op)
|
||||
int f;
|
||||
const char *fname;
|
||||
struct file_name_list *nhd;
|
||||
FILE_BUF *op;
|
||||
{
|
||||
int st_mode;
|
||||
|
@ -2506,6 +2595,7 @@ finclude (f, fname, op)
|
|||
fp->length = 0;
|
||||
fp->lineno = 1;
|
||||
fp->if_stack = if_stack;
|
||||
fp->next_header_dir = nhd;
|
||||
|
||||
if (S_ISREG (st_mode)) {
|
||||
fp->buf = (U_CHAR *) xmalloc (st_size + 2);
|
||||
|
|
Loading…
Reference in New Issue