65861 Commits

Author SHA1 Message Date
Richard Henderson
ed69105c95 constraints.md (Ym): New constraint.
* config/i386/constraints.md (Ym): New constraint.
        * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
        (movdi_1_rex64): Split sse and xmm general register moves from
        memory move alternatives.  Use conditional register constraints.
        (movsf_1, movdf_integer): Likewise.
        (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
        (movdf_integer_rex64): New.
        (pushsf_rex64): Fix output constraints.
        * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
        (sse2_stored): Likewise.
        (sse2_storeq_rex64): New.
        * config/i386/i386.c (x86_inter_unit_moves): Enable for not
        amd and not generic.
        (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
        for optimize_size.  Remove SF/DFmode hack.

From-SVN: r121767
2007-02-09 10:17:09 -08:00
Dwarakanath Rajagopal
35a63f2131 driver-i386.c: Turn on -mtune=native for AMDFAM10.
2007-02-09  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>

	* config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
	(bit_SSE4a): New.

From-SVN: r121763
2007-02-09 16:56:45 +00:00
Richard Sandiford
a5ea7a0be7 gcc/testsuite/
* lib/target-supports.exp (check_effective_target_lax_strtofp)
	(check_effective_target_dummy_wcsftime): New functions.

libstdc++-v3/testsuite/
	* 22_locale/time_put/put/wchar_t/1.cc: XFAIL if dummy_wcsftime.
	* 22_locale/time_put/put/wchar_t/5.cc: Likewise.
	* 22_locale/time_put/put/wchar_t/9.cc: Likewise.
	* 22_locale/time_put/put/wchar_t/10.cc: Likewise.
	* 22_locale/num_get/get/wchar_t/2.cc: XFAIL if lax_strtofp.
	* 22_locale/num_get/get/char/2.cc: Likewise.
	* 27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc: Likewise.
	* 27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc: Likewise.
	* 27_io/basic_istream/extractors_arithmetic/char/12.cc: Likewise.
	* 27_io/basic_istream/extractors_arithmetic/char/09.cc: Likewise.
	* 27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc: Likewise.
	* 27_io/basic_ostream/inserters_arithmetic/char/6.cc: Likewise.
	* 26_numerics/cmath/c99_classification_macros_c++.cc: XFAIL
	for uClibc.
	* 26_numerics/cmath/c99_classification_macros_c.cc: Likewise.

From-SVN: r121749
2007-02-09 13:56:16 +00:00
Richard Sandiford
2755c05623 20030125-1.x: Return 1 for uClibc targets.
gcc/testsuite/
	* gcc.c-torture/execute/20030125-1.x: Return 1 for uClibc targets.
	* lib/target-supports.exp (check_effective_target_uclibc): New
	function.

From-SVN: r121748
2007-02-09 13:51:23 +00:00
Richard Sandiford
a6a05a5ec2 chk.c: Include <sys/types.h>.
gcc/testsuite/
	* gcc.c-torture/execute/builtins/lib/chk.c: Include <sys/types.h>.
	(vsnprintf): Don't define for uClibc targets.

From-SVN: r121747
2007-02-09 13:50:56 +00:00
Richard Sandiford
a6fb11e20d 200x-xx-xx Nathan Sidwell <nathan@codesourcery.com>
gcc/testsuite/
	* gcc.c-torture/execute/builtins/memops-asm-lib.c: Do the copy or
	set before checking whether it was allowed.
	* gcc.c-torture/execute/builtins/lib/memset.c: Do the memset
	before checking inside_main.

From-SVN: r121746
2007-02-09 13:50:42 +00:00
Richard Sandiford
4a799f3d0d struct-layout-1.h (v16sf): Define to v4sf on uClinux targets.
gcc/testsuite/
	* gcc.dg/compat/struct-layout-1.h (v16sf): Define to v4sf on
	uClinux targets.
	(u16sf): Likewise u4sf.
	* g++.dg/compat/struct-layout-1.h: Likewise.

From-SVN: r121745
2007-02-09 13:50:15 +00:00
Richard Sandiford
7fc564b7d1 target-supports.exp (check_effective_target_coldfire_fpu): New procedure.
gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_coldfire_fpu): New
	procedure.
	* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: XFAIL on
	m68k targets if check_effective_target_coldfire_fpu returns true.

From-SVN: r121744
2007-02-09 13:49:14 +00:00
Nathan Sidwell
10e96df47c 200x-xx-xx Nathan Sidwell <nathan@codesourcery.com> Richard Sandiford <richard@codesourcery.com>
gcc/
200x-xx-xx  Nathan Sidwell  <nathan@codesourcery.com>
	    Richard Sandiford  <richard@codesourcery.com>

	* config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
	(m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
	(m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
	m68k/t-mlib to tmake_file.
	(m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
	(m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
	(m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
	Allow it to be cf or m68k.  Set m68k_arch_family.  If that
	variable is not empty, add t-$m68k_arch_family to tmake_file.
	Add t-mlibs to tmake_file.
	* doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
	* config/m68k/t-cf: New file.
	* config/m68k/t-m68k: Likewise.
	* config/m68k/t-mlibs: Likewise.
	* config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
	Delete.
	* config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
	(INSTALL_LIBGCC): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU): Define.
	* config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.

Co-Authored-By: Richard Sandiford <richard@codesourcery.com>

From-SVN: r121743
2007-02-09 13:47:25 +00:00
Zdenek Dvorak
b44e7f07c5 re PR tree-optimization/23361 (Can't eliminate empty loops with power of two step and variable bounds)
2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
	Richard Guenther  <rguenther@suse.de>

	PR middle-end/23361
	* fold-const.c (fold_comparison): Handle obfuscated comparisons
	against INT_MIN/INT_MAX.
	* tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
	file if a loop is removed.

	* gcc.dg/fold-compare-3.c: New testcase.
	* gcc.dg/tree-ssa/loop-24.c: Likewise.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r121742
2007-02-09 13:29:11 +00:00
Uros Bizjak
3553ec04db pr26570.c: Clean up coverage files.
* gcc.dg/pr26570.c: Clean up coverage files.
	* gcc.dg/pr30172-1.c: Clean up gimple tree dump.
	* gcc.dg/lower-subreg-1.c: Clean up subreg rtl dump file.
	* gcc.dg/tree-ssa/tailrecursion-1.c: Clean up all tailr dump files.
	* gcc.dg/tree-ssa/tailrecursion-2.c: Ditto.
	* gcc.dg/tree-ssa/tailrecursion-3.c: Ditto.
	* gcc.dg/tree-ssa/tailrecursion-4.c: Ditto.
	* gcc.dg/tree-ssa/pr21658.c: Clean up all ccp dump files.
	* gcc.dg/tree-ssa/pr21829.c: Clean up all phicprop dump files.
	* gcc.dg/tree-ssa/pr15349.c: Clean up all mergephi dump files.
	* gcc.dg/tree-ssa/pr25501.c: Ditto.
	* gcc.dg/fold-compare-2.c: Clean up vrp dump files.
	* gcc.dg/vect/vect-recip.c: Clean up vect dump file.
	* gcc.dg/vect/pr28952.c: Ditto.
	* gcc.dg/vect/pr27151.c: Ditto.
	* gcc.dg/gomp/macro-3.c: Clean up omplower dump file.
	* g++.dg/gomp/macro-3.C: Ditto.

From-SVN: r121739
2007-02-09 10:32:30 +01:00
Joseph Myers
46bd2beed4 calls.c (store_one_arg): Pass correct alignment to emit_push_insn for non-BLKmode values.
* calls.c (store_one_arg): Pass correct alignment to
	emit_push_insn for non-BLKmode values.
	* expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
	unaligned stack slot via a suitably aligned slot.

From-SVN: r121736
2007-02-09 01:11:18 +00:00
DJ Delorie
67fc44cbd6 m32c.c (m32c_unpend_compare): Add default to silence warnings.
* config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
warnings.
(legal_subregs): Use unsigned char, make const.
(m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.

From-SVN: r121733
2007-02-08 19:49:48 -05:00
GCC Administrator
f88e483d70 Daily bump.
From-SVN: r121731
2007-02-09 00:17:44 +00:00
Paul Brook
4531703eaa lib1funcs.asm (RETLDM): Pop directly into PC when no special interworking needed.
2007-02-08  Paul Brook  <paul@codesourcery.com>

	* config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
	special interworking needed.

From-SVN: r121727
2007-02-08 23:49:59 +00:00
Harsha Jagasia
c1d91dbdc5 xmmintrin.h: Make inclusion of emmintrin.h conditional to __SSE2__.
* config/i386/xmmintrin.h: Make inclusion of emmintrin.h
        conditional to __SSE2__.
        (Entries below should have been added to first ChangeLog
        entry for amdfam10 dated 2007-02-05)
        * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
        defined.
        * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
        defined.
        * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
        defined.

From-SVN: r121726
2007-02-08 22:37:01 +00:00
DJ Delorie
f9b8943888 m32c-protos.h (m32c_illegal_subreg_p): New.
* config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
* config/m32c/m32c.c (legal_subregs): New.
(m32c_illegal_subreg_p): New.
* config/m32c/predicates.md (m32c_any_operand): Use it to reject
unsupported subregs of hard regs.

From-SVN: r121725
2007-02-08 17:22:52 -05:00
Jan Hubicka
ff39b79b8f tree-cfg.c (bsi_replace): Shortcut when replacing the statement with the same one; always update histograms.
* tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
	the same one; always update histograms.

From-SVN: r121724
2007-02-08 22:04:22 +00:00
Diego Novillo
b3f7d793a9 passes.c (init_optimization_passes): Tidy comment.
* passes.c (init_optimization_passes): Tidy comment.

From-SVN: r121723
2007-02-08 16:38:41 -05:00
Uros Bizjak
e9105edd8c vect-strided-same-dr.c (main): Fix terminate condition of the loop.
* gcc.dg/vect/vect-strided-same-dr.c (main): Fix terminate condition
        of the loop.

From-SVN: r121718
2007-02-08 19:12:06 +01:00
Roger Sayle
9f05adb09f simplify-rtx.c (simplify_unary_operation_1): We can strip zero_extend, bswap and rotates from POCOUNT's argument.
* simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
	strip zero_extend, bswap and rotates from POCOUNT's argument.
	<PARITY>: Likewise, we can strip not, bswap, sign_extend,
	zero_extend and rotates from PARITY's argument.
	<BSWAP>: A byte-swap followed by a byte-swap is an identity.
	(simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
	of an integer constant at compile-time.

	* gcc.target/i386/builtin-bswap-2.c: New test case.

From-SVN: r121716
2007-02-08 17:10:56 +00:00
Diego Novillo
d37d06fef8 re PR tree-optimization/30562 (remove unused variable is removing a referenced variable (in STORED_SYMS or LOADED_SYMS))
PR 30562
	* tree-flow.h (struct var_ann_d): Remove field 'is_used'.
	Update all users.
	* tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
	users.
	(init_alias_info):
	* tree-ssa-live.c (remove_unused_locals): Do not remove
	TREE_ADDRESSABLE variables.
	* tree-ssa-structalias.c (compute_points_to_sets): Tidy.
	* tree-ssa-operands.c (add_virtual_operand): Remove argument
	FOR_CLOBBER.  Update all users.
	If VAR has an associated alias set, add a virtual operand for
	it if no alias is found to conflict with the memory reference.

From-SVN: r121715
2007-02-08 11:55:43 -05:00
Roger Sayle
e35a0e6476 trans-stmt.c (gfc_trans_forall_1): Optimize the cases where the mask expression is a compile-time constant...
* trans-stmt.c (gfc_trans_forall_1): Optimize the cases where the
	mask expression is a compile-time constant (".true." or ".false.").

	* gfortran.dg/forall_8.f90: New test case.
	* gfortran.dg/forall_9.f90: Likewise.

From-SVN: r121714
2007-02-08 16:41:18 +00:00
Jan Hubicka
674474a525 value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
* value-prof.c (visit_hist, free_hist): Return 1 instead of 0.

Co-Authored-By: Robert Kidd <rkidd@crhc.uiuc.edu>

From-SVN: r121711
2007-02-08 09:56:34 +00:00
Kaveh R. Ghazi
822f505b75 builtins-20.c: Add some -~ complex cases.
* gcc.dg/builtins-20.c: Add some -~ complex cases.

From-SVN: r121710
2007-02-08 03:19:17 +00:00
Ian Lance Taylor
1f64a0811b * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
From-SVN: r121707
2007-02-08 00:59:14 +00:00
Roger Sayle
e42ac3dede rs6000.md (ctz<mode>2, [...]): Remove constraints from define_expand's match_operands.
* config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
	parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
	tablejumpdi, movsi_to_cr_one): Remove constraints from
	define_expand's match_operands.

From-SVN: r121706
2007-02-08 00:25:06 +00:00
GCC Administrator
6339e6b187 Daily bump.
From-SVN: r121704
2007-02-08 00:17:42 +00:00
Roger Sayle
28890c8243 global.c (compute_regsets): Move declatation of "i" inside of #ifdef ELIMINABLE_REGS to avoid unused...
* global.c (compute_regsets): Move declatation of "i" inside of
	#ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.

From-SVN: r121697
2007-02-07 21:29:17 +00:00
Andrew Haley
56c9f04bb7 class.c (uncache_this_class_ref): New.
2007-02-07  Andrew Haley  <aph@redhat.com>

        * class.c (uncache_this_class_ref): New.
        * expr.c (build_jni_stub): Initialize the class.
        (expand_byte_code): Call uncache_this_class_ref after generating
        code.

From-SVN: r121695
2007-02-07 18:28:20 +00:00
Jakub Jelinek
e02a048f46 re PR c++/30703 (ICE Segmentation fault on using OpenMP)
PR c++/30703
	* gimplify.c (gimplify_scan_omp_clauses): Remove special casing
	of INDIRECT_REF <RESULT_DECL>.

	* cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
	parameters and result decls in omp clauses.
	(cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
	by reference.

	* testsuite/libgomp.c++/pr30703.C: New test.

From-SVN: r121688
2007-02-07 13:16:22 +01:00
Jakub Jelinek
ca6e5fe994 * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
From-SVN: r121687
2007-02-07 13:13:39 +01:00
Hans-Peter Nilsson
3920f1fd1d * lib/target-supports.exp (check_effective_target_simulator): New.
From-SVN: r121683
2007-02-07 10:08:50 +00:00
Andreas Krebbel
8438091f03 raise-gcc.c (get_region_description_for, [...]): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
2007-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>

	* raise-gcc.c (get_region_description_for, get_call_site_action_for,
	get_action_description_for): Replaced _Unwind_Word with _uleb128_t 
	and _Unwind_SWord with _sleb128_t.

From-SVN: r121681
2007-02-07 09:54:47 +00:00
GCC Administrator
fd9869a5dc Daily bump.
From-SVN: r121676
2007-02-07 00:18:06 +00:00
J"orn Rennecke
6f8eec2991 re PR target/29746 (gcc fails to bootstrap on sh4-*-linux-gnu)
PR target/29746
	* config/sh/sh.c (expand_cbranchdi4): Use scratch register
	properly.
	(sh_initialize_trampoline): Add parentheses to avoid a warning.


Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org>

From-SVN: r121671
2007-02-06 23:12:35 +00:00
Zdenek Dvorak
89f8f30f35 loop.texi: Document possibility not to perform disambiguation of loops with multiple latches.
* doc/loop.texi: Document possibility not to perform disambiguation
	of loops with multiple latches.
	* cfgloopmanip.c (alp_enum_p): Removed.
	(add_loop): Handle subloops.  Use get_loop_body_with_size.
	(create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
	* cfghooks.c (redirect_edge_and_branch_force): Set dominator for
	the new forwarder block.
	(make_forwarder_block): Only call new_bb_cbk if it is not NULL.
	Handle the case latch is NULL.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
	when marking loop exits.
	* ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
	be modified.
	* loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
	disambiguate_loops_with_multiple_latches.
	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
	before fix_loop_structure.
	* cfgloop.c: Include pointer-set.h and output.h.
	(canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
	update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
	(get_loop_latch_edges, find_subloop_latch_edge_by_profile,
	find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
	mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
	disambiguate_multiple_latches, get_loop_body_with_size,
	disambiguate_loops_with_multiple_latches): New functions.
	(flow_loop_dump): Dump multiple latch edges.
	(flow_loop_nodes_find): Handle loops with multiple latches.
	(flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
	(glb_enum_p): Modified.
	(get_loop_body): Use get_loop_body_with_size.
	* cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
	(AVOID_CFG_MODIFICATIONS): New constant.
	(disambiguate_loops_with_multiple_latches, add_loop,
	get_loop_body_with_size): Declare.
	* Makefile.in (cfgloop.o): Add pointer-set.h and output.h.

	* gcc.dg/tree-ssa/loop-25.c: New test.

From-SVN: r121670
2007-02-06 21:49:49 +00:00
Tom Tromey
ca20820ef1 re PR driver/30714 (gcj driver doesn't recognize files starting with II)
PR java/30714:
	* jvspec.c (lang_specific_driver): Check for the '-' in '-I'.

From-SVN: r121666
2007-02-06 20:43:55 +00:00
Seongbae Park
ad8e8d0b46 re PR inline-asm/28686 (ebp from clobber list used as operand)
2007-02-06  Seongbae Park <seongbae.park@gmail.com>

	PR inline-asm/28686
	* global.c (compute_regsets): New function.
	(global_alloc): Refactored ELIMINABLE_REGSET
	and NO_GLOBAL_ALLOC_REGS computation out.
	(rest_of_handle_global_alloc): Call compute_regsets()
	for non-optimizing case.

From-SVN: r121663
2007-02-06 19:43:41 +00:00
Richard Henderson
5096114103 constraints.md (Y2): Rename from Y.
* config/i386/constraints.md (Y2): Rename from Y.
        (Yi): New constraint. 
        * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
        pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
        zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
        (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
        truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
        fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
        floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
        absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
        fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
        * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
        mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
        vec_extractv2si_1): Change Y constraints to Y2.
        * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
        vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
        Change Y constraints to Y2.
        (sse2_loadld): Change Y constraints to x.

From-SVN: r121660
2007-02-06 10:25:47 -08:00
Richard Henderson
6728236fe9 * gcc.target/i386/cvt-1.c: Don't expect xmm registers.
From-SVN: r121659
2007-02-06 10:15:46 -08:00
Roger Sayle
c1fdb0821a ChangeLog: Doh!
* ChangeLog: Doh! Missed in the last commit.

From-SVN: r121654
2007-02-06 17:35:22 +00:00
Roger Sayle
565ef4bafb rs6000.md (popcount<mode>2): Rewrite.
* config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
	(parity<mode>2): New define_expand using rs6000_emit_parity.
	* config/rs6000/rs6000.c (rs6000_emit_popcount,
	rs6000_emit_parity): New functions.
	* config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
	rs6000_emit_parity): Prototype here.

	* gcc.target/powerpc/popcount-1.c: New test case.
	* gcc.target/powerpc/parity-1.c: Likewise.

From-SVN: r121653
2007-02-06 17:29:44 +00:00
Ian Lance Taylor
7e0c3f57e0 lower-subreg.c (simple_move_operand): Reject CONST.
* lower-subreg.c (simple_move_operand): Reject CONST.
	(resolve_clobber): Call validate_change rather than directly
	assigning to XEXP (pat, 0).

From-SVN: r121652
2007-02-06 17:19:27 +00:00
Paolo Bonzini
15814ba0a2 Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
2006-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
	(tree-ssa-reassoc.o): Add pointer-set.h dependency.
	(tree-cfg.o): Remove hashtab.h dependency.

	* tree-ssa-loop-ivopts.c: Include pointer-set.h.
	(struct ivopts_data): Change niters to pointer_map_t.
	(struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
	(niter_for_exit): Create pointer_map on demand.  Change for
	pointer_map API.
	(tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
	(free_loop_data): Destroy data->niters if created and reset field.
	(tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
	(tree_ssa_iv_optimize_loop): Check for presence of stale data.

	* tree-ssa-reassoc.c: Include pointer-set.h.
	(bb_rank): Change to long *.
	(operand_rank): Change to pointer_map_t.
	(find_operand_rank): Return long, -1 if not found.  Declare as inline.
	(insert_operand_rank): Accept long.
	(operand_entry_hash, operand_entry_eq): Remove.
	(get_rank): Return long.  Adjust for changes above.
	(init_reassoc): Change rank type to long.  Adjust creation of bb_rank
	and operand_rank.
	(fini_reassoc): Delete operand_rank with pointer_map_destroy.

	* tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
	(struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
	(insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
	is not NULL.
	(lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
	directly since it cannot be NULL.
	(get_vi_for_tree): Rewrite for pointer_map API.
	(find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
	(init_alias_vars): Create vi_for_tree as pointer_map.
	(delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.

	* tree-cfg.c: Don't include hashtab.h.
	(edge_to_cases): Declare as pointer_map.
	(struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
	Delete.
	(edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
	(start_recording_case_labels): Create edge_to_cases as pointer_map.
	(end_recoding_case_labels): Cleanup edge_to_cases manually before
	destroying it.
	(record_switch_edge): Delete.
	(get_cases_for_edge): Adjust for pointer_map API, inline
	record_switch_edge (rewritten for new API), remove goto.

From-SVN: r121648
2007-02-06 14:34:51 +00:00
Paolo Bonzini
0802f6a2f7 tree.c (tree_int_map_hash, [...]): Remove prototypes and make them non-static.
gcc:
2007-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
	Remove prototypes and make them non-static.
	(struct tree_int_map): Remove.
	* tree.h (struct tree_int_map): Move here, turning TO into an
	unsigned int.
	(tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.

	* tree.h (TREE_COMPLEXITY): Remove.
	(struct tree_exp): Remove complexity field.
	* tree.c (build1_stat): Don't set it.

gcc/ada:
2007-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* Make-lang.in (ada/decl.o): Add gt-ada-decl.h dependency.
	* decl.c: Include gt-ada-decl.h.
	(annotate_value_cache): New.
	(annotate_value): Use it instead of TREE_COMPLEXITY.

From-SVN: r121647
2007-02-06 13:55:01 +00:00
Richard Guenther
568265573d re PR middle-end/27302 (Fold does not fold (i < j) == (j > i) to 1)
2007-02-06  Richard Guenther  <rguenther@suse.de>

        PR middle-end/27302
        * gcc.dg/torture/pr27302-2.c: New testcase.

From-SVN: r121644
2007-02-06 12:38:32 +00:00
Dorit Nuzman
fbf798fcc5 tree-vectorizer.c (vect_is_simple_use): Support induction.
2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
            Victor Kaplansky  <victork@il.ibm.com>

        * tree-vectorizer.c (vect_is_simple_use): Support induction.
        (vect_is_simple_reduction): Support reduction with induction as
        one of the operands.
        (vect_is_simple_iv_evolution): Fix formatting.
        * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
        formatting.  Don't mark induction phis for vectorization.
        (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
        * tree-vect-transform.c (get_initial_def_for_induction): New function.
        (vect_get_vec_def_for_operand): Support induction.
        (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
        induction case.
        (vectorizable_reduction): Support reduction with induction as one of
        the operands.
        (vectorizable_type_demotion): Use def-type of stmt argument rather
        than dummy def-type.

        * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
        flag_tree_scev_cprop.
        * common.opt (tree-scev-cprop): New flag.

        * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
        call to vect_get_new_vect_var.


Co-Authored-By: Victor Kaplansky <victork@il.ibm.com>

From-SVN: r121643
2007-02-06 10:08:51 +00:00
Ira Rosen
03d3e95382 tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that vectype is not NULL.
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that 
	vectype is not NULL.
	(vect_pattern_recog_1): Likewise.

From-SVN: r121640
2007-02-06 08:41:01 +00:00
Kaveh R. Ghazi
8fbbe90b26 fold-const.c (negate_expr_p): Handle CONJ_EXPR.
* fold-const.c (negate_expr_p): Handle CONJ_EXPR.
	(fold_negate_expr): Likewise.
	
testsuite:
	* gcc.dg/builtins-20.c: Add more cases.

From-SVN: r121639
2007-02-06 02:50:39 +00:00