aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppmacro.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@codesourcery.com>2002-05-16 19:03:02 +0000
committerZack Weinberg <zack@gcc.gnu.org>2002-05-16 19:03:02 +0000
commit5279d7394efe3e6d39e9c5f0bbb066e63f4cf398 (patch)
tree7ba2394a66b4c75f323247f002ba280c373fb85a /gcc/cppmacro.c
parent62e6ca55bd6a235d9feccd4ac48c2b89e0bc32e5 (diff)
downloadgcc-5279d7394efe3e6d39e9c5f0bbb066e63f4cf398.zip
gcc-5279d7394efe3e6d39e9c5f0bbb066e63f4cf398.tar.gz
gcc-5279d7394efe3e6d39e9c5f0bbb066e63f4cf398.tar.bz2
c-common.c (STDC_0_IN_SYSTEM_HEADERS, [...]): Default-define here.
* c-common.c (STDC_0_IN_SYSTEM_HEADERS, REGISTER_PREFIX): Default-define here. (builtin_define_with_value): Can now wrap the expansion in quotation marks if such is wanted. (cb_register_builtins): Update calls to builtin_define_with_value. Define __REGISTER_PREFIX__, __USER_LABEL_PREFIX__, and __VERSION__ here. (c_common_init): Set options->stdc_0_in_system_headers. * c-lex.h: Update prototype of builtin_define_with_value. * cppdefault.h: Remove default definitions of USER_LABEL_PREFIX and REGISTER_PREFIX. * cppinit.c (VERS, ULP, C, X): Kill. (builtin_array): Remove entries for __VERSION__, __USER_LABEL_PREFIX__, __REGISTER_PREFIX__, and __HAVE_BUILTIN_SETJMP__. Make __STDC__ always a builtin, not a constant. (init_builtins): Kill off a bunch of now-dead code. (COMMAND_LINE_OPTIONS): Remove -fleading-underscore and -fno-leading-underscore. (cpp_handle_option): Remove code to set user_label_prefix. (cpp_post_options): Likewise. * cpplib.h (struct cpp_options): Remove user_label_prefix. (stdc_0_in_system_headers): New. * cppmacro.c (builtin_macro): Check CPP_OPTION (pfile, stdc_0_in_system_headers) too to decide the value of __STDC__. * tradcpp.c (user_label_prefix): Kill. (main): Remove code handling -f(no-)leading-underscore. (initialize_builtins): Don't define __REGISTER_PREFIX__ or __USER_LABEL_PREFIX__. (install_value): Wrap compound statement in dummy loop so the macro works properly in an if statement. From-SVN: r53525
Diffstat (limited to 'gcc/cppmacro.c')
-rw-r--r--gcc/cppmacro.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c
index f9c935f..c7a08f2 100644
--- a/gcc/cppmacro.c
+++ b/gcc/cppmacro.c
@@ -172,10 +172,20 @@ builtin_macro (pfile, node)
pfile->cur_token[-1].line));
break;
+ /* __STDC__ has the value 1 under normal circumstances.
+ However, if (a) we are in a system header, (b) the option
+ stdc_0_in_system_headers is true, and (c) __STRICT_ANSI__ is
+ not defined, then it has the value 0. */
case BT_STDC:
{
- int stdc = (!CPP_IN_SYSTEM_HEADER (pfile)
- || pfile->spec_nodes.n__STRICT_ANSI__->type != NT_VOID);
+ int stdc;
+ if (CPP_IN_SYSTEM_HEADER (pfile)
+ && CPP_OPTION (pfile, stdc_0_in_system_headers)
+ && pfile->spec_nodes.n__STRICT_ANSI__->type == NT_VOID)
+ stdc = 0;
+ else
+ stdc = 1;
+
result = new_number_token (pfile, stdc);
}
break;