1. 21 Oct, 2015 27 commits
    • Add a pass to back-propagate use information · 6a75d560
      This patch adds a pass that collects information that is common to
      all uses of an SSA name X and back-propagates that information up
      the statements that generate X.  The general idea is to use the
      information to simplify instructions (rather than a pure DCE) so
      I've simply called it gimple-ssa-backprop.c, to go with
      tree-ssa-forwprop.c.
      
      At the moment the only use of the pass is to remove unnecessary
      sign operations, so that it's effectively a global version of
      fold_strip_sign_ops.  I'm hoping it could be extended in future
      to record which bits of an integer are significant.  There are
      probably other potential uses too.
      
      A later patch gets rid of fold_strip_sign_ops.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* doc/invoke.texi (-fdump-tree-backprop, -fssa-backprop): Document.
      	* Makefile.in (OBJS): Add gimple-ssa-backprop.o.
      	* common.opt (fssa-backprop): New option.
      	* fold-const.h (negate_mathfn_p): Declare.
      	* fold-const.c (negate_mathfn_p): Make public.
      	* timevar.def (TV_TREE_BACKPROP): New.
      	* tree-pass.h (make_pass_backprop): Declare.
      	* passes.def (pass_backprop): Add.
      	* gimple-ssa-backprop.c: New file.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/backprop-1.c, gcc.dg/tree-ssa/backprop-2.c,
      	gcc.dg/tree-ssa/backprop-3.c, gcc.dg/tree-ssa/backprop-4.c,
      	gcc.dg/tree-ssa/backprop-5.c, gcc.dg/tree-ssa/backprop-6.c: New tests.
      
      From-SVN: r229139
      Richard Sandiford committed
    • avoid generation of empty guards in trivial cases · 77ec8b8c
      We used to insert a trivial integer_onep condition around loops we know have
      more than an iteration.  This patch avoids generating those conditions.
      
      	* graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Do not call
      	create_empty_if_region_on_edge when cond_expr is true.
      	(translate_isl_ast_node_for): Check whether a guard has been generated.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r229137
      Aditya Kumar committed
    • Refactor graphite-sese-to-poly, sese.h, graphite-poly.h · caf5b4df
      Now that scop contains a list of all the basic blocks inside, it makes sense to
      iterate over only those basic blocks in
      graphite-sese-to-poly.c:rewrite_reductions_out_of_ssa,rewrite_cross_bb_scalar_deps_out_of_ssa
      
      Passes regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-10-20  Aditya Kumar  <hiraditya@msn.com>
      
              * graphite-poly.h (struct dr_info): Added invalid_alias_set number.
              (operator=): Removed.
              (dr_info): Make alias_set number the last argument with default value of invalid_alias_set.
              * graphite-sese-to-poly.c (build_scop_drs): Update constructor of dr_info.
              (rewrite_reductions_out_of_ssa): Iterate only through the basic blocks which are inside region.
              (rewrite_cross_bb_scalar_deps_out_of_ssa): Same.
              * sese.h (struct sese_l): Removed assignment operator.
              (split_region_for_bb): Removed dead code.
      
      From-SVN: r229136
      Aditya Kumar committed
    • Refactoring sese.h and graphite-poly.h · d37fc3aa
      Rename scop->region to scop->scop_info
      Removed conversion constructors for sese_l and dr_info.
      Removed macros.
      
      No functional changed intended. Passes regtest and bootstrap.
      
      gcc/ChangeLog:
      
      2015-19-10  Aditya Kumar  <aditya.k7@samsung.com>
              * graphite-poly.h (struct dr_info): Removed conversion constructor.
              (struct scop): Renamed scop::region to scop::scop_info
              (scop_set_region): Same.
              (SCOP_REGION): Removed
              (SCOP_CONTEXT): Removed.
              (POLY_SCOP_P): Removed.
              * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user):
              Rename scop->region to scop->scop_info.
              (add_parameters_to_ivs_params): Same.
              (graphite_regenerate_ast_isl): Same.
              * graphite-poly.c (new_scop): Same.
              (free_scop): Same.
              (print_scop_params): Same.
              * graphite-scop-detection.c (scop_detection::remove_subscops): Same.
              (scop_detection::remove_intersecting_scops): Use pointer to sese_l.
              (dot_all_scops_1): Rename scop->region to scop->scop_info.
              (scop_detection::nb_pbbs_in_loops): Same.
              (find_scop_parameters): Same.
              (try_generate_gimple_bb): Same.
              (gather_bbs::before_dom_children): Same.
              (gather_bbs::after_dom_children): Same.
              (build_scops): Same.
              * graphite-sese-to-poly.c (build_scop_scattering): Same.
              (extract_affine_chrec): Same.
              (extract_affine): Same.
              (set_scop_parameter_dim): Same.
              (build_loop_iteration_domains): Same.
              (create_pw_aff_from_tree): Same.
              (add_param_constraints): Same.
              (build_scop_iteration_domain): Same.
              (build_scop_drs): Same.
              (analyze_drs_in_stmts): Same.
              (insert_out_of_ssa_copy_on_edge): Same.
              (rewrite_close_phi_out_of_ssa):Same.
              (rewrite_reductions_out_of_ssa):Same.
              (handle_scalar_deps_crossing_scop_limits):Same.
              (rewrite_cross_bb_scalar_deps):Same.
              (rewrite_cross_bb_scalar_deps_out_of_ssa):Same.
              (build_poly_scop):Same.
              (build_alias_set): Use pointer to dr_info.
              * graphite.c (print_graphite_scop_statistics):
              (graphite_transform_loops):
              * sese.h (struct sese_l): Remove conversion constructor.
      
      From-SVN: r229135
      Aditya Kumar committed
    • Add --param sra-max-scalarization-size-Ospeed to sra-12.c · 3d27a323
      	* gcc.dg/tree-ssa/sra-12.c: Enable test on all targets; add --param
      	sra-max-scalarization-size-Ospeed.
      
      From-SVN: r229134
      Alan Lawrence committed
    • re PR middle-end/67966 (ICE in convert_move, at expr.c:282) · b6d3c031
      
      	PR middle-end/67966
      	* tree.c (verify_type): Verify that TYPE_MODE match
       	between TYPE_CANONICAL and type.
       	* expr.c (store_expr_with_bounds): Revert my previous change.
       	* expmed.c (store_bit_field_1): Revert prevoius change.
       	* gimple-expr.c (useless_type_conversion_p): Require TYPE_MODE
       	to match for all types.
      
      From-SVN: r229132
      Jan Hubicka committed
    • re PR c/68024 (Diagnose variadic functions defined without prototypes) · e9122ef6
      	PR c/68024
      	* c-decl.c (start_function): Warn about vararg functions without
      	a prototype.
      
      	* gcc.dg/pr68024.c: New test.
      
      From-SVN: r229131
      Marek Polacek committed
    • omp-low.c (check_omp_nesting_restrictions): Check OpenACC loop nesting. · 68d58afb
      	gcc/
      	* omp-low.c (check_omp_nesting_restrictions): Check OpenACC loop
      	nesting.
      
      	testsuite/
      	* c-c++-common/goacc/clauses-fail.c: Adjust errors.
      	* c-c++-common/goacc/sb-1.c: Adjust errors.
      	* c-c++-common/goacc/sb-3.c: Adjust errors.
      	* c-c++-common/goacc/loop-1.c: Adjust errors.
      	* c-c++-common/goacc/nesting-1.c: Adjust errors.
      	* c-c++-common/goacc-gomp/nesting-fail-1.c: Adjust errors.
      	* c-c++-common/goacc-gomp/nesting-1.c: Adjust errors.
      
      From-SVN: r229129
      Nathan Sidwell committed
    • tm.texi: Regenerated. · 9f47c7e5
      gcc/
      
      	* doc/tm.texi: Regenerated.
      	* doc/tm.texi.in (TARGET_VECTORIZE_GET_MASK_MODE): New.
      	* stor-layout.c (layout_type): Use mode to get vector mask size.
      	* target.def (get_mask_mode): New.
      	* targhooks.c (default_get_mask_mode): New.
      	* targhooks.h (default_get_mask_mode): New.
      	* gcc/tree-vect-stmts.c (get_same_sized_vectype): Add special case
      	for boolean vector.
      	* tree.c (MAX_BOOL_CACHED_PREC): New.
      	(nonstandard_boolean_type_cache): New.
      	(build_nonstandard_boolean_type): New.
      	(make_vector_type): Vector mask has no canonical type.
      	(build_truth_vector_type): New.
      	(build_same_sized_truth_vector_type): New.
      	(truth_type_for): Support vector masks.
      	* tree.h (VECTOR_BOOLEAN_TYPE_P): New.
      	(build_truth_vector_type): New.
      	(build_same_sized_truth_vector_type): New.
      	(build_nonstandard_boolean_type): New.
      	* tree-cfg.c (verify_gimple_comparison) Require boolean
      	vector type for vector comparison.
      	(verify_gimple_assign_ternary): Likewise.
      	* optabs.c (expand_vec_cond_expr): Accept boolean vector as
      	condition operand.
      	* tree-vect-stmts.c (vectorizable_condition): Use boolean
      	vector type for vector comparison.
      	* tree-vect-generic.c (elem_op_func): Add new operand to hold
      	vector type.
      	(do_unop): Adjust to modified function type.
      	(do_binop): Likewise.
      	(do_plus_minus): Likewise.
      	(do_negate); Likewise.
      	(expand_vector_piecewise): Likewise.
      	(do_cond): Likewise.
      	(do_compare): Use comparison instead of condition.
      	(expand_vector_divmod): Use boolean vector type for comparison.
      	(expand_vector_operations_1): Skip scalar mask operations.
      
      gcc/c
      
      	* c-typeck.c (build_conditional_expr): Use boolean vector
      	type for vector comparison.
      	(build_vec_cmp): New.
      	(build_binary_op): Use build_vec_cmp for comparison.
      
      gcc/cp
      
      	* call.c (build_conditional_expr_1): Use boolean vector
      	type for vector comparison.
      	* typeck.c (build_vec_cmp): New.
      	(cp_build_binary_op): Use build_vec_cmp for comparison.
      
      gcc/testsuite/
      
      	* g++.dg/ext/vector22.C: Allow VEC_COND_EXPR.
      
      From-SVN: r229128
      Ilya Enkovich committed
    • omp-low.c (simd_clone_create): Set in_other_partition for created clones. · 6f9045f4
      gcc/
      
      	* omp-low.c (simd_clone_create): Set in_other_partition
      	for created clones.
      
      gcc/testsuite/
      
      	* gcc.dg/lto/simd-function_0.c: New test.
      
      From-SVN: r229127
      Ilya Enkovich committed
    • Proposed doc update for Explicit Reg Vars 2/3 · cbb5c732
      	* doc/extend.exp (Local Register Variables): Rewrite.
      
      From-SVN: r229124
      David Wohlferd committed
    • Add simple sign-stripping cases to match.pd · 5d3498b4
      This patch makes sure that, for every simplification that uses
      fold_strip_sign_ops, there are associated match.pd rules for the
      leaf sign ops, i.e. abs, negate and copysign.  A follow-on patch
      will add a pass to handle more complex cases.
      
      Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
      
      gcc/
      	* match.pd: Add rules to simplify ccos, ccosh, hypot, copysign
      	and x*x in cases where the operands are sign ops.  Extend these
      	rules to handle copysign as a sign op (including for cos, cosh
      	and pow, which already treated negate and abs as sign ops).
      
      From-SVN: r229123
      Richard Sandiford committed
    • re PR target/68018 (ICE: in ix86_compute_frame_layout, at… · dc3cf66b
      re PR target/68018 (ICE: in ix86_compute_frame_layout, at config/i386/i386.c:11308 with -mstackrealign)
      
      	PR target/68018
      	* config/i386/i386.c (ix86_compute_frame_layout): Realign the stack
      	for 64-bit MS_ABI targets also when default incoming stack boundary
      	is overriden.
      
      testsuite/ChangeLog:
      
      	PR target/68018
      	* gcc.target/i386/pr68018.c: New test.
      
      From-SVN: r229120
      Uros Bizjak committed
    • tree-ssa-sccvn.c (cond_stmts_equal_p): Compare two GIMPLE cond stmts, enhanced… · 87961d1b
      tree-ssa-sccvn.c (cond_stmts_equal_p): Compare two GIMPLE cond stmts, enhanced and split out from ...
      
      2015-10-21  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (cond_stmts_equal_p): Compare two GIMPLE
      	cond stmts, enhanced and split out from ...
      	(vn_phi_eq): ... here.
      
      From-SVN: r229119
      Richard Biener committed
    • re PR tree-optimization/68031 (cc1 crashes when compiling newlib / mktm_r.c) · 39c97e41
      2015-10-21  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/68031
      	* fold-const.c: Include tree-ssa-operands.h and tree-into-ssa.h.
      	(tree_ssa_name_nonnegative_warnv_p): Fold into ...
      	(tree_single_nonnegative_warnv_p): ... here.  For SSA names
      	make sure they are not registered for update.
      
      	* gcc.dg/torture/pr68031.c: New testcase.
      
      From-SVN: r229118
      Richard Biener committed
    • re PR tree-optimization/68026 (Regression in GCC-6.0.0's optimizer) · 33b35c28
      2015-10-21  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68026
      	* tree-ssa-ccp.c (get_value_for_expr): Zero-extend mask for
      	unsigned VARYING values.
      
      	* gcc.dg/tree-ssa/ssa-ccp-39.c: New testcase.
      
      From-SVN: r229117
      Richard Biener committed
    • HOWTO_MERGE: New file. · 7047bc9c
      libsanitizer/
      
      	* HOWTO_MERGE: New file.
      
      From-SVN: r229116
      Max Ostapenko committed
    • sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when… · 21d61063
      sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when extracting the caller PC for ARM if...
      
      libsanitizer/
      
      	* sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we
      	compiled code with GCC when extracting the caller PC for ARM if no
      	valid frame pointer is available.
      
      From-SVN: r229115
      Max Ostapenko committed
    • re PR bootstrap/63888 (bootstrap failed when configured with… · 15ebe1fe
      re PR bootstrap/63888 (bootstrap failed when configured with -with-build-config=bootstrap-asan --disable-werror)
      
      libsanitizer/
      
      	PR bootstrap/63888
      	Reapply:
      	2015-02-20  Jakub Jelinek  <jakub@redhat.com>
      
      	* asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
      	support until it is rewritten upstream.
      
      	* c-c++-common/asan/pr63888.c: New test.
      
      From-SVN: r229114
      Max Ostapenko committed
    • re PR sanitizer/63958 (bootstrap failure in the sanitizer libs on sparc-linux-gnu) · 0d57d3e0
      libsanitizer/
      
      	PR sanitizer/63958
      	Reapply:
      	2014-10-14  David S. Miller  <davem@davemloft.net>
      
      	* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
      	Define at __kernel_time_t, as needed for sparc.
      	(struct __old_kernel_stat): Don't check if __sparc__ is defined.
      	* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
      	(__sanitizer): Define struct___old_kernel_stat_sz,
      	struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
      	(__sanitizer_ipc_perm): Adjust for sparc targets.
      	(__sanitizer_shmid_ds): Likewsie.
      	(__sanitizer_sigaction): Likewise.
      	(IOC_SIZE): Likewsie.
      
      From-SVN: r229113
      Max Ostapenko committed
    • libsanitizer merge from upstream r250806, compiler part. · 89e302b8
      gcc/
      
      	* asan.c (asan_emit_stack_protection): Don't pass local stack to
      	asan_stack_malloc_[n] anymore. Check if asan_stack_malloc_[n] returned
      	NULL and use local stack than.
      	(asan_finish_file): Insert __asan_version_mismatch_check_v[n] call
      	in addition to __asan_init.
      	* sanitizer.def (BUILT_IN_ASAN_INIT): Rename to __asan_init.
      	(BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Add new builtin call.
      	* asan.h (asan_intercepted_p): Handle new string builtins.
      	* ubsan.c (ubsan_use_new_style_p): New function.
      	(ubsan_instrument_float_cast): If location is unknown, assign
      	input_location to loc. Propagate loc to ubsan_create_data if
      	ubsan_use_new_style_p returned true.
      
      config/
      
      	* bootstrap-asan.mk: Replace ASAN_OPTIONS=detect_leaks with
      	LSAN_OPTIONS=detect_leaks.
      
      gcc/testsuite/
      
      	* c-c++-common/ubsan/float-cast-overflow-10.c: Adjust test.
      	* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
      	* g++.dg/asan/default-options-1.C: Likewise.
      
      From-SVN: r229112
      Max Ostapenko committed
    • libsanitizer merge from upstream r250806. · 696d846a
      libsanitizer/
      
      2015-10-20  Maxim Ostapenko  <m.ostapenko@partner.samsung.com>
      
      	* All source files: Merge from upstream r250806.
      	* configure.ac (link_sanitizer_common): Add -lrt flag.
      	* configure.tgt: Enable TSAN and LSAN for aarch64-linux targets.
      	Set CXX_ABI_NEEDED=true for darwin.
      	* asan/Makefile.am (asan_files): Add new files.
      	(DEFS): Add DCAN_SANITIZE_UB=0 and remove unused and legacy
      	DASAN_FLEXIBLE_MAPPING_AND_OFFSET=0.
      	* asan/Makefile.in: Regenerate.
      	* ubsan/Makefile.am (ubsan_files): Add new files.
      	(DEFS): Add DCAN_SANITIZE_UB=1.
      	(libubsan_la_LIBADD): Add -lc++abi if CXX_ABI_NEEDED is true.
      	* ubsan/Makefile.in: Regenerate.
      	* tsan/Makefile.am (tsan_files): Add new files.
      	(DEFS): Add DCAN_SANITIZE_UB=0.
      	* tsan/Makefile.in: Regenerate.
      	* sanitizer_common/Makefile.am (sanitizer_common_files): Add new files.
      	* sanitizer_common/Makefile.in: Regenerate.
      	* asan/libtool-version: Bump the libasan SONAME.
      
      From-SVN: r229111
      Max Ostapenko committed
    • [PATCH] Move RTL printing code from sched-vis.c into print-rtl.c · 013a8899
      	* Makefile.in (OBJS): Remove sched-vis.c
      	* sched-vis.c: Removed.  Code moved into...
      	* print-rtl.c: Here.  Include cfg.h, pretty-print.h and print-rtl.h.
      	* rtl.h: Remove prototypes for functions now living in print-rtl.c
      	* print-rtl.h Add prototypes for new functions in print-rtl.c.
      	* auto-inc-dec.c: Include print-rtl.h
      	* cfgrtl.c, combine.c, final.c haifa-sched.c: Likewise.
      	* ira.c, lra-constraints.c, lra.c, sel-sched-dump.c: Likewise.
      
      From-SVN: r229110
      Jeff Law committed
    • [PATCH]Fix various ports failing due to unused parameter · 84c25fb5
      	* varasm.c (handle_vtv_comdat_section): Mark 2nd parameter with
      	ATTRIBUTE_UNUSED.
      
      From-SVN: r229109
      Jeff Law committed
    • re PR c++/66583 (incorrect implicitly-defined move constructor for class with… · a81072c7
      re PR c++/66583 (incorrect implicitly-defined move constructor for class with anonymous union and NSDMI)
      
      	PR c++/66583
      
      	* init.c (innermost_aggr_scope): New.
      	(build_field_list): Change uses_unions_p to uses_unions_or_anon_p.
      	(sort_mem_initializers): Handle initializers for entire anonymous
      	aggregates.
      
      From-SVN: r229108
      Jason Merrill committed
    • fold-const.c (fold_binary_loc): Move (-A) * (-B) -> A * B to match.pd. · 0a8f32b8
      2015-10-20  Richard Biener  <rguenther@suse.de>
      	    Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>
      
      	* fold-const.c (fold_binary_loc) : Move (-A) * (-B) -> A * B
      	to match.pd.
      	Move (a * (1 << b)) is (a << b) to match.pd.
      	Move convert (C1/X)*C2 into (C1*C2)/X to match.pd.
      	Move ~X & X, (X == 0) & X, and !X & X are zero to match.pd.
      	Move X & ~X , X & (X == 0), and X & !X are zero to match.pd.
      
      	* match.pd (mult:c @0 (convert? (lshift integer_onep@1 @2))):
      	New simplifier.
      	(mult (rdiv:s REAL_CST@0 @1) REAL_CST@2): New simplifier.
      	(bit_and:c (convert? @0) (convert? (bit_not @0))): New simplifier.
      	(bit_ior (bit_and:s @0 (bit_not:s @1)) (bit_and:s (bit_not:s @0) @1))
      	: New simplifier.
      	(mult:c (convert1? (negate @0)) (convert2? negate_expr_p@1)):
      	New simplifier.
      	(match (logical_inverted_value @0) (truth_not @0)) : New Predicate.
      
      
      Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
      
      From-SVN: r229107
      Richard Biener committed
    • Daily bump. · d0761942
      From-SVN: r229106
      GCC Administrator committed
  2. 20 Oct, 2015 13 commits