Kaveh R. Ghazi [Fri, 14 Aug 2009 16:44:36 +0000 (16:44 +0000)]
re PR middle-end/30789 (complex folding inexact)
PR middle-end/30789
* builtins.c (do_mpc_arg2): Make extern, define for any MPC
version. Move declaration...
* real.h (do_mpc_arg2): ... here.
* fold-const.c (const_binop): Use MPC for complex MULT_EXPR
and RDIV_EXPR.
re PR rtl-optimization/41064 (build breakage for cris-elf building newlib, ICE in extract_insn, from r150726)
PR rtl-optimization/41064
* reload1.c (reload_as_needed): Don't call extract_insn
for known invalid replacements after calling
validate_replace_rtx_group and verify_changes.
Uros Bizjak [Fri, 14 Aug 2009 10:31:09 +0000 (12:31 +0200)]
re PR target/41019 (Vector conditional move produces wrong code with -O3.)
PR target/41019
* config/i386/sse.md (SSEMODE124C8): New mode iterator.
(vcond<SSEMODEF2P:mode>): Assert that operation is supported by
ix86_expand_fp_vcond.
(vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
Assert that operation is supported by ix86_expand_int_vcond.
(vcondu<SSEMODE124C8:mode>): Ditto.
testsuite/ChangeLog:
PR target/41019
* gcc.target/i386/pr41019.c: New test.
* tree-ssa-loop-prefetch.c
(prune_ref_by_group_reuse): Enhance probabilistic analysis
for long-stride pruning.
(compute_miss_rate): New function to compute the probability
that two memory references access different cache lines.
Janis Johnson [Thu, 13 Aug 2009 16:54:28 +0000 (16:54 +0000)]
re PR c/41046 (decNumber leaves printf call in libgcc)
PR c/41046
* decContext.c (decContextTestEndian): Call printf only if DECCHECK.
* decCommon.c ( decFloatShow): Define function only for DECCHECK
or DECTRACE.
Janus Weil [Thu, 13 Aug 2009 11:16:16 +0000 (13:16 +0200)]
re PR fortran/40995 (Spurious "Type specified for intrinsic function...ignored" message)
2009-08-13 Janus Weil <janus@gcc.gnu.org>
PR fortran/40995
* resolve.c (resolve_symbol): Move some checking code to
resolve_intrinsic, and call this from here.
(resolve_intrinsic): Some checking code moved here from resolve_symbol.
Make sure each intrinsic is only resolved once.
2009-08-13 Janus Weil <janus@gcc.gnu.org>
PR fortran/40995
* gfortran.dg/intrinsic_4.f90: New.
* gfortran.dg/intrinsic_subroutine.f90: An error message moved to a
different line.
Andrew Haley [Wed, 12 Aug 2009 16:34:00 +0000 (16:34 +0000)]
locks.h: Use atomic builtins For Linux EABI.
2009-08-12 Andrew Haley <aph@redhat.com>
* sysdep/arm/locks.h: Use atomic builtins For Linux EABI.
* configure.ac: Add ATOMICSPEC.
* libgcj.spec.in: Likewise.
* configure.host (arm*-linux*): Add -Wno-abi to cxxflags.
(testsuite/libjava.jvmti/jvmti-interp.exp): Likewise.
(testsuite/libjava.jvmti/jvmti.exp): Likewise.
(testsuite/libjava.jni/jni.exp): Likewise.
Set ATOMICSPEC.
Set LDFLAGS to work around libtool feature.
re PR bootstrap/41031 (ICE in insert_value_copy_on_edge preventing bootstrap on sparc64 and s390x, testcase on cris-elf)
2009-08-12 Richard Sandiford <rdsandiford@googlemail.com>
PR tree-optimization/41031
* tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
on the partition variable rather than promote_mode on the source
type. Assert that the partition variable's type has the same
mode as the source value's.
* alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
* gimplify.c (gimplify_modify_expr): Do not use
lang_hooks.types_compatible_p.
* tree-ssa.c (useless_type_conversion_p): For aggregates
just return false if the canonical types differ.
Sebastian Pop [Wed, 12 Aug 2009 14:26:42 +0000 (14:26 +0000)]
Undo changes to the PDR representation.
2009-08-11 Sebastian Pop <sebastian.pop@amd.com>
* graphite-interchange.c (compute_array_size): Remove use of
PDR_DATA_CONTAINER.
* graphite-poly.c (new_poly_dr): Remove argument data_container.
Do not initialize PDR_DATA_CONTAINER.
(print_pdr): Do not print PDR_DATA_CONTAINER.
* graphite-poly.h (struct poly_dr): Remove data_container field.
(PDR_DATA_CONTAINER): Removed.
* graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
PDR_DATA_CONTAINER.
(build_poly_dr): Same.
Fix memory leak in DD XFAILs some interchange testcases.
2009-08-05 Konrad Trifunovic <konrad.trifunovic@gmail.com>
Sebastian Pop <sebastian.pop@amd.com>
* graphite-dependences.c (graphite_legal_transform_dr): Work on a
copy of the dependence polyhedron. Free the temporary objects.
(graphite_carried_dependence_level_k): Free unused objects before
returning.
Sebastian Pop [Wed, 12 Aug 2009 14:23:01 +0000 (14:23 +0000)]
Restore original scattering when the transform is not legal.
2009-08-05 Sebastian Pop <sebastian.pop@amd.com>
* graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
Early return without analyzing the data dependences if no
transform has been done. Call restore_scattering if the transform
is not legal.
(graphite-interchange.c): Same.
* graphite-poly.c (print_scattering_function): Test for PBB_TRANSFORMED.
(graphite_read_transforms): Initialize PBB_TRANSFORMED.
(apply_poly_transforms): Do not gcc_assert that
the transform is legal.
(new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
(free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
* graphite-poly.h (struct poly_scattering): New.
(struct poly_bb): Add original, transformed, and saved fields.
Remove transformed_scattering, original_scattering, nb_local_variables,
and nb_scattering_transform fields.
(PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
(poly_scattering_new): New.
(poly_scattering_free): New.
(poly_scattering_copy): New.
(store_scattering_pbb): New.
(store_scattering): New.
(restore_scattering_pbb): New.
(restore_scattering): New.
* graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
Sebastian Pop [Wed, 12 Aug 2009 14:19:33 +0000 (14:19 +0000)]
Recompute profile after Graphite.
2009-08-05 Sebastian Pop <sebastian.pop@amd.com>
* Makefile.in (graphite.o): Depends on PREDICT_H.
* graphite.c: Include predict.h.
(graphite_finalize): Call tree_estimate_probability.
* predict.c (predict_loops): Do not call scev_initialize and
scev_finalize.
(tree_estimate_probability_bb): New.
(tree_estimate_probability): Do not initialize loops: move that
code to the driver. Call tree_estimate_probability_bb.
(tree_estimate_probability_driver): New.
(pass_profile): Use tree_estimate_probability_driver.
* predict.h (tree_estimate_probability): Declared.
Benjamin Kosnik [Wed, 12 Aug 2009 00:56:12 +0000 (00:56 +0000)]
extc++.h: Don't include TR1 if C++0x.
2009-08-11 Benjamin Kosnik <bkoz@redhat.com>
* include/precompiled/extc++.h: Don't include TR1 if C++0x.
* include/precompiled/stdc++.h: Don't include cassert if
_GLIBCXX_NO_ASSERT defined.
* include/ext/cast.h (_GLIBCXX_BEGIN_NAMESPACE): Remove extra
semi-colon.
* include/ext/pointer.h (_GCC_CXX_POINTER_COMPARISON_OPERATION_SET):
Same.
Adam Nemet [Tue, 11 Aug 2009 17:41:09 +0000 (17:41 +0000)]
predicates.md (qi_mask_operand, [...]): New predicates.
* config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
si_mask_operand, and_load_operand, low_bitmask_operand,
and_reg_operand, and_operand): New predicates.
* config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
* config/mips/mips.c (and_operands_ok): New function.
* config/mips/mips-protos.h (and_operands_ok): Declare it.
* config/mips/mips.md (move_type): Add ext_ins and logical.
(type): Handle them.
(and<mode>3): Use and_reg_operand as the second operand's
predicate.
(*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
shift_shift. Remove commutative constraint modifier.
(*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
shift_shift.
(*clear_upper32_dext): Remove define_insn_and_split.
(*clear_upper32): Turn this define_insn_and_split ...
(splitter for ANDing register with 0xffff_ffff): .. into this.
testsuite/
* gcc.target/mips/ext-5.c: New test.
* gcc.target/mips/ext-6.c: New test.
* gcc.target/mips/ext-7.c: New test.
* gcc.target/mips/ext-8.c: New test.
* gcc.target/mips/extend-2.c: New test.
Adam Nemet [Tue, 11 Aug 2009 17:31:09 +0000 (17:31 +0000)]
combine.c (try_widen_shift_mode): Factor out code to check if an integer constant is a low-order bitmask from here ...
* combine.c (try_widen_shift_mode): Factor out code to check if an
integer constant is a low-order bitmask from here ...
* rtlanal.c (low_bitmask_len): ... to here.
* rtl.h (low_bitmask_len): Declare.
Vasiliy Fofanov [Tue, 11 Aug 2009 16:33:41 +0000 (16:33 +0000)]
alpha.c (alpha_return_in_memory): On VMS...
* config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
that records that fit in 64 bits are returned by immediate value,
as required by OpenVMS Calling Standard.
(function_value): Adjust for above modification.
(alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
virtual_incoming_args_rtx as base object, not next_arg.
* config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
Co-Authored-By: Douglas B Rupp <rupp@gnat.com> Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r150652
Richard Guenther [Tue, 11 Aug 2009 11:39:43 +0000 (11:39 +0000)]
re PR bootstrap/40788 (ICE on sparc: tree check: expected class 'expression', have 'declaration' (var_decl) in gimplify_va_arg_expr, at builtins.c:5107)
2009-08-11 Richard Guenther <rguenther@suse.de>
PR bootstrap/40788
* builtins.c (gimplify_va_arg_expr): Do not call
SET_EXPR_LOCATION.
Olivier Hainque [Tue, 11 Aug 2009 05:14:48 +0000 (05:14 +0000)]
alpha.c (alpha_sa_size): Force procedure type to PT_STACK when frame_pointer_needed on OpenVMS.
* config/alpha/alpha.c (alpha_sa_size): Force procedure type to
PT_STACK when frame_pointer_needed on OpenVMS.
(alpha_pv_save_size, alpha_using_fp): Remove.
(alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
with proper processing for PT_NULL.
(alpha_vms_initial_elimination_offset): New function. Support for
INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
(alpha_sa_size): Force procedure type to PT_STACK when
frame_pointer_needed on OpenVMS.
* config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
(alpha_using_fp): Likewise.
(alpha_vms_can_eliminate): Add prototype.
(alpha_vms_initial_elimination_offset): Likewise.
* config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
Co-Authored-By: Douglas B Rupp <rupp@gnat.com>
From-SVN: r150646
Jason Merrill [Mon, 10 Aug 2009 20:47:55 +0000 (16:47 -0400)]
Implement DR 757...
Implement DR 757: It's OK for a decl to use a type without linkage
so long as the decl is defined in the current translation unit.
* decl2.c (no_linkage_decls): New vector.
(mark_used): Add decls that use types with no linkage.
(cp_write_global_declarations): Check that they are defined.
(decl_defined_p, no_linkage_error): New fns.
* cp-tree.h (DECL_NO_LINKAGE_CHECKED): New macro.
(struct lang_decl_base): Add flag.
* decl.c (grokfndecl): Don't check type linkage.
(grokvardecl): If the type has no linkage, just make sure
DECL_LANG_SPECIFIC is set.
* pt.c (check_instantiated_arg): Don't check type linkage.
* name-lookup.c (is_local_extern): New fn.
* name-lookup.h: Declare it.
Daniel Kraft [Mon, 10 Aug 2009 10:51:46 +0000 (12:51 +0200)]
re PR fortran/37425 (Fortran 2003: GENERIC bindings as operators)
2009-08-10 Daniel Kraft <d@domob.eu>
PR fortran/37425
* gfortran.dg/typebound_operator_1.f03: New test.
* gfortran.dg/typebound_operator_2.f03: New test.
2009-08-10 Daniel Kraft <d@domob.eu>
PR fortran/37425
* gfortran.h (struct gfc_namespace): New fields tb_uop_root and tb_op.
(gfc_find_typebound_user_op): New routine.
(gfc_find_typebound_intrinsic_op): Ditto.
(gfc_check_operator_interface): Now public routine.
* decl.c (gfc_match_generic): Match OPERATOR(X) or ASSIGNMENT(=).
* interface.c (check_operator_interface): Made public, renamed to
`gfc_check_operator_interface' accordingly and hand in the interface
as gfc_symbol rather than gfc_interface so it is useful for type-bound
operators, too. Return boolean result.
(gfc_check_interfaces): Adapt call to `check_operator_interface'.
* symbol.c (gfc_get_namespace): Initialize new field `tb_op'.
(gfc_free_namespace): Free `tb_uop_root'-based tree.
(find_typebound_proc_uop): New helper function.
(gfc_find_typebound_proc): Use it.
(gfc_find_typebound_user_op): New method.
(gfc_find_typebound_intrinsic_op): Ditto.
* resolve.c (resolve_tb_generic_targets): New helper function.
(resolve_typebound_generic): Use it.
(resolve_typebound_intrinsic_op), (resolve_typebound_user_op): New.
(resolve_typebound_procedures): Resolve operators, too.
(check_uop_procedure): New, code from gfc_resolve_uops.
(gfc_resolve_uops): Moved main code to new `check_uop_procedure'.
Janus Weil [Mon, 10 Aug 2009 09:19:24 +0000 (11:19 +0200)]
re PR fortran/40940 ([F03] CLASS statement)
2009-08-10 Janus Weil <janus@gcc.gnu.org>
PR fortran/40940
* decl.c (gfc_match_type_spec): Match CLASS statement and warn about
missing polymorphism.
* gfortran.h (gfc_typespec): Add field 'is_class'.
* misc.c (gfc_clear_ts): Initialize 'is_class' to zero.
* resolve.c (type_is_extensible): New function to check if a derived
type is extensible.
(resolve_fl_variable_derived): Add error checks for CLASS variables.
(resolve_typebound_procedure): Disallow non-polymorphic passed-object
dummy arguments, turning warning into error.
(resolve_fl_derived): Use 'type_is_extensible'. Disallow non-polymorphic
passed-object dummy arguments for procedure pointer components,
turning warning into error. Add error check for CLASS components.
Arnaud Charlet [Mon, 10 Aug 2009 08:33:30 +0000 (10:33 +0200)]
[multiple changes]
2009-08-10 Vincent Celier <celier@adacore.com>
* prj-env.adb (Create_Config_Pragmas_File.Write_Temp_File): Do not use
the temporary file name in the error message when the temporary file
cannot be created.
Arnaud Charlet [Mon, 10 Aug 2009 08:25:49 +0000 (10:25 +0200)]
[multiple changes]
2009-08-10 Robert Dewar <dewar@adacore.com>
* exp_ch7.adb: Add ??? comment for last change
2009-08-10 Vincent Celier <celier@adacore.com>
* prj-env.adb (Add_To_Buffer): New procedure
(Create_Config_Pragmas_File): Write to temporary file in one shot
(Create_Mapping_File): Ditto
(Set_Ada_Paths): Ditto
Olivier Hainque [Mon, 10 Aug 2009 04:38:02 +0000 (04:38 +0000)]
alpha.c (struct machine_function): New flag for VMS, uses_condition_handler.
* config/alpha/alpha.c (struct machine_function): New flag for VMS,
uses_condition_handler.
(alpha_expand_builtin_establish_vms_condition_handler): New expander.
(alpha_expand_builtin_revert_vms_condition_handler): New expander.
(enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
(code_for_builtin): New insn codes for the new alpha_builtins.
(alpha_init_builtins): Register the new functions as BUILT_IN_MD.
(alpha_sa_size): Account for uses_condition_handler.
(alpha_expand_prologue): Likewise.
(alpha_start_function): Likewise.
(alpha_expand_epilogue): Likewise.
* config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
establish/revert expanders.
* config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
* config/alpha/alpha.md (builtin_establish_vms_condition_handler):
New expander, resorting to the alpha.c associated function.
(builtin_revert_vms_condition_handler): Likewise.
* config/alpha/vms-gcc_shell_handler.c: New file. Implements
__gcc_shell_handler, the static VMS condition handler used as
an indirection wrapper to the current dynamically established
handler.
* config/alpha/vms-unwind.h: Complete rewrite.
* config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
* config/alpha/vms.h (MD_UNWIND_SUPPORT):
Co-Authored-By: Douglas B Rupp <rupp@gnat.com>
From-SVN: r150612
Eric Botcazou [Mon, 10 Aug 2009 04:12:45 +0000 (04:12 +0000)]
alpha.c (alpha_links): Add 'target' field.
* config/alpha/alpha.c (alpha_links): Add 'target' field.
(alpha_need_linkage): Handle aliases. Return function symbol.
(alpha_use_linkage): Rename 'linkage' argument to 'func'.
Use ultimate alias target for the linkage name.
* config/alpha/alpha.md (movmemdi): Use the symbol returned
by alpha_need_linkage for the function symbol.
(setmemdi): Likewise.
Co-Authored-By: Douglas B Rupp <rupp@gnat.com>
From-SVN: r150611
Douglas B Rupp [Mon, 10 Aug 2009 03:56:39 +0000 (03:56 +0000)]
alpha.c (alpha_initialize_trampoline): Initialize VMS trampoline IAW ABI for bounded procedure calls.
* config/alpha/alpha.c (alpha_initialize_trampoline):
Initialize VMS trampoline IAW ABI for bounded procedure calls.
(alpha_start_function): Emit transfer address on nested functions
for VMS trampoline call.
* config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
since no longer used.
* config/alpha/vms-tramp.asm: Remove.
* config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
since now only data initialized at runtime.