1. 29 Nov, 2015 6 commits
  2. 28 Nov, 2015 5 commits
  3. 27 Nov, 2015 24 commits
    • re PR libgomp/68579 (FAIL: libgomp.c/target-32.c execution test) · 8e4e4719
      	PR libgomp/68579
      	* task.c (gomp_task_run_post_handle_depend_hash): New forward decl.
      	(gomp_create_target_task): Call it before freeing
      	GOMP_TARGET_TASK_DATA tasks.
      
      From-SVN: r231023
      Jakub Jelinek committed
    • Copy-edit the Option Summary in invoke.texi · 2c2176f5
      	* doc/invoke.texi (Option Summary): Use negative form of
      	-Waggressive-loop-optimizations, remove redundant -Wpedantic-ms-format,
      	sort alphabetically and re-justify.
      
      From-SVN: r231022
      Jonathan Wakely committed
    • re PR rtl-optimization/68536 (LRA ICEs with new arm pattern) · 0b87be09
      2015-11-27  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/68536
      	* lra.c (lra_emit_add): Add code for null base.
      	* lra-constraints.c (curr_insn_transform): Skip operators for
      	subreg reloads.
      
      From-SVN: r231021
      Vladimir Makarov committed
    • PR other/61321 - demangler crash on casts in template parameters · 921da198
      The fix for bug 59195:
      
       [C++ demangler handles conversion operator incorrectly]
       https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59195
      
      unfortunately makes the demangler crash due to infinite recursion, in
      case of casts in template parameters.
      
      For example, with:
      
       template<int> struct A {};
       template <typename Y> void function_temp(A<sizeof ((Y)(999))>) {}
       template void function_temp<int>(A<sizeof (int)>);
      
      The 'function_temp<int>' instantiation above mangles to:
      
        _Z13function_tempIiEv1AIXszcvT_Li999EEE
      
      The demangler parses this as:
      
      typed name
        template
          name 'function_temp'
          template argument list
            builtin type int
        function type
          builtin type void
          argument list
            template                          (*)
              name 'A'
              template argument list
                unary operator
                  operator sizeof
                  unary operator
                    cast
                      template parameter 0    (**)
                    literal
                      builtin type int
                      name '999'
      
      And after the fix for 59195, due to:
      
       static void
       d_print_cast (struct d_print_info *dpi, int options,
      	       const struct demangle_component *dc)
       {
       ...
         /* For a cast operator, we need the template parameters from
            the enclosing template in scope for processing the type.  */
         if (dpi->current_template != NULL)
           {
             dpt.next = dpi->templates;
             dpi->templates = &dpt;
             dpt.template_decl = dpi->current_template;
           }
      
      when printing the template argument list of A (what should be "<sizeof
      (int)>"), the template parameter 0 (that is, "T_", the '**' above) now
      refers to the first parameter of the the template argument list of the
      'A' template (the '*' above), exactly what we were already trying to
      print.  This leads to infinite recursion, and stack exaustion.  The
      template parameter 0 should actually refer to the first parameter of
      the 'function_temp' template.
      
      Where it reads "for the cast operator" in the comment in d_print_cast
      (above), it's really talking about a conversion operator, like:
      
        struct A { template <typename U> explicit operator U(); };
      
      We don't want to inject the template parameters from the enclosing
      template in scope when processing a cast _expression_, only when
      handling a conversion operator.
      
      The problem is that DEMANGLE_COMPONENT_CAST is currently ambiguous,
      and means _both_ 'conversion operator' and 'cast expression'.
      
      Fix this by adding a new DEMANGLE_COMPONENT_CONVERSION component type,
      which does what DEMANGLE_COMPONENT_CAST does today, and making
      DEMANGLE_COMPONENT_CAST just simply print its component subtree.
      
      I think we could instead reuse DEMANGLE_COMPONENT_CAST and in
      d_print_comp_inner still do:
      
       @@ -5001,9 +5013,9 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
              d_print_comp (dpi, options, dc->u.s_extended_operator.name);
              return;
      
           case DEMANGLE_COMPONENT_CAST:
             d_append_string (dpi, "operator ");
       -     d_print_cast (dpi, options, dc);
       +     d_print_conversion (dpi, options, dc);
             return;
      
      leaving the unary cast case below calling d_print_cast, but seems to
      me that spliting the component types makes it easier to reason about
      the code.
      
      g++'s testsuite actually generates three symbols that crash the
      demangler in the same way.  I've added those as tests in the demangler
      testsuite as well.
      
      And then this fixes PR other/61233 too, which happens to be a
      demangler crash originally reported to GDB, at:
      https://sourceware.org/bugzilla/show_bug.cgi?id=16957
      
      Bootstrapped and regtested on x86_64 Fedora 20.
      
      Also ran this through GDB's testsuite.  GDB will require a small
      update to use DEMANGLE_COMPONENT_CONVERSION in one place it's using
      DEMANGLE_COMPONENT_CAST in its sources.
      
      libiberty/
      2015-11-27  Pedro Alves  <palves@redhat.com>
      
              PR other/61321
              PR other/61233
              * demangle.h (enum demangle_component_type)
              <DEMANGLE_COMPONENT_CONVERSION>: New value.
              * cp-demangle.c (d_demangle_callback, d_make_comp): Handle
              DEMANGLE_COMPONENT_CONVERSION.
              (is_ctor_dtor_or_conversion): Handle DEMANGLE_COMPONENT_CONVERSION
              instead of DEMANGLE_COMPONENT_CAST.
              (d_operator_name): Return a DEMANGLE_COMPONENT_CONVERSION
              component if handling a conversion.
              (d_count_templates_scopes, d_print_comp_inner): Handle
              DEMANGLE_COMPONENT_CONVERSION.
              (d_print_comp_inner): Handle DEMANGLE_COMPONENT_CONVERSION instead
              of DEMANGLE_COMPONENT_CAST.
              (d_print_cast): Rename as ...
              (d_print_conversion): ... this.  Adjust comments.
              (d_print_cast): Rewrite - simply print the left subcomponent.
              * cp-demint.c (cplus_demangle_fill_component): Handle
              DEMANGLE_COMPONENT_CONVERSION.
      
              * testsuite/demangle-expected: Add tests.
      
      From-SVN: r231020
      Pedro Alves committed
    • Fix FAIL: gcc.c-torture/execute/20050124-1.c -O2 (internal compiler error) · 23e4d0b3
      	Revert
      	2015-11-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
      
      	* ifcvt.c (insn_valid_noce_process_p): Reject insn if it satisfies
      	multiple_sets.
      	(noce_try_cmove_arith): Add checking asserts that orig_a and orig_b
      	are not modified by the final modified insns in the basic blocks.
      
      From-SVN: r231019
      Kyrylo Tkachov committed
    • nvptx-protos.h (nvptx_addr_space_from_address): Don't declare. · 7b8edc29
      	* config/nvptx/nvptx-protos.h (nvptx_addr_space_from_address):
      	Don't declare.
      	* config/nvptx/nvptx.c (nvptx_addr_space_from_sym): New.
      	(nvptx_maybe_convert_symbolic_operand): Simplify.
      	(nvptx_addr_space_from_address): Delete.
      	(nvptx_print_operand): Adjust 'A' case.
      
      From-SVN: r231016
      Nathan Sidwell committed
    • re PR tree-optimization/68559 (Excessive peeling for gaps) · 72c0f643
      2015-11-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68559
      	* tree-vect-data-refs.c (vect_analyze_group_access_1): Move
      	peeling for gap checks ...
      	* tree-vect-stmts.c (vectorizable_load): ... here and relax
      	for SLP.
      	* tree-vect-loop.c (vect_analyze_loop_2): Re-set
      	LOOP_VINFO_PEELING_FOR_GAPS before re-trying without SLP.
      
      	* gcc.dg/vect/slp-perm-4.c: Adjust again.
      	* gcc.dg/vect/pr45752.c: Likewise.
      
      From-SVN: r231015
      Richard Biener committed
    • nvptx-protos.h (nvptx_record_needed_decl): Don't declaree. · 00e52418
      	* config/nvptx/nvptx-protos.h (nvptx_record_needed_decl): Don't
      	declaree.
      	* config/nvptx/nvptx.c (write_func_decl_from_insn): Move earlier.
      	(nvptx_record_fndecl): Don't return value, remove force
      	argyment. Require fndecl.
      	(nvptx_record_libfunc): New.
      	(nvptx_record_needed_decl): Deteermine how to record decl here.
      	(nvptx_maybe_record_fnsym): New.
      	(nvptx_expand_call): Don't record libfuncs here,
      	(nvptx_maybe_convert_symbolic_operand): Use
      	nvptx_maye_record_fnsym.
      	(nvptx_assemble_integer): Reimplement with single switch.
      	(nvptx_output_call_insn): Register libfuncs here.
      	(nvptx_file_end): Adjust  nvptx_record_fndecl call.
      	* config/nvptx/nvptx.md (expand_movdi): Don't call
      	nvptx_record_needed_decl.
      
      From-SVN: r231013
      Nathan Sidwell committed
    • re PR rtl-optimization/68250 (wrong code at -O2 and -O3 on x86_64-linux-gnu (in 64-bit mode)) · f574fc3a
      	PR rtl-optimization/68250
      	* gcc.c-torture/execute/pr68250.c: New test.
      
      From-SVN: r231009
      Jakub Jelinek committed
    • * gcc.dg/pr63568.c: Convert to GIMPLE. · af719b2d
      From-SVN: r231007
      Marek Polacek committed
    • re PR tree-optimization/68553 (gcc.dg/vect/pr68445.c FAILs) · be377c80
      2015-11-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68553
      	* tree-vect-slp.c (vect_create_mask_and_perm): Skip VEC_PERM_EXPR
      	generation for 1:1 permutations.
      	(vect_transform_slp_perm_load): Detect 1:1 permutations.
      
      From-SVN: r231006
      Richard Biener committed
    • Be more careful about barriers when speculating conditional stores. · c000cd7c
      	* gimple.h (nonbarrier_call_p): Declare.
      	* gimple.c (nonbarrier_call_p): New function.
      	* tree-ssa-phiopt.c (nontrapping_dom_walker::before_dom_children):
      	Also increment call phase for ASMs with vdef and potential barrier
      	calls.
      
      From-SVN: r231005
      Bernd Schmidt committed
    • [RTL-ifcvt] Reject insns that are multiple_sets · 4d7b2a8a
      	* ifcvt.c (insn_valid_noce_process_p): Reject insn if it satisfies
      	multiple_sets.
      	(noce_try_cmove_arith): Add checking asserts that orig_a and orig_b
      	are not modified by the final modified insns in the basic blocks.
      
      From-SVN: r231004
      Kyrylo Tkachov committed
    • [RTL-ifcvt] PR rtl-optimization/68506: Fix emitting order of insns in IF-THEN-JOIN case · 14af28ba
      	PR rtl-optimization/68506
      	* ifcvt.c (noce_try_cmove_arith): Try emitting the else basic block
      	first if emit_a exists or then_bb modifies 'b'.  Reindent if-else
      	blocks.
      
      	* gcc.c-torture/execute/pr68506.c: New test.
      
      From-SVN: r231003
      Kyrylo Tkachov committed
    • Fix memory leak in cilk · b58d3df2
      	PR c++/68312
      	* c-array-notation.c (fix_builtin_array_notation_fn):
      	Use release_vec_vec instead of vec::release.
      	(build_array_notation_expr): Likewise.
      	(fix_conditional_array_notations_1): Likewise.
      	(fix_array_notation_expr): Likewise.
      	(fix_array_notation_call_expr): Likewise.
      	PR c++/68312
      	* cp-array-notation.c (expand_sec_reduce_builtin):
      	Likewise.
      	(create_array_refs): Replace argument with const reference.
      	(expand_an_in_modify_expr): Likewise.
      	(cp_expand_cond_array_notations): Likewise.
      	(expand_unary_array_notation_exprs): Likewise.
      	PR c++/68312
      	* array-notation-common.c (cilkplus_extract_an_triplets):
      	Release vector of vectors.
      	* cilk.c (gimplify_cilk_spawn): Free allocated memory.
      	PR c++/68312
      	* vec.h (release_vec_vec): New function.
      
      From-SVN: r231001
      Martin Liska committed
    • re PR tree-optimization/68552 (ICE in in expand_expr_real_2 with -O2 -ftree-vectorize) · 4d95edca
      	PR tree-optimization/68552
      	* optabs.c (expand_vec_perm_1): Move vec_shr handling from here...
      	(expand_vec_perm): ... here.  Do it regardless of vec_perm_const_optab
      	or whether v0 == v1.
      
      From-SVN: r231000
      Jakub Jelinek committed
    • re PR c/63326 (whether a #pragma is a statement depends on the type of pragma) · aec17bfe
      	PR c/63326
      	* c-parser.c (c_parser_compound_statement_nostart): If
      	last_label is true, use pragma_stmt instead of pragma_compound
      	as second c_parser_pragma argument.
      	(c_parser_omp_ordered, c_parser_omp_target_update,
      	c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Pass
      	false as second argument to c_parser_skip_to_pragma_eol after
      	diagnosing standalone directives used in pragma_stmt context.
      
      	* parser.c (cp_parser_statement): Clear in_compound after labels.
      
      	* gcc.dg/gomp/barrier-2.c (f2): Expect another error after label.
      	* c-c++-common/gomp/pr63326.c: New test.
      
      	* testsuite/libgomp.c/cancel-parallel-2.c (foo): Add semicolon
      	in between case label and OpenMP standalone directives.
      	* testsuite/libgomp.c++/cancel-parallel-2.C (foo): Likewise.
      
      From-SVN: r230999
      Jakub Jelinek committed
    • Replace spaces with tabs and remove trailing whitespaces · 5e48d8a0
      	* tree-ssa-uninit.c: Fix whitespaces in the source file.
      	The change is just automatical.
      
      From-SVN: r230998
      Martin Liska committed
    • Fix memory leak in tree-chkp.c · 2f0fc505
      	* tree-chkp.c (chkp_make_static_bounds): Release buffer
      	used for string.
      
      From-SVN: r230997
      Martin Liska committed
    • Fix parser memory leak in cilk_simd_fn_info · 12a18ca5
      	* parser.c (cp_parser_late_parsing_cilk_simd_fn_info):
      	Release tokens.
      
      From-SVN: r230996
      Martin Liska committed
    • Fix memory leak in loop_vec_info · 5cd366f3
      	* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
      	Do not release memory for comp_alias_ddrs.
      	* tree-vect-loop.c (destroy_loop_vec_info): Release
      	the memory for all loop_vec_info.
      
      From-SVN: r230995
      Martin Liska committed
    • Fix memory leaks in IPA devirt · ed37a6cf
      	* ipa-devirt.c (ipa_devirt): Use auto_vec instead
      	of a local-scope vec.
      	(struct final_warning_record): Use auto_vec instead
      	of vec.
      
      From-SVN: r230994
      Martin Liska committed
    • re PR tree-optimization/68553 (gcc.dg/vect/pr68445.c FAILs) · 2ce27200
      2015-11-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68553
      	* tree-vect-slp.c (vect_get_mask_element): Remove.
      	(vect_transform_slp_perm_load): Implement in a simpler way.
      
      	* gcc.dg/vect/pr45752.c: Adjust.
      	* gcc.dg/vect/slp-perm-4.c: Likewise.
      
      From-SVN: r230993
      Richard Biener committed
    • Daily bump. · f0a813f2
      From-SVN: r230990
      GCC Administrator committed
  4. 26 Nov, 2015 5 commits