1. 29 Apr, 2013 14 commits
    • [AArch64] Vectorize over more math.h functions. · 0386b123
      gcc/
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_builtin_vectorized_function): Vectorize over ifloorf,
      	iceilf, lround, iroundf.
      
      From-SVN: r198402
      James Greenhalgh committed
    • re PR target/54349 (_mm_cvtsi128_si64 unnecessary stores value at stack) · 00fcb892
      	PR target/54349
      	* config/i386/i386.h (enum ix86_tune_indices)
      	<X86_TUNE_INTER_UNIT_MOVES_TO_VEC, X86_TUNE_INTER_UNIT_MOVES_FROM_VEC>:
      	New, split from X86_TUNE_INTER_UNIT_MOVES.
      	<X86_TUNE_INTER_UNIT_MOVES>: Remove.
      	(TARGET_INTER_UNIT_MOVES_TO_VEC): New define.
      	(TARGET_INTER_UNIT_MOVES_FROM_VEC): Ditto.
      	(TARGET_INTER_UNIT_MOVES): Remove.
      	* config/i386/i386.c (initial_ix86_tune_features): Update.
      	Disable X86_TUNE_INTER_UNIT_MOVES_FROM_VEC for m_ATHLON_K8 only.
      	(ix86_expand_convert_uns_didf_sse): Use
      	TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES.
      	(ix86_expand_vector_init_one_nonzero): Ditto.
      	(ix86_expand_vector_init_interleave): Ditto.
      	(inline_secondary_memory_needed): Return true for moves from SSE class
      	registers for !TARGET_INTER_UNIT_MOVES_FROM_VEC targets and for moves
      	to SSE class registers for !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
      	* config/i386/constraints.md (Yi, Ym): Depend on
      	TARGET_INTER_UNIT_MOVES_TO_VEC.
      	(Yj, Yn): New constraints.
      	* config/i386/i386.md (*movdi_internal): Change constraints of
      	operand 1 from Yi to Yj and from Ym to Yn.
      	(*movsi_internal): Ditto.
      	(*movdf_internal): Ditto.
      	(*movsf_internal): Ditto.
      	(*float<SWI48x:mode><X87MODEF:mode>2_1): Use
      	TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES.
      	(*float<SWI48x:mode><X87MODEF:mode>2_1 splitters): Ditto.
      	(floatdi<X87MODEF:mode>2_i387_with_xmm): Ditto.
      	(floatdi<X87MODEF:mode>2_i387_with_xmm splitters): Ditto.
      	* config/i386/sse.md (movdi_to_sse): Ditto.
      	(sse2_stored): Change constraint of operand 1 from Yi to Yj.
      	Use TARGET_INTER_UNIT_MOVES_FROM_VEC instead of
      	TARGET_INTER_UNIT_MOVES.
      	(sse_storeq_rex64): Change constraint of operand 1 from Yi to Yj.
      	(sse_storeq_rex64 splitter): Use TARGET_INTER_UNIT_MOVES_FROM_VEC
      	instead of TARGET_INTER_UNIT_MOVES.
      	* config/i386/mmx.md (*mov<mode>_internal): Change constraint of
      	operand 1 from Yi to Yj and from Ym to Yn.
      
      From-SVN: r198401
      Uros Bizjak committed
    • [AArch64] Implement vector float->double widening and double->float narrowing. · 4c871069
      gcc/
      	* config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi_): New.
      	(float_truncate_hi_): Likewise.
      	(float_extend_lo_): Likewise.
      	(float_truncate_lo_): Likewise.
      	* config/aarch64/aarch64-simd.md (vec_unpacks_lo_v4sf): New.
      	(aarch64_float_extend_lo_v2df): Likewise.
      	(vec_unpacks_hi_v4sf): Likewise.
      	(aarch64_float_truncate_lo_v2sf): Likewise.
      	(aarch64_float_truncate_hi_v4sf): Likewise.
      	(vec_pack_trunc_v2df): Likewise.
      	(vec_pack_trunc_df): Likewise.
      
      From-SVN: r198400
      James Greenhalgh committed
    • [AArch64] Add vector int to float conversions. · 1709ff9b
      gcc/
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_fold_builtin): Fold float conversions.
      	* config/aarch64/aarch64-simd-builtins.def
      	(floatv2si, floatv4si, floatv2di): New.
      	(floatunsv2si, floatunsv4si, floatunsv2di): Likewise.
      	* config/aarch64/aarch64-simd.md
      	(<optab><fcvt_target><VDQF:mode>2): New, expands to float and floatuns.
      	* config/aarch64/iterators.md (FLOATUORS): New.
      	(optab): Add float, floatuns.
      	(su_optab): Likewise.
      
      From-SVN: r198399
      James Greenhalgh committed
    • [AArch64] Map fcvt intrinsics to builtin name directly. · ce966824
      gcc/
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_builtin_vectorized_function): Use new names for
      	fcvt builtins.
      	* config/aarch64/aarch64-simd-builtins.def (fcvtzs): Split as...
      	(lbtruncv2sf, lbtruncv4sf, lbtruncv2df): ...This.
      	(fcvtzu): Split as...
      	(lbtruncuv2sf, lbtruncuv4sf, lbtruncuv2df): ...This.
      	(fcvtas): Split as...
      	(lroundv2sf, lroundv4sf, lroundv2df, lroundsf, lrounddf): ...This.
      	(fcvtau): Split as...
      	(lrounduv2sf, lrounduv4sf, lrounduv2df, lroundusf, lroundudf): ...This.
      	(fcvtps): Split as...
      	(lceilv2sf, lceilv4sf, lceilv2df): ...This.
      	(fcvtpu): Split as...
      	(lceiluv2sf, lceiluv4sf, lceiluv2df, lceilusf, lceiludf): ...This.
      	(fcvtms): Split as...
      	(lfloorv2sf, lfloorv4sf, lfloorv2df): ...This.
      	(fcvtmu): Split as...
      	(lflooruv2sf, lflooruv4sf, lflooruv2df, lfloorusf, lfloorudf): ...This.
      	(lfrintnv2sf, lfrintnv4sf, lfrintnv2df, lfrintnsf, lfrintndf): New.
      	(lfrintnuv2sf, lfrintnuv4sf, lfrintnuv2df): Likewise.
      	(lfrintnusf, lfrintnudf): Likewise.
      	* config/aarch64/aarch64-simd.md
      	(l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2): Convert to
      	define_insn.
      	(aarch64_fcvt<frint_suffix><su><mode>): Remove.
      	* config/aarch64/iterators.md (FCVT): Include UNSPEC_FRINTN.
      	(fcvt_pattern): Likewise.
      
      From-SVN: r198398
      James Greenhalgh committed
    • [AArch64] Fix order of modes to lroundmn2 standard names. · b9de24fe
      gcc/
      	* config/aarch64/aarch64-simd.md
      	(l<fcvt_pattern><su_optab><fcvt_target><VDQF:mode>2): Rename to...
      	(l<fcvt_pattern><su_optab><VDQF:mode><fcvt_target>2): ... This.
      
      From-SVN: r198397
      James Greenhalgh committed
    • [AArch64] Convert NEON frint implementations to use builtins. · 77a205be
      gcc/
      	* config/aarch64/arm_neon.h (vrndq<a,m,n,p>_f<32, 64>): Rename to...
      	(vrnd<a,m,n,p>q_f<32, 64>): ...This, implement using builtin.
      	(vrnd<a,m,n,p>_f32): Implement using builtins.
      	(vrnd<i,x><q>_f<32, 64>): New.
      
      gcc/testsuite/
      	* gcc.target/aarch64/vect-vrnd.c: New.
      
      From-SVN: r198396
      James Greenhalgh committed
    • [AArch64] Map frint intrinsics to standard pattern names directly. · 0659ce6f
      gcc/
      	* config/aarch64/aarch64-builtins.c
      	(aarch64_builtin_vectorized_function): Fold to standard pattern names.
      	* config/aarch64/aarch64-simd-builtins.def (frintn): New.
      	(frintz): Rename to...
      	(btrunc): ...this.
      	(frintp): Rename to...
      	(ceil): ...this.
      	(frintm): Rename to...
      	(floor): ...this.
      	(frinti): Rename to...
      	(nearbyint): ...this.
      	(frintx): Rename to...
      	(rint): ...this.
      	(frinta): Rename to...
      	(round): ...this.
      	* config/aarch64/aarch64-simd.md
      	(aarch64_frint<frint_suffix><mode>): Delete.
      	(<frint_pattern><mode>2): Convert to insn.
      	* config/aarch64/aarch64.md (unspec): Add UNSPEC_FRINTN.
      	* config/aarch64/iterators.md (FRINT): Add UNSPEC_FRINTN.
      	(frint_pattern): Likewise.
      	(frint_suffix): Likewise.
      
      From-SVN: r198394
      James Greenhalgh committed
    • re PR tree-optimization/57081 (Segmentation fault in simple_iv (tree-scalar-evolution.c:3151)) · ea78906a
      2013-04-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/57081
      	* loop-init.c: Include tree-flow.h.
      	(loop_optimizer_finalize): Free number of iteration estimates.
      	* Makefile.in (loop-init.o): Add $(TREE_FLOW_H) dependency.
      
      	* gcc.dg/torture/pr57081.c: New testcase.
      
      From-SVN: r198392
      Richard Biener committed
    • Simplify SYSTEM_CLOCK implementation. · 96cc0ef4
      2013-04-29  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * intrinsics/system_clock (gf_gettime_mono): Use variable
              resolution for fractional seconds argument.
              (system_clock_4): Simplify, update for gf_gettime_mono change.
              (system_clock_8): Likewise.
      
      From-SVN: r198391
      Janne Blomqvist committed
    • PR 56981 Improve unbuffered performance on special files. · c033f5ae
      2013-04-29  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR fortran/56981
              * io/transfer.c (next_record_w_unf): First fix head marker, then
              write tail.
              (next_record): Call flush_if_unbuffered.
              * io/unix.c (struct unix_stream): Add field unbuffered.
              (flush_if_unbuffered): New function.
              (fd_to_stream): New argument.
              (open_external): Fix fd_to_stream call.
              (input_stream): Likewise.
              (output_stream): Likewise.
              (error_stream): Likewise.
              * io/unix.h (flush_if_unbuffered): New prototype.
      
      From-SVN: r198390
      Janne Blomqvist committed
    • re PR tree-optimization/57083 (Wrong constant folding) · 94dc5332
      	PR tree-optimization/57083
      	* tree-vrp.c (extract_range_from_binary_expr_1): For LSHIFT_EXPR with
      	non-singleton shift count range, zero extend low_bound for uns case.
      
      	* gcc.dg/torture/pr57083.c: New test.
      
      From-SVN: r198388
      Jakub Jelinek committed
    • predicates.md (general_vector_operand): New predicate. · baee1763
      	* config/i386/predicates.md (general_vector_operand): New predicate.
      	* config/i386/i386.c (const_vector_equal_evenodd_p): New function.
      	(ix86_expand_mul_widen_evenodd): Force op1 resp. op2 into register
      	if they aren't nonimmediate operands.  If their original values
      	satisfy const_vector_equal_evenodd_p, don't shift them.
      	* config/i386/sse.md (mul<mode>3): Use general_vector_operand
      	predicates.  For the SSE4.1 case force operands[{1,2}] into registers
      	if not nonimmediate_operand.
      	(vec_widen_smult_even_v4si): Use nonimmediate_operand predicates
      	instead of register_operand.
      	(vec_widen_<s>mult_odd_<mode>): Use general_vector_operand predicates.
      
      From-SVN: r198387
      Jakub Jelinek committed
    • Daily bump. · 8f36b237
      From-SVN: r198384
      GCC Administrator committed
  2. 28 Apr, 2013 10 commits
  3. 27 Apr, 2013 3 commits
  4. 26 Apr, 2013 13 commits
    • move_range.cc: Adjust dialect to -std=gnu++11. · 0433be86
      2013-04-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* testsuite/23_containers/unordered_set/insert/move_range.cc: Adjust
      	dialect to -std=gnu++11.
      
      From-SVN: r198347
      Paolo Carlini committed
    • 2013-04-26 François Dumont <fdumont@gcc.gnu.org> · d2f2f2e3
      	* include/bits/hashtable_policy.h
      	(_Insert_base<>::insert<_It>(_It, _It)): Enable move semantics.
      	* testsuite/23_containers/unordered_set/insert/move_range.cc: New.
      
      From-SVN: r198346
      François Dumont committed
    • rtl.h (struct rtx_def): Add comment for field jump. · 2c62cbaa
      2013-04-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* rtl.h (struct rtx_def): Add comment for field jump.
      	(LRA_SUBREG_P): New macro.
      	* recog.c (register_operand): Check LRA_SUBREG_P.
      	* lra.c (lra): Add note at the end of RTL code. Align non-empty
      	stack frame.
      	* lra-spills.c (lra_spill): Align stack after spilling pseudos.
      	(lra_final_code_change): Skip subreg change for operators.
      	* lra-eliminations.c (eliminate_regs_in_insn): Make return earlier
      	if there are no operand changes.
      	* lra-constraints.c (curr_insn_set): New.
      	(match_reload): Set LRA_SUBREG_P.
      	(emit_spill_move): Ditto.
      	(check_and_process_move): Use curr_insn_set. Process only single
      	set insns.  Don't initialize sec_mem_p and change_p.
      	(simplify_operand_subreg): Use LRA_SUBREG_P.
      	(reg_in_class_p): New function.
      	(process_alt_operands): Use it.  Use #if HAVE_ATTR_enabled instead
      	of #ifdef.  Add code to remove cycling.
      	(process_address): Check EXTRA_CONSTRAINT_STR. Process even if
      	non-null disp.  Reload inner instead of disp when base and index
      	are null.  Try to put lo_sum into register.
      	(EBB_PROBABILITY_CUTOFF): Redefine probability in percents.
      	(check_and_process_move): Move code for move cost check to
      	simple_move_p.  Remove equiv_substitution.
      	(simple_move_p): New function.
      	(curr_insn_transform): Initialize sec_mem_p and change_p.  Set up
      	curr_insn_set.  Call check_and_process_move only for single set
      	insns.  Use the new function.  Move call of check_and_process_move
      	after operand equiv substitution and address process.
      
      From-SVN: r198344
      Vladimir Makarov committed
    • re PR go/57045 (Build failure in libgo/runtime/proc.c: error: ‘({anonymous})’… · e7d764f3
      re PR go/57045 (Build failure in libgo/runtime/proc.c: error: ‘({anonymous})’ may be used uninitialized in this function)
      
      	PR go/57045
      	* tree-ssa-uninit.c (compute_uninit_opnds_pos): In functions
      	with nonlocal goto receivers or returns twice calls, ignore
      	unininitialized values from abnormal edges to nl goto receiver
      	or returns twice call.
      
      	* gcc.dg/setjmp-5.c: New test.
      
      From-SVN: r198340
      Jakub Jelinek committed
    • re PR tree-optimization/57051 (Optimization regression in 4.8.0 from 4.7.2) · 41e10689
      	PR tree-optimization/57051
      	* fold-const.c (const_binop): Handle VEC_LSHIFT_EXPR
      	and VEC_RSHIFT_EXPR if shift count is a multiple of element
      	bitsize.
      
      From-SVN: r198339
      Jakub Jelinek committed
    • omp-low.c (finalize_task_copyfn): Do not drop PROP_loops. · d7ed20db
      2013-04-26  Richard Biener  <rguenther@suse.de>
      
      	* omp-low.c (finalize_task_copyfn): Do not drop PROP_loops.
      	(expand_omp_taskreg): Likewise.  Mark loops for fixup.
      	* tree-cfg.c (move_block_to_fn): Remap loop fathers.
      	(fixup_loop_arrays_after_move): New function.
      	(move_sese_region_to_fn): Properly outline the loop tree parts
      	of the SESE region.
      
      From-SVN: r198338
      Richard Biener committed
    • re PR c++/55708 (g++ crashes: constexpr function with reference parameters.) · 6e03fa93
      2013-04-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/55708
      	* g++.dg/cpp0x/constexpr-55708.C: New.
      
      From-SVN: r198337
      Paolo Carlini committed
    • i386.md (type, unit): Fix long lines. · df93505e
      	* config/i386/i386.md (type, unit): Fix long lines.
      
      From-SVN: r198336
      Uros Bizjak committed
    • cstdio (gets): Provide only in C++98 and C++11. · acd1cc4b
      2013-04-26  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* include/c_global/cstdio (gets): Provide only in C++98 and C++11.
      	* include/c_std/cstdio (gets): Likewise.
      	* testsuite/27_io/headers/cstdio/functions_std.cc: Adjust.
      
      From-SVN: r198335
      Paolo Carlini committed
    • Makefile.in (lto-streamer-in.o): Add $(CFGLOOP_H) dependency. · dd366ec3
      2013-04-26  Richard Biener  <rguenther@suse.de>
      
      	* Makefile.in (lto-streamer-in.o): Add $(CFGLOOP_H) dependency.
      	(lto-streamer-out.o): Likewise.
      	* cfgloop.c (init_loops_structure): Export, add struct function
      	argument and adjust.
      	(flow_loops_find): Adjust.
      	* cfgloop.h (enum loop_estimation): Add EST_LAST.
      	(init_loops_structure): Declare.
      	* lto-streamer-in.c: Include cfgloop.h.
      	(input_cfg): Input the loop tree.
      	* lto-streamer-out.c: Include cfgloop.h.
      	(output_cfg): Output the loop tree.
      	(output_struct_function_base): Do not drop PROP_loops.
      
      From-SVN: r198334
      Richard Biener committed
    • tree-cfg.c (execute_build_cfg): Build the loop tree. · a9e0d843
      2013-03-26  Richard Biener  <rguenther@suse.de>
      
      	* tree-cfg.c (execute_build_cfg): Build the loop tree.
      	(pass_build_cfg): Provide PROP_loops.
      	(move_sese_region_to_fn): Remove loops that are outlined into fn
      	for now.
      	* tree-inline.c: Include cfgloop.h.
      	(initialize_cfun): Do not drop PROP_loops.
      	(copy_loops): New function.
      	(copy_cfg_body): Copy loop structure.
      	(tree_function_versioning): Initialize destination loop tree.
      	* tree-ssa-loop.c (pass_tree_loop_init): Do not provide PROP_loops.
      	(pass_parallelize_loops): Do IL verification.
      	* loop-init.c (loop_optimizer_init): Fixup loops if required.
      	* tree-optimize.c (execute_fixup_cfg): If we need to cleanup
      	the CFG make sure we fixup loops as well.
      	* tree-ssa-tail-merge.c: Include cfgloop.h.
      	(replace_block_by): When merging loop latches mark loops for fixup.
      	* lto-streamer-out.c (output_struct_function_base): Drop
      	PROP_loops for now.
      	* tree-ssa-phiopt.c: Include tree-scalar-evolution.h.
      	(tree_ssa_cs_elim): Initialize the loop optimizer and SCEV.
      	* ipa-split.c: Include cfgloop.h.
      	(split_function): Add the new return block to the loop tree root.
      	* tree-cfgcleanup.c (remove_forwarder_block_with_phi): Return
      	whether we have removed the forwarder block.
      	(merge_phi_nodes): If we removed a forwarder mark loops for fixup.
      	* cfgloop.h (place_new_loop): Declare.
      	* cfgloopmanip.c (place_new_loop): Export.
      	* Makefile.in (asan.o): Add $(CFGLOOP_H) dependency.
      	(tree-switch-conversion.o): Likewise.
      	(tree-complex.o): Likewise.
      	(tree-inline.o): Likewise.
      	(tree-ssa-tailmerge.o): Likewise.
      	(ipa-split.o): Likewise.
      	(tree-ssa-phiopt.o): Add $(SCEV_H) dependency.
      	(tree-ssa-copy.o): Likewise.
      	* tree-switch-conversion.c: Include cfgloop.h
      	(process_switch): If we emit a bit-test cascade, schedule loops
      	for fixup.
      	* tree-complex.c: Include cfgloop.h.
      	(expand_complex_div_wide): Properly add new basic-blocks to loops.
      	* asan.c: Include cfgloop.h.
      	(create_cond_insert_point): Properly add new basic-blocks to
      	loops, schedule loop fixup.
      	* cfgloop.c (verify_loop_structure): Check that looks are not
      	marked for fixup.
      	* omp-low.c (expand_parallel_call): Properly add new basic-blocks
      	to loops.
      	(expand_omp_for_generic): Likewise.
      	(expand_omp_sections): Likewise.
      	(expand_omp_atomic_pipeline): Schedule loops for fixup.
      	* tree-ssa-copy.c: Include tree-scalar-evolution.h.
      	(fini_copy_prop): Disable DCE in substitute_and_fold if SCEV
      	is initialized, not when loops are present.
      	* tree-parloops.c (parallelize_loops): Remove checking here.
      	* passes.c (init_optimization_passes): Schedule a copy-propagation
      	pass before complete unrolling of inner loops.
      
      	* gcc.dg/tree-prof/update-loopch.c: Revert last change.
      	* gcc.dg/graphite/pr33766.c: Fix undefined behavior.
      	* gcc.dg/pr53265.c: Remove XFAILs.
      	* gcc.dg/tree-ssa/loop-38.c: Remove unreliable dump scanning.
      	* gcc.dg/tree-ssa/pr21559.c: Change back to two expected jump threads.
      
      From-SVN: r198333
      Richard Biener committed
    • Makefile.in (toplev.o): Depend on diagnostic-color.h. · a2e836b2
      	* Makefile.in (toplev.o): Depend on diagnostic-color.h.
      	* diagnostic-color.c (should_colorize): Remove _WIN32 version.
      	(colorize_init): Add argument to _WIN32 version.
      	* toplev.c: Include diagnostic-color.h.
      	(process_options): Default to -fdiagnostics-color=auto if
      	GCC_COLORS env var is in the environment.
      	* common.opt (fdiagnostics-color=): Add Var and Init.
      	* doc/invoke.texi (-fdiagnostics-color=): Document that if
      	GCC_COLORS env var is in the environment, the default is auto
      	rather than never.
      
      	* lib/prune.exp: Add -fdiagnostics-color=never to TEST_ALWAYS_FLAGS.
      	* lib/c-compat.exp (compat-use-alt-compiler, compat_setup_dfp): Handle
      	-fdiagnostics-color=never option similarly to
      	-fno-diagnostics-show-caret option.
      
      From-SVN: r198332
      Jakub Jelinek committed
    • diagnostic.h (file_name_as_prefix): Add context argument. · e78e8a0b
      	* diagnostic.h (file_name_as_prefix): Add context argument.
      	* diagnostic.c (file_name_as_prefix): Likewise.  Colorize
      	the string as locus.
      	* langhooks.c (lhd_print_error_function): Adjust caller.
      cp/
      	* error.c (cp_print_error_function): Adjust file_name_as_prefix
      	caller.
      
      From-SVN: r198331
      Jakub Jelinek committed