* c-decl.c (finish_function): Warn about a non-void function with
no return statement and no abnormal exit.
(current_function_returns_abnormally): New variable.
(start_function): Clear it.
(struct c_language_function): Add returns_abnormally.
(push_c_function_context): Save it.
(pop_c_function_context): Restore it.
(builtin_function): Set TREE_THIS_VOLATILE on return fns.
(grokdeclarator): Set C_FUNCTION_IMPLICIT_INT on functions without
an explicit return type.
* c-tree.h: Declare current_function_returns_abnormally.
(C_FUNCTION_IMPLICIT_INT): New macro.
* c-typeck.c (build_function_call): Set it.
(c_expand_return): Set current_function_returns_value even if the
value is erroneous.
From-SVN: r49551
PR c/5482:
* c-common.c (c_expand_expr) [STMT_EXPR]: If last expression is not
EXPR_STMT, but COMPOUND_STMT, recurse into it.
* gcc.c-torture/execute/20020206-1.c: New test.
From-SVN: r49549
* acinclude.m4: Add C++ linkage check for strtof.
* aclocal.m4: Rebuilt.
* config.h.in: Rebuilt.
* configure: Rebuilt.
* config/locale/c_locale_generic.cc: Conditionally include
<ieeefp.h>. Improve handling and error checking of float
and long double input for non-C99 configurations.
From-SVN: r49546
2002-02-06 Paolo Carlini <pcarlini@unitus.it>
* include/bits/locale_facets.tcc (money_get::do_get(string)):
In case money_base::symbol deal properly with multi-char sign
for patterns {X,Y,Z,symbol} and {X,Y,symbol,none}.
* testsuite/22_locale/money_get_members_char.cc: Add test07.
* testsuite/22_locale/money_get_members_wchar_t.cc: Add test07.
From-SVN: r49543
* config/mmix/mmix.c (mmix_conditional_register_usage): if
-mabi=gnu, modify fixed_regs to fit the GNU ABI.
(mmix_extra_constraint): Use 'R' to indicate that GETA should be
used to read the rtx value.
(mmix_target_asm_function_epilogue): Fix spacing.
(mmix_constant_address_p): Handle TARGET_BASE_ADDRESSES.
(mmix_legitimate_address): Ditto.
(mmix_encode_section_info): Set SYMBOL_REF_FLAG on rtx:es that
should be loaded with a GETA insn. Don't allocate needless extra
char for nul termination and fix misleading comment.
(mmix_print_operand_address): Handle constants if
TARGET_BASE_ADDRESSES.
(mmix_output_register_setting): Use base addressing if
TARGET_BASE_ADDRESSES and the number of insns is 3.
* config/mmix/t-mmix (MULTILIB_EXTRA_OPTS): New.
* config/mmix/mmix.md ("movdi"): Change the alternative with GETA
to use R as constraint, add LDA to match s.
* config/mmix/mmix.h (TARGET_BASE_ADDRESSES): New.
(TARGET_DEFAULT): Add TARGET_MASK_BASE_ADDRESSES.
(TARGET_SWITCHES): Add -mbase-addresses, -mno-base-addresses.
(FIXED_REGISTERS): Make registers $231..$246 fixed by default.
(MMIX_MMIXWARE_ABI_REG_ALLOC_ORDER): Move $231..$246 last, in
order with other fixed registers.
(MMIX_GNU_ABI_REG_ALLOC_ORDER): Put forward $231, in order with
other parameter/call-clobbered registers.
* doc/invoke.texi (Option Summary) <MMIX Options>: Add
-mbase-addresses, -mno-base-addresses.
(MMIX Options): Ditto.
From-SVN: r49536
2002-02-05 Eric Christopher <echristo@redhat.com>
* config/mips/crti.asm: Add changes for mips16. mips16 uses
register 7 as RA instead of $31.
* config/mips/crtn.asm: Ditto.
* config/mips/mips.c (mips_move_2words): Add case for
TARGET_MIPS16 when HOST_BITS_PER_WIDE_INT >= 64.
(compute_frame_size): Fix typo.
(save_restore_insns): Ditto. Make documentation about using
register $7 as return register more precise.
(mips_expand_epilogue): Fix comment. Add code to work around not
being able to add to the stack pointer directly.
* config/mips/mips.h (EH_RETURN_DATA_REGNO): Change register number
to 2 for TARGET_MIPS16 as we need 6 and 7 as clobbers in the
epilogue.
From-SVN: r49535
* class.c: Include target.h.
(check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
bit-field layout.
* Make-lang.in: Adjust deps.
From-SVN: r49527
2002-02-05 Paolo Carlini <pcarlini@unitus.it>
* include/bits/locale_facets.tcc (money_get::do_get(string)):
First construct a tentative returned string, then, only if the
parsing succeeds, copy it into the string passed by reference.
* testsuite/22_locale/money_get_members_char.cc: Add test06.
* testsuite/22_locale/money_get_members_wchar_t.cc: Add test06.
From-SVN: r49523
2002-02-04 Adam Megacz <adam@xwt.org>
* win32.cc: Created it.
configure.in: Added PLATFORM_SPECIFIC_SOURCES,
which is set to posix.cc or win32.cc.
Makefile.am: Updated it to use $(PLATFORM_SPECIFIC_SOURCES).
From-SVN: r49509
* c-common.def (SWITCH_STMT): Add SWITCH_TYPE operand.
* c-common.h (SWITCH_TYPE): Define.
* c-typeck.c (c_start_case): Set SWITCH_TYPE.
* stmt.c (all_cases_count): Set lastval to thisval at end of loop.
Rename spareness variable to sparseness.
(expand_end_case_type): Renamed from expand_end_case, use orig_type
if non-NULL instead of TREE_TYPE (orig_index).
* tree.h (expand_end_case_type): Renamed from expand_end_case.
(expand_end_case): Define using expand_end_case_type.
* c-semantics.c (genrtl_switch_stmt): Pass SWITCH_TYPE
to expand_end_case_type.
* doc/c-tree.texi (SWITCH_STMT): Document SWITCH_TYPE.
* semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
(finish_switch_cond): Set SWITCH_TYPE.
* gcc.dg/Wswitch.c: Fix typos. Don't return unconditionally
before all tests. Move warning one line above to match where it
C frontend emits.
* gcc.dg/Wswitch-2.c: New test.
* g++.dg/warn/Wswitch-1.C: New test.
* g++.dg/warn/Wswitch-2.C: New test.
From-SVN: r49497