Compare commits

...

300 Commits

Author SHA1 Message Date
No Author
9a9ae6cb1a This commit was manufactured by cvs2svn to create tag
'egcs_1_0_3_prerelease'.

From-SVN: r19382
1998-04-23 00:47:30 +00:00
Jeffrey A Law
552a1e5915 1.0.2 -> 1.0.3 changes.
From-SVN: r19381
1998-04-22 18:47:30 -06:00
Richard Henderson
495bf6087a reload1.c (eliminate_regs): Delete LOAD_EXTENDED_OP code that boiled down to && ! 0.
* reload1.c (eliminate_regs): Delete LOAD_EXTENDED_OP code that
        boiled down to && ! 0.
        * reload.c (find_reloads): Always force (subreg (mem)) to be
        reloaded if WORD_REGISTER_OPERATIONS.
        * reload.c (find_reloads_toplev): Handle arbitrary non-paradoxical
        SUBREGs of CONST_INTs.
        * reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
        SUBREG_REG if the word count is unchanged, also in the input reload
        case.  Disable non-applicable sanity checks.
        * reload.c (push_reload): In WORD_REGISTER_OPERATIONS code, add test
        to require the SUBREG mode to be smaller than the SUBREG_REG mode.
        * reload1.c (eliminate_regs): Likewise.
        * reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
        SUBREG_REG if the word count is unchanged.
        * reload1.c (eliminate_regs) [case SET]: If W_R_O, preserve
        subregs of identical word size for push_reload.
Various alpha fixes from the mainline sources.

Co-Authored-By: J"orn Rennecke <amylaar@cygnus.co.uk>
Co-Authored-By: Jim Wilson <wilson@cygnus.com>

From-SVN: r19336
1998-04-19 19:22:13 -06:00
H.J. Lu
620a5a20ec reg-stack.c (subst_asm_stack_regs): Change to return the last new insn generated by this function.
* reg-stack.c (subst_asm_stack_regs): Change to return the last
        new insn generated by this function.
        (subst_stack_regs): Likewise.
        (convert_regs): Record the last newly generated insn and use
        it for change_stack () instead of INSN.

From-SVN: r19327
1998-04-19 17:59:57 -06:00
H.J. Lu
bee14d86c6 * isgetline.cc (istream::get): Fix a typo.
From-SVN: r19313
1998-04-19 15:13:49 -06:00
Richard Henderson
97b2bc8c58 alpha.md (extendsidi2): Kill bogus cvtql+cvtlq case.
* alpha.md (extendsidi2): Kill bogus cvtql+cvtlq case.
        * alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
        * alpha.c (print_operand): Handle it.
        * alpha.md (fix_truncsfdi2): Use it.  Add earlyclobber pattern
        for ALPHA_TP_INSN.
        (fix_truncdfdi2): Likewise.
        * alpha/linux.h (FUNCTION_PROFILER): _mcount expects its pv in $28.

From-SVN: r19290
1998-04-18 17:24:11 -06:00
Richard Henderson
0fd259829d com.c (ffecom_expr_): Revert Oct 22 change.
* com.c (ffecom_expr_): Revert Oct 22 change.  Instead take a WIDENP
        argument so that we can respect the signedness of the original type.
        (ffecom_init_0): Do sizetype initialization first.  Init new
        ssizetype.

From-SVN: r19289
1998-04-18 17:22:23 -06:00
David Edelsohn
4864f1a613 rs6000.md (floatsidf2_loadaddr): rs6000_fpmem_offset will be negative in a stackless frame.
* rs6000.md (floatsidf2_loadaddr): rs6000_fpmem_offset will be
        negative in a stackless frame.
        * rs6000.c (rs6000_stack_info): Don't include fixed-size link area
        in stackless frame size.  Support 64-bit stackless frame size.
        Combine fpmem offset calculations and don't add total_size to
        offset if not pushing a stack frame.

From-SVN: r19288
1998-04-18 16:24:38 -06:00
Jim Wilson
dc790b3c86 i386.md (fix_truncsfdi2+[123]): Add + to operand 1 constraints.
* i386.md (fix_truncsfdi2+[123]): Add + to operand 1 constraints.

From-SVN: r19285
1998-04-18 16:19:06 -06:00
Jeff Law
b866e182d5 Opps. FOrgot to update the date.
From-SVN: r18615
1998-03-15 16:35:51 -07:00
Jeffrey A Law
96452592af * version.c: Update for egcs-1.0.2 release.
From-SVN: r18614
1998-03-15 15:37:47 -07:00
Jeff Law
c43d777605 * egcs-1.0.2 release.
From-SVN: r18613
1998-03-15 15:34:36 -07:00
Manfred Hollstein
03ab4d306a Makefile.in (BASE_FLAGS_TO_PASS): Pass gxx_include_dir down to sub-makes.
* Makefile.in (BASE_FLAGS_TO_PASS): Pass gxx_include_dir down
        to sub-makes.

Co-Authored-By: Pieter Nagel <pnagel@epiuse.co.za>

From-SVN: r18610
1998-03-15 15:28:42 -07:00
Jeff Law
3e260314f7 mot3300.h (ASM_BYTE_OP): Don't include '\t' in the definition.
* config/m68k/mot3300.h (ASM_BYTE_OP): Don't include '\t' in the
        definition.
        (ASM_OUTPUT_ASCII): Prefix ASM_BYTE_OP by one single '\t'.

From-SVN: r18609
1998-03-15 15:25:50 -07:00
Jeffrey A Law
ecfe148ef9 * m68k.h: Fix mis-applied fix from the mainline branch.
From-SVN: r18608
1998-03-15 15:14:44 -07:00
Jeffrey A Law
75f71db751 rtlanal.c (optimize): Declare.
�
	* rtlanal.c (optimize): Declare.

From-SVN: r18484
1998-03-11 06:23:35 -07:00
Jeff Law
c182a0b19b More doc updates for 1.0.2.
From-SVN: r18445
1998-03-08 13:03:28 -07:00
Jeff Law
e4336350cd Doc changes for 1.0.2.
From-SVN: r18444
1998-03-08 12:29:58 -07:00
Jeffrey A Law
f623349c80 emit-rtl.c (gen_lowpart_common): Handle more case where converting a CONST_INT into SFmode.
* emit-rtl.c (gen_lowpart_common): Handle more case where converting
        a CONST_INT into SFmode.

From-SVN: r18442
1998-03-08 03:13:04 -07:00
Jeffrey A Law
83f3c8788c aix386ng.h (CPP_PREDEFINES): Put back -Di386.
* i386/aix386ng.h (CPP_PREDEFINES): Put back -Di386.
        * i386/freebsd-elf.h: Likewise.
        * i386/gas.h: Likewise.
        * i386/linux-aout.h: Likewise.
        * i386/linux-oldld.h: Likewise.
        * i386/linux.h: Likewise.
        * i386/osfelf.h: Likewise.
        * i386/osfrose.h: Likewise.
        * i386/sco.h: Likewise.
        * i386/sco4.h: Likewise.
        * i386/sco4dbx.h: Likewise.
        * i386/sco5.h: Likewise.
        * i386/scodbx.h: Likewise.
        * i386/sol2.h: Likewise.
        * i386/sysv3.h: Likewise.
Fix problems with imake

From-SVN: r18437
1998-03-06 17:12:07 -07:00
H.J. Lu
83ad9cfa81 stl_config.h (__STL_PTHREADS): Don't define for glibc 2 if _G_USING_THUNKS is not defined.
* stl_config.h (__STL_PTHREADS): Don't define for glibc 2 if
        _G_USING_THUNKS is not defined.

From-SVN: r18422
1998-03-05 16:09:12 -07:00
Franz Sirl
d20323edaa linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if USE_GNULIBC_1 is defined
* rs6000/linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if
        USE_GNULIBC_1 is defined
        * configure.in: add a new case powerpc-*-linux-gnulibc1 which
        includes the t-linux-gnulibc1 fragment

From-SVN: r18406
1998-03-04 14:02:15 -07:00
Jim Wilson
d2fbc2cacc decl.c (start_function): Don't call temporary_allocation for a nested function.
* decl.c (start_function): Don't call temporary_allocation for a
        nested function.

From-SVN: r18374
1998-03-02 17:55:34 -07:00
Jeffrey A Law
e8a96824e6 * version.c: Bump for 1.0.2 prerelease diffs.
From-SVN: r18369
1998-03-02 16:03:57 -07:00
Jeffrey A Law
716028ee7b * ginclude/va-ppc.h (va_arg): Fix typo in long long support.
From-SVN: r18347
1998-03-01 10:12:09 -07:00
Jason Merrill
d1f51ac44d * stl_config.h: Work around glibc pthread.h bug.
From-SVN: r18230
1998-02-25 05:18:53 -05:00
Andreas Schwab
5f8b9c80df Changes for _G_IO_IO_FILE_VERSION == 0x20001:
* libioP.h (_IO_showmanyc_t, _IO_SHOWMANYC, _IO_imbue_t,
        _IO_IMBUE): New definitions.
        (struct _IO_jump_t): Add __showmanyc and __imbue fields.
        (_IO_file_fopen): Add new fourth argument.
        * filebuf.cc (filebuf::open): Pass new fourth argument to
        _IO_file_fopen.
        * iolibio.h (_IO_freopen): Likewise.
        * streambuf.cc (streambuf::showmanyc, streambuf::imbue): New
        functions.
        * streambuf.h (_IO_wchar_t): Define to _G_wchar_t.
        (ios::fill): Remove casts.
        (struct streambuf): Add showmanyc and imbue members.
        * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >=
        1]: Initialize new fields is_char of struct printf_info.
        (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 1]:
        Likewise.

From-SVN: r18221
1998-02-24 13:02:06 -07:00
H.J. Lu
3ceda776d8 configure.in (topsrcdir): New.
* configure.in (topsrcdir): New.
        (CHECK_SUBDIRS, configdirs): Check ${topsrcdir}/gcc instead.
        (config-ml.in): Use ${topsrcdir}/config-ml.in.
        * tests/configure.in (topsrcdir): New.
        (CHECK): Check ${topsrcdir}/gcc instead.
        * configure.in (CHECK_SUBDIRS): Set to testsuite only if
        ${srcdir}/../gcc exists.
        (configdirs): Include testsuite only if ${srcdir}/../gcc exists.
        * tests/Makefile.in (check): Depend on $(CHECK).
        * tests/configure.in (CHECK): Set to "check-iostream
        check-stdio" if ${srcdir}/../../gcc doesn't exists.

From-SVN: r18220
1998-02-24 12:55:15 -07:00
H.J. Lu
d356de352f configure.in (topsrcdir): New.
* configure.in (topsrcdir): New.
        (configdirs): Check ${topsrcdir}/gcc instead.
        (config-ml.in): Use ${topsrcdir}/config-ml.in.
        * tests/configure.in (topsrcdir): New.
        (check): Check ${topsrcdir}/gcc instead.
        * configure.in (configdirs): Include testsuite only if
        ${srcdir}/../gcc exists.
        * tests/configure.in (check): Set to ${CHECK} if
        ${srcdir}/../../gcc doesn't exists.

From-SVN: r18219
1998-02-24 12:53:34 -07:00
Jeffrey A Law
c78880d8f4 expr.c (emit_move_insn_1): Fix minor buglet in last change caused by importint it into the release branch.
* expr.c (emit_move_insn_1): Fix minor buglet in last change
        caused by importint it into the release branch.

From-SVN: r18216
1998-02-24 01:33:46 -07:00
Jeff Law
9925224fd8 Update.
From-SVN: r18212
1998-02-23 14:59:09 -07:00
Jeff Law
57b67f059c pa.h (TEXT_SPACE_P): Remove unnecessary indirection into tree_code_type.
* pa/pa.h (TEXT_SPACE_P): Remove unnecessary indirection
        into tree_code_type.
        * vax/vms.h (SELECT_SECTION): Similarly.
Remove this change -- I was in the wrong tree (release instead of mainline).
Sigh.  Starting to burn out a little on this stuff.

From-SVN: r18194
1998-02-22 12:54:13 -07:00
Jeffrey A Law
b0acdc8d21 pa.h (TEXT_SPACE_P): Remove unnecessary indirection into tree_code_type.
* pa/pa.h (TEXT_SPACE_P): Remove unnecessary indirection
        into tree_code_type.
        * vax/vms.h (SELECT_SECTION): Similarly.

From-SVN: r18193
1998-02-22 12:49:04 -07:00
Bernd Schmidt
6afaaa9805 expr.c (emit_move_insn_1): When moving complex values in several steps...
* expr.c (emit_move_insn_1): When moving complex values in several
	steps, emit a CLOBBER to show the destination dies.

From-SVN: r18192
1998-02-22 12:44:08 -07:00
Craig Burley
ffaffba589 expr.c (ffeexpr_token_arguments_): Make sure outer exprstack isn't null.
* expr.c (ffeexpr_token_arguments_): Make sure
        outer exprstack isn't null.

From-SVN: r18191
1998-02-22 12:40:45 -07:00
Jim Wilson
de0f25ebe2 iris5.h (DWARF2_UNWIND_INFO): Define to 0.
* iris5.h (DWARF2_UNWIND_INFO): Define to 0.
        * iris5gas.h (DWARF2_UNWIND_INFO): Define to 1.

From-SVN: r18177
1998-02-22 12:04:08 -07:00
Mumit Khan
ecd14aafa3 x-cygwin32 (USE_COLLECT2): Disable collect2 for now on i386-{cygwin32,mingw32}.
* i386/x-cygwin32 (USE_COLLECT2): Disable collect2 for now on
        i386-{cygwin32,mingw32}.

From-SVN: r18166
1998-02-22 07:21:59 -07:00
H.J. Lu
0370c84e4f configure.in (alpha*-*-linux*): Treat alpha*-*-linux* as alpha*-*-linux* not alpha*-*-*.
* configure.in (alpha*-*-linux*): Treat alpha*-*-linux* as
        alpha*-*-linux* not alpha*-*-*.

From-SVN: r18165
1998-02-22 07:21:02 -07:00
Kaveh R. Ghazi
5e7174a37e collect2.c (scan_prog_file): Completely cover uses of variable `exports' with macro COLLECT_EXPORT_LIST.
* collect2.c (scan_prog_file): Completely cover uses of variable
        `exports' with macro COLLECT_EXPORT_LIST.

From-SVN: r18164
1998-02-22 07:06:35 -07:00
Jeff Law
ad3064bf4e Never should have been in the distribution.
From-SVN: r18161
1998-02-21 14:08:53 -07:00
Jason Merrill
ee19c9c019 collect2.c (main): Still handle !do_collecting for non-AIX targets.
* collect2.c (main): Still handle !do_collecting for non-AIX targets.
Bring over from mainline sources.

From-SVN: r18153
1998-02-20 13:42:37 -07:00
H.J. Lu
826603f8c0 ropeimpl.h: Check __STL_PTHREADS instead of _PTHREADS.
* ropeimpl.h: Check __STL_PTHREADS instead of _PTHREADS.
	* stl_alloc.h: Ditto.
	* stl_config.h: Ditto.
	* stl_rope.h: Ditto.
	* stl_config.h: include <_G_config.h> if __GNUG__ is defined.
	(__STL_PTHREADS): Defined if _PTHREADS is defined or
	__GLIBC__ >= 2.

Co-Authored-By: Jason Merrill <jason@yorick.cygnus.com>

From-SVN: r18137
1998-02-20 06:09:09 -05:00
Andrey Slepuhin
31eb7f8508 collect2.c (XCOFF_SCAN_LIBS): Remove.
* collect2.c (XCOFF_SCAN_LIBS): Remove.
        (export_flag): New variable.
        (export_file): #ifdef COLLECT_EXPORT_LIST.
        (import_file, exports, imports, undefined): New variables.
        (libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
        (dump_list, dump_prefix_list, is_in_list): New functions.
        (write_export_file): $ifdef COLLECT_EXPORT_LIST.
        (write_import_file, resolve_lib_name): New functions.
        (use_import_list, ignore_library): Same.
        (collect_exit): maybe_unlink import_file and #ifdef.
        (handler): Same.
        (main): New variable importf, #ifdef exportf.  Move parsing of
        -shared before general argument parsing.  Resolve AIX library
        paths and import libgcc.a symbols.  Treat .so shared libraries the
        same as objects and .a libraries.  Create alias for object_lst and
        increment it instead of original pointer.  Scan AIX libraries as
        objects earlier instead of using scan_libraries.  Perform AIX
        tlink later to resolve templates instead of forking ld.
        (GCC_OK_SYMBOL): Ensure symbol not in undef section.
        (GCC_UNDEF_SYMBOL): New macro.
        (scan_prog_file): Loop for members of AIX libraries.  Handle
        export/import of ctors/dtors.
        (aix_std_libs): New variable.
        (scan_libraries, XCOFF): Delete.

Co-Authored-By: David Edelsohn <edelsohn@mhpcc.edu>

From-SVN: r18133
1998-02-19 17:37:32 -07:00
Mike Stump
1d7f28e10f Makefile.in: Use $tooldir for sys-include to match toplevel configure.
* Makefile.in: Use $tooldir for sys-include to match toplevel
        configure.

From-SVN: r18127
1998-02-19 12:14:38 -07:00
Robin Kirkham
8015016f52 m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
d
        * m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
        (MACHINE_STATE_m68010_up): Replaced __mc68332__ with __mcpu32__.
        * m68k/m68k-none.h(CPP_FPU_SPEC): Update relative to TARGET_SWITCHES.
        (CPP_SPEC, ASM_SPEC, CC1_SPEC): Likewise.
        (CPP_SPEC): -m68332 defines both __mc68332 and __mcpu32__.
        * m68k/t-m68kbare (MULTILIB_OPTIONS): Add mcpu32.
        (MULTILIB_MATCHES): -m68332 now uses mcpu32 libraries, not m68000.
        (MULTILIB_EXCEPTIONS): Don't build 68881 libraries for m68000,
        mcpu32 or m5200.
        * longlong.h: Replace __mc68332__ with __mcpu32__.

From-SVN: r18111
1998-02-18 17:39:36 -07:00
Jeff Law
2db2f067d8 m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
a
        * m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
        (MACHINE_STATE_m68010_up): Replaced __mc68332__ with __mcpu32__.
        * m68k/m68k-none.h(CPP_FPU_SPEC): Update relative to TARGET_SWITCHES.
        (CPP_SPEC, ASM_SPEC, CC1_SPEC): Likewise.
        (CPP_SPEC): -m68332 defines both __mc68332 and __mcpu32__.
        * m68k/t-m68kbare (MULTILIB_OPTIONS): Add mcpu32.
        (MULTILIB_MATCHES): -m68332 now uses mcpu32 libraries, not m68000.
        (MULTILIB_EXCEPTIONS): Don't build 68881 libraries for m68000,
        mcpu32 or m5200.
        * longlong.h: Replace __mc68332__ with __mcpu32__.

From-SVN: r18110
1998-02-18 17:39:34 -07:00
Jeffrey A Law
200e1cad10 emit-rtl.c (gen_lowpart_common): Suppress last change if __complex__.
* emit-rtl.c (gen_lowpart_common): Suppress last change if __complex__.
        * emit-rtl.c (hard-reg-set.h): Include.
        (get_lowpart_common): Don't make new REG for hard reg in a
        class that cannot change size.
        * Makefile.in (emit-rtl.o): Depend on hard-reg-set.h.
        * combine.c: Revert previous patch.

Co-Authored-By: Richard Kenner <kenner@vlsi1.ultra.nyu.edu>

From-SVN: r18108
1998-02-18 17:33:40 -07:00
Jeff Law
c0bc8f6d6b Update from David.
From-SVN: r18107
1998-02-18 17:26:35 -07:00
Jeff Law
bcce5e6dd6 Doc fixes from David.
From-SVN: r18106
1998-02-18 17:17:42 -07:00
Mumit Khan
6019e1d30f Make-lang.in (f77.all.build): Add exeext.
* Make-lang.in (f77.all.build): Add exeext.
        (f77.all.cross): Likewise.
        (f77.start.encap): Likewise.

From-SVN: r18103
1998-02-18 16:53:44 -07:00
Jason Merrill
209ccdf447 oops
From-SVN: r18064
1998-02-18 05:37:32 -05:00
Jason Merrill
ed172e0f4c bastring.h: Don't #include <std/bastring.cc> yet.
* std/bastring.h: Don't #include <std/bastring.cc> yet.
	* sinst.cc: Revert.

From-SVN: r18063
1998-02-18 05:31:21 -05:00
David Edelsohn
1203e2021f * rs6000.h (MY_ISCOFF): Add numeric value of U803XTOCMAGIC.
From-SVN: r18058
1998-02-17 16:02:53 -07:00
David Edelsohn
c0723b338a * x-aix31 (INSTALL): Delete.
From-SVN: r18056
1998-02-17 15:32:19 -07:00
Richard Henderson
5d1f565be1 combine.c (simplify_rtx): Obey CLASS_CANNOT_CHANGE_SIZE when simplifying a subreg of a hard reg.
* combine.c (simplify_rtx): Obey CLASS_CANNOT_CHANGE_SIZE when
        simplifying a subreg of a hard reg.
        (expand_compound_operation): Likewise.
        (force_to_mode): Likewise.

From-SVN: r18053
1998-02-17 14:55:52 -07:00
Jeff Law
3c1fb6619f i386.c (notice_update_cc): Use reg_overlap_mentioned_p.
* i386.c (notice_update_cc): Use reg_overlap_mentioned_p.
Fix ChangeLog entry.

From-SVN: r18044
1998-02-17 14:09:21 -07:00
Andreas Schwab
f7ed698119 iostream.cc (istream::operator>>(long double&)): Scan value into separate variable, in case long double is bigger than double.
* iostream.cc (istream::operator>>(long double&))
        [!_G_HAVE_LONG_DOUBLE_IO]: Scan value into separate variable, in
        case long double is bigger than double.
        (ostream::operator<<(double)) [_G_HAVE_PRINTF_FP]: Fix order of
        initializers of struct printf_info to match declaration order,
        to work around g++ bug.
        (ostream::operator<<(long double)) [_G_HAVE_PRINTF_FP]: Likewise.
        * gen-params: Add missing quotes.  Avoid useless use of command
        substitution.

From-SVN: r18043
1998-02-17 14:07:42 -07:00
H.J. Lu
56e7c89c1a linux.mt (IO_OBJECTS): Add iogetline.o.
* config/linux.mt (IO_OBJECTS): Add iogetline.o.
        * config/linuxlibc1.mt: Ditto.
        * iogetline.c (_IO_getline_info): Renamed from _IO_getline.
        (_IO_getline): Just call _IO_getline_info.
        * isgetline.cc (istream::getline, istream::get, _sb_readline):
        Call _IO_getline_info instead of _IO_getline and get the EOF
        information.
        * sbgetline.cc (streambuf::sgetline): Ditto.
        * libioP.h (_IO_getline_info): New declaration.
        * iogetline.c (_IO_getline): Handle the case when there is no
        buffer.

From-SVN: r18041
1998-02-17 13:53:03 -07:00
H.J. Lu
52af7fac04 [multiple changes]
Sat Dec  6 14:58:17 1997  H.J. Lu  (hjl@gnu.org)
	* filebuf.cc (filebuf::open): Call _IO_file_open if
	_G_HAVE_IO_FILE_OPEN is 1.
	* libio.h (_IO_fpos64_t, _IO_off64_t): Defined if
	_G_IO_IO_FILE_VERSION == 0x20001.
	* libioP.h (_IO_file_open): New declaration.
	* libio.h (_IO_FILE, _IO_stdin_, _IO_stdout_, _IO_stderr_,
	_IO_seekoff, _IO_seekpos): Add support for libio in egcs 2.1.
	* libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t,
	_IO_seekoff, _IO_seekpos, _IO_default_seekoff,
	_IO_default_seekpos, _IO_default_seek, _IO_file_seekoff,
	_IO_file_seek, _IO_str_seekoff, _IO_pos_BAD, _IO_pos_as_off,
	_IO_pos_0): Ditto.
	* streambuf.h (streamoff, streampos): Ditto.
Mon Nov 17 07:36:58 1997  H.J. Lu  (hjl@gnu.org)
	* gen-params (__extension__): Use only if gcc version >= 2.8.

From-SVN: r18040
1998-02-17 13:50:52 -07:00
Jeff Law
1822f8a606 Forgot to commit ChangeLog after recent checkin on the release branch...
From-SVN: r18039
1998-02-17 13:47:53 -07:00
Krister Walfridsson
d49a20c537 fileops.c: #include <unistd.h>.
* fileops.c: #include <unistd.h>.
        * ioprims.c: Likewise.
        * dbz/dbz.c (putconf): Handle systems which use "long long" as type
        for "off_t".
        * dbz/dbzmain.c (mkfiles): Likewise.

From-SVN: r18017
1998-02-15 13:10:48 -07:00
Jeff Law
1061012ce7 netbsd.h (DWARF2_UNWIND_INFO): Define as zero for now.
* arm/netbsd.h (DWARF2_UNWIND_INFO): Define as zero for now.
        * i386/netbsd.h, m68k/netbsd.h, ns32k/netbsd.h: Likewise.
        * sparc/netbsd.h, vax/netbsd.h: Likewise.

From-SVN: r18016
1998-02-15 13:06:31 -07:00
Bernd Schmidt
b33e8379a0 * i386.c (notice_update_cc): Remove bogus pentium GCC code.
From-SVN: r18015
1998-02-15 12:54:11 -07:00
H.J. Lu
cb8c34c9c4 elf.h (LIB_SPEC): New.
* config/alpha/elf.h (LIB_SPEC): New. Defined if
        USE_GNULIBC_1 is not defined.
        * config/linux.h (LIB_SPEC): Add -lc for -shared if
        USE_GNULIBC_1 is not defined.
        * config/sparc/linux.h: Ditto.
        * config/sparc/linux64.h (LIB_SPEC): Add -lc for -shared.
        * config/sparc/linux64.h (LIBGCC_SPEC): Removed.
        (CPP_SUBTARGET_SPEC): Add %{pthread:-D_REENTRANT}.
        (LIB_SPEC): Updated for glibc 2.

From-SVN: r18014
1998-02-15 12:43:58 -07:00
Mumit Khan
ba3e5fab3e cygwin32.h (DWARF2_UNWIND): Exception handling doesn't work with it yet, so set it to 0.
* config/i386/cygwin32.h (DWARF2_UNWIND): Exception handling
	doesn't work with it yet, so set it to 0.
	* config/i386/x-cygwin32 (USE_COLLECT2): Delete.
	* config/i386/xm-cygwin32.h (NO_SYS_SIGLIST): Define.

From-SVN: r17971
1998-02-13 09:48:54 -05:00
Jason Merrill
c69f7bf109 typeck.c (mark_addressable): Don't assume a FUNCTION_DECL has DECL_LANG_SPECIFIC.
* typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
	has DECL_LANG_SPECIFIC.

From-SVN: r17896
1998-02-12 19:40:04 -05:00
Franz Sirl
9ae71a7b1f sysv4.h (ENDFILE_SPEC): add missing %(endfile_linux) for -mcall-linux
* rs6000/sysv4.h (ENDFILE_SPEC): add missing %(endfile_linux)
        for -mcall-linux

From-SVN: r17893
1998-02-12 17:30:31 -07:00
Jeffrey A Law
800eb7024c * cccp.c (new_include_prefix): Correctly handle -I./.
From-SVN: r17887
1998-02-12 16:48:20 -07:00
Jason Merrill
53be309931 decl2.c (comdat_linkage): Also set DECL_COMDAT.
* decl2.c (comdat_linkage): Also set DECL_COMDAT.
	(finish_file): Check DECL_COMDAT instead of weak|one_only.
	(import_export_vtable): Use make_decl_one_only instead of
 	comdat_linkage for win32 tweak.
	(import_export_decl): Likewise.
	* pt.c (mark_decl_instantiated): Likewise.
	* decl2.c (import_export_vtable): If we support one_only but not
	weak symbols, mark instantiated template vtables one_only.
	(import_export_decl): Likewise for tinfo functions.
	(finish_vtable_vardecl): Also write out vtables from explicitly
	instantiated template classes.
	* pt.c (mark_class_instantiated): Revert last change.

From-SVN: r17883
1998-02-12 14:57:24 -05:00
Jason Merrill
ccf0a65fd6 Some patches for 1.0.2:
* decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
	when deciding to override DECL_ASSEMBLER_NAME.
	* pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
	don't define them yet.
	* parse.y (nomods_initdcl0): Add constructor_declarator case.
	* tinfo2.cc: Add tinfo for signed char.
	* search.c (compute_access): Handle protected constructors in derived
	classes as accessible.
	* lex.c (file_name_nondirectory): Also check for '/'.
	* pt.c (type_unification_real): Just accept function parms that
	don't use any template parms.
	* parse.y (typename_sub*): Fix std::.
	* lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
	(file_name_nondirectory): Use.
	* call.c (build_user_type_conversion_1): Handle user-defined
	template conversion operators correctly.
	* cvt.c (build_up_reference): A TARGET_EXPR has side effects.
	* pt.c (instantiate_class_template): Don't do injection when
 	processing_template_decl is true, as pollutes current_binding_level
        for base classes.
	* typeck.c (build_const_cast): Handle references here instead of
	handing off to convert_to_reference.

From-SVN: r17861
1998-02-11 14:06:52 -05:00
Jason Merrill
ddb0137cdc flow.c (find_basic_blocks): Don't create a new basic block for calls in a LIBCALL block.
* flow.c (find_basic_blocks): Don't create a new basic block
	for calls in a LIBCALL block.
	* flow.c (flow_analysis): Be consistent with find_basic_blocks in
	determining when a new basic block starts.
	* flow.c (find_basic_blocks): A CALL_INSN that can throw starts
	a new basic block.
	(find_basic_blocks_1): Likewise.
	* except.c (get_dynamic_handler_chain): Only make the call once per
 	function.
	* except.c (expand_fixup_region_end): New fn.
	(expand_fixup_region_start): Likewise.
	(expand_eh_region_start_tree): Store cleanup into finalization here.
	* stmt.c (expand_cleanups): Use them to protect fixups.
	* except.c (get_dynamic_handler_chain): Build up a FUNCTION_DECL.
	* optabs.c (init_optabs): Lose get_dynamic_handler_chain_libfunc.
	* expr.h: Likewise.
cp/:
	* decl.c (copy_args_p): Handle copy elision for types with virtual
 	bases.
  	* call.c (build_over_call): Likewise.
	* exception.cc (__cp_pop_exception): Lose handler arg.
	* except.c (do_pop_exception): Likewise.
	(push_eh_cleanup): Let the cleanup mechanism supply the handler.
	(expand_end_catch_block): Likewise.

From-SVN: r17856
1998-02-11 05:21:23 -05:00
Richard Henderson
4ceeccef8a Comment the subtraction change.
From-SVN: r17851
1998-02-10 17:01:58 -08:00
Richard Henderson
d4f37c4108 com.c (ffecom_ptr_to_expr): Do upper - lower in the native type, so as to properly handle negative indices.
* com.c (ffecom_ptr_to_expr) [FFEBLD_opARRAYREF]: Do upper - lower
        in the native type, so as to properly handle negative indices.

From-SVN: r17845
1998-02-10 17:41:14 -07:00
Richard Henderson
2a744ad845 stor-layout.c (layout_type): Do upper - lower in the native type, so as to properly handle negative indices.
* stor-layout.c (layout_type): Do upper - lower in the native type,
        so as to properly handle negative indices.

From-SVN: r17844
1998-02-10 17:38:24 -07:00
Jeff Law
d4bc4ea11e bastring.h (unique): We only need length bytes.
* std/bastring.h (unique): We only need length bytes.
        (c_str): Avoid writing over random memory.
        #include <std/bastring.cc>.
        Lose _G_ALLOC_CONTROL.
        * std/bastring.cc: Likewise.
        (nilRep): Add initializer for selfish.
        * sinst.cc: Just #include <string>.

From-SVN: r17821
1998-02-09 17:01:58 -07:00
Richard Kenner
1d28117548 * rs6000.c (setup_incoming_varargs): Always set rs6000_sysv_varargs_p.
From-SVN: r17819
1998-02-09 16:24:35 -07:00
Franz Sirl
57f38a83c3 * rs6000/linux.h (CPP_PREDEFINES): Add -D__ELF__.
From-SVN: r17817
1998-02-09 15:13:19 -07:00
Jeff Law
62e2f2bb24 i386.md (push): Prohibit symbolic constants if flag_pic.
* i386.md (push): Prohibit symbolic constants if flag_pic.
        (movsi+1): Likewise for move to non-register.
GOT fix.
Mon Feb  9 23:07:04 1998  John Wehle  (john@feith.com)
        * i386.md: Remove redundant integer push patterns.
        Don't bother checking for TARGET_PUSH_MEMORY when
        pushing constants or registers.
To avoid having to untangle the got changes....

From-SVN: r17816
1998-02-09 15:08:43 -07:00
Toon Moene
490998071c backspace.c: (f_back): Use type `uiolen' to determine size of record length specifier.
* libI77/backspace.c: (f_back): Use type `uiolen' to determine size
        of record length specifier.

From-SVN: r17815
1998-02-09 14:32:13 -07:00
Jeff Law
d75ea2235a Updates from Craig.
From-SVN: r17814
1998-02-09 14:27:48 -07:00
H.J. Lu
1da898c9aa linux.mt: Don't define _PTHREADS, but define _IO_MTSAFE_IO.
* config/linux.mt: Don't define _PTHREADS, but define
        _IO_MTSAFE_IO.

From-SVN: r17813
1998-02-09 14:23:18 -07:00
Mike Stump
ff42f49576 rtlanal.c (dead_or_set_regno_p): Ignore REG_DEAD notes after reload completes.
* rtlanal.c (dead_or_set_regno_p): Ignore REG_DEAD notes after
        reload completes.
        * genattrtab.c (reload_completed, optimize): Define.

From-SVN: r17812
1998-02-09 14:20:52 -07:00
J"orn Rennecke
c5c62c710e c-decl.c (grokdeclarator): Get parameter tags from last_function_parm_tags.
* c-decl.c (grokdeclarator): Get parameter tags from
        last_function_parm_tags.
        * dwarfout.c (output_formal_types): Set TREE_ASM_WRITTEN before
        traversing the parameter types.
        (output_type): No early exit for FUNCTION_TYPE / METHOD_TYPE context.

From-SVN: r17811
1998-02-09 14:15:14 -07:00
Todd Vierling
35de800fd4 * fixincludes: Tweak fix for struct exception in math.h
From-SVN: r17810
1998-02-09 14:09:45 -07:00
Jeff Law
49d1a05bc7 Fix minor nit from being a mainline patch into the release branch.
From-SVN: r17797
1998-02-08 17:56:08 -07:00
Jeff Law
bdefce42b2 Tweak so folks don't confuse this stuff with the egcs-1.0.1 release.
From-SVN: r17796
1998-02-08 17:34:20 -07:00
Mark Mitchell
5d9d4b78d5 integrate.c (get_label_from_map): New function.
* integrate.c (get_label_from_map): New function.
        (expand_inline_function): Use it.  Initialize the label_map to
        NULL_RTX instead of gen_label_rtx.
        (copy_rtx_and_substitute): Use get_label_from_map.
        * integrate.h (get_label_from_map): New function.
        (set_label_from_map): New macro.
        * unroll.c (unroll_loop): Use them.
        (copy_loop_body): Ditto.
        * toplev.c (rest_of_compilation): Don't call save_for_inline_copy
        if all we're doing is dealing with -Wreturn-type.

From-SVN: r17795
1998-02-08 17:30:57 -07:00
Jeff Law
1ef1fc006f x-sco5 (CC): Remove trailing whitespace.
* i386/x-sco5 (CC): Remove trailing whitespace.
        * i386/sco5.h (STARTFILE_SPEC, ENDFILE_SPEC): Correctly handle
        "-static".

From-SVN: r17794
1998-02-08 17:05:49 -07:00
Craig Burley
db1e9ec96f Fix -fpedantic combined with `F()' invocation,
also -fugly-comma combined with `IARGC()' invocation:
        * bad.def (FFEBAD_NULL_ARGUMENT_W): New diagnostic.
        * expr.c (ffeexpr_finished_): Don't reject null expressions
        in the argument-expression context -- let outer context
        handle that.
        (ffeexpr_token_arguments_): Warn about null expressions
        here if -fpedantic (as appropriate).
        Obey -fugly-comma for only external-procedure invocations.

From-SVN: r17792
1998-02-08 16:50:28 -07:00
Craig Burley
09f009c66f lang-options.h: Add -fgnu-intrinsics-* and -fbadu77-intrinsics-* options.
* lang-options.h: Add -fgnu-intrinsics-* and
        -fbadu77-intrinsics-* options.

From-SVN: r17791
1998-02-08 16:48:09 -07:00
Richard Kenner
9e6ff9720c * stmt.c (pushcase_range): Clean up handling of "infinite" values.
From-SVN: r17790
1998-02-08 16:42:01 -07:00
Jeff Law
1cf6e81ebd Bring egcs-1.0.2's libstdc++ up to libstdc++ 2.8.0.
From-SVN: r17789
1998-02-08 16:13:33 -07:00
Jason Merrill
22be406441 Makefile.in (install): Remove the shared library symlink even if we aren't installing it.
* Makefile.in (install): Remove the shared library symlink even if
        we aren't installing it.

From-SVN: r17788
1998-02-08 16:07:50 -07:00
Jim Wilson
a571a47df6 function.c (assign_parms): New variable named_arg, with value depending on STRICT_ARGUMENT_NAMING.
* function.c (assign_parms): New variable named_arg, with value
        depending on STRICT_ARGUMENT_NAMING.  Use instead of ! last_named.

From-SVN: r17787
1998-02-08 16:01:35 -07:00
Richard Kenner
d785152f1e loop.c (strength_reduce): When placing increment for auto-inc case, do comparison in loop order.
* loop.c (strength_reduce): When placing increment for auto-inc
        case, do comparison in loop order.

From-SVN: r17786
1998-02-08 15:59:47 -07:00
Scott Snyder
99d73a5bdb * method.c (make_thunk): Avoid name buffer overflow.
From-SVN: r17785
1998-02-08 15:57:54 -07:00
Jason Merrill
03dd49a5ae decl.c (cp_finish_decl): When bailing on a comdat variable, also unset DECL_NOT_REALLY_EXTERN.
* decl.c (cp_finish_decl): When bailing on a comdat variable, also
        unset DECL_NOT_REALLY_EXTERN.

From-SVN: r17480
1998-01-25 10:14:55 -07:00
Jeff Law
e9605a1375 Various egcs-1.0.1 related changes.
From-SVN: r17282
1998-01-02 16:38:15 -07:00
Jeff Law
cc7147b09a Fix typo.
From-SVN: r17243
1997-12-26 14:38:32 -07:00
Jim Wilson
8e93a9b021 mips.c (mips_expand_epilogue): Emit blockage insn before call to save_restore_insns if...
* mips.c (mips_expand_epilogue): Emit blockage insn before call to
	save_restore_insns if no FP and GP will be restored.
	* abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT,
	and define __LONG_MAX__ appropriately.  Add support for -mabi=X,
	-mlong64, and -mgp{32,64} options.
	* mips.c (mips_abi): Change type to int.
	* mips.h (enum mips_abi_type): Delete.
	(ABI_32, ABI_N32, ABI_64, ABI_EABI): Define as constants.
	(mips_abi): Change type to int.

From-SVN: r17228
1997-12-24 15:06:54 -07:00
Jeffrey A Law
70b6178184 * verison.c: Bump for beta release of egcs-1.0.1.
From-SVN: r17184
1997-12-22 01:59:18 -07:00
Jeff Law
8cf3875bbc haifa-sched.c (create_reg_dead_note): Detect and handle another case where we kill more regs after sched than were...
* haifa-sched.c (create_reg_dead_note): Detect and handle another
        case where we kill more regs after sched than were killed before
        sched.
        * sched.c (create_reg_dead_note): Similarly.

[[Split portion of a mixed commit.]]

From-SVN: r17182.1
1997-12-22 01:55:43 -07:00
Jeff Law
f91abed3f9 Rebuilt.
From-SVN: r17181
1997-12-22 01:47:01 -07:00
Jeff Law
4bef1d02be Clarify a comment.
From-SVN: r17175
1997-12-21 13:54:36 -07:00
Jeffrey A Law
665888b2b6 pa.c (emit_move_sequence): Handle a function label source operand.
* pa.c (emit_move_sequence): Handle a function label source
        operand.

From-SVN: r17173
1997-12-21 13:44:33 -07:00
David Edelsohn
0ecab26a23 rs6000.h (FUNCTION_ARG_PADDING): Define.
* rs6000.h (FUNCTION_ARG_PADDING): Define.
        * rs6000.c (function_arg_padding): New function.

From-SVN: r17162
1997-12-20 08:11:26 -07:00
Jeff Law
46dc31e022 Move <stddef.h> include before "frame.h"
From-SVN: r17161
1997-12-20 06:21:03 -07:00
Paul Eggert
2cf2492a13 frame.h (__register_frame, [...]): New.
* frame.h (__register_frame, __register_frame_table,
        __deregister_frame): New.
        * frame.c (__register_frame, __register_frame_table,
        __deregister_frame): New.
        * frame.c (__deregister_frame_info): Return void *.
        * frame.h (__deregister_frame_info): Ditto.
        * collect2.c (__deregister_frame_info): Ditto.
        * frame.h (__register_frame_info_table): Fix typo in declaration.
        * frame.c (__register_frame_info): Renamed from __register_frame.
        (__register_frame_info_table, __deregister_frame_info): Similarly.
        * frame.h (__{,de}register_frame_info): Likewise.
        (__register_frame_info_table): New declaration.
        * crtstuff.c (__do_global_dtors{,_aux}): Rename __deregister_frame.
        (frame_dummy, __do_global_ctors): Likewise for __register_frame.
        * collect2.c (write_c_file_{stat,glob}): Rename __register_frame
        to __register_frame_info and similarly for __deregister_frame and
        __register_frame_table.
        * collect2.c (write_c_file_glob):
        Allocate initial frame object in static storage and pass its address.
        * crtstuff.c (__do_global_ctors): Fix typo in last change.
        * crtstuff.c (__do_global_ctors): Add missing arg to __register_frame.
        * collect2.c (write_c_file_stat): Fix error in last change;
        use __SIZE_TYPE__, not size_t.
        Alter C startup code so that it doesn't invoke malloc on Solaris.
        * frame.h (struct object): Decl moved here from frame.c.
        * frame.c (struct object): Move decl to frame.h.
        ("frame.h"): Include after <stddef.h>, so that size_t is defined.
        (__register_frame, __register_frame_table, __deregister_frame):
        It's now the caller's responsibility to allocate storage for object.
        * crtstuff.c (frame_dummy), collect2.c (write_c_file_stat):
        Allocate initial frame object in static storage and pass its address.
        * crtstuff.c (<stddef.h>, "frame.h"): Include.
        * Makefile.in ($(T)crtbegin.o, $(T)crtend.o, stamp-crtS):
        Depend on defaults.h and frame.h.
The oh so fun changes in __register_frame* interface stuff.

Co-Authored-By: H.J. Lu <hjl@gnu.org>
Co-Authored-By: Richard Kenner <kenner@vlsi1.ultra.nyu.edu>

From-SVN: r17160
1997-12-20 05:37:59 -07:00
Jason Merrill
d77f84b246 * pt.c (instantiate_decl): Defer all templates but inline functions.
From-SVN: r17159
1997-12-20 04:58:49 -07:00
Richard Kenner
7a0a316ee0 i386.h (INITIAL_ELIMINATION_OFFSET): Correctly test for PIC register used.
* i386.h (INITIAL_ELIMINATION_OFFSET): Correctly test for PIC
        register used.

From-SVN: r17153
1997-12-19 01:59:33 -07:00
Bernd Schmidt
41557c9e76 combine.c (simplify_rtx, case ABS): Don't get confused by a VOIDmode operand.
* combine.c (simplify_rtx, case ABS): Don't get confused by a
        VOIDmode operand.
Another x86 codegen bug exposed by latest glibc.

From-SVN: r17152
1997-12-19 01:53:18 -07:00
Jeffrey A Law
20023daf91 t-sol2 (CRTSTUFF_T_CFLAGS): Turn on the optimizer.
* i386/t-sol2 (CRTSTUFF_T_CFLAGS): Turn on the optimizer.
So egcs-1.0.1 will build/run out of the box on x86-solaris.

From-SVN: r17151
1997-12-19 01:48:57 -07:00
Bernd Schmidt
5e37f712a8 i386.c (notice_update_cc): Remove bogus pentium GCC code.
* i386.c (notice_update_cc): Remove bogus pentium GCC code.
Fix x86 codegen bug exposed by latest glibc.

From-SVN: r17150
1997-12-19 01:47:13 -07:00
Jason Merrill
fb7f625d37 cp-tree.h (struct lang_decl_flags): Add comdat.
* cp-tree.h (struct lang_decl_flags): Add comdat.
	(DECL_COMDAT): New macro.
	* decl.c (duplicate_decls): Propagate it.
	(cp_finish_decl): Handle it.
	* decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.

From-SVN: r17149
1997-12-19 01:38:33 -07:00
Jeffrey A Law
ef9fdf4063 * stmt.c (warn_if_unused_value): Don't warn for TRY_CATCH_EXPR.
From-SVN: r17148
1997-12-19 01:36:07 -07:00
Jason Merrill
c768367f97 except.c (expand_start_catch_block): suspend_momentary for the terminate handler.
* except.c (expand_start_catch_block): suspend_momentary for the
        terminate handler.
Critical EH bugfix for egcs-1.0.1.

From-SVN: r17147
1997-12-19 01:34:04 -07:00
H.J. Lu
ba74fdcabf configure.in (target frags): Add *-linux-gnu.
* configure.in (target frags): Add *-linux-gnu.
        * streambuf.cc (streambuf::~streambuf): Don't delete _lock
        for _IO_stdin/_IO_stdout/_IO_stderr.
RH5.0 support for egcs-1.0.1.

From-SVN: r17146
1997-12-19 01:32:04 -07:00
Jeffrey A Law
9ced742dd7 stmt.c (expand_asm_operands): If an ASM has no outputs, then treat it as volatile.
* stmt.c (expand_asm_operands): If an ASM has no outputs, then treat
	it as volatile.
Don't miscompile Linux kernels for egcs-1.0.1.

From-SVN: r17145
1997-12-19 01:29:39 -07:00
Richard Henderson
a803aef793 * com.c (ffecom_type_vardesc_): Vardesc.dims is a `ftnlen*'.
From-SVN: r17101
1997-12-15 08:38:18 -08:00
No Author
f752601513 This commit was manufactured by cvs2svn to create branch
'egcs_1_00_branch'.

From-SVN: r16992
1997-12-07 10:33:36 +00:00
Jeffrey A Law
be199bba25 * egcs-1.0 release.
* configure (gxx_include_dir): Fix thinko.

From-SVN: r16925
1997-12-03 08:54:34 -07:00
Jeffrey A Law
2b608dc1a6 * version.c: Update for egcs-1.0 release.
From-SVN: r16905
1997-12-03 01:12:11 -07:00
Jeff Law
a9acaaf952 More doc stuff for egcs-1.0 release.
From-SVN: r16904
1997-12-03 01:08:39 -07:00
Jeff Law
8267f8537f Various doc fixes for egcs-1.0 release.
From-SVN: r16903
1997-12-03 01:07:58 -07:00
Jeff Law
495e08fe92 Tweak for egcs.
From-SVN: r16902
1997-12-03 00:28:06 -07:00
Jeff Law
d3dafdc105 Patch from jason.
From-SVN: r16901
1997-12-02 23:02:05 -07:00
Jeff Law
9f76b2e45a Update from Jason.
From-SVN: r16900
1997-12-02 22:39:11 -07:00
Jeff Law
5091895c33 Remove last delta.
From-SVN: r16899
1997-12-02 22:26:30 -07:00
Jeff Law
14fedef297 Minor addition to template stuff that isn't supported.
From-SVN: r16898
1997-12-02 21:30:44 -07:00
Jeff Law
76137ec33f More tweakage
From-SVN: r16897
1997-12-02 21:23:53 -07:00
Bruno Haible
ede0267db0 makeinfo.c (find_and_load, [...]): Zero-terminate the file contents.
* makeinfo/makeinfo.c (find_and_load, convert_from_stream):
        Zero-terminate the file contents.

From-SVN: r16892
1997-12-02 13:18:39 -07:00
Jeff Law
26454846e3 More doc stuff.
From-SVN: r16890
1997-12-02 13:15:31 -07:00
Jeff Law
12e4154db5 Another tweak.
From-SVN: r16889
1997-12-02 10:55:40 -07:00
Jeff Law
af7b14d22c More tweaks.
From-SVN: r16887
1997-12-02 10:50:50 -07:00
Jeff Law
3a734db370 Tweaks.
From-SVN: r16886
1997-12-02 10:29:17 -07:00
Jeff Law
6d6072abdb C9X draft.
From-SVN: r16884
1997-12-02 10:01:01 -07:00
Jeff Law
19360d7ec3 Tweak fror egcs release.
From-SVN: r16882
1997-12-02 09:48:04 -07:00
Jeffrey A Law
ec7d9d8374 * version.c: Bump for snapshot.
From-SVN: r16876
1997-12-01 15:33:46 -07:00
Jim Wilson
86d7f04809 mips.md (fix_truncdfsi2, [...]): Change *.
* mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2,
        fix_truncsfdi2): Change *.

From-SVN: r16875
1997-12-01 15:24:11 -07:00
Jeff Law
43a5d5f69f Various doc updates.
From-SVN: r16874
1997-12-01 15:21:13 -07:00
Jeff Law
70348dbe8c Installation stuff.
From-SVN: r16870
1997-12-01 14:46:33 -07:00
Jeff Law
5a329fbdc1 egcs is not something you can order from the FSF.
From-SVN: r16868
1997-12-01 12:46:27 -07:00
Jason Merrill
a0c183e435 * stmt.c (expand_decl_cleanup): Update thisblock after eh_region_start.
From-SVN: r16863
1997-11-30 19:56:55 -07:00
David Edelsohn
8663984845 * rs6000.c (function_arg_partial_nregs): Undo Nov. 26 patch.
From-SVN: r16855
1997-11-29 14:37:41 -07:00
David Edelsohn
6a0ef5713d * rs6000/aix41.h (ASM_CPU_SPEC): Define.
From-SVN: r16854
1997-11-29 12:42:27 -07:00
Jeffrey A Law
06651d44fa * sh/elf.h (PREFERRED_DEBUGGING_TYPE): Prefer stabs again.
From-SVN: r16832
1997-11-28 12:31:06 -07:00
Jeffrey A Law
b93e562d78 * arm.md (movsfcc, movdfcc): Fix "patch" lossage.
From-SVN: r16822
1997-11-28 10:11:43 -07:00
Jeffrey A Law
75035e2703 * configure.in: Fix NCR entries.
From-SVN: r16820
1997-11-28 10:02:46 -07:00
Jeffrey A Law
14c29c4a27 * version.c: Bump for snapshot.
From-SVN: r16814
1997-11-27 20:24:45 -07:00
Jason Merrill
60ac04b1bb * except.c: Call terminate without caching so many bits.
From-SVN: r16813
1997-11-27 20:23:04 -07:00
Jeffrey A Law
012f028aa5 flow.c (find_basic_blocks): Handle cfg issues for rethrows and nested exceptions correctly.
* flow.c (find_basic_blocks): Handle cfg issues for rethrows and
        nested exceptions correctly.

From-SVN: r16811
1997-11-27 20:05:02 -07:00
Jeffrey A Law
8ea8344137 unroll.c (find_splittable_givs): Don't split givs with a dest_reg that was created by loop.
* unroll.c (find_splittable_givs): Don't split givs with a dest_reg
        that was created by loop.
Fixes bzip2 bug.

From-SVN: r16802
1997-11-27 12:23:00 -07:00
Jeff Law
93cea42399 Fix typo.
From-SVN: r16801
1997-11-27 10:29:25 -07:00
Jason Merrill
3819b88a28 class.c: Remove static pending_hard_virtuals.
* class.c: Remove static pending_hard_virtuals.
        (add_virtual_function): Take pointers to pending_virtuals
        and pending_hard_virtuals.
        (finish_struct_1): Pass them.  Declare pending_hard_virtuals.

From-SVN: r16800
1997-11-27 09:41:52 -07:00
Jason Merrill
02790d8320 * expr.c (preexpand_calls): Don't look past a TRY_CATCH_EXPR.
From-SVN: r16799
1997-11-27 09:39:37 -07:00
Jason Merrill
7286055c93 * except.c (expand_start_all_catch): One more do_pending_stack_adjust.
From-SVN: r16798
1997-11-27 09:36:58 -07:00
Richard Earnshaw
15994d38d5 arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3] valid.
* arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3]
        valid.

From-SVN: r16797
1997-11-27 09:35:21 -07:00
Jeffrey A Law
723ee92c8b Makefile.in (INSTALL_TARGET): Do install-gcc first.
* Makefile.in (INSTALL_TARGET): Do install-gcc first.
        * configure (gxx_include_dir): Provide a definition for subdirs
        which do not use autoconf.

From-SVN: r16783
1997-11-27 01:35:31 -07:00
Jeffrey A Law
06a9dfe96b Makefile.in (insatll): Change gxx_includedir to gcc_include_dir.
* Makefile.in (insatll): Change gxx_includedir to gcc_include_dir.
        * config.shared (gxx_includedir): Remove default definition.
        * config/linux.mt: Change gxx_includedir to gxx_include_dir.
        * config/linuxaxp1.mt: Likewise.

From-SVN: r16782
1997-11-27 01:34:24 -07:00
Jeffrey A Law
286a0ba36f * Makefile.in (install): Change gxx_includedir to gxx_include_dir.
From-SVN: r16781
1997-11-27 01:33:13 -07:00
Jeff Law
4d171019b8 New entry.
From-SVN: r16778
1997-11-27 00:30:53 -07:00
Jason Merrill
646a55305d rtti.c (build_dynamic_cast): Handle template case here.
* rtti.c (build_dynamic_cast): Handle template case here.
        (build_dynamic_cast_1): Not here.

        * typeck2.c (digest_init): Make copies where appropriate.

        * decl2.c (delete_sanity): resolve_offset_ref.

        * except.c (expand_throw): Call mark_used on the destructor.

From-SVN: r16777
1997-11-26 23:47:05 -07:00
Jeff Law
727245674f New test.
From-SVN: r16776
1997-11-26 23:40:05 -07:00
Mark Mitchell
8f9f8b0aa5 pt.c (unify): Handle `void' template parameters in specializations.
* pt.c (unify): Handle `void' template parameters in
        specializations.

From-SVN: r16775
1997-11-26 23:39:10 -07:00
Jason Merrill
0981c341b5 * except.c (expand_throw): Call mark_used on the destructor.
From-SVN: r16774
1997-11-26 23:36:32 -07:00
Michael Meissner
cfc51775f3 rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
* rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
        (print_operand): Use SMALL_DATA_REG for the register involved in
        small data relocations.
        (print_operand_address): Ditto.

        * rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if
        -dynamic linker is not used.

        * rs6000.md (call insns): For local calls, use @local suffix under
        System V.  Don't use @plt under Solaris.

From-SVN: r16771
1997-11-26 17:06:53 -07:00
Richard Henderson
563e36c075 configure.in (target frags): Add powerpc*-linux-gnulibc1.
* configure.in (target frags): Add powerpc*-linux-gnulibc1.
        (stdio-lock): Similarly.

        * configure.in (target frags): Add alpha*-linux-gnulibc1.
        (pic frags): Its alpha*- not alpha-.
        (stdio-lock): Kill everything.  Add alpha*-linux-gnulibc1.
        * libio.h: Check __GLIBC_MINOR__ to find stdio-lock.h.  If not
        _IO_MTSAFE_IO & GLIBC, make sure the lock pointer is still there.
        * libioP.h: Check __GLIBC_MINOR__ to find libc-lock.h.

        * config/linuxaxp1-libc-lock.h: New file.
        * config/linuxaxp1-stdio-lock.h: New file.
        * config/linuxaxp1.mt: New file.

        * gen-params (va_list): Check for and use __gnuc_va_list.
        (NULL): Work around some linux kernel headers and redefine NULL.
Cater to RH powerpc & alpha Linux systems with pre-release versions
of glibc2.

From-SVN: r16767
1997-11-26 16:14:44 -07:00
Jeffrey A Law
9a8c1559d1 * From Franz Sirl.
* config.guess (powerpc*-*-linux): Handle glibc2 beta release
        found on RedHat Linux systems.

From-SVN: r16766
1997-11-26 16:07:52 -07:00
Michael Meissner
8ef1b93db4 rs6000.c (output_function_profiler): Put label address in r0, and store LR in 4(sp) for System V/eabi.
* rs6000.c (output_function_profiler): Put label address in r0, and
        store LR in 4(sp) for System V/eabi.

        * rs6000.h (ASM_OUTPUT_REG_{PUSH,POP}): Keep stack aligned to 16
        byte boundary, and maintain stack backchain.

From-SVN: r16759
1997-11-26 14:29:00 -07:00
Michael Meissner
ef32ca543b (patches originally from Geoffrey Keating)
(patches originally from Geoffrey Keating)
        * rs6000.c (function_arg): Excess floating point arguments don't
        go into GPR registers after exhausting FP registers under the
        System V.4 ABI.
        (function_arg_partial_nregs): Ditto.

        * rs6000.md (call insns): If -fPIC or -mrelocatable, add @plt
        suffix to calls.

From-SVN: r16758
1997-11-26 14:26:23 -07:00
Jeff Law
a7ec16dd3d Forgot to commit last night.
From-SVN: r16757
1997-11-26 14:22:08 -07:00
Jason Merrill
03fbbb5896 * toplev.c (main): Complain about -gdwarfn.
From-SVN: r16750
1997-11-26 13:02:50 -07:00
Jason Merrill
6ba67f47c6 dwarf2out.c (outout_call_frame_info): Ensure that the info has proper alignment.
* dwarf2out.c (outout_call_frame_info): Ensure that the info has
        proper alignment.

        * libgcc2.c (__throw): Initialize HANDLER.

From-SVN: r16725
1997-11-26 00:40:30 -07:00
Jason Merrill
81d76e3821 dwarfout.c (output_type): If finalizing, write out nested types of types we've already written.
* dwarfout.c (output_type): If finalizing, write out nested types
        of types we've already written.

From-SVN: r16723
1997-11-26 00:32:52 -07:00
Jason Merrill
d5f93fcf83 * init.c (build_new): Copy size to the saveable obstack.
From-SVN: r16721
1997-11-25 23:20:36 -07:00
Jeff Law
cb304028e6 Fix typo.
From-SVN: r16719
1997-11-25 22:13:15 -07:00
J"orn Rennecke
51612eb96d elf.h (PREFERRED_DEBUGGING_TYPE): Undefine before including svr4.h.
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Undefine before including
        svr4.h.

        * sh/elf.h (PREFERRED_DEBUGGING_TYPE): Don't redefine.

        * sh/elf.h (HANDLE_SYSV_PRAGMA): Undefine.

        * sh/elf.h: (LINK_SPEC): Use shlelf.
        (USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX, ASM_FILE_START): Redefine.

        * sh.h: dwarf patches from Fred Fish.

From-SVN: r16717
1997-11-25 16:53:32 -07:00
Jeff Law
ed056cffc8 Fix from HJ.
From-SVN: r16715
1997-11-25 16:34:01 -07:00
Jeff Law
00ec9a5eca New entry.
From-SVN: r16713
1997-11-25 16:29:29 -07:00
Kate Hedstrom
b8e6c0dccd * lib/f-torture.exp: Improve error and loop detection.
From-SVN: r16710
1997-11-25 16:17:15 -07:00
Jeff Law
73c31ac78f xfail a couple tests for the release.
[[Split portion of a mixed commit.]]

From-SVN: r16709.1
1997-11-25 15:31:27 -07:00
Jason Merrill
3a2922ddc9 init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the TRY_CATCH_EXPR for now.
* init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
        TRY_CATCH_EXPR for now.

From-SVN: r16708
1997-11-25 14:27:19 -07:00
Jeff Law
1ac9d634cb conversion.c (test_float_to_integer): Make double precision tests dependent on sizeof (double).
* conversion.c (test_float_to_integer): Make double precision tests
	dependent on sizeof (double).

From-SVN: r16707
1997-11-25 14:10:57 -07:00
J"orn Rennecke
942f225e5e va-sh.h (__va_arg_sh1): Define.
* va-sh.h (__va_arg_sh1): Define.
        (va_arg): Use it.
        SH3E doesn't use any integer registers for subsequent arguments
        once a non-float value was passed in the stack.
        * sh.h (PASS_IN_REG_P): Fix SH3E case.

From-SVN: r16706
1997-11-25 14:09:44 -07:00
H.J. Lu
c796a36caa Makefile.in (stmp-complex, [...]): Changed to xxxx-complx.
* Makefile.in (stmp-complex, bigstmp-complex): Changed to
        xxxx-complx.

From-SVN: r16704
1997-11-25 14:01:31 -07:00
Richard Henderson
bf42905928 * alpha.h (CONST_OK_FOR_LETTER): Fix 'L' handling.
From-SVN: r16702
1997-11-25 13:53:07 -07:00
Jeffrey A Law
a76f89932c configure.in (alphaev56*-*-*): Disable MASK_BYTE_OPS until ev56 support works correctly.
* configure.in (alphaev56*-*-*): Disable MASK_BYTE_OPS until
        ev56 support works correctly.

From-SVN: r16700
1997-11-25 13:06:58 -07:00
Jason Merrill
b55e00bd69 exception.cc (struct cp_eh_info): Add handlers field.
* exception.cc (struct cp_eh_info): Add handlers field.
        (__cp_push_exception): Initialize it.
        (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
        (__throw_bad_exception): Remove.
        * except.c (call_eh_info): Add handlers field.
        (get_eh_handlers): New fn.
        (push_eh_cleanup): Increment handlers.

From-SVN: r16699
1997-11-25 12:34:14 -07:00
Jeffrey A Law
52907c9897 * crtstuff.c (do_global_dtors_aux): Handle multiple calls better.
From-SVN: r16697
1997-11-25 09:58:18 -07:00
Jeffrey A Law
bfba1e3d3b Makefile.in: Use ln -f -s, not ln -s -f.
* Makefile.in: Use ln -f -s, not ln -s -f.
x86-solaris2.5 doesn't like -s -f ordering.

From-SVN: r16692
1997-11-24 14:40:27 -07:00
Jeff Law
0a0f3e7885 Doc fixes from Stan.
From-SVN: r16690
1997-11-24 13:52:10 -07:00
Jeffrey A Law
823634555a * version.c: Bump for snapshot.
From-SVN: r16688
1997-11-23 12:59:21 -07:00
Jeffrey A Law
67af3bf1e1 pa-hpux10.h (NEW_HP_ASSEMBLER): Define.
* pa-hpux10.h (NEW_HP_ASSEMBLER): Define.
        * pa.h (LEGITIMATE_CONSTANT_P): Reject LABEL_REFs if not using
        gas and not using the new HP assembler.


Also remove unwanted pa.md change accidentally committed.

From-SVN: r16684
1997-11-22 18:57:15 -07:00
Jeffrey A Law
e4bd01fc09 Makefile.in (program_transform_cross_name): Clean up "-e" confusion.
* Makefile.in (program_transform_cross_name): Clean up "-e" confusion.
        (GCC_INSTALL_NAME, GCC_CROSS_NAME): Likewise.

From-SVN: r16666
1997-11-22 00:53:39 -07:00
Manfred Hollstein
135729bd63 Makefile.in (bigstmp-complex): Name changed to bigstmp-complx to cope with filesystem not capable to handle...
* Makefile.in (bigstmp-complex): Name changed to bigstmp-complx to
	cope with filesystem not capable to handle names longer than
	14 characters.

From-SVN: r16663
1997-11-21 20:34:43 -07:00
Manfred Hollstein
d14de6e74c Makefile.in: Add --no-split argument to avoid creating files with names longer than 14...
* Makefile.in: Add --no-split argument to avoid creating files
	with names longer than 14 characters.

From-SVN: r16662
1997-11-21 20:34:17 -07:00
Jeffrey A Law
1392e1900c * i386.h (TARGET_CMOV): Disable conditional moves for this release.
From-SVN: r16661
1997-11-21 20:29:14 -07:00
No Author
036dd21d41 This commit was manufactured by cvs2svn to create branch
'egcs_1_00_branch'.

From-SVN: r16658
1997-11-21 21:36:00 +00:00
Jason Merrill
261c05ad46 revert new throw spec change
From-SVN: r16657
1997-11-21 16:13:19 -05:00
Jason Merrill
67de69fd49 revert large changes
From-SVN: r16656
1997-11-21 16:10:09 -05:00
Jason Merrill
11c4a5a2e8 revert large changes
From-SVN: r16655
1997-11-21 16:04:23 -05:00
Jason Merrill
ec8373300d except.c (expand_start_eh_spec): Use the try/catch code.
* except.c (expand_start_eh_spec): Use the try/catch code.
	(expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
	doing everything inline.
	(init_exception_processing): throw_type_match now takes
 	const void pointers.
	* exception.cc (__check_eh_spec): New fn.
	* inc/exception: Neither terminate nor unexpected return.
	* decl.c: Make const_ptr_type_node public.
	* tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.

From-SVN: r16652
1997-11-21 15:29:39 -05:00
Jeff Law
a8b708d130 Fix typo.
From-SVN: r16650
1997-11-21 13:25:40 -07:00
Jason Merrill
6c7d009424 except.c (expand_start_catch_block): We only need the rethrow region for non-sjlj exceptions.
* except.c (expand_start_catch_block): We only need the rethrow
 	region for non-sjlj exceptions.
	(expand_end_catch_block): Likewise.  Use outer_context_label_stack.

From-SVN: r16647
1997-11-21 15:23:42 -05:00
Jason Merrill
8faadf1c45 except.h: Add outer_context_label_stack.
* except.h: Add outer_context_label_stack.
	* except.c: Likewise.
	(expand_start_all_catch): Push the outer_context for the try block
 	onto outer_context_label_stack.
	(expand_end_all_catch): Use it and pop it.

From-SVN: r16646
1997-11-21 15:21:39 -05:00
Fred Fish
7835fcb96f Make-lang.in (stmp-f2c.h): Move inclusion of F77_FLAGS_TO_PASS to before override of CC so that the...
* Make-lang.in (stmp-f2c.h): Move inclusion of F77_FLAGS_TO_PASS
        to before override of CC so that the override works.

From-SVN: r16643
1997-11-21 10:22:06 -07:00
Robert Lipe
16683156e1 * i386/sco5.h (HAVE_ATEXIT): Revert last change.
From-SVN: r16640
1997-11-21 10:12:52 -07:00
Jeff Law
858e168d7f Forgot to actually check it in.
From-SVN: r16638
1997-11-21 10:06:01 -07:00
Jeff Law
bb0acf84f9 config.guess (alpha stuff): Merge with FSF to avoid incorrect guesses.
* config.guess (alpha stuff): Merge with FSF to avoid incorrect
        guesses.

From-SVN: r16637
1997-11-21 09:50:37 -07:00
Jason Merrill
aa0defa73c tests
From-SVN: r16628
1997-11-20 23:04:33 -05:00
Richard Henderson
286e6ab133 * alpha.c (alpha_emit_set_const_1): Handle narrow hosts better.
From-SVN: r16626
1997-11-20 19:07:26 -07:00
Jeff Law
3be6e264b2 Minor fix from meissner.
From-SVN: r16624
1997-11-20 16:40:57 -07:00
Klaus Kaempf
4b377d5ea1 vms.h (ASM_OUTPUT_ADDR_VEC_ELT): Add an L for the local label to correspond with the change to...
* alpha/vms.h (ASM_OUTPUT_ADDR_VEC_ELT): Add an L for the local label
        to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.

From-SVN: r16621
1997-11-20 16:34:57 -07:00
Jason Merrill
988cf86b46 Makefile.in (LIB2FUNCS): Remove C++ memory management support.
./:	* Makefile.in (LIB2FUNCS): Remove C++ memory management support.
	* libgcc2.c: Remove __builtin_new, __builtin_vec_new, set_new_handler,
	__builtin_delete, and __builtin_vec_delete.

	* except.c (output_exception_table): Don't bother with
 	__EXCEPTION_END__.

cp/:
	* Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
	(various.o): Likewise.
	* inc/new: Add placement deletes.  Add throw specs for default new.
	* new.cc (set_new_handler): Move here from libgcc2.
	* new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
	(new): Move from libgcc2.  Throw bad_alloc.
	* new2.cc: Move the rest of the op news and op deletes from libgcc2.
	* decl.c (init_decl_processing): Update exception specs on new and
	delete.

From-SVN: r16619
1997-11-20 18:21:26 -05:00
Jeffrey A Law
4fac523af0 pa.md (pre_stwm, [...]): Base register is an in/out operand.
* pa.md (pre_stwm, post_stwm, pre_ldwm, post_ldwm): Base register
        is an in/out operand.
        (zero extended variants of stwm/stwm patterns): Similarly.

From-SVN: r16618
1997-11-20 16:19:01 -07:00
Jeffrey A Law
00dfbe1ae5 * mips/x-iris (FIXPROTO_DEFINES): Add -D_SGI_SOURCE.
From-SVN: r16615
1997-11-20 16:09:41 -07:00
Jason Merrill
b957dce210 method.c (build_decl_overload_real): Don't mess with global placement delete.
* method.c (build_decl_overload_real): Don't mess with global
	placement delete.

	* init.c (build_new): Check for null throw spec, not nothrow_t.

	* decl.c (duplicate_decls): Don't complain about different exceptions
	from an internal declaration.

	* call.c (build_op_delete_call): Fix check for member fns again.

	* decl2.c (import_export_decl): Interface hackery affects
	virtual synthesized methods.

From-SVN: r16611
1997-11-20 17:42:37 -05:00
Jason Merrill
9a23f86ad7 dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
* dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
	Use assemble_name.
	(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Use assemble_name.
	(output_call_frame_info): Emit a \n after using it.

From-SVN: r16608
1997-11-20 16:38:39 -05:00
Jeff Law
33d6a14e5b Patch from meissner.
From-SVN: r16596
1997-11-20 01:09:56 -07:00
H.J. Lu
5cf8e6165f * Make-lang.in (f77.install-info): Depend on f77.info.
From-SVN: r16594
1997-11-20 00:55:53 -07:00
Dave Love
56263a063a * configure.in: Add AC_ARG_ENABLE for Haifa as documentation.
From-SVN: r16592
1997-11-20 00:38:41 -07:00
Jason Merrill
4010c87762 decl.c (start_decl): Don't just complain about a mismatched scope, fix it.
* decl.c (start_decl): Don't just complain about a mismatched
	scope, fix it.

From-SVN: r16590
1997-11-19 23:42:10 -05:00
Jason Merrill
ee3644d3b3 decl.c (make_implicit_typename): Handle case where t is not actually from context.
* decl.c (make_implicit_typename): Handle case where t is not
 	actually from context.
	* tree.c (get_type_decl): Lose identifier case.
	* spew.c (yylex): Lose useless call to identifer_typedecl_value.
	* parse.y (nonnested_type): Just use lookup_name.
	(complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.

From-SVN: r16588
1997-11-19 22:55:02 -05:00
Philippe De Muyter
d4f68a8339 dwarf2out.c (CIE_LENGTH_LABEL, [...]): New macros.
Wed Nov 19 12:03:04 1997  Philippe De Muyter  <phdm@macqel.be>

	* dwarf2out.c (CIE_LENGTH_LABEL, FDE_LENGTH_LABEL): New macros.
	(ASM_OUTPUT_DWARF_VALUE4): New macro.
	(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Define if SET_ASM_OP is
	defined.
	(output_call_frame_info): Do not output forward label differences
	if ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL is defined.
	* m68k/mot3300.h (SET_ASM_OP): Define when not using gas.

From-SVN: r16583
1997-11-19 14:51:48 -05:00
Jason Merrill
ca6de10f6a decl.c (make_implicit_typename): New fn.
* decl.c (make_implicit_typename): New fn.
	(lookup_name_real): Use it.  Use current_class_type as the context.

From-SVN: r16580
1997-11-19 13:41:17 -05:00
Jeff Law
dcc7ba04b1 New test.
From-SVN: r16577
1997-11-19 09:19:25 -07:00
Jim Wilson
cb395d583f mips.c (save_restore_insns): If gp_offset or fp_offset are large_int...
* mips/mips.c (save_restore_insns): If gp_offset or fp_offset are
        large_int, emit two insns instead of one splitable insn.
        * dwarf2out.c (dwarf2out_frame_debug): When set cfa_store_offset
        from cfa_temp_value, use cfa_offset.  Abort if cfa_reg is not SP.

From-SVN: r16576
1997-11-18 22:49:11 -07:00
H.J. Lu
ebd5e1d91d * stdstrbufs.cc (DEF_STDFILE): Use STD_VTABLE.
From-SVN: r16566
1997-11-18 09:51:39 -07:00
Mumit Khan
ee51cb8ea5 close.c (f_exit): Reset f__init so that f_clos does not (incorrectly) think there is an I/O...
* libI77/close.c (f_exit): Reset f__init so that f_clos does not
        (incorrectly) think there is an I/O recursion when program is
        interrupted.

From-SVN: r16564
1997-11-18 09:47:23 -07:00
Bruno Haible
9842107d02 pt.c (do_poplevel): Don't prohibit jumps into this contour.
Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>

	* pt.c (do_poplevel): Don't prohibit jumps into this contour.

From-SVN: r16559
1997-11-18 03:10:11 -05:00
Jason Merrill
991ca513a9 call.c (build_new_method_call): Handle getting a TEMPLATE_ID_EXPR around a TEMPLATE_DECL.
* call.c (build_new_method_call): Handle getting a
 	TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
 	if we got template parms.
	* typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
 	not just the args.
	* decl2.c (build_expr_from_tree): Tweak last change.
	* pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
	(maybe_fold_nontype_arg): Split out from tsubst_copy.
	* tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.

Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>

	* pt.c (tsubst_copy): Handle explicit template arguments in
	function calls.
	* typeck.c (build_x_function_call): Likewise.
	* decl2.c (build_expr_from_tree): Lookup function name if it
	hasn't been done.

	* pt.c (tsubst): Instantiate template functions properly when
	template parameter does not appear in function arguments and return
	type.
	(comp_template_args): Handle member templates required by tsubst.

Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* pt.c (coerce_template_parms): Tweak error message.

From-SVN: r16556
1997-11-18 01:54:29 -05:00
Jason Merrill
d65b9e64e0 search.c (dfs_record_inheritance): Ignore template type parms.
* search.c (dfs_record_inheritance): Ignore template type parms.

Fixes 13688.

	* friend.c (do_friend): Warn about non-template friends in templates.

	* call.c (build_op_delete_call): Fix handling of inherited delete.

From-SVN: r16552
1997-11-17 14:37:07 -05:00
Robert Lipe
f3988e7863 sco5.h (HAVE_ATEXIT): Delete definition.
Fri Nov  7 15:33:11 1997  Robert Lipe (robertl@dgii.com)

        * i386/sco5.h (HAVE_ATEXIT): Delete definition.

From-SVN: r16535
1997-11-16 23:53:51 -07:00
Jeffrey A Law
d1e4a14575 cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl return.
* cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl
        return.
        (cse_end_of_basic_block): Similarly.

From-SVN: r16533
1997-11-16 23:50:55 -07:00
J. Kean Johnston
95c73423f9 sco5.h (ASM_OUTPUT_ALIGNED_BSS): Define.
* i386/sco5.h (ASM_OUTPUT_ALIGNED_BSS): Define.
        (SELECT_RTX_SECTION): Define.
        (LIBGCC_SPEC, LIB_SPEC): Do the right thing for PIC.

From-SVN: r16531
1997-11-16 23:01:16 -07:00
Manfred Hollstein
58ae042a84 Makefile.in (compare, [...]): Define $stage for each shell command.
* Makefile.in (compare, compare-lean): Define $stage for each
        shell command.
        (gnucompare, gnucompare-lean): Likewise.

From-SVN: r16529
1997-11-16 22:45:46 -07:00
Jeffrey A Law
86fcc806d6 * Makefile.in (SHLIB): Build with CC instead of CXX.
From-SVN: r16527
1997-11-16 22:40:38 -07:00
Richard Henderson
9f9dbd6abd win-nt.h (TRAMPOLINE_TEMPLATE): Fix offsets.
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE): Fix offsets.

        * alpha.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add an L for the local label
        to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.

From-SVN: r16525
1997-11-16 22:02:57 -07:00
Jason Merrill
3d1440b3d0 call.c (build_new_op): Fix copy error.
* call.c (build_new_op): Fix copy error.
	(build_op_new_call): New fn.
	(build_op_delete_call): New fn.
	* cp-tree.h: Declare them.
	* init.c (build_new): Use them.  Support placement delete.
	(build_x_delete): Use build_op_delete_call.
	(build_delete): Likewise.
	* decl2.c (delete_sanity): Likewise.
	(coerce_delete_type): Don't complain about placement delete.

Support placement delete.

From-SVN: r16500
1997-11-15 03:36:08 -05:00
Dave Love
970c5441f4 intrin.def: Supply gfrt for CPU_TIME.
1997-11-14  Dave Love  <d.love@dl.ac.uk>

	* intrin.def: Supply gfrt for CPU_TIME.  Generalize arg types of
	INT2, INT8, per doc.

From-SVN: r16494
1997-11-14 08:12:42 -07:00
Jeffrey A Law
cfc5f8beda * version.c: Bump for snapshot.
From-SVN: r16493
1997-11-14 07:59:09 -07:00
Richard Henderson
f5ce08ecc4 expr.c (expand_builtin_setjmp): Set current_function_has_nonlocal_label.
* expr.c (expand_builtin_setjmp): Set
        current_function_has_nonlocal_label.
        * stupid.c (stupid_life_analysis): If has_nonlocal_label, kill
        call-saved registers across calls.

        * alpha.md (exception_receiver): Remove.
        (nonlocal_goto_receiver_osf): New
        (nonlocal_goto_receiver_vms): Renamed from nonlocal_goto_receiver.
        (nonlocal_goto_receiver): New, select _osf or _vms.

From-SVN: r16491
1997-11-14 07:48:31 -07:00
Richard Henderson
a427764e0f alpha.c (output_prolog [*]): Prefix entry labels with '$' to keep them from being propogated to the object file.
* alpha.c (output_prolog [*]): Prefix entry labels with '$' to
        keep them from being propogated to the object file.
        (alpha_write_linkage): Likewise.
        * alpha.md (call_vms): Likewise.
        (call_value_vms): Likewise.
        (unnamed osf call insns): Likewise.

        * alpha.h (ASM_OUTPUT_INTERNAL_LABEL): Don't omit L from local label.
        (ASM_GENERATE_INTERNAL_LABEL): Likewise.

From-SVN: r16489
1997-11-14 07:42:27 -07:00
Paul Eggert
1009cb24db Fix some confusion with IEEE minus zero.
* real.h (REAL_VALUES_IDENTICAL): New macro.

        * expr.c (is_zeros_p): Don't consider -0.0 to be all zeros.
        * fold-const.c (operand_equal_p): Don't consider -0.0 to be
        identical to 0.0.
        * tree.c (simple_cst_equal): Don't consider -0.0 to have the
        same tree structure as 0.0.

        * varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL
        macro instead of doing it by hand.

From-SVN: r16488
1997-11-14 07:30:01 -07:00
Richard Henderson
a94fc2eb50 alpha.c (call_operand): Any reg is valid for WinNT.
* alpha.c (call_operand): Any reg is valid for WinNT.
        * alpha.md (call_nt, call_value_nt): Don't force address into $27.
        (anon nt calls): Add 'R' alternative.
        * alpha/win-nt.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
        INITIALIZE_TRAMPOLINE): Handle lack of original $27 and 32-bit ptrs.

From-SVN: r16486
1997-11-14 07:22:13 -07:00
Jeff Law
7a155c1472 Add -frepo docs.
From-SVN: r16479
1997-11-13 18:57:05 -07:00
Jeffrey A Law
4b8cc7c55e flow.c (find_basic_blocks): During marking phase...
* flow.c (find_basic_blocks): During marking phase, if we encounter
        an insn with a REG_LABEL note, make the target block live and
        create an edge from the insn to the target block.  Do not make
        edges from all blocks to the target block.
Another crack at the flow control problem.

From-SVN: r16468
1997-11-13 16:08:15 -07:00
Jim Wilson
4149fd3ef6 mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete code swapping xplus0 and xplus1 when xplus0 is not a register.
* mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete code swapping xplus0 and
	xplus1 when xplus0 is not a register.

From-SVN: r16466
1997-11-13 14:08:05 -07:00
Jason Merrill
ac1e0fbb3a removed unused parm to build_new_function_call
From-SVN: r16465
1997-11-13 15:03:31 -05:00
Jeffrey A Law
2722d2343e * m68k/x-next (OTHER_FIXINCLUDES_DIRS): Include /NextDeveloper/Headers.
From-SVN: r16461
1997-11-13 11:51:56 -07:00
David Edelsohn
fc8cde864d rs6000.md (lshrdi3_power): Delete '&' from first alternative and swap instruction order.
* rs6000.md (lshrdi3_power): Delete '&' from first alternative and
        swap instruction order.

From-SVN: r16460
1997-11-13 11:49:31 -07:00
Michael Meissner
f8d0aaf077 rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to pick apart floating point values...
* rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to
        pick apart floating point values, instead of using CONST_DOUBLE_LOW
        and CONST_DOUBLE_HIGH.

        * rs6000.md (define_splits for DF constants): Use the appropriate
        REAL_VALUE_* interface to pick apart DF floating point constants in
        a machine independent fashion.

From-SVN: r16459
1997-11-13 11:46:01 -07:00
Jeffrey A Law
2f19e79de7 confiugre.in: Tweak NCR entries.
* confiugre.in: Tweak NCR entries.
        * configure: Rebuilt.

From-SVN: r16457
1997-11-13 11:39:51 -07:00
Jeffrey A Law
98e53a77fe * configure.in (i[3456]86-ncr-sysv4.3*): Tweak.
From-SVN: r16456
1997-11-13 11:37:27 -07:00
Jason Merrill
e6dff3075c init.c (build_new): Make the cleanup last longer.
* init.c (build_new): Make the cleanup last longer.
	(expand_vec_init): Call do_pending_stack_adjust.

From-SVN: r16450
1997-11-13 05:11:07 -05:00
Jason Merrill
3f72001bac thinko
From-SVN: r16447
1997-11-12 15:16:34 -05:00
Jason Merrill
980bf49358 pt.c (do_type_instantiation): Fix typo.
* pt.c (do_type_instantiation): Fix typo.
	(mark_class_instantiated): If we support one_only but not weak
	symbols, don't mark this as known.

	* init.c (build_new): Handle cookies in EH cleanup.

Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* call.c (build_method_call): Call complete_type before checking
 	for destructor.

From-SVN: r16445
1997-11-12 14:53:33 -05:00
Jeffrey A Law
65bdbea37e except.c: Do not include "assert.h".
* except.c: Do not include "assert.h".
        (save_eh_status): Turn asserts into conditional aborts.
        (restore_eh_status, scan_region): Likewise.
        * dwarfout.c: Do not include "assert.h".
        (bit_offset_attribute): Turn asserts into conditional aborts.
        (bit_size_attribute, output_inlined_enumeration_type_die): Likewise.
        (output_inlined_structure_type_die): Likewise.
        (output_inlined_union_type_die): Likewise
        (output_tagged_type_instantiation): Likewise.
        (dwarfout_file_scope_decl): Likewise.
        * dwarf2out.c: Do not include "assert.h"
        (expand_builtin_dwarf_reg_size): Turn asserts into conditional aborts.
        (reg_save, initial_return_save, dwarf2out_frame_debug): Likewise.
        (add_child_die, modified_type_die, add_bit_offset_attribute): Likewise.
        (add_bit_size_attribute, scope_die_for): Likewise.
        (output_pending_types_for_scope): Likewise.
        (get_inlined_enumeration_type_die): Likewise.
        (get_inlined_structure_type_die): Likewise.
        (get_inlined_union_type_die, gen_subprogram_die): Likewise.
        (gen_tagged_type_instantiation_die): Likewise.

From-SVN: r16441
1997-11-12 10:01:12 -07:00
Jeffrey A Law
79c5b0a7ee flow.c (find_basic_blocks): Refine further to get a more correct cfg...
* flow.c (find_basic_blocks): Refine further to get a more correct
        cfg, especially in the presense of exception handling, computed
        gotos, and other non-trivial cases.  Call abort if an inaccuracy
        is detected in the cfg.

From-SVN: r16439
1997-11-12 09:35:41 -07:00
Jason Merrill
e18138c8f7 init.c (build_new): Handle freeing allocated memory when the constructor throws.
* init.c (build_new): Handle freeing allocated memory when the
	constructor throws.

	* call.c (build_new_method_call): Fix flags arg.

	* pt.c (do_type_instantiation): Don't try to instantiate
	member templates.
	(mark_decl_instantiated): If we support one_only but not
	weak symbols, mark this one_only.
	* decl2.c (import_export_vtable): Don't defer handling of vtables
	if MULTIPLE_SYMBOL_SPACES.

From-SVN: r16437
1997-11-12 04:19:26 -05:00
Jason Merrill
a368532c2c except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
* except.c (expand_end_catch_block): Lose call to __sjpopnthrow.

Fixes sjlj failures.

From-SVN: r16434
1997-11-11 22:54:47 -05:00
Jason Merrill
67328e449d except.c (do_pop_exception): Return a value.
* except.c (do_pop_exception): Return a value.

Oops.

From-SVN: r16430
1997-11-11 05:59:14 -05:00
Oleg Krivosheev
fd47683704 iomanip.h: Fix guiding decls.
Tue Nov 11 01:40:17 1997  Oleg Krivosheev <kriol@fnal.gov>

	* iomanip.h: Fix guiding decls.

From-SVN: r16429
1997-11-11 04:43:35 -05:00
Jason Merrill
faee6a5f2f [multiple changes]
Sun Oct 19 09:07:38 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (using_eh_for_cleanups_p): New variable.
	(using_eh_for_cleanups): New function.
	(expand_decl_cleanup): Don't call expand_eh_region_start_tree
	unless using EH for cleanups.

Sun Oct 26 01:28:29 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* decl.c (init_decl_processing): Call using_eh_for_cleanups.

From-SVN: r16424
1997-11-10 21:32:50 -05:00
Jason Merrill
f3bd21b697 stmt.c (expand_decl_cleanup_no_eh): New fn.
* stmt.c (expand_decl_cleanup_no_eh): New fn.

	* except.c (expand_leftover_cleanups): do_pending_stack_adjust.

	Complete nested exception support.
	* except.c (do_pop_exception): Split out...
	(push_eh_cleanup): From here.  Handle the EH region by hand.
	(expand_start_catch_block): Add a new level for the catch parm.
	Move the rethrow region outside the two cleanup regions.
	Protect the initializer for the catch parm with terminate.
	(expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
	* exception.cc (__cp_pop_exception): Now takes two parms.  Handle
	popping off the middle of the stack.
	* tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
	WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
	(build_cplus_new): Only wrap CALL_EXPRs.
	* init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
	the constructor call.

Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* Make-lang.in (c++.distdir): Make inc subdirectory.

From-SVN: r16420
1997-11-10 15:06:56 -05:00
Jeffrey A Law
d2fe4f6ae7 alias.c (MAX_ALIAS_LOOP_PASSES): Define.
* alias.c (MAX_ALIAS_LOOP_PASSES): Define.
        (init_alias_analysis): Break out of loops after MAX_ALIAS_LOOP_PASSES.

From-SVN: r16414
1997-11-10 00:03:51 -07:00
Jeffrey A Law
8df604fc16 * fixinc.svr4 (__STDC__): Add another case.
From-SVN: r16395
1997-11-09 02:05:40 -07:00
J"orn Rennecke
9a3c8dac62 a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying addresses in the epilogue delay slot.
* a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying
        addresses in the epilogue delay slot.

From-SVN: r16393
1997-11-09 01:59:10 -07:00
Manfred Hollstein
4ea1c8efa4 dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace in generated `specs' file.
Sun Nov  9 01:40:40 1997  Manfred Hollstein  (manfred@s-direktnet.de)

        * m88k/dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace
        in generated `specs' file.

From-SVN: r16390
1997-11-09 01:39:09 -07:00
Jim Wilson
bd93ed181f decl.c (add_block_current_level): Delete.
* decl.c (add_block_current_level): Delete.
        * init.c (build_vec_delete_1): Delete build_block and
        add_block_current_level calls.

From-SVN: r16387
1997-11-09 01:28:43 -07:00
Jeff Law
e9c6a40fec New entry.
From-SVN: r16386
1997-11-08 22:12:23 -07:00
Jason Merrill
ab1f110528 fix typo
From-SVN: r16365
1997-11-08 03:51:40 -05:00
Jim Wilson
a594134ed1 flags.h (flag_rerun_loop_opt): Declare.
* flags.h (flag_rerun_loop_opt): Declare.
        * loop.c (invariant_p, case LABEL_REF): Check flag_rerun_loop_opt.
        * toplev.c (flag_rerum_loop_opt): Delete static.

From-SVN: r16362
1997-11-07 16:36:53 -07:00
Jason Merrill
11f8059d78 * method.c (emit_thunk): Don't let the backend defer generic thunks.
From-SVN: r16360
1997-11-07 14:57:13 -05:00
Jason Merrill
f6f739981a frame.c (add_fdes, count_fdes): Go back to checking pc_begin for linked once FDEs.
* frame.c (add_fdes, count_fdes): Go back to checking pc_begin for
 	linked once FDEs.

From-SVN: r16358
1997-11-07 13:57:23 -05:00
Jason Merrill
335f9c1060 fix typo
From-SVN: r16356
1997-11-07 13:28:58 -05:00
Jason Merrill
80cc31cddc stl_algo.h, [...]: Update to October 28 SGI release.
* stl_algo.h, stl_algobase.h, stl_bvector.h,
 	stl_deque.h: Update to October 28 SGI release.

From-SVN: r16350
1997-11-06 14:21:18 -05:00
Jason Merrill
f2a53ad7e8 except.c (call_eh_info): Split out...
* except.c (call_eh_info): Split out...
	(push_eh_info): From here.
	(expand_builtin_throw): Use it.
	(expand_start_catch_block): Move region start back.

	* class.c (build_vbase_path): Propagate the result type properly.

From-SVN: r16348
1997-11-06 03:01:26 -05:00
Jeffrey A Law
b25cf9d2d4 alias.c (find_base_value): Only return the known base value for pseudo registers.
* alias.c (find_base_value): Only return the known base value for
        pseudo registers.

From-SVN: r16343
1997-11-05 14:17:36 -07:00
Jeffrey A Law
6bb1a8c25f * version.c: Bump for snapshot.
From-SVN: r16341
1997-11-05 01:41:31 -07:00
Jeffrey A Law
7d96302225 * fixincludes: Fix "hypot" prototype in NeXT math.h.
From-SVN: r16337
1997-11-04 20:08:06 -07:00
Jeffrey A Law
6b7c9e5100 Makefile.in (USE_ALLOCA): Always include alloca.o.
* Makefile.in (USE_ALLOCA): Always include alloca.o.
        (USE_HOST_ALLOCA): Likewise.

From-SVN: r16335
1997-11-04 19:22:37 -07:00
Jeff Law
d9af52b46d Move test from execute to compile.
From-SVN: r16320
1997-11-04 16:20:23 -07:00
Jeffrey A Law
2cf3141e12 alias.c (find_base_value): When copying arguments, return the tenative value for a hard register.
* alias.c (find_base_value): When copying arguments, return the
        tenative value for a hard register.
Fixes infinite loop.

From-SVN: r16318
1997-11-04 16:07:18 -07:00
Richard Henderson
efd60d18d8 alpha.c (summarize_insn): Handle ASM_OPERANDS.
* alpha.c (summarize_insn): Handle ASM_OPERANDS.  Don't recurse
        for SUBREG, just fall through.

        * alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero.

        * alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake.

        * combine.c (try_combine): When setting elim_i1, check if newi2pat
        sets i1dest.

        * combine.c (try_combine): When setting elim_i2, check whether newi2pat
        sets i2dest.  When calling distribute_notes for i3dest_killed, pass
        elim_i2 and elim_i1.

Co-Authored-By: Jim Wilson <wilson@cygnus.com>

From-SVN: r16313
1997-11-04 14:15:45 -07:00
Jason Merrill
ff5b5c164a update to 10/27 STL snapshot
From-SVN: r16311
1997-11-04 15:14:50 -05:00
Jeff Law
9c82d0d1fd Remove last combine patch. rth & jim are working on a better one.
From-SVN: r16305
1997-11-03 14:57:49 -07:00
Jeffrey A Law
2862b9c355 configure.in (sco5): Use cpio to install header files.
* configure.in (sco5): Use cpio to install header files.
So make install works properly.

From-SVN: r16302
1997-11-03 14:38:32 -07:00
Manfred Hollstein
9ba0177642 configure.in: Use delta.mt for m68k-motorola-sysv.
Sun Nov  2 23:34:09 1997  Manfred Hollstein  <manfred@s-direktnet.de>

        * configure.in: Use delta.mt for m68k-motorola-sysv.
        * config/delta.mt: New makefile fragment.

From-SVN: r16301
1997-11-02 23:33:59 -07:00
No Author
2b04f1785b This commit was manufactured by cvs2svn to create branch
'egcs_1_00_branch'.

From-SVN: r16300
1997-11-03 06:33:59 +00:00
Manfred Hollstein
de68fe9861 aclocal.m4 (conftestdata_from, [...]): Names shortened to 14 char length.
* aclocal.m4 (conftestdata_from, conftestdata_to): Names shortened to
        14 char length.
        * configure: Rebuild.

From-SVN: r16297
1997-11-02 23:29:08 -07:00
Richard Henderson
5df7011f90 combine.c (try_combine): Don't elim_i1 when it is used in i2src.
* combine.c (try_combine): Don't elim_i1 when it is used in i2src.

        * combine.c (try_combine): When setting elim_i2, check whether newi2pat
        sets i2dest.  When calling distribute_notes for i3dest_killed, pass
        elim_i2 and elim_i1.

Co-Authored-By: Jim Wilson <wilson@cygnus.com>

From-SVN: r16295
1997-11-02 23:21:13 -07:00
Jeff Law
b46af585fa Initialize I.
From-SVN: r16294
1997-11-02 23:11:55 -07:00
Jeff Law
f8db4bd153 *** empty log message ***
From-SVN: r16290
1997-11-02 23:05:40 -07:00
Craig Burley
b1d0fc355d Important patch from Burley.
From-SVN: r16289
1997-11-02 23:04:01 -07:00
Richard Earnshaw
0d0bf87bcd arm.c (load_multiple_sequence): Support SUBREG of MEM.
* arm.c (load_multiple_sequence): Support SUBREG of MEM.
        (store_multiple_sequence): Likewise.
Brought over from gcc2.

From-SVN: r16288
1997-11-02 22:52:42 -07:00
Richard Henderson
d1693a76da com.c (ffecom_expr_): Only use TREE_TYPE argument for simple arithmetic...
* com.c (ffecom_expr_): Only use TREE_TYPE argument for simple
        arithmetic; convert types as necessary; recurse with target tree type.

From-SVN: r16286
1997-11-02 19:48:50 -07:00
Robert Lipe
40a58b4367 * i386/sco5.h: enable -gstabs once again.
From-SVN: r16285
1997-11-02 19:43:37 -07:00
Jeffrey A Law
31d71f5d55 arm.c (output_move_double): Allocate 3 entries in otherops array.
Sun Nov  2 19:27:21 1997  Jeffrey A Law  (law@cygnus.com)

        * arm.c (output_move_double): Allocate 3 entries in otherops array.

From-SVN: r16283
1997-11-02 19:28:13 -07:00
No Author
4aea9e0184 This commit was manufactured by cvs2svn to create branch
'egcs_1_00_branch'.

From-SVN: r16282
1997-11-03 02:28:13 +00:00
418 changed files with 30719 additions and 74092 deletions

View File

@@ -1,481 +1,3 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA

View File

@@ -1,3 +1,53 @@
Thu Apr 23 01:40:32 1998 Jeffrey A Law (law@cygnus.com)
* egcs-1.0.3 release.
Sun Mar 15 23:38:21 1998 Jeffrey A Law (law@cygnus.com)
* egcs-1.0.2 release.
Sun Mar 15 23:32:17 1998 Manfred Hollstein <manfred@s-direktnet.de>
Pieter Nagel <pnagel@epiuse.co.za>
* Makefile.in (BASE_FLAGS_TO_PASS): Pass gxx_include_dir down
to sub-makes.
Sun Feb 22 15:23:27 1998 H.J. Lu (hjl@gnu.ai.mit.edu)
* configure.in (alpha*-*-linux*): Treat alpha*-*-linux* as
alpha*-*-linux* not alpha*-*-*.
Fri Jan 2 11:34:38 1998 Jeffrey A Law (law@cygnus.com)
* egcs-1.0.1 release.
Wed Dec 3 07:55:59 1997 Jeffrey A Law (law@cygnus.com)
* egcs-1.0 release.
* configure (gxx_include_dir): Fix thinko.
Thu Nov 27 01:31:30 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (INSTALL_TARGET): Do install-gcc first.
* configure (gxx_include_dir): Provide a definition for subdirs
which do not use autoconf.
Wed Nov 26 16:08:50 1997 Jeffrey A Law (law@cygnus.com)
* From Franz Sirl.
* config.guess (powerpc*-*-linux): Handle glibc2 beta release
found on RedHat Linux systems.
Fri Nov 21 09:51:01 1997 Jeffrey A Law (law@cygnus.com)
* config.guess (alpha stuff): Merge with FSF to avoid incorrect
guesses.
Thu Nov 13 11:38:37 1997 Jeffrey A Law (law@cygnus.com)
* configure.in (i[3456]86-ncr-sysv4.3*): Tweak.
Mon Oct 27 12:03:53 1997 Jason Merrill <jason@yorick.cygnus.com>
* Makefile.in: check-target-libio depends on all-target-libstdc++.

50
INSTALL/BUILD Normal file
View File

@@ -0,0 +1,50 @@
Building egcs-1.0.3
Now that egcs is configured, you are ready to build the compiler and
runtime libraries.
We highly recommend that egcs be built using gnu-make; other versions
make work, then again they might not. To be safe build with gnu-make.
Building a native compiler
For a native build issue the command "make bootstrap". This will build
the entire egcs compiler system, which includes the following steps:
* Build host tools necessary to build the compiler such as texinfo,
bison, gperf.
* Build target tools for use by the compiler such as gas, gld, and
binutils.
* Perform a 3-stage bootstrap of the compiler.
* Perform a comparison test of the stage2 and stage3 compilers.
* Build runtime libraries using the stage3 compiler from the
previous step.
If you are short on disk space you might consider "make
bootstrap-lean" instead. This is identical to "make bootstrap" except
that object files from the stage1 and stage2 of the 3-stage bootstrap
of the compiler are deleted as soon as they are no longer needed.
Building a cross compiler
We recommend reading the [1]crossgcc FAQ for information about
building cross compilers.
For a cross build, issue the command "make cross", which performs the
following steps:
* Build host tools necessary to build the compiler such as texinfo,
bison, gperf.
* Build target tools for use by the compiler such as gas, gld, and
binutils.
* Build the compiler (single stage only).
* Build runtime libraries using the compiler from the previous step.
Note that if an error occurs in any step the make process will exit.
_________________________________________________________________
Last modified on Jan 2, 1998.
References
1. ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1

90
INSTALL/CONFIGURE Normal file
View File

@@ -0,0 +1,90 @@
Configuring egcs-1.0.3
Like most GNU software, egcs must be configured before it can be
built. This document attempts to describe the recommended
configuration procedure for both native and cross targets.
We use srcdir to refer to the toplevel source directory for egcs; we
use objdir to refer to the toplevel build/object directory for egcs.
First, we highly recommend that egcs be built into a separate
directory than the sources. This is how we generally build egcs;
building where srcdir == objdir should still work, but doesn't get
extensive testing.
Second, when configuring a native system, either "cc" must be in your
path or you must set CC in your environment before running configure.
Otherwise the configuration scripts may fail.
To configure egcs:
% mkdir objdir
% cd objdir
% srcdir/configure [target] [options]
target specification
* egcs has code to correctly determine the correct value for target
for nearly all native systems. Therefore, we highly recommend you
not provide a configure target when configuring a native compiler.
* target must be specified when configuring a cross compiler;
examples of valid targets would be i960-rtems, m68k-coff, sh-elf,
etc.
options specification
Use options to override several configure time options for egcs. A
partial list of supported options:
* --prefix=dirname -- Specify the toplevel installation directory.
This is the recommended way to install the tools into a directory
other than the default. The toplevel installation directory
defaults to /usr/local.
These additional options control where certain parts of the
distribution are installed. Normally you should not need to use
these options.
+ --with-local-prefix=dirname -- Specify the installation
directory for local include files. The default is /usr/local.
+ --with-gxx-include-dir=dirname -- Specify the installation
directory for g++ header files. The default is
/usr/local/include/g++.
* --enable-shared -- Build shared versions of the C++ runtime
libraries if supported --disable-shared is the default.
* --enable-haifa -- Enable the new Haifa instruction scheduler in
the compiler; the new scheduler can significantly improve code on
some targets. --disable-haifa is currently the default on all
platforms except the HPPA.
* --with-gnu-as -- Specify that the compiler should assume the GNU
assembler (aka gas) is available.
* --with-gnu-ld -- Specify that the compiler should assume the GNU
linker (aka gld) is available.
* --with-stabs -- Specify that stabs debugging information should be
used instead of whatever format the host normally uses. Normally
GCC uses the same debug format as the host system.
* --enable-multilib -- Specify that multiple target libraries should
be built to support different target variants, calling
conventions, etc. This is the default.
* --enable-threads -- Specify that the target supports threads. This
only effects the Objective-C compiler and runtime library.
* --enable-threads=lib -- Specify that lib is the thread support
library. This only effects the Objective-C compiler and runtime
library.
* --with-cpu=cpu -- Specify which cpu variant the compiler should
generate code for by default. This is currently only supported on
the RS6000/PowerPC ports.
Some options which only apply to building cross compilers:
* --with-headers=dir -- Specifies a directory which has target
include files.
* --with-libs=dirs -- Specifies a list of directories which contain
the target runtime libraries.
* --with-newlib -- Specifies that "newlib" is being used as the
target C library. This causes __eprintf to be omitted from
libgcc.a on the assumption that it will be provided by newlib.
Note that each --enable option has a corresponding --disable option
and that each --with option has a corresponding --without option.
_________________________________________________________________
Last modified on Jan 2, 1998.

633
INSTALL/FAQ Normal file
View File

@@ -0,0 +1,633 @@
egcs Frequently Asked Questions
1. [1]How is egcs different from gcc2?
2. [2]What is an open development model?
3. [3]Releases and Forking
4. [4]bits/libc-lock.h: No such file or directory
5. [5]`_IO_stdfile_0_lock' was not declared in this scope
6. [6]Problems building the Fortran compiler
7. [7]Problems building on MIPS platforms
8. [8]Problems with exception handling on x86 platforms
9. [9]Bootstrap comparison failures on HPs
10. [10]Bootstrap loops rebuilding cc1 over and over
11. [11]Dynamic linker is unable to find GCC libraries
12. [12]libstdc++/libio tests fail badly with --enable-shared
13. [13]Unable to run the testsuite
14. [14]How to build a cross compiler
15. [15]How to install both gcc2 and egcs
16. [16]Snapshots, how, when, why
17. [17]Problems building Linux kernels
18. [18]Virtual memory exhausted
19. [19]GCC can not find GAS
20. [20]egcs does not work on Red Hat 5.0
21. [21]Unable to bootstrap on x86 Solaris2.{5,6}
22. [22]EGCS with Windows
23. [23]EGCS with OS/2
24. [24]cpp: Usage:... Error
25. [25]EGCS will not build KDE
26. [26]Friend Templates
27. [27]Where to find libg++
28. [28]Why do I need autoconf & bison
29. [29]EGCS does not work on AIX 4.3
30. [30]Problems debugging egcs code
31. [31]Conflicts when using cvs update
_________________________________________________________________
How is egcs be different from gcc2?
Six years ago, gcc version 1 had reached a point of stability. For the
targets it could support, it worked well. It had limitations inherent
in its design that would be difficult to resolve, so a major effort
was made and gcc version 2 was the result. When we had gcc2 in a
useful state, development efforts on gcc1 stopped and we all
concentrated on making gcc2 better than gcc1 could ever be. This is
the kind of step forward we want to make with egcs.
In brief, the three biggest differences between egcs and gcc2 are:
* More rexamination of basic architectual decisions of gcc and an
interest in adding new optimizations;
* working with the groups who have fractured out from gcc2 (like the
Linux folks, the Intel optimizations folks, Fortran folks)
including more front-ends; and finally
* An open development model ([32]see below) for the development
process.
These three differences will work together to result in a more useful
compiler, a more stable compiler, a central compiler that works for
more people, a compiler that generates better code.
There are a lot of exciting compiler optimizations that have come out.
We want them in gcc. There are a lot of front ends out there for gcc
for languages like Fortran or Pascal. We want them easily installable
by users. After six years of working on gcc2, we've come to see
problems and limitations in the way gcc is architected; it is time to
address these again.
_________________________________________________________________
What is an open development model?
With egcs, we are going to try a bazaar style[33][1] approach to its
development: We're going to be making snapshots publicly available to
anyone who wants to try them; we're going to welcome anyone to join
the development mailing list. All of the discussions on the
development mailing list are available via the web. We're going to be
making releases with a much higher frequency than they have been made
in the past: We're shooting for three by the end of 1997.
In addition to weekly snapshots of the egcs development sources, we
are going to look at making the sources readable from a CVS server by
anyone. We want to make it so external maintainers of parts of egcs
are able to commit changes to their part of egcs directly into the
sources without going through an intermediary.
There have been many potential gcc developers who were not able to
participate in gcc development in the past. We these people to help in
any way they can; we ultimately want gcc to be the best compiler in
the world.
A compiler is a complicated piece of software, there will still be
strong central maintainers who will reject patches, who will demand
documentation of implementations, and who will keep the level of
quality as high as it is today. Code that could use wider testing may
be intergrated--code that is simply ill-conceived won't be.
egcs is not the first piece of software to use this open development
process; FreeBSD, the Emacs lisp repository, and Linux are a few
examples of the bazaar style of development.
With egcs, we will be adding new features and optimizations at a rate
that has not been done since the creation of gcc2; these additions
will inevitably have a temporarily destabilizing effect. With the help
of developers working together with this bazaar style development, the
resulting stability and quality levels will be better than we've had
before.
[1] We've been discussing different development models a lot over
the past few months. The paper which started all of this introduced
two terms: A cathedral development model versus a bazaar
development model. The paper is written by Eric S. Raymond, it is
called ``[34]The Cathedral and the Bazaar''. The paper is a useful
starting point for discussions.
_________________________________________________________________
Releases and Forking?
Some folks have questioned whether or not making releases is
consistent with the goals of the egcs project and whether or not
making releases is a fork from gcc2.
The egcs project has several goals, including:
* Experimenting with a new development model, release process and
release packaging,
* Using the new development model to accelerate development of new
features, optimizations, etc for future inclusion in gcc,
* Providing high quality releases to the public.
An egcs release is a copy of the egcs sources that the developers have
tested and are believed to be suitable for wider scale use and testing.
Making releases of stable, tested sources is both a goal and a means by
which we hope to achieve other goals of the egcs project.
The existence of a stable tested release allows egcs to be more thoroughly
used and tested by a wider audience than is capable of testing snapshots.
The expanded audience provides developers with critical feedback in a
timely manner, which is beneficial to GCC as a whole and is consistent with
the stated goals of egcs.
The gcc maintainers are encouraged to migrate tested fixes and new features
from egcs into gcc at their discretion. egcs maintainers are willing to
assist the gcc maintainers as time permits. egcs periodically merges in
changes from gcc into the egcs sources.
What will keep egcs from becoming a fork is cooperation between the
developers of gcc and egcs.
We don't see this situation as significantly different than other projects
that make releases based on some version of the gcc sources (Cygnus, g77,
etc). All the code is still available for inclusion in gcc at the discretion
of the gcc maintainers.
_________________________________________________________________
bits/libc-lock.h: No such file or directory
This entry should be obsolete, egcs should handle these beta versions
of glibc2 correctly.
egcs includes a tightly integrated libio and libstdc++ implementation
which can cause problems on hosts which have libio integrated into
their C library (most notably Linux).
We believe that we've solved the major technical problems for the most
common versions of libc found on Linux systems. However, some versions
of Linux use pre-release versions of glibc2, which egcs has trouble
detecting and correctly handling.
If you're using one of these pre-release versions of glibc2, you may
get a message "bits/libc-lock.h: No such file or directory" when
building egcs. Unfortunately, to fix this problem you will need to
update your C library to glibc2.0.5c.
_________________________________________________________________
`_IO_stdfile_0_lock' was not declared in this scope
If you get this error, it means either egcs incorrectly guessed what
version of libc is installed on your linux system, or you incorrectly
specified a version of glibc when configuring egcs.
If you did not provide a target name when configuring egcs, then
you've found a bug which needs to be reported. If you did provide a
target name at configure time, then you should reconfigure without
specifying a target name.
_________________________________________________________________
Problems building the Fortran compiler
The Fortran front end can not be built with most vendor compilers; it
must be built with gcc. As a result, you may get an error if you do
not follow the install instructions carefully.
In particular, instead of using "make" to build egcs, you should use
"make bootstrap" if you are building a native compiler or "make cross"
if you are building a cross compiler.
It has also been reported that the Fortran compiler can not be built
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
binutils or to Red Hat 5.0; we'll provide more information as it
becomes available.
_________________________________________________________________
Problems building on MIPS platforms
egcs requires the use of GAS on all versions of Irix, except Irix 6
due to limitations in older Irix assemblers.
Either of these messages indicates that you are using the MIPS
assembler when instead you should be using GAS.
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
.4byte $LECIE1-$LSCIE1
as0: Error: ./libgcc2.c, line 1:malformed statement
_________________________________________________________________
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol i
n expression
.word $LECIE1-$LSCIE1
For Irix 6, you should use the native assembler as GAS is not
supported on Irix 6.
_________________________________________________________________
Problems with exception handling on x86 platforms
If you are using the GNU assembler (aka gas) on an x86 platform and
exception handling is not working correctly, then odds are you're
using a buggy assembler.
We recommend binutils-2.8.1.0.15 or newer.
[35]binutils-2.8.1.0.20 source
[36]binutils-2.8.1.0.20 x86 binary for libc5
[37]binutils-2.8.1.0.20 x86 binary for glibc2 Or, you can try a
[38]binutils snapshot; however, be aware that the binutils snapshot is
untested and may not work (or even build). Use it at your own risk.
_________________________________________________________________
Bootstrap comparison failures on HPs
If you bootstrap the compiler on hpux10 using the HP assembler instead
of gas, every file will fail the comparison test.
The HP asembler inserts timestamps into object files it creates,
causing every file to be different. The location of the timestamp
varies for each object file, so there's no real way to work around
this mis-feature.
Odds are your compiler is fine, but there's no way to be certain.
If you use GAS on HPs, then you will not run into this problem because
GAS never inserts timestamps into object files. For this and various
other reasons we highly recommend using GAS on HPs.
_________________________________________________________________
Bootstrap loops rebuilding cc1 over and over
When building egcs, the build process loops rebuilding cc1 over and
over again. This happens on mips-sgi-irix5.2, and possibly other
platforms.
This is probably a bug somewhere in the egcs Makefile. Until we find
and fix this bug we recommend you use GNU make instead of vendor
supplied make programs.
_________________________________________________________________
Dynamic linker is unable to find GCC libraries
This problem manifests itself by programs not finding shared libraries
they depend on when the programs are started. Note this problem often
manifests itself with failures in the libio/libstdc++ tests after
configuring with --enable-shared and building egcs.
GCC does not specify a runpath so that the dynamic linker can find
dynamic libraries at runtime.
The short explaination is that if you always pass a -R option to the
linker, then your programs become dependent on directories which may
be NFS mounted, and programs may hang unnecessarily when an NFS server
goes down.
The problem is not programs that do require the directories; those
programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
SunOS effectively always passed a -R option for every -L option; this
was a bad idea, and so it was removed for Solaris. We should not
recreate it.
_________________________________________________________________
Unable to run the testsuite
If you get a message about unable to find "standard.exp" when trying
to run the egcs testsuites, then your dejagnu is too old to run the
egcs tests. You will need to get a newer version of dejagnu; we've
made a [39]dejagnu snapshot available until a new version of dejagnu
can be released.
_________________________________________________________________
How to build a cross compiler
Building cross compilers is a rather complex undertaking because they
usually need additional software (cross assembler, cross linker,
target libraries, target include files, etc).
We recommend reading the [40]crossgcc FAQ for information about
building cross compilers.
If you have all the pieces available, then `make cross' should build a
cross compiler. `make LANGUAGES="c c++" install'will install the cross
compiler.
Note that if you're trying to build a cross compiler in a tree which
includes binutils-2.8 in addition to egcs, then you're going to need
to make a couple minor tweaks so that the cross assembler, linker and
nm utilities will be found.
binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs
gcc looks for them using gas-new, ld-new and nm-new, so you may have
to arrange for any symlinks which point to &ltfile>.new to be changed
to &ltfile>-new.
_________________________________________________________________
Snapshots, how, when, why
We make snapshots of the egcs sources about once a week; there is no
predetermined schedule. These snapshots are intended to give everyone
access to work in progress. Any given snapshot may generate incorrect
code or even fail to build.
If you plan on downloading and using snapshots, we highly recommend
you subscribe to the egcs mailing lists. See [41]mailing lists on the
main egcs page for instructions on how to subscribe.
When using the diff files to update from older snapshots to newer
snapshots, make sure to use "-E" and "-p" arguments to patch so that
empty files are deleted and full pathnames are provided to patch. If
your version of patch does not support "-E", you'll need to get a
newer version. Also note that you may need autoconf, autoheader and
various other programs if you use diff files to update from one
snapshot to the next.
_________________________________________________________________
How to install both egcs and gcc2
It may be desirable to install both egcs and gcc2 on the same system.
This can be done by using different prefix paths at configure time and
a few symlinks.
Basically, configure the two compilers with different --prefix
options, then build and install each compiler. Assume you want "gcc"
to be the egcs compiler and available in /usr/local/bin; also assume
that you want "gcc2" to be the gcc2 compiler and also available in
/usr/local/bin.
The easiest way to do this is to configure egcs with
--prefix=/usr/local/egcs and gcc2 with --prefix=/usr/local/gcc2. Build
and install both compilers. Then make a symlink from
/usr/local/bin/gcc to /usr/local/egcs/bin/gcc and from
/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
_________________________________________________________________
Problems building Linux kernels
If you installed a recent binutils/gas snapshot on your Linux system,
you may not be able to build the kernel because objdump does not
understand the "-k" switch. The solution for this problem is to remove
/usr/bin/encaps.
The reason you must remove /usr/bin/encaps is because it is an
obsolete program that was part of older binutils distributions; the
Linux kernel's Makefile looks for this program to decide if you have
an old or a new binutils. Problems occur if you installed a new
binutils but haven't removed encaps, because the Makefile thinks you
have the old one. So zap it; trust us, you won't miss it.
You may get an internal compiler error compiling process.c in newer
versions of the Linux kernel on x86 machines. This is a bug in an asm
statement in process.c, not a bug in egcs. XXX How to fix?!?
You may get errors with the X driver of the form
_X11TransSocketUNIXConnect: Can't connect: errno = 111
It's a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c
does an illegal hack which used to work but is now broken since GCC
optimizes more aggressively . The newer 2.1.x kernels already have a
fix which should also work in 2.0.32.
_________________________________________________________________
Virtual memory exhausted error
This error means your system ran out of memory; this can happen for
large files, particularly when optimizing. If you're getting this
error you should consider trying to simplify your files or reducing
the optimization level.
Note that using -pedantic or -Wreturn-type can cause an explosion in
the amount of memory needed for template-heavy C++ code, such as code
that uses STL. Also note that -Wall includes -Wreturn-type, so if you
use -Wall you will need to specify -Wno-return-type to turn it off.
_________________________________________________________________
GCC can not find GAS
Some configurations like irix4, irix5, hpux* require the use of the
GNU assembler intead of the system assembler. To ensure that egcs
finds the GNU assembler, you should configure the GNU assembler with
the same --prefix option as you used for egcs. Then build & install
the GNU assembler. After the GNU assembler has been installed, proceed
with building egcs.
_________________________________________________________________
egcs does not work on Red Hat 5.0
This entry is obsolete with the release of egcs-1.0.1 which should
handle Red Hat 5.0 correctly.
egcs-1.0 does not currently work with Red Hat 5.0 on some platforms;
we'll update this entry with more information as it becomes available.
You may want to try this [42]proposed patch for Red Hat 5.0. Please
let us know if you use this patch and whether or not it works.
_________________________________________________________________
Unable to bootstrap on x86 Solaris 2.{5,6}
This entry is obsolete with the release of egcs-1.0.1 which should
handle x86 Solaris systems correctly.
This patch should fix the problem
Index: t-sol2
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/config/i386/t-sol2,v
retrieving revision 1.2
diff -c -3 -p -r1.2 t-sol2
*** t-sol2 1997/09/04 23:54:04 1.2
--- t-sol2 1997/12/04 07:19:07
*************** crtn.o: $(srcdir)/config/i386/sol2-cn.as
*** 31,36 ****
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
! CRTSTUFF_T_CFLAGS = -fPIC
TARGET_LIBGCC2_CFLAGS = -fPIC
--- 31,40 ----
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
+ #
+ # We must also enable optimization to avoid having any code appear after
+ # the call & alignment statement, but before we switch back to the
+ # .text section.
! CRTSTUFF_T_CFLAGS = -fPIC -O2
TARGET_LIBGCC2_CFLAGS = -fPIC
_________________________________________________________________
EGCS with Windows
egcs does not currently support windows, either natively or with the
cygwin32 dll. However Mumit Khan has been working on supporting
Windows with egcs. You should check out his site if you're interested
in Windows support. [43]GNU Win32 related projects
_________________________________________________________________
EGCS with OS/2
egcs does not currently support OS/2. However, Andrew Zabolotny has
been working on a generic os/2 port with pgcc. The current code code
can be found at [44]http://www.goof.com/pcg/os2.
_________________________________________________________________
cpp: Usage:... Error
If you get an error like this when building egcs (particularly when
building __mulsi3), then you likely have a problem with your
environment variables.
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
[switches] input output
First look for an explicit '.' in either LIBRARY_PATH or
GCC_EXEC_PREFIX from your environment. If you do not find an explicit
'.', look for an empty pathname in those variables. Note that ':' at
either the start or end of these variables is an implicit '.' and will
cause problems.
_________________________________________________________________
EGCS will not build KDE
Previous versions of g++ accepted (as a GNU extension)
constructor-arguments for the objects in an array of objects
dynamically allocated with new. Here's an example of this construct:
struct S { S(int); }
void f() { new S[3](6); }
However, this construct is not allowed by the ANSI/ISO Standard, and
is no longer accepted by g++.
KDE uses such constructs and therefore will not build with egcs; note
patches are available to fix KDE.
_________________________________________________________________
Friend Templates
In order to make a specialization of a template function a friend of a
(possibly template) class, you must explicitly state that the friend function
is a template, by appending angle brackets to its name, and this template
function must have been declared already. An error in the last public comment
draft of the ANSI/ISO C++ Standard has led people to believe that was not
necessary, but it is, and it was fixed in the final version of the Standard.
__________________________________________________________________________
Where to find libg++
Many folks have been asking where to find libg++ for egcs. First we should
point out that few programs actually need libg++; most only need
libstdc++/libio which are included in the egcs distribution.
If you do need libg++ you can get a libg++ snapshot which works with egcs from
[45]ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz
__________________________________________________________________________
Why do I need autoconf/bison
If you're using diffs up dated from one snapshot to the next, or if you're
using the CVS repository, you may need autoconf, bison, or possibly other tools
to rebuild egcs.
This is necessary because neither diff nor cvs keep timestamps correct. So it
is possible for "make" to think a generated file is out of date.
If you do not have autoconf, bison, etc, then you can issue the following
commands to touch all the generated files.
touch `find egcs -name configure -print`
touch egcs/gcc/c-parse.y
touch egcs/gcc/objc/objc-parse.y
touch egcs/gcc/{cstamp-h.in,c-gperf.h,c-parse.c,c-parse.h,cexp.c}
touch egcs/gcc/cp/{parse.c,parse.h}
touch egcs/gcc/objc/objc-parse.c
__________________________________________________________________________
EGCS does not work on AIX 4.3
EGCS does not currently support AIX4.3; however, if you want to try and make it
work with AIX 4.3 we highly recommend you get the fix for APAR IX74254 (64BIT
DISASSEMBLED OUPUT FROM COMPILER FAILS TO ASSEMBLE/BIND) which is available
from IBM Customer Support and IBM's service.boulder.ibm.com website.
__________________________________________________________________________
Problems debugging egcs code
On some systems egcs will produce dwarf debug records by default; however the
current gdb-4.16 release may not be able to read such debug records.
You can either use the argument "-gstabs" instead of "-g" or pick up the
current beta copy of gdb-4.17 to work around the problem.
__________________________________________________________________________
Conflicts when using cvs update
It is not uncommon to get cvs conflict messages for some generated files when
updating your local sources from the CVS repository. Typically such conflicts
occur with bison or autoconf generated files.
As long as you haven't been making modifications to the generated files or the
generator files, it is safe to delete the offending file, then run cvs update
again to get a new copy.
__________________________________________________________________________
[46]Return to the egcs home page
Last modified: March 04, 1998
References
1. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gcc-2-diff
2. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#open-development
3. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#release-fork
4. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#libc-lock
5. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#morelibc
6. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#fortran
7. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#mips
8. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#x86eh
9. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#hpcompare
10. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#makebugs
11. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rpath
12. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rpath
13. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#dejagnu
14. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#cross
15. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#multiple
16. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#snapshot
17. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#linuxkernel
18. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#memexhausted
19. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gas
20. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rh5.0
21. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#x86solaris
22. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#windows
23. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#os2
24. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#environ
25. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#kde
26. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#friend
27. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#libg++
28. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#autoconf/bison++
29. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#aix
30. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gdb
31. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#conflicts
32. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#open-development
33. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#cathedral-vs-bazaar
34. http://locke.ccil.org/~esr/writings/cathedral.html
35. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.tar.gz
36. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.bin.tar.gz
37. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.glibc.bin.tar.gz
38. ftp://egcs.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz
39. ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz
40. ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1
41. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/index.html#mailinglists
42. http://www.cygnus.com/ml/egcs/1997-Dec/0594.html
43. http://www.xraylith.wisc.edu/~khan/software/gnu-win32
44. http://www.goof.com/pcg/os2
45. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz
46. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/index.html

26
INSTALL/FINALINSTALL Normal file
View File

@@ -0,0 +1,26 @@
Final install egcs-1.0.3
Now that egcs has been built and tested, you can install it with `cd
objdir; make install' for a native compiler or `cd objdir; make
install LANGUAGES="c c++"' for a cross compiler (note installing cross
compilers will be easier in the next release!).
That step completes the installation of egcs; user level binaries can
be found in prefix/bin where prefix is the value you specified with
the --prefix to configure (or /usr/local by default).
If you don't mind, please send egcs@cygnus.com a short mail message
indicating that you successfully built and installed egcs. Include the
output from running srcdir/config.guess.
If you find a bug in egcs, please report it to
[1]egcs-bugs@cygnus.com.
_________________________________________________________________
Last modified on Jan 2, 1998.
References
1. mailto:egcs-bugs@cygnus.com

46
INSTALL/INDEX Normal file
View File

@@ -0,0 +1,46 @@
Installing egcs-1.0.3
This document describes the generic installation procedure for egcs as
well as detailing some target specific installation instructions for
egcs.
egcs includes several components that previously were separate
distributions with their own installation instructions. This document
supercedes all package specific installation instructions. We provide
the component specific installation information in the source
distribution for historical reference purposes only.
We recommend you read the entire generic installation instructions as
well as any target specific installation instructions before you
proceed to configure, build, test and install egcs.
If something goes wrong in the configure, build, test or install
procedures, first double check that you followed the generic and
target specific installation instructions carefully. Then check the
[1]FAQ to see if your problem is covered before you file a bug report.
The installation procedure is broken into four steps.
* [2]configure
* [3]build
* [4]test (optional)
* [5]install
Before starting the build/install procedure please browse the
[6]host/target specific installation notes.
_________________________________________________________________
[7]Return to the egcs home page
_________________________________________________________________
Last modified on Jan 2, 1998.
References
1. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html
2. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/configure.html
3. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/build.html
4. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/test.html
5. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/finalinstall.html
6. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/specific.html
7. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/index.html

14
INSTALL/README Normal file
View File

@@ -0,0 +1,14 @@
This directory contains installation instrutions for egcs-1.00.
We're providing installation instructions in two forms, html and
plaintext.
index.html is the toplevel install file for html browsers.
INDEX is the toplevel install file in plaintext form.
The most recent HTML installation instructions for egcs can be obtained from
the egcs web site:
http://www.cygnus.com/egcs/install

122
INSTALL/SPECIFIC Normal file
View File

@@ -0,0 +1,122 @@
Host/Target specific installation notes for egcs-1.0.1
alpha*-*-*
No specific installation needs/instructions.
i?86-*-linux*
You will need binutils-2.8.1.0.15 or newer for exception handling to
work.
i?86-*-sco3.2v5*
The SCO assembler is currently required. The GNU assembler is not up
to the task of switching between ELF and COFF at runtime.
Unlike various prereleases of GCC, that used '-belf' and defaulted to
COFF, you must now use the '-melf' and '-mcoff' flags to toggle
between the two object file formats. ELF is now the default.
Look in gcc/config/i386/sco5.h (search for "messy") for additional
OpenServer-specific flags.
i?86-pc-solaris*
You'll need a patch to fix an egcs bug on this platform. [1]x86
solaris patch
hppa*-hp-hpux*
We highly recommend using gas/binutils-2.8 on all hppa platforms; you
may encounter a variety of problems when using the HP assembler.
hppa*-hp-hpux9
The HP assembler has major problems on this platform. We've tried to
work around the worst of the problems. However, those workarounds may
be causing linker crashes in some circumstances; the workarounds also
probably prevent shared libraries from working. Use the GNU assembler
to avoid these problems.
The configuration scripts for egcs will also trigger a bug in the
hpux9 shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and
SHELL to /bin/ksh in your environment.
hppa*-hp-hpux10
For hpux10.20, we highly recommend you pick up the latest sed patch
from HP. HP has two sites which provide patches free of charge.
[2]US, Canada, Asia-Pacific, and Latin-America
[3]Europe
Retrieve patch PHCO_12862.
The HP assembler on these systems is much better than the hpux9
assembler, but still has some problems. Most notably the assembler
inserts timestamps into each object file it creates, causing the
3-stage comparison test to fail during a "make bootstrap". You should
be able to continue by saying "make all" after getting the failure
from "make bootstrap".
m68k-*-nextstep*
You absolutely must use GNU sed and GNU make on this platform.
If you try to build the integrated C++ & C++ runtime libraries on this
system you will run into trouble with include files. The way to get
around this is to use the following sequence. Note you must have write
permission to prefix for this sequence to work.
cd objdir
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
cd gcc
make bootstrap
make install-headers-tar
cd ..
make bootstrap3
m68k-sun-sunos4.1.1
It is reported that you may need the GNU assembler on this platform.
mips*-sgi-irix4
mips*-sgi-irix5
You must use GAS on these platforms, the native assembler can not
handle the code for exception handling support on this platform.
These systems don't have ranlib, which various components in egcs
need; you should be able to avoid this problem by installing GNU
binutils, which includes a functional ranlib for this system.
You may get the following warning on irix4 platforms, it can be safely
ignored.
warning: foo.o does not have gp tables for all its sections.
mips*-sgi-irix6
You must not use GAS on irix6 platforms; doing so will only cause
problems.
These systems don't have ranlib, which various components in egcs
need; you should be able to avoid this problem by making a dummy
script called ranlib which just exits with zero status and placing it
in your path.
rs6000-ibm-aix*
powerpc-ibm-aix*
At least one person as reported problems with older versions of
gnu-make on this platform. make-3.76 is reported to work correctly.
powerpc-*-linux-gnu*
You will need [4]binutils-2.8.1.0.17 for a working egcs. It is
strongly recommended to recompile binutils with egcs if you initially
built it with gcc-2.7.2.*.
sparc-unkonwn-linux-gnulibc1
It has been reported that you might need binutils-2.8.1.0.17 for this
platform too. [5]binutils-2.8.1.0.17
exception handling
XXX Linux stuff -k encaps stuff
_________________________________________________________________
Last modified on Jan 2, 1998.
References
1. http://www.cygnus.com/egcs/faq.html#x86solaris
2. http://us-support.external.hp.com/
3. http://europe-support.external.hp.com/
4. ftp://ftp.yggdrasil.com/private/hjl
5. ftp://ftp.yggdrasil.com/private/hjl

34
INSTALL/TEST Normal file
View File

@@ -0,0 +1,34 @@
Testing egcs-1.0.3
Before you install egcs, you might wish to run the egcs testsuite;
this step is optional and may require you to download additional
software.
First, you must have downloaded the egcs testsuites; the full
distribution contains testsuites. If you downloaded the "core"
compiler plus any front ends, then you do not have the testsuites. You
can download the testsuites from the same site where you downloaded
the core distribution and language front ends.
Second, you must have a new version of dejagnu on your system;
dejagnu-1.3 will not work. We have made a [1]dejagnu snapshot
available in egcs.cygnus.com:/pub/egcs/infrastructure until a new
version of dejagnu can be released.
Assuming you've got the testsuites unpacked and have installed an
appropriate dejagnu, you can run the testsuite with "cd objdir; make
-k check". This may take a long time. Go get some lunch.
The testing process will try to test as many components in the egcs
distrubution as possible, including the C, C++ and Fortran compiler as
well as the C++ runtime libraries.
How to interpret test results TBD.
_________________________________________________________________
Last modified on Jan 2, 1998.
References
1. ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz

67
INSTALL/build.html Normal file
View File

@@ -0,0 +1,67 @@
<html>
<head>
<title>Building egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Building egcs-1.0.3</h1>
<p>Now that egcs is configured, you are ready to build the compiler and
runtime libraries.
<p>We <b>highly</b> recommend that egcs be built using gnu-make; other
versions make work, then again they might not. To be safe build with gnu-make.
<p><b>Building a native compiler</b>
<p>For a native build issue the command "make bootstrap". This will build
the entire egcs compiler system, which includes the following steps:
<ul>
<li> Build host tools necessary to build the compiler such as texinfo, bison,
gperf.<p>
<li> Build target tools for use by the compiler such as gas, gld, and
binutils.<p>
<li> Perform a 3-stage bootstrap of the compiler.<p>
<li> Perform a comparison test of the stage2 and stage3 compilers.<p>
<li> Build runtime libraries using the stage3 compiler from the previous
step.<p>
</ul>
<p>If you are short on disk space you might consider "make bootstrap-lean"
instead. This is identical to "make bootstrap" except that object files
from the stage1 and stage2 of the 3-stage bootstrap of the compiler are
deleted as soon as they are no longer needed.
<p><b>Building a cross compiler</b>
<p> We recommend reading the
<a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
crossgcc FAQ</a> for information about building cross compilers.
<p>For a cross build, issue the command "make cross", which performs the
following steps:
<ul>
<li> Build host tools necessary to build the compiler such as texinfo, bison,
gperf.<p>
<li> Build target tools for use by the compiler such as gas, gld, and
binutils.<p>
<li> Build the compiler (single stage only).<p>
<li> Build runtime libraries using the compiler from the previous
step.<p>
</ul>
<p>Note that if an error occurs in any step the make process will exit.
<p>
<hr>
<i>Last modified on Jan 2, 1998.</i>
<!--#include virtual="/glimpsebox.html"-->
</body>
</html>

122
INSTALL/configure.html Normal file
View File

@@ -0,0 +1,122 @@
<html>
<head>
<title>Configuring egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Configuring egcs-1.0.3</h1>
<p>Like most GNU software, egcs must be configured before it can be built.
This document attempts to describe the recommended configuration procedure
for both native and cross targets.
<p>We use <i>srcdir</i> to refer to the toplevel source directory for
egcs; we use <i>objdir</i> to refer to the toplevel build/object
directory for egcs.
<p>First, we <b>highly</b> recommend that egcs be built into a separate
directory than the sources. This is how we generally build egcs; building
where <i>srcdir</i> == <i>objdir</i> should still work, but doesn't get
extensive testing.
<p>Second, when configuring a native system, either "cc" must be in your
path or you must set CC in your environment before running configure.
Otherwise the configuration scripts may fail.
<p>To configure egcs:
<blockquote>
<tt>
<br>% mkdir <i>objdir</i>
<br>% cd <i>objdir</i>
<br>% <i>srcdir</i>/configure <b>[target]</b> <b>[options]</b>
</tt>
</blockquote>
<p><b>target specification</b>
<ul>
<li> egcs has code to correctly determine the correct value for
<b>target</b> for nearly all native systems. Therefore, we highly
recommend you not provide a configure target when configuring a
native compiler.
<li> <b>target</b> must be specified when configuring a cross compiler;
examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
</ul>
<p><b> options specification</b>
<p>Use <b>options</b> to override several configure time options for
egcs. A partial list of supported <tt>options</tt>:
<ul>
<li> <tt>--prefix=</tt><i>dirname</i> -- Specify the toplevel installation
directory. This is the recommended way to install the tools into a directory
other than the default. The toplevel installation directory defaults to
/usr/local.
<br>These additional options control where certain parts of the distribution
are installed. Normally you should not need to use these options.
<ul>
<li> <tt>--with-local-prefix=</tt><i>dirname</i> -- Specify the installation
directory for local include files. The default is /usr/local.
<li> <tt>--with-gxx-include-dir=</tt><i>dirname</i> -- Specify the installation
directory for g++ header files. The default is /usr/local/include/g++.
</ul>
<li> <tt>--enable-shared</tt> -- Build shared versions of the C++ runtime
libraries if supported <tt>--disable-shared</tt> is the default.
<li> <tt>--enable-haifa</tt> -- Enable the new Haifa instruction scheduler in the
compiler; the new scheduler can significantly improve code on some targets.
<tt>--disable-haifa</tt> is currently the default on all platforms except the HPPA.
<li> <tt>--with-gnu-as</tt> -- Specify that the compiler should assume the GNU
assembler (aka gas) is available.
<li> <tt>--with-gnu-ld</tt> -- Specify that the compiler should assume the GNU
linker (aka gld) is available.
<li> <tt>--with-stabs</tt> -- Specify that stabs debugging information should be used
instead of whatever format the host normally uses. Normally GCC uses the
same debug format as the host system.
<li> <tt>--enable-multilib</tt> -- Specify that multiple target libraries
should be built to support different target variants, calling conventions,
etc. This is the default.
<li> <tt>--enable-threads</tt> -- Specify that the target supports threads.
This only effects the Objective-C compiler and runtime library.
<li> <tt>--enable-threads=</tt><i>lib</i> -- Specify that <i>lib</i> is the
thread support library. This only effects the Objective-C compiler and
runtime library.
<li> <tt>--with-cpu=</tt><i>cpu</i> -- Specify which cpu variant the compiler should
generate code for by default. This is currently only supported on the
RS6000/PowerPC ports.
</ul>
<p>Some options which only apply to building cross compilers:
<ul>
<li> <tt>--with-headers=</tt><i>dir</i> -- Specifies a directory which has target
include files.
<li> <tt>--with-libs=</tt><i>dirs</i> -- Specifies a list of directories which contain
the target runtime libraries.
<li> <tt>--with-newlib</tt> -- Specifies that "newlib" is being used as the target
C library. This causes __eprintf to be omitted from libgcc.a on the
assumption that it will be provided by newlib.
</ul>
<p>Note that each <tt>--enable</tt> option has a corresponding <tt>--disable</tt> option and
that each <tt>--with</tt> option has a corresponding <tt>--without</tt> option.
<p>
<hr>
<i>Last modified on Jan 2, 1998.</i>
</body>
</html>

583
INSTALL/faq.html Normal file
View File

@@ -0,0 +1,583 @@
<html>
<head>
<title>egcs Frequently Asked Questions</title>
</head>
<body bgcolor="white">
<h1 align="center">egcs Frequently Asked Questions</h1>
<ol>
<li><a href="#gcc-2-diff">How is egcs different from gcc2?</a>
<li><a href="#open-development">What is an open development model?</a>
<li><a href="#release-fork">Releases and Forking</a>
<li><a href="#libc-lock">bits/libc-lock.h: No such file or directory</a>
<li><a href="#morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a>
<li><a href="#fortran">Problems building the Fortran compiler</a>
<li><a href="#mips">Problems building on MIPS platforms</a>
<li><a href="#x86eh">Problems with exception handling on x86 platforms</a>
<li><a href="#hpcompare">Bootstrap comparison failures on HPs</a>
<li><a href="#makebugs">Bootstrap loops rebuilding cc1 over and over</a>
<li><a href="#rpath">Dynamic linker is unable to find GCC libraries</a>
<li><a href="#rpath">libstdc++/libio tests fail badly with --enable-shared</a>
<li><a href="#dejagnu">Unable to run the testsuite</a>
<li><a href="#cross">How to build a cross compiler</a>
<li><a href="#multiple">How to install both gcc2 and egcs</a>
<li><a href="#snapshot">Snapshots, how, when, why</a>
<li><a href="#linuxkernel">Problems building Linux kernels</a>
<li><a href="#memexhausted">Virtual memory exhausted</a>
<li><a href="#gas">GCC can not find GAS</a>
<li><a href="#rh5.0">egcs does not work on Red Hat 5.0</a>
<li><a href="#x86solaris">Unable to bootstrap on x86 Solaris2.{5,6}</a>
<li><a href="#windows">EGCS with Windows</a>
<li><a href="#os2">EGCS with OS/2</a>
<li><a href="#environ">cpp: Usage:... Error</a>
<li><a href="#kde">EGCS will not build KDE</a>
<li><a href="#friend">Friend Templates</a>
<li><a href="#libg++">Where to find libg++</a>
<li><a href="#autoconf/bison++">Why do I need autoconf & bison</a>
<li><a href="#aix">EGCS does not work on AIX 4.3</a>
<li><a href="#gdb">Problems debugging egcs code</a>
<li><a href="#conflicts">Conflicts when using cvs update </a>
</ol>
<hr>
<h2><a name="gcc-2-diff">How is egcs be different from gcc2?</a></h2>
<p>Six years ago, gcc version 1 had reached a point of stability. For the
targets it could support, it worked well. It had limitations inherent in
its design that would be difficult to resolve, so a major effort was made
and gcc version 2 was the result. When we had gcc2 in a useful state,
development efforts on gcc1 stopped and we all concentrated on making
gcc2 better than gcc1 could ever be. This is the kind of step forward
we want to make with egcs.
<p>In brief, the three biggest differences between egcs and gcc2 are:
<ul>
<li>More rexamination of basic architectual decisions of
gcc and an interest in adding new optimizations;
<li>working with the groups who have fractured out from gcc2 (like
the Linux folks, the Intel optimizations folks, Fortran folks)
including more front-ends; and finally
<li>An open development model (<a
href="#open-development">see below</a>) for the development process.
</ul>
<p>These three differences will work together to result in a more
useful compiler, a more stable compiler, a central compiler that works
for more people, a compiler that generates better code.
<p>There are a lot of exciting compiler optimizations that have come
out. We want them in gcc. There are a lot of front ends out there for
gcc for languages like Fortran or Pascal. We want them easily
installable by users. After six years of working on gcc2, we've come
to see problems and limitations in the way gcc is architected; it is
time to address these again.
<hr>
<h2><a name="open-development">What is an open development model?</a></h2>
<p>With egcs, we are going to try a bazaar style<a
href="#cathedral-vs-bazaar"><b>[1]</b></a> approach to its
development: We're going to be making snapshots publicly available
to anyone who wants to try them; we're going to welcome anyone to join
the development mailing list. All of the discussions on the
development mailing list are available via the web. We're going to be
making releases with a much higher frequency than they have been made
in the past: We're shooting for three by the end of 1997.
<p>In addition to weekly snapshots of the egcs development sources, we
are going to look at making the sources readable from a CVS server by
anyone. We want to make it so external maintainers of parts of egcs
are able to commit changes to their part of egcs directly into the
sources without going through an intermediary.
<p>There have been many potential gcc developers who were not able to
participate in gcc development in the past. We these people to help in
any way they can; we ultimately want gcc to be the best compiler in the
world.
<p>A compiler is a complicated piece of software, there will still be
strong central maintainers who will reject patches, who will demand
documentation of implementations, and who will keep the level of
quality as high as it is today. Code that could use wider testing may
be intergrated--code that is simply ill-conceived won't be.
<p>egcs is not the first piece of software to use this open development
process; FreeBSD, the Emacs lisp repository, and Linux are a few
examples of the bazaar style of development.
<p>With egcs, we will be adding new features and optimizations at a
rate that has not been done since the creation of gcc2; these additions
will inevitably have a temporarily destabilizing effect. With the help
of developers working together with this bazaar style development, the
resulting stability and quality levels will be better than we've had
before.
<blockquote>
<a name="cathedral-vs-bazaar"><b>[1]</b></a>
We've been discussing different development models a lot over the
past few months. The paper which started all of this introduced two
terms: A <b>cathedral</b> development model versus a <b>bazaar</b>
development model. The paper is written by Eric S. Raymond, it is
called ``<a
href="http://locke.ccil.org/~esr/writings/cathedral.html">The
Cathedral and the Bazaar</a>''. The paper is a useful starting point
for discussions.
</blockquote>
<hr>
<h2><a name="release-fork">Releases and Forking?</a></h2>
<p>Some folks have questioned whether or not making releases is consistent
with the goals of the egcs project and whether or not making releases is
a fork from gcc2.
<pre>
The egcs project has several goals, including:
* Experimenting with a new development model, release process and
release packaging,
* Using the new development model to accelerate development of new
features, optimizations, etc for future inclusion in gcc,
* Providing high quality releases to the public.
An egcs release is a copy of the egcs sources that the developers have
tested and are believed to be suitable for wider scale use and testing.
Making releases of stable, tested sources is both a goal and a means by
which we hope to achieve other goals of the egcs project.
The existence of a stable tested release allows egcs to be more thoroughly
used and tested by a wider audience than is capable of testing snapshots.
The expanded audience provides developers with critical feedback in a
timely manner, which is beneficial to GCC as a whole and is consistent with
the stated goals of egcs.
The gcc maintainers are encouraged to migrate tested fixes and new features
from egcs into gcc at their discretion. egcs maintainers are willing to
assist the gcc maintainers as time permits. egcs periodically merges in
changes from gcc into the egcs sources.
What will keep egcs from becoming a fork is cooperation between the
developers of gcc and egcs.
We don't see this situation as significantly different than other projects
that make releases based on some version of the gcc sources (Cygnus, g77,
etc). All the code is still available for inclusion in gcc at the discretion
of the gcc maintainers.
</pre>
<hr>
<h2><a name="libc-lock">bits/libc-lock.h: No such file or directory</a></h2>
<p>This entry should be obsolete, egcs should handle these beta versions of
glibc2 correctly.
<p>egcs includes a tightly integrated libio and libstdc++ implementation which
can cause problems on hosts which have libio integrated into their C library
(most notably Linux).
<p>We believe that we've solved the major technical problems for the most
common versions of libc found on Linux systems. However, some versions
of Linux use pre-release versions of glibc2, which egcs has trouble detecting
and correctly handling.
<p>If you're using one of these pre-release versions of glibc2, you may get
a message "bits/libc-lock.h: No such file or directory" when building egcs.
Unfortunately, to fix this problem you will need to update your C library to
glibc2.0.5c.
<hr>
<h2><a name="morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a></h2>
<p>If you get this error, it means either egcs incorrectly guessed what version
of libc is installed on your linux system, or you incorrectly specified a
version of glibc when configuring egcs.
<p>If you did not provide a target name when configuring egcs, then you've
found a bug which needs to be reported. If you did provide a target name at
configure time, then you should reconfigure without specifying a target name.
<hr>
<h2><a name="fortran">Problems building the Fortran compiler</a></h2>
<p>The Fortran front end can not be built with most vendor compilers; it must
be built with gcc. As a result, you may get an error if you do not follow
the install instructions carefully.
<p>In particular, instead of using "make" to build egcs, you should use
"make bootstrap" if you are building a native compiler or "make cross"
if you are building a cross compiler.
<p>It has also been reported that the Fortran compiler can not be built
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
binutils or to Red Hat 5.0; we'll provide more information as it becomes
available.
<hr>
<h2><a name="mips">Problems building on MIPS platforms</a></h2>
<p>egcs requires the use of GAS on all versions of Irix, except Irix 6 due
to limitations in older Irix assemblers.
<p> Either of these messages indicates that you are using the MIPS assembler
when instead you should be using GAS.
<pre>
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
.4byte $LECIE1-$LSCIE1
as0: Error: ./libgcc2.c, line 1:malformed statement
</pre>
<hr>
<pre>
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol in expression
.word $LECIE1-$LSCIE1
</pre>
<p> For Irix 6, you should use the native assembler as GAS is not supported
on Irix 6.
<hr>
<h2> <a name="x86eh">Problems with exception handling on x86 platforms</a></h2>
<p>If you are using the GNU assembler (aka gas) on an x86 platform and
exception handling is not working correctly, then odds are you're using a
buggy assembler.
<p>We recommend binutils-2.8.1.0.15 or newer.
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.tar.gz"> binutils-2.8.1.0.20 source</a>
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.bin.tar.gz"> binutils-2.8.1.0.20 x86 binary for libc5</a>
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.glibc.bin.tar.gz"> binutils-2.8.1.0.20 x86 binary for glibc2</a>
Or, you can try a
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz"> binutils snapshot</a>; however, be aware that the binutils snapshot is untested
and may not work (or even build). Use it at your own risk.
<hr>
<h2> <a name="hpcompare">Bootstrap comparison failures on HPs</a></h2>
<p>If you bootstrap the compiler on hpux10 using the HP assembler instead of
gas, every file will fail the comparison test.
<p>The HP asembler inserts timestamps into object files it creates, causing
every file to be different. The location of the timestamp varies for each
object file, so there's no real way to work around this mis-feature.
<p>Odds are your compiler is fine, but there's no way to be certain.
<p>If you use GAS on HPs, then you will not run into this problem because
GAS never inserts timestamps into object files. For this and various other
reasons we highly recommend using GAS on HPs.
<hr>
<h2> <a name="makebugs">Bootstrap loops rebuilding cc1 over and over</a></h2>
<p>When building egcs, the build process loops rebuilding cc1 over and
over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
<p>This is probably a bug somewhere in the egcs Makefile. Until we find and
fix this bug we recommend you use GNU make instead of vendor supplied make
programs.
<hr>
<h2> <a name="rpath">Dynamic linker is unable to find GCC libraries</a></h2>
<p>This problem manifests itself by programs not finding shared libraries
they depend on when the programs are started. Note this problem often manifests
itself with failures in the libio/libstdc++ tests after configuring with
--enable-shared and building egcs.
<p>GCC does not specify a runpath so that the dynamic linker can find dynamic
libraries at runtime.
<p>The short explaination is that if you always pass a -R option to the
linker, then your programs become dependent on directories which
may be NFS mounted, and programs may hang unnecessarily when an
NFS server goes down.
<p>The problem is not programs that do require the directories; those
programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
<p>SunOS effectively always passed a -R option for every -L option;
this was a bad idea, and so it was removed for Solaris. We should
not recreate it.
<hr>
<h2> <a name="dejagnu">Unable to run the testsuite</a></h2>
<p>If you get a message about unable to find "standard.exp" when trying to
run the egcs testsuites, then your dejagnu is too old to run the egcs tests.
You will need to get a newer version of dejagnu; we've made a
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz">
dejagnu snapshot</a> available until a new version of dejagnu can be released.
<hr>
<h2> <a name="cross">How to build a cross compiler</a></h2>
<p> Building cross compilers is a rather complex undertaking because they
usually need additional software (cross assembler, cross linker, target
libraries, target include files, etc).
<p> We recommend reading the <a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
crossgcc FAQ</a> for information about building cross compilers.
<p> If you have all the pieces available, then `make cross' should build a
cross compiler. `make LANGUAGES="c c++" install'will install the cross
compiler.
<p> Note that if you're trying to build a cross compiler in a tree which
includes binutils-2.8 in addition to egcs, then you're going to need to
make a couple minor tweaks so that the cross assembler, linker and
nm utilities will be found.
<p>binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs gcc
looks for them using gas-new, ld-new and nm-new, so you may have to arrange
for any symlinks which point to &ltfile&gt.new to be changed to &ltfile&gt-new.
<hr>
<h2> <a name="snapshot">Snapshots, how, when, why</a></h2>
<p> We make snapshots of the egcs sources about once a week; there is no
predetermined schedule. These snapshots are intended to give everyone
access to work in progress. Any given snapshot may generate incorrect code
or even fail to build.
<p>If you plan on downloading and using snapshots, we highly recommend you
subscribe to the egcs mailing lists. See <a href="index.html#mailinglists">
mailing lists</a> on the main egcs page for instructions on how to subscribe.
<p>When using the diff files to update from older snapshots to newer snapshots,
make sure to use "-E" and "-p" arguments to patch so that empty files are
deleted and full pathnames are provided to patch. If your version of
patch does not support "-E", you'll need to get a newer version. Also note
that you may need autoconf, autoheader and various other programs if you use
diff files to update from one snapshot to the next.
<hr>
<h2> <a name="multiple">How to install both egcs and gcc2</a></h2>
<p>It may be desirable to install both egcs and gcc2 on the same system. This
can be done by using different prefix paths at configure time and a few
symlinks.
<p>Basically, configure the two compilers with different --prefix options,
then build and install each compiler. Assume you want "gcc" to be the egcs
compiler and available in /usr/local/bin; also assume that you want "gcc2"
to be the gcc2 compiler and also available in /usr/local/bin.
<p>The easiest way to do this is to configure egcs with --prefix=/usr/local/egcs
and gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers.
Then make a symlink from /usr/local/bin/gcc to /usr/local/egcs/bin/gcc and
from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
<hr>
<h2> <a name="linuxkernel">Problems building Linux kernels</a></h2>
<p>If you installed a recent binutils/gas snapshot on your Linux system,
you may not be able to build the kernel because objdump does not understand
the "-k" switch. The solution for this problem is to remove /usr/bin/encaps.
<p>The reason you must remove /usr/bin/encaps is because it is an obsolete
program that was part of older binutils distributions; the Linux kernel's
Makefile looks for this program to decide if you have an old or a new
binutils. Problems occur if you installed a new binutils but haven't
removed encaps, because the Makefile thinks you have the old one. So zap
it; trust us, you won't miss it.
<p>You may get an internal compiler error compiling process.c in newer
versions of the Linux kernel on x86 machines. This is a bug in an asm
statement in process.c, not a bug in egcs. XXX How to fix?!?
<p>You may get errors with the X driver of the form
<pre>
_X11TransSocketUNIXConnect: Can't connect: errno = 111
</pre>
<p>It's a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c
does an illegal hack which used to work but is now broken since GCC optimizes
more aggressively . The newer 2.1.x kernels already have a fix which should
also work in 2.0.32.
<hr>
<h2> <a name="memexhausted">Virtual memory exhausted error</a></h2>
<p> This error means your system ran out of memory; this can happen for large
files, particularly when optimizing. If you're getting this error you should
consider trying to simplify your files or reducing the optimization level.
<p>Note that using -pedantic or -Wreturn-type can cause an explosion in the
amount of memory needed for template-heavy C++ code, such as code that uses
STL. Also note that -Wall includes -Wreturn-type, so if you use -Wall you
will need to specify -Wno-return-type to turn it off.
<hr>
<h2> <a name="gas">GCC can not find GAS</a></h2>
<p>Some configurations like irix4, irix5, hpux* require the use of the GNU
assembler intead of the system assembler. To ensure that egcs finds the GNU
assembler, you should configure the GNU assembler with the same --prefix
option as you used for egcs. Then build & install the GNU assembler. After
the GNU assembler has been installed, proceed with building egcs.
<hr>
<h2> <a name="rh5.0">egcs does not work on Red Hat 5.0</a></h2>
<p> This entry is obsolete with the release of egcs-1.0.1 which should
handle Red Hat 5.0 correctly.
<p> egcs-1.0 does not currently work with Red Hat 5.0 on some platforms; we'll
update this entry with more information as it becomes available.
<p> You may want to try this
<a href="http://www.cygnus.com/ml/egcs/1997-Dec/0594.html"> proposed patch</a>
for Red Hat 5.0. Please let us know if you use this patch and whether or
not it works.
<hr>
<h2> <a name="x86solaris">Unable to bootstrap on x86 Solaris 2.{5,6}</a></h2>
<p> This entry is obsolete with the release of egcs-1.0.1 which should
handle x86 Solaris systems correctly.
<p>This patch should fix the problem
<pre>
Index: t-sol2
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/config/i386/t-sol2,v
retrieving revision 1.2
diff -c -3 -p -r1.2 t-sol2
*** t-sol2 1997/09/04 23:54:04 1.2
--- t-sol2 1997/12/04 07:19:07
*************** crtn.o: $(srcdir)/config/i386/sol2-cn.as
*** 31,36 ****
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
! CRTSTUFF_T_CFLAGS = -fPIC
TARGET_LIBGCC2_CFLAGS = -fPIC
--- 31,40 ----
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
+ #
+ # We must also enable optimization to avoid having any code appear after
+ # the call & alignment statement, but before we switch back to the
+ # .text section.
! CRTSTUFF_T_CFLAGS = -fPIC -O2
TARGET_LIBGCC2_CFLAGS = -fPIC
</pre>
<hr>
<h2> <a name="windows">EGCS with Windows</a></h2>
<p>egcs does not currently support windows, either natively or with the
cygwin32 dll. However Mumit Khan has been working on supporting Windows
with egcs. You should check out his site if you're interested in Windows
support.
<a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32">GNU Win32 related projects</a>
<hr>
<h2> <a name="os2">EGCS with OS/2</a></h2>
<p>egcs does not currently support OS/2. However, Andrew Zabolotny has been
working on a generic os/2 port with pgcc. The current code code can be found
at <a href="http://www.goof.com/pcg/os2">http://www.goof.com/pcg/os2</a>.
<hr>
<h2> <a name="environ">cpp: Usage:... Error</a></h2>
<p>If you get an error like this when building egcs (particularly when building
__mulsi3), then you likely have a problem with your environment variables.
<pre>
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
[switches] input output
</pre>
<p>First look for an explicit '.' in either LIBRARY_PATH or GCC_EXEC_PREFIX
from your environment. If you do not find an explicit '.', look for
an empty pathname in those variables. Note that ':' at either the start
or end of these variables is an implicit '.' and will cause problems.
<hr>
<h2> <a name="kde">EGCS will not build KDE</a></h2>
<p> Previous versions of g++ accepted (as a GNU extension)
constructor-arguments for the objects in an array of objects
dynamically allocated with new. Here's an example of this construct:
<pre>
struct S { S(int); }
void f() { new S[3](6); }
</pre>
<p>However, this construct is not allowed by the ANSI/ISO Standard, and
is no longer accepted by g++.
<p> KDE uses such constructs and therefore will not build with egcs; note
patches are available to fix KDE.
<hr>
<h2> <a name="friend">Friend Templates<a></h2>
<p>In order to make a specialization of a template function a friend of a
(possibly template) class, you must explicitly state that the friend
function is a template, by appending angle brackets to its name, and
this template function must have been declared already. An error in
the last public comment draft of the ANSI/ISO C++ Standard has led
people to believe that was not necessary, but it is, and it was fixed
in the final version of the Standard.
<hr>
<h2> <a name="libg++">Where to find libg++<a></h2>
<p>Many folks have been asking where to find libg++ for egcs. First we
should point out that few programs actually need libg++; most only need
libstdc++/libio which are included in the egcs distribution.
<p>If you do need libg++ you can get a libg++ snapshot which works with egcs
from <a href="ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz">
ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz</a>
<hr>
<h2> <a name="autoconf/bison++">Why do I need autoconf/bison<a></h2>
<p>If you're using diffs up dated from one snapshot to the next, or
if you're using the CVS repository, you may need autoconf, bison, or
possibly other tools to rebuild egcs.
<p>This is necessary because neither diff nor cvs keep timestamps
correct. So it is possible for "make" to think a generated file is
out of date.
<p>If you do not have autoconf, bison, etc, then you can issue the
following commands to touch all the generated files.
<pre>
touch `find egcs -name configure -print`
touch egcs/gcc/c-parse.y
touch egcs/gcc/objc/objc-parse.y
touch egcs/gcc/{cstamp-h.in,c-gperf.h,c-parse.c,c-parse.h,cexp.c}
touch egcs/gcc/cp/{parse.c,parse.h}
touch egcs/gcc/objc/objc-parse.c
</pre>
<hr>
<h2> <a name="aix">EGCS does not work on AIX 4.3<a></h2>
<p>EGCS does not currently support AIX4.3; however, if you want to try
and make it work with AIX 4.3 we highly recommend you get the
fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
ASSEMBLE/BIND) which is available from IBM Customer Support and IBM's
service.boulder.ibm.com website.
<hr>
<h2><a name="gdb">Problems debugging egcs code</a></h2>
<p>On some systems egcs will produce dwarf debug records by default; however
the current gdb-4.16 release may not be able to read such debug records.
<p>You can either use the argument "-gstabs" instead of "-g" or pick up
the current beta copy of gdb-4.17 to work around the problem.
<hr>
<h2><a name="conflicts">Conflicts when using cvs update</a></h2>
<p>It is not uncommon to get cvs conflict messages for some generated files
when updating your local sources from the CVS repository. Typically such
conflicts occur with bison or autoconf generated files.
<p>As long as you haven't been making modifications to the generated files
or the generator files, it is safe to delete the offending file, then run
cvs update again to get a new copy.
<hr>
<p><a href="index.html">Return to the egcs home page</a>
<p><i>Last modified: March 04, 1998</i>
<!--#include virtual="/glimpsebox.html"-->
</body>
</html>

30
INSTALL/finalinstall.html Normal file
View File

@@ -0,0 +1,30 @@
<html>
<head>
<title>Final install egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Final install egcs-1.0.3</h1>
<p>Now that egcs has been built and tested, you can install it with
`cd <i>objdir</i>; make install' for a native compiler or
`cd <i>objdir</i>; make install LANGUAGES="c c++"' for a cross compiler
(note installing cross compilers will be easier in the next release!).
<p>That step completes the installation of egcs; user level binaries can
be found in <i>prefix</i>/bin where <i>prefix</i> is the value you specified
with the --prefix to configure (or /usr/local by default).
<p>If you don't mind, please send egcs@cygnus.com a short mail message
indicating that you successfully built and installed egcs. Include
the output from running <i>srcdir</i>/config.guess.
<p>If you find a bug in egcs, please report it to
<a href="mailto:egcs-bugs@cygnus.com">egcs-bugs@cygnus.com</a>.
<p>
<hr>
<i>Last modified on Jan 2, 1998.</i>
</body>
</html>

47
INSTALL/index.html Normal file
View File

@@ -0,0 +1,47 @@
<html>
<head>
<title>Installing egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Installing egcs-1.0.3</h1>
<p>This document describes the generic installation procedure for egcs as
well as detailing some target specific installation instructions for egcs.
<p>egcs includes several components that previously were separate distributions
with their own installation instructions. This document supercedes all
package specific installation instructions. We provide the component specific
installation information in the source distribution for historical reference
purposes only.
<p>We recommend you read the entire generic installation instructions as
well as any target specific installation instructions before you proceed
to configure, build, test and install egcs.
<p>If something goes wrong in the configure, build, test or install
procedures, first double check that you followed the generic and target
specific installation instructions carefully. Then check the
<a href="faq.html">FAQ</a> to see if your problem is covered before you file
a bug report.
<p>The installation procedure is broken into four steps.
<ul>
<li> <a href="configure.html">configure</a>
<li> <a href="build.html">build</a>
<li> <a href="test.html">test</a> (optional)
<li> <a href="finalinstall.html">install</a>
</ul>
<p>Before starting the build/install procedure <b>please</b> browse the
<a href="specific.html">host/target specific installation notes</a>.
<hr>
<a href="../index.html">Return to the egcs home page</a>
</body>
</html>
<hr>
<i>Last modified on Jan 2, 1998.</i>

130
INSTALL/specific.html Normal file
View File

@@ -0,0 +1,130 @@
<html>
<head>
<title>Host/Target specific installation notes for egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Host/Target specific installation notes for egcs-1.0.3</h1>
<p><b>alpha*-*-*</b><br>
No specific installation needs/instructions.
<p><b>i?86-*-linux*</b><br>
You will need binutils-2.8.1.0.15 or newer for exception handling to work.
<p><b>i?86-*-sco3.2v5*</b><br>
The SCO assembler is currently required. The GNU assembler is not up
to the task of switching between ELF and COFF at runtime.
<br>Unlike various prereleases of GCC, that used '-belf' and defaulted to
COFF, you must now use the '-melf' and '-mcoff' flags to toggle between
the two object file formats. ELF is now the default.
<br>Look in gcc/config/i386/sco5.h (search for "messy") for additional
OpenServer-specific flags.
<br>Systems based on OpenServer before 5.0.4 (<code>uname -X</code> will
tell you what you're running) require TLS597 from ftp.sco.com/TLS for
C++ constructors and destructors to work right.
<p><b>i?86-pc-solaris*</b><br>
You'll need a patch to fix an egcs bug on this platform.
<a href="http://www-egcs.cygnus.com/faq.html#x86solaris"> x86 solaris patch</a>
<p><b>hppa*-hp-hpux*</b><br>
We <b>highly</b> recommend using gas/binutils-2.8 on all hppa platforms; you
may encounter a variety of problems when using the HP assembler.
<p><b>hppa*-hp-hpux9</b><br>
The HP assembler has major problems on this platform. We've tried to work
around the worst of the problems. However, those workarounds may be causing
linker crashes in some circumstances; the workarounds also probably prevent
shared libraries from working. Use the GNU assembler to avoid these problems.
<br>The configuration scripts for egcs will also trigger a bug in the hpux9
shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to
/bin/ksh in your environment.
<p><b>hppa*-hp-hpux10</b><br>
For hpux10.20, we <b>highly</b> recommend you pick up the latest sed
patch from HP. HP has two sites which provide patches free of charge.
<br><a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
Latin-America</a>
<br><a href="http://europe-support.external.hp.com">Europe</a>
<p>Retrieve patch PHCO_12862.
<p>The HP assembler on these systems is much better than the hpux9 assembler,
but still has some problems. Most notably the assembler inserts timestamps
into each object file it creates, causing the 3-stage comparison test to fail
during a "make bootstrap". You should be able to continue by saying "make all"
after getting the failure from "make bootstrap".
<p><b>m68k-*-nextstep*</b><br>
You absolutely must use GNU sed and GNU make on this platform.
<p>If you try to build the integrated C++ & C++ runtime libraries on this system
you will run into trouble with include files. The way to get around this is
to use the following sequence. Note you must have write permission to
<i>prefix</i> for this sequence to work.
<p>cd <i>objdir</i><br>
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld<br>
cd gcc<br>
make bootstrap<br>
make install-headers-tar<br>
cd ..<br>
make bootstrap3<br>
<p><b>m68k-sun-sunos4.1.1</b><br>
It is reported that you may need the GNU assembler on this platform.
<p><b>mips*-sgi-irix4</b><br>
<b>mips*-sgi-irix5</b><br>
You must use GAS on these platforms, the native assembler can not handle the
code for exception handling support on this platform.
<p>These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by installing GNU binutils, which includes
a functional ranlib for this system.
<p>You may get the following warning on irix4 platforms, it can be safely
ignored.
<pre>
warning: foo.o does not have gp tables for all its sections.
</pre>
<p><b>mips*-sgi-irix6</b><br>
You must not use GAS on irix6 platforms; doing so will only cause problems.
<p>These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by making a dummy script called ranlib
which just exits with zero status and placing it in your path.
<p><b>rs6000-ibm-aix*</b><br>
<b>powerpc-ibm-aix*</b><br>
At least one person as reported problems with older versions of gnu-make on
this platform. make-3.76 is reported to work correctly.
<p><b>powerpc-*-linux-gnu*</b><br>
You will need
<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils-2.8.1.0.20</a> for
a working egcs. It is strongly recommended to recompile binutils with egcs
if you initially built it with gcc-2.7.2.*.
<p><b>sparc-unkonwn-linux-gnulibc1</b><br>
It has been reported that you might need binutils-2.8.1.0.20 for this
platform too.
<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils-2.8.1.0.20</a>
<p>
exception handling
<p>XXX Linux stuff
-k encaps stuff
<hr>
<i>Last modified on February 7, 1998.</i>
<!--#include virtual="/glimpsebox.html"-->
</body>
</html>

38
INSTALL/test.html Normal file
View File

@@ -0,0 +1,38 @@
<html>
<head>
<title>Testing egcs-1.0.3 </title>
</head>
<body bgcolor="white">
<h1 align="center">Testing egcs-1.0.3</h1>
<p>Before you install egcs, you might wish to run the egcs testsuite; this
step is optional and may require you to download additional software.
<p>First, you must have downloaded the egcs testsuites; the full distribution
contains testsuites. If you downloaded the "core" compiler plus any front
ends, then you do not have the testsuites. You can download the testsuites
from the same site where you downloaded the core distribution and language
front ends.
<p>Second, you must have a new version of dejagnu on your system; dejagnu-1.3
will not work. We have made a
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz">
dejagnu snapshot</a> available in egcs.cygnus.com:/pub/egcs/infrastructure until
a new version of dejagnu can be released.
<p>Assuming you've got the testsuites unpacked and have installed an appropriate
dejagnu, you can run the testsuite with "cd <i>objdir</i>; make -k check".
This may take a long time. Go get some lunch.
<p>The testing process will try to test as many components in the egcs
distrubution as possible, including the C, C++ and Fortran compiler as
well as the C++ runtime libraries.
<p> How to interpret test results TBD.
<hr>
<i>Last modified on Jan 2, 1998.</i>
<!--#include virtual="/glimpsebox.html"-->
</body>
</html>

View File

@@ -175,10 +175,10 @@ REALLY_SET_LIB_PATH = \
ALL = all.normal
INSTALL_TARGET = installdirs \
install-gcc \
$(INSTALL_MODULES) \
$(INSTALL_TARGET_MODULES) \
$(INSTALL_X11_MODULES) \
install-gcc \
$(INSTALL_DOSREL)
@@ -349,7 +349,8 @@ BASE_FLAGS_TO_PASS = \
"YACC=$(YACC)" \
"exec_prefix=$(exec_prefix)" \
"prefix=$(prefix)" \
"tooldir=$(tooldir)"
"tooldir=$(tooldir)" \
"gxx_include_dir=$(gxx_include_dir)"
# Flags to pass down to most sub-makes, in which we're building with
# the host environment.

92
config.guess vendored
View File

@@ -52,6 +52,9 @@ trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
fi
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
@@ -62,9 +65,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d84
cmoveq \$4,0,\$3
addl \$3,\$31,\$0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
@@ -72,16 +80,25 @@ EOF
if test "$?" = 0 ; then
./dummy
case "$?" in
1)
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
2)
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
fi
rm -f dummy.s dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
@@ -490,7 +507,36 @@ EOF
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
elf32ppc)
# Determine Lib Version
cat >dummy.c <<EOF
#include <features.h>
#if defined(__GLIBC__)
extern char __libc_version[];
extern char __libc_release[];
#endif
main(argc, argv)
int argc;
char *argv[];
{
#if defined(__GLIBC__)
printf("%s %s\n", __libc_version, __libc_release);
#else
printf("unkown\n");
#endif
return 0;
}
EOF
LIBC=""
${CC-cc} dummy.c -o dummy 2>/dev/null
if test "$?" = 0 ; then
./dummy | grep 1\.99 > /dev/null
if test "$?" = 0 ; then
LIBC="libc1"
fi
fi
rm -f dummy.c dummy
echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;;
esac
if test "${UNAME_MACHINE}" = "alpha" ; then
@@ -500,9 +546,14 @@ EOF
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d84
cmoveq \$4,0,\$3
addl \$3,\$31,\$0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
@@ -511,12 +562,21 @@ EOF
if test "$?" = 0 ; then
./dummy
case "$?" in
1)
UNAME_MACHINE="alphaev5"
;;
2)
UNAME_MACHINE="alphaev56"
;;
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
objdump --private-headers dummy | \

11
configure vendored
View File

@@ -81,7 +81,7 @@ subdirs=
target_alias=NOTARGET
target_makefile_frag=
undefs=NOUNDEFS
version="$Revision: 1.1.1.1 $"
version="$Revision: 1.2.2.1 $"
x11=default
### we might need to use some other shell than /bin/sh for running subshells
@@ -1171,6 +1171,15 @@ EOF
echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
fi
# provide a proper gxx_include_dir to all subdirs.
# Note, if you change the default, make sure to fix both here
# and in the gcc subdirectory.
if test -z "${with_gxx_include_dir}"; then
echo gxx_include_dir = '${prefix}/include/g++' >> ${Makefile}
else
echo gxx_include_dir = ${with_gxx_include_dir} >> ${Makefile}
fi
# reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
# remove any form feeds.
if [ -z "${subdirs}" ]; then

View File

@@ -122,7 +122,7 @@ case "${host}" in
mips*-*-sysv4*) host_makefile_frag=config/mh-sysv4 ;;
mips*-*-sysv*) host_makefile_frag=config/mh-riscos ;;
i[3456]86-*-dgux*) host_makefile_frag=config/mh-dgux386 ;;
i[3456]86-ncr-sysv4.3) host_makefile_frag=config/mh-ncrsvr43 ;;
i[3456]86-ncr-sysv4.3*) host_makefile_frag=config/mh-ncrsvr43 ;;
i[3456]86-ncr-sysv4*) host_makefile_frag=config/mh-ncr3000 ;;
i[3456]86-*-sco3.2v5*) host_makefile_frag=config/mh-sysv ;;
i[3456]86-*-sco*) host_makefile_frag=config/mh-sco ;;
@@ -416,6 +416,12 @@ case "${target}" in
alpha*-*-*vms*)
noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
;;
alpha*-*-linux*)
# newlib is not 64 bit ready
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
# linux has rx in libc
skipdirs="$skipdirs target-librx"
;;
alpha*-*-*)
# newlib is not 64 bit ready
noconfigdirs="$noconfigdirs target-newlib target-libgloss"

View File

@@ -1,3 +1,8 @@
Fri Nov 21 12:54:58 1997 Manfred Hollstein <manfred@s-direktnet.de>
* Makefile.in: Add --no-split argument to avoid creating files
with names longer than 14 characters.
Tue Oct 7 16:27:34 1997 Manfred Hollstein <manfred@s-direktnet.de>
* aclocal.m4: Substitute INSTALL.

View File

@@ -60,7 +60,7 @@ install-info: info
dvi: $(DVIFILES)
standards.info: $(srcdir)/standards.texi
$(MAKEINFO) -I$(srcdir) -o standards.info $(srcdir)/standards.texi
$(MAKEINFO) --no-split -I$(srcdir) -o standards.info $(srcdir)/standards.texi
standards.dvi: $(srcdir)/standards.texi
TEXINPUTS=$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/standards.texi

View File

@@ -1,3 +1,919 @@
Thu Apr 23 01:41:02 1998 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for 1.0.3 pre-release.
Mon Apr 20 02:17:37 1998 Richard Henderson <rth@cygnus.com>
Jim Wilson <wilson@cygnus.com>
J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (eliminate_regs): Delete LOAD_EXTENDED_OP code that
boiled down to && ! 0.
* reload.c (find_reloads): Always force (subreg (mem)) to be
reloaded if WORD_REGISTER_OPERATIONS.
* reload.c (find_reloads_toplev): Handle arbitrary non-paradoxical
SUBREGs of CONST_INTs.
* reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
SUBREG_REG if the word count is unchanged, also in the input reload
case. Disable non-applicable sanity checks.
* reload.c (push_reload): In WORD_REGISTER_OPERATIONS code, add test
to require the SUBREG mode to be smaller than the SUBREG_REG mode.
* reload1.c (eliminate_regs): Likewise.
* reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
SUBREG_REG if the word count is unchanged.
* reload1.c (eliminate_regs) [case SET]: If W_R_O, preserve
subregs of identical word size for push_reload.
Mon Apr 20 00:58:48 1998 H.J. Lu (hjl@gnu.org)
* reg-stack.c (subst_asm_stack_regs): Change to return the last
new insn generated by this function.
(subst_stack_regs): Likewise.
(convert_regs): Record the last newly generated insn and use
it for change_stack () instead of INSN.
Sun Apr 19 00:23:23 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (extendsidi2): Kill bogus cvtql+cvtlq case.
* alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
* alpha.c (print_operand): Handle it.
* alpha.md (fix_truncsfdi2): Use it. Add earlyclobber pattern
for ALPHA_TP_INSN.
(fix_truncdfdi2): Likewise.
* alpha/linux.h (FUNCTION_PROFILER): _mcount expects its pv in $28.
Sat Apr 18 19:06:59 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.md (floatsidf2_loadaddr): rs6000_fpmem_offset will be
negative in a stackless frame.
* rs6000.c (rs6000_stack_info): Don't include fixed-size link area
in stackless frame size. Support 64-bit stackless frame size.
Combine fpmem offset calculations and don't add total_size to
offset if not pushing a stack frame.
Sat Apr 18 17:55:57 1998 Jim Wilson <wilson@cygnus.com>
* i386.md (fix_truncsfdi2+[123]): Add + to operand 1 constraints.
Sun Mar 15 23:39:10 1998 Jeffrey A Law (law@cygnus.com)
* version.c: Update for egcs-1.0.2 release.
Sun Mar 15 23:29:25 1998 Manfred Hollstein <manfred@s-direktnet.de>
* config/m68k/mot3300.h (ASM_BYTE_OP): Don't include '\t' in the
definition.
(ASM_OUTPUT_ASCII): Prefix ASM_BYTE_OP by one single '\t'.
Sun Mar 15 23:29:18 1998 Jeffrey A Law (law@cygnus.com)
* m68k.h: Fix mis-applied fix from the mainline branch.
Wed Mar 10 14:26:52 1998 Jeffrey A Law (law@cygnus.com)
* rtlanal.c (optimize): Declare.
Sun Mar 8 11:16:23 1998 Jeffrey A Law (law@cygnus.com)
* emit-rtl.c (gen_lowpart_common): Handle more case where converting
a CONST_INT into SFmode.
Sat Mar 7 01:12:46 1998 Jeffrey A Law (law@cygnus.com)
* i386/aix386ng.h (CPP_PREDEFINES): Put back -Di386.
* i386/freebsd-elf.h: Likewise.
* i386/gas.h: Likewise.
* i386/linux-aout.h: Likewise.
* i386/linux-oldld.h: Likewise.
* i386/linux.h: Likewise.
* i386/osfelf.h: Likewise.
* i386/osfrose.h: Likewise.
* i386/sco.h: Likewise.
* i386/sco4.h: Likewise.
* i386/sco4dbx.h: Likewise.
* i386/sco5.h: Likewise.
* i386/scodbx.h: Likewise.
* i386/sol2.h: Likewise.
* i386/sysv3.h: Likewise.
Wed Mar 4 22:03:38 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
* rs6000/linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if
USE_GNULIBC_1 is defined
* configure.in: add a new case powerpc-*-linux-gnulibc1 which
includes the t-linux-gnulibc1 fragment
Tue Mar 3 00:06:45 1998 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for 1.0.2 prerelease diffs.
Sun Mar 1 18:14:46 1998 Jeffrey A Law (law@cygnus.com)
* ginclude/va-ppc.h (va_arg): Fix typo in long long support.
Tue Feb 24 09:32:24 1998 Jeffrey A Law (law@cygnus.com)
* expr.c (emit_move_insn_1): Fix minor buglet in last change
caused by importint it into the release branch.
Sun Feb 22 20:46:31 1998 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
* expr.c (emit_move_insn_1): When moving complex values in several
steps, emit a CLOBBER to show the destination dies.
Sun Feb 22 20:06:34 1998 Jim Wilson <wilson@cygnus.com>
* iris5.h (DWARF2_UNWIND_INFO): Define to 0.
* iris5gas.h (DWARF2_UNWIND_INFO): Define to 1.
Thu Feb 19 09:41:23 1998 Mumit Khan <khan@xraylith.wisc.edu>
* i386/x-cygwin32 (USE_COLLECT2): Disable collect2 for now on
i386-{cygwin32,mingw32}.
Sun Feb 22 09:45:39 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* collect2.c (scan_prog_file): Completely cover uses of variable
`exports' with macro COLLECT_EXPORT_LIST.
1998-02-20 Jason Merrill <jason@yorick.cygnus.com>
* collect2.c (main): Still handle !do_collecting for non-AIX targets.
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
David Edelsohn <edelsohn@mhpcc.edu>
* collect2.c (XCOFF_SCAN_LIBS): Remove.
(export_flag): New variable.
(export_file): #ifdef COLLECT_EXPORT_LIST.
(import_file, exports, imports, undefined): New variables.
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
(dump_list, dump_prefix_list, is_in_list): New functions.
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
(write_import_file, resolve_lib_name): New functions.
(use_import_list, ignore_library): Same.
(collect_exit): maybe_unlink import_file and #ifdef.
(handler): Same.
(main): New variable importf, #ifdef exportf. Move parsing of
-shared before general argument parsing. Resolve AIX library
paths and import libgcc.a symbols. Treat .so shared libraries the
same as objects and .a libraries. Create alias for object_lst and
increment it instead of original pointer. Scan AIX libraries as
objects earlier instead of using scan_libraries. Perform AIX
tlink later to resolve templates instead of forking ld.
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
(GCC_UNDEF_SYMBOL): New macro.
(scan_prog_file): Loop for members of AIX libraries. Handle
export/import of ctors/dtors.
(aix_std_libs): New variable.
(scan_libraries, XCOFF): Delete.
1998-02-19 Mike Stump <mrs@wrs.com>
* Makefile.in: Use $tooldir for sys-include to match toplevel
configure.
Thu Feb 19 01:41:47 1998 Robin Kirkham <rjk@mlb.dmt.csiro.au>
* m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
(MACHINE_STATE_m68010_up): Replaced __mc68332__ with __mcpu32__.
* m68k/m68k-none.h(CPP_FPU_SPEC): Update relative to TARGET_SWITCHES.
(CPP_SPEC, ASM_SPEC, CC1_SPEC): Likewise.
(CPP_SPEC): -m68332 defines both __mc68332 and __mcpu32__.
* m68k/t-m68kbare (MULTILIB_OPTIONS): Add mcpu32.
(MULTILIB_MATCHES): -m68332 now uses mcpu32 libraries, not m68000.
(MULTILIB_EXCEPTIONS): Don't build 68881 libraries for m68000,
mcpu32 or m5200.
* longlong.h: Replace __mc68332__ with __mcpu32__.
Thu Feb 19 01:32:37 1998 Jeffrey A Law (law@cygnus.com)
Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (gen_lowpart_common): Suppress last change if __complex__.
* emit-rtl.c (hard-reg-set.h): Include.
(get_lowpart_common): Don't make new REG for hard reg in a
class that cannot change size.
* Makefile.in (emit-rtl.o): Depend on hard-reg-set.h.
* combine.c: Revert previous patch.
Tue Feb 17 23:34:29 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.h (MY_ISCOFF): Add numeric value of U803XTOCMAGIC.
* x-aix31 (INSTALL): Delete.
Tue Feb 17 22:56:14 1998 Richard Henderson <rth@cygnus.com>
* combine.c (simplify_rtx): Obey CLASS_CANNOT_CHANGE_SIZE when
simplifying a subreg of a hard reg.
(expand_compound_operation): Likewise.
(force_to_mode): Likewise.
Sun Feb 15 21:07:48 1998 Jeffrey A Law (law@cygnus.com)
* arm/netbsd.h (DWARF2_UNWIND_INFO): Define as zero for now.
* i386/netbsd.h, m68k/netbsd.h, ns32k/netbsd.h: Likewise.
* sparc/netbsd.h, vax/netbsd.h: Likewise.
Sun Feb 15 20:55:23 1998 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
* i386.c (notice_update_cc): Use reg_overlap_mentioned_p.
Sat Feb 14 15:54:28 1998 H.J. Lu (hjl@gnu.org)
* config/alpha/elf.h (LIB_SPEC): New. Defined if
USE_GNULIBC_1 is not defined.
* config/linux.h (LIB_SPEC): Add -lc for -shared if
USE_GNULIBC_1 is not defined.
* config/sparc/linux.h: Ditto.
* config/sparc/linux64.h (LIB_SPEC): Add -lc for -shared.
* config/sparc/linux64.h (LIBGCC_SPEC): Removed.
(CPP_SUBTARGET_SPEC): Add %{pthread:-D_REENTRANT}.
(LIB_SPEC): Updated for glibc 2.
Sat Nov 29 12:45:51 1997 Mumit Khan <khan@xraylith.wisc.edu>
* config/i386/cygwin32.h (DWARF2_UNWIND): Exception handling
doesn't work with it yet, so set it to 0.
* config/i386/x-cygwin32 (USE_COLLECT2): Delete.
* config/i386/xm-cygwin32.h (NO_SYS_SIGLIST): Define.
Fri Feb 13 01:29:29 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
* rs6000/sysv4.h (ENDFILE_SPEC): add missing %(endfile_linux)
for -mcall-linux
Fri Feb 13 00:47:21 1998 Jeffrey A Law (law@cygnus.com)
* cccp.c (new_include_prefix): Correctly handle -I./.
Sun Dec 28 00:32:16 1997 Jeffrey A Law (law@cygnus.com)
* flow.c (find_basic_blocks): Don't create a new basic block
for calls in a LIBCALL block.
Fri Dec 12 01:19:48 1997 Jason Merrill <jason@yorick.cygnus.com>
* flow.c (flow_analysis): Be consistent with find_basic_blocks in
determining when a new basic block starts.
Thu Dec 11 22:02:10 1997 Jason Merrill <jason@yorick.cygnus.com>
* flow.c (find_basic_blocks): A CALL_INSN that can throw starts
a new basic block.
(find_basic_blocks_1): Likewise.
Thu Dec 4 11:51:00 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.c (get_dynamic_handler_chain): Only make the call once per
function.
Wed Dec 3 12:01:56 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.c (expand_fixup_region_end): New fn.
(expand_fixup_region_start): Likewise.
(expand_eh_region_start_tree): Store cleanup into finalization here.
* stmt.c (expand_cleanups): Use them to protect fixups.
Mon Nov 24 22:41:55 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.c (get_dynamic_handler_chain): Build up a FUNCTION_DECL.
* optabs.c (init_optabs): Lose get_dynamic_handler_chain_libfunc.
* expr.h: Likewise.
Wed Feb 11 01:39:47 1998 Richard Henderson <rth@cygnus.com>
* stor-layout.c (layout_type): Do upper - lower in the native type,
so as to properly handle negative indices.
Tue Feb 10 00:26:25 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* rs6000.c (setup_incoming_varargs): Always set rs6000_sysv_varargs_p.
Mon Feb 9 23:15:14 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
* rs6000/linux.h (CPP_PREDEFINES): Add -D__ELF__.
Mon Feb 9 23:08:56 1998 Richard Henderson <rth@cygnus.com>
* i386.md (push): Prohibit symbolic constants if flag_pic.
(movsi+1): Likewise for move to non-register.
Mon Feb 9 23:07:04 1998 John Wehle (john@feith.com)
* i386.md: Remove redundant integer push patterns.
Don't bother checking for TARGET_PUSH_MEMORY when
pushing constants or registers.
1998-01-28 Mike Stump <mrs@wrs.com>
* rtlanal.c (dead_or_set_regno_p): Ignore REG_DEAD notes after
reload completes.
* genattrtab.c (reload_completed, optimize): Define.
Mon Feb 9 22:16:04 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* c-decl.c (grokdeclarator): Get parameter tags from
last_function_parm_tags.
* dwarfout.c (output_formal_types): Set TREE_ASM_WRITTEN before
traversing the parameter types.
(output_type): No early exit for FUNCTION_TYPE / METHOD_TYPE context.
Mon Feb 9 22:10:58 1998 Todd Vierling <tv@pobox.com>
* fixincludes: Tweak fix for struct exception in math.h
Mon Feb 9 01:15:08 1998 Mark Mitchell <mmitchell@usa.net>
* integrate.c (get_label_from_map): New function.
(expand_inline_function): Use it. Initialize the label_map to
NULL_RTX instead of gen_label_rtx.
(copy_rtx_and_substitute): Use get_label_from_map.
* integrate.h (get_label_from_map): New function.
(set_label_from_map): New macro.
* unroll.c (unroll_loop): Use them.
(copy_loop_body): Ditto.
* toplev.c (rest_of_compilation): Don't call save_for_inline_copy
if all we're doing is dealing with -Wreturn-type.
Mon Feb 9 01:07:41 1998 Jeffrey A Law (law@cygnus.com)
* i386/x-sco5 (CC): Remove trailing whitespace.
Mon Feb 9 01:07:37 1998 J. Kean Johnston <jkj@sco.com>
* i386/sco5.h (STARTFILE_SPEC, ENDFILE_SPEC): Correctly handle
"-static".
Mon Feb 9 00:02:53 1998 Jim Wilson <wilson@cygnus.com>
* function.c (assign_parms): New variable named_arg, with value
depending on STRICT_ARGUMENT_NAMING. Use instead of ! last_named.
Mon Feb 9 00:01:00 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stmt.c (pushcase_range): Clean up handling of "infinite" values.
* loop.c (strength_reduce): When placing increment for auto-inc
case, do comparison in loop order.
Fri Jan 2 23:40:09 1998 Jim Wilson (wilson@cygnus.com)
Jeffrey A Law (law@cygnus.com)
* crtstuff.c (__frame_dummy): New function for irix6.
(__do_global_ctors): Call __frame_dummy for irix6.
* iris6.h (LINK_SPEC): Hide __frame_dummy too.
Wed Dec 24 23:03:42 1997 Jim Wilson (wilson@cygnus.com)
* mips.c (mips_expand_epilogue): Emit blockage insn before call to
save_restore_insns if no FP and GP will be restored.
* abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT,
and define __LONG_MAX__ appropriately. Add support for -mabi=X,
-mlong64, and -mgp{32,64} options.
* mips.c (mips_abi): Change type to int.
* mips.h (enum mips_abi_type): Delete.
(ABI_32, ABI_N32, ABI_64, ABI_EABI): Define as constants.
(mips_abi): Change type to int.
Mon Dec 22 09:55:01 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for beta release of egcs-1.0.1.
* haifa-sched.c (create_reg_dead_note): Detect and handle another
case where we kill more regs after sched than were killed before
sched.
* sched.c (create_reg_dead_note): Similarly.
Sun Dec 21 21:47:38 1997 Jeffrey A Law (law@cygnus.com)
* pa.c (emit_move_sequence): Handle a function label source
operand.
Sat Dec 20 16:14:50 1997 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.h (FUNCTION_ARG_PADDING): Define.
* rs6000.c (function_arg_padding): New function.
Sat Dec 20 13:36:06 1997 Paul Eggert <eggert@twinsun.com>
Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
H.J. Lu (hjl@gnu.org)
* frame.h (__register_frame, __register_frame_table,
__deregister_frame): New.
* frame.c (__register_frame, __register_frame_table,
__deregister_frame): New.
* frame.c (__deregister_frame_info): Return void *.
* frame.h (__deregister_frame_info): Ditto.
* collect2.c (__deregister_frame_info): Ditto.
* frame.h (__register_frame_info_table): Fix typo in declaration.
* frame.c (__register_frame_info): Renamed from __register_frame.
(__register_frame_info_table, __deregister_frame_info): Similarly.
* frame.h (__{,de}register_frame_info): Likewise.
(__register_frame_info_table): New declaration.
* crtstuff.c (__do_global_dtors{,_aux}): Rename __deregister_frame.
(frame_dummy, __do_global_ctors): Likewise for __register_frame.
* collect2.c (write_c_file_{stat,glob}): Rename __register_frame
to __register_frame_info and similarly for __deregister_frame and
__register_frame_table.
* collect2.c (write_c_file_glob):
Allocate initial frame object in static storage and pass its address.
* crtstuff.c (__do_global_ctors): Fix typo in last change.
* crtstuff.c (__do_global_ctors): Add missing arg to __register_frame.
* collect2.c (write_c_file_stat): Fix error in last change;
use __SIZE_TYPE__, not size_t.
Alter C startup code so that it doesn't invoke malloc on Solaris.
* frame.h (struct object): Decl moved here from frame.c.
* frame.c (struct object): Move decl to frame.h.
("frame.h"): Include after <stddef.h>, so that size_t is defined.
(__register_frame, __register_frame_table, __deregister_frame):
It's now the caller's responsibility to allocate storage for object.
* crtstuff.c (frame_dummy), collect2.c (write_c_file_stat):
Allocate initial frame object in static storage and pass its address.
* crtstuff.c (<stddef.h>, "frame.h"): Include.
* Makefile.in ($(T)crtbegin.o, $(T)crtend.o, stamp-crtS):
Depend on defaults.h and frame.h.
Fri Dec 19 10:02:57 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* i386.h (INITIAL_ELIMINATION_OFFSET): Correctly test for PIC
register used.
Fri Dec 19 09:50:30 1997 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
* combine.c (simplify_rtx, case ABS): Don't get confused by a
VOIDmode operand.
* i386.c (notice_update_cc): Remove bogus pentium GCC code.
Fri Dec 19 09:39:48 1997 Jeffrey A Law (law@cygnus.com)
* i386/t-sol2 (CRTSTUFF_T_CFLAGS): Turn on the optimizer.
* stmt.c (warn_if_unused_value): Don't warn for TRY_CATCH_EXPR.
* stmt.c (expand_asm_operands): If an ASM has no outputs, then treat
it as volatile.
Wed Dec 3 01:13:45 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Update for egcs-1.0 release.
Mon Dec 1 15:36:13 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
Tue Nov 25 14:08:12 1997 Jim Wilson <wilson@cygnus.com>
* mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2,
fix_truncsfdi2): Change *.
Sun Nov 30 19:59:20 1997 Jason Merrill <jason@yorick.cygnus.com>
* stmt.c (expand_decl_cleanup): Update thisblock after eh_region_start.
Sat Nov 29 12:44:57 1997 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (function_arg_partial_nregs): Undo Nov. 26 patch.
* rs6000/aix41.h (ASM_CPU_SPEC): Define.
Fri Nov 28 10:00:27 1997 Jeffrey A Law (law@cygnus.com)
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Prefer stabs again.
* arm.md (movsfcc, movdfcc): Fix "patch" lossage.
* configure.in: Fix NCR entries.
Thu Nov 27 12:20:19 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
* flow.c (find_basic_blocks): Handle cfg issues for rethrows and
nested exceptions correctly.
* unroll.c (find_splittable_givs): Don't split givs with a dest_reg
that was created by loop.
Thu Nov 27 09:34:58 1997 Jason Merrill <jason@yorick.cygnus.com>
* expr.c (preexpand_calls): Don't look past a TRY_CATCH_EXPR.
* except.c (expand_start_all_catch): One more do_pending_stack_adjust.
Thu Nov 27 09:32:39 1997 Richard Earnshaw (rearnsha@arm.com)
* arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3]
valid.
Wed Nov 26 13:04:46 1997 Michael Meissner <meissner@cygnus.com>
* rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
(print_operand): Use SMALL_DATA_REG for the register involved in
small data relocations.
(print_operand_address): Ditto.
* rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if
-dynamic linker is not used.
* rs6000.md (call insns): For local calls, use @local suffix under
System V. Don't use @plt under Solaris.
* rs6000.c (output_function_profiler): Put label address in r0, and
store LR in 4(sp) for System V/eabi.
* rs6000.h (ASM_OUTPUT_REG_{PUSH,POP}): Keep stack aligned to 16
byte boundary, and maintain stack backchain.
(patches originally from Geoffrey Keating)
* rs6000.c (function_arg): Excess floating point arguments don't
go into GPR registers after exhausting FP registers under the
System V.4 ABI.
(function_arg_partial_nregs): Ditto.
* rs6000.md (call insns): If -fPIC or -mrelocatable, add @plt
suffix to calls.
Wed Nov 26 13:04:46 1997 Jason Merrill <jason@yorick.cygnus.com>
* toplev.c (main): Complain about -gdwarfn.
Tue Nov 25 22:43:30 1997 Jason Merrill <jason@yorick.cygnus.com>
* dwarf2out.c (outout_call_frame_info): Ensure that the info has
proper alignment.
* libgcc2.c (__throw): Initialize HANDLER.
* dwarfout.c (output_type): If finalizing, write out nested types
of types we've already written.
Tue Nov 25 10:00:42 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Undefine before including
svr4.h.
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Don't redefine.
* sh/elf.h (HANDLE_SYSV_PRAGMA): Undefine.
* sh/elf.h: (LINK_SPEC): Use shlelf.
(USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX, ASM_FILE_START): Redefine.
* sh.h: dwarf patches from Fred Fish.
* va-sh.h (__va_arg_sh1): Define.
(va_arg): Use it.
SH3E doesn't use any integer registers for subsequent arguments
once a non-float value was passed in the stack.
* sh.h (PASS_IN_REG_P): Fix SH3E case.
Tue Nov 25 10:00:42 1997 Richard Henderson (rth@cygnus.com)
* alpha.h (CONST_OK_FOR_LETTER): Fix 'L' handling.
Tue Nov 25 10:00:42 1997 Jeffrey A Law (law@cygnus.com)
* configure.in (alphaev56*-*-*): Disable MASK_BYTE_OPS until
ev56 support works correctly.
* crtstuff.c (do_global_dtors_aux): Handle multiple calls better.
Sun Nov 23 13:01:48 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
Sat Nov 22 18:58:20 1997 Jeffrey A Law (law@cygnus.com)
* pa-hpux10.h (NEW_HP_ASSEMBLER): Define.
* pa.h (LEGITIMATE_CONSTANT_P): Reject LABEL_REFs if not using
gas and not using the new HP assembler.
Fri Nov 21 15:20:05 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (program_transform_cross_name): Clean up "-e" confusion.
(GCC_INSTALL_NAME, GCC_CROSS_NAME): Likewise.
* i386.h (TARGET_CMOV): Disable conditional moves for this release.
Fri Nov 21 12:18:51 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.h: Add outer_context_label_stack.
* except.c: Likewise.
(expand_start_all_catch): Push the outer_context for the try block
onto outer_context_label_stack.
(expand_end_all_catch): Use it and pop it.
Fri Nov 21 10:13:11 1997 Robert Lipe (robertl@dgii.com)
* i386/sco5.h (HAVE_ATEXIT): Revert last change.
Thu Nov 20 16:11:50 1997 Richard Henderson <rth@cygnus.com>
* alpha.c (alpha_emit_set_const_1): Handle narrow hosts better.
Thu Nov 20 16:11:50 1997 Klaus Kaempf <kkaempf@progis.de>
* alpha/vms.h (ASM_OUTPUT_ADDR_VEC_ELT): Add an L for the local label
to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.
Thu Nov 20 14:42:15 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.c (output_exception_table): Don't bother with
__EXCEPTION_END__.
Thu Nov 20 16:11:50 1997 Jeffrey A Law (law@cygnus.com)
* pa.md (pre_stwm, post_stwm, pre_ldwm, post_ldwm): Base register
is an in/out operand.
(zero extended variants of stwm/stwm patterns): Similarly.
* mips/x-iris (FIXPROTO_DEFINES): Add -D_SGI_SOURCE.
Thu Nov 20 13:19:32 1997 Jason Merrill <jason@yorick.cygnus.com>
* dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
Use assemble_name.
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Use assemble_name.
(output_call_frame_info): Emit a \n after using it.
Thu Nov 20 00:38:46 1997 Dave Love <d.love@dl.ac.uk>
* configure.in: Add AC_ARG_ENABLE for Haifa as documentation.
Wed Nov 19 12:03:04 1997 Philippe De Muyter <phdm@macqel.be>
* dwarf2out.c (CIE_LENGTH_LABEL, FDE_LENGTH_LABEL): New macros.
(ASM_OUTPUT_DWARF_VALUE4): New macro.
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Define if SET_ASM_OP is
defined.
(output_call_frame_info): Do not output forward label differences
if ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL is defined.
* m68k/mot3300.h (SET_ASM_OP): Define when not using gas.
Tue Nov 18 22:50:24 1997 Jim Wilson <wilson@cygnus.com>
* mips/mips.c (save_restore_insns): If gp_offset or fp_offset are
large_int, emit two insns instead of one splitable insn.
* dwarf2out.c (dwarf2out_frame_debug): When set cfa_store_offset
from cfa_temp_value, use cfa_offset. Abort if cfa_reg is not SP.
Fri Nov 7 15:33:11 1997 Robert Lipe (robertl@dgii.com)
* i386/sco5.h (HAVE_ATEXIT): Delete definition.
Sun Nov 16 23:52:48 1997 Jeffrey A Law (law@cygnus.com)
* cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl
return.
(cse_end_of_basic_block): Similarly.
Sun Nov 16 23:01:40 1997 J. Kean Johnston <jkj@sco.com>
* i386/sco5.h (ASM_OUTPUT_ALIGNED_BSS): Define.
(SELECT_RTX_SECTION): Define.
(LIBGCC_SPEC, LIB_SPEC): Do the right thing for PIC.
Sun Nov 16 22:47:03 1997 Manfred Hollstein <manfred@s-direktnet.de>
* Makefile.in (compare, compare-lean): Define $stage for each
shell command.
(gnucompare, gnucompare-lean): Likewise.
Sun Nov 16 22:02:16 1997 Richard Henderson (rth@cygnus.com)
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE): Fix offsets.
* alpha.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add an L for the local label
to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.
Fri Nov 14 08:01:25 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
1997-11-14 Paul Eggert <eggert@twinsun.com>
Fix some confusion with IEEE minus zero.
* real.h (REAL_VALUES_IDENTICAL): New macro.
* expr.c (is_zeros_p): Don't consider -0.0 to be all zeros.
* fold-const.c (operand_equal_p): Don't consider -0.0 to be
identical to 0.0.
* tree.c (simple_cst_equal): Don't consider -0.0 to have the
same tree structure as 0.0.
* varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL
macro instead of doing it by hand.
Fri Nov 14 07:24:20 1997 Richard Henderson <rth@cygnus.com>
* expr.c (expand_builtin_setjmp): Set
current_function_has_nonlocal_label.
* stupid.c (stupid_life_analysis): If has_nonlocal_label, kill
call-saved registers across calls.
* alpha.md (exception_receiver): Remove.
(nonlocal_goto_receiver_osf): New
(nonlocal_goto_receiver_vms): Renamed from nonlocal_goto_receiver.
(nonlocal_goto_receiver): New, select _osf or _vms.
* alpha.c (output_prolog [*]): Prefix entry labels with '$' to
keep them from being propogated to the object file.
(alpha_write_linkage): Likewise.
* alpha.md (call_vms): Likewise.
(call_value_vms): Likewise.
(unnamed osf call insns): Likewise.
* alpha.h (ASM_OUTPUT_INTERNAL_LABEL): Don't omit L from local label.
(ASM_GENERATE_INTERNAL_LABEL): Likewise.
* alpha.c (call_operand): Any reg is valid for WinNT.
* alpha.md (call_nt, call_value_nt): Don't force address into $27.
(anon nt calls): Add 'R' alternative.
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
INITIALIZE_TRAMPOLINE): Handle lack of original $27 and 32-bit ptrs.
Thu Nov 13 12:53:44 1997 Jim Wilson <wilson@cygnus.com>
* mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete code swapping xplus0 and
xplus1 when xplus0 is not a register.
Thu Nov 13 11:51:32 1997 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.md (lshrdi3_power): Delete '&' from first alternative and
swap instruction order.
Thu Nov 13 11:47:55 1997 Michael Meissner <meissner@cygnus.com>
* rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to
pick apart floating point values, instead of using CONST_DOUBLE_LOW
and CONST_DOUBLE_HIGH.
* rs6000.md (define_splits for DF constants): Use the appropriate
REAL_VALUE_* interface to pick apart DF floating point constants in
a machine independent fashion.
Thu Nov 13 11:41:42 1997 Jeffrey A Law (law@cygnus.com)
* flow.c (find_basic_blocks): During marking phase, if we encounter
an insn with a REG_LABEL note, make the target block live and
create an edge from the insn to the target block. Do not make
edges from all blocks to the target block.
* m68k/x-next (OTHER_FIXINCLUDES_DIRS): Include /NextDeveloper/Headers.
* configure.in: Tweak NCR entries.
* configure: Rebuilt.
Wed Nov 12 09:37:01 1997 Jeffrey A Law (law@cygnus.com)
* except.c: Do not include "assert.h".
(save_eh_status): Turn asserts into conditional aborts.
(restore_eh_status, scan_region): Likewise.
* dwarfout.c: Do not include "assert.h".
(bit_offset_attribute): Turn asserts into conditional aborts.
(bit_size_attribute, output_inlined_enumeration_type_die): Likewise.
(output_inlined_structure_type_die): Likewise.
(output_inlined_union_type_die): Likewise
(output_tagged_type_instantiation): Likewise.
(dwarfout_file_scope_decl): Likewise.
* dwarf2out.c: Do not include "assert.h"
(expand_builtin_dwarf_reg_size): Turn asserts into conditional aborts.
(reg_save, initial_return_save, dwarf2out_frame_debug): Likewise.
(add_child_die, modified_type_die, add_bit_offset_attribute): Likewise.
(add_bit_size_attribute, scope_die_for): Likewise.
(output_pending_types_for_scope): Likewise.
(get_inlined_enumeration_type_die): Likewise.
(get_inlined_structure_type_die): Likewise.
(get_inlined_union_type_die, gen_subprogram_die): Likewise.
(gen_tagged_type_instantiation_die): Likewise.
* flow.c (find_basic_blocks): Refine further to get a more correct
cfg, especially in the presense of exception handling, computed
gotos, and other non-trivial cases. Call abort if an inaccuracy
is detected in the cfg.
Mon Nov 10 03:02:19 1997 Jason Merrill <jason@yorick.cygnus.com>
* stmt.c (expand_decl_cleanup_no_eh): New fn.
* except.c (expand_leftover_cleanups): do_pending_stack_adjust.
Sun Oct 19 09:07:38 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stmt.c (using_eh_for_cleanups_p): New variable.
(using_eh_for_cleanups): New function.
(expand_decl_cleanup): Don't call expand_eh_region_start_tree
unless using EH for cleanups.
Mon Nov 10 00:05:56 1997 Jeffrey A Law (law@cygnus.com)
* alias.c (MAX_ALIAS_LOOP_PASSES): Define.
(init_alias_analysis): Break out of loops after MAX_ALIAS_LOOP_PASSES.
Sun Nov 9 02:07:16 1997 Jeffrey A Law (law@cygnus.com)
* fixinc.svr4 (__STDC__): Add another case.
Sun Nov 9 02:00:29 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
* a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying
addresses in the epilogue delay slot.
Sun Nov 9 01:40:40 1997 Manfred Hollstein (manfred@s-direktnet.de)
* m88k/dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace
in generated `specs' file.
Fri Nov 7 16:23:20 1997 Jim Wilson (wilson@cygnus.com)
* flags.h (flag_rerun_loop_opt): Declare.
* loop.c (invariant_p, case LABEL_REF): Check flag_rerun_loop_opt.
* toplev.c (flag_rerum_loop_opt): Delete static.
Fri Nov 7 10:22:24 1997 Jason Merrill <jason@yorick.cygnus.com>
* frame.c (add_fdes, count_fdes): Go back to checking pc_begin for
linked once FDEs.
Wed Nov 5 01:42:12 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.
* alias.c (find_base_value): Only return the known base value for
pseudo registers.
Tue Nov 4 16:07:15 1997 Jeffrey A Law (law@cygnus.com)
* fixincludes: Fix "hypot" prototype in NeXT math.h.
* Makefile.in (USE_ALLOCA): Always include alloca.o.
(USE_HOST_ALLOCA): Likewise.
* alias.c (find_base_value): When copying arguments, return the
tenative value for a hard register.
Tue Nov 4 14:12:30 1997 Richard Henderson (rth@cygnus.com)
Jim Wilson (wilson@cygnus.com)
* alpha.c (summarize_insn): Handle ASM_OPERANDS. Don't recurse
for SUBREG, just fall through.
* alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero.
* alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake.
* combine.c (try_combine): When setting elim_i1, check if newi2pat
sets i1dest.
* combine.c (try_combine): When setting elim_i2, check whether newi2pat
sets i2dest. When calling distribute_notes for i3dest_killed, pass
elim_i2 and elim_i1.
Mon Nov 3 14:36:50 1997 Jeffrey A Law (law@cygnus.com)
* configure.in (sco5): Use cpio to install header files.
Sun Nov 2 23:30:31 1997 Manfred Hollstein <manfred@s-direktnet.de>
* aclocal.m4 (conftestdata_from, conftestdata_to): Names shortened to
14 char length.
* configure: Rebuild.
Sun Nov 2 22:53:16 1997 Richard Earnshaw (rearnsha@arm.com)
* arm.c (load_multiple_sequence): Support SUBREG of MEM.
(store_multiple_sequence): Likewise.
Sun Nov 2 19:44:00 1997 Robert Lipe (robertl@dgii.com)
* i386/sco5.h: enable -gstabs once again.
Sun Nov 2 19:27:21 1997 Jeffrey A Law (law@cygnus.com)
* arm.c (output_move_double): Allocate 3 entries in otherops array.
Sat Nov 1 21:43:00 1997 Mike Stump (mrs@wrs.com)
* except.c (expand_ex_region_start_for_decl): Emit EH_REGION_BEG

View File

@@ -3,6 +3,9 @@ This file documents the installation of the GNU compiler. Copyright
may copy, distribute, and modify it freely as long as you preserve this
copyright notice and permission notice.
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
Installing GNU CC
*****************

View File

@@ -17,6 +17,10 @@ Collected papers/sites on standards, compilers, optimization, etc.
http://www.goof.com/pcg/docs.html
- AMD site with optimization guide for x86
http://www.amd.com/K6/k6docs/pdf/21828a.pdf
- Links related to many compiler topics
http://www.nullstone.com/htmls/connections.htm
@@ -39,3 +43,16 @@ Collected papers/sites on standards, compilers, optimization, etc.
http://www.sgi.com/MIPS/arch/ISA5/MIPSVspec.pdf
- IBM Journal of Research and Development
http://www.almaden.ibm.com/journal/
- System V PowerPC ABI
http://www.esofta.com/softspecs.html
- C9X draft
http://www.dkuug.dk/JTC1/SC22/WG14/www/docs/n794.htm

View File

@@ -156,7 +156,7 @@ ENQUIRE_LDFLAGS = $(LDFLAGS)
# Sed command to transform gcc to installed name. Overwritten by configure.
program_transform_name = @program_transform_name@
program_transform_cross_name = -e s,^,$(target_alias)-,
program_transform_cross_name = s,^,$(target_alias)-,
# Tools to use when building a cross-compiler.
# These are used because `configure' appends `cross-make'
@@ -394,10 +394,10 @@ HOST_MALLOC=$(MALLOC)
HOST_OBSTACK=$(OBSTACK)
# Actual name to use when installing a native compiler.
GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed $$t`
GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed -e $$t`
# Actual name to use when installing a cross-compiler.
GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed $$t`
GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed -e $$t`
# Choose the real default target.
ALL=all.internal
@@ -468,8 +468,8 @@ ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS) \
ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)
# Even if ALLOCA is set, don't use it if compiling with GCC.
USE_ALLOCA= ` case "${CC}" in "${OLDCC}") echo "${ALLOCA}" ;; esac `
USE_HOST_ALLOCA= ` case "${HOST_CC}"@"${HOST_ALLOCA}" in "${OLDCC}"@?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac `
USE_ALLOCA= ${ALLOCA}
USE_HOST_ALLOCA= ` case "${HOST_ALLOCA}" in ?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac `
USE_HOST_MALLOC= ` case "${HOST_MALLOC}" in ?*) echo ${HOST_PREFIX}${HOST_MALLOC} ;; esac `
USE_HOST_OBSTACK= ` case "${HOST_OBSTACK}" in ?*) echo ${HOST_PREFIX}${HOST_OBSTACK} ;; esac `
@@ -1304,7 +1304,8 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf2.h flags.h \
xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoffout.h flags.h
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
function.h regs.h insn-config.h insn-codes.h real.h expr.h bytecode.h \
bc-opcode.h bc-typecd.h bc-typecd.def bc-optab.h bc-emit.h bc-opname.h
bc-opcode.h bc-typecd.h bc-typecd.def bc-optab.h bc-emit.h bc-opname.h \
hard-reg-set.h
real.o : real.c $(CONFIG_H) $(TREE_H)
getpwd.o : getpwd.c $(CONFIG_H)
@@ -1738,7 +1739,7 @@ cccp.o: cccp.c $(CONFIG_H) pcp.h version.c config.status
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
-c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
@@ -1755,7 +1756,7 @@ cpplib.o: cpplib.c $(CONFIG_H) cpplib.h cpphash.h config.status
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
-c `echo $(srcdir)/cpplib.c | sed 's,^\./,,'`
@@ -1790,7 +1791,7 @@ stamp-proto: protoize.c getopt.h $(CONFIG_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
-DSTD_PROTO_DIR=\"$(libsubdir)\" \
@@ -1799,7 +1800,7 @@ stamp-proto: protoize.c getopt.h $(CONFIG_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
-DSTD_PROTO_DIR=\"$(libsubdir)\" \
@@ -2624,6 +2625,7 @@ compare compare3 compare4 compare-lean compare3-lean compare4-lean: force
fi; \
done
-rm -f tmp-foo*
case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
if [ -f .bad_compare ]; then \
echo "Bootstrap comparison failure!"; \
cat .bad_compare; \
@@ -2652,6 +2654,7 @@ gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-
done; \
fi; \
done
case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
if [ -f .bad_compare ]; then \
echo "Bootstrap comparison failure!"; \
cat .bad_compare; \

View File

@@ -1,4 +1,4 @@
Noteworthy changes in GCC version 2.8.0:
Noteworthy changes in GCC for EGCS.
The -specs=file switch allows you to override default specs used in invoking
programs like cc1, as, etc.

4003
gcc/ORDERS

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
This directory contains the version 2.7.2 release of the GNU C
This directory contains the egcs version 1.0.3 release of the GNU C
compiler. It includes all of the support for compiling C++ and
Objective C, including a run-time library for Objective C.

View File

@@ -1,3 +1,80 @@
AIX 4.3 assembler
The AIX 4.3.0.0 assembler generates incorrect object files if the ".bs"
pseudo-op references symbols in certain sections. If GCC is invoked with
the -g debugging option (including during bootstrapping), incorrect object
files will be produced and the AIX linker will fail with a severe error.
A fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
ASSEMBLE/BIND) is available from IBM Customer Support and IBM's
service.boulder.ibm.com website.
AIX 4.1 binder
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
the link step now may produce warnings of duplicate symbols which were not
reported before. The assembly files generated by GCC for AIX always have
included multiple symbol definitions for certain global variable and
function declarations in the original program. The warnings should not
prevent the linker from producing a correct library or runnable executable.
AIX NLS problems
AIX on the RS/6000 provides support (NLS) for environments outside of
the United States. Compilers and assemblers use NLS to support
locale-specific representations of various objects including
floating-point numbers ("." vs "," for separating decimal fractions).
There have been problems reported where the library linked with GCC does
not produce the same floating-point formats that the assembler accepts.
If you have this problem, set the LANG environment variable to "C" or
"En_US".
AIX 3.2.5 XLC-1.3 problems
XLC version 1.3.0.0 distributed with AIX 3.2.5 will miscompile jump.c when
building the stage1 compiler during the bootstrap process. This will cause
GCC to crash and the bootstrap to fail later while compiling libgcc2.c. XLC
version 1.3.0.1 or later fixes this problem. XLC-1.3.0.19 also cannot
bootstrap GCC so please avoid that release as well. You can obtain
XLC-1.3.0.24 by requesting PTF 432238 from IBM, or just ask for the latest
release of XLC-1.3.
There also have been reports of problems bootstrapping GCC with some older
releases of xlc-1.2.1, including xlc-1.2.1.8. Newer releases of xlc-1.2.1
do not exhibit this problem: xlc-1.2.1.28 is known to bootstrap properly.
AIX 3.2 common-mode support
AIX common-mode providing transparent support of both the POWER and PowerPC
architectures is usable in AIX 3.2.3 and above but an export file and
support for hidden export via libc.a will not exist until AIX 4.1. libgcc.a
also must be compiled in common-mode. Note that executables generated for
the POWER (RIOS1 and RSC) architecture will run directly on systems using
the MPC601 chip. Common-mode only improves the performance of a single
executable run on both POWER and PowerPC architecture platforms by not using
POWER- or PowerPC-specific instructions and eliminating the need to trap to
emulation (for POWER instructions run on PowerPC).
To link a common-mode application prior to AIX 4.1 and run it on a system at
AIX level 3.2.3 or above, use the text between the "<>" as an export file
(e.g. milli.exp)
<><><><><><><><><><><>
#!
__mulh 0x3100
__mull 0x3180
__divss 0x3200
__divus 0x3280
__quoss 0x3300
__quous 0x3380
<><><><><><><><><><><>
and then link with -Wl,-bI:milli.exp.
AIX 3.1 and 3.2 assembler problems
Specifying the -g flag to GCC on the RS/6000 requires upgrading the
@@ -44,68 +121,3 @@ compiler. This is because the GNU C compiler wants to build a variant of its
library, libgcc.a with the -mcpu=common switch to support building programs
that can run on either the Power or PowerPC machines.
AIX NLS problems
AIX on the RS/6000 provides support (NLS) for environments outside of
the United States. Compilers and assemblers use NLS to support
locale-specific representations of various objects including
floating-point numbers ("." vs "," for separating decimal fractions).
There have been problems reported where the library linked with GCC does
not produce the same floating-point formats that the assembler accepts.
If you have this problem, set the LANG environment variable to "C" or
"En_US".
AIX 3.2.5 XLC-1.3 problems
XLC version 1.3.0.0 distributed with AIX 3.2.5 will miscompile jump.c when
building the stage1 compiler during the bootstrap process. This will cause
GCC to crash and the bootstrap to fail later while compiling libgcc2.c. XLC
version 1.3.0.1 or later fixes this problem. XLC-1.3.0.19 also cannot
bootstrap GCC so please avoid that release as well. You can obtain
XLC-1.3.0.24 by requesting PTF 432238 from IBM, or just ask for the latest
release of XLC-1.3.
There also have been reports of problems bootstrapping GCC with some older
releases of xlc-1.2.1, including xlc-1.2.1.8. Newer releases of xlc-1.2.1
do not exhibit this problem: xlc-1.2.1.28 is known to bootstrap properly.
AIX 3.2 common-mode support
AIX common-mode providing transparent support of both the POWER and PowerPC
architectures is usable in AIX 3.2.3 and above but an export file and
support for hidden export via libc.a will not exist until AIX 4.1. libgcc.a
also must be compiled in common-mode. Note that executables generated for
the POWER (RIOS1 and RSC) architecture will run directly on systems using
the MPC601 chip. Common-mode only improves the performance of a single
executable run on both POWER and PowerPC architecture platforms by not using
POWER- or PowerPC-specific instructions and eliminating the need to trap to
emulation (for POWER instructions run on PowerPC).
To link a common-mode application prior to AIX 4.1 and run it on a system at
AIX level 3.2.3 or above, use the text between the "<>" as an export file
(e.g. milli.exp)
<><><><><><><><><><><>
#!
__mulh 0x3100
__mull 0x3180
__divss 0x3200
__divus 0x3280
__quoss 0x3300
__quous 0x3380
<><><><><><><><><><><>
and then link with -Wl,-bI:milli.exp.
AIX 4.1 binder
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
the link step now may produce warnings of duplicate symbols which were not
reported before. The assembly files generated by GCC for AIX always have
included multiple symbol definitions for certain global variable and
function declarations in the original program. The warnings should not
prevent the linker from producing a correct library or runnable executable.

View File

@@ -14,6 +14,10 @@ which is the top-level directory containing the gcc back end, the
gcc C front end, and other non-Fortran files, and gcc/f/, which
contains all of the Fortran files.
* Note, if this is an egcs release, all the installation information
which follows is not needed. It is provided for historical reference
only.
* To build GNU Fortran, you must have a source distribution of gcc
version 2.7.2.2. Do not attempt to use any other version
of gcc, because this version of g77 is designed to work only with
@@ -163,4 +167,4 @@ the compiler is in the second pass, otherwise it is in the first.
(This information might help you reduce a test case and/or work around
a bug in g77 until a fix is available.)
Any questions or comments on these topics, email fortran@gnu.ai.mit.edu.
Any questions or comments on these topics, email egcs@cygnus.com

20
gcc/aclocal.m4 vendored
View File

@@ -30,20 +30,20 @@ dnl See if symbolic links work and if not, try to substitute either hard links o
AC_DEFUN(GCC_PROG_LN_S,
[AC_MSG_CHECKING(whether ln -s works)
AC_CACHE_VAL(gcc_cv_prog_LN_S,
[rm -f conftestdata_to
echo >conftestdata_from
if ln -s conftestdata_from conftestdata_to 2>/dev/null
[rm -f conftestdata_t
echo >conftestdata_f
if ln -s conftestdata_f conftestdata_t 2>/dev/null
then
gcc_cv_prog_LN_S="ln -s"
else
if ln conftestdata_from conftestdata_to 2>/dev/null
if ln conftestdata_f conftestdata_t 2>/dev/null
then
gcc_cv_prog_LN_S=ln
else
gcc_cv_prog_LN_S=cp
fi
fi
rm -f conftestdata_from conftestdata_to
rm -f conftestdata_f conftestdata_t
])dnl
LN_S="$gcc_cv_prog_LN_S"
if test "$gcc_cv_prog_LN_S" = "ln -s"; then
@@ -62,20 +62,20 @@ dnl See if hard links work and if not, try to substitute either symbolic links o
AC_DEFUN(GCC_PROG_LN,
[AC_MSG_CHECKING(whether ln works)
AC_CACHE_VAL(gcc_cv_prog_LN,
[rm -f conftestdata_to
echo >conftestdata_from
if ln conftestdata_from conftestdata_to 2>/dev/null
[rm -f conftestdata_t
echo >conftestdata_f
if ln conftestdata_f conftestdata_t 2>/dev/null
then
gcc_cv_prog_LN="ln"
else
if ln -s conftestdata_from conftestdata_to 2>/dev/null
if ln -s conftestdata_f conftestdata_t 2>/dev/null
then
gcc_cv_prog_LN="ln -s"
else
gcc_cv_prog_LN=cp
fi
fi
rm -f conftestdata_from conftestdata_to
rm -f conftestdata_f conftestdata_t
])dnl
LN="$gcc_cv_prog_LN"
if test "$gcc_cv_prog_LN" = "ln"; then

View File

@@ -36,6 +36,12 @@ static int memrefs_conflict_p PROTO((int, rtx, int, rtx,
#define SIZE_FOR_MODE(X) (GET_MODE_SIZE (GET_MODE (X)))
/* Cap the number of passes we make over the insns propagating alias
information through set chains.
10 is a completely arbitrary choice. */
#define MAX_ALIAS_LOOP_PASSES 10
/* reg_base_value[N] gives an address to which register N is related.
If all sets after the first add or subtract to the current value
or otherwise modify it so it does not point to a different top level
@@ -95,16 +101,23 @@ find_base_value (src)
return src;
case REG:
/* If this REG is related to a known base value, return it. */
if (reg_base_value[REGNO (src)])
return reg_base_value[REGNO (src)];
/* At the start of a function argument registers have known base
values which may be lost later. Returning an ADDRESS
expression here allows optimization based on argument values
even when the argument registers are used for other purposes. */
if (REGNO (src) < FIRST_PSEUDO_REGISTER && copying_arguments)
return new_reg_base_value[REGNO (src)];
/* If a pseudo has a known base value, return it. Do not do this
for hard regs since it can result in a circular dependency
chain for registers which have values at function entry.
The test above is not sufficient because the scheduler may move
a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */
if (REGNO (src) >= FIRST_PSEUDO_REGISTER
&& reg_base_value[REGNO (src)])
return reg_base_value[REGNO (src)];
return src;
case MEM:
@@ -955,7 +968,7 @@ void
init_alias_analysis ()
{
int maxreg = max_reg_num ();
int changed;
int changed, pass;
register int i;
register rtx insn;
rtx note;
@@ -995,10 +1008,21 @@ init_alias_analysis ()
We could propagate more information in the first pass by making use
of REG_N_SETS to determine immediately that the alias information
for a pseudo is "constant". */
for a pseudo is "constant".
A program with an uninitialized variable can cause an infinite loop
here. Instead of doing a full dataflow analysis to detect such problems
we just cap the number of iterations for the loop.
The state of the arrays for the set chain in question does not matter
since the program has undefined behavior. */
changed = 1;
while (changed)
pass = 0;
while (changed && pass < MAX_ALIAS_LOOP_PASSES)
{
/* Keep track of the pass number so we can break out of the loop. */
pass++;
/* Assume nothing will change this iteration of the loop. */
changed = 0;
@@ -1123,10 +1147,15 @@ init_alias_analysis ()
In theory this loop can take as long as O(registers^2), but unless
there are very long dependency chains it will run in close to linear
time. */
time.
This loop may not be needed any longer now that the main loop does
a better job at propagating alias information. */
pass = 0;
do
{
changed = 0;
pass++;
for (i = 0; i < reg_base_value_size; i++)
{
rtx base = reg_base_value[i];
@@ -1141,7 +1170,7 @@ init_alias_analysis ()
}
}
}
while (changed);
while (changed && pass < MAX_ALIAS_LOOP_PASSES);
new_reg_base_value = 0;
reg_seen = 0;

View File

@@ -1,43 +0,0 @@
/* auto-config.h. Generated automatically by configure. */
/* config.in. Generated automatically from configure.in by autoheader. */
/* Whether malloc must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_MALLOC */
/* Whether realloc must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_REALLOC */
/* Whether calloc must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_CALLOC */
/* Whether free must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_FREE */
/* Define if `sys_siglist' is declared by <signal.h>. */
#define SYS_SIGLIST_DECLARED 1
/* Define if you have the strerror function. */
#define HAVE_STRERROR 1
/* Define if you have the <inttypes.h> header file. */
/* #undef HAVE_INTTYPES_H */
/* Define if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* Define if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

View File

@@ -4827,7 +4827,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
{
register tree link;
for (link = current_function_parm_tags;
for (link = last_function_parm_tags;
link;
link = TREE_CHAIN (link))
TYPE_CONTEXT (TREE_VALUE (link)) = type;

View File

@@ -9812,7 +9812,7 @@ new_include_prefix (prev_file_name, prefix, name)
len = simplify_filename (dir->fname);
/* Convert directory name to a prefix. */
if (dir->fname[len - 1] != '/') {
if (len && dir->fname[len - 1] != '/') {
if (len == 1 && dir->fname[len - 1] == '.')
len = 0;
else

File diff suppressed because it is too large Load Diff

View File

@@ -2141,10 +2141,14 @@ try_combine (i3, i2, i1)
rtx i3links, i2links, i1links = 0;
rtx midnotes = 0;
register int regno;
/* Compute which registers we expect to eliminate. */
rtx elim_i2 = (newi2pat || i2dest_in_i2src || i2dest_in_i1src
/* Compute which registers we expect to eliminate. newi2pat may be setting
either i3dest or i2dest, so we must check it. */
rtx elim_i2 = ((newi2pat && reg_set_p (i2dest, newi2pat))
|| i2dest_in_i2src || i2dest_in_i1src
? 0 : i2dest);
rtx elim_i1 = i1 == 0 || i1dest_in_i1src ? 0 : i1dest;
rtx elim_i1 = (i1 == 0 || i1dest_in_i1src
|| (newi2pat && reg_set_p (i1dest, newi2pat))
? 0 : i1dest);
/* Get the old REG_NOTES and LOG_LINKS from all our insns and
clear them. */
@@ -2305,7 +2309,7 @@ try_combine (i3, i2, i1)
distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i3dest_killed,
NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
NULL_RTX, NULL_RTX);
elim_i2, elim_i1);
}
/* For I2 and I1, we have to be careful. If NEWI2PAT exists and sets
@@ -4032,6 +4036,11 @@ simplify_rtx (x, op0_mode, last, in_dest)
if (GET_CODE (XEXP (x, 0)) == NEG)
SUBST (XEXP (x, 0), XEXP (XEXP (x, 0), 0));
/* If the mode of the operand is VOIDmode (i.e. if it is ASM_OPERANDS),
do nothing. */
if (GET_MODE (XEXP (x, 0)) == VOIDmode)
break;
/* If operand is something known to be positive, ignore the ABS. */
if (GET_CODE (XEXP (x, 0)) == FFS || GET_CODE (XEXP (x, 0)) == ABS
|| ((GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0)))

View File

@@ -987,13 +987,18 @@ extern char *a29k_function_name;
On the 29k, we must be able to place it in a delay slot, it must
not use sp if the frame pointer cannot be eliminated, and it cannot
use local regs if we need to push the register stack. */
use local regs if we need to push the register stack.
If this is a SET with a memory as source, it might load from
a stack slot, unless the address is constant. */
#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN,N) \
(get_attr_in_delay_slot (INSN) == IN_DELAY_SLOT_YES \
&& ! (frame_pointer_needed \
&& reg_mentioned_p (stack_pointer_rtx, PATTERN (INSN))) \
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))))
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))) \
&& (GET_CODE (PATTERN (INSN)) != SET \
|| GET_CODE (SET_SRC (PATTERN (INSN))) != MEM \
|| ! rtx_varies_p (XEXP (SET_SRC (PATTERN (INSN)), 0))))
/* Output assembler code for a block containing the constant parts
of a trampoline, leaving space for the variable parts.

View File

@@ -525,7 +525,8 @@ call_operand (op, mode)
return 0;
return (GET_CODE (op) == SYMBOL_REF
|| (GET_CODE (op) == REG && (TARGET_OPEN_VMS || REGNO (op) == 27)));
|| (GET_CODE (op) == REG
&& (TARGET_OPEN_VMS || TARGET_WINDOWS_NT || REGNO (op) == 27)));
}
/* Return 1 if OP is a valid Alpha comparison operator. Here we know which
@@ -886,12 +887,10 @@ alpha_emit_set_const_1 (target, mode, c, n)
/* If this is a sign-extended 32-bit constant, we can do this in at most
three insns, so do it if we have enough insns left. We always have
a sign-extended 32-bit constant when compiling on a narrow machine.
Note that we cannot handle the constant 0x80000000. */
a sign-extended 32-bit constant when compiling on a narrow machine. */
if ((HOST_BITS_PER_WIDE_INT != 64
|| c >> 31 == -1 || c >> 31 == 0)
&& c != 0x80000000U)
if (HOST_BITS_PER_WIDE_INT != 64
|| c >> 31 == -1 || c >> 31 == 0)
{
HOST_WIDE_INT low = (c & 0xffff) - 2 * (c & 0x8000);
HOST_WIDE_INT tmp1 = c - low;
@@ -910,7 +909,18 @@ alpha_emit_set_const_1 (target, mode, c, n)
}
if (c == low || (low == 0 && extra == 0))
return copy_to_suggested_reg (GEN_INT (c), target, mode);
{
/* We used to use copy_to_suggested_reg (GEN_INT (c), target, mode)
but that meant that we can't handle INT_MIN on 32-bit machines
(like NT/Alpha), because we recurse indefinitely through
emit_move_insn to gen_movdi. So instead, since we know exactly
what we want, create it explicitly. */
if (target == NULL)
target = gen_reg_rtx (mode);
emit_insn (gen_rtx (SET, VOIDmode, target, GEN_INT (c)));
return target;
}
else if (n >= 2 + (extra != 0))
{
temp = copy_to_suggested_reg (GEN_INT (low), subtarget, mode);
@@ -988,9 +998,11 @@ alpha_emit_set_const_1 (target, mode, c, n)
/* Now try high-order zero bits. Here we try the shifted-in bits as
all zero and all ones. Be careful to avoid shifting outside the
mode and to avoid shifting outside the host wide int size. */
/* On narrow hosts, don't shift a 1 into the high bit, since we'll
confuse the recursive call and set all of the high 32 bits. */
if ((bits = (MIN (HOST_BITS_PER_WIDE_INT, GET_MODE_SIZE (mode) * 8)
- floor_log2 (c) - 1)) > 0)
- floor_log2 (c) - 1 - (HOST_BITS_PER_WIDE_INT < 64))) > 0)
for (; bits > 0; bits--)
if ((temp = alpha_emit_set_const (subtarget, mode,
c << bits, i)) != 0
@@ -1405,6 +1417,26 @@ print_operand (file, x, code)
fputs ("su", file);
break;
case '(':
/* Generates trap-mode suffix for instructions that accept the
v, sv, and svi suffix. The only instruction that needs this
is cvttq. */
switch (alpha_fptm)
{
case ALPHA_FPTM_N:
break;
case ALPHA_FPTM_U:
fputs ("v", file);
break;
case ALPHA_FPTM_SU:
fputs ("sv", file);
break;
case ALPHA_FPTM_SUI:
fputs ("svi", file);
break;
}
break;
case ')':
/* Generates trap-mode suffix for instructions that accept the u, su,
and sui suffix. This is the bulk of the IEEE floating point
@@ -2020,7 +2052,7 @@ output_prolog (file, size)
/* Offset during register save. */
int reg_offset;
/* Label for the procedure entry. */
char *entry_label = (char *) alloca (strlen (alpha_function_name) + 5);
char *entry_label = (char *) alloca (strlen (alpha_function_name) + 6);
int i;
sa_size = alpha_sa_size ();
@@ -2033,7 +2065,7 @@ output_prolog (file, size)
fprintf (file, "\t.ent ");
assemble_name (file, alpha_function_name);
fprintf (file, "\n");
sprintf (entry_label, "%s..en", alpha_function_name);
sprintf (entry_label, "$%s..en", alpha_function_name);
ASM_OUTPUT_LABEL (file, entry_label);
inside_function = TRUE;
@@ -2087,6 +2119,7 @@ output_prolog (file, size)
fprintf (file, "\tlda $22,4096($30)\n");
fputc ('$', file);
assemble_name (file, alpha_function_name);
fprintf (file, "..sc:\n");
@@ -2094,7 +2127,7 @@ output_prolog (file, size)
fprintf (file, "\tsubq $23,1,$23\n");
fprintf (file, "\tlda $22,-8192($22)\n");
fprintf (file, "\tbne $23,");
fprintf (file, "\tbne $23,$");
assemble_name (file, alpha_function_name);
fprintf (file, "..sc\n");
@@ -2169,7 +2202,7 @@ output_prolog (file, size)
link_section ();
fprintf (file, "\t.align 3\n");
ASM_OUTPUT_LABEL (file, alpha_function_name);
fprintf (file, "\t.pdesc ");
fprintf (file, "\t.pdesc $");
assemble_name (file, alpha_function_name);
fprintf (file, "..en,%s\n", is_stack_procedure ? "stack" : "reg");
alpha_need_linkage (alpha_function_name, 1);
@@ -2383,6 +2416,7 @@ output_prolog (file, size)
fprintf (file, "\tldgp $29,0($27)\n");
/* Put a label after the GP load so we can enter the function at it. */
fputc ('$', file);
assemble_name (file, alpha_function_name);
fprintf (file, "..ng:\n");
}
@@ -2430,6 +2464,7 @@ output_prolog (file, size)
fprintf (file, "\tlda $4,4096($30)\n");
fputc ('$', file);
assemble_name (file, alpha_function_name);
fprintf (file, "..sc:\n");
@@ -2437,7 +2472,7 @@ output_prolog (file, size)
fprintf (file, "\tsubq $5,1,$5\n");
fprintf (file, "\tlda $4,-8192($4)\n");
fprintf (file, "\tbne $5,");
fprintf (file, "\tbne $5,$");
assemble_name (file, alpha_function_name);
fprintf (file, "..sc\n");
@@ -2784,11 +2819,20 @@ summarize_insn (x, sum, set)
summarize_insn (XEXP (x, 0), sum, 0);
break;
case ASM_OPERANDS:
for (i = ASM_OPERANDS_INPUT_LENGTH (x) - 1; i >= 0; i--)
summarize_insn (ASM_OPERANDS_INPUT (x, i), sum, 0);
break;
case PARALLEL:
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
summarize_insn (XVECEXP (x, 0, i), sum, 0);
break;
case SUBREG:
x = SUBREG_REG (x);
/* FALLTHRU */
case REG:
{
int regno = REGNO (x);
@@ -2824,10 +2868,6 @@ summarize_insn (x, sum, set)
summarize_insn (XEXP (x, 0), sum, 0);
break;
case SUBREG:
summarize_insn (SUBREG_REG (x), sum, set);
break;
case CONST_INT: case CONST_DOUBLE:
case SYMBOL_REF: case LABEL_REF: case CONST:
break;
@@ -2958,7 +2998,7 @@ alpha_handle_trap_shadows (insns)
sum.used.i = 0;
sum.used.fp = 0;
sum.used.mem = 0;
sum.defd = shadow.used;
sum.defd = sum.used;
switch (GET_CODE (i))
{
@@ -3247,11 +3287,11 @@ alpha_write_linkage (stream)
|| ! TREE_SYMBOL_REFERENCED (get_identifier (lptr->name)))
continue;
fprintf (stream, "%s..lk:\n", lptr->name);
fprintf (stream, "$%s..lk:\n", lptr->name);
if (lptr->kind == KIND_LOCAL)
{
/* Local and used, build linkage pair. */
fprintf (stream, "\t.quad %s..en\n", lptr->name);
fprintf (stream, "\t.quad $%s..en\n", lptr->name);
fprintf (stream, "\t.quad %s\n", lptr->name);
}
else

View File

@@ -646,9 +646,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
: (C) == 'J' ? (VALUE) == 0 \
: (C) == 'K' ? (unsigned HOST_WIDE_INT) ((VALUE) + 0x8000) < 0x10000 \
: (C) == 'L' ? (((VALUE) & 0xffff) == 0 \
&& (((VALUE)) >> 31 == -1 || (VALUE) >> 31 == 0) \
&& ((HOST_BITS_PER_WIDE_INT == 64 \
|| (unsigned) (VALUE) != 0x80000000U))) \
&& (((VALUE)) >> 31 == -1 || (VALUE) >> 31 == 0)) \
: (C) == 'M' ? zap_mask (VALUE) \
: (C) == 'N' ? (unsigned HOST_WIDE_INT) (~ (VALUE)) < 0x100 \
: (C) == 'O' ? (unsigned HOST_WIDE_INT) (- (VALUE)) < 0x100 \
@@ -1829,10 +1827,7 @@ literal_section () \
PREFIX is the class of label and NUM is the number within the class. */
#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
if ((PREFIX)[0] == 'L') \
fprintf (FILE, "$%s%d:\n", & (PREFIX)[1], NUM + 32); \
else \
fprintf (FILE, "%s%d:\n", PREFIX, NUM);
fprintf (FILE, "$%s%d:\n", PREFIX, NUM)
/* This is how to output a label for a jump table. Arguments are the same as
for ASM_OUTPUT_INTERNAL_LABEL, except the insn for the jump table is
@@ -1847,10 +1842,7 @@ literal_section () \
This is suitable for output with `assemble_name'. */
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
if ((PREFIX)[0] == 'L') \
sprintf (LABEL, "*$%s%d", & (PREFIX)[1], NUM + 32); \
else \
sprintf (LABEL, "*%s%d", PREFIX, NUM)
sprintf (LABEL, "*$%s%d", PREFIX, NUM)
/* Check a floating-point value for validity for a particular machine mode. */
@@ -1987,8 +1979,8 @@ literal_section () \
/* This is how to output an element of a case-vector that is relative. */
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
fprintf (FILE, "\t.%s $%d\n", TARGET_WINDOWS_NT ? "long" : "gprel32", \
(VALUE) + 32)
fprintf (FILE, "\t.%s $L%d\n", TARGET_WINDOWS_NT ? "long" : "gprel32", \
(VALUE))
/* This is how to output an assembler line
that says to advance the location counter
@@ -2060,6 +2052,10 @@ literal_section () \
' Generates trap-mode suffix for instructions that accept the
su suffix only (cmpt et al).
( Generates trap-mode suffix for instructions that accept the
v, sv, and svi suffix. The only instruction that needs this
is cvttq.
) Generates trap-mode suffix for instructions that accept the
u, su, and sui suffix. This is the bulk of the IEEE floating
point instructions (addt et al).
@@ -2075,8 +2071,8 @@ literal_section () \
*/
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
((CODE) == '&' || (CODE) == '\'' || (CODE) == ')' || (CODE) == '+' \
|| (CODE) == ',' || (CODE) == '-')
((CODE) == '&' || (CODE) == '\'' || (CODE) == '(' || (CODE) == ')' \
|| (CODE) == '+' || (CODE) == ',' || (CODE) == '-')
/* Print a memory address as an operand to reference that memory location. */

View File

@@ -39,7 +39,7 @@
;; The TRAP_TYPE attribute marks instructions that may generate traps
;; (which are imprecise and may need a trapb if software complention
;; is desired).
(define_attr "trap" "yes,no" (const_string "no"))
(define_attr "trap" "no,yes" (const_string "no"))
;; For the EV4 we include four function units: ABOX, which computes
;; the address, BBOX, used for branches, EBOX, used for integer
@@ -215,20 +215,14 @@
;; First define the arithmetic insns. Note that the 32-bit forms also
;; sign-extend.
;; Note that we can do sign extensions in both FP and integer registers.
;; However, the result must be in the same type of register as the input.
;; The register preferencing code can't handle this case very well, so, for
;; now, don't let the FP case show up here for preferencing. Also,
;; sign-extends in FP registers take two instructions.
(define_insn "extendsidi2"
[(set (match_operand:DI 0 "register_operand" "=r,r,*f")
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m,*f")))]
[(set (match_operand:DI 0 "register_operand" "=r,r")
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m")))]
""
"@
addl %1,$31,%0
ldl %0,%1
cvtql %1,%0\;cvtlq %0,%0"
[(set_attr "type" "iadd,ld,fadd")])
ldl %0,%1"
[(set_attr "type" "iadd,ld")])
;; Do addsi3 the way expand_binop would do if we didn't have one. This
;; generates better code. We have the anonymous addsi3 pattern below in
@@ -1507,20 +1501,39 @@
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=&f")
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn "fix_truncdfdi2"
[(set (match_operand:DI 0 "register_operand" "=f")
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
"TARGET_FP"
"cvt%-qc %R1,%0"
[(set_attr "type" "fadd")])
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=&f")
(fix:DI (float_extend:DF
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn "fix_truncsfdi2"
[(set (match_operand:DI 0 "register_operand" "=f")
(fix:DI (float_extend:DF
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
"TARGET_FP"
"cvt%-qc %R1,%0"
[(set_attr "type" "fadd")])
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn ""
[(set (match_operand:SF 0 "register_operand" "=&f")
@@ -3102,22 +3115,17 @@
}")
(define_expand "call_nt"
[(parallel [(call (mem:DI (match_operand:DI 0 "" ""))
[(parallel [(call (mem:DI (match_operand 0 "" ""))
(match_operand 1 "" ""))
(clobber (reg:DI 26))])]
""
"
{ if (GET_CODE (operands[0]) != MEM)
abort ();
operands[0] = XEXP (operands[0], 0);
if (GET_CODE (operands[1]) != SYMBOL_REF
&& ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27))
{
rtx tem = gen_rtx (REG, DImode, 27);
emit_move_insn (tem, operands[1]);
operands[1] = tem;
}
operands[0] = XEXP (operands[0], 0);
if (GET_CODE (operands[0]) != SYMBOL_REF && GET_CODE (operands[0]) != REG)
operands[0] = force_reg (DImode, operands[0]);
}")
;;
@@ -3148,12 +3156,13 @@
{
extern char *savealloc ();
char *symbol = XSTR (operands[0], 0);
char *linksym = savealloc (strlen (symbol) + 5);
char *linksym = savealloc (strlen (symbol) + 6);
rtx linkage;
alpha_need_linkage (symbol, 0);
strcpy (linksym, symbol);
linksym[0] = '$';
strcpy (linksym+1, symbol);
strcat (linksym, \"..lk\");
linkage = gen_rtx (SYMBOL_REF, Pmode, linksym);
@@ -3215,7 +3224,7 @@
(define_expand "call_value_nt"
[(parallel [(set (match_operand 0 "" "")
(call (mem:DI (match_operand:DI 1 "" ""))
(call (mem:DI (match_operand 1 "" ""))
(match_operand 2 "" "")))
(clobber (reg:DI 26))])]
""
@@ -3224,13 +3233,8 @@
abort ();
operands[1] = XEXP (operands[1], 0);
if (GET_CODE (operands[1]) != SYMBOL_REF
&& ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27))
{
rtx tem = gen_rtx (REG, DImode, 27);
emit_move_insn (tem, operands[1]);
operands[1] = tem;
}
if (GET_CODE (operands[0]) != SYMBOL_REF && GET_CODE (operands[0]) != REG)
operands[1] = force_reg (DImode, operands[1]);
}")
(define_expand "call_value_vms"
@@ -3257,11 +3261,12 @@
{
extern char *savealloc ();
char *symbol = XSTR (operands[1], 0);
char *linksym = savealloc (strlen (symbol) + 5);
char *linksym = savealloc (strlen (symbol) + 6);
rtx linkage;
alpha_need_linkage (symbol, 0);
strcpy (linksym, symbol);
linksym[0] = '$';
strcpy (linksym+1, symbol);
strcat (linksym, \"..lk\");
linkage = gen_rtx (SYMBOL_REF, Pmode, linksym);
@@ -3287,18 +3292,19 @@
"! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS"
"@
jsr $26,($27),0\;ldgp $29,0($26)
bsr $26,%0..ng
bsr $26,$%0..ng
jsr $26,%0\;ldgp $29,0($26)"
[(set_attr "type" "jsr")])
(define_insn ""
[(call (mem:DI (match_operand:DI 0 "call_operand" "r,i"))
[(call (mem:DI (match_operand:DI 0 "call_operand" "r,R,i"))
(match_operand 1 "" ""))
(clobber (reg:DI 26))]
"TARGET_WINDOWS_NT"
"@
jsr $26,(%0)
bsr $26,%0"
bsr $26,%0
jsr $26,%0"
[(set_attr "type" "jsr")])
(define_insn ""
@@ -3323,19 +3329,20 @@
"! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS"
"@
jsr $26,($27),0\;ldgp $29,0($26)
bsr $26,%1..ng
bsr $26,$%1..ng
jsr $26,%1\;ldgp $29,0($26)"
[(set_attr "type" "jsr")])
(define_insn ""
[(set (match_operand 0 "register_operand" "=rf,rf")
(call (mem:DI (match_operand:DI 1 "call_operand" "r,i"))
[(set (match_operand 0 "register_operand" "=rf,rf,rf")
(call (mem:DI (match_operand:DI 1 "call_operand" "r,R,i"))
(match_operand 2 "" "")))
(clobber (reg:DI 26))]
"TARGET_WINDOWS_NT"
"@
jsr $26,(%1)
bsr $26,%1"
bsr $26,%1
jsr $26,%1"
[(set_attr "type" "jsr")])
(define_insn ""
@@ -4523,12 +4530,15 @@
}
}")
(define_insn "exception_receiver"
;; Ideally we should be able to define nonlocal_goto and arrange
;; for the pc to be in a known place. Or perhaps branch back via
;; br instead of jmp.
(define_insn "nonlocal_goto_receiver_osf"
[(unspec_volatile [(const_int 0)] 2)]
"! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT"
".long 0xc3a00000\;ldgp $29,0($29)")
"br $29,$LGOTO%=\\n$LGOTO%=:\;ldgp $29,0($29)")
(define_expand "nonlocal_goto_receiver"
(define_expand "nonlocal_goto_receiver_vms"
[(unspec_volatile [(const_int 0)] 1)
(set (reg:DI 27) (mem:DI (reg:DI 29)))
(unspec_volatile [(const_int 0)] 1)
@@ -4536,6 +4546,18 @@
"TARGET_OPEN_VMS"
"")
(define_expand "nonlocal_goto_receiver"
[(unspec_volatile [(const_int 0)] 2)]
""
"
{
if (TARGET_OPEN_VMS)
emit_insn(gen_nonlocal_goto_receiver_vms ());
else if (!TARGET_WINDOWS_NT)
emit_insn(gen_nonlocal_goto_receiver_osf ());
DONE;
}")
(define_insn "arg_home"
[(unspec [(const_int 0)] 0)
(use (reg:DI 1))

View File

@@ -62,6 +62,14 @@ Currently only Linux uses this. */
#define DEFAULT_VTABLE_THUNKS 1
#endif
#ifndef USE_GNULIBC_1
#undef LIB_SPEC
#define LIB_SPEC \
"%{shared: -lc} \
%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
%{profile:-lc_p} %{!profile: -lc}}"
#endif
/* Output at beginning of assembler file. */
#undef ASM_FILE_START

View File

@@ -57,7 +57,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
fputs ("\tjsr $28,_mcount\n", (FILE))
fputs ("\tlda $28,_mcount\n\tjsr $28,($28),_mcount\n", (FILE))
/* Generate calls to memcpy, etc., not bcopy, etc. */
#define TARGET_MEM_FUNCTIONS

View File

@@ -1,22 +0,0 @@
;# New Alpha OpenVMS trampoline
;#
.set noreorder
.set volatile
.set noat
.file 1 "tramp.s"
.text
.align 3
.globl __tramp
.ent __tramp
__tramp..en:
.link
.align 3
__tramp:
.pdesc __tramp..en,null
.text
ldq $1,24($27)
ldq $27,16($27)
ldq $28,8($27)
jmp $31,($28),0
.end __tramp

View File

@@ -238,7 +238,7 @@ link_section () \
#undef ASM_OUTPUT_ADDR_VEC_ELT
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
fprintf (FILE, "\t.quad $%d\n", (VALUE) + 32)
fprintf (FILE, "\t.quad $L%d\n", (VALUE))
#undef READONLY_DATA_SECTION
#define READONLY_DATA_SECTION readonly_section

View File

@@ -70,3 +70,59 @@ Boston, MA 02111-1307, USA. */
%{!mwindows:-subsystem console -e _mainCRTStartup} \
%{mcrtmt:LIBCMT.LIB%s KERNEL32.LIB%s} %{!mcrtmt:LIBC.LIB%s KERNEL32.LIB%s} \
%{v}"
/* Output assembler code for a block containing the constant parts
of a trampoline, leaving space for the variable parts.
The trampoline should set the static chain pointer to value placed
into the trampoline and should branch to the specified routine. */
#undef TRAMPOLINE_TEMPLATE
#define TRAMPOLINE_TEMPLATE(FILE) \
{ \
fprintf (FILE, "\tbr $27,$LTRAMPP\n"); \
fprintf (FILE, "$LTRAMPP:\n\tldl $1,16($27)\n"); \
fprintf (FILE, "\tldl $27,12($27)\n"); \
fprintf (FILE, "\tjmp $31,($27),0\n"); \
fprintf (FILE, "\t.long 0,0\n"); \
}
/* Length in units of the trampoline for entering a nested function. */
#undef TRAMPOLINE_SIZE
#define TRAMPOLINE_SIZE 24
/* Emit RTL insns to initialize the variable parts of a trampoline.
FNADDR is an RTX for the address of the function's pure code.
CXT is an RTX for the static chain value for the function.
This differs from the standard version in that:
We are not passed the current address in any register, and so have to
load it ourselves.
We do not initialize the "hint" field because it only has an 8k
range and so the target is in range of something on the stack.
Omitting the hint saves a bogus branch-prediction cache line load.
Always have an executable stack -- no need for a system call.
*/
#undef INITIALIZE_TRAMPOLINE
#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
{ \
rtx _addr, _val; \
\
_addr = memory_address (Pmode, plus_constant ((TRAMP), 16)); \
_val = force_reg(Pmode, (FNADDR)); \
emit_move_insn (gen_rtx (MEM, SImode, _addr), \
gen_rtx (SUBREG, SImode, _val, 0)); \
_addr = memory_address (Pmode, plus_constant ((TRAMP), 20)); \
_val = force_reg(Pmode, (CXT)); \
emit_move_insn (gen_rtx (MEM, SImode, _addr), \
gen_rtx (SUBREG, SImode, _val, 0)); \
\
emit_insn (gen_rtx (UNSPEC_VOLATILE, VOIDmode, \
gen_rtvec (1, const0_rtx), 0)); \
}

View File

@@ -2352,6 +2352,10 @@ load_multiple_sequence (operands, nops, regs, base, load_offset)
rtx reg;
rtx offset;
/* Convert a subreg of a mem into the mem itself. */
if (GET_CODE (operands[nops + i]) == SUBREG)
operands[nops + i] = alter_subreg(operands[nops + i]);
if (GET_CODE (operands[nops + i]) != MEM)
abort ();
@@ -3913,7 +3917,7 @@ output_move_double (operands)
{
enum rtx_code code0 = GET_CODE (operands[0]);
enum rtx_code code1 = GET_CODE (operands[1]);
rtx otherops[2];
rtx otherops[3];
if (code0 == REG)
{

View File

@@ -3859,8 +3859,14 @@
"
{
enum rtx_code code = GET_CODE (operands[1]);
rtx ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
arm_compare_fp);
rtx ccreg;
/* When compiling for SOFT_FLOAT, ensure both arms are in registers. */
if (! TARGET_HARD_FLOAT)
operands[3] = force_reg (SFmode, operands[3]);
ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
arm_compare_fp);
operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx);
}")

View File

@@ -130,3 +130,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
requirements. */
#undef STRUCTURE_SIZE_BOUNDARY
#define STRUCTURE_SIZE_BOUNDARY 8
/* Until they use ELF or something that handles dwarf2 unwinds
and initialization stuff better. */
#define DWARF2_UNWIND_INFO 0

View File

@@ -1,96 +0,0 @@
/* float.h for target with IEEE 32, 64 and 128 bit floating point formats */
#ifndef _FLOAT_H_
#define _FLOAT_H_
/* Produced by enquire version 4.3, CWI, Amsterdam */
/* Radix of exponent representation */
#undef FLT_RADIX
#define FLT_RADIX 2
/* Number of base-FLT_RADIX digits in the significand of a float */
#undef FLT_MANT_DIG
#define FLT_MANT_DIG 24
/* Number of decimal digits of precision in a float */
#undef FLT_DIG
#define FLT_DIG 6
/* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown */
#undef FLT_ROUNDS
#define FLT_ROUNDS 1
/* Difference between 1.0 and the minimum float greater than 1.0 */
#undef FLT_EPSILON
#define FLT_EPSILON 1.19209290e-07F
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */
#undef FLT_MIN_EXP
#define FLT_MIN_EXP (-125)
/* Minimum normalised float */
#undef FLT_MIN
#define FLT_MIN 1.17549435e-38F
/* Minimum int x such that 10**x is a normalised float */
#undef FLT_MIN_10_EXP
#define FLT_MIN_10_EXP (-37)
/* Maximum int x such that FLT_RADIX**(x-1) is a representable float */
#undef FLT_MAX_EXP
#define FLT_MAX_EXP 128
/* Maximum float */
#undef FLT_MAX
#define FLT_MAX 3.40282347e+38F
/* Maximum int x such that 10**x is a representable float */
#undef FLT_MAX_10_EXP
#define FLT_MAX_10_EXP 38
/* Number of base-FLT_RADIX digits in the significand of a double */
#undef DBL_MANT_DIG
#define DBL_MANT_DIG 53
/* Number of decimal digits of precision in a double */
#undef DBL_DIG
#define DBL_DIG 15
/* Difference between 1.0 and the minimum double greater than 1.0 */
#undef DBL_EPSILON
#define DBL_EPSILON 2.2204460492503131e-16
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */
#undef DBL_MIN_EXP
#define DBL_MIN_EXP (-1021)
/* Minimum normalised double */
#undef DBL_MIN
#define DBL_MIN 2.2250738585072014e-308
/* Minimum int x such that 10**x is a normalised double */
#undef DBL_MIN_10_EXP
#define DBL_MIN_10_EXP (-307)
/* Maximum int x such that FLT_RADIX**(x-1) is a representable double */
#undef DBL_MAX_EXP
#define DBL_MAX_EXP 1024
/* Maximum double */
#undef DBL_MAX
#define DBL_MAX 1.7976931348623157e+308
/* Maximum int x such that 10**x is a representable double */
#undef DBL_MAX_10_EXP
#define DBL_MAX_10_EXP 308
/* Number of base-FLT_RADIX digits in the significand of a long double */
#undef LDBL_MANT_DIG
#define LDBL_MANT_DIG 113
/* Number of decimal digits of precision in a long double */
#undef LDBL_DIG
#define LDBL_DIG 33
/* Difference between 1.0 and the minimum long double greater than 1.0 */
#undef LDBL_EPSILON
#define LDBL_EPSILON 1.925929944387235853055977942584927319E-34L
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
#undef LDBL_MIN_EXP
#define LDBL_MIN_EXP (-16381)
/* Minimum normalised long double */
#undef LDBL_MIN
#define LDBL_MIN 3.362103143112093506262677817321752603E-4932L
/* Minimum int x such that 10**x is a normalised long double */
#undef LDBL_MIN_10_EXP
#define LDBL_MIN_10_EXP (-4931)
/* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */
#undef LDBL_MAX_EXP
#define LDBL_MAX_EXP 16384
/* Maximum long double */
#undef LDBL_MAX
#define LDBL_MAX 1.189731495357231765085759326628007016E+4932L
/* Maximum int x such that 10**x is a representable long double */
#undef LDBL_MAX_10_EXP
#define LDBL_MAX_10_EXP 4932
#endif /* _FLOAT_H_ */

View File

@@ -44,7 +44,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#define CPP_PREDEFINES "-Dps2 -Dunix -Asystem(aix)"
#define CPP_PREDEFINES "-Di386 -Dps2 -Dunix -Asystem(aix)"
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
"%{posix:-D_POSIX_SOURCE}%{!posix:-DAIX} -D_I386 -D_AIX -D_MBCS"

View File

@@ -199,3 +199,6 @@ do { \
TREE_CODE (DECL) == FUNCTION_DECL \
? "discard" : "same_size"); \
} while (0)
/* DWARF2 Unwinding doesn't work with exception handling yet. */
#define DWARF2_UNWIND_INFO 0

View File

@@ -140,7 +140,7 @@ Boston, MA 02111-1307, USA. */
#define WCHAR_TYPE_SIZE BITS_PER_WORD
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"

View File

@@ -56,7 +56,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#define CPP_PREDEFINES "-Dunix"
#define CPP_PREDEFINES "-Di386 -Dunix"
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{posix:-D_POSIX_SOURCE}"
/* Allow #sccs in preprocessor. */

View File

@@ -3385,16 +3385,7 @@ notice_update_cc (exp)
/* Jumps do not alter the cc's. */
if (SET_DEST (exp) == pc_rtx)
return;
#ifdef IS_STACK_MODE
/* Moving into a memory of stack_mode may have been moved
in between the use and set of cc0 by loop_spl(). So
old value of cc.status must be retained */
if(GET_CODE(SET_DEST(exp))==MEM
&& IS_STACK_MODE(GET_MODE(SET_DEST(exp))))
{
return;
}
#endif
/* Moving register or memory into a register:
it doesn't alter the cc's, but it might invalidate
the RTX's which we remember the cc's came from.
@@ -3417,11 +3408,11 @@ notice_update_cc (exp)
&& (REG_P (SET_SRC (exp))
|| GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
{
if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM
|| reg_mentioned_p (SET_DEST (exp), cc_status.value1))
if (cc_status.value1
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
cc_status.value1 = 0;
if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM
|| reg_mentioned_p (SET_DEST (exp), cc_status.value2))
if (cc_status.value2
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
cc_status.value2 = 0;
return;
}

View File

@@ -165,7 +165,9 @@ extern int target_flags;
#define TARGET_USE_Q_REG (ix86_cpu == PROCESSOR_PENTIUM \
|| ix86_cpu == PROCESSOR_PENTIUMPRO)
#define TARGET_USE_ANY_REG (ix86_cpu == PROCESSOR_I486)
#define TARGET_CMOVE (ix86_arch == PROCESSOR_PENTIUMPRO)
/* This is temporary for the release only. Folks are working on a fix,
but the fix will likely not be suitable for the first egcs release. */
#define TARGET_CMOVE (0)
#define TARGET_DEEP_BRANCH_PREDICTION (ix86_cpu == PROCESSOR_PENTIUMPRO)
#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)
@@ -1522,8 +1524,9 @@ do { \
\
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) \
if ((regs_ever_live[regno] && ! call_used_regs[regno]) \
|| (current_function_uses_pic_offset_table \
&& regno == PIC_OFFSET_TABLE_REGNUM)) \
|| ((current_function_uses_pic_offset_table \
|| current_function_uses_const_pool) \
&& flag_pic && regno == PIC_OFFSET_TABLE_REGNUM)) \
offset += 4; \
\
(OFFSET) = offset + get_frame_size (); \

View File

@@ -1,5 +1,5 @@
; GCC machine description for Intel X86.
;; Copyright (C) 1988, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
;; Copyright (C) 1988, 94-97, 1998 Free Software Foundation, Inc.
;; Mostly by William Schelter.
;; This file is part of GNU CC.
@@ -834,24 +834,23 @@
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "general_operand" "g"))]
(match_operand:SI 1 "nonmemory_operand" "rn"))]
"flag_pic"
"* return AS1 (push%L0,%1);")
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "nonmemory_operand" "ri"))]
"!flag_pic"
"* return AS1 (push%L0,%1);")
;; On a 386, it is faster to push MEM directly.
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "memory_operand" "m"))]
"TARGET_PUSH_MEMORY"
"push%L0 %1")
;; If not a 386, it is faster to move MEM to a REG and then push, rather than
;; push MEM directly.
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "nonmemory_operand" "ri"))]
"!TARGET_PUSH_MEMORY && TARGET_MOVE"
"push%L0 %1")
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "nonmemory_operand" "ri"))]
"!TARGET_PUSH_MEMORY && !TARGET_MOVE"
"push%L0 %1")
"* return AS1 (push%L0,%1);")
;; General case of fullword move.
@@ -883,8 +882,10 @@
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=g,r")
(match_operand:SI 1 "general_operand" "ri,m"))]
"(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
(match_operand:SI 1 "general_operand" "rn,im"))]
"((!TARGET_MOVE || GET_CODE (operands[0]) != MEM)
|| (GET_CODE (operands[1]) != MEM))
&& flag_pic"
"*
{
rtx link;
@@ -903,29 +904,50 @@
/* Fastest way to change a 0 to a 1. */
return AS1 (inc%L0,%0);
if (flag_pic && SYMBOLIC_CONST (operands[1]))
if (SYMBOLIC_CONST (operands[1]))
return AS2 (lea%L0,%a1,%0);
return AS2 (mov%L0,%1,%0);
}")
(define_insn ""
[(set (match_operand:SI 0 "general_operand" "=g,r")
(match_operand:SI 1 "general_operand" "ri,m"))]
"((!TARGET_MOVE || GET_CODE (operands[0]) != MEM)
|| (GET_CODE (operands[1]) != MEM))
&& !flag_pic"
"*
{
rtx link;
if (operands[1] == const0_rtx && REG_P (operands[0]))
return AS2 (xor%L0,%0,%0);
if (operands[1] == const1_rtx
&& (link = find_reg_note (insn, REG_WAS_0, 0))
/* Make sure the insn that stored the 0 is still present. */
&& ! INSN_DELETED_P (XEXP (link, 0))
&& GET_CODE (XEXP (link, 0)) != NOTE
/* Make sure cross jumping didn't happen here. */
&& no_labels_between_p (XEXP (link, 0), insn)
/* Make sure the reg hasn't been clobbered. */
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
/* Fastest way to change a 0 to a 1. */
return AS1 (inc%L0,%0);
return AS2 (mov%L0,%1,%0);
}")
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
(match_operand:HI 1 "general_operand" "g"))]
(match_operand:HI 1 "nonmemory_operand" "ri"))]
""
"* return AS1 (push%W0,%1);")
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
(match_operand:HI 1 "memory_operand" "m"))]
"TARGET_PUSH_MEMORY"
"push%W0 %1")
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
(match_operand:HI 1 "nonmemory_operand" "ri"))]
"!TARGET_PUSH_MEMORY && TARGET_MOVE"
"push%W0 %1")
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
(match_operand:HI 1 "nonmemory_operand" "ri"))]
"!TARGET_PUSH_MEMORY && !TARGET_MOVE"
"push%W0 %1")
"* return AS1 (push%W0,%1);")
;; On i486, an incl and movl are both faster than incw and movw.
@@ -1038,22 +1060,12 @@
[(set (match_operand:QI 0 "push_operand" "=<")
(match_operand:QI 1 "const_int_operand" "n"))]
""
"* return AS1 (push%W0,%1);")
"* return AS1(push%W0,%1);")
(define_insn ""
[(set (match_operand:QI 0 "push_operand" "=<")
(match_operand:QI 1 "register_operand" "q"))]
"!TARGET_MOVE"
"*
{
operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
return AS1 (push%W0,%1);
}")
(define_insn ""
[(set (match_operand:QI 0 "push_operand" "=<")
(match_operand:QI 1 "register_operand" "q"))]
"TARGET_MOVE"
""
"*
{
operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
@@ -2515,7 +2527,7 @@
(define_insn ""
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
(fix:DI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
(fix:DI (fix:XF (match_operand:XF 1 "register_operand" "+f"))))
(clobber (match_dup 1))
(clobber (match_operand:SI 2 "memory_operand" "m"))
(clobber (match_operand:DI 3 "memory_operand" "m"))
@@ -2525,7 +2537,7 @@
(define_insn ""
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
(fix:DI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
(fix:DI (fix:DF (match_operand:DF 1 "register_operand" "+f"))))
(clobber (match_dup 1))
(clobber (match_operand:SI 2 "memory_operand" "m"))
(clobber (match_operand:DI 3 "memory_operand" "m"))
@@ -2535,7 +2547,7 @@
(define_insn ""
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
(fix:DI (fix:SF (match_operand:SF 1 "register_operand" "f"))))
(fix:DI (fix:SF (match_operand:SF 1 "register_operand" "+f"))))
(clobber (match_dup 1))
(clobber (match_operand:SI 2 "memory_operand" "m"))
(clobber (match_operand:DI 3 "memory_operand" "m"))

View File

@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Dlinux -Asystem(posix)"
#define CPP_PREDEFINES "-Di386 -Dunix -Dlinux -Asystem(posix)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"

View File

@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Dlinux -Asystem(posix)"
#define CPP_PREDEFINES "-Di386 -Dunix -Dlinux -Asystem(posix)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"

View File

@@ -148,7 +148,7 @@ Boston, MA 02111-1307, USA. */
#define WCHAR_TYPE_SIZE BITS_PER_WORD
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D__ELF__ -Dunix -Dlinux -Asystem(posix)"
#define CPP_PREDEFINES "-Di386 -D__ELF__ -Dunix -Dlinux -Asystem(posix)"
#undef CPP_SPEC
#ifdef USE_GNULIBC_1

View File

@@ -71,3 +71,8 @@
fprintf (FILE, "\tcall mcount\n"); \
} \
}
/* Until they use ELF or something that handles dwarf2 unwinds
and initialization stuff better. */
#define DWARF2_UNWIND_INFO 0

View File

@@ -22,7 +22,7 @@ Boston, MA 02111-1307, USA. */
#include "config/i386/osfrose.h"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-DOSF -DOSF1 -Dunix -Asystem(xpg4)"
#define CPP_PREDEFINES "-Di386 -DOSF -DOSF1 -Dunix -Asystem(xpg4)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \

View File

@@ -90,7 +90,7 @@ Boston, MA 02111-1307, USA. */
/* Change default predefines. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-DOSF -DOSF1 -Dunix -Asystem(xpg4)"
#define CPP_PREDEFINES "-Di386 -DOSF -DOSF1 -Dunix -Asystem(xpg4)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \

View File

@@ -55,7 +55,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
#define CPP_PREDEFINES "-Di386 -Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{scointl:-DM_INTERNAT}"

View File

@@ -63,7 +63,7 @@ Boston, MA 02111-1307, USA. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Asystem(svr3)"
"-Di386 -Asystem(svr3)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \

View File

@@ -61,7 +61,7 @@ Boston, MA 02111-1307, USA. */
Specify predefined symbols in preprocessor. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -Asystem(svr3)"
#define CPP_PREDEFINES "-Di386 -Dunix -Asystem(svr3)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \

View File

@@ -1,5 +1,5 @@
/* Definitions for Intel 386 running SCO Unix System V 3.2 Version 5.
Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc.
Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Contributed by Kean Johnston (hug@netcom.com)
This file is part of GNU CC.
@@ -284,6 +284,14 @@ do { \
} \
} while (0)
/* A C statement (sans semicolon) to output to the stdio stream
FILE the assembler definition of uninitialized global DECL named
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
Try to use asm_output_aligned_bss to implement this macro. */
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
#undef ESCAPES
#define ESCAPES \
"\1\1\1\1\1\1\1\1btn\1fr\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
@@ -367,6 +375,19 @@ do { \
fprintf ((FILE), "\n"); \
} while (0)
/* Must use data section for relocatable constants when pic. */
#undef SELECT_RTX_SECTION
#define SELECT_RTX_SECTION(MODE,RTX) \
{ \
if (TARGET_ELF) { \
if (flag_pic && symbolic_operand (RTX)) \
data_section (); \
else \
const_section (); \
} else \
readonly_data_section(); \
}
#undef ASM_OUTPUT_CASE_LABEL
#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,JUMPTABLE) \
do { \
@@ -570,6 +591,7 @@ do { \
#define DWARF_DEBUGGING_INFO 1
#define SDB_DEBUGGING_INFO 1
#define DBX_DEBUGGING_INFO 1
#define PREFERRED_DEBUGGING_TYPE \
((TARGET_ELF) ? DWARF_DEBUG: SDB_DEBUG)
@@ -807,18 +829,17 @@ dtors_section () \
%{!Xc:%{Xk:values-Xk.o%s} \
%{!Xk:%{Xt:values-Xt.o%s} \
%{!Xt:values-Xa.o%s}}}}}} \
%{mcoff:crtbeginS.o%s} \
%{!mcoff:%{!static:crtbegin.o%s}%{static:crtbeginS.o%s}}"
%{mcoff:crtbeginS.o%s} %{!mcoff:crtbegin.o%s}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{!mcoff:%{!static:crtend.o%s}%{static:crtendS.o%s}} \
"%{!mcoff:crtend.o%s} \
%{mcoff:crtendS.o%s} \
%{pg:gcrtn.o%s}%{!pg:crtn.o%s}"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Asystem(svr3)"
"-Di386 -Asystem(svr3)"
/* You are in a maze of GCC specs ... all alike */
@@ -882,7 +903,11 @@ dtors_section () \
#undef LIB_SPEC
#define LIB_SPEC \
"%{!shared:%{!symbolic:-lcrypt -lgen -lc}}"
"%{shared:pic/libgcc.a%s}%{!shared:%{!symbolic:-lcrypt -lgen -lc}}"
#undef LIBGCC_SPEC
#define LIBGCC_SPEC \
"%{!shared:-lgcc}"
#define MASK_COFF 010000000000 /* Mask for elf generation */
#define TARGET_COFF (target_flags & MASK_COFF)
@@ -919,7 +944,7 @@ compiler at the end of the day. Onward we go ...
# if defined (_SCO_ELF)
# define OBJECT_FORMAT_ELF
# define HAVE_ATEXIT
# define HAVE_ATEXIT 1
# define INIT_SECTION_ASM_OP INIT_SECTION_ASM_OP_ELF
# define FINI_SECTION_ASM_OP FINI_SECTION_ASM_OP_ELF
# define DTORS_SECTION_ASM_OP DTORS_SECTION_ASM_OP_ELF

View File

@@ -50,7 +50,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
#define CPP_PREDEFINES "-Di386 -Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
#undef CPP_SPEC
#define CPP_SPEC " -Acpu(i386) -Amachine(i386) %{scointl:-DM_INTERNAT}"

View File

@@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA. */
/* Add "sun" to the list of symbols defined for SVR4. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem(svr4)"
"-Di386 -Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem(svr4)"
#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \

View File

@@ -42,7 +42,7 @@ Boston, MA 02111-1307, USA. */
/* Specify predefined symbols in preprocessor. */
#define CPP_PREDEFINES "-Dunix -Asystem(svr3)"
#define CPP_PREDEFINES "-Di386 -Dunix -Asystem(svr3)"
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{posix:-D_POSIX_SOURCE}"

View File

@@ -31,6 +31,10 @@ crtn.o: $(srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES)
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
#
# We must also enable optimization to avoid having any code appear after
# the call & alignment statement, but before we switch back to the
# .text section.
CRTSTUFF_T_CFLAGS = -fPIC
CRTSTUFF_T_CFLAGS = -fPIC -O2
TARGET_LIBGCC2_CFLAGS = -fPIC

View File

@@ -1,4 +1,3 @@
# Don't run fixproto
STMP_FIXPROTO =
# Don't need collect2
USE_COLLECT2 =

View File

@@ -1,6 +1,6 @@
RANLIB = :
RANLIB_TEST = false
CC = cc
CC = cc
OLDCC = cc
CCLIBFLAGS =
CLIB = -lPW

View File

@@ -22,6 +22,7 @@ Boston, MA 02111-1307, USA. */
#define NO_STAB_H
#define HAVE_RUSAGE
#define HAVE_FILE_H
#define NO_SYS_SIGLIST 1
#define EXECUTABLE_SUFFIX ".exe"
/* Even though we support "/", allow "\" since everybody tests both. */

View File

@@ -104,7 +104,8 @@ Boston, MA 02111-1307, USA. */
%{!profile:%{!ggdb:-lc} %{ggdb:-lg}}}"
#else
#define LIB_SPEC \
"%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
"%{shared: -lc} \
%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
%{profile:-lc_p} %{!profile: -lc}}"
#endif
#else

View File

@@ -72,12 +72,12 @@ Boston, MA 02111-1307, USA. */
#if TARGET_CPU_DEFAULT == M68K_CPU_m68302
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68302 } -D__mc68302 -D__mc68302__"
#define ASM_CPU_DEFAULT_SPEC "-mc68302"
#define CC1_CPU_DEFAULT_SPEC "-m68000"
#define CC1_CPU_DEFAULT_SPEC "-m68302"
#else
#if TARGET_CPU_DEFAULT == M68K_CPU_m68332
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68332 } -D__mc68332 -D__mc68332__"
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68332 -Dmcpu32 } -D__mc68332 -D__mc68332__ -D__mcpu32 -D__mcpu32__"
#define ASM_CPU_DEFAULT_SPEC "-mc68332"
#define CC1_CPU_DEFAULT_SPEC "-m68020 -mnobitfield %{!m68881:-msoft-float}"
#define CC1_CPU_DEFAULT_SPEC "-m68332"
#else
Unrecognized value in TARGET_CPU_DEFAULT.
#endif
@@ -92,20 +92,21 @@ Unrecognized value in TARGET_CPU_DEFAULT.
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dmc68000"
/* Define one of __HAVE_68881__, __HAVE_FPA__, or nothing (soft float), appropriately. */
/* Define one of __HAVE_68881__, __HAVE_FPA__, __HAVE_SKY__, or nothing
(soft float), appropriately. */
#undef CPP_FPU_SPEC
#if TARGET_DEFAULT & MASK_68881
/* ??? Why isn't m68302 treated like m68000 here? */
#define CPP_FPU_SPEC \
"%{!mc68000:%{!m68000:%{!m68332:%{!m5200:%{!msoft-float:%{mfpa:-D__HAVE_FPA__ }%{!mfpa:-D__HAVE_68881__ }}}}}}"
#define CPP_FPU_SPEC "\
%{!mc68000:%{!m68000:%{!m68302:%{!mcpu32:%{!m68332:%{!m5200:%{!msoft-float:%{!mno-68881:%{!mfpa:%{!msky:-D__HAVE_68881__ }}}}}}}}}} \
%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }%{msky:-D__HAVE_SKY__ }"
#else
/* This can't currently happen, but we code it anyway to show how it's done. */
#if TARGET_DEFAULT & MASK_FPA
#define CPP_FPU_SPEC \
"%{!msoft-float:%{m68881:-D__HAVE_68881__ }%{!m68881:-D__HAVE_FPA__ }}"
#else
#define CPP_FPU_SPEC \
"%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }"
#define CPP_FPU_SPEC "\
%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }%{msky:-D__HAVE_SKY__ }"
#endif
#endif
@@ -120,8 +121,10 @@ Unrecognized value in TARGET_CPU_DEFAULT.
-m68040: define mc68040
-m68060: define mc68060
-m68020-40: define mc68020 mc68030 mc68040
-m68302: define mc68302
-m68332: define mc68332
-m68020-60: define mc68020 mc68030 mc68040 mc68060
-m68302: define mc68302
-m68332: define mc68332 mcpu32
-mcpu32: define mcpu32
-m5200: define mcf5200
default: define as above appropriately
@@ -130,10 +133,9 @@ Unrecognized value in TARGET_CPU_DEFAULT.
#undef CPP_SPEC
#define CPP_SPEC "\
%(cpp_fpu) \
%{!ansi:%{m68010:-Dmc68010 }%{m68020:-Dmc68020 }%{mc68020:-Dmc68020 }%{m68030:-Dmc68030 }%{m68040:-Dmc68040 }%{m68020-40:-Dmc68020 -Dmc68030 -Dmc68040 }%{m68060:-Dmc68060 }%{m68302:-Dmc68302 }%{m68332:-Dmc68332 }%{m5200:-Dmcf5200 }} \
%{m68010:-D__mc68010__ -D__mc68010 }%{m68020:-D__mc68020__ -D__mc68020 }%{mc68020:-D__mc68020__ -D__mc68020 }%{m68030:-D__mc68030__ -D__mc68030 }%{m68040:-D__mc68040__ -D__mc68040 }%{m68020-40:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 }%{mc68060:-D__mc68060__ -D__mc68060 }%{m68302:-D__mc68302__ -D__mc68302 }%{m68332:-D__mc68332__ -D__mc68332 }%{m5200:-D__mcf5200__ -D__mcf5200 } \
%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68060:%{!m68302:%{!m68332:%{!m5200:%(cpp_cpu_default)}}}}}}}}}}}} \
%(cpp_fpu)%{!ansi:%{m68302:-Dmc68302 }%{m68010:-Dmc68010 }%{m68020:-Dmc68020 }%{mc68020:-Dmc68020 }%{m68030:-Dmc68030 }%{m68040:-Dmc68040 }%{m68020-40:-Dmc68020 -Dmc68030 -Dmc68040 }%{m68020-60:-Dmc68020 -Dmc68030 -Dmc68040 -Dmc68060 }%{m68060:-Dmc68060 }%{mcpu32:-Dmcpu32 } %{m68332:-Dmc68332 -Dmcpu32 }%{m5200:-Dmcf5200 }} \
%{m68302:-D__mc68302__ -D__mc68302 }%{m68010:-D__mc68010__ -D__mc68010 }%{m68020:-D__mc68020__ -D__mc68020 }%{mc68020:-D__mc68020__ -D__mc68020 }%{m68030:-D__mc68030__ -D__mc68030 }%{m68040:-D__mc68040__ -D__mc68040 }%{m68020-40:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 }%{m68020-60:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 -D__mc68060__ -D__mc68060 }%{m68060:-D__mc68060__ -D__mc68060 }%{mcpu32:-D__mcpu32__ -D__mcpu32 }%{m68332:-D__mc68332__ -D__mc68332 -D__mcpu32__ -D__mcpu32 }%{m5200:-D__mcf5200__ -D__mcf5200 } \
%{!mc68000:%{!m68000:%{!m68302:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68020-60:%{!m68060:%{!mcpu32: %{!m68332:%{!m5200:%(cpp_cpu_default)}}}}}}}}}}}}}} \
%(cpp_subtarget) \
"
@@ -141,18 +143,15 @@ Unrecognized value in TARGET_CPU_DEFAULT.
#undef ASM_SPEC
#define ASM_SPEC "\
%{m68851}%{mno-68851}%{m68881}%{mno-68881}%{msoft-float:-mno-68881 } \
%{m68000}%{mc68000}%{m68010}%{m68020}%{mc68020}%{m68030}%{m68040}%{m68020-40:-mc68040}%{m68060}%{m68302}%{m68332}%{m5200} \
%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68060:%{!m68302:%{!m68332:%{!m5200:%(asm_cpu_default)}}}}}}}}}}}} \
%{m68851}%{mno-68851}%{m68881}%{mno-68881}%{msoft-float:-mno-68881 }%{m68000}%{m68302}%{mc68000}%{m68010}%{m68020}%{mc68020}%{m68030}%{m68040}%{m68020-40:-mc68040 }%{m68020-60:-mc68040 }%{m68060}%{mcpu32}%{m68332}%{m5200}%{!mc68000:%{!m68000:%{!m68302:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68020-60:%{!m68060:%{!mcpu32:%{!m68332:%{!m5200:%(asm_cpu_default) }}}}}}}}}}}}}} \
"
/* cc1/cc1plus always receives all the -m flags. If the specs strings above
are consistent with the TARGET_OPTIONS flags in m68k.h, there should be no
need for any further cc1/cc1plus specs. */
#undef CC1_SPEC
#define CC1_SPEC "\
%{m68000:%{!m68881:-msoft-float }}%{m68302:-m68000 }%{m68332:-m68020 -mnobitfield %{!m68881:-msoft-float }} \
"
/* ??? Is this needed?
%{!m68000:%{!mc68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:%(cc1_cpu_default)}}}}}}}}}}
*/
#define CC1_SPEC ""
/* This macro defines names of additional specifications to put in the specs
that can be used in various specifications like CC1_SPEC. Its definition

View File

@@ -165,17 +165,18 @@ extern int target_flags;
{ "68060", - (MASK_5200|MASK_68040)}, \
{ "68060", (MASK_68020|MASK_68881|MASK_BITFIELD \
|MASK_68040_ONLY|MASK_68060)}, \
{ "5200", - (MASK_68060|MASK_68040|MASK_68020|MASK_BITFIELD|MASK_68881)}, \
{ "5200", - (MASK_68060|MASK_68040|MASK_68020|MASK_BITFIELD \
|MASK_68881)}, \
{ "5200", (MASK_5200)}, \
{ "68851", 0}, \
{ "no-68851", 0}, \
{ "68302", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|MASK_68020|MASK_BITFIELD|MASK_68881)}, \
{ "68332", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|MASK_BITFIELD)}, \
|MASK_BITFIELD|MASK_68881)}, \
{ "68332", MASK_68020}, \
{ "cpu32", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|MASK_BITFIELD)}, \
|MASK_BITFIELD|MASK_68881)}, \
{ "cpu32", MASK_68020}, \
{ "align-int", MASK_ALIGN_INT }, \
{ "no-align-int", -MASK_ALIGN_INT }, \
@@ -1040,7 +1041,7 @@ while(0)
|| defined(__mc68020__) || defined(mc68020) \
|| defined(__mc68030__) || defined(mc68030) \
|| defined(__mc68040__) || defined(mc68040) \
|| defined(__mc68332__) || defined(mc68332)
|| defined(__mcpu32__) || defined(mcpu32)
#define MACHINE_STATE_m68010_up
#endif

View File

@@ -184,6 +184,9 @@ Boston, MA 02111-1307, USA. */
#undef ASCII_DATA_ASM_OP
#define ASCII_DATA_ASM_OP "byte"
#undef SET_ASM_OP
#define SET_ASM_OP "set"
#endif /* USE_GAS */
#ifdef USE_GLD
@@ -353,7 +356,7 @@ dtors_section () \
#undef ASM_BYTE
#define ASM_BYTE ".byte"
#undef ASM_BYTE_OP
#define ASM_BYTE_OP "\t.byte"
#define ASM_BYTE_OP ".byte"
#else
#undef ASM_LONG
#define ASM_LONG "long"
@@ -364,7 +367,7 @@ dtors_section () \
#undef ASM_BYTE
#define ASM_BYTE "byte"
#undef ASM_BYTE_OP
#define ASM_BYTE_OP "\tbyte"
#define ASM_BYTE_OP "byte"
#endif /* USE_GAS */
/* The sysV68 as doesn't know about double's and float's. */
@@ -473,7 +476,7 @@ do { long l; \
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { register int sp = 0, lp = 0; \
fprintf ((FILE), "%s\t", ASM_BYTE_OP); \
fprintf ((FILE), "\t%s\t", ASM_BYTE_OP); \
loop: \
if ((PTR)[sp] > ' ' && ! ((PTR)[sp] & 0x80) && (PTR)[sp] != '\\') \
{ lp += 3; \

View File

@@ -56,3 +56,8 @@
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Until they use ELF or something that handles dwarf2 unwinds
and initialization stuff better. */
#define DWARF2_UNWIND_INFO 0

View File

@@ -15,10 +15,10 @@ xfgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
echo '#define EXTFLOAT' > xfgnulib.c
cat $(srcdir)/config/m68k/fpgnulib.c >> xfgnulib.c
MULTILIB_OPTIONS = m68000/m68020/m5200 m68881/msoft-float
MULTILIB_OPTIONS = m68000/m68020/m5200/mcpu32 m68881/msoft-float
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
MULTILIB_EXCEPTIONS = *m5200/*m68881 *m5200/*msoft-float
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m68020=mc68020 m68020=m68040 m68020=m68060
MULTILIB_EXCEPTIONS = m68000/msoft-float m5200/m68881 m5200/msoft-float mcpu32/m68881 mcpu32/msoft-float
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib

View File

@@ -3,7 +3,7 @@ CC=cc -traditional-cpp
OLDCC=CC -traditional-cpp
# Specify other dirs of system header files to be fixed.
OTHER_FIXINCLUDES_DIRS= /LocalDeveloper/Headers
OTHER_FIXINCLUDES_DIRS= /LocalDeveloper/Headers /NextDeveloper/Headers
# <limits.h> is sometimes in /usr/include/ansi/limits.h.
LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h -o -f $(SYSTEM_HEADER_DIR)/ansi/limits.h ]

View File

@@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */
(TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
#ifndef VERSION_INFO2
#define VERSION_INFO2 "$Revision: 1.24 $"
#define VERSION_INFO2 "$Revision: 1.1.1.1 $"
#endif
#ifndef NO_BUGS
#define AS_BUG_IMMEDIATE_LABEL
@@ -137,13 +137,13 @@ Boston, MA 02111-1307, USA. */
#define ASM_CPU_SPEC "\
%{v:-V}\
%{g:\
%{mno-legend:-Wc,off}\
%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
%{traditional:,-lc}\
%{!traditional:,-lansi-c}\
%{mstandard:,-keep-std}\
%{mexternal-legend:,-external}\
%{mocs-frame-position:,-ocs}}}"
%{mno-legend:-Wc,off}\
%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
%{traditional:,-lc}\
%{!traditional:,-lansi-c}\
%{mstandard:,-keep-std}\
%{mexternal-legend:,-external}\
%{mocs-frame-position:,-ocs}}}"
#define CPP_CPU_SPEC "\
%{!m88000:%{!m88100:%{m88110:-D__m88110__}}} \

View File

@@ -213,8 +213,24 @@ extern struct rtx_def *mips_function_value ();
(mips_abi == ABI_EABI && (NAMED) \
&& FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED))
/* Define LONG_MAX correctly for all users. We need to handle 32 bit EABI,
64 bit EABI, N32, and N64 as possible defaults. The checks performed here
are the same as the checks in override_options in mips.c that determines
whether MASK_LONG64 will be set.
This does not handle inappropriate options or ununusal option
combinations. */
#undef LONG_MAX_SPEC
#define LONG_MAX_SPEC "%{!mno-long64:-D__LONG_MAX__=9223372036854775807LL}"
#if ((MIPS_ABI_DEFAULT == ABI_64) || ((MIPS_ABI_DEFAULT == ABI_EABI) && ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_64BIT)))
#define LONG_MAX_SPEC \
"%{!mabi=n32:%{!mno-long64:%{!mgp32:-D__LONG_MAX__=9223372036854775807L}}}"
#else
#define LONG_MAX_SPEC \
"%{mabi=64:-D__LONG_MAX__=9223372036854775807L} \
%{mlong64:-D__LONG_MAX__=9223372036854775807L} \
%{mgp64:-D__LONG_MAX__=9223372036854775807L}"
#endif
/* ??? Unimplemented stuff follows. */

View File

@@ -122,6 +122,9 @@ Boston, MA 02111-1307, USA. */
#undef SDB_DEBUGGING_INFO
#undef MIPS_DEBUGGING_INFO
/* Likewise, the assembler doesn't handle DWARF2 directives. */
#define DWARF2_UNWIND_INFO 0
#undef MACHINE_TYPE
#define MACHINE_TYPE "SGI running IRIX 5.x"

View File

@@ -7,6 +7,10 @@
#define SDB_DEBUGGING_INFO
#define MIPS_DEBUGGING_INFO
/* GNU as does handle DWARF2 directives. */
#undef DWARF2_UNWIND_INFO
#define DWARF2_UNWIND_INFO 1
/* Irix 5 does not have some strange restrictions that Irix 3 had. */
#undef SET_FILE_NUMBER
#define SET_FILE_NUMBER() ++num_source_filenames

View File

@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. Iris version 6.
Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -542,5 +542,5 @@ do { \
%{!static: \
%{!shared: %{!non_shared: %{!call_shared: -call_shared -no_unresolved}}}} \
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__} \
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__,__frame_dummy} \
-_SYSTYPE_SVR4 %{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64} %{!mabi*: -n32}"

View File

@@ -193,9 +193,9 @@ enum processor_type mips_cpu;
int mips_isa;
#ifdef MIPS_ABI_DEFAULT
/* which ABI to use. This is defined to a constant in mips.h if the target
/* Which ABI to use. This is defined to a constant in mips.h if the target
doesn't support multiple ABIs. */
enum mips_abi_type mips_abi;
int mips_abi;
#endif
/* Strings to hold which cpu and instruction set architecture to use. */
@@ -5008,9 +5008,32 @@ save_restore_insns (store_p, large_reg, large_offset, file)
base_offset = gp_offset;
if (file == (FILE *)0)
{
insn = emit_move_insn (base_reg_rtx, GEN_INT (gp_offset));
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
rtx gp_offset_rtx = GEN_INT (gp_offset);
/* Instruction splitting doesn't preserve the RTX_FRAME_RELATED_P
bit, so make sure that we don't emit anything that can be
split. */
/* ??? There is no DImode ori immediate pattern, so we can only
do this for 32 bit code. */
if (large_int (gp_offset_rtx)
&& GET_MODE (base_reg_rtx) == SImode)
{
insn = emit_move_insn (base_reg_rtx,
GEN_INT (gp_offset & 0xffff0000));
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
insn = emit_insn (gen_iorsi3 (base_reg_rtx, base_reg_rtx,
GEN_INT (gp_offset & 0x0000ffff)));
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
}
else
{
insn = emit_move_insn (base_reg_rtx, gp_offset_rtx);
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
}
if (TARGET_LONG64)
insn = emit_insn (gen_adddi3 (base_reg_rtx, base_reg_rtx, stack_pointer_rtx));
else
@@ -5128,7 +5151,32 @@ save_restore_insns (store_p, large_reg, large_offset, file)
base_offset = fp_offset;
if (file == (FILE *)0)
{
insn = emit_move_insn (base_reg_rtx, GEN_INT (fp_offset));
rtx fp_offset_rtx = GEN_INT (fp_offset);
/* Instruction splitting doesn't preserve the RTX_FRAME_RELATED_P
bit, so make sure that we don't emit anything that can be
split. */
/* ??? There is no DImode ori immediate pattern, so we can only
do this for 32 bit code. */
if (large_int (fp_offset_rtx)
&& GET_MODE (base_reg_rtx) == SImode)
{
insn = emit_move_insn (base_reg_rtx,
GEN_INT (fp_offset & 0xffff0000));
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
insn = emit_insn (gen_iorsi3 (base_reg_rtx, base_reg_rtx,
GEN_INT (fp_offset & 0x0000ffff)));
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
}
else
{
insn = emit_move_insn (base_reg_rtx, fp_offset_rtx);
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
}
if (store_p)
RTX_FRAME_RELATED_P (insn) = 1;
if (TARGET_LONG64)
@@ -5579,6 +5627,13 @@ mips_expand_epilogue ()
else
emit_insn (gen_movsi (stack_pointer_rtx, frame_pointer_rtx));
}
/* The GP/PIC register is implicitly used by all SYMBOL_REFs, so if we
are going to restore it, then we must emit a blockage insn to
prevent the scheduler from moving the restore out of the epilogue. */
else if (TARGET_ABICALLS && mips_abi != ABI_32
&& (current_frame_info.mask
& (1L << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))))
emit_insn (gen_blockage ());
save_restore_insns (FALSE, tmp_rtx, tsize, (FILE *)0);

View File

@@ -77,21 +77,20 @@ enum processor_type {
/* Recast the cpu class to be the cpu attribute. */
#define mips_cpu_attr ((enum attr_cpu)mips_cpu)
/* Which ABI to use. This is only used by the Irix 6 port currently. */
/* Which ABI to use. These are constants because abi64.h must check their
value at preprocessing time. */
enum mips_abi_type {
ABI_32,
ABI_N32,
ABI_64,
ABI_EABI
};
#define ABI_32 0
#define ABI_N32 1
#define ABI_64 2
#define ABI_EABI 3
#ifndef MIPS_ABI_DEFAULT
/* We define this away so that there is no extra runtime cost if the target
doesn't support multiple ABIs. */
#define mips_abi ABI_32
#else
extern enum mips_abi_type mips_abi;
extern int mips_abi;
#endif
/* Whether to emit abicalls code sequences or not. */
@@ -2519,14 +2518,6 @@ typedef struct mips_args {
register enum rtx_code code0 = GET_CODE (xplus0); \
register enum rtx_code code1 = GET_CODE (xplus1); \
\
if (code0 != REG && code1 == REG) \
{ \
xplus0 = XEXP (xinsn, 1); \
xplus1 = XEXP (xinsn, 0); \
code0 = GET_CODE (xplus0); \
code1 = GET_CODE (xplus1); \
} \
\
if (code0 == REG && REG_OK_FOR_BASE_P (xplus0)) \
{ \
if (code1 == CONST_INT \

View File

@@ -2731,11 +2731,17 @@ move\\t%0,%z4\\n\\
;; operand zero, because then the address in the move instruction will be
;; clobbered. We mark the scratch register as early clobbered to prevent this.
;; We need the ?X in alternative 1 so that it will be choosen only if the
;; destination is a floating point register. Otherwise, alternative 1 can
;; have lower cost than alternative 0 (because there is one less loser), and
;; can be choosen when it won't work (because integral reloads into FP
;; registers are not supported).
(define_insn "fix_truncdfsi2"
[(set (match_operand:SI 0 "general_operand" "=d,*f,R,o")
(fix:SI (match_operand:DF 1 "register_operand" "f,*f,f,f")))
(clobber (match_scratch:SI 2 "=d,*d,&d,&d"))
(clobber (match_scratch:DF 3 "=f,*X,f,f"))]
(clobber (match_scratch:DF 3 "=f,?*X,f,f"))]
"TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT"
"*
{
@@ -2760,7 +2766,7 @@ move\\t%0,%z4\\n\\
[(set (match_operand:SI 0 "general_operand" "=d,*f,R,o")
(fix:SI (match_operand:SF 1 "register_operand" "f,*f,f,f")))
(clobber (match_scratch:SI 2 "=d,*d,&d,&d"))
(clobber (match_scratch:SF 3 "=f,*X,f,f"))]
(clobber (match_scratch:SF 3 "=f,?*X,f,f"))]
"TARGET_HARD_FLOAT"
"*
{
@@ -2793,7 +2799,7 @@ move\\t%0,%z4\\n\\
(define_insn "fix_truncdfdi2"
[(set (match_operand:DI 0 "general_operand" "=d,*f,R,o")
(fix:DI (match_operand:DF 1 "register_operand" "f,*f,f,f")))
(clobber (match_scratch:DF 2 "=f,*X,f,f"))]
(clobber (match_scratch:DF 2 "=f,?*X,f,f"))]
"TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT"
"*
{
@@ -2820,7 +2826,7 @@ move\\t%0,%z4\\n\\
(define_insn "fix_truncsfdi2"
[(set (match_operand:DI 0 "general_operand" "=d,*f,R,o")
(fix:DI (match_operand:SF 1 "register_operand" "f,*f,f,f")))
(clobber (match_scratch:DF 2 "=f,*X,f,f"))]
(clobber (match_scratch:DF 2 "=f,?*X,f,f"))]
"TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT"
"*
{

View File

@@ -1,71 +0,0 @@
/* Definitions of MIPS sub target machine for GNU compiler.
Toshiba r3900. You should include mips.h after this.
Copyright (C) 1989, 90-6, 1997 Free Software Foundation, Inc.
Contributed by Gavin Koch (gavin@cygnus.com).
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#define SUBTARGET_CPP_SPEC "\
%{!mabi=32: %{!mabi=n32: %{!mabi=64: -D__mips_eabi}}} \
%{!msingle-float:-D__mips_soft_float} \
%{mhard-float:%e-mhard-float not supported.} \
%{msingle-float:%{msoft-float: \
%e-msingle-float and -msoft-float can not both be specified.}}"
/* The following is needed because -mips3 and -mips4 set gp64 which in
combination with abi=eabi, causes long64 to be set. */
#define SUBTARGET_CPP_SIZE_SPEC "\
%{mips3:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \
%{mips4:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \
%{!mips3:%{!mips4:%{!m4650:\
-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}} "
/* by default (if not mips-something-else) produce code for the r3900 */
#define SUBTARGET_CC1_SPEC "\
%{mhard-float:%e-mhard-float not supported.} \
%{msingle-float:%{msoft-float: \
%e-msingle-float and -msoft-float can not both be specified.}}"
#define TARGET_DEFAULT (MASK_SOFT_FLOAT | MASK_MIPS3900)
#define MIPS_CPU_STRING_DEFAULT "R3900"
#define MIPS_ISA_DEFAULT 1
#define MULTILIB_DEFAULTS { "EB", "mips1", "msoft-float" }
/* We use the MIPS EABI by default. */
#define MIPS_ABI_DEFAULT ABI_EABI
/* Debugging */
#define DWARF2_DEBUGGING_INFO
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* For the 'preferred' cases ("gN" and "ggdbN") we need to tell the
gnu assembler "dwarf-2" */
#define SUBTARGET_ASM_DEBUGGING_SPEC "\
%{!mmips-as: \
%{g:-gdwarf-2} %{g0:-gdwarf-2} %{g1:-gdwarf-2} %{g2:-gdwarf-2} %{g3:-gdwarf-2} \
%{ggdb:-gdwarf-2} %{ggdb0:-gdwarf-2} %{ggdb1:-gdwarf-2} %{ggdb2:-gdwarf-2} %{ggdb3:-gdwarf-2} \
%{gdwarf-2*:-gdwarf-2}} \
%{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \
%{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \
%{gcoff:-g} %{gcoff0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}"

View File

@@ -25,4 +25,4 @@ CLIB = -lmld -lmalloc
ALLOCA = alloca.o
# Find all of the declarations from the header files
FIXPROTO_DEFINES= -D__EXTENSIONS__ -D_LANGUAGE_C_PLUS_PLUS
FIXPROTO_DEFINES= -D__EXTENSIONS__ -D_SGI_SOURCE -D_LANGUAGE_C_PLUS_PLUS

View File

@@ -105,3 +105,8 @@ Boston, MA 02111-1307, USA.
#undef PCC_STATIC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Until they use ELF or something that handles dwarf2 unwinds
and initialization stuff better. */
#define DWARF2_UNWIND_INFO 0

View File

@@ -69,3 +69,6 @@ do { \
#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
#endif
/* hpux10 has the new HP assembler. It's still lousy, but it's a whole lot
better than the assembler shipped with older versions of hpux. */
#define NEW_HP_ASSEMBLER

View File

@@ -1244,8 +1244,12 @@ emit_move_sequence (operands, mode, scratch_reg)
}
}
/* Simplify the source if we need to. */
/* Simplify the source if we need to.
Note we do have to handle function labels here, even though we do
not consider them legitimate constants. Loop optimizations can
call the emit_move_xxx with one as a source. */
if ((GET_CODE (operand1) != HIGH && immediate_operand (operand1, mode))
|| function_label_operand (operand1, mode)
|| (GET_CODE (operand1) == HIGH
&& symbolic_operand (XEXP (operand1, 0), mode)))
{
@@ -1263,9 +1267,10 @@ emit_move_sequence (operands, mode, scratch_reg)
So we force the plabel into memory, load operand0 from
the memory location, then add in the constant part. */
if (GET_CODE (operand1) == CONST
&& GET_CODE (XEXP (operand1, 0)) == PLUS
&& function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
if ((GET_CODE (operand1) == CONST
&& GET_CODE (XEXP (operand1, 0)) == PLUS
&& function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
|| function_label_operand (operand1, mode))
{
rtx temp, const_part;
@@ -1275,13 +1280,25 @@ emit_move_sequence (operands, mode, scratch_reg)
else if (flag_pic)
scratch_reg = gen_reg_rtx (Pmode);
/* Save away the constant part of the expression. */
const_part = XEXP (XEXP (operand1, 0), 1);
if (GET_CODE (const_part) != CONST_INT)
abort ();
if (GET_CODE (operand1) == CONST)
{
/* Save away the constant part of the expression. */
const_part = XEXP (XEXP (operand1, 0), 1);
if (GET_CODE (const_part) != CONST_INT)
abort ();
/* Force the function label into memory. */
temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
/* Force the function label into memory. */
temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
}
else
{
/* No constant part. */
const_part = NULL_RTX;
/* Force the function label into memory. */
temp = force_const_mem (mode, operand1);
}
/* Get the address of the memory location. PIC-ify it if
necessary. */
@@ -1300,7 +1317,8 @@ emit_move_sequence (operands, mode, scratch_reg)
emit_move_sequence (operands, mode, scratch_reg);
/* And add back in the constant part. */
expand_inc (operand0, const_part);
if (const_part != NULL_RTX)
expand_inc (operand0, const_part);
return 1;
}

View File

@@ -1396,12 +1396,21 @@ extern struct rtx_def *hppa_builtin_saveregs ();
&& (reload_in_progress || reload_completed || ! symbolic_expression_p (X)))
/* Include all constant integers and constant doubles, but not
floating-point, except for floating-point zero. */
floating-point, except for floating-point zero.
Reject LABEL_REFs if we're not using gas or the new HP assembler. */
#ifdef NEW_HP_ASSEMBLER
#define LEGITIMATE_CONSTANT_P(X) \
((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \
|| (X) == CONST0_RTX (GET_MODE (X))) \
&& !function_label_operand (X, VOIDmode))
#else
#define LEGITIMATE_CONSTANT_P(X) \
((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \
|| (X) == CONST0_RTX (GET_MODE (X))) \
&& (GET_CODE (X) != LABEL_REF || TARGET_GAS)\
&& !function_label_operand (X, VOIDmode))
#endif
/* Subroutine for EXTRA_CONSTRAINT.

View File

@@ -1,6 +1,5 @@
;;- Machine description for HP PA-RISC architecture for GNU C compiler
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997
;; Free Software Foundation, Inc.
;; Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
;; Contributed by the Center for Software Science at the University
;; of Utah.
@@ -1432,7 +1431,7 @@
(define_insn "pre_ldwm"
[(set (match_operand:SI 0 "register_operand" "=r")
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "=r")
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "pre_cint_operand" ""))))
(set (match_dup 1)
(plus:SI (match_dup 1) (match_dup 2)))]
@@ -1447,7 +1446,7 @@
(set_attr "length" "4")])
(define_insn "pre_stwm"
[(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "=r")
[(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "+r")
(match_operand:SI 1 "pre_cint_operand" "")))
(match_operand:SI 2 "reg_or_0_operand" "rM"))
(set (match_dup 0)
@@ -1464,7 +1463,7 @@
(define_insn "post_ldwm"
[(set (match_operand:SI 0 "register_operand" "=r")
(mem:SI (match_operand:SI 1 "register_operand" "=r")))
(mem:SI (match_operand:SI 1 "register_operand" "+r")))
(set (match_dup 1)
(plus:SI (match_dup 1)
(match_operand:SI 2 "post_cint_operand" "")))]
@@ -1479,7 +1478,7 @@
(set_attr "length" "4")])
(define_insn "post_stwm"
[(set (mem:SI (match_operand:SI 0 "register_operand" "=r"))
[(set (mem:SI (match_operand:SI 0 "register_operand" "+r"))
(match_operand:SI 1 "reg_or_0_operand" "rM"))
(set (match_dup 0)
(plus:SI (match_dup 0)
@@ -1808,7 +1807,7 @@
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
(mem:HI (plus:SI (match_operand:SI 1 "register_operand" "=r")
(mem:HI (plus:SI (match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "int5_operand" "L"))))
(set (match_dup 1)
(plus:SI (match_dup 1) (match_dup 2)))]
@@ -1822,7 +1821,7 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(zero_extend:SI (mem:HI
(plus:SI
(match_operand:SI 1 "register_operand" "=r")
(match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "int5_operand" "L")))))
(set (match_dup 1)
(plus:SI (match_dup 1) (match_dup 2)))]
@@ -1832,7 +1831,7 @@
(set_attr "length" "4")])
(define_insn ""
[(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "=r")
[(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "+r")
(match_operand:SI 1 "int5_operand" "L")))
(match_operand:HI 2 "reg_or_0_operand" "rM"))
(set (match_dup 0)
@@ -2012,7 +2011,7 @@
(define_insn ""
[(set (match_operand:QI 0 "register_operand" "=r")
(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "=r")
(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "int5_operand" "L"))))
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
""
@@ -2024,7 +2023,7 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(zero_extend:SI (mem:QI (plus:SI
(match_operand:SI 1 "register_operand" "=r")
(match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "int5_operand" "L")))))
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
""
@@ -2035,7 +2034,7 @@
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r")
(zero_extend:HI (mem:QI (plus:SI
(match_operand:SI 1 "register_operand" "=r")
(match_operand:SI 1 "register_operand" "+r")
(match_operand:SI 2 "int5_operand" "L")))))
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
""
@@ -2044,7 +2043,7 @@
(set_attr "length" "4")])
(define_insn ""
[(set (mem:QI (plus:SI (match_operand:SI 0 "register_operand" "=r")
[(set (mem:QI (plus:SI (match_operand:SI 0 "register_operand" "+r")
(match_operand:SI 1 "int5_operand" "L")))
(match_operand:QI 2 "reg_or_0_operand" "rM"))
(set (match_dup 0)

View File

@@ -36,6 +36,37 @@ Boston, MA 02111-1307, USA. */
#undef ASM_SPEC
#define ASM_SPEC "-u %(asm_cpu)"
/* Common ASM definitions used by ASM_SPEC amonst the various targets
for handling -mcpu=xxx switches. */
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC \
"%{!mcpu*: \
%{mpower: %{!mpower2: -mpwr}} \
%{mpower2: -mpwr2} \
%{mpowerpc*: -mppc} \
%{mno-power: %{!mpowerpc*: -mcom}} \
%{!mno-power: %{!mpower2: %(asm_default)}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwr2} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwr2} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -m603} \
%{mcpu=603e: -m603} \
%{mcpu=604: -m604} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_AIX41 \
-Asystem(unix) -Asystem(aix)"

View File

@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for IBM RS/6000 running AIX version 3.1.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
Contributed by Michael Meissner (meissner@cygnus.com).
This file is part of GNU CC.
@@ -23,12 +23,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-DPPC -Dunix -Dlinux -Dpowerpc -Asystem(unix) -Asystem(linux) -Acpu(powerpc) -Amachine(powerpc)"
"-DPPC -D__ELF__ -Dunix -Dlinux -Dpowerpc -Asystem(unix) -Asystem(linux) -Acpu(powerpc) -Amachine(powerpc)"
#undef LINK_SPEC
#define LINK_SPEC "-m elf32ppc %{shared:-shared} \
%{!shared: \
%{!static: %{rdynamic:-export-dynamic}} \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{static:-static}}"
#undef LIB_DEFAULT_SPEC
@@ -62,4 +64,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define MULTILIB_DEFAULTS { "mbig", "mcall-linux" }
#undef DEFAULT_VTABLE_THUNKS
#ifndef USE_GNULIBC_1
#define DEFAULT_VTABLE_THUNKS 1
#endif

Some files were not shown because too many files have changed in this diff Show More