Kaveh R. Ghazi [Wed, 25 Oct 2006 20:44:09 +0000 (20:44 +0000)]
re PR middle-end/29335 (transcendental functions with constant arguments should be resolved at compile-time)
PR middle-end/29335
* builtins.c (fold_builtin_cbrt, fold_builtin_logarithm):
Calculate compile-time constants using MPFR.
(fold_builtin_1): Likewise handle BUILT_IN_ERF, BUILT_IN_ERFC,
BUILT_IN_EXPM1 and BUILT_IN_LOG1P.
testsuite:
* gcc.dg/torture/builtin-math-2.c (TESTIT): Use new helper macro.
Add checks for log, log2, log10 and log1p.
* gcc.dg/torture/builtin-math-3.c: Add checks for -0.0 everywhere
we already test 0.0. Add checks for expm1, log, log2, log10,
log1p, cbrt, erf and erfc.
Nathan Froyd [Wed, 25 Oct 2006 13:31:21 +0000 (13:31 +0000)]
dwarf2out.c (gen_compile_unit_die): Use IS_ABSOLUTE_PATH.
* dwarf2out.c (gen_compile_unit_die): Use IS_ABSOLUTE_PATH.
(file_table_relative_p): Likewise.
(dwarf2out_finish): Likewise.
(file_name_acquire): Use DIR_SEPARATOR and DIR_SEPARATOR_2.
(expand_builtin) [BUILT_IN_FMOD, BUILT_IN_DREM]: Do not
depend on flag_unsafe_math_optimizations.
* config/i386/i386.md ("remaindersf3", "remainderdf3")
("remainderxf3"): Renamed from "drem{s,d,x}f3" expanders.
Do not depend on flag_unsafe_math_optimizations. Use
truncxf?f expander instead of truncxf?f_i387_noop.
("fpremxf4", "fprem1xf4"): Do not depend on
flag_unsafe_math_optimizations.
("fmodsf3", "fmoddf3", "fmodxf3"): Do not depend on
flag_unsafe_math_optimizations. Use truncxf?f expander
instead of truncxf?f_i387_noop.
* doc/md.texi (fmod, remainder): Document standard named pattern.
testsuite/ChangeLog:
* gcc.dg/builtins-40.c: Also check remainder(), remainderf()
and remainderl() built-in functions. Remove -ffast-math from
dg-options.
Uros Bizjak [Tue, 24 Oct 2006 22:55:36 +0000 (00:55 +0200)]
i386.h (FIRST_PSEUDO_REGISTER): Define to 54.
* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 54.
(FIXED_REGISTERS, CALL_USED_REGISTERS): Add fpcr register.
(REG_ALLOC_ORDER): Add one element to allocate fpcr register.
(FRAME_POINTER_REGNUM): Update register number to 21.
(REG_CLASS_CONTENTS): Update contents for added fpcr register.
(HI_REGISTER_NAMES): Add "fpcr" for fpcr register.
Kaveh R. Ghazi [Tue, 24 Oct 2006 21:52:51 +0000 (21:52 +0000)]
builtin-math-2.c: Add checks for asin, acos, acosh and atanh.
* gcc.dg/torture/builtin-math-2.c: Add checks for asin, acos,
acosh and atanh.
* gcc.dg/torture/builtin-math-3.c (TESTIT): Append 'F' and 'L'
floating point modifiers to arguments passed to float and long
double functions respectively. Update all callers to use floating
point numbers, not integers. Add tests for exp, exp2 and
exp10/pow10.
Eric Botcazou [Tue, 24 Oct 2006 13:59:06 +0000 (15:59 +0200)]
re PR libgomp/29494 (libgomp build fails with missing pthread_mutexattr_settype)
PR libgomp/29494
* configure.tgt: Use posix95 configuration for Solaris 2.5.1 and 2.6.
* config/posix95: New directory.
* config/posix95/omp-lock.h: New file.
* config/posix95/lock.c: Likewise.
Richard Guenther [Tue, 24 Oct 2006 09:15:07 +0000 (09:15 +0000)]
re PR middle-end/28796 (__builtin_nan() and __builtin_unordered() inconsistent)
2006-10-24 Richard Guenther <rguenther@suse.de>
PR middle-end/28796
* builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
and HONOR_NANS instead of MODE_HAS_INFINITIES and MODE_HAS_NANS
for deciding optimizations in consistency with fold-const.c
(fold_builtin_unordered_cmp): Likewise.
* gcc.dg/pr28796-1.c: New testcase.
* gcc.dg/pr28796-1.c: Likewise.
Richard Guenther [Tue, 24 Oct 2006 08:35:12 +0000 (08:35 +0000)]
builtins.c (fold_builtin_floor): Fold floor (x) where x is nonnegative to trunc (x).
2006-10-24 Richard Guenther <rguenther@suse.de>
* builtins.c (fold_builtin_floor): Fold floor (x) where
x is nonnegative to trunc (x).
(fold_builtin_int_roundingfn): Fold lfloor (x) where x is
nonnegative to FIX_TRUNC_EXPR.
Kaveh R. Ghazi [Tue, 24 Oct 2006 04:13:16 +0000 (04:13 +0000)]
builtins.c (fold_builtin_exponent): Evaluate constant arguments at compile-time using MPFR.
* builtins.c (fold_builtin_exponent): Evaluate constant arguments
at compile-time using MPFR. Change parameter VALUE to FUNC,
update all callers.
(do_mpfr_arg1): Rename `exact' to `inexact'. Carefully check
for overflow and underflow at all times and avoid folding in
those cases.
* gcc/java/decl.c: Include langhooks.h.
(builtin_function): Remove.
(java_init_decl_processing): Replace calls to builtin_function
with add_builtin_function.
* gcc/java/Make-lang.in (jc1$(exeext)): Depend on and link with
attribs.o.
(java/decl.o): Depend on langhooks.h.
* gcc/tree.c (local_define_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/objc/objc-act.c (synth_module_prologue): Replace calls to
builtin_function with add_builtin_function.
(build_next_objc_exception_stuff): Replace calls to
builtin_function with add_builtin_function.
(build_objc_exception_stuff): Replace calls to
builtin_function with add_builtin_function.
* gcc/cp/decl.c (builtin_function_1): Move common code to
add_builtin_function.
(builtin_function): Rename to cxx_builtin_function.
Change the signature.
* gcc/cp/call.c: Include langhooks.h.
(build_java_interface_fn_ref): Replace calls to
builtin_function with add_builtin_function.
* gcc/cp/Make-lang.in (cp/call.o): Depend on langhooks.h.
* gcc/cp/cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
cxx_builtin_function.
* gcc/cp/cp-tree.h (builtin_function): Rename to cxx_builtin_function.
Change the signature.
* gcc/c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
c_builtin_function.
* gcc/c-tree.h (builtin_function): Rename to c_builtin_function. Change
the signature.
* gcc/ada/utils.c (builtin_function): Rename to gnat_builtin_function.
Move common code to add_builtin_function.
* gcc/ada/misc.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
gnat_builtin_function.
* gcc/ada/gigi.h (builtin_function): Rename to gnat_builtin_function.
Change the signature.
* gcc/c-decl.c (builtin_function): Rename to c_builtin_function. Move
common code to add_builtin_function.
* gcc/fortran/Make-lang.in (f951$(exeext)): Depend on and link with
attribs.o.
* gcc/fortran/trans.h (builtin_function): Rename to
gfc_builtin_function. Change the signature.
* gcc/fortran/f95-lang.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
gfc_builtin_function.
(builtin_function): Rename to gfc_builtin_function. Move common
code to builtin_function.
(gfc_define_builtin): Replace calls to builtin_function with
gfc_define_builtin.
* gcc/langhooks.c (add_builtin_function): New function.
(lhd_builtin_function): New function.
* gcc/langhooks.h (struct lang_hooks): Change the signature of
builtin_function.
(add_builtin_function): New function.
* gcc/tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace
calls to lang_hooks.builtin_function with add_builtin_function.
* gcc/c-common.c (decl_builtin_1): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/alpha/alpha.c (alpha_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/frv/frv.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/s390/s390.c (s390_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/sparc/sparc.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/i386/i386.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
(def_builtin): Replace calls to lang_hooks.builtin_function with
add_builtin_function.
* gcc/config/sh/sh.c (sh_media_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/c4x/c4x.c (c4x_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/stormy16/stormy16.c (xstormy16_init_builtins):
Replace calls to lang_hooks.builtin_function with
add_builtin_function.
* gcc/config/iq2000/iq2000.c (def_builtin):
Replace calls to lang_hooks.builtin_function with
add_builtin_function.
* gcc/config/ia64/ia64.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/rs6000/rs6000.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
(altivec_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/arm/arm.c (def_mbuiltin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
(arm_init_tls_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/mips/mips.c (mips_init_builtins): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/config/bfin/bfin.c (def_builtin): Replace calls to
lang_hooks.builtin_function with add_builtin_function.
* gcc/langhooks-def.h (lhd_builtin_function): New function.
(LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function.
Jan Hubicka [Mon, 23 Oct 2006 18:50:40 +0000 (20:50 +0200)]
builtins.c (expand_builtin_memmove): Remove ORIG_EXP argument; don't do conversion from memmove to memcpy here.
* builtins.c (expand_builtin_memmove): Remove ORIG_EXP argument;
don't do conversion from memmove to memcpy here.
(expand_builtin_bcopy, expand_builtin): Update call of
expand_builtin_memmove.
(fold_builtin_memory_op): Do folding of memmove to memcpy here.
Richard Guenther [Mon, 23 Oct 2006 07:19:34 +0000 (07:19 +0000)]
[multiple changes]
2006-10-24 Richard Guenther <rguenther@suse.de>
PR middle-end/27132
PR middle-end/23295
* builtins.c (fold_binary): Remove checks for flag_wrapv
and flag_trapv where negate_expr_p covers these cases.
PR middle-end/29548
* fold-const.c (fold_plusminus_mult_expr): Check exact power
of two on the absolute value.
(fold_binary): Fold x * -C to -x * C if x is easily negatable
and negating -C does not overflow.
re PR target/28232 (Wrong aligned load is generated with -m4a on sh-*)
PR target/28232
* config/sh/sh.c (expand_block_move): Use a BLKmode rather than
SImode memory reference for the source of a movua.
* config/sh/sh.md (UNSPEC_MOVUA): New macro.
(movua): Use an unspec instead of sign_extract. Expect the source
to have mode BLKmode.
(extv, insv): Use a BLKmode rather than SImode memory reference
for the source of a movua.
Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org>
From-SVN: r117961
Jeff Law [Sun, 22 Oct 2006 20:11:09 +0000 (14:11 -0600)]
re PR tree-optimization/15911 (VRP/DOM does not like TRUTH_AND_EXPR)
2006-10-22 Jeff Law <law@redhat.com>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/15911
* tree-vrp.c (extract_code_and_val_from_cond): New function.
(register_edge_assert_for_1): Likewise.
(register_edge_assert_for): Handle &&/&/||/| in conditionals.
(find_conditional_asserts): Adjust for new function signature.
(find_assert_locations): Likewise.
* gcc.dg/tree-ssa/vrp30.c: New testcase.
Co-Authored-By: Richard Guenther <rguenther@suse.de>
From-SVN: r117960
re PR fortran/26025 (Optionally use BLAS for matmul)
PR fortran/26025
* lang.opt: Add -fexternal-blas and -fblas-matmul-limit options.
* options.c (gfc_init_options): Initialize new flags.
(gfc_handle_option): Handle new flags.
* gfortran.h (gfc_option): Add flag_external_blas and
blas_matmul_limit flags.
* trans-expr.c (gfc_conv_function_call): Use new argument
append_args, appending it at the end of the argument list
built for a function call.
* trans-stmt.c (gfc_trans_call): Use NULL_TREE for the new
append_args argument to gfc_trans_call.
* trans.h (gfc_conv_function_call): Update prototype.
* trans-decl.c (gfc_build_intrinsic_function_decls): Add
prototypes for BLAS ?gemm routines.
* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Generate the
extra arguments given to the library matmul function, and give
them to gfc_conv_function_call.
* invoke.texi: Add documentation for -fexternal-blas and
-fblas-matmul-limit.
Uros Bizjak [Sat, 21 Oct 2006 15:49:41 +0000 (17:49 +0200)]
i386.md (extendsfdf2, [...]): Do not force operand1 to register if both operands are memory operands.
* config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Do not
force operand1 to register if both operands are memory operands.
(*extendsfdf2_mixed, *extendsfdf2_sse, *extendsfdf2_i387)
(*extendsfxf2_i387, *extenddfxf2_i387): Do not disable pattern
if both operands are memory operands.
(truncdfsf2): Do not force operand1 to register if both operands
are memory operands.
Richard Guenther [Sat, 21 Oct 2006 10:40:57 +0000 (10:40 +0000)]
re PR target/19116 (-funsafe-math-optimizations make nan compares equal to one another (-finite-math-only should be doing that))
2006-10-21 Richard Guenther <rguenther@suse.de>
PR target/19116
* config/i386/i386.c (override_options): Do not set MASK_IEEE_FP
if flag_unsafe_math_optimizations is specified. We have
flag_finite_math_only for that.
* config/i386/i386.md (sqrtxf2): Do not require TARGET_IEEE_FP
or flag_unsafe_math_optimizations.
Richard Guenther [Sat, 21 Oct 2006 10:13:13 +0000 (10:13 +0000)]
re PR middle-end/28796 (__builtin_nan() and __builtin_unordered() inconsistent)
2006-10-21 Richard Guenther <rguenther@suse.de>
PR middle-end/28796
* simplify-rtx.c (simplify_const_relational_operation):
Do not constant-fold ORDERED and UNORDERED for
flag_unsafe_math_optimizations but only we do not need to
honor NaNs for the given mode.
Fix PR tree-optimization/28778
Fix PR tree-optimization/29156
Fix PR tree-optimization/29415
* tree.h (DECL_PTA_ARTIFICIAL): New macro.
(tree_decl_with_vis): Add artificial_pta_var flag.
* tree-ssa-alias.c (is_escape_site): Remove alias info argument,
pushed into callers.
* tree-ssa-structalias.c (nonlocal_for_type): New variable.
(nonlocal_all): Ditto.
(struct variable_info): Add directly_dereferenced member.
(var_escaped_vars): New variable.
(escaped_vars_tree): Ditto.
(escaped_vars_id): Ditto.
(nonlocal_vars_id): Ditto.
(new_var_info): Set directly_dereferenced.
(graph_size): New variable
(build_constraint_graph): Use graph_size.
(solve_graph): Don't process constraints that cannot change the
solution, don't try to propagate an empty solution to our
successors.
(process_constraint): Set directly_dereferenced.
(could_have_pointers): New function.
(get_constraint_for_component_ref): Don't process STRING_CST.
(nonlocal_lookup): New function.
(nonlocal_insert): Ditto.
(create_nonlocal_var): Ditto.
(get_nonlocal_id_for_type): Ditto.
(get_constraint_for): Allow results vector to be empty in the case
of string constants.
Handle results of calls properly.
(update_alias_info): Update alias info stats on number and type of
calls.
(find_func_aliases): Use could_have_pointers.
(make_constraint_from_escaped): Renamed from
make_constraint_to_anything, and changed to make constraints from
escape variable.
(make_constraint_to_escaped): New function.
(find_global_initializers): Ditto.
(create_variable_info_for): Make constraint from escaped to any
global variable, and from any global variable to the set of
escaped vars.
(intra_create_variable_infos): Deal with escaped instead of
pointing to anything.
(set_uids_in_ptset): Do type pruning on directly dereferenced
variables.
(find_what_p_points_to): Adjust call to set_uids_with_ptset.
(init_base_vars): Fix comment, and initialize escaped_vars.
(need_to_solve): Removed.
(find_escape_constraints): New function.
(expand_nonlocal_solutions): Ditto.
(compute_points_to_sets): Call find_escape_constraints and
expand_nonlocal_solutions.
(delete_points_to_sets): Don't fall off the end of the graph.
(init_alias_heapvars): Initialize nonlocal_for_type and
nonlocal_all.
(delete_alias_heapvars): Free nonlocal_for_type and null out
nonlocal_all.
Eric Botcazou [Thu, 19 Oct 2006 20:22:04 +0000 (20:22 +0000)]
fold-const.c (add_double): Rename to add_double_with_sign.
* fold-const.c (add_double): Rename to add_double_with_sign.
Add 'unsigned_p' parameter and take it into account for the overflow.
(mul_double): Rename to mul_double_with_sign.
Add 'unsigned_p' parameter and take it into account for the overflow.
(fold_div_compare): Call add_double_with_sign instead of add_double
and mul_double_with_sign instead of mul_double, passing them the
unsignedness of the type.
* tree.h (add_double): Macroize.
(add_double_with_sign): New prototype.
(mul_double): Macroize.
(mul_double_with_sign): New prototype.
Paul Thomas [Thu, 19 Oct 2006 04:51:14 +0000 (04:51 +0000)]
[multiple changes]
2006-10-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29216
PR fortran/29314
* gfortran.h : Add EXEC_INIT_ASSIGN.
* dump-parse-tree.c (gfc_show_code_node): The same.
* trans-openmp.c (gfc_trans_omp_array_reduction): Set new
argument for gfc_trans_assignment to false.
* trans-stmt.c (gfc_trans_forall_1): The same.
* trans-expr.c (gfc_conv_function_call, gfc_trans_assign,
gfc_trans_arrayfunc_assign, gfc_trans_assignment): The
same. In the latter function, use the new flag to stop
the checking of the lhs for deallocation.
(gfc_trans_init_assign): New function.
* trans-stmt.h : Add prototype for gfc_trans_init_assign.
* trans.c (gfc_trans_code): Implement EXEC_INIT_ASSIGN.
* trans.h : Add new boolean argument to the prototype of
gfc_trans_assignment.
* resolve.c (resolve_allocate_exp): Replace EXEC_ASSIGN by
EXEC_INIT_ASSIGN.
(resolve_code): EXEC_INIT_ASSIGN does not need resolution.
(apply_default_init): New function.
(resolve_symbol): Call it for derived types that become
defined but which do not already have an initialization
expression..
* st.c (gfc_free_statement): Include EXEC_INIT_ASSIGN.
2006-10-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29216
* gfortran.dg/result_default_init_1.f90: New test.
PR fortran/29314
* gfortran.dg/automatic_default_init_1.f90: New test.
* gfortran.dg/alloc_comp_basics_1.f90: Reduce deallocate count
from 38 to 33.
Tobias Burnus [Wed, 18 Oct 2006 17:17:49 +0000 (19:17 +0200)]
in_pack.m4: Fixed a typo.
2006-10-16 Tobias Burnus <burnus@net-b.de>
* m4/in_pack.m4: Fixed a typo.
* m4/iforeach.m4: Fixed a typo.
* m4/eoshift1.m4: Fixed a typo.
* m4/eoshift3.m4: Fixed a typo.
* m4/cshift1.m4: Fixed a typo.
* m4/in_unpack.m4: Fixed a typo.
* m4/reshape.m4: Fixed a typo.
* m4/ifunction.m4: Fixed a typo.
* runtime/environ.c: Fixed a typo.
* runtime/in_pack_generic.c: Fixed a typo.
* runtime/in_unpack_generic.c: Fixed a typo.
* runtime/memory.c: Fixed a typo.
* intrinsics/cshift0.c: Fixed a typo.
* intrinsics/cpu_time.c: Fixed a typo.
* intrinsics/pack_generic.c: Fixed a typo.
* intrinsics/unpack_generic.c: Fixed a typo.
* intrinsics/eoshift0.c: Fixed a typo.
* intrinsics/eoshift2.c: Fixed a typo.
* intrinsics/reshape_generic.c: Fixed a typo.
* io/open.c: Fixed a typo.
* io/list_read.c: Fixed a typo.
* io/io.h: Fixed a typo.
* io/transfer.c: Fixed a typo.
* io/write.c: Fixed a typo.
Jerry DeLisle [Wed, 18 Oct 2006 04:04:07 +0000 (04:04 +0000)]
re PR fortran/29277 (Formated stream output: Translate "\n" / achar(10) into "\r\n" on some platforms)
2006-10-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/29277
* io/list_read.c (next_char): Update strm_pos.
(eat_separator): Delete extra call to unget_char.
* io/transfer.c (read_block): Use read_sf for formatted stream I/O.
(next_record_r): Update strm_pos for formatted stream I/O and handle
end-of-record correctly.
(next_record_w): Ditto.
(next_record): Enable next record (r/w) functions and update strm_pos.
(finalize_transfer): Call next_record to finish the record.
Lee Millward [Tue, 17 Oct 2006 23:22:14 +0000 (23:22 +0000)]
re PR c++/27952 (ICE with invalid virtual inheritance)
PR c++/27952
* cp-tree.h (xref_basetypes): Return bool instead of void.
* decl.c (xref_basetypes): Adjust definition. Return false
if the class bases are invalid.
* parser.c (cp_parser_class_head): Check the return value
from xref_basetypes.