gcc.git
8 years agosse.md (avx_vec_concat<mode>): Add v=v,vm and Yv=Yv,C alternatives.
Jakub Jelinek [Tue, 7 Jun 2016 13:00:03 +0000 (15:00 +0200)]
sse.md (avx_vec_concat<mode>): Add v=v,vm and Yv=Yv,C alternatives.

* config/i386/sse.md (avx_vec_concat<mode>): Add v=v,vm and
Yv=Yv,C alternatives.

From-SVN: r237175

8 years agore PR c++/61564 (#pragma GCC optimize ("-fno-lto") causes the compiler to crash)
Richard Biener [Tue, 7 Jun 2016 12:41:46 +0000 (12:41 +0000)]
re PR c++/61564 (#pragma GCC optimize ("-fno-lto") causes the compiler to crash)

2016-06-07  Richard Biener  <rguenther@suse.de>

PR c/61564
* c-common.c (parse_optimize_options): Only apply CL_OPTIMIZATION
options and warn about others.
* common.opt (ffast-math): Make Optimization.

* gcc.dg/Wpragmas-1.c: New testcase.
* gcc.dg/Wattributes-4.c: Likewise.
* gcc.dg/ipa/pr70646.c: Drop optimize pragma in favor of dg-option
entry.

From-SVN: r237174

8 years ago[MIPS] P5600 scheduler fix
Simon Dardis [Tue, 7 Jun 2016 11:56:43 +0000 (12:56 +0100)]
[MIPS] P5600 scheduler fix

gcc/
* config/mips/p5600.md (p5600_fpu_fadd): Remove checking for
`fabs' and `fneg' type attributes.
(p5600_fpu_fabs): Add `fmove' to the comment.

Co-Authored-By: Prachi Godbole <prachi.godbole@imgtec.com>
From-SVN: r237173

8 years agogimple.c: Include builtins.h
Jan Hubicka [Tue, 7 Jun 2016 11:22:26 +0000 (13:22 +0200)]
gimple.c: Include builtins.h

* gimple.c: Include builtins.h
(gimple_inexpensive_call_p): New function.
* gimple.h (gimple_inexpensive_call_p): Declare.
* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use it.
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise;
fix formatting.

From-SVN: r237172

8 years agop64_p128.c: Remove spurious debug code.
Christophe Lyon [Tue, 7 Jun 2016 10:29:55 +0000 (10:29 +0000)]
p64_p128.c: Remove spurious debug code.

* gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: Remove spurious debug code.

From-SVN: r237171

8 years agoRemove wrong testsuite and gcc/testsuite prefixes from gcc/testsuite/ChangeLog.
Rainer Orth [Tue, 7 Jun 2016 09:24:21 +0000 (09:24 +0000)]
Remove wrong testsuite and gcc/testsuite prefixes from gcc/testsuite/ChangeLog.

From-SVN: r237170

8 years agoUpdate copyright dates
Rainer Orth [Tue, 7 Jun 2016 08:54:22 +0000 (08:54 +0000)]
Update copyright dates

libcc1:
Update copyrights.

gotools:
Update copyrights.

contrib:
* update-copyright.py (LibMudflapFilter): Remove.
(GCCCmdLine.__init__): Add gotools, libcc1.
Remove libmudflap.
List unhandled intl, libcilkrts, libgo, liboffloadmic,
maintainer-scripts.

From-SVN: r237169

8 years agodiagnostic.c (diagnostic_impl, [...]): New.
Paolo Carlini [Tue, 7 Jun 2016 07:36:02 +0000 (07:36 +0000)]
diagnostic.c (diagnostic_impl, [...]): New.

2016-06-07  Paolo Carlini  <paolo.carlini@oracle.com>

* diagnostic.c (diagnostic_impl, diagnostic_n_impl): New.
(inform, inform_at_rich_loc, inform_n, warning, warning_at,
warning_at_rich_loc, warning_n, pedwarn, permerror,
permerror_at_rich_loc, error, error_n, error_at, error_at_rich_loc,
sorry, fatal_error, internal_error, internal_error_no_backtrace):
Use the above.

From-SVN: r237168

8 years agore PR tree-optimization/71428 (wrong code with -Os -fno-tree-forwprop (breaks in...
Richard Biener [Tue, 7 Jun 2016 07:31:40 +0000 (07:31 +0000)]
re PR tree-optimization/71428 (wrong code with -Os -fno-tree-forwprop (breaks in the .bswap dump))

2016-06-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71428
* tree-ssa-math-opts.c (perform_symbolic_merge): Properly distinguish
BIT_FIELD_REF op vs. load.

* gcc.dg/torture/pr71428.c: New testcase.

From-SVN: r237167

8 years agore PR tree-optimization/71423 (wrong code at -Os and above on x86_64-linux-gnu)
Richard Biener [Tue, 7 Jun 2016 07:30:47 +0000 (07:30 +0000)]
re PR tree-optimization/71423 (wrong code at -Os and above on x86_64-linux-gnu)

2016-06-07  Richard Biener  <rguenther@suse.de>

PR middle-end/71423
* match.pd ((X | ~Y) -> Y <= X): Properly invert the comparison
for signed ops.

* gcc.dg/torture/pr71423.c: New testcase.

From-SVN: r237166

8 years agopa.md (call): Generate indirect long calls to non-local functions on TARGET_64BIT.
John David Anglin [Tue, 7 Jun 2016 01:56:01 +0000 (01:56 +0000)]
pa.md (call): Generate indirect long calls to non-local functions on TARGET_64BIT.

* config/pa/pa.md (call): Generate indirect long calls to non-local
functions on TARGET_64BIT.
(call_value): Likewise.

From-SVN: r237164

8 years agopa.md (call_val_reg_64bit): Remove "reg: DI " clobber from pattern and subsequent...
John David Anglin [Tue, 7 Jun 2016 01:43:14 +0000 (01:43 +0000)]
pa.md (call_val_reg_64bit): Remove "reg: DI " clobber from pattern and subsequent splitters.

* config/pa/pa.md (call_val_reg_64bit): Remove "reg: DI " clobber from
pattern and subsequent splitters.
(call_val_reg_64bit_post_reload): Likewise.

From-SVN: r237163

8 years agoDaily bump.
GCC Administrator [Tue, 7 Jun 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237162

8 years agore PR tree-optimization/71408 (wrong code at -Os and above on x86_64-linux-gnu)
Kugan Vivekanandarajah [Mon, 6 Jun 2016 23:46:11 +0000 (23:46 +0000)]
re PR tree-optimization/71408 (wrong code at -Os and above on x86_64-linux-gnu)

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

8 years agore PR target/71281 (ICE on gcc trunk on knl, wsm, ivb and bdw targets (tree-ssa-reassoc))
Kugan Vivekanandarajah [Mon, 6 Jun 2016 23:41:26 +0000 (23:41 +0000)]
re PR target/71281 (ICE on gcc trunk on knl, wsm, ivb and bdw targets (tree-ssa-reassoc))

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

8 years agoi386.h (enum ix86_enitity): Add X86_DIRFLAG.
Uros Bizjak [Mon, 6 Jun 2016 22:35:18 +0000 (00:35 +0200)]
i386.h (enum ix86_enitity): Add X86_DIRFLAG.

* 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

8 years agore PR c/71362 (Wrong position for "error: size of unnamed array is negative")
Marek Polacek [Mon, 6 Jun 2016 21:15:07 +0000 (21:15 +0000)]
re PR c/71362 (Wrong position for "error: size of unnamed array is negative")

PR c/71362
* c-parser.c (c_parser_direct_declarator): Set location.

* gcc.dg/pr71362.c: New test.

From-SVN: r237155

8 years agore PR c++/70847 (exponential time in cp_fold for chained virtual function calls)
Jakub Jelinek [Mon, 6 Jun 2016 19:48:22 +0000 (21:48 +0200)]
re PR c++/70847 (exponential time in cp_fold for chained virtual function calls)

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

8 years agore PR tree-optimization/71259 (GCC trunk emits wrong code)
Jakub Jelinek [Mon, 6 Jun 2016 18:35:03 +0000 (20:35 +0200)]
re PR tree-optimization/71259 (GCC trunk emits wrong code)

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

8 years ago* fr.po: Update.
Joseph Myers [Mon, 6 Jun 2016 17:39:12 +0000 (18:39 +0100)]
* fr.po: Update.

From-SVN: r237145

8 years agoSelftest framework
David Malcolm [Mon, 6 Jun 2016 17:11:30 +0000 (17:11 +0000)]
Selftest framework

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

8 years agoSupport allocators in tuples of zero size.
Ville Voutilainen [Mon, 6 Jun 2016 16:28:59 +0000 (19:28 +0300)]
Support allocators in tuples of zero size.

* 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

8 years ago[3/3][RTL ifcvt] PR middle-end/37780: Conditional expression with __builtin_clz(...
Kyrylo Tkachov [Mon, 6 Jun 2016 16:06:05 +0000 (16:06 +0000)]
[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

8 years ago[2/3][AArch64] Keep CTZ components together until after reload
Kyrylo Tkachov [Mon, 6 Jun 2016 16:01:47 +0000 (16:01 +0000)]
[2/3][AArch64] Keep CTZ components together until after reload

PR middle-end/37780
* config/aarch64/aarch64.md (ctz<mode>2): Convert to
define_insn_and_split.

From-SVN: r237139

8 years ago[1/3][ARM] Keep ctz expressions together until after reload
Kyrylo Tkachov [Mon, 6 Jun 2016 15:59:48 +0000 (15:59 +0000)]
[1/3][ARM] Keep ctz expressions together until after reload

PR middle-end/37780
* config/arm/arm.md (ctzsi2): Convert to define_insn_and_split.

From-SVN: r237138

8 years agoc-typeck.c (comptypes_internal): Handle comparisons of INTEGER_TYPE, FIXED_POINT_TYPE...
Marek Polacek [Mon, 6 Jun 2016 15:50:23 +0000 (15:50 +0000)]
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

8 years agolibstdc++/71320 Add or remove file permissions correctly
Jonathan Wakely [Mon, 6 Jun 2016 15:50:01 +0000 (16:50 +0100)]
libstdc++/71320 Add or remove file permissions correctly

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

8 years agore PR bootstrap/71400 (profiledbootstrap failed)
Aaron Conole [Mon, 6 Jun 2016 15:24:24 +0000 (15:24 +0000)]
re PR bootstrap/71400 (profiledbootstrap failed)

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

8 years agore PR c/24414 (Old-style asms don't clobber memory)
Bernd Edlinger [Mon, 6 Jun 2016 12:31:59 +0000 (12:31 +0000)]
re PR c/24414 (Old-style asms don't clobber memory)

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

8 years agosparc: support for the SPARC M7 and VIS 4.0
Jose E. Marchesi [Mon, 6 Jun 2016 11:40:02 +0000 (13:40 +0200)]
sparc: support for the SPARC M7 and VIS 4.0

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

8 years ago* doc/sourcebuild.texi (Directives): Remove extra closing braces.
Jonathan Wakely [Mon, 6 Jun 2016 10:14:43 +0000 (11:14 +0100)]
* doc/sourcebuild.texi (Directives): Remove extra closing braces.

From-SVN: r237131

8 years agodecl.c (Gigi_Equivalent_Type): Make sure equivalent types are present before returnin...
Eric Botcazou [Mon, 6 Jun 2016 10:03:14 +0000 (10:03 +0000)]
decl.c (Gigi_Equivalent_Type): Make sure equivalent types are present before returning them.

* 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

8 years agotrans.c (elaborate_all_entities_for_package): Also do not elaborate Itypes.
Eric Botcazou [Mon, 6 Jun 2016 09:55:44 +0000 (09:55 +0000)]
trans.c (elaborate_all_entities_for_package): Also do not elaborate Itypes.

* gcc-interface/trans.c (elaborate_all_entities_for_package): Also do
not elaborate Itypes.

From-SVN: r237129

8 years agoutils.c (gnat_internal_attribute_table): Add support for noinline and noclone attributes.
Eric Botcazou [Mon, 6 Jun 2016 09:51:33 +0000 (09:51 +0000)]
utils.c (gnat_internal_attribute_table): Add support for noinline and noclone attributes.

* 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

8 years ago* gcc-interface/trans.c (process_type): Beef up comment.
Eric Botcazou [Mon, 6 Jun 2016 09:47:17 +0000 (09:47 +0000)]
* gcc-interface/trans.c (process_type): Beef up comment.

From-SVN: r237126

8 years agoutils2.c (build_call_alloc_dealloc): Do not substitute placeholder expressions here...
Eric Botcazou [Mon, 6 Jun 2016 09:44:11 +0000 (09:44 +0000)]
utils2.c (build_call_alloc_dealloc): Do not substitute placeholder expressions here but...

* 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

8 years agotrans.c (gnat_to_gnu): Rework special code dealing with boolean rvalues and set the...
Eric Botcazou [Mon, 6 Jun 2016 09:31:13 +0000 (09:31 +0000)]
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

8 years agodecl.c (gnat_to_gnu_entity): Remove useless 'else' statements and tidy up.
Eric Botcazou [Mon, 6 Jun 2016 09:26:07 +0000 (09:26 +0000)]
decl.c (gnat_to_gnu_entity): Remove useless 'else' statements and tidy up.

* 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

8 years agoeinfo.ads (Returns_Limited_View): Remove.
Eric Botcazou [Mon, 6 Jun 2016 09:18:41 +0000 (09:18 +0000)]
einfo.ads (Returns_Limited_View): Remove.

* 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

8 years agovect-live-1.c: Use additional-options.
Alan Hayward [Mon, 6 Jun 2016 09:15:23 +0000 (09:15 +0000)]
vect-live-1.c: Use additional-options.

2016-06-06  Alan Hayward  <alan.hayward@arm.com>

testsuite/
* gcc.dg/vect/vect-live-1.c: Use additional-options.
* gcc.dg/vect/vect-live-3.c: Likewise.

From-SVN: r237120

8 years agogigi.h (finish_subprog_decl): Add ASM_NAME parameter.
Eric Botcazou [Mon, 6 Jun 2016 09:08:56 +0000 (09:08 +0000)]
gigi.h (finish_subprog_decl): Add ASM_NAME parameter.

* gcc-interface/gigi.h (finish_subprog_decl): Add ASM_NAME parameter.
* gcc-interface/decl.c (gnu_ext_name_for_subprog): New function.
(gnat_to_gnu_entity) <E_Subprogram_Type>: Do not check compatibility
of profiles for builtins here...  Call gnu_ext_name_for_subprog.
Also update profiles if pointers to limited_with'ed types are
updated.
(gnat_to_gnu_param): Restore the correct source location information
for vector ABI warnings.
(associate_subprog_with_dummy_type): Add comment about AI05-019.
Set TYPE_DUMMY_IN_PROFILE_P flag unconditionally.
(update_profile): Deal with builtin declarations.
Call gnu_ext_name_for_subprog.  Adjust call to finish_subprog_decl.
(update_profiles_with): Add comment.
(gnat_to_gnu_subprog_type): Reuse the return type if it is complete.
Likewise for parameter declarations in most cases.  Do not change
the return type for the CICO mechanism if the profile is incomplete.
...but here instead.  Always reset the slot for the parameters.
* gcc-interface/utils.c (create_subprog_decl): Call
gnu_ext_name_for_subprog.  Do not set the assembler name here but...
(finish_subprog_decl): ...but here instead.  Add ASM_NAME parameter.

From-SVN: r237119

8 years agoexp_ch9.adb (Expand_N_Protected_Type_Declaration): Insert the declaration of the...
Eric Botcazou [Mon, 6 Jun 2016 08:46:33 +0000 (08:46 +0000)]
exp_ch9.adb (Expand_N_Protected_Type_Declaration): Insert the declaration of the corresponding record type before that of the...

* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Insert the
declaration of the corresponding record type before that of the
unprotected version of the subprograms that operate on it.
(Expand_Access_Protected_Subprogram_Type): Declare the Equivalent_Type
just before the original type.
* sem_ch3.adb (Handle_Late_Controlled_Primitive): Point the current
declaration to the newly created declaration for the primitive.
(Analyze_Subtype_Declaration): Remove obsolete code forcing the
freezing of the subtype before its declaration.
(Replace_Anonymous_Access_To_Protected_Subprogram): Insert the new
declaration in the nearest enclosing scope for formal parameters too.
(Build_Derived_Access_Type): Restore the status of the created Itype
after it is erased by Copy_Node.
* sem_ch6.adb (Exchange_Limited_Views): Remove guard on entry.
(Analyze_Subprogram_Body_Helper): Call Exchange_Limited_Views only if
the specification is present.
Move around the code changing the designated view of the return type
and save the original view.  Restore it on exit.
* sem_ch13.adb (Build_Predicate_Function_Declaration): Always insert
the declaration right after that of the type.

From-SVN: r237118

8 years agore PR tree-optimization/71398 (ICE at -O3 in 32-bit and 64-bit mode on x86_64-linux...
Richard Biener [Mon, 6 Jun 2016 06:55:19 +0000 (06:55 +0000)]
re PR tree-optimization/71398 (ICE at -O3 in 32-bit and 64-bit mode on x86_64-linux-gnu (Segmentation fault, find_edge))

2016-06-06  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71398
* tree-ssa-loop-ivcanon.c (unloop_loops): First unloop, then
remove edges.

* gcc.dg/torture/pr71398.c: New testcase.

From-SVN: r237117

8 years agoft32.c (ft32_setup_incoming_varargs, [...]): Handle pretend_args.
James Bowman [Mon, 6 Jun 2016 02:31:42 +0000 (02:31 +0000)]
ft32.c (ft32_setup_incoming_varargs, [...]): Handle pretend_args.

[gcc]
   * config/ft32/ft32.c (ft32_setup_incoming_varargs,
   ft32_expand_prolog, ft32_expand_epilogue):
   Handle pretend_args.
   * config/ft32/ft32.h: Remove OUTGOING_REG_PARM_STACK_SPACE.
   * config/ft32/ft32.md: Add pretend_returner.

From-SVN: r237116

8 years agoDaily bump.
GCC Administrator [Mon, 6 Jun 2016 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237115

8 years agore PR target/71389 (ICE on trunk gcc on ivybridge target (df_refs_verify))
Uros Bizjak [Sun, 5 Jun 2016 22:55:35 +0000 (00:55 +0200)]
re PR target/71389 (ICE on trunk gcc on ivybridge target (df_refs_verify))

PR target/71389
* config/i386/i386.c (ix86_avx256_split_vector_move_misalign):
Copy op1 RTX to avoid invalid sharing.
(ix86_expand_vector_move_misalign): Ditto.

testsuite/ChangeLog:

PR target/71389
* g++.dg/pr71389.C: New test.

From-SVN: r237111

8 years agoexpr.c (move_by_pieces_d::generate): Mark mode parameter with ATTRIBUTE_UNUSED.
John David Anglin [Sun, 5 Jun 2016 20:42:40 +0000 (20:42 +0000)]
expr.c (move_by_pieces_d::generate): Mark mode parameter with ATTRIBUTE_UNUSED.

* expr.c (move_by_pieces_d::generate): Mark mode parameter with
ATTRIBUTE_UNUSED.

From-SVN: r237110

8 years agore PR fortran/71404 (416.gamess in SPEC CPU 2006 failed to build)
Jerry DeLisle [Sun, 5 Jun 2016 19:58:38 +0000 (19:58 +0000)]
re PR fortran/71404 (416.gamess in SPEC CPU 2006 failed to build)

2016-06-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/71404
* gfortran.dg/fmt_read_5.f: New test.

From-SVN: r237109

8 years agore PR fortran/71404 (416.gamess in SPEC CPU 2006 failed to build)
Jerry DeLisle [Sun, 5 Jun 2016 19:49:59 +0000 (19:49 +0000)]
re PR fortran/71404 (416.gamess in SPEC CPU 2006 failed to build)

2016-06-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/71404
* io.c (match_io): For READ, commit in pending symbols in the
current statement before trying to match an expression so that
if the match fails and we undo symbols we dont toss good symbols.

From-SVN: r237108

8 years agoProtect allocator-overloads of tuple-from-tuple constructors from cases that would...
Ville Voutilainen [Sun, 5 Jun 2016 17:39:10 +0000 (20:39 +0300)]
Protect allocator-overloads of tuple-from-tuple constructors from cases that would create dangling references.

Protect allocator-overloads of tuple-from-tuple constructors
from cases that would create dangling references.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
  const tuple<_UElements...>&), tuple(allocator_arg_t, const _Alloc&,
  tuple<_UElements...>&&)): Add a check for _NonNestedTuple.
* testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Adjust.

From-SVN: r237106

8 years agore PR fortran/69659 (ICE on using option -frepack-arrays, in gfc_conv_descriptor_data...
Andre Vehreschild [Sun, 5 Jun 2016 17:20:54 +0000 (19:20 +0200)]
re PR fortran/69659 (ICE on using option -frepack-arrays, in gfc_conv_descriptor_data_get)

gcc/testsuite/ChangeLog:

2016-06-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/69659
* gfortran.dg/class_array_22.f03: New test.

gcc/fortran/ChangeLog:

2016-06-05  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/69659
* trans-array.c (gfc_trans_dummy_array_bias): For class arrays use
the address of the _data component to reference the arrays data
component.

From-SVN: r237105

8 years ago* gcc.dg/tree-prof/peel-1.c: Fix testcase.
Jan Hubicka [Sun, 5 Jun 2016 16:46:38 +0000 (18:46 +0200)]
* gcc.dg/tree-prof/peel-1.c: Fix testcase.

From-SVN: r237104

8 years agopredict.c (predicted_by_loop_heuristics_p): New function.
Jan Hubicka [Sun, 5 Jun 2016 16:43:19 +0000 (18:43 +0200)]
predict.c (predicted_by_loop_heuristics_p): New function.

* predict.c (predicted_by_loop_heuristics_p): New function.
(predict_iv_comparison): Use it.
(predict_loops): Walk from innermost loops; do not predict edges
leaving multiple loops multiple times; implement
PRED_LOOP_ITERATIONS_MAX heuristics.
* predict.def (PRED_LOOP_ITERATIONS_MAX): New predictor.
* gcc.dg/predict-9.c: Update template.

From-SVN: r237103

8 years agocfg.c (check_bb_profile): Do not report mismatched profiles when only edges out of...
Jan Hubicka [Sun, 5 Jun 2016 16:38:12 +0000 (18:38 +0200)]
cfg.c (check_bb_profile): Do not report mismatched profiles when only edges out of BB are EH edges.

* cfg.c (check_bb_profile): Do not report mismatched profiles when
only edges out of BB are EH edges.

From-SVN: r237102

8 years agore PR c++/49377 (Template specialization attributes cause type mismatches when used)
Paolo Carlini [Sun, 5 Jun 2016 15:08:22 +0000 (15:08 +0000)]
re PR c++/49377 (Template specialization attributes cause type mismatches when used)

2016-06-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/49377
* g++.dg/template/pr49377.C: New.

From-SVN: r237098

8 years agoDaily bump.
GCC Administrator [Sun, 5 Jun 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237097

8 years agoPR c/48116 - -Wreturn-type does not work as advertised
Martin Sebor [Sat, 4 Jun 2016 20:50:50 +0000 (20:50 +0000)]
PR c/48116 - -Wreturn-type does not work as advertised

gcc/ChangeLog:
2016-06-04  Martin Sebor  <msebor@redhat.com>
    Marcin BaczyÅ„ski <marbacz@gmail.com>

PR c/48116
* doc/invoke.texi (-Wreturn-type): Mention not warning on return with
a void expression in a void function.

Co-Authored-By: Marcin Baczyński <marbacz@gmail.com>
From-SVN: r237093

8 years agotree-ssa-loop-ch.c (should_duplicate_loop_header_p): Do not check aux; dump reasons...
Jan Hubicka [Sat, 4 Jun 2016 20:19:46 +0000 (22:19 +0200)]
tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Do not check aux; dump reasons of decisions.

* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Do not check
aux; dump reasons of decisions.
(should_duplicate_loop_header_p): Likewise.
(do_while_loop_p): Likewise.
(ch_base::copy_headers): Dump asi num insns duplicated.

From-SVN: r237092

8 years agore PR tree-optimization/71405 (ICE on valid C++ code at -Os and above on x86_64-linux...
Jakub Jelinek [Sat, 4 Jun 2016 14:50:57 +0000 (16:50 +0200)]
re PR tree-optimization/71405 (ICE on valid C++ code at -Os and above on x86_64-linux-gnu: verify_gimple failed)

PR tree-optimization/71405
* tree-ssa.c (execute_update_addresses_taken): For clobber with
incompatible type, build a new clobber with the right type instead
of building a VIEW_CONVERT_EXPR around it.

* g++.dg/torture/pr71405.C: New test.

From-SVN: r237091

8 years agore PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result...
Oleg Endo [Sat, 4 Jun 2016 11:00:58 +0000 (11:00 +0000)]
re PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result is tested for [in]equality with 0)

gcc/ChangeLog
PR tree-optimization/52171
* config/sh/sh.c (sh_use_by_pieces_infrastructure_p): Use
by_pieces_ninsns instead of move_by_pieces_ninsns.

From-SVN: r237090

8 years agore PR c++/70202 (ICE on invalid code on x86_64-linux-gnu in build_simple_base_path...
Paolo Carlini [Sat, 4 Jun 2016 07:10:58 +0000 (07:10 +0000)]
re PR c++/70202 (ICE on invalid code on x86_64-linux-gnu in build_simple_base_path, at cp/class.c:579)

/cp
2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70202
* parser.c (cp_parser_class_head): When xref_basetypes fails and
emits an error do not zero the type.

/testsuite
2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70202
* g++.dg/inherit/crash5.C: New.
* g++.dg/inherit/virtual1.C: Adjust.

From-SVN: r237089

8 years agoAvoid potential slient wrong-code with reg+reg addr. modes on SH.
Oleg Endo [Sat, 4 Jun 2016 06:08:33 +0000 (06:08 +0000)]
Avoid potential slient wrong-code with reg+reg addr. modes on SH.

gcc/
* config/sh/sh.c (sh_print_operand_address): Don't use hardcoded 'r0'
for reg+reg addressing mode.

From-SVN: r237088

8 years agoDaily bump.
GCC Administrator [Sat, 4 Jun 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237087

8 years agore PR tree-optimization/71316 (test case gcc.dg/tree-ssa/ssa-dom-thread-4.c fails...
Jeff Law [Fri, 3 Jun 2016 23:12:39 +0000 (17:12 -0600)]
re PR tree-optimization/71316 (test case gcc.dg/tree-ssa/ssa-dom-thread-4.c fails starting with r236831)

PR tree-optimization/71316
* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected output.

From-SVN: r237083

8 years agovect-live-1.c: Remove dg-options.
Jakub Jelinek [Fri, 3 Jun 2016 21:25:10 +0000 (23:25 +0200)]
vect-live-1.c: Remove dg-options.

* gcc.dg/vect/vect-live-1.c: Remove dg-options.  Add
dg-additional-options with just -fno-tree-scev-cprop in it.
* gcc.dg/vect/vect-live-2.c: Likewise.
* gcc.dg/vect/vect-live-5.c: Likewise.
* gcc.dg/vect/vect-live-slp-1.c: Likewise.
* gcc.dg/vect/vect-live-slp-2.c: Likewise.
* gcc.dg/vect/vect-live-slp-3.c: Likewise.

From-SVN: r237082

8 years ago* sr.po: Update.
Joseph Myers [Fri, 3 Jun 2016 21:07:36 +0000 (22:07 +0100)]
* sr.po: Update.

From-SVN: r237079

8 years agore PR c++/27100 (ICE with multiple friend declarations)
Patrick Palka [Fri, 3 Jun 2016 20:42:08 +0000 (20:42 +0000)]
re PR c++/27100 (ICE with multiple friend declarations)

Fix PR c++/27100

gcc/cp/ChangeLog:

PR c++/27100
* decl.c (duplicate_decls): Properly copy the
DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.

gcc/testsuite/ChangeLog:

PR c++/27100
* g++.dg/other/friend6.C: New test.

From-SVN: r237078

8 years agors6000-c.c (c/c-tree.h): Add #include.
Bill Schmidt [Fri, 3 Jun 2016 18:40:26 +0000 (18:40 +0000)]
rs6000-c.c (c/c-tree.h): Add #include.

[gcc]

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* rs6000-c.c (c/c-tree.h): Add #include.
(altivec_resolve_overloaded_builtin): Handle ARRAY_TYPE arguments
in C++ when found in the base position of vec_ld or vec_st.

[gcc/testsuite]

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* g++.dg/torture/ppc-ldst-array.C: New.

From-SVN: r237077

8 years agotree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile...
Jan Hubicka [Fri, 3 Jun 2016 17:00:19 +0000 (19:00 +0200)]
tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile unless profile status is PROFILE_READ.

* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid
use of profile unless profile status is PROFILE_READ.
* profile.c (compute_branch_probabilities): Set profile status
only after reporting predictor hitrates.

From-SVN: r237076

8 years agoAdd option for whether ceil etc. can raise "inexact", adjust x86 conditions.
Joseph Myers [Fri, 3 Jun 2016 15:49:04 +0000 (16:49 +0100)]
Add option for whether ceil etc. can raise "inexact", adjust x86 conditions.

In ISO C99/C11, the ceil, floor, round and trunc functions may or may
not raise the "inexact" exception for noninteger arguments.  Under TS
18661-1:2014, the C bindings for IEEE 754-2008, these functions are
prohibited from raising "inexact", in line with the general rule that
"inexact" is only when the mathematical infinite precision result of a
function differs from the result after rounding to the target type.

GCC has no option to select TS 18661 requirements for not raising
"inexact" when expanding built-in versions of these functions inline.
Furthermore, even given such requirements, the conditions on the x86
insn patterns for these functions are unnecessarily restrictive.  I'd
like to make the out-of-line glibc versions follow the TS 18661
requirements; in the cases where this slows them down (the cases using
x87 floating point), that makes it more important for inline versions
to be used when the user does not care about "inexact".

This patch fixes these issues.  A new option
-fno-fp-int-builtin-inexact is added to request TS 18661 rules for
these functions; the default -ffp-int-builtin-inexact reflects that
such exceptions are allowed by C99 and C11.  (The intention is that if
C2x incorporates TS 18661-1, then the default would change in C2x
mode.)

The x86 built-ins for rint (x87, SSE2 and SSE4.1) are made
unconditionally available (no longer depending on
-funsafe-math-optimizations or -fno-trapping-math); "inexact" is
correct for noninteger arguments to rint.  For floor, ceil and trunc,
the x87 and SSE2 built-ins are OK if -ffp-int-builtin-inexact or
-fno-trapping-math (they may raise "inexact" for noninteger
arguments); the SSE4.1 built-ins are made to use ROUND_NO_EXC so that
they do not raise "inexact" and so are OK unconditionally.

Now, while there was no semantic reason for depending on
-funsafe-math-optimizations, the insn patterns had such a dependence
because of use of gen_truncxf<mode>2_i387_noop to truncate back to
SFmode or DFmode after using frndint in XFmode.  In this case a no-op
truncation is safe because rounding to integer always produces an
exactly representable value (the same reason why IEEE semantics say it
shouldn't produce "inexact") - but of course that insn pattern isn't
safe because it would also match cases where the truncation is not in
fact a no-op.  To allow frndint to be used for SFmode and DFmode
without that unsafe pattern, the relevant frndint patterns are
extended to SFmode and DFmode or new SFmode and DFmode patterns added,
so that the frndint operation can be represented in RTL as an
operation acting directly on SFmode or DFmode without the extension
and the problematic truncation.

A generic test of the new option is added, as well as x86-specific
tests, both execution tests including the generic test with different
x86 options and scan-assembler tests verifying that functions that
should be inlined with different options are indeed inlined.

I think other architectures are OK for TS 18661-1 semantics already.
Considering those defining "ceil" patterns: aarch64, arm, rs6000, s390
use instructions that do not raise "inexact"; nvptx does not support
floating-point exceptions.  (This does mean the -f option in fact only
affects one architecture, but I think it should still be a -f option;
it's logically architecture-independent and is expected to be affected
by future -std options, so is similar to e.g. -fexcess-precision=,
which also does nothing on most architectures but is implied by -std
options.)

Bootstrapped with no regressions on x86_64-pc-linux-gnu.  OK to
commit?

PR target/71276
PR target/71277
gcc:
* common.opt (ffp-int-builtin-inexact): New option.
* doc/invoke.texi (-fno-fp-int-builtin-inexact): Document.
* doc/md.texi (floor@var{m}2, btrunc@var{m}2, round@var{m}2)
(ceil@var{m}2): Document dependence on this option.
* ipa-inline-transform.c (inline_call): Handle
flag_fp_int_builtin_inexact.
* ipa-inline.c (can_inline_edge_p): Likewise.
* config/i386/i386.md (rintxf2): Do not test
flag_unsafe_math_optimizations.
(rint<mode>2_frndint): New define_insn.
(rint<mode>2): Do not test flag_unsafe_math_optimizations for 387
or !flag_trapping_math for SSE.  Just use gen_rint<mode>2_frndint
for 387 instead of extending and truncating.
(frndintxf2_<rounding>): Test flag_fp_int_builtin_inexact ||
!flag_trapping_math instead of flag_unsafe_math_optimizations.
Change to frndint<mode>2_<rounding>.
(frndintxf2_<rounding>_i387): Likewise.  Change to
frndint<mode>2_<rounding>_i387.
(<rounding_insn>xf2): Likewise.
(<rounding_insn><mode>2): Test flag_fp_int_builtin_inexact ||
!flag_trapping_math instead of flag_unsafe_math_optimizations for
x87.  Test TARGET_ROUND || !flag_trapping_math ||
flag_fp_int_builtin_inexact instead of !flag_trapping_math for
SSE.  Use ROUND_NO_EXC in constant operand of
gen_sse4_1_round<mode>2.  Just use gen_frndint<mode>2_<rounding>
for 387 instead of extending and truncating.

gcc/testsuite:
* gcc.dg/torture/builtin-fp-int-inexact.c,
gcc.target/i386/387-builtin-fp-int-inexact.c,
gcc.target/i386/387-rint-inline-1.c,
gcc.target/i386/387-rint-inline-2.c,
gcc.target/i386/sse2-builtin-fp-int-inexact.c,
gcc.target/i386/sse2-rint-inline-1.c,
gcc.target/i386/sse2-rint-inline-2.c,
gcc.target/i386/sse4_1-builtin-fp-int-inexact.c,
gcc.target/i386/sse4_1-rint-inline.c: New tests.

From-SVN: r237074

8 years agoImplement x86 interrupt attribute
H.J. Lu [Fri, 3 Jun 2016 15:08:00 +0000 (15:08 +0000)]
Implement x86 interrupt attribute

The interrupt and exception handlers are called by x86 processors.  X86
hardware pushes information onto stack and calls the handler.  The
requirements are

1. Both interrupt and exception handlers must use the 'IRET' instruction,
instead of the 'RET' instruction, to return from the handlers.
2. All registers are callee-saved in interrupt and exception handlers.
3. The difference between interrupt and exception handlers is the
exception handler must pop 'ERROR_CODE' off the stack before the 'IRET'
instruction.

The design goals of interrupt and exception handlers for x86 processors
are:

1. Support both 32-bit and 64-bit modes.
2. Flexible for compilers to optimize.
3. Easy to use by programmers.

To implement interrupt and exception handlers for x86 processors, a
compiler should support:

'interrupt' attribute

Use this attribute to indicate that the specified function with
mandatory arguments is an interrupt or exception handler.  The compiler
generates function entry and exit sequences suitable for use in an
interrupt handler when this attribute is present.  The 'IRET' instruction,
instead of the 'RET' instruction, is used to return from interrupt or
exception handlers.  All registers, except for the EFLAGS register which
is restored by the 'IRET' instruction, are preserved by the compiler.
Since GCC doesn't preserve MPX, SSE, MMX nor x87 states, the GCC option,
-mgeneral-regs-only, should be used to compile interrupt and exception
handlers.

Note for compiler implementers: If the compiler generates MPX, SSE, MMX
or x87 instructions in an interrupt or exception handler, or functions
called from an interrupt or exception handler may contain MPX, SSE, MMX
or x87 instructions, the compiler must save and restore the corresponding
state.

Since the direction flag in the FLAGS register in interrupt (exception)
handlers is undetermined, cld instruction must be emitted in function
prologue if rep string instructions are used in interrupt (exception)
handler or interrupt (exception) handler isn't a leaf function.

Any interruptible-without-stack-switch code must be compiled with
-mno-red-zone since interrupt handlers can and will, because of the
hardware design, touch the red zone.

1. interrupt handler must be declared with a mandatory pointer argument:

struct interrupt_frame;

__attribute__ ((interrupt))
void
f (struct interrupt_frame *frame)
{
...
}

and user must properly define the structure the pointer pointing to.

2. exception handler:

The exception handler is very similar to the interrupt handler with
a different mandatory function signature:

typedef unsigned int uword_t __attribute__ ((mode (__word__)));

struct interrupt_frame;

__attribute__ ((interrupt))
void
f (struct interrupt_frame *frame, uword_t error_code)
{
...
}

and compiler pops the error code off stack before the 'IRET' instruction.

The exception handler should only be used for exceptions which push an
error code and all other exceptions must use the interrupt handler.
The system will crash if the wrong handler is used.

'no_caller_saved_registers' attribute

Use this attribute to indicate that the specified function has no
caller-saved registers.  That is, all registers are callee-saved.
The compiler generates proper function entry and exit sequences to
save and restore any modified registers, except for the EFLAGS register.
Since GCC doesn't preserve MPX, SSE, MMX nor x87 states, the GCC option,
-mgeneral-regs-only, should be used to compile functions with
'no_caller_saved_registers'attribute.

Note for compiler implementers: If the compiler generates MPX, SSE,
MMX or x87 instructions in a function with 'no_caller_saved_registers'
attribute or functions called from a function with
'no_caller_saved_registers' attribute may contain MPX, SSE, MMX or x87
instructions, the compiler must save and restore the corresponding state.

The user can call functions specified with 'no_caller_saved_registers'
attribute from an interrupt handler without saving and restoring all
call clobbered registers.

On x86, interrupt handlers are only called by processors which push
interrupt data onto stack at the address where the normal return address
is.  Interrupt handlers must access interrupt data via pointers so that
they can update interrupt data.

gcc/

PR target/66960
PR target/67630
PR target/67634
PR target/67841
PR target/68037
PR target/68618
PR target/68661
PR target/69575
PR target/69596
PR target/69734
* config/i386/i386-protos.h (ix86_epilogue_uses): New prototype.
* config/i386/i386.c (ix86_conditional_register_usage): Preserve
all registers, except for function return registers if there are
no caller-saved registers.
(ix86_set_func_type): New function.
(ix86_set_current_function): Call ix86_set_func_type to set
no_caller_saved_registers and func_type.  Call reinit_regs if
caller-saved registers are changed.  Don't allow MPX, SSE, MMX
nor x87 instructions in interrupt handler nor function with
no_caller_saved_registers attribute.
(ix86_function_ok_for_sibcall): Return false if there are no
caller-saved registers.
(type_natural_mode): Don't warn ABI change for MMX in interrupt
handler.
(ix86_function_arg_advance): Skip for callee in interrupt
handler.
(ix86_function_arg): Return special arguments in interrupt
handler.
(ix86_promote_function_mode): Promote pointer to word_mode only
for normal functions.
(ix86_can_use_return_insn_p): Don't use `ret' instruction in
interrupt handler.
(ix86_epilogue_uses): New function.
(ix86_hard_regno_scratch_ok): Likewise.
(ix86_save_reg): Preserve all registers in interrupt handler
after reload.  Preserve all registers, except for function
return registers, if there are no caller-saved registers after
reload.
(find_drap_reg): Always use callee-saved register if there are
no caller-saved registers.
(ix86_minimum_incoming_stack_boundary): Return MIN_STACK_BOUNDARY
for interrupt handler.
(ix86_expand_prologue): Don't allow DRAP in interrupt handler.
Emit cld instruction if stringops are used in interrupt handler
or interrupt handler isn't a leaf function.
(ix86_expand_epilogue): Generate interrupt return for interrupt
handler and pop the 'ERROR_CODE' off the stack before interrupt
return in exception handler.
(ix86_expand_call): Disallow calling interrupt handler directly.
If there are no caller-saved registers, mark all registers that
are clobbered by the call which returns as clobbered.
(ix86_handle_no_caller_saved_registers_attribute): New function.
(ix86_handle_interrupt_attribute): Likewise.
(ix86_attribute_table): Add interrupt and no_caller_saved_registers
attributes.
(TARGET_HARD_REGNO_SCRATCH_OK): Likewise.
* config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Use argument
accumulation in interrupt function if stack may be realigned to
avoid DRAP.
(EPILOGUE_USES): New.
(function_type): New enum.
(machine_function): Add func_type and no_caller_saved_registers.
* config/i386/i386.md (UNSPEC_INTERRUPT_RETURN): New.
(interrupt_return): New pattern.
* doc/extend.texi: Document x86 interrupt and
no_caller_saved_registers attributes.

gcc/testsuite/

PR target/66960
PR target/67630
PR target/67634
PR target/67841
PR target/68037
PR target/68618
PR target/68661
PR target/69575
PR target/69596
PR target/69734
* gcc.dg/guality/pr68037-1.c: New test.
* gcc.dg/guality/pr68037-2.c: Likewise.
* gcc.dg/guality/pr68037-3.c: Likewise.
* gcc.dg/torture/pr68037-1.c: Likewise.
* gcc.dg/torture/pr68037-2.c: Likewise.
* gcc.dg/torture/pr68037-3.c: Likewise.
* gcc.dg/torture/pr68661-1a.c: Likewise.
* gcc.dg/torture/pr68661-1b.c: Likewise.
* gcc.target/i386/interrupt-1.c: Likewise.
* gcc.target/i386/interrupt-2.c: Likewise.
* gcc.target/i386/interrupt-3.c: Likewise.
* gcc.target/i386/interrupt-4.c: Likewise.
* gcc.target/i386/interrupt-5.c: Likewise.
* gcc.target/i386/interrupt-6.c: Likewise.
* gcc.target/i386/interrupt-7.c: Likewise.
* gcc.target/i386/interrupt-8.c: Likewise.
* gcc.target/i386/interrupt-9.c: Likewise.
* gcc.target/i386/interrupt-10.c: Likewise.
* gcc.target/i386/interrupt-11.c: Likewise.
* gcc.target/i386/interrupt-12.c: Likewise.
* gcc.target/i386/interrupt-13.c: Likewise.
* gcc.target/i386/interrupt-14.c: Likewise.
* gcc.target/i386/interrupt-15.c: Likewise.
* gcc.target/i386/interrupt-16.c: Likewise.
* gcc.target/i386/interrupt-17.c: Likewise.
* gcc.target/i386/interrupt-18.c: Likewise.
* gcc.target/i386/interrupt-19.c: Likewise.
* gcc.target/i386/interrupt-20.c: Likewise.
* gcc.target/i386/interrupt-21.c: Likewise.
* gcc.target/i386/interrupt-22.c: Likewise.
* gcc.target/i386/interrupt-23.c: Likewise.
* gcc.target/i386/interrupt-24.c: Likewise.
* gcc.target/i386/interrupt-25.c: Likewise.
* gcc.target/i386/interrupt-26.c: Likewise.
* gcc.target/i386/interrupt-27.c: Likewise.
* gcc.target/i386/interrupt-28.c: Likewise.
* gcc.target/i386/interrupt-387-err-1.c: Likewise.
* gcc.target/i386/interrupt-387-err-2.c: Likewise.
* gcc.target/i386/interrupt-bnd-err-1.c: Likewise.
* gcc.target/i386/interrupt-bnd-err-2.c: Likewise.
* gcc.target/i386/interrupt-iamcu.c: Likewise.
* gcc.target/i386/interrupt-mmx-err-1.c: Likewise.
* gcc.target/i386/interrupt-mmx-err-2.c: Likewise.
* gcc.target/i386/interrupt-redzone-1.c: Likewise.
* gcc.target/i386/interrupt-redzone-2.c: Likewise.
* gcc.target/i386/interrupt-sibcall-1.c: Likewise.
* gcc.target/i386/interrupt-sibcall-2.c: Likewise.
* gcc.target/i386/interrupt-switch-abi.c: Likewise.

Co-Authored-By: Julia Koval <julia.koval@intel.com>
From-SVN: r237073

8 years agoConvert leading spaces to tabs
H.J. Lu [Fri, 3 Jun 2016 15:06:47 +0000 (08:06 -0700)]
Convert leading spaces to tabs

From-SVN: r237072

8 years agoConvert leading spaces to tabs
H.J. Lu [Fri, 3 Jun 2016 15:05:11 +0000 (08:05 -0700)]
Convert leading spaces to tabs

From-SVN: r237071

8 years agoc-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction arguments as addressable...
Chung-Lin Tang [Fri, 3 Jun 2016 14:25:12 +0000 (14:25 +0000)]
c-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction arguments as addressable when async clause exists.

2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>

c/
* c-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction
arguments as addressable when async clause exists.

cp/
* semantics.c (finish_omp_clauses): Mark OpenACC reduction
arguments as addressable when async clause exists.

fortran/
* trans-openmp.c (gfc_trans_omp_reduction_list): Add mark_addressable
bool parameter, set reduction clause DECLs as addressable when true.
(gfc_trans_omp_clauses): Pass clauses->async to
gfc_trans_omp_reduction_list, add comment describing OpenACC situation.

libgomp/
* testsuite/libgomp.oacc-fortran/reduction-8.f90: New testcase.
* testsuite/libgomp.oacc-c-c++-common/reduction-8.c: New testcase.

From-SVN: r237070

8 years agore PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result...
Bernd Schmidt [Fri, 3 Jun 2016 14:20:53 +0000 (14:20 +0000)]
re PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result is tested for [in]equality with 0)

        PR tree-optimization/52171
        * builtins.c (expand_cmpstrn_or_cmpmem): Delete, moved elsewhere.
        (expand_builtin_memcmp): New arg RESULT_EQ.  All callers changed.
        Look for constant strings.  Move some code to emit_block_cmp_hints
        and use it.
        * builtins.def (BUILT_IN_MEMCMP_EQ): New.
        * defaults.h (COMPARE_MAX_PIECES): New macro.
        * expr.c (move_by_pieces_d, store_by_pieces_d): Remove old structs.
        (move_by_pieces_1, store_by_pieces_1, store_by_pieces_2): Remvoe.
        (clear_by_pieces_1): Don't declare.  Move definition before use.
        (can_do_by_pieces): New static function.
        (can_move_by_pieces): Use it.  Return bool.
        (by_pieces_ninsns): Renamed from move_by_pieces_ninsns.  New arg
        OP.  All callers changed.  Handle COMPARE_BY_PIECES.
        (class pieces_addr); New.
        (pieces_addr::pieces_addr, pieces_addr::decide_autoinc,
        pieces_addr::adjust, pieces_addr::increment_address,
        pieces_addr::maybe_predec, pieces_addr::maybe_postinc): New member
        functions for it.
        (class op_by_pieces_d): New.
        (op_by_pieces_d::op_by_pieces_d, op_by_pieces_d::run): New member
        functions for it.
        (class move_by_pieces_d, class compare_by_pieces_d,
        class store_by_pieces_d): New subclasses of op_by_pieces_d.
        (move_by_pieces_d::prepare_mode, move_by_pieces_d::generate,
        move_by_pieces_d::finish_endp, store_by_pieces_d::prepare_mode,
        store_by_pieces_d::generate, store_by_pieces_d::finish_endp,
        compare_by_pieces_d::generate, compare_by_pieces_d::prepare_mode,
        compare_by_pieces_d::finish_mode): New member functions.
        (compare_by_pieces, emit_block_cmp_via_cmpmem): New static
        functions.
        (expand_cmpstrn_or_cmpmem): Moved here from builtins.c.
        (emit_block_cmp_hints): New function.
        (move_by_pieces, store_by_pieces, clear_by_pieces): Rewrite to just
        use the newly defined classes.
        * expr.h (by_pieces_constfn): New typedef.
        (can_store_by_pieces, store_by_pieces): Use it in arg declarations.
        (emit_block_cmp_hints, expand_cmpstrn_or_cmpmem): Declare.
        (move_by_pieces_ninsns): Don't declare.
        (can_move_by_pieces): Change return value to bool.
        * target.def (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Update docs.
        (compare_by_pieces_branch_ratio): New hook.
        * target.h (enum by_pieces_operation): Add COMPARE_BY_PIECES.
        (by_pieces_ninsns): Declare.
        * targethooks.c (default_use_by_pieces_infrastructure_p): Handle
        COMPARE_BY_PIECES.
        (default_compare_by_pieces_branch_ratio): New function.
        * targhooks.h (default_compare_by_pieces_branch_ratio): Declare.
        * doc/tm.texi.in (STORE_MAX_PIECES, COMPARE_MAX_PIECES): Document.
        * doc/tm.texi: Regenerate.
        * tree-ssa-strlen.c: Include "builtins.h".
        (handle_builtin_memcmp): New static function.
        (strlen_optimize_stmt): Call it for BUILT_IN_MEMCMP.
        * tree.c (build_common_builtin_nodes): Create __builtin_memcmp_eq.

testsuite/
        PR tree-optimization/52171
        * gcc.dg/pr52171.c: New test.
        * gcc.target/i386/pr52171.c: New test.

From-SVN: r237069

8 years agopred-1.C: New testcase
Jan Hubicka [Fri, 3 Jun 2016 13:47:15 +0000 (15:47 +0200)]
pred-1.C: New testcase

* g++.dg/tree-ssa/pred-1.C: New testcase
* gcc.dg/tree-ssa/pred-1.c: New testcase
* cp-gimplify.c (genericize_continue_stmt): Force addition of
predict stmt.

From-SVN: r237068

8 years agore PR target/70957 (testsuite/gcc.target/powerpc/vsx-elemrev-4.c fails on power7)
Bill Schmidt [Fri, 3 Jun 2016 13:14:26 +0000 (13:14 +0000)]
re PR target/70957 (testsuite/gcc.target/powerpc/vsx-elemrev-4.c fails on power7)

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/70957
* gcc.target/powerpc/vsx-elemrev-2.c: Require p9vector hardware
support.
* gcc.target/powerpc/vsx-elemrev-4.c: Likewise.

From-SVN: r237066

8 years ago[3/3] No need to vectorize simple only-live stmts
Alan Hayward [Fri, 3 Jun 2016 13:04:01 +0000 (13:04 +0000)]
[3/3] No need to vectorize simple only-live stmts

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[3/3] No need to vectorize simple only-live stmts

gcc/
* tree-vect-stmts.c (vect_stmt_relevant_p): Do not vectorize non live
relevant stmts which are simple and invariant.
* tree-vect-loop.c (vectorizable_live_operation): Check relevance
instead of simple and invariant

testsuite/
* gcc.dg/vect/vect-live-slp-5.c: Remove dg check.

From-SVN: r237065

8 years ago[2/3] Vectorize inductions that are live after the loop
Alan Hayward [Fri, 3 Jun 2016 13:00:06 +0000 (13:00 +0000)]
[2/3] Vectorize inductions that are live after the loop

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[2/3] Vectorize inductions that are live after the loop

gcc/
* tree-vect-loop.c (vect_analyze_loop_operations): Allow live stmts.
(vectorizable_reduction): Check for new relevant state.
(vectorizable_live_operation): vectorize live stmts using
BIT_FIELD_REF.  Remove special case for gimple assigns stmts.
* tree-vect-stmts.c (is_simple_and_all_uses_invariant): New function.
(vect_stmt_relevant_p): Check for stmts which are only used live.
(process_use): Use of a stmt does not inherit it's live value.
(vect_mark_stmts_to_be_vectorized): Simplify relevance inheritance.
(vect_analyze_stmt): Check for new relevant state.
* tree-vectorizer.h (vect_relevant): New entry for a stmt which is used
outside the loop, but not inside it.

testsuite/
* gcc.dg/tree-ssa/pr64183.c: Ensure test does not vectorize.
* testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c: Remove xfail.
* gcc.dg/vect/vect-live-1.c: New test.
* gcc.dg/vect/vect-live-2.c: New test.
* gcc.dg/vect/vect-live-3.c: New test.
* gcc.dg/vect/vect-live-4.c: New test.
* gcc.dg/vect/vect-live-5.c: New test.
* gcc.dg/vect/vect-live-slp-1.c: New test.
* gcc.dg/vect/vect-live-slp-2.c: New test.
* gcc.dg/vect/vect-live-slp-3.c: New test.

From-SVN: r237064

8 years ago[1/3] Split vect_get_vec_def_for_operand into two
Alan Hayward [Fri, 3 Jun 2016 12:48:21 +0000 (12:48 +0000)]
[1/3] Split vect_get_vec_def_for_operand into two

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[1/3] Split vect_get_vec_def_for_operand into two

gcc/
* tree-vectorizer.h (vect_get_vec_def_for_operand_1): New
* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): New
(vect_get_vec_def_for_operand): Split out code.

From-SVN: r237063

8 years agors6000: Remove the ancient mfcr peepholes
Segher Boessenkool [Fri, 3 Jun 2016 12:33:07 +0000 (14:33 +0200)]
rs6000: Remove the ancient mfcr peepholes

These peepholes replace two mfcr;mask sequences by one mfcr;mask;mask
sequence.  On modern cpus, the original mfcr's were actually mfocrf,
but the new insn is an actual heavy-weight mfcr.  This is very bad
for performance.

The comment says there is a three cycle delay between two consecutive
mfcr insns.  This may have been true on rios, and it's true on 604,
but on 603, 750, 7400 it is just a single cycle (on 7450 it is two).

This is also a define_peephole, and we should get rid of those.

So this patch just removes the peepholes; the benefit is marginal at
best, and it so very hurts in other cases.

* config/rs6000/rs6000.md (define_peepholes for two mfcr's): Delete.

From-SVN: r237062

8 years ago2016-06-03 Alan Hayward <alan.hayward@arm.com>
Alan Hayward [Fri, 3 Jun 2016 12:12:41 +0000 (12:12 +0000)]
2016-06-03  Alan Hayward  <alan.hayward@arm.com>

gcc/
* tree-vect-stmts.c (vectorizable_call) Remove GOMP_SIMD_LANE code.

From-SVN: r237061

8 years ago[ARM][obvious] Fix typos in *thumb1_mulsi3 comment
Kyrylo Tkachov [Fri, 3 Jun 2016 08:43:28 +0000 (08:43 +0000)]
[ARM][obvious] Fix typos in *thumb1_mulsi3 comment

* config/arm/thumb1.md (*thumb1_mulsi3): Fix typos in comment.

From-SVN: r237058

8 years ago* MAINTAINERS (Write After Approval): Add myself.
Jose E. Marchesi [Fri, 3 Jun 2016 08:35:24 +0000 (10:35 +0200)]
* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r237055

8 years agore PR middle-end/71387 (ICE in emit_move_insn, at expr.c:3418 with -Og)
Jakub Jelinek [Fri, 3 Jun 2016 08:03:11 +0000 (10:03 +0200)]
re PR middle-end/71387 (ICE in emit_move_insn, at expr.c:3418 with -Og)

PR middle-end/71387
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): If redirecting
to noreturn e->callee->decl that has void return type and void
arguments, adjust gimple_call_fntype and remove lhs even if it had
previously addressable type.

* g++.dg/opt/pr71387.C: New test.

From-SVN: r237053

8 years agore PR tree-optimization/71328 (ice in verify_jump_thread)
Jeff Law [Fri, 3 Jun 2016 05:20:16 +0000 (23:20 -0600)]
re PR tree-optimization/71328 (ice in verify_jump_thread)

PR tree-optimization/71328
* tree-ssa-threadupdate.c (duplicate_thread_path): Fix off-by-one
error when checking for a jump back onto the copied path.  */

PR tree-optimization/71328
* gcc.c-torture/compile/pr71328.c: New test.

From-SVN: r237052

8 years agore PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)
Jerry DeLisle [Fri, 3 Jun 2016 01:25:31 +0000 (01:25 +0000)]
re PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)

