1. 12 Nov, 2015 2 commits
    • Preserve the original program while using graphite. · 65b016eb
      Earlier, graphite used to translate portions of the original program after
      scop-detection in order to represent the SCoP into polyhedral model.  This was
      required because each basic block was represented as independent basic block in
      the polyhedral model. So all the cross-basic-block dependencies were translated
      out-of-ssa.
      
      With this patch those dependencies are also exposed to the ISL, so there is no
      need to modify the original structure of the program.
      
      After this patch we should be able to enable graphite at some default
      optimization level.
      
      Highlights:
      Remove cross bb scalar to array translation
      For reductions, add support for more than just INT_CST
      Early bailout on codegen.
      Verify loop-closed ssa structure during copy of renames
      The uses of exprs should come from bb which dominates the bb
      Collect the init value of close phi in loop-guard
      Do not follow vuses for close-phi, postpone loop-close phi until the
          corresponding loop-phi is processed
      Bail out if no bb found to place cond/loop -phis
      Move insertion of liveouts at the end of codegen
      Insert loop-phis in the loop-header.
      
      This patch passes regtest and bootstrap with BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'
      
      2015-11-11  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
      
      	* graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple):
      	  New member codegen_error
      	(translate_isl_ast_for_loop): Remove call to single_succ_edge and early return.
      	(translate_isl_ast_node_user): Early return in case of error.
      	(translate_isl_ast_to_gimple::translate_isl_ast): Same.
      	(translate_isl_ast_to_gimple::translate_pending_phi_nodes): New.
      	(add_parameters_to_ivs_params): Remove macro.
      	(graphite_regenerate_ast_isl): Add if_region pointer to region.
      	* graphite-poly.c (new_poly_dr): Remove macro.
      	(print_pdr): Same.
      	(new_gimple_poly_bb): Same.
      	(free_gimple_poly_bb): Same.
      	(print_scop_params): Same.
      	* graphite-poly.h (struct poly_dr): Same.
      	(struct poly_bb): Add new_bb.
      	(gbb_from_bb): Remove dead code.
      	(pbb_from_bb): Same.
      	* graphite-scop-detection.c (parameter_index_in_region_1): Same.
      	(parameter_index_in_region): Same.
      	(find_scop_parameters): Same.
      	(build_cross_bb_scalars_def): New.
      	(build_cross_bb_scalars_use): New.
      	(graphite_find_cross_bb_scalar_vars): New
      	(try_generate_gimple_bb): Reads and Writes.
      	(build_alias_set): Move.
      	(gather_bbs::before_dom_children): Gather bbs visited.
      	(build_scops): call build_alias_set.
      	* graphite-sese-to-poly.c (phi_arg_in_outermost_loop): Delete.
      	(remove_simple_copy_phi): Delete.
      	(remove_invariant_phi): Delete.
      	(simple_copy_phi_p): Delete.
      	(reduction_phi_p): Delete.
      	(isl_id_for_dr): Remove unused param.
      	(parameter_index_in_region_1): Remove macro usage.
      	(set_scop_parameter_dim): Same.
      	(add_param_constraints): Same.
      	(add_conditions_to_constraints): Same
      	(build_scop_iteration_domain): Same.
      	(pdr_add_alias_set): Comment.
      	(add_scalar_version_numbers): New.
      	(build_poly_dr): ISL id.
      	(build_scop_drs): Move.
      	(build_poly_sr_1): Same.
      	(insert_stmts): Remove.
      	(build_poly_sr): New.
      	(new_pbb_from_pbb): Delete.
      	(insert_out_of_ssa_copy_on_edge): Delete.
      	(create_zero_dim_array): Delete.
      	(scalar_close_phi_node_p): Delete.
      	(propagate_expr_outside_region): Delete.
      	(rewrite_close_phi_out_of_ssa): Delete.
      	(rewrite_phi_out_of_ssa): Delete.
      	(rewrite_degenerate_phi): Delete.
      	(rewrite_reductions_out_of_ssa): Delete.
      	(rewrite_cross_bb_scalar_dependence): Delete.
      	(handle_scalar_deps_crossing_scop_limits):
      	(rewrite_cross_bb_scalar_deps): Delete.
      	(build_poly_scop): Remove calls to out-of-ssa functions.
      	* graphite.c (graphite_transform_loops): Early return in case of codegen error.
      	* sese.c (debug_rename_map_1): Delete.
      	(debug_rename_map): Delete.
      	(sese_record_loop): Remove macro.
      	(build_sese_loop_nests): Same.
      	(new_sese_info): Same.
      	(free_sese_info): Same.
      	(sese_insert_phis_for_liveouts):
      	(is_loop_closed_ssa_use): New.
      	(number_of_phi_nodes): New.
      	(bb_contains_loop_close_phi_nodes): New.
      	(bb_contains_loop_phi_nodes): New.
      	(phi_uses_name): New.
      	(is_valid_rename):
      	(get_rename): Add old_bb and loop_phi for more precise matching of
      	exprs.
      	(set_rename): Pass region.
      	(later_of_the_two): New.
      	(gsi_insert_earliest): New.
      	(collect_all_ssa_names): New.
      	(substitute_ssa_name): New.
      	(rename_all_uses): New.
      	(get_rename_from_scev): New.
      	(rename_uses): Pass old_bb for more precise matching of exprs.
      	(get_def_bb_for_const): New.
      	(get_new_name): New.
      	(get_loc): New.
      	(get_edges): New.
      	(copy_loop_phi_args): New.
      	(copy_loop_phi_nodes): New.
      	(get_loop_init_value): New.
      	(find_init_value): New.
      	(find_init_value_close_phi): New.
      	(copy_loop_close_phi_args): New.
      	(copy_loop_close_phi_nodes): New.
      	(add_phi_arg_for_new_expr): New.
      	(copy_cond_phi_args): New.
      	(copy_cond_phi_nodes): New.
      	(copy_phi_nodes): New.
      	(should_copy_to_new_region): New.
      	(set_rename_for_each_def): New.
      	(graphite_copy_stmts_from_block): Early return in case of error.
      	(copy_bb_and_scalar_dependences): Same.
      	* sese.h (vec_find): New.
      	(SESE_PARAMS): Delete.
      	(SESE_LOOPS): Delete.
      	(SESE_LOOP_NEST): Delete.
      	(sese_contains_loop): Remove macro usage.
      	(sese_nb_params): Same.
      	(struct gimple_poly_bb): Added read_scalar_refs, write_scalar_refs.
      
      Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
      
      From-SVN: r230200
      Aditya Kumar committed
    • Daily bump. · f891c4f0
      From-SVN: r230199
      GCC Administrator committed
  2. 11 Nov, 2015 38 commits
    • * gcc.dg/pr65521.c: Fail on AIX. · 42aa1c42
      From-SVN: r230195
      David Edelsohn committed
    • improve construction of the original schedule · eefa4baf
      The patch builds the original schedule based on the now optimized scattering
      dimension instead of building one based on the loop index only.
      
      The implementation is simpler and catches more cases where the original schedule
      and the transformed schedule are the same, such as the one below:
      
      for (i = 0; i < 1000; i++)
      {
        Temp = F[i];
        for (j = 0; j < 1000; j++)
       {
          D[j] = E[j]  * Temp;
          A[i][j] = A[i][j]  + B[i][j] * C[i][j] - D[j] ;
        }
        D[i] = E[i] * F[i];
      }
      
        * graphite-sese-to-poly.c (build_scop_original_schedule): Call
        isl_union_map_add_map on every pbb->schedule.
      
      From-SVN: r230191
      Abderrazek Zaafrani committed
    • add testsuite automatic dg-options and dg-do action for isl-ast-gen-* and fuse-* files · d82f8c85
              * gcc.dg/graphite/fuse-1.c: Adjust pattern.  Remove dg-do.
              * gcc.dg/graphite/fuse-2.c: Same.
              * gcc.dg/graphite/graphite.exp (opt_files): Add fuse-*.c and
              isl-ast-gen-*.c files.
              * gcc.dg/graphite/isl-ast-gen-blocks-1.c: Remove dg-do and dg-options.
              * gcc.dg/graphite/isl-ast-gen-blocks-2.c: Same.
              * gcc.dg/graphite/isl-ast-gen-blocks-3.c: Same.
              * gcc.dg/graphite/isl-ast-gen-blocks-4.c: Same.
              * gcc.dg/graphite/isl-ast-gen-if-1.c: Same.
              * gcc.dg/graphite/isl-ast-gen-if-2.c: Same.
              * gcc.dg/graphite/isl-ast-gen-single-loop-1.c: Same.
              * gcc.dg/graphite/isl-ast-gen-single-loop-2.c: Same.
              * gcc.dg/graphite/isl-ast-gen-single-loop-3.c: Same.
              * gcc.dg/graphite/isl-ast-gen-user-1.c: Same.
              * gcc.dg/graphite/isl-codegen-loop-dumping.c: Remove.
      
      From-SVN: r230190
      Sebastian Pop committed
    • Make create_parallel_loop return void · a6f4d493
      2015-11-11  Tom de Vries  <tom@codesourcery.com>
      
      	* tree-parloops.c (create_parallel_loop): Return void.
      
      From-SVN: r230189
      Tom de Vries committed
    • Insert new exit block only when needed in transform_to_exit_first_loop_alt · d42ba2d2
      2015-11-11  Tom de Vries  <tom@codesourcery.com>
      
      	* tree-parloops.c (transform_to_exit_first_loop_alt): Insert new exit
      	block only when needed.
      
      From-SVN: r230188
      Tom de Vries committed
    • Loop in std::this_thread sleep functions · f55e699d
      	PR libstdc++/60421
      	* include/std/thread (this_thread::sleep_for): Retry on EINTR.
      	(this_thread::sleep_until): Retry if time not reached.
      	* src/c++11/thread.cc (__sleep_for): Retry on EINTR.
      	* testsuite/30_threads/this_thread/60421.cc: Test interruption and
      	non-steady clocks.
      
      From-SVN: r230183
      Jonathan Wakely committed
    • alpha-protos.h (print_operand): Remove. · f83e2262
      	* config/alpha/alpha-protos.h (print_operand): Remove.
      	(print_operand_address): Remove.
      	* config/alpha/alpha.h (PRINT_OPERAND): Remove.
      	(PRINT_OPERAND_ADDRESS): Remove.
      	(PRINT_OPERAND_PUNCT_VALID_P): Remove.
      	* config/alpha/alpha.c (TARGET_PRINT_OPERAND): New hook define.
      	(TARGET_PRINT_OPERAND_ADDRESS): New hook define.
      	(TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
      	(print_operand_address): Rename to...
      	(alpha_print_operand_address): ...this and make static.
      	(print_operand): Rename to...
      	(alpha_print_operand): ...this and make static.
      	(alpha_print_operand_punct_valid_p): New static function.
      
      From-SVN: r230181
      Uros Bizjak committed
    • Correct the Changelog date of the previous commit. · e3907f12
      From-SVN: r230177
      Ville Voutilainen committed
    • LWG 2510, make the default constructors of library tag types explicit. · 269fa2a9
      2015-11-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
      
      	LWG 2510, make the default constructors of library tag types
      	explicit.
      	* include/bits/mutex.h (defer_lock_t, try_lock_t,
      	adopt_lock_t): Add an explicit default constructor.
      	* include/bits/stl_pair.h (piecewise_construct_t): Likewise.
      	* include/bits/uses_allocator.h (allocator_arg_t): Likewise.
      	* libsupc++/new (nothrow_t): Likewise.
      	* testsuite/17_intro/tag_type_explicit_ctor.cc: New.
      
      From-SVN: r230175
      Ville Voutilainen committed
    • re PR c/68107 (Non-VLA type whose size is half or more of the address space… · e78bede6
      re PR c/68107 (Non-VLA type whose size is half or more of the address space constructed via a pointer)
      
      	PR c/68107
      	PR c++/68266
      	* c-common.c (valid_array_size_p): New function.
      	* c-common.h (valid_array_size_p): Declare.
      
      	* c-decl.c (grokdeclarator): Call valid_array_size_p.  Remove code
      	checking the size of an array.
      
      	* decl.c (grokdeclarator): Call valid_array_size_p.  Remove code
      	checking the size of an array.
      
      	* c-c++-common/pr68107.c: New test.
      	* g++.dg/init/new38.C (large_array_char): Adjust dg-error.
      	(large_array_char_template): Likewise.
      	* g++.dg/init/new44.C: Adjust dg-error.
      
      From-SVN: r230174
      Marek Polacek committed
    • tree-vectorizer.h (vect_slp_analyze_and_verify_instance_alignment): Declare. · a5b50aa1
      2015-11-11  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (vect_slp_analyze_and_verify_instance_alignment):
      	Declare.
      	(vect_analyze_data_refs_alignment): Make loop vect specific.
      	(vect_verify_datarefs_alignment): Likewise.
      	* tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependences):
      	Add missing continue.
      	(vect_compute_data_ref_alignment): Export.
      	(vect_compute_data_refs_alignment): Merge into...
      	(vect_analyze_data_refs_alignment): ... this.
      	(verify_data_ref_alignment): Split out from ...
      	(vect_verify_datarefs_alignment): ... here.
      	(vect_slp_analyze_and_verify_node_alignment): New function.
      	(vect_slp_analyze_and_verify_instance_alignment): Likewise.
      	* tree-vect-slp.c (vect_supported_load_permutation_p): Remove
      	misplaced checks on alignment.
      	(vect_slp_analyze_bb_1): Add fatal output parameter.  Do
      	alignment analysis after SLP discovery and do it per instance.
      	(vect_slp_bb): When vect_slp_analyze_bb_1 fatally failed do not
      	bother to re-try using different vector sizes.
      
      From-SVN: r230173
      Richard Biener committed
    • re PR bootstrap/68271 (Boostrap fails on x86_64-apple-darwin14 at r230084) · 4ac93c7c
      gcc/cp/ChangeLog
      2015-11-11  Dominique d'Humieres <dominiq@lps.ens.fr>
      
      	PR bootstrap/68271
      	* parser.h (cp_token): Update pragma_kind to 8.
      
      gcc/c-family/ChangeLog
      2015-11-11  Dominique d'Humieres <dominiq@lps.ens.fr>
      
      	PR bootstrap/68271
      	* c-pragma.c (c_register_pragma_1): Update the gcc_assert to 256.
      
      From-SVN: r230172
      Dominique d'Humieres committed
    • count-headers: Initial file. · bd94906f
      
      2015-11-11  Andrew MacLeod  <amacleod@redhat.com>
      
      	* count-headers: Initial file.
      	* gcc-order-headers: Initial file.
      	* graph-header-logs: Initial file.
      	* graph-include-web: Initial file.
      	* headerutils.py: Initial file.
      	* included-by: Initial file.
      	* README: Initial file.
      	* reduce-headers: Initial file.
      	* replace-header: Initial file.
      	* show-headers: Initial file.
      
      From-SVN: r230171
      Andrew MacLeod committed
    • re PR target/67265 ([x86] 'asm' operand has impossible constraints with -fstack-check) · 7337ccc4
      	PR target/67265
      	* config/i386/i386.c (ix86_finalize_stack_realign_flags): Likewise.
      
      From-SVN: r230170
      Eric Botcazou committed
    • gimplify.c (enum omp_region_type): Add ORT_ACC, ORT_ACC_DATA, ORT_ACC_PARALLEL, ORT_ACC_KERNELS. · 182190f2
      	gcc/
      	* gcc/gimplify.c (enum  omp_region_type): Add ORT_ACC,
      	ORT_ACC_DATA, ORT_ACC_PARALLEL, ORT_ACC_KERNELS.  Adjust ORT_NONE.
      	(gimple_add_tmp_var): Add ORT_ACC checks.
      	(gimplify_var_or_parm_decl): Likewise.
      	(omp_firstprivatize_variable): Likewise. Use ORT_TARGET_DATA as a
      	mask.
      	(omp_add_variable): Look in outer contexts for openacc and allow
      	reductions with other sharing. Add ORT_ACC and ORT_TARGET_DATA
      	checks.
      	(omp_notice_variable, omp_is_private, omp_check_private): Add
      	ORT_ACC checks.
      	(gimplify_scan_omp_clauses: Treat ORT_ACC as ORT_WORKSHARE.
      	Permit private openacc reductions.
      	(gimplify_oacc_cache): Specify ORT_ACC.
      	(gimplify_omp_workshare): Adjust OpenACC region types.
      	(gimplify_omp_target_update): Likewise.
      	* gcc/omp-low.c (scan_sharing_clauses): Remove Openacc
      	firstprivate sorry.
      	(lower-rec_input_clauses): Don't handle openacc firstprivate
      	references here.
      	(lower_omp_target): Emit initializers for openacc firstprivate vars.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/private-3.f95: Remove xfail.
      	* gfortran.dg/goacc/combined_loop.f90: Remove xfail.
      
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: Remove xfail.
      	* testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Remove xfail.
      	* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: New.
      	* testsuite/libgomp.oacc-c-c++-common/firstprivate-2.c: New.
      
      Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
      
      From-SVN: r230169
      Nathan Sidwell committed
    • re PR target/67265 ([x86] 'asm' operand has impossible constraints with -fstack-check) · 7700cd85
      	PR target/67265
      	* ira.c (ira_setup_eliminable_regset): Do not necessarily create the
      	frame pointer for stack checking if non-call exceptions aren't used.
      	* config/i386/i386.c (ix86_finalize_stack_realign_flags): Likewise.
      
      From-SVN: r230168
      Eric Botcazou committed
    • rs6000: Extend 20050603-3.c testcase to 64-bit · 0bf5130a
      The testcase used to fail on 64-bit, but it was disabled there.
      This patch makes it run there, and beefs up the checking of the
      generated code a bit.
      
      
      gcc/testsuite/
      	* gcc.target/powerpc/20050603-3.c: Don't restrict to ilp32.  Do more
      	tests for the expected generated code.
      
      From-SVN: r230167
      Segher Boessenkool committed
    • decl.c: Remove unused header files. · 69f293c9
      
      ada
      
      	* gcc-interface/decl.c: Remove unused header files.
      	* gcc-interface/misc.c: Likewise.
      	* gcc-interface/targtyps.c: Likewise.
      	* gcc-interface/trans.c: Likewise.
      	* gcc-interface/utils.c: Likewise.
      c
      
      	* c-array-notation.c: Remove unused header files.
      	* c-aux-info.c: Likewise.
      	* c-convert.c: Likewise.
      	* c-decl.c: Likewise.
      	* c-errors.c: Likewise.
      	* c-lang.c: Likewise.
      	* c-objc-common.c: Likewise.
      	* c-parser.c: Likewise.
      	* c-typeck.c: Likewise.
      	* gccspec.c: Likewise.
      
      c-family
      
      	* array-notation-common.c: Remove unused header files.
      	* c-ada-spec.c: Likewise.
      	* c-cilkplus.c: Likewise.
      	* c-common.c: Likewise.
      	* c-cppbuiltin.c: Likewise.
      	* c-dump.c: Likewise.
      	* c-format.c: Likewise.
      	* c-gimplify.c: Likewise.
      	* c-indentation.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-omp.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-pch.c: Likewise.
      	* c-ppoutput.c: Likewise.
      	* c-pragma.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* c-semantics.c: Likewise.
      	* c-ubsan.c: Likewise.
      	* cilk.c: Likewise.
      	* stub-objc.c: Likewise.
      
      cp
      
      	* call.c: Remove unused header files.
      	* class.c: Likewise.
      	* constexpr.c: Likewise.
      	* cp-array-notation.c: Likewise.
      	* cp-cilkplus.c: Likewise.
      	* cp-gimplify.c: Likewise.
      	* cp-lang.c: Likewise.
      	* cp-objcp-common.c: Likewise.
      	* cp-ubsan.c: Likewise.
      	* cvt.c: Likewise.
      	* cxx-pretty-print.c: Likewise.
      	* decl.c: Likewise.
      	* decl2.c: Likewise.
      	* dump.c: Likewise.
      	* error.c: Likewise.
      	* except.c: Likewise.
      	* expr.c: Likewise.
      	* friend.c: Likewise.
      	* g++spec.c: Likewise.
      	* init.c: Likewise.
      	* lambda.c: Likewise.
      	* lex.c: Likewise.
      	* mangle.c: Likewise.
      	* method.c: Likewise.
      	* name-lookup.c: Likewise.
      	* optimize.c: Likewise.
      	* parser.c: Likewise.
      	* pt.c: Likewise.
      	* ptree.c: Likewise.
      	* repo.c: Likewise.
      	* rtti.c: Likewise.
      	* search.c: Likewise.
      	* semantics.c: Likewise.
      	* tree.c: Likewise.
      	* typeck.c: Likewise.
      	* typeck2.c: Likewise.
      	* vtable-class-hierarchy.c: Likewise.
      
      Fortran
      
      	* array.c: Remove unused header files.
      	* convert.c: Likewise.
      	* cpp.c: Likewise.
      	* decl.c: Likewise.
      	* f95-lang.c: Likewise.
      	* frontend-passes.c: Likewise.
      	* iresolve.c: Likewise.
      	* match.c: Likewise.
      	* module.c: Likewise.
      	* options.c: Likewise.
      	* parse.c: Likewise.
      	* target-memory.c: Likewise.
      	* trans-array.c: Likewise.
      	* trans-common.c: Likewise.
      	* trans-const.c: Likewise.
      	* trans-decl.c: Likewise.
      	* trans-expr.c: Likewise.
      	* trans-intrinsic.c: Likewise.
      	* trans-io.c: Likewise.
      	* trans-openmp.c: Likewise.
      	* trans-stmt.c: Likewise.
      	* trans-types.c: Likewise.
      	* trans.c: Likewise.
      
      go
      
      	* go-backend.c: Remove unused header files.
      	* go-gcc.cc: Likewise.
      	* go-lang.c: Likewise.
      	* gospec.c: Likewise.
      
      Java
      
      	* boehm.c: Remove unused header files.
      	* builtins.c: Likewise.
      	* class.c: Likewise.
      	* constants.c: Likewise.
      	* decl.c: Likewise.
      	* except.c: Likewise.
      	* expr.c: Likewise.
      	* java-gimplify.c: Likewise.
      	* jcf-dump.c: Likewise.
      	* jcf-io.c: Likewise.
      	* jcf-parse.c: Likewise.
      	* jvgenmain.c: Likewise.
      	* lang.c: Likewise.
      	* mangle.c: Likewise.
      	* mangle_name.c: Likewise.
      	* resource.c: Likewise.
      	* typeck.c: Likewise.
      	* verify-glue.c: Likewise.
      	* verify-impl.c: Likewise.
      	* zextract.c: Likewise.
      
      jit
      
      	* dummy-frontend.c: Remove unused header files.
      	* jit-builtins.c: Likewise.
      	* jit-playback.c: Likewise.
      	* jit-recording.c: Likewise.
      	* jit-spec.c: Likewise.
      	* libgccjit.c: Likewise.
      
      lto
      
      	* lto-lang.c: Remove unused header files.
      	* lto-object.c: Likewise.
      	* lto-partition.c: Likewise.
      	* lto-symtab.c: Likewise.
      	* lto.c: Likewise.
      
      objc
      
      	* objc-act.c: Remove unused header files.
      	* objc-encoding.c: Likewise.
      	* objc-gnu-runtime-abi-01.c: Likewise.
      	* objc-lang.c: Likewise.
      	* objc-map.c: Likewise.
      	* objc-next-runtime-abi-01.c: Likewise.
      	* objc-next-runtime-abi-02.c: Likewise.
      	* objc-runtime-shared-support.c: Likewise.
      
      objcp
      
      	* objcp-decl.c: Remove unused header files.
      	* objcp-lang.c: Likewise.
      
      From-SVN: r230166
      Andrew MacLeod committed
    • simplify-rtx: Simplify trunc of and of shiftrt · 3b1da8bb
      If we have
      
      	(truncate:M1 (and:M2 (lshiftrt:M2 (x:M2) C) C2))
      
      we can write it instead as
      
      	(and:M1 (lshiftrt:M1 (truncate:M1 (x:M2)) C) C2)
      
      (if that is valid, of course), which has smaller modes for the
      binary ops, and the truncate can often simplify further (if "x"
      is a register, for example).
      
      
      	* gcc/simplify-rtx.c (simplify_truncation): Simplify TRUNCATE
      	of AND of [LA]SHIFTRT.
      
      From-SVN: r230164
      Segher Boessenkool committed
    • re PR rtl-optimization/68287 (conditional jump or move depends on uninitialized… · 7ad291c0
      re PR rtl-optimization/68287 (conditional jump or move depends on uninitialized value in lra-lives.c:1048)
      
      Fix PR rtl-optimization/68287
      
      	PR rtl-optimization/68287
      	* lra-lives.c (lra_create_live_ranges_1): Reserve the right
      	number of elements.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r230163
      Martin Liska committed
    • Undo delay slot filling and use compact branches in selected cases. · dcfe3c8f
      gcc/
      	* config/mips/mips.c (mips_breakable_sequence_p): New function.
      	(mips_break_sequence): New function. 
      	(mips_reorg_process_insns) Use them. Use compact branches in selected
                situations.
          
      gcc/testsuite/
              * gcc.target/mips/split-ds-sequence.c: New test.
      
      From-SVN: r230160
      Simon Dardis committed
    • Fix whitespace+typo from "Share code from fold_array_ctor_reference with fold." · c08de514
      	* fold-const.c (get_array_ctor_element_at_index): Fix whitespace, typo.
      
      From-SVN: r230159
      Alan Lawrence committed
    • [ARM] PR67305, tighten neon_vector_mem_operand on eliminable registers · 03f39145
      2015-11-11  Jiong Wang  <jiong.wang@arm.com>
      	    Jim Wilson  <wilson@gcc.gnu.org>
      
      	PR target/67305
      	* config/arm/arm.md (neon_vector_mem_operand): Return FALSE if strict
      	be true and eliminable registers mentioned.
      
      
      Co-Authored-By: Jim Wilson <wilson@gcc.gnu.org>
      
      From-SVN: r230158
      Jiong Wang committed
    • arc-common.c (arc_handle_option): Handle ARCv2 options. · f50bb868
      2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* common/config/arc/arc-common.c (arc_handle_option): Handle ARCv2
      	options.
      	* config/arc/arc-opts.h: Add ARCv2 CPUs.
      	* config/arc/arc-protos.h (arc_secondary_reload_conv): Prototype.
      	* config/arc/arc.c (arc_secondary_reload): Handle subreg (reg)
      	situation, and store instructions with large offsets.
      	(arc_secondary_reload_conv): New function.
      	(arc_init): Add ARCv2 options.
      	(arc_conditional_register_usage): Select the proper register usage
      	for ARCv2 processors.
      	(arc_handle_interrupt_attribute): ILINK2 is only valid for ARCv1
      	architecture.
      	(arc_compute_function_type): Likewise.
      	(arc_print_operand): Handle new ARCv2 punctuation characters.
      	(arc_return_in_memory): ARCv2 ABI returns in registers up to 16
      	bytes.
      	(workaround_arc_anomaly, arc_asm_insn_p, arc_loop_hazard): New
      	function.
      	(arc_reorg, arc_hazard): Use it.
      	* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Define __HS__ and
      	__EM__.
      	(ASM_SPEC): Add ARCv2 options.
      	(TARGET_NORM): ARC HS has norm instructions by default.
      	(TARGET_OPTFPE): Use optimized floating point emulation for ARC
      	HS.
      	(TARGET_AT_DBR_CONDEXEC): Only for ARC600 family.
      	(TARGET_EM, TARGET_HS, TARGET_V2, TARGET_MPYW, TARGET_MULTI):
      	Define.
      	(SIGNED_INT16, TARGET_MPY, TARGET_ARC700_MPY, TARGET_ANY_MPY):
      	Likewise.
      	(TARGET_ARC600_FAMILY, TARGET_ARCOMPACT_FAMILY): Likewise.
      	(TARGET_LP_WR_INTERLOCK): Likewise.
      	* config/arc/arc.md
      	(commutative_binary_mult_comparison_result_used, movsicc_insn)
      	(mulsi3, mulsi3_600_lib, mulsidi3, mulsidi3_700, mulsi3_highpart)
      	(umulsi3_highpart_i, umulsi3_highpart_int, umulsi3_highpart)
      	(umulsidi3, umulsidi3_700, cstoresi4, simple_return, p_return_i):
      	Use it for ARCv2.
      	(mulhisi3, mulhisi3_imm, mulhisi3_reg, umulhisi3, umulhisi3_imm)
      	(umulhisi3_reg, umulhisi3_reg, mulsi3_v2, nopv, bswapsi2)
      	(prefetch, divsi3, udivsi3 modsi3, umodsi3, arcset, arcsetltu)
      	(arcsetgeu, arcsethi, arcsetls, reload_*_load, reload_*_store)
      	(extzvsi): New pattern.
      	* config/arc/arc.opt: New ARCv2 options.
      	* config/arc/arcEM.md: New file.
      	* config/arc/arcHS.md: Likewise.
      	* config/arc/constraints.md (C3p): New constraint, accepts 1 and 2
      	values.
      	(Cm2): A signed 9-bit integer constant constraint.
      	(C62): An unsigned 6-bit integer constant constraint.
      	(C16): A signed 16-bit integer constant constraint.
      	* config/arc/predicates.md (mult_operator): Add ARCv2 processort.
      	(short_const_int_operand): New predicate.
      	* config/arc/t-arc-newlib: Add ARCv2 multilib options.
      	* doc/invoke.texi: Add documentation for -mcpu=<archs/arcem>
      	-mcode-density and -mdiv-rem.
      
      From-SVN: r230156
      Claudiu Zissulescu committed
    • Fix typo. · 9e0c852b
      gcc/
      	* config/i386/i386.c (m_SKYLAKE_AVX512): Fix typo.
      
      From-SVN: r230155
      Julia Koval committed
    • Fix target arch attribute for Skylake. · 28746a50
      gcc/
      	* config/i386/i386.c: Handle "skylake" and
      	"skylake-avx512".
      
      gcc/testsuite/
      	* g++.dg/ext/mv16.C: New functions.
      
      From-SVN: r230153
      Julia Koval committed
    • Fix various memory leaks · c8189787
      	* gimple-ssa-strength-reduction.c (create_phi_basis):
      	Use auto_vec.
      	* passes.c (release_dump_file_name): New function.
      	(pass_init_dump_file): Used from this function.
      	(pass_fini_dump_file): Likewise.
      	* tree-sra.c (convert_callers_for_node): Use xstrdup_for_dump.
      	* var-tracking.c (vt_initialize): Use pool_allocator.
      
      From-SVN: r230152
      Martin Liska committed
    • dp-hack.h: Add support for ARCHS. · c0ab1970
      2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/dp-hack.h: Add support for ARCHS.
      	* config/arc/ieee-754/divdf3.S: Likewise.
      	* config/arc/ieee-754/divsf3-stdmul.S: Likewise.
      	* config/arc/ieee-754/muldf3.S: Likewise.
      	* config/arc/ieee-754/mulsf3.S: Likewise
      	* config/arc/lib1funcs.S: Likewise
      	* config/arc/gmon/dcache_linesz.S: Don't read the build register
      	for ARCv2 cores.
      	* config/arc/gmon/profil.S (__profil, __profil_irq): Don't profile
      	for ARCv2 cores.
      	* config/arc/ieee-754/arc-ieee-754.h (MPYHU, MPYH): Define.
      	* config/arc/t-arc700-uClibc: Remove hard selection for ARC 700
      	cores.
      
      From-SVN: r230151
      Claudiu Zissulescu committed
    • [Patch] PR tree-optimization/68234 Improve range info for loop Phi node · 35e2b6e1
      2015-11-11  Richard Biener  <rguenth@gcc.gnu.org>
      	    Jiong Wang      <jiong.wang@arm.com>
      gcc/
        PR tree-optimization/68234
        * tree-vrp.c (vrp_visit_phi_node): Extend SCEV check to those loop PHI
        node which estimiated to be VR_VARYING initially.
      
      gcc/testsuite/
        * gcc.dg/tree-ssa/pr68234.c: New testcase. 
      
      
      Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
      
      From-SVN: r230150
      Richard Biener committed
    • Tighten up checks when tying chains. · 394b24ea
      gcc/
      	* regname.c (scan_rtx_reg): Check the matching number of consecutive
      	registers when tying chains.
      	(build_def_use): Move terminated_this_insn earlier in the function.
      
      From-SVN: r230149
      Robert Suchanek committed
    • re PR fortran/67826 (gcc/fortran/openmp.c:1808: bad test ?) · 6eef39f1
      2015-11-11  Dominique d'Humieres <dominiq@lps.ens.fr>
      
      	PR fortran/67826
      	* openmp.c (gfc_omp_udr_find): Fix typo.
      
      From-SVN: r230148
      Dominique d'Humieres committed
    • re PR libstdc++/64651 (std::rethrow_exception not found by ADL) · 832ca6ac
      	PR libstdc++/64651
      	* libsupc++/exception_ptr.h (rethrow_exception): Add using-declaration
      	to __exception_ptr namespace.
      	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test ADL.
      	Remove unnecessary test variables.
      
      From-SVN: r230147
      Jonathan Wakely committed
    • gcc: configure: fix test == bashisms · 9a557138
      From-SVN: r230146
      Mike Frysinger committed
    • aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and machine asserts. · f83cab84
      * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and
      machine asserts.  Update defines for 64 bit.
      
      From-SVN: r230145
      David Edelsohn committed
    • [ARM] PR63870 Remove error for invalid lane numbers · e68ffe57
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/neon.md (neon_vld1_lane<mode>): Remove error for invalid
      	lane number.
      	(neon_vst1_lane<mode>): Likewise.
      	(neon_vld2_lane<mode>): Likewise.
      	(neon_vst2_lane<mode>): Likewise.
      	(neon_vld3_lane<mode>): Likewise.
      	(neon_vst3_lane<mode>): Likewise.
      	(neon_vld4_lane<mode>): Likewise.
      	(neon_vst4_lane<mode>): Likewise.
      
      From-SVN: r230144
      Charles Baylis committed
    • [ARM] PR63870 Mark lane indices of vldN/vstN with appropriate qualifier · 22f9db64
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/arm-builtins.c: (arm_load1_qualifiers) Use
      	qualifier_struct_load_store_lane_index.
      	(arm_storestruct_lane_qualifiers) Likewise.
      	* config/arm/neon.md: (neon_vld1_lane<mode>) Reverse lane numbers for
      	big-endian.
      	(neon_vst1_lane<mode>) Likewise.
      	(neon_vld2_lane<mode>) Likewise.
      	(neon_vst2_lane<mode>) Likewise.
      	(neon_vld3_lane<mode>) Likewise.
      	(neon_vst3_lane<mode>) Likewise.
      	(neon_vld4_lane<mode>) Likewise.
      	(neon_vst4_lane<mode>) Likewise.
      
      From-SVN: r230143
      Charles Baylis committed
    • [ARM] PR63870 Add qualifiers for NEON builtins · 2f7d18dd
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/arm-builtins.c (enum arm_type_qualifiers): New enumerator
      	qualifier_struct_load_store_lane_index.
      	(builtin_arg): New enumerator NEON_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
      	(arm_expand_neon_args): New parameter. Remove ellipsis. Handle NEON
      	argument qualifiers.
      	(arm_expand_neon_builtin): Handle new NEON argument qualifier.
      	* config/arm/arm.h (NEON_ENDIAN_LANE_N): New macro.
      
      From-SVN: r230142
      Charles Baylis committed