1. 25 Aug, 2011 12 commits
    • regrename.c (scan_rtx_reg, [...]): Don't declare. · f24acbef
      	* regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use,
      	dump_def_use_chain): Don't declare.
      	(mark_conflict, create_new_chain): Move before users.
      	(regrename_optimize): Move to near end of file.
      
      From-SVN: r178065
      Bernd Schmidt committed
    • avr-protos.h (byte_immediate_operand): Remove Prototype. · c331eabe
      	* config/avr-protos.h (byte_immediate_operand): Remove Prototype.
      	(secondary_input_reload_class): Remove Prototype.
      	* config/avr/avr.c (byte_immediate_operand): Remove Function.
      	* config/avr/avr.md (setmemhi): Use u8_operand.
      	(strlenhi): Use const0_rtx for comparison.
      	* config/avr/avr.h (avr_reg_order): Remove Declaration.
      
      From-SVN: r178064
      Georg-Johann Lay committed
    • avr.c (reg_class_tab): Make local to avr_regno_reg_class. · 61af7eb4
      	* config/avr/avr.c (reg_class_tab): Make local to
      	avr_regno_reg_class.  Return smallest register class available.
      
      From-SVN: r178063
      Georg-Johann Lay committed
    • avr.c (STR_PREFIX_P): New Define. · f2814222
      	
      	* config/avr/avr.c (STR_PREFIX_P): New Define.
      	(avr_asm_declare_function_name): Use it.
      	(avr_asm_named_section): Use it.
      	(avr_section_type_flags): Use it.
      
      From-SVN: r178062
      Georg-Johann Lay committed
    • Wshadow-3.c: Restore original content destroyed by r148442. · cbba4777
      2011-08-25  Richard Guenther  <rguenther@suse.de>
      
      	* gcc.dg/Wshadow-3.c: Restore original content destroyed by r148442.
      
      From-SVN: r178061
      Richard Guenther committed
    • ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly instructions. · 4ac9cf2b
      2011-08-25  Andrew Haley  <aph@redhat.com>
      
              * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly
              instructions.
              * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead.
      
      From-SVN: r178060
      Andrew Haley committed
    • md.texi (automata_option): Document collapse-ndfa. · 1e6a9047
      	* doc/md.texi (automata_option): Document collapse-ndfa.
      	* genautomata.c (COLLAPSE_OPTION): New macro.
      	(collapse_flag): New static variable.
      	(struct description): New member normal_decls_num.
      	(struct automaton): New members advance_ainsn and collapse_ainsn.
      	(gen_automata_option): Check for COLLAPSE_OPTION.
      	(collapse_ndfa_insn_decl): New static variable.
      	(add_collapse_ndfa_insn_decl, special_decl_p): New functions.
      	(find_arc): If insn is the collapse-ndfa insn, accept any arc we
      	find.
      	(transform_insn_regexps): Call add_collapse_ndfa_insn_decl if
      	necessary.  Use normal_decls_num rather than decls_num, remove
      	test for special decls.
      	(create_alt_states, form_ainsn_with_same_reservs): Use
      	special_decl_p.
      	(make_automaton); Likewise.  Use the new advance_cycle_insn member
      	of struct automaton.
      	(create_composed_state): Disallow advance-cycle arcs if collapse_flag
      	is set.
      	(NDFA_to_DFA): Don't create composed states for the collapse-ndfa
      	transition.  Create the necessary transitions for it.
      	(create_ainsns): Return void.  Take an automaton_t argument, and
      	update its ainsn_list, advance_ainsn and collapse_ainsn members.  All
      	callers changed.
      	(COLLAPSE_NDFA_VALUE_NAME): New macro.
      	(output_tables): Output code to define it.
      	(output_internal_insn_code_evaluation): Output code to accept
      	const0_rtx as collapse-ndfa transition.
      	(output_default_latencies, output_print_reservation_func,
      	output_print_description): Reorganize loops to use normal_decls_num
      	as loop bound; remove special case for advance_cycle_insn_decl.
      	(initiate_automaton_gen): Handle COLLAPSE_OPTION.
      	(check_automata_insn_issues): Check for collapse_ainsn.
      	(expand_automate): Allocate sufficient space.  Initialize
      	normal_decls_num.
      
      From-SVN: r178059
      Bernd Schmidt committed
    • avr.md: Fix indentation from r177991. · 07f10472
      	
      	* config/avr/avr.md: Fix indentation from r177991.
      
      From-SVN: r178058
      Georg-Johann Lay committed
    • regrename.c (struct du_head): Remove member terminated. · d3e80850
      	* regrename.c (struct du_head): Remove member terminated.
      	(create_new_chain): Don't initialize it.
      	(scan_rtx_reg): Don't set or test it, test the open_chains_set
      	bitmap instead.
      	(tick, this_tick): New global variables, moved out of
      	regrename_optimize.
      	(current_id, open_chains, closed_chains, open_chains_set,
      	live_in_chains, live_hard_regs): Reorder declarations.
      	(dump_def_use_chain): Move function earlier in the file.
      	(rename_chains): New static function, broken out of
      	regrename_optimize.
      	(regrename_optimize): Use it.  Remove #if 0'ed code.
      
      From-SVN: r178057
      Bernd Schmidt committed
    • Don't assume hg convert in gcc_update · 39b75e51
      	* gcc_update: Determine svn branch from hg convert_revision.
      
      From-SVN: r178056
      Rainer Orth committed
    • varasm.c: (default_binds_local_p_1): Commentary typo fix. · 8619577f
      2011-08-25  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
      
      	* varasm.c: (default_binds_local_p_1): Commentary typo fix.
      
      From-SVN: r178055
      Bernhard Reutner-Fischer committed
    • Daily bump. · 6c41a083
      From-SVN: r178053
      GCC Administrator committed
  2. 24 Aug, 2011 13 commits
  3. 23 Aug, 2011 15 commits
    • ira.c (ira_init_register_move_cost): Check small subclasses through… · d7b17703
      ira.c (ira_init_register_move_cost): Check small subclasses through ira_reg_class_max_nregs and ira_available_class_regs.
      
      2011-08-23  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira.c (ira_init_register_move_cost): Check small subclasses
      	through ira_reg_class_max_nregs and ira_available_class_regs.
      
      From-SVN: r178019
      Vladimir Makarov committed
    • re PR libstdc++/50153 (hppa64-hp-hpux11.11/libstdc++-v3/include/cstdlib:106:11:… · 3d3aae5b
      re PR libstdc++/50153 (hppa64-hp-hpux11.11/libstdc++-v3/include/cstdlib:106:11: error: '::abs' has not been declared)
      
      2011-08-23  Steve Ellcey  <sje@cup.hp.com>
      
      	PR libstdc++/50153
      	* inclhack.def (hpux11_abs): Extend to all hpux machines.
      	* fixincl.x: Regenerate.
      
      From-SVN: r178018
      Steve Ellcey committed
    • * config/i386/sse-22.c: Rearrange to fix sse-22a.c failure. · c1415b6e
      From-SVN: r178017
      Uros Bizjak committed
    • constraints.md (Yp): New register constraint. · 78d8c16c
      	* config/i386/constraints.md (Yp): New register constraint.
      	* config/i386/i386.md (*addhi_1): Merge with *addhi_1_lea using
      	Yp register constraint.
      	(*addqi_1): Merge with *addqi_1_lea using Yp register constraint.
      	(*ashlhi3_1): Merge with *ashlhi3_1_lea using Yp register constraint.
      	(*ashlqi3_1): Merge with *ashlqi3_1_lea using Yp register constraint.
      
      From-SVN: r178011
      Uros Bizjak committed
    • Add AVX2 testcases. · 2ddfea8a
      gcc/
      
      2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
      
      	* config/i386/sse.md (<s>mul<mode>3_highpart): Update.
      
      gcc/testsuite/
      
      2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
      
      	* g++.dg/other/i386-2.C: Add -mavx2 check.
      	* g++.dg/other/i386-3.C: Likewise.
      	* gcc.target/i386/avx-1.c: Add AVX2.
      	* gcc.target/i386/avx-2.c: Likewise.
      	* gcc.target/i386/funcspec-5.c: Likewise.
      	* gcc.target/i386/sse-12.c: Likewise.
      	* gcc.target/i386/sse-13.c: Likewise.
      	* gcc.target/i386/sse-14.c: Likewise.
      	* gcc.target/i386/sse-22.c: Likewise.
      	* gcc.target/i386/sse-23.c: Likewise.
      	* gcc.target/i386/i386.exp (check_effective_target_avx2): Likewise.
      	* gcc.target/i386/avx2-check.h: New.
      	* gcc.target/i386/avx2-i32gatherd-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd256-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd256-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd256-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherd256-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd256-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd256-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd256-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherpd256-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps256-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps256-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps256-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherps256-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq-4.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq256-1.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq256-2.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq256-3.c: Likewise.
      	* gcc.target/i386/avx2-i32gatherq256-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd256-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd256-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd256-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherd256-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd256-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd256-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd256-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherpd256-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps256-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps256-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps256-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherps256-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq-4.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq256-1.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq256-2.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq256-3.c: Likewise.
      	* gcc.target/i386/avx2-i64gatherq256-4.c: Likewise.
      	* gcc.target/i386/avx2-mpsadbw-1.c: Likewise.
      	* gcc.target/i386/avx2-mpsadbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastsd_pd-1.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastsi128-1.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastss_ps-1.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastss_ps256-1.c: Likewise.
      	* gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
      	* gcc.target/i386/avx2-vextracti128-1.c: Likewise.
      	* gcc.target/i386/avx2-vextracti128-2.c: Likewise.
      	* gcc.target/i386/avx2-vinserti128-1.c: Likewise.
      	* gcc.target/i386/avx2-vinserti128-2.c: Likewise.
      	* gcc.target/i386/avx2-vmovmskb-2.c: Likewise.
      	* gcc.target/i386/avx2-vmovntdqa-1.c: Likewise.
      	* gcc.target/i386/avx2-vmovntdqa-2.c: Likewise.
      	* gcc.target/i386/avx2-vpabsb256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpabsb256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpabsd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpabsd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpabsw256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpabsw256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpackssdw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpackssdw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpacksswb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpacksswb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpackusdw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpackusdw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpackuswb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpackuswb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddsb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddsb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddusb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddusb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddusw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddusw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpaddw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpaddw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpalignr256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpalignr256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpand-1.c: Likewise.
      	* gcc.target/i386/avx2-vpand-2.c: Likewise.
      	* gcc.target/i386/avx2-vpandn-1.c: Likewise.
      	* gcc.target/i386/avx2-vpandn-2.c: Likewise.
      	* gcc.target/i386/avx2-vpavgb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpavgb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpavgw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpavgw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpblendd128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpblendd128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpblendd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpblendd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpblendvb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpblendvb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpblendw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpblendw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastb128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastb128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastb256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastb256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastd128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastd128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastq128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastq128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastq256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastq256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastw128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastw128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastw256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpbroadcastw256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpeqw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpcmpgtw-2.c: Likewise.
      	* gcc.target/i386/avx2-vperm2i128-1.c: Likewise.
      	* gcc.target/i386/avx2-vperm2i128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpermd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpermd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpermpd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpermpd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpermps-1.c: Likewise.
      	* gcc.target/i386/avx2-vpermps-2.c: Likewise.
      	* gcc.target/i386/avx2-vpermq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpermq-2.c: Likewise.
      	* gcc.target/i386/avx2-vphaddd-1.c: Likewise.
      	* gcc.target/i386/avx2-vphaddd-2.c: Likewise.
      	* gcc.target/i386/avx2-vphaddsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vphaddsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vphaddw-1.c: Likewise.
      	* gcc.target/i386/avx2-vphaddw-2.c: Likewise.
      	* gcc.target/i386/avx2-vphsubd-1.c: Likewise.
      	* gcc.target/i386/avx2-vphsubd-2.c: Likewise.
      	* gcc.target/i386/avx2-vphsubsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vphsubsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vphsubw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaddubsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaddubsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaddwd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaddwd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadq256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstored-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstored-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstored256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstored256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstoreq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstoreq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstoreq256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxub-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxub-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxud-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxud-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxuw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmaxuw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminsb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminsb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminsd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminsd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminub-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminub-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminud-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminud-2.c: Likewise.
      	* gcc.target/i386/avx2-vpminuw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpminuw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovmskb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxdq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxdq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxwd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxwd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxwq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovsxwq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxdq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxdq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxwd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxwd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxwq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmovzxwq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmuldq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmuldq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhrsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhrsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhuw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhuw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmulhw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmulld-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmulld-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmullw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmullw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpmuludq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpmuludq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpor-1.c: Likewise.
      	* gcc.target/i386/avx2-vpor-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsadbw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsadbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpshufb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpshufb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpshufd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpshufd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpshufhw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpshufhw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpshuflw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpshuflw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsignb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsignb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsignd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsignd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsignw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsignw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpslld-1.c: Likewise.
      	* gcc.target/i386/avx2-vpslld-2.c: Likewise.
      	* gcc.target/i386/avx2-vpslldi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpslldi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpslldq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpslldq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllqi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllqi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvd128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvd128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvq128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvq128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvq256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllvq256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsllwi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsllwi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrad-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrad-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsradi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsradi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsravd128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsravd128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsravd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsravd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsraw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsraw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrawi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrawi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrld-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrld-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrldi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrldi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrldq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrldq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlqi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlqi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvd128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvd128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvd256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvd256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvq128-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvq128-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvq256-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlvq256-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlwi-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsrlwi-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubsb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubsb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubsw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubsw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubusb-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubusb-2.c: Likewise.
      	* gcc.target/i386/avx2-vpsubusw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpsubusw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhbw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhdq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhdq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhqdq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhqdq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhwd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckhwd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklbw-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklbw-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckldq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpckldq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklqdq-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklqdq-2.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklwd-1.c: Likewise.
      	* gcc.target/i386/avx2-vpunpcklwd-2.c: Likewise.
      	* gcc.target/i386/avx2-vpxor-1.c: Likewise.
      	* gcc.target/i386/avx2-vpxor-2.c: Likewise.
      	* gcc.target/i386/testimm-9.c: Likewise.
      
      From-SVN: r178006
      Kirill Yukhin committed
    • re PR middle-end/38509 (Bogus "attempt to free a non-heap object" warning) · a3a704a4
      2011-08-23  Mark Heffernan  <meheff@google.com>
      
              PR middle-end/38509
              * common.opt (Wfree-nonheap-object): New option.
              * doc/invoke.texi (Warning options): Document -Wfree-nonheap-object.
              * builtins.c (maybe_emit_free_warning): Add OPT_Wfree_nonheap_object
              to warning.
              (expand_builtin): Make warning conditional.
      
      From-SVN: r178004
      Mark Heffernan committed
    • Add BMI2 support. · 82feeb8d
      gcc/
      
      2011-08-23  Uros Bizjak  <ubizjak@gmail.com>
      
      	* config/i386/i386.md (type): Add imulx, ishiftx and rotatex.
      	(length_immediate): Handle imulx, ishiftx and rotatex.
      	(imm_disp): Ditto.
      	(isa): Add bmi2.
      	(enabled): Handle bmi2.
      	(w): New mode attribute.
      	(*mul<mode><dwi>3): Split from *<u>mul<mode><dwi>3.
      	(*umul<mode><dwi>3): Ditto.  Add imulx BMI2 alternative.
      	(*bmi2_umulditi3_1): New insn pattern.
      	(*bmi2_umulsidi3_1): Ditto.
      	(*umul<mode><dwi>3 splitter): New splitter to avoid flags
      	dependency.
      	(*bmi2_ashl<mode>3_1): New insn pattern.
      	(*ashl<mode>3_1): Add ishiftx BMI2 alternative.
      	(*ashl<mode>3_1 splitter): New splitter to avoid flags
      	dependency.
      	(*bmi2_ashlsi3_1_zext): New insn pattern.
      	(*ashlsi3_1_zext): Add ishiftx BMI2 alternative.
      	(*ashlsi3_1_zext splitter): New splitter to avoid flags
      	dependency.
      	(*bmi2_<shiftrt_insn><mode>3_1): New insn pattern.
      	(*<shiftrt_insn><mode>3_1): Add ishiftx BMI2 alternative.
      	(*<shiftrt_insn><mode>3_1 splitter): New splitter to avoid
      	flags dependency.
      	(*bmi2_<shiftrt_insn>si3_1_zext): New insn pattern.
      	(*<shiftrt_insn>si3_1_zext): Add ishiftx BMI2 alternative.
      	(*<shiftrt_insn>si3_1_zext splitter): New splitter to avoid
      	flags dependency.
      	(*bmi2_rorx<mode>3_1): New insn pattern.
      	(*<rotate_insn><mode>3_1): Add rotatex BMI2 alternative.
      	(*rotate<mode>3_1 splitter): New splitter to avoid flags
      	dependency.
      	(*rotatert<mode>3_1 splitter): Ditto.
      	(*bmi2_rorxsi3_1_zext): New insn pattern.
      	(*<rotate_insn>si3_1_zext): Add rotatex BMI2 alternative.
      	(*rotatesi3_1_zext splitter): New splitter to avoid flags
      	dependency.
      	(*rotatertsi3_1_zext splitter): Ditto.
      
      2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
      
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_BMI2_SET):
      	New.
      	(OPTION_MASK_ISA_BMI2_UNSET): Likewise.
      	(ix86_handle_option): Handle OPT_mbmi2 case.
      	* config.gcc (i[34567]86-*-*): Add bmi2intrin.h.
      	(x86_64-*-*): Likewise.
      	* config/i386/bmi2intrin.h: New file.
      	* config/i386/cpuid.h (bit_BMI2): New.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
      	BMI2 feature.
      	* config/i386/i386-c.c (ix86_target_macros_internal):
      	Conditionally define __BMI2__.
      	* config/i386/i386.c (ix86_option_override_internal): Define PTA_BMI2.
      	Handle BMI2 option.
      	(ix86_valid_target_attribute_inner_p): Handle BMI2 option.
      	(print_reg): New code.
      	(ix86_print_operand): Likewise.
      	(ix86_builtins): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
      	IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
      	IX86_BUILTIN_PEXT64.
      	(bdesc_args): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
      	IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
      	IX86_BUILTIN_PEXT64.
      	* config/i386/i386.h (TARGET_BMI2): New.
      	* config/i386/i386.md (UNSPEC_PDEP): New.
      	(UNSPEC_PEXT): Likewise.
      	(*bmi2_bzhi_<mode>3): Likewise.
      	(*bmi2_pdep_<mode>3): Likewise.
      	(*bmi2_pext_<mode>3): Likewise.
      	* config/i386/i386.opt (mbmi2): New.
      	* config/i386/x86intrin.h: Include bmi2intrin.h when __BMI2__
      	is defined.
      	* doc/extend.texi: Document BMI2 built-in functions.
      	* doc/invoke.texi: Document -mbmi2.
      
      gcc/testsuite/
      
      2011-08-23  Kirill Yukhin  <kirill.yukhin@intel.com>
      
      	* g++.dg/other/i386-2.C: Add -mbmi2 check.
      	* g++.dg/other/i386-3.C: Likewise.
      	* gcc.target/i386/bmi2-bzhi32-1.c: New testcase.
      	* gcc.target/i386/bmi2-bzhi32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-bzhi64-1.c: Likewise.
      	* gcc.target/i386/bmi2-bzhi64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-mulx32-1.c: Likewise.
      	* gcc.target/i386/bmi2-mulx32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-mulx64-1.c: Likewise.
      	* gcc.target/i386/bmi2-mulx64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-pdep32-1.c: Likewise.
      	* gcc.target/i386/bmi2-pdep32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-pdep64-1.c: Likewise.
      	* gcc.target/i386/bmi2-pdep64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-pext32-1.c: Likewise.
      	* gcc.target/i386/bmi2-pext32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-pext64-1.c: Likewise.
      	* gcc.target/i386/bmi2-pext64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-rorx32-1.c: Likewise.
      	* gcc.target/i386/bmi2-rorx32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-rorx64-1.c: Likewise.
      	* gcc.target/i386/bmi2-rorx64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-sarx32-1.c: Likewise.
      	* gcc.target/i386/bmi2-sarx32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-sarx64-1.c: Likewise.
      	* gcc.target/i386/bmi2-sarx64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-shlx32-1.c: Likewise.
      	* gcc.target/i386/bmi2-shlx32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-shlx64-1.c: Likewise.
      	* gcc.target/i386/bmi2-shlx64-1a.c: Likewise.
      	* gcc.target/i386/bmi2-shrx32-1.c: Likewise.
      	* gcc.target/i386/bmi2-shrx32-1a.c: Likewise.
      	* gcc.target/i386/bmi2-shrx64-1.c: Likewise.
      	* gcc.target/i386/bmi2-shrx64-1a.c: Likewise.
      	* gcc.target/i386/i386.exp (check_effective_target_bmi2): New.
      	* gcc.target/i386/sse-12.c: Add BMI2.
      	* gcc.target/i386/sse-13.c: Likewise.
      	* gcc.target/i386/sse-14.c: Likewise.
      	* gcc.target/i386/sse-22.c: Likewise.
      	* gcc.target/i386/sse-23.c: Likewise.
      
      From-SVN: r178001
      H.J. Lu committed
    • typeck2.c (build_functional_cast): Don't try to avoid calling build_value_init. · 30d1352e
      	* typeck2.c (build_functional_cast): Don't try to avoid calling
      	build_value_init.
      	* pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
      
      From-SVN: r177999
      Jason Merrill committed
    • re PR c++/49045 ([C++0x] unexpected "different exception specifier" error with noexcept) · f7d605ac
      	PR c++/49045
      	Core 1321
      	* tree.c (dependent_name): New.
      	(cp_tree_equal): Two calls with the same dependent name are
      	equivalent even if the overload sets are different.
      
      From-SVN: r177998
      Jason Merrill committed
    • tree.c (build_target_expr): Set TREE_CONSTANT on literal TARGET_EXPR if the value is constant. · 30fdd4f2
      	* tree.c (build_target_expr): Set TREE_CONSTANT on
      	literal TARGET_EXPR if the value is constant.
      	* typeck2.c (build_functional_cast): Don't set it here.
      
      From-SVN: r177997
      Jason Merrill committed
    • Core 903 (partial) · 27bec7bf
      	Core 903 (partial)
      	* call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
      
      From-SVN: r177996
      Jason Merrill committed
    • Core 975 · 9b8662c2
      	Core 975
      	* decl.c (cxx_init_decl_processing): Initialize
      	dependent_lambda_return_type_node.
      	* cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
      	(dependent_lambda_return_type_node): Define.
      	(DECLTYPE_FOR_LAMBDA_RETURN): Remove.
      	* semantics.c (lambda_return_type): Handle overloaded function.
      	Use dependent_lambda_return_type_node instead of
      	DECLTYPE_FOR_LAMBDA_RETURN.
      	(apply_lambda_return_type): Don't check dependent_type_p.
      	* pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
      	(instantiate_class_template_1): Likewise.
      	(tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
      	* mangle.c (write_type): Likewise.
      	* typeck.c (structural_comptypes): Likewise.
      	(check_return_expr): Handle dependent_lambda_return_type_node.
      
      From-SVN: r177995
      Jason Merrill committed
    • re PR c++/50024 ([C++0x] [4.7 Regression] crash when using braced initialization… · 27879147
      re PR c++/50024 ([C++0x] [4.7 Regression] crash when using braced initialization in member function of template)
      
      	PR c++/50024
      	* semantics.c (maybe_constant_value): Don't try to fold { }.
      	* pt.c (build_non_dependent_expr): Don't wrap { }.
      	* init.c (build_value_init): Allow scalar value-init in templates.
      
      From-SVN: r177994
      Jason Merrill committed
    • re PR c++/50158 (invalid 'variable set but not used' warning (boolean used as an… · 09e640b3
      re PR c++/50158 (invalid 'variable set but not used' warning (boolean used as an index to an array))
      
      	PR c++/50158
      	* typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
      	if it has side-effects and needs to be preevaluated.
      
      	* g++.dg/warn/Wunused-var-16.C: New test.
      
      From-SVN: r177992
      Jakub Jelinek committed