summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-03-23 19:29:32 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-03-23 19:29:32 +0000
commite3a24b9aea7d2b6984dec63a1a053299e29f51aa (patch)
tree82e579b8cd82bbe52ea9fc50b6969091e40a3347 /gcc
parent3b9e6e9e7dd3d1548652654f886f1c88d2e2fbf1 (diff)
downloadgcc-e3a24b9aea7d2b6984dec63a1a053299e29f51aa.tar.gz
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@577 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/final.c2
-rw-r--r--gcc/make-cc1.com3
-rw-r--r--gcc/toplev.c96
-rw-r--r--gcc/varasm.c6
-rw-r--r--gcc/xcoffout.c2
5 files changed, 83 insertions, 26 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 75df4de0386..923158a5436 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -72,7 +72,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
#ifdef XCOFF_DEBUGGING_INFO
-#include "xcoff.h"
+#include "xcoffout.h"
#endif
/* .stabd code for line number. */
diff --git a/gcc/make-cc1.com b/gcc/make-cc1.com
index 34eecc11046..4703c68d414 100644
--- a/gcc/make-cc1.com
+++ b/gcc/make-cc1.com
@@ -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
insn-recog,insn-extract,insn-output,obstack,integrate,caller-save,calls
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
$!
@@ -261,6 +261,7 @@ $ assign/user insn-attrtab.c sys$output:
$ mcr sys$disk:[]genattrtab md
$ 'CC 'CFLAGS insn-attrtab.c
$ 'CC 'CFLAGS aux-output.c
+$ 'CC 'CFLAGS getpwd.c
$!
$compile_cc1:
$!
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 790b7c1ed26..1ddfce430d4 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -52,6 +52,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "rtl.h"
#include "flags.h"
#include "insn-attr.h"
+
+#ifdef XCOFF_DEBUGGING_INFO
+#include "xcoffout.h"
+#endif
#ifdef VMS
/* The extra parameters substantially improve the I/O performance. */
@@ -183,9 +187,9 @@ enum debug_info_type write_symbols = NO_DEBUG;
for the definitions of the different possible levels. */
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.
- Relevant only when write_symbols == DBX_DEBUG. */
+ Relevant only when write_symbols == DBX_DEBUG or XCOFF_DEBUG. */
int use_gdb_dbx_extensions = 0;
#endif
@@ -370,6 +374,10 @@ int flag_no_inline;
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. */
int flag_shared_data;
@@ -445,7 +453,6 @@ struct { char *string; int *variable; int on_value;} f_options[] =
{"keep-inline-functions", &flag_keep_inline_functions, 1},
{"inline", &flag_no_inline, 0},
{"syntax-only", &flag_syntax_only, 1},
- {"gen-aux-info", &flag_gen_aux_info, 1},
{"shared-data", &flag_shared_data, 1},
{"caller-saves", &flag_caller_saves, 1},
{"pcc-struct-return", &flag_pcc_struct_return, 1},
@@ -528,7 +535,8 @@ struct { char *string; int *variable; int on_value;} W_options[] =
{"return-type", &warn_return_type, 1},
{"aggregate-return", &warn_aggregate_return, 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)
@@ -1287,7 +1295,6 @@ compile_file (name)
tree globals;
int start_time;
int dump_base_name_length;
- char *aux_info_file_name;
int name_specified = name != 0;
@@ -1345,12 +1352,11 @@ compile_file (name)
if (flag_caller_saves)
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)
{
- 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");
if (aux_info_file == 0)
pfatal_with_name (aux_info_file_name);
@@ -1538,6 +1544,10 @@ compile_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;
/* Perform language-specific initialization.
@@ -1570,8 +1580,8 @@ compile_file (name)
/* If dbx symbol table desired, initialize writing it
and output the predefined types. */
-#ifdef DBX_DEBUGGING_INFO
- if (write_symbols == DBX_DEBUG)
+#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
+ if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time, dbxout_init (asm_out_file, main_input_filename,
getdecls ()));
#endif
@@ -1718,8 +1728,8 @@ compile_file (name)
}
/* Do dbx symbols */
-#ifdef DBX_DEBUGGING_INFO
- if (write_symbols == DBX_DEBUG)
+#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
+ if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time,
{
dbxout_finish (asm_out_file, main_input_filename);
@@ -1884,8 +1894,9 @@ rest_of_decl_compilation (decl, asmspec, top_level, at_end)
else
error ("invalid register name `%s' for register variable", asmspec);
}
-#ifdef DBX_DEBUGGING_INFO
- else if (write_symbols == DBX_DEBUG && TREE_CODE (decl) == TYPE_DECL)
+#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
+ else if ((write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
+ && TREE_CODE (decl) == TYPE_DECL)
TIMEVAR (symout_time, dbxout_symbol (decl, 0));
#endif
#ifdef SDB_DEBUGGING_INFO
@@ -1902,8 +1913,8 @@ rest_of_type_compilation (type, toplev)
tree type;
int toplev;
{
-#ifdef DBX_DEBUGGING_INFO
- if (write_symbols == DBX_DEBUG)
+#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
+ if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
TIMEVAR (symout_time, dbxout_symbol (TYPE_STUB_DECL (type), !toplev));
#endif
#ifdef SDB_DEBUGGING_INFO
@@ -2447,6 +2458,14 @@ rest_of_compilation (decl)
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.
Code generation and the output of debugging info may have modified
the copy, but the original is unchanged. */
@@ -2544,9 +2563,11 @@ main (argc, argv, envp)
}
obey_regdecls = (optimize == 0);
- flag_no_inline = (optimize == 0);
- if (flag_no_inline)
- warn_inline = 0;
+ if (optimize == 0)
+ {
+ flag_no_inline = 1;
+ warn_inline = 0;
+ }
if (optimize >= 1)
{
@@ -2826,7 +2847,7 @@ main (argc, argv, envp)
you must define PREFERRED_DEBUGGING_TYPE
to choose a format in a system-dependent way. */
#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
if (!strncmp (str, "ggdb", len))
write_symbols = PREFERRED_DEBUGGING_TYPE;
@@ -2873,6 +2894,26 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
else if (!strncmp (str, "gcoff", len))
write_symbols = SDB_DEBUG;
#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)
warning ("`-%s' option not supported on this version of GCC", str);
else if (level == 0)
@@ -2889,6 +2930,11 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
g_switch_set = TRUE;
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
error ("Invalid option `%s'", argv[i]);
}
@@ -2903,6 +2949,14 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
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
/* Some machines may reject certain combinations of options. */
OVERRIDE_OPTIONS;
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 12afb28a6b7..306cc8ccf3e 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -39,7 +39,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "obstack.h"
#ifdef XCOFF_DEBUGGING_INFO
-#include "xcoff.h"
+#include "xcoffout.h"
#endif
#ifndef ASM_STABS_OP
@@ -81,6 +81,7 @@ void assemble_name ();
int output_addressed_constants ();
void output_constant ();
void output_constructor ();
+void data_section ();
#ifdef EXTRA_SECTIONS
static enum in_section {no_section, in_text, in_data, EXTRA_SECTIONS} in_section
@@ -1341,7 +1342,8 @@ immed_real_const_1 (d, mode)
/* 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);
else if (REAL_VALUES_EQUAL (dconst1, d))
return CONST1_RTX (mode);
diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
index 3f60e7f2901..1b42612270a 100644
--- a/gcc/xcoffout.c
+++ b/gcc/xcoffout.c
@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* This defines the C_* storage classes. */
#include <dbxstclass.h>
-#include "xcoff.h"
+#include "xcoffout.h"
#if defined (USG) || defined (NO_STAB_H)
#include "gstab.h"