cpplib.c (detect_if_not_defined): New function.
1999-08-25 13:51 -0700 Jim Meyering <meyering@ascend.com> * cpplib.c (detect_if_not_defined): New function. (do_if): Use it to detect potential once-only headers. From-SVN: r28877
This commit is contained in:
parent
f362bcef80
commit
1d0e51ba33
|
@ -1,3 +1,8 @@
|
|||
1999-08-25 13:51 -0700 Jim Meyering <meyering@ascend.com>
|
||||
|
||||
* cpplib.c (detect_if_not_defined): New function.
|
||||
(do_if): Use it to detect potential once-only headers.
|
||||
|
||||
Wed Aug 25 14:00:18 1999 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* c-common.c (combine_strings): Always set TREE_CONSTANT.
|
||||
|
@ -659,7 +664,7 @@ Fri Aug 20 22:32:17 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
|
|||
* gencheck.c: Do not define any *_CHECK1 macros.
|
||||
|
||||
Thu Aug 19 14:42:38 1999 Mike Stump <mrs@wrs.com>
|
||||
Mark Mitchell <mark@codesourcery.com>
|
||||
Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* c-common.c (c_get_alias_set): Fix support for poitners and
|
||||
references.
|
||||
|
@ -2147,8 +2152,8 @@ Thu Jul 29 09:21:42 1999 Nick Clifton <nickc@cygnus.com>
|
|||
|
||||
Wed Jul 28 12:50:48 1999 Geoff Keating <geoffk@cygnus.com>
|
||||
|
||||
* config/mips/mips.c: system.h handles MIN and MAX, don't undefine
|
||||
them here.
|
||||
* config/mips/mips.c: system.h handles MIN and MAX, don't undefine
|
||||
them here.
|
||||
|
||||
Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
|
@ -2156,8 +2161,8 @@ Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
|
|||
proper mode in the condition string.
|
||||
(icacheflush, dcacheflush): Remove modes from match_operands.
|
||||
|
||||
* pa.c (emit_move_sequence): Always convert scratch_reg to the
|
||||
proper mode before using it.
|
||||
* pa.c (emit_move_sequence): Always convert scratch_reg to the
|
||||
proper mode before using it.
|
||||
|
||||
* pa.md (adddi3, subdi3): Turn into a define_expand/define_insn
|
||||
pair.
|
||||
|
@ -2174,7 +2179,7 @@ Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
|
|||
* pa.md (call, call_value): Use "word_mode" instead of "SImode" as
|
||||
needed.
|
||||
|
||||
* README: Update.
|
||||
* README: Update.
|
||||
|
||||
Wed Jul 28 11:28:04 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
|
@ -2772,7 +2777,7 @@ Mon Jul 19 09:36:27 1999 Bernd Schmidt <bernds@cygnus.co.uk>
|
|||
dialects.
|
||||
|
||||
1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
|
||||
* gcc.texi: Update e-mail addresses and URLs to gcc.gnu.org.
|
||||
Removed paragraph about compression of files and size limitation,
|
||||
duplicated in the FAQ. Use gcc-patches for posting patches.
|
||||
|
@ -2782,8 +2787,8 @@ Mon Jul 19 09:36:27 1999 Bernd Schmidt <bernds@cygnus.co.uk>
|
|||
|
||||
1999-07-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* Makefile.in (stmp-multilib-sub): Make the files extracted
|
||||
from $(LIBGCC1) writable.
|
||||
* Makefile.in (stmp-multilib-sub): Make the files extracted
|
||||
from $(LIBGCC1) writable.
|
||||
|
||||
Sat Jul 17 14:25:46 1999 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
|
@ -3126,7 +3131,7 @@ Fri Jul 2 01:36:36 1999 Robert Lipe <robertlipe@usa.net>
|
|||
ntohs.
|
||||
|
||||
Fri Jul 2 00:46:47 1999 Richard Henderson <rth@cygnus.com>
|
||||
Jeff Law <law@cygnus.com>
|
||||
Jeff Law <law@cygnus.com>
|
||||
|
||||
* ginclude/varargs.h (va_dcl): Use word_mode for type of
|
||||
__builtin_va_list.
|
||||
|
@ -3549,7 +3554,7 @@ Fri Jun 18 07:02 1999 Bruce Korb <ddsinc09@ix.netcom.com>
|
|||
|
||||
Thu Jun 17 15:06:10 PDT 1999 Don Lindsay <dlindsay@cygnus.com>
|
||||
|
||||
* added support for -mpcrel (PC relative addressing for m68k)
|
||||
* added support for -mpcrel (PC relative addressing for m68k)
|
||||
based on code done by Michael Tiemann <tiemann@axon.cygnus.com>.
|
||||
* invoke.texi (m68000 options): Add documentation for -mpcrel flag.
|
||||
* m68k.c (print_operand_address): Handle 32-bit PIC case.
|
||||
|
@ -3697,8 +3702,8 @@ Mon Jun 14 17:26:40 1999 David Edelsohn <edelsohn@gnu.org>
|
|||
|
||||
Mon Jun 14 12:57:38 1999 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* combine.c (simplify_logical, case AND): Only call
|
||||
simplify_and_const_int if the mode is no wider than HOST_WIDE_INT
|
||||
* combine.c (simplify_logical, case AND): Only call
|
||||
simplify_and_const_int if the mode is no wider than HOST_WIDE_INT
|
||||
or the constant is positive.
|
||||
|
||||
Mon Jun 14 11:43:41 1999 Nick Clifton <nickc@cygnus.com>
|
||||
|
@ -3885,7 +3890,7 @@ Mon Jun 7 22:05:03 1999 Mark Kettenis <kettenis@gnu.org>
|
|||
* fixinc/fixincl.x, fixinc/fixincl.sh: Rebuilt.
|
||||
|
||||
Mon Jun 7 20:34:20 1999 Robert Lipe <robertlipe@usa.net>
|
||||
Jeffrey A Law (law@cygnus.com)
|
||||
Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* varasm.c (assemble_start_function): Remove the function
|
||||
from the pending weak decls list when we define a function.
|
||||
|
@ -4017,8 +4022,8 @@ Thu Jun 3 01:19:03 1999 Jeffrey A Law (law@cygnus.com)
|
|||
|
||||
Wed Jun 2 15:44:15 1999 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
Revert this change:
|
||||
* fold-const.c (fold): STRIP_NOPS when deciding whether or not
|
||||
Revert this change:
|
||||
* fold-const.c (fold): STRIP_NOPS when deciding whether or not
|
||||
something is a candidate for optimize_bit_field_compare.
|
||||
|
||||
Wed Jun 2 21:53:05 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
@ -4094,8 +4099,8 @@ Mon May 31 15:23:23 1999 Richard Henderson <rth@cygnus.com>
|
|||
|
||||
Mon May 31 11:48:07 1999 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cccp.c (handle_directive): Handle backslash-newlines in quoted
|
||||
strings correctly.
|
||||
* cccp.c (handle_directive): Handle backslash-newlines in quoted
|
||||
strings correctly.
|
||||
|
||||
Mon May 31 09:36:11 1999 Cort Dougan <cort@cs.nmt.edu>
|
||||
|
||||
|
@ -4118,7 +4123,7 @@ Mon May 31 00:46:17 1999 Jeffrey A Law (law@cygnus.com)
|
|||
* configure.in (native gas tests): Search for an assembler in the
|
||||
same manner that the installed compiler will.
|
||||
* configure: Rebuilt.
|
||||
* tm.texi (MD_EXEC_PREFIX): Note need to update configure.in too.
|
||||
* tm.texi (MD_EXEC_PREFIX): Note need to update configure.in too.
|
||||
|
||||
* alias.c (find_base_term): Improve handling of addresses
|
||||
constructed from binary operations.
|
||||
|
@ -4158,12 +4163,12 @@ Fri May 28 03:47:03 1999 Eric Raskin (ehr@listworks.com)
|
|||
|
||||
Fri May 28 03:41:02 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
* rs6000/sysv4.h (CC1_SPEC): Add support for -profile
|
||||
(LIB_LINUX_SPEC): Likewise.
|
||||
(LIB_LINUX_SPEC): Add support for -pthread
|
||||
(CPP_OS_LINUX_SPEC): Likewise.
|
||||
(CPP_SYSV_SPEC): Avoid redefinitions if both -fpic and -fPIC are
|
||||
specified.
|
||||
* rs6000/sysv4.h (CC1_SPEC): Add support for -profile
|
||||
(LIB_LINUX_SPEC): Likewise.
|
||||
(LIB_LINUX_SPEC): Add support for -pthread
|
||||
(CPP_OS_LINUX_SPEC): Likewise.
|
||||
(CPP_SYSV_SPEC): Avoid redefinitions if both -fpic and -fPIC are
|
||||
specified.
|
||||
|
||||
Thu May 27 13:04:52 1999 H.J. Lu (hjl@gnu.org)
|
||||
|
||||
|
@ -4210,7 +4215,7 @@ Wed May 26 14:18:05 1999 Richard Henderson <rth@cygnus.com>
|
|||
|
||||
Wed May 26 09:53:05 1999 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* fold-const.c (fold): STRIP_NOPS when deciding whether or not
|
||||
* fold-const.c (fold): STRIP_NOPS when deciding whether or not
|
||||
something is a candidate for optimize_bit_field_compare.
|
||||
|
||||
Wed May 26 09:40:02 1999 Mark Mitchell <mark@codesourcery.com>
|
||||
|
@ -4279,7 +4284,7 @@ Mon May 24 01:02:12 1999 Mark Mitchell <mark@codesourcery.com>
|
|||
|
||||
Sun May 23 20:31:16 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* loop.c (strength_reduce): Grow reg_single_usage as needed.
|
||||
* loop.c (strength_reduce): Grow reg_single_usage as needed.
|
||||
|
||||
Sun May 23 10:13:20 1999 David O'Brien <obrien@FreeBSD.org>
|
||||
|
||||
|
|
78
gcc/cpplib.c
78
gcc/cpplib.c
|
@ -1577,6 +1577,81 @@ do_sccs (pfile, keyword)
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* We've found an `#if' directive. If the only thing before it in
|
||||
this file is white space, and if it is of the form
|
||||
`#if ! defined SYMBOL', then SYMBOL is a possible controlling macro
|
||||
for inclusion of this file. (See redundant_include_p in cppfiles.c
|
||||
for an explanation of controlling macros.) If so, return a
|
||||
malloc'd copy of SYMBOL. Otherwise, return NULL. */
|
||||
|
||||
static U_CHAR *
|
||||
detect_if_not_defined (pfile)
|
||||
cpp_reader *pfile;
|
||||
{
|
||||
U_CHAR *control_macro = 0;
|
||||
|
||||
if (pfile->only_seen_white == 2)
|
||||
{
|
||||
char *ident;
|
||||
enum cpp_token token;
|
||||
int base_offset;
|
||||
int token_offset;
|
||||
int need_rparen = 0;
|
||||
|
||||
/* Save state required for restore. */
|
||||
pfile->no_macro_expand++;
|
||||
parse_set_mark (pfile);
|
||||
base_offset = CPP_WRITTEN (pfile);
|
||||
|
||||
/* Look for `!', */
|
||||
if (get_directive_token (pfile) != CPP_OTHER
|
||||
|| CPP_WRITTEN (pfile) != (size_t) base_offset + 1
|
||||
|| CPP_PWRITTEN (pfile)[-1] != '!')
|
||||
goto restore;
|
||||
|
||||
/* ...then `defined', */
|
||||
token_offset = CPP_WRITTEN (pfile);
|
||||
token = get_directive_token (pfile);
|
||||
if (token != CPP_NAME)
|
||||
goto restore;
|
||||
ident = pfile->token_buffer + token_offset;
|
||||
CPP_NUL_TERMINATE (pfile);
|
||||
if (strcmp (ident, "defined"))
|
||||
goto restore;
|
||||
|
||||
/* ...then an optional '(' and the name, */
|
||||
token_offset = CPP_WRITTEN (pfile);
|
||||
token = get_directive_token (pfile);
|
||||
if (token == CPP_LPAREN)
|
||||
{
|
||||
token_offset = CPP_WRITTEN (pfile);
|
||||
token = get_directive_token (pfile);
|
||||
if (token != CPP_NAME)
|
||||
goto restore;
|
||||
need_rparen = 1;
|
||||
}
|
||||
else if (token != CPP_NAME)
|
||||
goto restore;
|
||||
|
||||
ident = pfile->token_buffer + token_offset;
|
||||
CPP_NUL_TERMINATE (pfile);
|
||||
|
||||
/* ...then the ')', if necessary, */
|
||||
if ((!need_rparen || get_directive_token (pfile) == CPP_RPAREN)
|
||||
/* ...and make sure there's nothing else on the line. */
|
||||
&& get_directive_token (pfile) == CPP_VSPACE)
|
||||
control_macro = xstrdup (ident);
|
||||
|
||||
restore:
|
||||
CPP_SET_WRITTEN (pfile, base_offset);
|
||||
pfile->no_macro_expand--;
|
||||
parse_goto_mark (pfile);
|
||||
}
|
||||
|
||||
return control_macro;
|
||||
}
|
||||
|
||||
/*
|
||||
* handle #if command by
|
||||
* 1) inserting special `defined' keyword into the hash table
|
||||
|
@ -1595,8 +1670,9 @@ do_if (pfile, keyword)
|
|||
cpp_reader *pfile;
|
||||
struct directive *keyword ATTRIBUTE_UNUSED;
|
||||
{
|
||||
U_CHAR *control_macro = detect_if_not_defined (pfile);
|
||||
HOST_WIDEST_INT value = eval_if_expression (pfile);
|
||||
conditional_skip (pfile, value == 0, T_IF, NULL_PTR);
|
||||
conditional_skip (pfile, value == 0, T_IF, control_macro);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue