* config/rs6000/rs6000.c (rs6000_register_move_cost): Preserve from
parameter value for dump. Dump cost on outermost call only.
(rs6000_memory_move_cost): Dump cost on outermost call only.
From-SVN: r174511
* cselib.c (promote_debug_loc): Allow l->next non-NULL for
cselib_preserve_constants.
(cselib_lookup_1): If cselib_preserve_constants,
a new VALUE is being created for REG and there is a VALUE for the
same register in wider mode, add another loc with lowpart SUBREG of
the wider VALUE.
(cselib_subst_to_values): Handle ENTRY_VALUE.
* var-tracking.c (replace_expr_with_values): Return NULL for
ENTRY_VALUE too.
* dwarf2out.c (convert_descriptor_to_signed): New function.
(mem_loc_descriptor) <case ZERO_EXTEND>: Optimize using DW_OP_and
instead of two shifts.
(mem_loc_descriptor) <do_shift>: ZERO_EXTEND second argument to
the right mode if needed.
(mem_loc_descriptor) <case MOD>: For typed ops just use DW_OP_mod.
(mem_loc_descriptor) <case UNSIGNED_FIX>: Use
convert_descriptor_to_signed.
(mem_loc_descriptor) <case UDIV, CLZ, CTZ, FFS, POPCOUNT, PARITY,
BSWAP, ROTATE, ROTATERT>: Handle these rtls.
* gcc.dg/guality/bswaptest.c: New test.
* gcc.dg/guality/clztest.c: New test.
* gcc.dg/guality/ctztest.c: New test.
* gcc.dg/guality/rotatetest.c: New test.
From-SVN: r174508
gcc/cp/ChangeLog
2010-05-31 Fabien Chene <fabien@gcc.gnu.org>
PR c++/48010
* name-lookup.c (supplement_binding_1): If the old binding was a
type name, also check that the DECL actually refers to the same
type or is not a type.
gcc/testsuite/ChangeLog
2010-05-31 Fabien Chene <fabien@gcc.gnu.org>
PR c++/48010
* g++.dg/lookup/name-clash9.C: New.
From-SVN: r174506
* config/i386/i386.md: Use SWI248x instead of X87MODEI, SWI24 instead
of X87MODEI12 and SWI48x instead of SSEMODEI24.
(SWI248x): New mode iterator, rename from X87MODEI.
(X87MODEI): Remove mode iterator.
(X87MODEI12): Ditto.
(SSEMODEI24): Ditto.
From-SVN: r174498
* config/i386/i386.md (*movtf_internal): Avoid allocating general
registers. Penalize F*r->o alternative to prevent partial memory
stalls. Slightly penalize *roF->*r alternative. Generate SSE
CONST_DOUBLE immediates when optimizing function for size. Do not move
CONST_DOUBLEs directly to memory for !TARGET_MEMORY_MISMATCH_STALL.
(*movxf_internal): Slightly penalize Yx*roF->Yx*r alternative.
(*movdf_internal): Slightly penalize Yd*roF->Yd*r alternative.
(*movdf_internal_rex64): Slightly penalize rm->r, F->m and r->m
alternatives.
(*movsf_internal): Slightly penalize rmF->r and Fr->m alternatives.
(fp_register_operand splitters): Use fp_register_operand
constraint. Do not use FP_REG_P in insn condition.
(any_fp_register_operand splitters): Use any_fp_register_operand
constraint. Do not use ANY_FP_REG_P in insn condition.
* config/i386/i386.md (*pushxf_nointeger): Merge alternatives 1 and 2.
(FP push_operand splitters): Merge {TF,XF,DF}mode splitters.
From-SVN: r174489
* cgraph.h (cgraph_inline_failed_t): Give enum a name
* lto-cgraph.c (LDPR_NUM_KNOWN): New macro.
(LTO_cgraph_tags): Add LTO_cgraph_last_tag.
(lto_output_edge): Use output_enum and var_len_unsigned.
(lto_output_varpool_node): Likewise.
(input_overwrite_node): Do not take resolution parameter;
extract it from a bitpack.
(input_node): Do not read resolution; use input_enum and
var_len_unsigned.
(input_varpool_node): Likewise.
(input_edge): Likewise.
(input_cgraph_1): Likewise.
From-SVN: r174487
2011-05-31 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_register_canonical_type): Do not register
any types via gimple_register_type.
From-SVN: r174483
2011-05-31 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/basic_string.h: Use noexcept per the FDIS (minus
compare(const string&), which uses char_traits::compare, which
isn't noexcept; also no noexcept in the move assignment operator
and move assign, see c++std-lib-30855).
* include/bits/basic_string.tcc: Likewise.
* include/ext/vstring.h: Likewise.
* include/ext/vstring.tcc: Likewise.
* include/debug/string: Likewise.
From-SVN: r174479
PR rtl-optimization/49235
* tree-ssa-address.c (gen_addr_rtx): Ignore base if it is const0_rtx.
(create_mem_ref_raw): Create MEM_REF even if base is INTEGER_CST.
* gcc.dg/pr49235.c: New test.
From-SVN: r174478
2011-05-31 Richard Guenther <rguenther@suse.de>
* tree-ssa-forwprop.c (forward_propagate_into_comparison): Rename
to ...
(forward_propagate_into_comparison_1): ... this.
(forward_propagate_comparison): Rename to ...
(forward_propagate_into_comparison): ... this. Split out
real forward propagation code to ...
(forward_propagate_comparison): ... this.
(forward_propagate_into_gimple_cond): Remove looping.
(forward_propagate_into_cond): Likewise.
(simplify_not_neg_expr): Return whether we have done something.
(simplify_gimple_switch): Likewise.
(tree_ssa_forward_propagate_single_use_vars): Rename to ...
(ssa_forward_propagate_and_combine): ... this. Re-structure
to do a forward forward-propagation walk on BBs and a backward
stmt combining walk on BBs. Consistently re-scan changed
statements.
(pass_forwprop): Adjust.
From-SVN: r174470
* config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high
part of the second operand is 0.
* gcc.c-torture/execute/pr49186.c: New.
From-SVN: r174456
* config/i386/i386.md (*movxf_internal): Penalize FYx*r->o alternative
to prevent partial memory stalls. Do not move CONST_DOUBLEs directly
to memory for !TARGET_MEMORY_MISMATCH_STALL.
(*movdf_internal_rex64): Do not penalize F->r alternative.
(*movdf_internal): Penalize FYd*r->o alternative to prevent partial
memory stalls. Generate SSE and x87 CONST_DOUBLE immediates only
when optimizing function for size. Do not move CONST_DOUBLEs
directly to memory for !TARGET_MEMORY_MISMATCH_STALL.
(FP move splitters): Merge {TF,XF,DF}mode move splitters. Do not
handle SUBREGs. Do not check for MEM_P operands in the insn condition,
check for ANY_FP_REGNO_P instead.
* config/i386/constraints.md (Yd): Enable GENERAL_REGS for
TARGET_64BIT and for TARGET_INTEGER_DFMODE_MOVES when optimizing
function for speed.
* config/i386/i386.c (ix86_option_override_internal): Do not
set TARGET_INTEGER_DFMODE_MOVES here.
From-SVN: r174453
* dwarf2out.c (modified_type_die, gen_reference_type_die): Use
DW_TAG_rvalue_reference_type even for
-gdwarf-4 -fno-debug-types-section.
From-SVN: r174449
* var-tracking.c (vt_add_function_parameter): Remap incoming MEMs with
crtl->args.internal_arg_pointer based address to arg_pointer_rtx if
there is a DRAP register and arg_pointer_rtx is the CFA pointer.
(vt_init_cfa_base): Don't equate cfa_base_rtx if stack was realigned.
(vt_initialize): Initialize cfa_base_rtx if there is a DRAP register.
From-SVN: r174438
2011-05-30 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_types_compatible_p_1): Compare record
and union type members properly.
From-SVN: r174436
2011-05-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/49210
* ipa-split.c (split_function): Care for the case where the
call result is not trivially convertible to the result holding
variable.
* gnat.dg/boolean_subtype2.adb: New testcase.
* gnat.dg/boolean_subtype2.ads: Likewise.
* gnat.dg/boolean_subtype2_pkg.ads: Likewise.
From-SVN: r174435
PR c++/49223
* semantics.c (finish_omp_clauses): Call require_complete_type
even for copyin/copyprivate clauses. Only call
cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
* g++.dg/gomp/pr49223-1.C: New test.
* g++.dg/gomp/pr49223-2.C: New test.
From-SVN: r174432