2005-12-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25550
* io/file_pos.c (st_rewind): Reset bytes left so no error occurs in
next_record_r.
From-SVN: r109101
2005-12-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25419
* io/list_read.c (list_formatted_read_scalar): Allow comma to return a
null value (default).
From-SVN: r109099
* fold-const.c (int_const_binop): Return NULL_TREE when an expression
can't be evaluated at compile-time (instead of calling abort).
Return NULL_TREE for division (and modulus) by zero.
(const_binop): Return NULL_TREE for floating point operators that
aren't handled by real_arithmetic.
(fold_binary): Eliminate "wins" variable, and "binary" label, by
folding operators with constant operands early. Assert that
operands are non-NULL.
From-SVN: r109088
* gcc.dg/torture/fp-int-convert-timode.c: Don't test IBM
Extended Double long doubles or repeat tests when long double is
the same size as double.
From-SVN: r109087
gcc/
PR tree-optimization/25125
* convert.c (convert_to_integer): Don't narrow the type of a
PLUX_EXPR or MINUS_EXPR if !flag_wrapv and the unwidened type
is signed.
gcc/testsuite/
PR tree-optimization/25125
* gcc.dg/vect/vect-7.c, gcc.dg/vect/vect-reduc-2char.c,
gcc.dg/vect/vect-reduc-2short.c: XFAIL.
* gcc.c-torture/execute/pr25125.c: New.
From-SVN: r109065
* final.c (compute_alignments): Make it static.
* gcse.c (gcse_main, bypass_jumps): Likewise.
* web.c (web_main): Likewise.
* output.h: Remove the prototype for compute_alignments.
* rtl.h: Remove the prototypes for web_main, gcse_main, and
bypass_jumps.
From-SVN: r109051
2005-12-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25029
PR fortran/21256
* resolve.c (check_assumed_size_reference, resolve_assumed_size_actual):
Remove because of regressions caused by patch.
(resolve_function, resolve_call, resolve_variable): Remove assumed size
checks because of regressionscaused by patch.
PR fortran/25029
PR fortran/21256
* gfortran.dg/initialization_1.f90: Remove tests of intrinsic functions
with incorrect assumed size references.
From-SVN: r109039
PR c++/23171
* varasm.c (initializer_constant_valid_p): An ADDR_EXPR of a
CONSTRUCTOR is invalid.
PR c++/23171
* g++.dg/opt/init1.C: New test.
From-SVN: r109035
2005-12-23 Paolo Bonzini <bonzini@gnu.org>
* combine.c (simplify_shift_const): Fix typo. Use, whenever
applicable, simplify_const_binary_operation.
(simplify_shift_const): Leave only the fallback
case when no simplification is possible. Extract to...
(simplify_shift_const_1): ... here. Always create a new
RTX instead of substituting. Remove the signed_count variable.
Return NULL_RTX if no substitution is possible.
(simplify_and_const_int): Leave only the fallback
case when no simplification is possible. Extract to...
(simplify_and_const_int_1): ... here. Always create a new
RTX instead of substituting. Return NULL_RTX if no substitution
is possible.
(force_to_mode, simplify_comparison): Don't pass a non-NULL first
parameter to simplify_and_const_int and simplify_shift_const,
unless it is equal to the expected non-simplified result.
From-SVN: r109016
PR target/25005
* regrename.c (replace_oldest_value_reg): Use validate_change with
IN_GROUP set to 1 instead of doing direct modifications.
(copyprop_hardreg_forward_1): Likewise. If any replace_oldest_*
replacements have been performed on an instruction, use
apply_change_group ().
* g++.dg/opt/pr25005.C: New test.
From-SVN: r109013
2005-12-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25029
PR fortran/21256
*resolve.c(resolve_function): Remove assumed size checking for SIZE
and UBOUND and rely on their built-in checking.
2005-12-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25029
PR fortran/21256
*gfortran.dg/initialization_1.f90: Add test of SIZE.
From-SVN: r109009
Merge from gomp-branch.
* builtins.def: Move all DEF_SYNC_BUILTIN to ...
* sync-builtins.def: ... new file.
(BUILT_IN_FETCH_AND_ADD_16,
BUILT_IN_FETCH_AND_SUB_16, BUILT_IN_FETCH_AND_OR_16,
BUILT_IN_FETCH_AND_AND_16, BUILT_IN_FETCH_AND_XOR_16,
BUILT_IN_FETCH_AND_NAND_16, BUILT_IN_ADD_AND_FETCH_16,
BUILT_IN_SUB_AND_FETCH_16, BUILT_IN_OR_AND_FETCH_16,
BUILT_IN_AND_AND_FETCH_16, BUILT_IN_XOR_AND_FETCH_16,
BUILT_IN_NAND_AND_FETCH_16, BUILT_IN_BOOL_COMPARE_AND_SWAP_16,
BUILT_IN_VAL_COMPARE_AND_SWAP_16, BUILT_IN_LOCK_TEST_AND_SET_16,
BUILT_IN_LOCK_RELEASE_16): New builtins.
* builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
* builtins.c (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
* c-common.c (enum c_builtin_type): Move to top-level from
c_common_nodes_and_builtins enum builtin_type.
(builtin_types): Move from c_common_nodes_and_builtins.
(def_fn_type): New.
(c_common_nodes_and_builtins): Use it.
(def_builtin_1): Check for error_mark_node.
(sync_resolve_size): Handle also 128 bit sync builtins.
* Makefile.in (BUILTINS_DEF): New. Use it instead of builtins.def.
* config/i386/i386.h (x86_cmpxchg8b, x86_cmpxchg16b): New decls.
(TARGET_CMPXCHG8B, TARGET_CMPXCHG16B): Define.
* config/i386/i386.c (x86_cmpxchg8b, x86_cmpxchg16b): New variables.
* config/i386/sync.md (CASMODE, DCASMODE): New mode macros.
(doublemodesuffix, DCASHMODE): New mode attrs.
(sync_compare_and_swap<mode>): Change into expand, use CASMODE
instead of IMODE, if mode is wider than a word, expand into
sync_double_compare_and_swap*.
(*sync_compare_and_swap<mode>): New insn.
(sync_double_compare_and_swap<mode>): Likewise.
(*sync_double_compare_and_swapdi_pic): Likewise.
(sync_compare_and_swap_cc<mode>): Use CASMODE instead of IMODE, if
mode is wider than a word, expand into
sync_double_compare_and_swap_cc*.
(sync_double_compare_and_swap_cc<mode>): New insn.
(*sync_double_compare_and_swap_ccdi_pic): Likewise.
From-SVN: r108997
PR c++/25364
* typeck.c (build_unary_op): Pass DECLs not names to
build_offset_refs.
* init.c (build_offset_ref): Do not do name lookup. Do not call
mark_used.
* call.c (build_call): Simplify and tidy.
* semantics.c (finish_qualified_id_expr): Call mark_used.
PR c++/25364
* g++.dg/template/call4.C: New test.
From-SVN: r108973
2005-12-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/23333
* include/cpplib.h: Add PURE_ZERO to flags for the cpp_token structure.
* c-lex.c (c_lex_with_flags): Add PURE_ZERO to cpp_flags if
number is a single digit '0'.
* parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
identify a single '0'.
* g++.dg/parse/error25.C: Add more tests.
From-SVN: r108947