Commit Graph

111240 Commits

Author SHA1 Message Date
Bernd Schmidt 1e6a9047b3 md.texi (automata_option): Document collapse-ndfa.
* 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
2011-08-25 10:30:13 +00:00
Georg-Johann Lay 07f1047289 avr.md: Fix indentation from r177991.
* config/avr/avr.md: Fix indentation from r177991.

From-SVN: r178058
2011-08-25 10:27:18 +00:00
Bernd Schmidt d3e8085069 regrename.c (struct du_head): Remove member terminated.
* 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
2011-08-25 10:12:35 +00:00
Rainer Orth 39b75e51ec Don't assume hg convert in gcc_update
* gcc_update: Determine svn branch from hg convert_revision.

From-SVN: r178056
2011-08-25 09:16:52 +00:00
Bernhard Reutner-Fischer 8619577f3a varasm.c: (default_binds_local_p_1): Commentary typo fix.
2011-08-25  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	* varasm.c: (default_binds_local_p_1): Commentary typo fix.

From-SVN: r178055
2011-08-25 10:49:01 +02:00
GCC Administrator 6c41a083fa Daily bump.
From-SVN: r178053
2011-08-25 00:18:57 +00:00
Roberto Lublinerman 706cd57f71 gccgo...
gccgo: 	fixes to ast-dump, refactoring of export and ast-dump
        to implement a common interface for writing basic
        type literals and added flags for optimization.

	* lang.opt: Add fgo-optimize-.
	* go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize.
	* go-c.h (go_enable_optimize): Declare.
	* Make-lang.in (GO_OBJS): Add go/go-optimize.o.
	(GO_EXPORT_H): Define.
	(GO_IMPORT_H): Add $(GO_EXPORT_H).
	(GO_AST_DUMP_H): Define.
	(go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H.
	(go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H.
	(go/types.o): Likewise.
	(go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H.
	(go/go-optimize.o): New target.

From-SVN: r178046
2011-08-24 19:22:44 +00:00
H.J. Lu 8020d73e39 Mention PR target/50172.
From-SVN: r178040
2011-08-24 06:25:22 -07:00
H.J. Lu 25963ac440 Convert to Pmode if needed.
2011-08-24  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_expand_builtin): Convert to Pmode if
	needed.

From-SVN: r178039
2011-08-24 06:24:07 -07:00
Tobias Burnus 40885767dc re PR fortran/50163 (ICE: initialization expression)
2011-08-24  Tobias Burnus  <burnus@net-b.de>

        PR fortran/50163
        * expr.c (check_init_expr): Return when an error
        occured.

2011-08-24  Tobias Burnus  <burnus@net-b.de>

        PR fortran/50163
        * gfortran.dg/initialization_28.f90: New.

From-SVN: r178038
2011-08-24 15:11:08 +02:00
Richard Guenther 9fcb758bdc tree-data-ref.c (dr_analyze_indices): Avoid unsharing the ref in the basic-block case.
2011-08-24  Richard Guenther  <rguenther@suse.de>

	* tree-data-ref.c (dr_analyze_indices): Avoid unsharing the
	ref in the basic-block case.  Move stripping array-refs
	to the place we create an access-function for it.  Remove
	bogus stripping down a MEM_REF to its base.

From-SVN: r178037
2011-08-24 12:55:18 +00:00
Richard Guenther e66132e141 fold-const.c (fold_comparison): Fold &a < &a + 4 even with -fno-strict-overflow.
2011-08-24  Richard Guenther  <rguenther@suse.de>

	* fold-const.c (fold_comparison): Fold &a < &a + 4 even
	with -fno-strict-overflow.

From-SVN: r178036
2011-08-24 12:51:45 +00:00
Richard Guenther 76f60b1980 tree-vectorizer.c (vect_print_dump_info): Avoid the file and location clutter when dumping to dump files.
2011-08-24  Richard Guenther  <rguenther@suse.de>

	* tree-vectorizer.c (vect_print_dump_info): Avoid the
	file and location clutter when dumping to dump files.

From-SVN: r178034
2011-08-24 11:26:42 +00:00
Richard Biener 0e3fdb489e re PR c/49396 (c-family/c-cppbuiltin.c: duplicate if expressions)
2011-08-24  Richard Guenther  <rguenther@suse.de>

	PR c/49396

	c-family/
	* c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Fix conditional.

From-SVN: r178032
2011-08-24 11:16:57 +00:00
Simon Baldwin 6f0faeed90 gengtype-state.c (write_state): Remove timestamped header line.
2011-08-24  Simon Baldwin  <simonb@google.com>

	* gengtype-state.c (write_state): Remove timestamped header line.

From-SVN: r178031
2011-08-24 11:14:56 +00:00
Joseph Myers c5bc3df6db * Makefile.in (CFLAGS-collect2.o, CFLAGS-c-family/c-opts.o)
(CFLAGS-c-family/c-pch.o, CFLAGS-prefix.o, CFLAGS-version.o)
	(CFLAGS-lto-compress.o, CFLAGS-toplev.o, CFLAGS-intl.o)
	(CFLAGS-cppbuiltin.o, CFLAGS-cppdefault.o): New.
	(collect2.o, c-family/c-cppbuiltin.o, c-family/c-opts.o)
	(c-family/c-pch.o, prefix.o, version.o, lto-compress.o, toplev.o)
	(intl.o, cppbuiltin.o, cppdefault.o): Remove explicit compilation
	rules.
	(lto-wrapper$(exeext)): Use $(LINKER) not $(COMPILER).

ada:
	* gcc-interface/Make-lang.in (CFLAGS-ada/tracebak.o)
	(CFLAGS-ada/targext.o, CFLAGS-ada/cio.o, CFLAGS-ada/init.o)
	(CFLAGS-ada/initialize.o, CFLAGS-ada/raise.o): New.
	(ada/tracebak.o, ada/targext.o, ada/cio.o, ada/init.o)
	(ada/initialize.o, ada/raise.o): Remove explicit compilation rules.

fortran:
	* Make-lang.in (fortran/cpp.o): Remove explicit compilation rule.

go:
	* Make-lang.in (CFLAGS-go/go-lang.o): New.
	(go/go-lang.o): Remove explicit compilation rule.

java:
	* Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o):
	New.
	(java/jcf-io.o, java/jcf-path.o): Remove explicit compilation
	rules.

From-SVN: r178030
2011-08-24 11:47:06 +01:00
Joseph Myers 295409e1ad * Makefile.in (ALL_CXXFLAGS): Include $(CFLAGS-$@).
From-SVN: r178029
2011-08-24 11:42:11 +01:00
Richard Guenther 8c330caa3b re PR tree-optimization/50067 (Wrong code with -fpredictive-commoning)
2011-08-24  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/50067
	* tree-data-ref.c (dr_analyze_indices): Do not add an access
	function for a MEM_REF base that has no evolution in the loop
	nest or that is not analyzable.

	* gcc.dg/torture/pr50067-3.c: New testcase.
	* gcc.dg/torture/pr50067-4.c: Likewise.
	* gcc.dg/torture/pr50067-5.c: Likewise.

From-SVN: r178028
2011-08-24 10:07:20 +00:00
GCC Administrator 68fde24177 Daily bump.
From-SVN: r178023
2011-08-24 00:18:53 +00:00
Vladimir Makarov d7b1770388 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
2011-08-23 23:06:04 +00:00
Steve Ellcey 3d3aae5b2e 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
2011-08-23 21:32:34 +00:00
Uros Bizjak c1415b6e0b * config/i386/sse-22.c: Rearrange to fix sse-22a.c failure.
From-SVN: r178017
2011-08-23 23:14:10 +02:00
Uros Bizjak 78d8c16ca9 constraints.md (Yp): New register constraint.
* 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
2011-08-23 22:00:27 +02:00
Kirill Yukhin 2ddfea8a33 Add AVX2 testcases.
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
2011-08-23 12:29:54 -07:00
Mark Heffernan a3a704a495 re PR middle-end/38509 (Bogus "attempt to free a non-heap object" warning)
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
2011-08-23 18:06:42 +00:00
H.J. Lu 82feeb8d68 Add BMI2 support.
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
2011-08-23 10:02:15 -07:00
Jason Merrill 30d1352ecc typeck2.c (build_functional_cast): Don't try to avoid calling build_value_init.
* 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
2011-08-23 12:03:57 -04:00
Jason Merrill f7d605acaa re PR c++/49045 ([C++0x] unexpected "different exception specifier" error with noexcept)
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
2011-08-23 12:03:44 -04:00
Jason Merrill 30fdd4f2bf tree.c (build_target_expr): Set TREE_CONSTANT on literal TARGET_EXPR if the value is constant.
* 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
2011-08-23 12:03:35 -04:00
Jason Merrill 27bec7bf4a Core 903 (partial)
Core 903 (partial)
	* call.c (null_ptr_cst_p): Only 0 qualifies in C++11.

From-SVN: r177996
2011-08-23 12:03:25 -04:00
Jason Merrill 9b8662c2b0 Core 975
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
2011-08-23 12:03:15 -04:00
Jason Merrill 2787914706 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
2011-08-23 12:03:01 -04:00
Jason Merrill 7a74aa7f4a * semantics.c (potential_constant_expression_1): Allow 'this'.
From-SVN: r177993
2011-08-23 12:02:50 -04:00
Jakub Jelinek 09e640b34d 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
2011-08-23 17:53:18 +02:00
Jakub Jelinek e2f0083772 re PR middle-end/50161 (wrong code with -fno-tree-ter and __builtin_popcountl)
PR middle-end/50161
	* simplify-rtx.c (simplify_const_unary_operation): If
	op is CONST_INT, don't look at op_mode, but use instead
	mode.
	* optabs.c (add_equal_note): For FFS, CLZ, CTZ,
	CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for
	operation and TRUNCATE/ZERO_EXTEND if needed.
	* doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap):
	Document that operand mode must be same as operation mode,
	or VOIDmode.
	* config/avr/avr.md (paritysi2, *parityqihi2.libgcc,
	*paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc,
	*popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2,
	*ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops
	use the mode of operand for the operation and add truncate
	or zero_extend around if needed.
	* config/c6x/c6x.md (ctzdi2): Likewise.
	* config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise.

	* gcc.dg/pr50161.c: New test.

From-SVN: r177991
2011-08-23 17:51:45 +02:00
Siddhesh Poyarekar e70e0b6072 re PR c++/50055 ([PATCH] Location information for the throw() specification in a function may be incorrect)
PR c++/50055
	* except.c (begin_eh_spec_block): Build EH_SPEC block on the
	same line as the function.

From-SVN: r177990
2011-08-23 10:56:48 -04:00
Michael Matz d466b40756 cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
* cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
	(gimple_expand_cfg): Merge alignment info for coalesced pointer
	SSA names.

From-SVN: r177989
2011-08-23 14:38:24 +00:00
Jakub Jelinek bfcbe06886 re PR c++/46862 (ICE on std::decimal::decimal32 without any fields)
PR c++/46862
	* class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
	which doesn't have any fields, clear it and diagnose.

	* g++.dg/dfp/nofields.C: New test.

From-SVN: r177987
2011-08-23 15:20:04 +02:00
Richard Guenther 02f5d6c5e3 Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
2011-08-23  Richard Guenther  <rguenther@suse.de>

	* Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
	* tree-affine.h (aff_comb_cannot_overlap_p): Declare.
	* tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
	from ...
	* tree-ssa-loop-im.c (cannot_overlap_p): ... here.
	(mem_refs_may_alias_p): Adjust.
	* tree-data-ref.h (dr_may_alias_p): Adjust.
	* tree-data-ref.c: Include tree-affine.h.
	(dr_analyze_indices): Do nothing for the non-loop case.
	(dr_may_alias_p): Distinguish loop and non-loop case.  Disambiguate
	more cases in the non-loop case.
	* graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
	calls to dr_may_alias_p.
	(write_alias_graph_to_ascii_ecc): Likewise.
	(write_alias_graph_to_ascii_dot): Likewise.
	(build_alias_set_optimal_p): Likewise.

From-SVN: r177986
2011-08-23 12:40:57 +00:00
Tobias Burnus 0fcbc86b55 re PR fortran/31600 (Better error message for redeclation of USEd symbols)
2011-08-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/31600
        * symbol.c (gfc_add_type): Better diagnostic if redefining
        use-associated symbol.
        * module.c (gfc_use_module): Use module name as locus.

2011-08-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/31600
        * gfortran.dg/use_16.f90: New.

From-SVN: r177985
2011-08-23 14:13:34 +02:00
Richard Guenther 336ecb6550 re PR tree-optimization/50162 (Wrong vectorization)
2011-08-23  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/50162
	* tree-vect-stmts.c (vectorizable_call): Fix argument lookup.

From-SVN: r177984
2011-08-23 10:20:26 +00:00
Richard Guenther b8324815b3 tree-data-ref.c (dr_analyze_indices): Add comments, handle REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
2011-08-23  Richard Guenther  <rguenther@suse.de>

	* tree-data-ref.c (dr_analyze_indices): Add comments, handle
	REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
	(create_data_ref): Also dump access functions for the created
	data-ref.

From-SVN: r177983
2011-08-23 08:32:23 +00:00
GCC Administrator 5f0c8ad2f9 Daily bump.
From-SVN: r177982
2011-08-23 00:18:51 +00:00
Uros Bizjak f70c879aa8 sfp-machine.h (ASM_INVALID): New define.
* config/i386/64/sfp-machine.h (ASM_INVALID): New define.
	(ASM_DIVZERO): Ditto.
	(FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO.

From-SVN: r177978
2011-08-23 01:13:57 +02:00
Uros Bizjak d913744e21 * ChangeLog: Add missing change.
From-SVN: r177975
2011-08-22 23:02:34 +02:00
Uros Bizjak 1707583b53 re PR target/50155 (AVX2 support broke -mavx)
PR target/50155
	* config/i386/sse.md (VI_AVX2): New.
	(<plusminus_insn><mode>3): Use VI_AVX2 mode iterator.
	(*<plusminus_insn><mode>3): Ditto.
	(<sse2_avx2>_andnot<mode>3): Ditto.
	(*andnot<mode>3): Fix order of cond operands.
	Add asserts for correct TARGET_xxx.
	(*<any_logic:code><mode>3): Ditto.

testsuite/ChangeLog:

	PR target/50155
	* gcc.target/i386/pr50155.c: New test.

From-SVN: r177974
2011-08-22 23:01:46 +02:00
Gabriel Charette e3dfef44ef Add ability to force lexed tokens' source_locations.
Use it to force BUILTINS_LOCATION when declaring builtins instead of creating a <built-in> entry in the line_table which is wrong.

	* c-opts.c (c_finish_options): Force BUILTINS_LOCATION for tokens
	defined in cpp_init_builtins and c_cpp_builtins.

	gcc/fortran/ChangeLog
	* cpp.c (gfc_cpp_init): Force BUILTINS_LOCATION for tokens
	defined in cpp_define_builtins.

	libcpp/ChangeLog
	* init.c (cpp_create_reader): Inititalize forced_token_location_p.
	* internal.h (struct cpp_reader): Add field forced_token_location_p.
	* lex.c (_cpp_lex_direct): Use forced_token_location_p.
	(cpp_force_token_locations): New.
	(cpp_stop_forcing_token_locations): New.

From-SVN: r177973
2011-08-22 20:41:07 +00:00
Anatoly Sokolov c4831cff11 m32c.h (CLASS_MAX_NREGS): Remove macro.
* config/m32c/m32c.h (CLASS_MAX_NREGS): Remove macro.
	* config/m32c/m32c-protos.h (m32c_class_max_nregs): Remove.
	* config/m32c/m32c.c (m32c_class_max_nregs): Make static. Change
	regclass argument type to reg_class_t. Change 'max' and 'v' vars
	and return types to unsigned char. Use reg_class_contents instead
	of class_contents.
	(TARGET_CLASS_MAX_NREGS): Define.

From-SVN: r177971
2011-08-23 00:26:26 +04:00
Uros Bizjak 8b46e440e3 * ChangeLog: Additional fixes for AVX2 ChangeLog entry.
From-SVN: r177969
2011-08-22 21:18:44 +02:00
Bernd Schmidt 60418b5d25 c6x.md (indirect_jump_shadow): Tweak representation to make computed_jump_p return true.
* config/c6x/c6x.md (indirect_jump_shadow): Tweak representation
	to make computed_jump_p return true.

From-SVN: r177968
2011-08-22 18:00:33 +00:00