4.4BSD/usr/src/contrib/gcc-2.3.3/config/next.c
/* next.c: Functions for NeXT as target machine for GNU C compiler. */
/* Note that the include below means that we can't debug routines in
m68k.c when running on a COFF system. */
#include "m68k.c"
/* Make everything that used to go in the text section really go there. */
int flag_no_mach_text_sections = 0;
#define OPT_STRCMP(opt) (!strncmp (opt, p, sizeof (opt)-1))
/* 1 if handle_pragma has been called yet. */
static int pragma_initialized;
/* Initial setting of `optimize'. */
static int initial_optimize_flag;
extern char *get_directive_line ();
/* Called from check_newline via the macro HANDLE_PRAGMA.
FINPUT is the source file input stream. */
void
handle_pragma (finput)
FILE *finput;
{
register char *p = get_directive_line (finput);
/* Record initial setting of optimize flag, so we can restore it. */
if (!pragma_initialized)
{
pragma_initialized = 1;
initial_optimize_flag = optimize;
}
if (OPT_STRCMP ("CC_OPT_ON"))
optimize = 1, obey_regdecls = 0;
else if (OPT_STRCMP ("CC_OPT_OFF"))
optimize = 0, obey_regdecls = 1;
else if (OPT_STRCMP ("CC_OPT_RESTORE"))
{
extern int initial_optimize_flag;
if (optimize != initial_optimize_flag)
{
if (initial_optimize_flag)
obey_regdecls = 0;
else
obey_regdecls = 1;
optimize = initial_optimize_flag;
}
}
else if (OPT_STRCMP ("CC_WRITABLE_STRINGS"))
flag_writable_strings = 1;
else if (OPT_STRCMP ("CC_NON_WRITABLE_STRINGS"))
flag_writable_strings = 0;
else if (OPT_STRCMP("CC_NO_MACH_TEXT_SECTIONS"))
flag_no_mach_text_sections = 1;
}