2016-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/52393
* gfortran.dg/fmt_read_3.f90: Fix typo.
* gfortran.dg/fmt_read_4.f90: New test.

From-SVN: r237051

8 years agoDaily bump.
GCC Administrator [Fri, 3 Jun 2016 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237050

8 years agodecl.c (xref_tag_1): Change pairs of errors to error + inform.
Paolo Carlini [Thu, 2 Jun 2016 23:10:33 +0000 (23:10 +0000)]
decl.c (xref_tag_1): Change pairs of errors to error + inform.

/cp
2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (xref_tag_1): Change pairs of errors to error + inform.
(start_enum): Likewise.
* parser.c (cp_parser_class_head): Likewise.

/testsuite
2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/forw_enum10.C: Adjust for dg-message vs dg-error.
* g++.dg/cpp0x/forw_enum6.C: Likewise.
* g++.dg/cpp0x/forw_enum8.C: Likewise.
* g++.dg/cpp0x/override2.C: Likewise.
* g++.dg/parse/crash5.C: Likewise.
* g++.dg/parse/error16.C: Likewise.
* g++.dg/parse/error27.C: Likewise.
* g++.dg/template/qualttp15.C: Likewise.
* g++.dg/template/redecl4.C: Likewise.
* g++.old-deja/g++.other/crash39.C: Likewise.
* g++.old-deja/g++.other/struct1.C: Likewise.
* g++.old-deja/g++.pt/m9a.C: Likewise.
* g++.old-deja/g++.pt/memclass10.C: Likewise.

From-SVN: r237046

8 years agomicroblaze.c: fix warnings
David Malcolm [Thu, 2 Jun 2016 19:27:10 +0000 (19:27 +0000)]
microblaze.c: fix warnings

gcc/ChangeLog:
* config/microblaze/microblaze.c (get_branch_target): Add return
NULL_RTX for the non-CALL_P case.
(insert_wic_for_ilb_runout): Remove unused local "wic_addr1".
(insert_wic): Remove unused local "j".

From-SVN: r237044

8 years agore PR c++/71372 (C++ FE drops TREE_THIS_VOLATILE in cp_fold on all tcc_reference...
Jakub Jelinek [Thu, 2 Jun 2016 16:36:04 +0000 (18:36 +0200)]
re PR c++/71372 (C++ FE drops TREE_THIS_VOLATILE in cp_fold on all tcc_reference trees)

PR c++/71372
* cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
to the newly built tree.

* c-c++-common/pr71372.c: New test.

From-SVN: r237041

8 years agoFix display name of PRED_FORTRAN_FAIL_IO
Martin Liska [Thu, 2 Jun 2016 16:18:05 +0000 (18:18 +0200)]
Fix display name of PRED_FORTRAN_FAIL_IO

* predict.def: Fix typo in PRED_FORTRAN_FAIL_IO display name.

From-SVN: r237040

8 years agosource_date_epoch-1.c (main): Test __DATE__ and __TIME__ strings with __builtin_strcm...
Jakub Jelinek [Thu, 2 Jun 2016 16:17:15 +0000 (18:17 +0200)]
source_date_epoch-1.c (main): Test __DATE__ and __TIME__ strings with __builtin_strcmp instead of printf and...

* gcc.dg/cpp/source_date_epoch-1.c (main): Test __DATE__ and
__TIME__ strings with __builtin_strcmp instead of printf and
dg-output.

From-SVN: r237039

8 years agoUpdate TARGET_FUNCTION_INCOMING_ARG documentation
H.J. Lu [Thu, 2 Jun 2016 13:46:20 +0000 (13:46 +0000)]
Update TARGET_FUNCTION_INCOMING_ARG documentation

On x86, interrupt handlers are only called by processors which push
interrupt data onto stack at the address where the normal return address
is.  Since interrupt handlers must access interrupt data via pointers so
that they can update interrupt data, the pointer argument is passed as
"argument pointer - word".

TARGET_FUNCTION_INCOMING_ARG defines how callee sees its argument.
Normally it returns REG, NULL, or CONST_INT.  This patch adds arbitrary
address computation based on hard register, which can be forced into a
register, to the list.

When copying an incoming argument onto stack, assign_parm_setup_stack
has:

if (argument in memory)
  copy argument in memory to stack
else
  move argument to stack

Since an arbitrary address computation may be passed as an argument, we
change it to:

if (argument in memory)
  copy argument in memory to stack
else
  {
    if (argument isn't in register)
      force argument into a register
    move argument to stack
  }

* function.c (assign_parm_setup_stack): Force source into a
register if needed.
* target.def (function_incoming_arg): Update documentation to
allow arbitrary address computation based on hard register.
* doc/tm.texi: Regenerated.

Co-Authored-By: Julia Koval <julia.koval@intel.com>
From-SVN: r237037

8 years agoFix first match heuristics
Martin Liska [Thu, 2 Jun 2016 12:51:57 +0000 (14:51 +0200)]
Fix first match heuristics

* predict.c (combine_predictions_for_bb): Fix first match in
cases where a first predictor contains more than one occurence
in list of predictors.  Take the best value in such case.
* gcc.dg/predict-9.c: New test.

From-SVN: r237036

8 years agogcc-dg.exp (cleanup-after-saved-dg-test): Add missing global set_compiler_env_var...
Jakub Jelinek [Thu, 2 Jun 2016 12:34:42 +0000 (14:34 +0200)]
gcc-dg.exp (cleanup-after-saved-dg-test): Add missing global set_compiler_env_var and global saved_compiler_env_var.

* lib/gcc-dg.exp (cleanup-after-saved-dg-test): Add missing
global set_compiler_env_var and global saved_compiler_env_var.

From-SVN: r237035

8 years ago[rtlanal] Fix rtl-optimization/71295
Kyrylo Tkachov [Thu, 2 Jun 2016 12:26:42 +0000 (12:26 +0000)]
[rtlanal] Fix rtl-optimization/71295

PR rtl-optimization/71295
* rtlanal.c (subreg_get_info): If taking a subreg at the requested
offset would go over the size of the inner mode reject it.

* gcc.c-torture/compile/pr71295.c: New test.

From-SVN: r237034

8 years agoOn behalf of Aaron Conole <aconole@redhat.com>
Aaron Conole [Thu, 2 Jun 2016 12:22:01 +0000 (12:22 +0000)]
On behalf of Aaron Conole <aconole@redhat.com>

On behalf of  Aaron Conole  <aconole@redhat.com>
* libgcov-driver-system.c (__gcov_error_file): New.
(get_gcov_error_file): New.
(gcov_error): Use and set __gcov_error_file.
(gcov_error_exit): New.
* libgcov-driver.c (gcov_exit): Call gcov_error_exit.

From-SVN: r237033

8 years agosse.md (*vec_concatv4si): Use v=v,v instead of x=x,x and v=v,m instead of x=x,m.
Jakub Jelinek [Thu, 2 Jun 2016 11:02:26 +0000 (13:02 +0200)]
sse.md (*vec_concatv4si): Use v=v,v instead of x=x,x and v=v,m instead of x=x,m.

* config/i386/sse.md (*vec_concatv4si): Use v=v,v instead of
x=x,x and v=v,m instead of x=x,m.

* gcc.target/i386/avx512vl-concatv4si-1.c: New test.

From-SVN: r237031

8 years agosse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm alternative.
Jakub Jelinek [Thu, 2 Jun 2016 11:01:31 +0000 (13:01 +0200)]
sse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm alternative.

* config/i386/sse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm
alternative.  Change x=x,x alternative to v=Yv,Yv and x=rm,C
alternative to v=rm,C.

* gcc.target/i386/avx512dq-concatv2si-1.c: New test.
* gcc.target/i386/avx512vl-concatv2si-1.c: New test.

From-SVN: r237030