Commit f246a305 by Richard Stallman

*** empty log message ***

From-SVN: r577
parent a609bfc6
...@@ -72,7 +72,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -72,7 +72,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */ #endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
#ifdef XCOFF_DEBUGGING_INFO #ifdef XCOFF_DEBUGGING_INFO
#include "xcoff.h" #include "xcoffout.h"
#endif #endif
/* .stabd code for line number. */ /* .stabd code for line number. */
......
...@@ -144,7 +144,7 @@ expmed,explow,optabs,emit-rtl,insn-emit,jump,cse,loop,flow,stupid,combine ...@@ -144,7 +144,7 @@ expmed,explow,optabs,emit-rtl,insn-emit,jump,cse,loop,flow,stupid,combine
regclass,local-alloc,global-alloc,reload,reload1,insn-peep,final,recog regclass,local-alloc,global-alloc,reload,reload1,insn-peep,final,recog
insn-recog,insn-extract,insn-output,obstack,integrate,caller-save,calls insn-recog,insn-extract,insn-output,obstack,integrate,caller-save,calls
dwarfout,xcoffout,function,insn-attrtab,reorg,sched,sdbout,dbxout,unroll dwarfout,xcoffout,function,insn-attrtab,reorg,sched,sdbout,dbxout,unroll
reg-stack,aux-output,print-rtl,version reg-stack,aux-output,print-rtl,getpwd,version
$! $!
$pur/nolog independent.opt $pur/nolog independent.opt
$! $!
...@@ -261,6 +261,7 @@ $ assign/user insn-attrtab.c sys$output: ...@@ -261,6 +261,7 @@ $ assign/user insn-attrtab.c sys$output:
$ mcr sys$disk:[]genattrtab md $ mcr sys$disk:[]genattrtab md
$ 'CC 'CFLAGS insn-attrtab.c $ 'CC 'CFLAGS insn-attrtab.c
$ 'CC 'CFLAGS aux-output.c $ 'CC 'CFLAGS aux-output.c
$ 'CC 'CFLAGS getpwd.c
$! $!
$compile_cc1: $compile_cc1:
$! $!
......
...@@ -52,6 +52,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -52,6 +52,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "rtl.h" #include "rtl.h"
#include "flags.h" #include "flags.h"
#include "insn-attr.h" #include "insn-attr.h"
#ifdef XCOFF_DEBUGGING_INFO
#include "xcoffout.h"
#endif
#ifdef VMS #ifdef VMS
/* The extra parameters substantially improve the I/O performance. */ /* The extra parameters substantially improve the I/O performance. */
...@@ -183,9 +187,9 @@ enum debug_info_type write_symbols = NO_DEBUG; ...@@ -183,9 +187,9 @@ enum debug_info_type write_symbols = NO_DEBUG;
for the definitions of the different possible levels. */ for the definitions of the different possible levels. */
enum debug_info_level debug_info_level = DINFO_LEVEL_NONE; enum debug_info_level debug_info_level = DINFO_LEVEL_NONE;
#ifdef DBX_DEBUGGING_INFO #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
/* Nonzero means can use our own extensions to DBX format. /* Nonzero means can use our own extensions to DBX format.
Relevant only when write_symbols == DBX_DEBUG. */ Relevant only when write_symbols == DBX_DEBUG or XCOFF_DEBUG. */
int use_gdb_dbx_extensions = 0; int use_gdb_dbx_extensions = 0;
#endif #endif
...@@ -370,6 +374,10 @@ int flag_no_inline; ...@@ -370,6 +374,10 @@ int flag_no_inline;
int flag_gen_aux_info = 0; int flag_gen_aux_info = 0;
/* Specified name of aux-info file. */
static char *aux_info_file_name;
/* Nonzero means make the text shared if supported. */ /* Nonzero means make the text shared if supported. */
int flag_shared_data; int flag_shared_data;
...@@ -445,7 +453,6 @@ struct { char *string; int *variable; int on_value;} f_options[] = ...@@ -445,7 +453,6 @@ struct { char *string; int *variable; int on_value;} f_options[] =
{"keep-inline-functions", &flag_keep_inline_functions, 1}, {"keep-inline-functions", &flag_keep_inline_functions, 1},
{"inline", &flag_no_inline, 0}, {"inline", &flag_no_inline, 0},
{"syntax-only", &flag_syntax_only, 1}, {"syntax-only", &flag_syntax_only, 1},
{"gen-aux-info", &flag_gen_aux_info, 1},
{"shared-data", &flag_shared_data, 1}, {"shared-data", &flag_shared_data, 1},
{"caller-saves", &flag_caller_saves, 1}, {"caller-saves", &flag_caller_saves, 1},
{"pcc-struct-return", &flag_pcc_struct_return, 1}, {"pcc-struct-return", &flag_pcc_struct_return, 1},
...@@ -528,7 +535,8 @@ struct { char *string; int *variable; int on_value;} W_options[] = ...@@ -528,7 +535,8 @@ struct { char *string; int *variable; int on_value;} W_options[] =
{"return-type", &warn_return_type, 1}, {"return-type", &warn_return_type, 1},
{"aggregate-return", &warn_aggregate_return, 1}, {"aggregate-return", &warn_aggregate_return, 1},
{"cast-align", &warn_cast_align, 1}, {"cast-align", &warn_cast_align, 1},
{"uninitialized", &warn_uninitialized, 1} {"uninitialized", &warn_uninitialized, 1},
{"inline", &warn_inline, 1}
}; };
/* Output files for assembler code (real compiler output) /* Output files for assembler code (real compiler output)
...@@ -1287,7 +1295,6 @@ compile_file (name) ...@@ -1287,7 +1295,6 @@ compile_file (name)
tree globals; tree globals;
int start_time; int start_time;
int dump_base_name_length; int dump_base_name_length;
char *aux_info_file_name;
int name_specified = name != 0; int name_specified = name != 0;
...@@ -1345,12 +1352,11 @@ compile_file (name) ...@@ -1345,12 +1352,11 @@ compile_file (name)
if (flag_caller_saves) if (flag_caller_saves)
init_caller_save (); init_caller_save ();
/* If auxilliary info generation is desired, open the output file. */ /* If auxiliary info generation is desired, open the output file.
This goes in the same directory as the source file--unlike
all the other output files. */
if (flag_gen_aux_info) if (flag_gen_aux_info)
{ {
aux_info_file_name = (char *) xmalloc (dump_base_name_length + 6);
strcpy (aux_info_file_name, dump_base_name);
strcat (aux_info_file_name, ".X");
aux_info_file = fopen (aux_info_file_name, "w"); aux_info_file = fopen (aux_info_file_name, "w");
if (aux_info_file == 0) if (aux_info_file == 0)
pfatal_with_name (aux_info_file_name); pfatal_with_name (aux_info_file_name);
...@@ -1538,6 +1544,10 @@ compile_file (name) ...@@ -1538,6 +1544,10 @@ compile_file (name)
pfatal_with_name (asm_file_name); pfatal_with_name (asm_file_name);
} }
#ifdef IO_BUFFER_SIZE
setvbuf (asm_out_file, xmalloc (IO_BUFFER_SIZE), _IOFBF, IO_BUFFER_SIZE);
#endif
input_filename = name; input_filename = name;
/* Perform language-specific initialization. /* Perform language-specific initialization.
...@@ -1570,8 +1580,8 @@ compile_file (name) ...@@ -1570,8 +1580,8 @@ compile_file (name)
/* If dbx symbol table desired, initialize writing it /* If dbx symbol table desired, initialize writing it
and output the predefined types. */ and output the predefined types. */
#ifdef DBX_DEBUGGING_INFO #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG) if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time, dbxout_init (asm_out_file, main_input_filename, TIMEVAR (symout_time, dbxout_init (asm_out_file, main_input_filename,
getdecls ())); getdecls ()));
#endif #endif
...@@ -1718,8 +1728,8 @@ compile_file (name) ...@@ -1718,8 +1728,8 @@ compile_file (name)
} }
/* Do dbx symbols */ /* Do dbx symbols */
#ifdef DBX_DEBUGGING_INFO #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG) if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time, TIMEVAR (symout_time,
{ {
dbxout_finish (asm_out_file, main_input_filename); dbxout_finish (asm_out_file, main_input_filename);
...@@ -1884,8 +1894,9 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end) ...@@ -1884,8 +1894,9 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
else else
error ("invalid register name `%s' for register variable", asmspec); error ("invalid register name `%s' for register variable", asmspec);
} }
#ifdef DBX_DEBUGGING_INFO #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
else if (write_symbols == DBX_DEBUG && TREE_CODE (decl) == TYPE_DECL) else if ((write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
&& TREE_CODE (decl) == TYPE_DECL)
TIMEVAR (symout_time, dbxout_symbol (decl, 0)); TIMEVAR (symout_time, dbxout_symbol (decl, 0));
#endif #endif
#ifdef SDB_DEBUGGING_INFO #ifdef SDB_DEBUGGING_INFO
...@@ -1902,8 +1913,8 @@ rest_of_type_compilation (type, toplev) ...@@ -1902,8 +1913,8 @@ rest_of_type_compilation (type, toplev)
tree type; tree type;
int toplev; int toplev;
{ {
#ifdef DBX_DEBUGGING_INFO #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
if (write_symbols == DBX_DEBUG) if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time, dbxout_symbol (TYPE_STUB_DECL (type), !toplev)); TIMEVAR (symout_time, dbxout_symbol (TYPE_STUB_DECL (type), !toplev));
#endif #endif
#ifdef SDB_DEBUGGING_INFO #ifdef SDB_DEBUGGING_INFO
...@@ -2447,6 +2458,14 @@ rest_of_compilation (decl) ...@@ -2447,6 +2458,14 @@ rest_of_compilation (decl)
exit_rest_of_compilation: exit_rest_of_compilation:
/* In case the function was not output,
don't leave any temporary anonymous types
queued up for sdb output. */
#ifdef SDB_DEBUGGING_INFO
if (write_symbols == SDB_DEBUG)
sdbout_types (0);
#endif
/* Put back the tree of subblocks from before we copied it. /* Put back the tree of subblocks from before we copied it.
Code generation and the output of debugging info may have modified Code generation and the output of debugging info may have modified
the copy, but the original is unchanged. */ the copy, but the original is unchanged. */
...@@ -2544,9 +2563,11 @@ main (argc, argv, envp) ...@@ -2544,9 +2563,11 @@ main (argc, argv, envp)
} }
obey_regdecls = (optimize == 0); obey_regdecls = (optimize == 0);
flag_no_inline = (optimize == 0); if (optimize == 0)
if (flag_no_inline) {
warn_inline = 0; flag_no_inline = 1;
warn_inline = 0;
}
if (optimize >= 1) if (optimize >= 1)
{ {
...@@ -2826,7 +2847,7 @@ main (argc, argv, envp) ...@@ -2826,7 +2847,7 @@ main (argc, argv, envp)
you must define PREFERRED_DEBUGGING_TYPE you must define PREFERRED_DEBUGGING_TYPE
to choose a format in a system-dependent way. */ to choose a format in a system-dependent way. */
#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) \ #if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) \
+ defined (DWARF_DEBUGGING_INFO)) + defined (DWARF_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO))
#ifdef PREFERRED_DEBUGGING_TYPE #ifdef PREFERRED_DEBUGGING_TYPE
if (!strncmp (str, "ggdb", len)) if (!strncmp (str, "ggdb", len))
write_symbols = PREFERRED_DEBUGGING_TYPE; write_symbols = PREFERRED_DEBUGGING_TYPE;
...@@ -2873,6 +2894,26 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! ...@@ -2873,6 +2894,26 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
else if (!strncmp (str, "gcoff", len)) else if (!strncmp (str, "gcoff", len))
write_symbols = SDB_DEBUG; write_symbols = SDB_DEBUG;
#endif /* SDB_DEBUGGING_INFO */ #endif /* SDB_DEBUGGING_INFO */
#ifdef XCOFF_DEBUGGING_INFO
if (write_symbols != NO_DEBUG)
;
else if (!strncmp (str, "ggdb", len))
write_symbols = XCOFF_DEBUG;
else if (!strncmp (str, "gxcoff", len))
write_symbols = XCOFF_DEBUG;
/* Always enable extensions for -ggdb,
always disable for -gxcoff.
For plain -g, use system-specific default. */
if (write_symbols == XCOFF_DEBUG && !strncmp (str, "ggdb", len)
&& len >= 2)
use_gdb_dbx_extensions = 1;
else if (write_symbols == DBX_DEBUG
&& !strncmp (str, "gxcoff", len) && len >= 2)
use_gdb_dbx_extensions = 0;
else
use_gdb_dbx_extensions = DEFAULT_GDB_EXTENSIONS;
#endif
if (write_symbols == NO_DEBUG) if (write_symbols == NO_DEBUG)
warning ("`-%s' option not supported on this version of GCC", str); warning ("`-%s' option not supported on this version of GCC", str);
else if (level == 0) else if (level == 0)
...@@ -2889,6 +2930,11 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! ...@@ -2889,6 +2930,11 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
g_switch_set = TRUE; g_switch_set = TRUE;
g_switch_value = atoi ((str[1] != '\0') ? str+1 : argv[++i]); g_switch_value = atoi ((str[1] != '\0') ? str+1 : argv[++i]);
} }
else if (!strncmp (str, "aux-info", 8))
{
flag_gen_aux_info = 1;
aux_info_file_name = (str[8] != '\0' ? str+8 : argv[++i]);
}
else else
error ("Invalid option `%s'", argv[i]); error ("Invalid option `%s'", argv[i]);
} }
...@@ -2903,6 +2949,14 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! ...@@ -2903,6 +2949,14 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
filename = argv[i]; filename = argv[i];
} }
/* Inlining does not work if not optimizing,
so force it not to be done. */
if (optimize == 0)
{
flag_no_inline = 1;
warn_inline = 0;
}
#ifdef OVERRIDE_OPTIONS #ifdef OVERRIDE_OPTIONS
/* Some machines may reject certain combinations of options. */ /* Some machines may reject certain combinations of options. */
OVERRIDE_OPTIONS; OVERRIDE_OPTIONS;
......
...@@ -39,7 +39,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -39,7 +39,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "obstack.h" #include "obstack.h"
#ifdef XCOFF_DEBUGGING_INFO #ifdef XCOFF_DEBUGGING_INFO
#include "xcoff.h" #include "xcoffout.h"
#endif #endif
#ifndef ASM_STABS_OP #ifndef ASM_STABS_OP
...@@ -81,6 +81,7 @@ void assemble_name (); ...@@ -81,6 +81,7 @@ void assemble_name ();
int output_addressed_constants (); int output_addressed_constants ();
void output_constant (); void output_constant ();
void output_constructor (); void output_constructor ();
void data_section ();
#ifdef EXTRA_SECTIONS #ifdef EXTRA_SECTIONS
static enum in_section {no_section, in_text, in_data, EXTRA_SECTIONS} in_section static enum in_section {no_section, in_text, in_data, EXTRA_SECTIONS} in_section
...@@ -1341,7 +1342,8 @@ immed_real_const_1 (d, mode) ...@@ -1341,7 +1342,8 @@ immed_real_const_1 (d, mode)
/* Detect special cases. */ /* Detect special cases. */
if (REAL_VALUES_EQUAL (dconst0, d)) /* Avoid REAL_VALUES_EQUAL here in order to distinguish minus zero. */
if (!bcmp (&dconst0, &d, sizeof d))
return CONST0_RTX (mode); return CONST0_RTX (mode);
else if (REAL_VALUES_EQUAL (dconst1, d)) else if (REAL_VALUES_EQUAL (dconst1, d))
return CONST1_RTX (mode); return CONST1_RTX (mode);
......
...@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* This defines the C_* storage classes. */ /* This defines the C_* storage classes. */
#include <dbxstclass.h> #include <dbxstclass.h>
#include "xcoff.h" #include "xcoffout.h"
#if defined (USG) || defined (NO_STAB_H) #if defined (USG) || defined (NO_STAB_H)
#include "gstab.h" #include "gstab.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment