* diagnostic.c (trim_filename, fancy_abort): Moved here from
rtl.c.
(fatal_function, set_fatal_function): Removed.
(fatal): Don't prepare for or call the fatal_function.
(diagnostic_lock, error_recursion): New.
(diagnostic_for_decl, report_diagnostic): Guard against
re-entering the error reporting routines.
(fancy_abort): Assume function is not NULL.
* errors.c (fancy_abort): New. Assume function is not NULL.
* tradcpp.c (fancy_abort): Assume function is not NULL.
* system.h: Provide default definition of __FUNCTION__.
* rtl.h: Use __FUNCTION__ not __PRETTY_FUNCTION__ throughout.
Always use __FUNCTION__ in definition of abort.
* tree.h: Likewise.
* varray.h: Likewise.
* toplev.h: Likewise. Don't prototype set_fatal_function.
From-SVN: r35170
* cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
Define my_friendly_assert and my_friendly_abort as macros
which may call friendly_abort. Prototype friendly abort, not
my_friendly_abort or my_friendly_assert.
* decl.c (signal_catch): Report the signal caught in the error
message. Call fatal directly.
* typeck2.c (ack, my_friendly_assert): Delete.
(my_friendly_abort): Rename to friendly_abort. Expect file,
line, and function parameters. Report the abort code, then
call fancy_abort. Do not mask an abort if errors have
already occurred.
* g++.old-deja/g++.brendan/crash16.C,
g++.old-deja/g++.brendan/parse3.C,
g++.old-deja/g++.brendan/redecl1.C,
g++.old-deja/g++.ns/template13.C,
g++.old-deja/g++.other/decl4.C,
g++.old-deja/g++.pt/spec14.C: Mark as crash test, expected to fail.
From-SVN: r35169
2000-07-20 Jakub Jelinek <jakub@redhat.com>
* config/cpu/sparc/sparc64/bits/atomicity.h (__exchange_and_add):
Use extended word instructions to match 64bit _Atomic_word.
(__atomic_add): Likewise.
* math/clog10l.c (clog10l): Use M_PIl if defined.
* math/c_logl.c (c_logl): Likewise.
* math/signbitl.c (__signbitl): Adapt for IEEE quad long doubles.
* math/mathconf.h (ieee_quad_double_shape_type): New type.
(GET_LDOUBLE_MSW64): New define.
From-SVN: r35166
* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): All
constants of size no larger than a pointer should go in the TOC.
Add 'MODE' parameter.
(LEGITIMIZE_RELOAD_ADDRESS): Add MODE parameter to
ASM_OUTPUT_SPECIAL_POOL_ENTRY_P.
(ASM_OUTPUT_SPECIAL_POOL_ENTRY): Likewise.
* config/rs6000/aix.h (SELECT_RTX_SECTION): Likewise.
* config/rs6000/netware.h (SELECT_RTX_SECTION): Likewise.
* config/rs6000/rs6000.c (constant_pool_expr_1): Likewise.
(rs6000_legitimize_address): Likewise.
(rs6000_emit_move): Likewise.
(rs6000_select_rtx_section): Likewise.
(output_toc): Deal properly with outputting small constants like
HImode, and SFmode in 32-bit mode, and DFmode in 64-bit mode.
* config/rs6000/sysv4.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Add
MODE parameter. Put small constants in the TOC.
* config/rs6000/rs6000.c (easy_fp_constant_p): All constants are
easy in SImode.
(rs6000_emit_move): When reload calls us with an illegitimate
address, exit early. Move the change_address calls to one place
at the end of the routine. Merge the SImode and DImode expanders.
When called by reload to put an integer into a FP register, force
it to memory.
* config/rs6000/rs6000.c (struct toc_hash_struct): Add 'key_mode'
field.
(rs6000_hash_constant): Hash mode too.
(toc_hash_function): Allow for key_mode.
(toc_hash_eq): Structures are different if key_mode differs.
(output_toc): Add 'mode' parameter. Save key_mode.
* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY):
Pass 'mode' parameter.
* config/rs6000/rs6000-protos.h (output_toc): Add 'mode' param.
From-SVN: r35164
* gcse.c (record_one_set): Prepend instead of append onto
reg_set_table, making it O(n) instead O(n^2).
* lcm.c (compute_antinout_edge,compute_laterin,compute_available):
Use a queue instead of a stack as worklist.
From-SVN: r35158
* h8300.c (two_insn_adds_subs_operand): Fix a typo.
* h8300.h (OK_FOR_T): New.
(EXTRA_CONSTRAINT): Support OK_FOR_T.
* h8300.md: Use inc/dec.[wl] for increment/decrement
by 1 and 2 in HI and SI modes.
From-SVN: r35155
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Only
initialize String fields for interpreted classes. Fixes bug
reported by Hans Boehm.
From-SVN: r35150
* cppmacro.c (CAN_PASTE_AFTER): New macro.
(count_params): Don't set GNU_REST_ARGS on anything.
(save_expansion): Set PASTE_LEFT only on tokens for which
CAN_PASTE_AFTER is true, or which are named operators.
* cpplex.c (parse_args): Distinguish between a rest argument
given one empty argument, and a rest argument given zero arguments.
(maybe_paste_with_next): Look for VOID_REST tag, and trigger
deletion of previous token based on that.
(get_raw_token): Flatten some control structure.
* cpplib.h (CPP_LAST_EQ): Correct.
(VOID_REST): New token flag.
(GNU_REST_ARGS): Delete.
* gcc.dg/cpp/20000625-2.c, gcc.dg/cpp/macsyntx.c: Update error
regexps.
* gcc.dg/cpp/paste6.c: New test.
From-SVN: r35146
2000-07-20 Zack Weinberg <zack@wolery.cumb.org>
* tradcpp.c (main): Don't munge -D options.
(make_definition): Bring -D handling in line with cpplib.
(do_define): Strip all leading whitespace from macro definitions.
2000-07-20 David Billinghurst <David.Billinghurst@riotinto.com.au>
* Makefile.in (tradcpp): Depend on intl.o and version.o.
From-SVN: r35145
* cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block
of operators allowed in #if and having an _EQ variant. Add
CPP_MIN_EQ, CPP_MAX_EQ, and CPP_DEFINED.
(cpp_token flags): Add NAMED_OP.
(enum node_type): Add T_OPERATOR.
(struct cpp_hashnode): Add code slot to value union.
* cpphash.h (spec_nodes): Remove n_defined.
* cpplex.c (lex_line): Convert T_OPERATOR nodes to their proper types.
(spell_token, can_paste, maybe_paste_with_next): Handle named operators.
(is_macro_disabled): Tweak error messages.
* cpplib.c (get_define_node): Disallow all named operators as
macro names. Tweak error messages.
(_cpp_init_stacks): Don't set up spec_nodes->n_defined.
* cppinit.c (builtin_array): Add entries for the named operators.
* cppexp.c (lex): Check for CPP_DEFINED token.
(priority table): Add entries for CPP_MIN and CPP_MAX.
(_cpp_parse_expr): Handle CPP_MIN and CPP_MAX.
testsuite:
* gcc.dg/cpp/directiv.c, gcc.dg/cpp/macsyntx.c,
gcc.dg/cpp/undef1.c: Tweak error regexps.
From-SVN: r35137
* cpplib.h (TTYPE_TABLE): Rearrange to use only two per-entry
macros, not five.
* cpphash.h (TOKEN_NAME): New macro.
(_cpp_spell_operator): Deleted.
(token_spellings): Now _cpp_token_spellings.
* cppexp.c: Use TOKEN_NAME or TYPE_NAME, not _cpp_spell_operator.
* cpplex.c: Use OP and TK macros when expanding the
TTYPE_TABLE. Eliminate token_names. For non-OPERATOR tokens,
store the stringification of the enumeration name (CPP_CHAR,
etc.) in the name slot of token_spellings.
Use TOKEN_NAME and/or TOKEN_SPELL, do not reference
token_spellings directly.
* cpplib.c: Use TOKEN_SPELL.
* cpplex.c (_cpp_push_token): If the token being pushed back
is the previous token in this context, just subtract one from
context->posn.
* cppmacro.c (save_expansion): Clear aux field when storing a
placemarker.
* gcc.dg/cpp/paste5.c: New test.
* gcc.dg/cpp/vararg1.c: New test.
From-SVN: r35124