* include/std/scoped_allocator (__outermost_alloc_traits): Define.
(scoped_allocator_adaptor::destroy): Use it.
(scoped_allocator_adaptor::construct): Likewise. Overload for
piecewise construction of std::pair objects.
* testsuite/20_util/scoped_allocator/2.cc: New.
* doc/xml/manual/status_cxx2011.xml: Update.
From-SVN: r192613
2012-10-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/54981
* tree-loop-distribution.c (ssa_name_has_uses_outside_loop_p):
Do not consider debug stmts as uses.
* gcc.dg/pr54981.c: New testcase.
From-SVN: r192612
gcc/ChangeLog
PR target/54892
* config/arm/arm.c (arm_expand_compare_and_swap): Use SImode to make
sure the mode is correct when falling through from above cases.
gcc/testsuite/ChangeLog
PR target/54892
* gcc.target/arm/pr54892.c: New.
From-SVN: r192609
* gcc.dg/tree-ssa/cunroll-1.c: New testcase.
* gcc.dg/tree-ssa/cunroll-2.c: New testcase.
* gcc.dg/tree-ssa/cunroll-3.c: New testcase.
* gcc.dg/tree-ssa/cunroll-4.c: New testcase.
* gcc.dg/tree-ssa/cunroll-5.c: New testcase.
From-SVN: r192608
* config/rs6000/predicates.md (splat_input_operand): Don't call
input_operand for MEMs. Instead check for volatile and call
memory_address_addr_space_p with modified mode.
From-SVN: r192590
2012-10-18 Tobias Burnus <burnus@net-b.de>
PR fortran/54884
* resolve.c (specification_expr): Change to bool.
(resolve_formal_arglist, resolve_symbol): Set
specification_expr to true before resolving the array spec.
(resolve_variable, resolve_charlen, resolve_fl_variable):
Properly reset specification_expr.
(resolve_function): Set public_use when used in
a specification expr.
2012-10-18 Tobias Burnus <burnus@net-b.de>
PR fortran/54884
* gfortran.dg/public_private_module_7.f90: New.
From-SVN: r192571
* loop-invariant.c: Include target.h.
(check_dependency): Return false for an uninitialized argument register
that is likely to be spilled.
* Makefile.in (loop-invariant.o): Add $(TARGET_H).
From-SVN: r192566
2012-10-17 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (rs6000_isa_flags): New flag word to
replace target_flags that gives us 63 possible switches.
(x_rs6000_isa_flags): Save area for rs6000_isa_flags.
(x_rs6000_isa_flags_explicit): Save area for
rs6000_isa_flags_explicit.
(rs6000_target_flags_explicit): Delete in favor of
x_rs6000_isa_flags_explicit.
(-mpowerpc64): Change all switches that used to be in target_flags
to now be in rs6000_isa_flags. In using rs6000_isa_flags, the
options machinary will generate names of the form OPITON_<xxx>
instead of TARGET_<xxx> and OPTION_MASK_<xxx> instead of
MASK_<xxx>.
(-mpowerpc-gpopt): Likewise.
(-mpowerpc-gfxopt): Likewise.
(-mmfcrf): Likewise.
(-mpopcntb): Likewise.
(-mfprnd): Likewise.
(-mcmpb): Likewise.
(-mmfpgpr): Likewise.
(-maltivec): Likewise.
(-mhard-dfp): Likewise.
(-mmulhw): Likewise.
(-mdlmzb): Likewise.
(-mmultiple): Likewise.
(-mstring): Likewise.
(-msoft-float): Likewise.
(-mhard-float): Likewise.
(-mpopcntd): Likewise.
(-mvsx): Likewise.
(-mno-update): Likewise.
(-mupdate): Likewise.
(-mrecip-precision): Likewise.
(-mminimal-toc): Likewise.
(-misel): Likewise.
* config/rs6000/aix64.opt (-maix64): Likewise.
(-maix32): Likewise.
* config/rs6000/sysv4.opt (-mstrict-align): Likewise.
(-mrelocatable): Likewise.
(-mlittle-endian): Likewise.
(-mlittle): Likewise.
(-mbig-endian): LIkewise.
(-mbig): Likewise.
(-meabi): Likewise.
(-m64): Likewise.
(-m32): Likewise.
* config/rs6000/darwin.opt (-m64): Likewise.
(-m32): Likewise.
* config/rs6000/rs6000-cpus.def (ISA_2_1_MASKS): Move the various
masks used in rs6000.c here, since they are more logically in this
file. Convert from being enums to just #defines, since the types
of these masks is now HOST_WIDE_INT instead of int. For
POWERPC_MASKS, add MASK_SOFT_FLOAT, since the only use case or'ed
in the mask. Change the use in rs6000.c not to do the OR of
MASK_SOFT_FLOAT.
(ISA_2_1_MASKS): Likewise.
(ISA_2_2_MASKS): Likewise.
(ISA_2_4_MASKS): Likewise.
(ISA_2_5_MASKS_EMBEDDED): Likewise.
(ISA_2_5_MASKS_SERVER): Likewise.
(POWERPC_7400_MASK): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (ISA_2_1_MASKS): Likewise.
(ISA_2_1_MASKS): Likewise.
(ISA_2_2_MASKS): Likewise.
(ISA_2_4_MASKS): Likewise.
(ISA_2_5_MASKS_EMBEDDED): Likewise.
(ISA_2_5_MASKS_SERVER): Likewise.
(POWERPC_7400_MASK): Likewise.
(POWERPC_MASKS): Likewise.
(rs6000_option_override_internal): Likewise.
* config/rs6000/rs6000.c (darwin_rs6000_override_options): Change
all uses of target_flags to rs6000_isa_flags. Change all uses of
target_flags_explicit to rs6000_isa_flags_explicit. Change the
use of MASK_<xxx> to OPTION_MASK_<xxx> that options.h defines when
we use a secondary flags word. Save/restore/print the new flags
word when switching contexts with different target attributes.
(rs6000_option_override_internal): Likewise.
(rs6000_darwin_file_start): Likewise.
(rs6000_opt_masks): Likewise.
(rs6000_inner_target_options): Likewise.
(rs6000_pragma_target_parse): Likewise.
(rs6000_set_current_function): Likewise.
(rs6000_function_specific_save): Likewise.
(rs6000_function_specific_restore): Likewise.
(rs6000_function_specific_print): Likewise.
(rs6000_can_inline_p): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
Likewise.
(rs6000_cpu_cpp_builtins): Likewise.
* common/config/rs6000/rs6000-driver.c (rs6000_handle_option):
Likewise.
* config/rs6000/rs6000.h (MASK_ALTIVEC): In moving to using
Var(...) for all of the isa switches, the options machinery now
uses OPTION_MASK_<xxx> instead of MASK_<xxx> for the mask name.
Use #define to map the old name into the new name. For switches
that are defined in aix64.opt, sysv4.opt, and darwin.opt, only do
the definition if those switches were defined.
(MASK_ALTIVEC): Likewise.
(MASK_CMPB): Likewise.
(MASK_DFP): Likewise.
(MASK_DLMZB): Likewise.
(MASK_EABI): Likewise.
(MASK_FPRND): Likewise.
(MASK_HARD_FLOAT): Likewise.
(MASK_ISEL): Likewise.
(MASK_MFCRF): Likewise.
(MASK_MFPGPR): Likewise.
(MASK_MULHW): Likewise.
(MASK_MULTIPLE): Likewise.
(MASK_NO_UPDATE): Likewise.
(MASK_POPCNTB): Likewise.
(MASK_POPCNTD): Likewise.
(MASK_PPC_GFXOPT): Likewise.
(MASK_PPC_GPOPT): Likewise.
(MASK_RECIP_PRECISION): Likewise.
(MASK_SOFT_FLOAT): Likewise.
(MASK_STRICT_ALIGN): Likewise.
(MASK_STRING): Likewise.
(MASK_UPDATE): Likewise.
(MASK_VSX): Likewise.
(MASK_POWERPC64): Likewise.
(MASK_64BIT): Likewise.
(MASK_RELOCATABLE): Likewise.
(MASK_LITTLE_ENDIAN): Likewise.
(MASK_MINIMAL_TOC): Likewise.
(MASK_REGNAMES): Likewise.
(MASK_PROTOTYPE): Likewise.
(rs6000_isa_flags_explicit): Define in terms of the
global_options_set structure.
* gcc/config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS):
Change use of target_flags to rs6000_isa_flags,
target_flags_explicit to rs6000_isa_flags_explicit, and MASK_<xxx>
to OPTION_MASK_<xxx>.
* gcc/config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS):
Likewise.
* gcc/config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS):
Likewise.
* gcc/config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS):
Likewise.
* gcc/config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS):
Likewise.
* gcc/config/rs6000/freebsd64.h (RELOCATABLE_NEEDS_FIXUP):
Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
* gcc/config/rs6000/freebsd.h (RELOCATABLE_NEEDS_FIXUP):
Likewise.
* gcc/config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP):
Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
(OPTION_LITTLE_ENDIAN): Likewise.
(OPTION_RELOCATABLE): Likewise.
(OPTION_EABI): Likewise.
(OPTION_PROTOTYPE): Likewise.
* gcc/config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Likewise.
* gcc/config/rs6000/option-defaults.h (OPTION_MASK_64BIT):
Likewise.
(OPT_ARCH32): Likewise.
(OPT_ARCH64): Likewise.
* gcc/config/rs6000/sysv4.h (TARGET_TOC): Likewise.
(SUBTARGET_OVERRIDE_OPTIONS): Likewise.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
(TARGET_OS_SYSV_CPP_BUILTINS): Likewise.
* config/rs6000/t-rs6000 (rs6000.o): Add rs6000-cpus.def as a
dependency.
From-SVN: r192545
* cfgloopmanip.c (copy_loop_info): New function.
(duplicate_loop): Use it.
(loop_version): Use it.
* loop-unswitch.c (unswitch_loop): Use it.
* cfgloop.h (copy_loop_info): Declare.
From-SVN: r192543
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Add edge_to_cancel
parameter and use it to estimate code optimized out in the final iteration.
(loop_edge_to_cancel): New function.
(try_unroll_loop_completely): New IRRED_IVALIDATED parameter;
handle unrolling loops with bounds given via max_loop_iteratins;
handle unrolling non-inner loops when code size shrinks;
tidy dump output; when the last iteration loop still stays
as loop in the CFG forcongly redirect the latch to
__builtin_unreachable.
(canonicalize_loop_induction_variables): Add irred_invlaidated
parameter; record niter bound derrived; dump
max_loop_iterations bounds; call try_unroll_loop_completely
even if no niter bound is given.
(canonicalize_induction_variables): Handle irred_invalidated.
(tree_unroll_loops_completely): Handle non-innermost loops;
handle irred_invalidated.
* cfgloop.h (unlop): Declare.
* cfgloopmanip.c (unloop): Export.
* tree.c (build_common_builtin_nodes): Build BULTIN_UNREACHABLE.
* gcc.target/i386/l_fma_float_?.c: Update.
* gcc.target/i386/l_fma_double_?.c: Update.
* gfortran.dg/do_1.f90: XFAIL
* gcc.dg/tree-ssa/cunroll-1.c: New testcase.
* gcc.dg/tree-ssa/cunroll-2.c: New testcase.
* gcc.dg/tree-ssa/cunroll-3.c: New testcase.
* gcc.dg/tree-ssa/cunroll-4.c: New testcase.
* gcc.dg/tree-ssa/cunroll-5.c: New testcase.
* gcc.dg/tree-ssa/ldist-17.c: Block cunroll to make testcase still
valid.
From-SVN: r192538
2012-10-17 Richard Biener <rguenther@suse.de>
* tree-streamer-out.c (write_ts_decl_common_tree_pointers):
Do not write TREE_CHAIN of PARM_DECLs.
(write_ts_decl_non_common_tree_pointers): Instead stream
the DECL_ARGUMENTS chain.
* tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
Do not read TREE_CHAIN of PARM_DECLs.
(lto_input_ts_decl_non_common_tree_pointes): Instead read
the DECL_ARGUMENTS as chain.
From-SVN: r192529
* df-problems.c (df_kill_notes): Split up in two functions.
(df_remove_dead_and_unused_notes): New function, first half of
df_kill notes to remove all REG_DEAD and REG_UNUSED notes.
(df_remove_dead_eq_notes): New function, second half of df_kill_notes
to remove REG_EQUAL and REG_EQUIV notes referring to dead registers.
(df_note_bb_compute): Call df_remove_dead_and_unused_notes instead
of df_kill_notes. Call df_remove_dead_eq_notes after processing insn.
* web.c (web): Re-add DF_RD_PRUNE_DEAD_DEFS;
From-SVN: r192526
PR rtl-optimization/54870
* tree.h (TREE_ADDRESSABLE): Document special usage on SSA_NAME.
* cfgexpand.c (update_alias_info_with_stack_vars ): Set it on the
SSA_NAME pointer that points to a partition if there is at least
one variable with it set in the partition.
* dse.c (local_variable_can_escape): New predicate.
(can_escape): Call it.
* gimplify.c (mark_addressable): If this is a partitioned decl, also
mark the SSA_NAME pointer that points to a partition.
From-SVN: r192517
* expr.c (move_by_pieces, move_by_pieces_ninsns, can_store_by_pieces)
(store_by_pieces_1): Don't enter loop when no more data is left.
From-SVN: r192514