2010-08-15 Daniel Kraft <d@domob.eu>
PR fortran/45197
* decl.c (gfc_match_prefix): Match IMPURE prefix and mark ELEMENTAL
routines not IMPURE also as PURE.
* intrinsic.c (enum klass): New class `CLASS_PURE' and renamed
`NO_CLASS' in `CLASS_IMPURE'.
(add_sym): Set symbol-attributes `pure' and `elemental' correctly.
(add_sym_0s): Renamed `NO_CLASS' in `CLASS_IMPURE'.
(add_functions): Ditto.
(add_subroutines): Ditto and mark `MOVE_ALLOC' as CLASS_PURE.
* resolve.c (gfc_pure): Do not treat ELEMENTAL as automatically PURE.
(resolve_formal_arglist): Check that arguments to ELEMENTAL procedures
are not ALLOCATABLE and have their INTENT specified.
2010-08-15 Daniel Kraft <d@domob.eu>
PR fortran/45197
* gfortran.dg/elemental_args_check_3.f90: New test.
* gfortran.dg/impure_1.f08: New test.
* gfortran.dg/impure_2.f08: New test.
* gfortran.dg/impure_3.f90: New test.
* gfortran.dg/typebound_proc_6.f03: Changed expected error message.
From-SVN: r163261
* tree-vect-data-refs.c (vect_setup_realignment): Support realignment
in basic blocks.
(vect_supportable_dr_alignment): Check alignment for basic blocks.
* tree-vect-slp.c (vect_build_slp_tree): Allow different codes for
data references.
(vect_bb_vectorization_profitable_p): New function.
(vect_slp_analyze_bb): Call vect_bb_vectorization_profitable_p() to
check if it's worthwhile to vectorize the basic block.
From-SVN: r163260
* reload.h (register_move_cost, memory_move_secondary_cost,
secondary_reload_class): Adjust prototype.
* rtl.h (reg_class_subset_p): Adjust prototype.
* reload.c (secondary_reload_class): Change arguments type from
enum reg_class to reg_class_t. Change result type to reg_class_t.
* reginfo.c (register_move_cost, reg_class_subset_p): Change
arguments type from enum reg_class to reg_class_t.
(memory_move_secondary_cost): Change arguments type from
enum reg_class to reg_class_t. Change type of saved_flags to
reg_class_t.
* config/mips/mips.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST):
Remove macros.
(mips_cost): Remove.
(struct mips_rtx_cost_data): Moved to mips.c.
* config/mips/mips-protos.h (mips_register_move_cost): Remove.
* config/mips/mips.c (struct mips_rtx_cost_data): Moved from mips.h.
(mips_cost): Make static.
(mips_canonicalize_move_class): Change argument type to reg_class_t.
Change result type to reg_class_t.
(mips_move_to_gpr_cost, mips_move_from_gpr_cost): Change arguments
type from enum reg_class to reg_class_t.
(mips_register_move_cost): Make static. Change arguments
type from enum reg_class to reg_class_t.
(mips_memory_move_cost): New function.
(TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
From-SVN: r163252
gcc/
PR rtl-optimization/43358
* ira-lives.c (process_single_reg_class_operands): Adjust the costs
of a single hard register, using simplify_subreg_regno to decide
what that register should be.
From-SVN: r163249
2010-08-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/44931
* io/inquire.c (inquire_via_unit): Add special case for __MINGW32__ to
return special file names CONIN$, CONOUT$, and CONERR$.
From-SVN: r163245
2010-08-13 Jack Howarth <howarth@bromo.med.uc.edu>
* gcc/configure.ac: Enable -fomit-frame-pointer on darwin
which support dwarf2.
* config/i386/i386.c (override_options): Same.
From-SVN: r163227
2010-08-13 Daniel Kraft <d@domob.eu>
* gfortran.h (array_type): New type `AS_IMPLIED_SHAPE'.
* array.c (gfc_match_array_spec): Match implied-shape specification and
handle AS_IMPLIED_SHAPE correctly otherwise.
* decl.c (add_init_expr_to_sym): Set upper bounds for implied-shape.
(variable_decl): Some checks for implied-shape declaration.
* resolve.c (resolve_symbol): Assert that array-spec is no longer
AS_IMPLIED_SHAPE in any case.
2010-08-13 Daniel Kraft <d@domob.eu>
* gfortran.dg/implied_shape_1.f08: New test.
* gfortran.dg/implied_shape_2.f90: New test.
* gfortran.dg/implied_shape_3.f08: New test.
From-SVN: r163221
* gcc.c (cpp_unique_options): Generate -MDX and -MMDX from -MD and
-MMD.
c-family:
* c.opt (MD, MMD): Change to MDX and MMDX.
* c-opts.c (c_common_handle_option): Use OPT_MMD and OPT_MMDX.
fortran:
* lang.opt (MD, MMD): Change to MDX and MMDX.
* cpp.c (gfc_cpp_handle_option): Use OPT_MMD and OPT_MMDX.
From-SVN: r163209
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Give
up dot_prod pattern searching if a stmt is outside the loop.
* gcc.dg/vect/no-tree-pre-pr45241.c: New.
From-SVN: r163207
2010-08-12 H.J. Lu <hongjiu.lu@intel.com>
Uros Bizjak <ubizjak@gmail.com>
* config.gcc: Handle --enable-frame-pointer.
* configure.ac: Add --enable-frame-pointer.
* configure: Regenerated.
* config/i386/i386.c (USE_IX86_FRAME_POINTER): Default to 0.
(override_options): If not configured with --enable-frame-pointer,
enable -fomit-frame-pointer (but not for TARGET_MACHO or when
optimizing for size), -fasynchronous-unwind-tables and
-maccumulate-outgoing-args by default.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r163196
PR middle-end/45262
* fold-const.c (make_range) <case NEGATE_EXPR>: Punt if
-a overflows. Normalize the range.
* gcc.c-torture/execute/pr45262.c: New test.
From-SVN: r163193
PR debug/45259
* caller-save.c (save_call_clobbered_regs): Only swap notes with
DEBUG_INSNs if n_regs_saved.
* gcc.dg/pr45259.c: New test.
From-SVN: r163185
* config/arm/arm.md (andsi3): Change to zero extension if possible.
* config/arm/thumb2.md (thumb2_zero_extendqisi2_v6): Change the name.
* gcc.target/arm/pr44999.c: New testcase.
From-SVN: r163184
2010-07-29 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Add back
the case removed in the previous patch, when the only phi argument
is defined in the same loop as the phi node itself. Handle it
separately from the invariant case by both propagating it outside
the region and replacing the phi node with an assign.
From-SVN: r163169
2010-07-28 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): The only
constant phi nodes with one argument are is_gimple_min_invariant
and SSA_NAME_IS_DEFAULT_DEF.
* gfortran.dg/graphite/id-22.f: New.
From-SVN: r163168
This requires to initialize the Parma Polyhedra Library by graphite,
as newer CLooG versions are not bound to a PPL backend.
2010-07-27 Andreas Simbuerger <simbuerg@fim.uni-passau.de>
* graphite.c (graphite_initialize): Do not initialize
CLooG and initialize the Parma Polyhedra Library
manually when using CLOOG_ORG.
(graphite_finalize): Do not finalize CLooG and finalize
the Parma Polyhedra Library manually when using CLOOG_ORG.
* graphite-cloog-compat.h (cloog_initialize): Hide function
when using CLOOG_ORG.
(cloog_finalize): Same.
From-SVN: r163166