1. 07 Jun, 2016 14 commits
  2. 06 Jun, 2016 26 commits
    • re PR tree-optimization/71408 (wrong code at -Os and above on x86_64-linux-gnu) · ec963f2a
      gcc/ChangeLog:
      
      2016-06-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71408
      	* tree-ssa-reassoc.c (zero_one_operation): Fix NEGATE_EXPR operand for
      	propagate_op_to_single_use.
      
      
      gcc/testsuite/ChangeLog:
      
      2016-06-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71408
      	* gcc.dg/tree-ssa/pr71408.c: New test.
      
      From-SVN: r237158
      Kugan Vivekanandarajah committed
    • re PR target/71281 (ICE on gcc trunk on knl, wsm, ivb and bdw targets (tree-ssa-reassoc)) · 46ab5b6e
      gcc/ChangeLog:
      
      2016-06-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71281
      	* tree-ssa-reassoc.c (reassociate_bb): Set uid for negate stmt.
      
      
      gcc/testsuite/ChangeLog:
      
      2016-06-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71281
      	* g++.dg/torture/pr71281.C: New test.
      
      From-SVN: r237157
      Kugan Vivekanandarajah committed
    • i386.h (enum ix86_enitity): Add X86_DIRFLAG. · c7ca8ef8
      	* config/i386/i386.h (enum ix86_enitity): Add X86_DIRFLAG.
      	(enum x86_dirflag_state): New enum.
      	(NUM_MODES_FOR_MODE_SWITCHING): Add X86_DIRFLAG_ANY.
      	(machine_function): Remove needs_cld.
      	(ix86_current_function_needs_cld): Remove.
      	* config/i386/i386.c (ix86_set_func_type): Set
      	ix86_optimize_mode_switching[X86_DIRFLAG] to 1.
      	(ix86_expand_prologue): Do not emit CLD here.
      	(ix86_dirflag_mode_needed): New function.
      	(ix86_dirflag_mode_entry): Ditto.
      	(ix86_mode_needed): Handle X86_DIRFLAG entity.
      	(ix86_mode_after): Ditto.
      	(ix86_mode_entry): Ditto.
      	(ix86_mode_exit): Ditto.
      	(ix86_emit_mode_set): Ditto.
      	* config/i386/i386.md (strmov_singleop): Set
      	ix86_optimize_mode_switching[X86_DIRFLAG] to 1 for TARGET_CLD.
      	Do not set ix86_current_function_needs_cld.
      	(rep_mov): Ditto.
      	(strset_singleop): Ditto.
      	(rep_stos): Ditto.
      	(cmpstrnqi_nz_1): Ditto.
      	(cmpstrnqi_1): Ditto.
      	(strlenqi_1): Ditto.
      
      From-SVN: r237156
      Uros Bizjak committed
    • re PR c/71362 (Wrong position for "error: size of unnamed array is negative") · 1f40cff3
      	PR c/71362
      	* c-parser.c (c_parser_direct_declarator): Set location.
      
      	* gcc.dg/pr71362.c: New test.
      
      From-SVN: r237155
      Marek Polacek committed
    • re PR c++/70847 (exponential time in cp_fold for chained virtual function calls) · 6f5bcd24
      	PR c++/70847
      	PR c++/71330
      	PR c++/71393
      	* cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
      	right after cp_fold call if cp_fold has returned the same stmt
      	already in some earlier cp_fold_r call.
      	(cp_fold_function): Add pset automatic variable, pass its address
      	to cp_walk_tree.
      
      	* g++.dg/opt/pr70847.C: New test.
      	* g++.dg/ubsan/pr70847.C: New test.
      	* g++.dg/ubsan/pr71393.C: New test.
      
      Co-Authored-By: Patrick Palka <ppalka@gcc.gnu.org>
      
      From-SVN: r237151
      Jakub Jelinek committed
    • re PR tree-optimization/71259 (GCC trunk emits wrong code) · 158beb4a
      	PR tree-optimization/71259
      	* tree-vect-slp.c (vect_get_constant_vectors): For
      	VECTOR_BOOLEAN_TYPE_P, return all ones constant instead of
      	one for constant op, and use COND_EXPR for non-constant.
      
      	* gcc.dg/vect/pr71259.c: New test.
      
      From-SVN: r237147
      Jakub Jelinek committed
    • * fr.po: Update. · 8af83210
      From-SVN: r237145
      Joseph Myers committed
    • Selftest framework · d9b950dd
      gcc/ChangeLog:
      	* Makefile.in (OBJS): Add function-tests.o,
      	hash-map-tests.o, hash-set-tests.o, rtl-tests.o,
      	selftest-run-tests.o.
      	(OBJS-libcommon): Add selftest.o.
      	(OBJS-libcommon-target): Add selftest.o.
      	(all.internal): Add "selftest".
      	(all.cross): Likewise.
      	(selftest): New phony target.
      	(s-selftest): New target.
      	(selftest-gdb): New phony target.
      	(COLLECT2_OBJS): Add selftest.o.
      	* bitmap.c: Include "selftest.h".
      	(selftest::test_gc_alloc): New function.
      	(selftest::test_set_range): New function.
      	(selftest::test_clear_bit_in_middle): New function.
      	(selftest::test_copying): New function.
      	(selftest::test_bitmap_single_bit_set_p): New function.
      	(selftest::bitmap_c_tests): New function.
      	* common.opt (fself-test): New.
      	* diagnostic-show-locus.c: Include "selftest.h".
      	(make_range): New function.
      	(test_range_contains_point_for_single_point): New function.
      	(test_range_contains_point_for_single_line): New function.
      	(test_range_contains_point_for_multiple_lines): New function.
      	(assert_eq): New function.
      	(test_get_line_width_without_trailing_whitespace): New function.
      	(selftest::diagnostic_show_locus_c_tests): New function.
      	* et-forest.c: Include "selftest.h".
      	(selftest::test_single_node): New function.
      	(selftest::test_simple_tree): New function.
      	(selftest::test_disconnected_nodes): New function.
      	(selftest::et_forest_c_tests): New function.
      	* fold-const.c: Include "selftest.h".
      	(selftest::assert_binop_folds_to_const): New function.
      	(selftest::assert_binop_folds_to_nonlvalue): New function.
      	(selftest::test_arithmetic_folding): New function.
      	(selftest::fold_const_c_tests): New function.
      	* function-tests.c: New file.
      	* gimple.c: Include "selftest.h".
      	Include "gimple-pretty-print.h".
      	(selftest::verify_gimple_pp): New function.
      	(selftest::test_assign_single): New function.
      	(selftest::test_assign_binop): New function.
      	(selftest::test_nop_stmt): New function.
      	(selftest::test_return_stmt): New function.
      	(selftest::test_return_without_value): New function.
      	(selftest::gimple_c_tests): New function.
      	* hash-map-tests.c: New file.
      	* hash-set-tests.c: New file.
      	* input.c: Include "selftest.h".
      	(selftest::assert_loceq): New function.
      	(selftest::test_accessing_ordinary_linemaps): New function.
      	(selftest::test_unknown_location): New function.
      	(selftest::test_builtins): New function.
      	(selftest::test_reading_source_line): New function.
      	(selftest::input_c_tests): New function.
      	* rtl-tests.c: New file.
      	* selftest-run-tests.c: New file.
      	* selftest.c: New file.
      	* selftest.h: New file.
      	* spellcheck.c: Include "selftest.h".
      	(selftest::levenshtein_distance_unit_test_oneway): New function,
      	adapted from testsuite/gcc.dg/plugin/levenshtein_plugin.c.
      	(selftest::levenshtein_distance_unit_test): Likewise.
      	(selftest::spellcheck_c_tests): Likewise.
      	* toplev.c: Include selftest.h.
      	(toplev::run_self_tests): New.
      	(toplev::main): Handle -fself-test.
      	* toplev.h (toplev::run_self_tests): New.
      	* tree.c: Include "selftest.h".
      	(selftest::test_integer_constants): New function.
      	(selftest::test_identifiers): New function.
      	(selftest::test_labels): New function.
      	(selftest::tree_c_tests): New function.
      	* tree-cfg.c: Include "selftest.h".
      	(selftest::push_fndecl): New function.
      	(selftest::test_linear_chain): New function.
      	(selftest::test_diamond): New function.
      	(selftest::test_fully_connected): New function.
      	(selftest::tree_cfg_c_tests): New function.
      	* vec.c: Include "selftest.h".
      	(selftest::safe_push_range): New function.
      	(selftest::test_quick_push): New function.
      	(selftest::test_safe_push): New function.
      	(selftest::test_truncate): New function.
      	(selftest::test_safe_grow_cleared): New function.
      	(selftest::test_pop): New function.
      	(selftest::test_safe_insert): New function.
      	(selftest::test_ordered_remove): New function.
      	(selftest::test_unordered_remove): New function.
      	(selftest::test_block_remove): New function.
      	(selftest::reverse_cmp): New function.
      	(selftest::test_qsort): New function.
      	(selftest::vec_c_tests): New function.c.
      	* wide-int.cc: Include selftest.h and wide-int-print.h.
      	(selftest::from_int <wide_int>): New function.
      	(selftest::from_int <offset_int>): New function.
      	(selftest::from_int <widest_int>): New function.
      	(selftest::assert_deceq): New function.
      	(selftest::assert_hexeq): New function.
      	(selftest::test_printing <VALUE_TYPE>): New function template.
      	(selftest::test_ops <VALUE_TYPE>): New function template.
      	(selftest::test_comparisons <VALUE_TYPE>): New function template.
      	(selftest::run_all_wide_int_tests <VALUE_TYPE>): New function
      	template.
      	(selftest::wide_int_cc_tests): New function.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/levenshtein-test-1.c: Delete.
      	* gcc.dg/plugin/levenshtein_plugin.c: Delete.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Remove the
      	above.
      
      From-SVN: r237144
      David Malcolm committed
    • Support allocators in tuples of zero size. · dbc6221f
      	* include/std/tuple (tuple<>::tuple(),
      	tuple<>::tuple(allocator_arg_t, const _Alloc&),
      	tuple<>::tuple(allocator_arg_t, const _Alloc&, const tuple&)): New.
      	* testsuite/20_util/tuple/cons/allocators.cc: Adjust.
      
      From-SVN: r237143
      Ville Voutilainen committed
    • [3/3][RTL ifcvt] PR middle-end/37780: Conditional expression with… · 36f9ad69
      [3/3][RTL ifcvt] PR middle-end/37780: Conditional expression with __builtin_clz() should be optimized out
      
      	PR middle-end/37780
      	* ifcvt.c (noce_try_ifelse_collapse): New function.
      	Declare prototype.
      	(noce_process_if_block): Call noce_try_ifelse_collapse.
      	* simplify-rtx.c (simplify_cond_clz_ctz): New function.
      	(simplify_ternary_operation): Use the above to simplify
      	conditional CLZ/CTZ expressions.
      
      	* gcc.c-torture/execute/pr37780.c: New test.
      	* gcc.target/aarch64/pr37780_1.c: Likewise.
      	* gcc.target/arm/pr37780_1.c: Likewise.
      
      From-SVN: r237141
      Kyrylo Tkachov committed
    • [2/3][AArch64] Keep CTZ components together until after reload · e8536e2b
      	PR middle-end/37780
      	* config/aarch64/aarch64.md (ctz<mode>2): Convert to
      	define_insn_and_split.
      
      From-SVN: r237139
      Kyrylo Tkachov committed
    • [1/3][ARM] Keep ctz expressions together until after reload · 3295b529
      	PR middle-end/37780
      	* config/arm/arm.md (ctzsi2): Convert to define_insn_and_split.
      
      From-SVN: r237138
      Kyrylo Tkachov committed
    • c-typeck.c (comptypes_internal): Handle comparisons of INTEGER_TYPE,… · 5545a907
      c-typeck.c (comptypes_internal): Handle comparisons of INTEGER_TYPE, FIXED_POINT_TYPE, and REAL_TYPE nodes.
      
      	* c-typeck.c (comptypes_internal): Handle comparisons of
      	INTEGER_TYPE, FIXED_POINT_TYPE, and REAL_TYPE nodes.  Don't check
      	TYPE_REF_CAN_ALIAS_ALL.
      
      	* c-c++-common/attr-may-alias-1.c: New test.
      	* c-c++-common/attr-may-alias-2.c: New test.
      	* gcc.dg/pr39464.c: Turn dg-warning into dg-bogus.
      
      From-SVN: r237137
      Marek Polacek committed
    • libstdc++/71320 Add or remove file permissions correctly · 94229fb6
      	PR libstdc++/71320
      	* src/filesystem/ops.cc (permissions(const path&, perms, error_code&)):
      	Add or remove permissions according to perms argument.
      	* testsuite/experimental/filesystem/operations/permissions.cc: New
      	test.
      
      From-SVN: r237136
      Jonathan Wakely committed
    • re PR bootstrap/71400 (profiledbootstrap failed) · 0a0ec53d
      	PR libgcc/71400
      	* libgcov-driver-system.c (__gcov_error_file): Disable if IN_GCOV_TOOL.
      	(get_gcov_error_file): Check __gcov_error_file before trying to
      	initialize it.
      	(gcov_error): Always use get_gcov_error_file.
      
      Co-Authored-By: Nathan Sidwell <nathan@acm.org>
      
      From-SVN: r237135
      Aaron Conole committed
    • re PR c/24414 (Old-style asms don't clobber memory) · 93671519
      gcc/
      2016-06-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/24414
              * cfgexpand.c (expand_asm_loc): Remove handling for ADDR_EXPR.
              Implicitly clobber memory for basic asm with non-empty assembler
              string.  Use targetm.md_asm_adjust also here.
              * compare-elim.c (arithmetic_flags_clobber_p): Use asm_noperands here.
              * final.c (final_scan_insn): Handle basic asm in PARALLEL block.
              * gimple.c (gimple_asm_clobbers_memory_p): Handle basic asm with
              non-empty assembler string.
              * ira.c (compute_regs_asm_clobbered): Use asm_noperands here.
              * recog.c (asm_noperands): Handle basic asm in PARALLEL block.
              (decode_asm_operands): Handle basic asm in PARALLEL block.
              (extract_insn): Handle basic asm in PARALLEL block.
              * doc/extend.texi: Mention new behavior of basic asm.
              * config/ia64/ia64 (rtx_needs_barrier): Handle ASM_INPUT here.
              * config/pa/pa.c (branch_to_delay_slot_p, branch_needs_nop_p,
              branch_needs_nop_p): Use asm_noperands.
      
      gcc/testsuite/
      2016-06-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/24414
              * gcc.target/i386/pr24414.c: New test.
      
      From-SVN: r237133
      Bernd Edlinger committed
    • sparc: support for the SPARC M7 and VIS 4.0 · 690f24b7
          
      gcc/ChangeLog:
          
      2016-06-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
          
          	* config/sparc/sparc.md (cpu): Add niagara7 cpu type.
          	Include the M7 SPARC DFA scheduler.
          	New attribute v3pipe.
          	Annotate insns with v3pipe where appropriate.
          	Define cpu_feature vis4.
          	Add lzd instruction type and set it on clzdi_sp64 and clzsi_sp64.
          	Add (V8QI "8") to vbits.
          	Add insns {add,sub}v8qi3
          	Add insns ss{add,sub}v8qi3
          	Add insns us{add,sub}{v8qi,v4hi}3
          	Add insns {min,max}{v8qi,v4hi,v2si}3
          	Add insns {minu,maxu}{v8qi,v4hi,v2si}3
          	Add insns fpcmp{le,gt,ule,ug,ule,ugt}{8,16,32}_vis.
          	* config/sparc/niagara4.md: Add a comment explaining the
          	discrepancy between the documented latenty numbers and the
          	implemented ones.
          	* config/sparc/niagara7.md: New file.
          	* configure.ac (HAVE_AS_SPARC5_VIS4): Define if the assembler
          	supports SPARC5 and VIS 4.0 instructions.
          	* configure: Regenerate.
          	* config.in: Likewise.
          	* config.gcc: niagara7 is a supported cpu in sparc*-*-* targets.
          	* config/sparc/sol2.h (ASM_CPU32_DEFAUILT_SPEC): Set for
          	TARGET_CPU_niagara7.
          	(ASM_CPU64_DEFAULT_SPEC): Likewise.
          	(CPP_CPU_SPEC): Handle niagara7.
          	(ASM_CPU_SPEC): Likewise.
          	* config/sparc/sparc-opts.h (processor_type): Add
          	PROCESSOR_NIAGARA7.
          	(mvis4): New option.
          	* config/sparc/sparc.h (TARGET_CPU_niagara7): Define.
          	(AS_NIAGARA7_FLAG): Define.
          	(ASM_CPU64_DEFAULT_SPEC): Set for niagara7.
          	(CPP_CPU64_DEFAULT_SPEC): Likewise.
          	(CPP_CPU_SPEC): Handle niagara7.
          	(ASM_CPU_SPEC): Likewise.
          	* config/sparc/sparc.c (niagara7_costs): Define.
          	(sparc_option_override): Handle niagara7 and adjust cache-related
          	parameters with better values for niagara cpus.  Also support VIS4.
          	(sparc32_initialize_trampoline): Likewise.
          	(sparc_use_sched_lookahead): Likewise.
          	(sparc_issue_rate): Likewise.
          	(sparc_register_move_cost): Likewise.
          	(dump_target_flag_bits): Support VIS4.
          	(sparc_vis_init_builtins): Likewise.
          	(sparc_builtins): Likewise.
          	* config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__ for
          	VIS4 4.0.
          	* config/sparc/driver-sparc.c (cpu_names): Add SPARC-M7 and
          	UltraSparc M7.
          	* config/sparc/sparc.opt (sparc_processor_type): New value
          	niagara7.
          	* config/sparc/visintrin.h (__attribute__): Prototypes for the
          	VIS4 builtins.
          	* doc/invoke.texi (SPARC Options): Document -mcpu=niagara7 and
          	-mvis4.
          	* doc/extend.texi (SPARC VIS Built-in Functions): Document the
          	VIS4 builtins.
          
      gcc/testsuite/ChangeLog:
          
      2016-06-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
          
          	* gcc.target/sparc/vis4misc.c: New file.
          	* gcc.target/sparc/fpcmp.c: Likewise.
          	* gcc.target/sparc/fpcmpu.c: Likewise.
      
      From-SVN: r237132
      Jose E. Marchesi committed
    • decl.c (Gigi_Equivalent_Type): Make sure equivalent types are present before returning them. · 42a5e410
      	* gcc-interface/decl.c (Gigi_Equivalent_Type): Make sure equivalent
      	types are present before returning them.  Remove final assertion.
      	(gnat_to_gnu_entity) <E_Access_Protected_Subprogram_Type>: Adjust to
      	above change.
      	<E_Protected_Type>: Likewise.
      
      From-SVN: r237130
      Eric Botcazou committed
    • trans.c (elaborate_all_entities_for_package): Also do not elaborate Itypes. · f8a9b81f
      	* gcc-interface/trans.c (elaborate_all_entities_for_package): Also do
      	not elaborate Itypes.
      
      From-SVN: r237129
      Eric Botcazou committed
    • utils.c (gnat_internal_attribute_table): Add support for noinline and noclone attributes. · 1f0b1322
      	* gcc-interface/utils.c (gnat_internal_attribute_table): Add support
      	for noinline and noclone attributes.
      	(handle_noinline_attribute): New handler.
      	(handle_noclone_attribute): Likewise.
      
      From-SVN: r237127
      Eric Botcazou committed
    • * gcc-interface/trans.c (process_type): Beef up comment. · 5a4916be
      From-SVN: r237126
      Eric Botcazou committed
    • utils2.c (build_call_alloc_dealloc): Do not substitute placeholder expressions here but... · 62801a77
      	* gcc-interface/utils2.c (build_call_alloc_dealloc): Do not substitute
      	placeholder expressions here but...
      	* gcc-interface/trans.c (gnat_to_gnu) <N_Free_Statement>: ...here.
      	Make an exception to the protection of a CALL_EXPR result with an
      	unconstrained type only in the same cases as Call_to_gnu.
      
      From-SVN: r237125
      Eric Botcazou committed
    • trans.c (gnat_to_gnu): Rework special code dealing with boolean rvalues and set… · f1ff07ec
      trans.c (gnat_to_gnu): Rework special code dealing with boolean rvalues and set the location directly.
      
      	* gcc-interface/trans.c (gnat_to_gnu): Rework special code dealing
      	with boolean rvalues and set the location directly.  Do not set the
      	location in the other cases for a simple name.
      	(gnat_to_gnu_external): Clear the location on the expression.
      
      From-SVN: r237123
      Eric Botcazou committed
    • decl.c (gnat_to_gnu_entity): Remove useless 'else' statements and tidy up. · d5ebeb8c
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Component>: Remove
      	useless 'else' statements and tidy up.
      	<E_Array_Subtype>: Fully deal with the declaration here.
      	<E_Incomplete_Type>: Use properly-typed constant.
      	Assert that we don't apply the special type treatment to dummy types.
      	Separate this treatment from the final back-annotation and simplify
      	the condition for the RM size.
      	(gnat_to_gnu_param): Add GNU_PARAM_TYPE parameter and adjust.
      	(gnat_to_gnu_subprog_type): Ajust call to gnat_to_gnu_param.
      	* gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Declaration>: Add
      	comment.
      	(process_freeze_entity): Remove obsolete code.
      	(process_type): Minor tweaks.
      
      From-SVN: r237122
      Eric Botcazou committed
    • einfo.ads (Returns_Limited_View): Remove. · 4d9446f9
      	* einfo.ads (Returns_Limited_View): Remove.
      	(Set_Returns_Limited_View ): Likewise.
      	* einfo.adb (Returns_Limited_View): Likewise.
      	(Set_Returns_Limited_View ): Likewise.
      	* freeze.adb (Late_Freeze_Subprogram): Remove.
      	(Freeze_Entity): Do not defer the freezing of functions returning an
      	incomplete type coming from a limited context.
      
      From-SVN: r237121
      Eric Botcazou committed