gcc.git
6 years agore PR target/82641 (Unable to enable crc32 for a certain function with target attribu...
Tamar Christina [Thu, 7 Dec 2017 14:54:22 +0000 (14:54 +0000)]
re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))

2017-12-07  Tamar Christina  <tamar.christina@arm.com>

PR target/82641
* config/arm/arm.c (INCLUDE_STRING): Define.
(arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
(arm_declare_function_name): Conservatively emit .arch, .arch_extensions
and .fpu.

gcc/testsuite/
2017-12-07  Tamar Christina  <tamar.christina@arm.com>

PR target/82641
* gcc.target/arm/pragma_arch_attribute_2.c: New.
* gcc.target/arm/pragma_arch_attribute_2.c: New.
* gcc.target/arm/pragma_arch_attribute_3.c: New.
* gcc.target/arm/pragma_fpu_attribute.c: New.
* gcc.target/arm/pragma_fpu_attribute_2.c: New.

From-SVN: r255468

6 years agoAdd unroll and jam pass
Michael Matz [Thu, 7 Dec 2017 14:49:54 +0000 (14:49 +0000)]
Add unroll and jam pass

* gimple-loop-jam.c: New file.
* Makefile.in (OBJS): Add gimple-loop-jam.o.
* common.opt (funroll-and-jam): New option.
* opts.c (default_options_table): Add unroll-and-jam at -O3.
* params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
(PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
* passes.def: Add pass_loop_jam.
* timevar.def (TV_LOOP_JAM): Add.
* tree-pass.h (make_pass_loop_jam): Declare.
* cfgloop.c (flow_loop_tree_node_add): Add AFTER argument.
* cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
* cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call
to flow_loop_tree_node_add.
(duplicate_subloops, copy_loops_to): Append to sibling list.
* cfgloopmanip.h: (duplicate_loop): Adjust declaration.
* doc/invoke.texi (-funroll-and-jam): Document new option.
(unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.

testsuite/
* gcc.dg/unroll-and-jam.c: New test.

From-SVN: r255467

6 years agore PR tree-optimization/83296 (missing -Wstringop-overflow due to missing range info...
Richard Biener [Thu, 7 Dec 2017 13:21:51 +0000 (13:21 +0000)]
re PR tree-optimization/83296 (missing -Wstringop-overflow due to missing range info for MAX_EXPR)

2017-12-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83296
PR tree-optimization/67769
* tree-ssa-phiopt.c (conditional_replacement): Do not reset
flow sensitive info in an unrelated BB.
(value_replacement): Use reset_flow_sensitive_info.
(minmax_replacement): Reset flow sensitive info on the def
we move.  Do not reset flow sensitive info in the whole BB
we move the stmt to.
(abs_replacement): Likewise.

* g++.dg/warn/Wstringop-overflow-1.C: New testcase.

From-SVN: r255466

6 years agors6000: Initialise rs6000_cpu correctly (PR43871)
Segher Boessenkool [Thu, 7 Dec 2017 09:36:28 +0000 (10:36 +0100)]
rs6000: Initialise rs6000_cpu correctly (PR43871)

Finally, set rs6000_cpu based not on -mtune=, but only -mcpu= and the
defaults.

PR target/43871
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
rs6000_cpu to the given -mcpu=, or to the default processor.

From-SVN: r255464

6 years agors6000: Don't use rs6000_cpu_attr directly
Segher Boessenkool [Thu, 7 Dec 2017 09:35:10 +0000 (10:35 +0100)]
rs6000: Don't use rs6000_cpu_attr directly

In some places in the code we currently use rs6000_cpu_attr, although
that is a cast from rs6000_tune.  This patch changes things to be more
regular and clearer.  Now rs6000_cpu_attr is not used any more, and
it is deleted.

* config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
* config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
instead of rs6000_cpu_attr.
(rs6000_adjust_cost): Ditto.
(is_microcoded_insn): Ditto.
(rs6000_adjust_priority): Ditto.
(rs6000_issue_rate): Ditto.
(rs6000_use_sched_lookahead): Ditto.
(rs6000_use_sched_lookahead_guard): Ditto.
(rs6000_sched_reorder): Ditto.
(force_new_group): Ditto.
* config/rs6000/rs6000.md (cpu attribute): Ditto.
(group_ending_nop): Ditto.

From-SVN: r255463

6 years agors6000: Split rs6000_cpu
Segher Boessenkool [Thu, 7 Dec 2017 09:32:46 +0000 (10:32 +0100)]
rs6000: Split rs6000_cpu

This splits rs6000_cpu into rs6000_cpu and rs6000_tune.  Both are still
initialised identically, so there is no behaviour change.

Now rs6000_cpu should be set by -mcpu=, and rs6000_tune by -mtune= (but
both still are set by -mtune=, fixed in a later patch in the series).

Also change rs6000_cpu to rs6000_tune in the appropriate cases (i.e.
most, but not those that enable using new insns).

* config/rs6000/rs6000.opt (rs6000_tune): New variable.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
(rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
appropriate.
(rs6000_reassociation_width): Ditto.
(rs6000_emit_epilogue): Ditto.
(rs6000_adjust_cost): Ditto.
(is_microcoded_insn): Ditto.
(is_cracked_insn): Ditto.
(rs6000_adjust_priority): Ditto.
(rs6000_sched_reorder): Ditto.
(rs6000_sched_reorder2): Ditto.
(insn_must_be_first_in_group): Ditto.
(insn_must_be_last_in_group): Ditto.
(rs6000_register_move_cost): Ditto.
* config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
rs6000_cpu.

From-SVN: r255462

6 years agoEnable VAES support [2/5]
Julia Koval [Thu, 7 Dec 2017 06:28:55 +0000 (07:28 +0100)]
Enable VAES support [2/5]

gcc/
* config.gcc: Add vaesintrin.h.
* config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): New type.
* config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
__builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): New builtins.
* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
* config/i386/immintrin.h: Include vaesintrin.h.
* config/i386/sse.md (vaesdec_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
_mm_aesdec_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512-check.h: Handle bit_VAES.
* gcc.target/i386/avx512f-aesdec-2.c: New test.
* gcc.target/i386/avx512fvl-vaes-1.c: Ditto.
* gcc.target/i386/avx512vl-aesdec-2.c: Ditto.
* gcc.target/i386/i386.exp (check_effective_target_avx512vaes): New.

From-SVN: r255461

6 years agoDaily bump.
GCC Administrator [Thu, 7 Dec 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255460

6 years agore PR tree-optimization/69224 (-Warray-bounds false positive with -O3 and struct...
Jeff Law [Wed, 6 Dec 2017 23:50:58 +0000 (16:50 -0700)]
re PR tree-optimization/69224 (-Warray-bounds false positive with -O3 and struct pointer parameter)

PR tree-optimization/69224
PR tree-optimization/80907
PR tree-optimization/82286
* gcc.dg/pr69224.c: New test.
* gcc.dg/pr80907.c: New test.
* gcc.dg/pr82286.c: New test.

From-SVN: r255457

6 years agore PR c++/80259 (ICE deleting friend function)
Jakub Jelinek [Wed, 6 Dec 2017 22:48:39 +0000 (23:48 +0100)]
re PR c++/80259 (ICE deleting friend function)

PR c++/80259
* decl2.c (grokfield): Diagnose = delete redefinition of a friend.

* g++.dg/cpp0x/pr80259.C: New test.

From-SVN: r255456

6 years agoCorrect argument to targetm.calls.promote_prototypes.
Jason Merrill [Wed, 6 Dec 2017 22:31:47 +0000 (17:31 -0500)]
Correct argument to targetm.calls.promote_prototypes.

* call.c (convert_for_arg_passing): Pass NULL_TREE to
targetm.calls.promote_prototypes.
(type_passed_as): Likewise.

From-SVN: r255455

6 years agoPR c++/82115 - ICE with variable initialized with its own address.
Jason Merrill [Wed, 6 Dec 2017 21:42:02 +0000 (16:42 -0500)]
PR c++/82115 - ICE with variable initialized with its own address.

* pt.c (value_dependent_expression_p): Add lval parameter.  Don't
consider DECL_INITIAL if it's true.

From-SVN: r255454

6 years agoC/C++: don't suggest implementation names as spelling fixes (PR c/83236)
David Malcolm [Wed, 6 Dec 2017 20:02:55 +0000 (20:02 +0000)]
C/C++: don't suggest implementation names as spelling fixes (PR c/83236)

gcc/c-family/ChangeLog:
PR c/83236
* c-common.c (selftest::c_family_tests): Call
selftest::c_spellcheck_cc_tests.
* c-common.h (selftest::c_spellcheck_cc_tests): New decl.
* c-spellcheck.cc: Include "selftest.h".
(name_reserved_for_implementation_p): New function.
(should_suggest_as_macro_p): New function.
(find_closest_macro_cpp_cb): Move the check for NT_MACRO to
should_suggest_as_macro_p and call it.
(selftest::test_name_reserved_for_implementation_p): New function.
(selftest::c_spellcheck_cc_tests): New function.
* c-spellcheck.h (name_reserved_for_implementation_p): New decl.

gcc/c/ChangeLog:
PR c/83236
* c-decl.c (lookup_name_fuzzy): Don't suggest names that are
reserved for use by the implementation.

gcc/cp/ChangeLog:
PR c/83236
* name-lookup.c (consider_binding_level): Don't suggest names that
are reserved for use by the implementation.

gcc/testsuite/ChangeLog:
PR c/83236
* c-c++-common/spellcheck-reserved.c: New test case.

From-SVN: r255453

6 years agoMove macro-spellchecking code from "gcc" to new files in c-family
David Malcolm [Wed, 6 Dec 2017 19:56:11 +0000 (19:56 +0000)]
Move macro-spellchecking code from "gcc" to new files in c-family

The code for spellchecking macros really belongs in c-family, rather
than in gcc/spellcheck-tree.c, so this patch moves it there.

gcc/ChangeLog:
* Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
* spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
c-family/c-spellcheck.cc.
(best_macro_match::best_macro_match): Likewise.
* spellcheck-tree.h
(struct edit_distance_traits<cpp_hashnode *>): Move to
c-family/c-spellcheck.h.
(class best_macro_match): Likewise.

gcc/c-family/ChangeLog:
* c-spellcheck.cc: New file, taken from macro-handling code in
spellcheck-tree.c.
* c-spellcheck.h: New file, taken from macro-handling code in
spellcheck-tree.h.

gcc/c/ChangeLog:
* c-decl.c: Include "c-family/c-spellcheck.h".

gcc/cp/ChangeLog:
* name-lookup.c: Include "c-family/c-spellcheck.h".

From-SVN: r255452

6 years agore PR tree-optimization/83293 (ICE: in gsi_insert_seq_nodes_after, at gimple-iterato...
Jakub Jelinek [Wed, 6 Dec 2017 19:27:41 +0000 (20:27 +0100)]
re PR tree-optimization/83293 (ICE: in gsi_insert_seq_nodes_after,  at gimple-iterator.c:278)

PR tree-optimization/83293
* gimple-ssa-strength-reduction.c (insert_initializers): Use
GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
might insert into empty bb.

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

From-SVN: r255451

6 years agoPR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi
Martin Sebor [Wed, 6 Dec 2017 19:22:55 +0000 (19:22 +0000)]
PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi

PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi
(extra -Walloc-size-larger-than warning

* g++.dg/opt/new1.C: Prune warning from test output.

From-SVN: r255450

6 years agore PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)
Jakub Jelinek [Wed, 6 Dec 2017 19:22:06 +0000 (20:22 +0100)]
re PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)

PR sanitizer/81281
* match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
simplify for plus with :c added, and pointer_plus without that.
((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
with undefined overflow and the conversion is not widening,
perform negation in utype and only convert to type afterwards.
((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
simplify for plus with :c added, and pointer_plus without that.
If type is integral with undefined overflow and the conversion is
not widening, perform minus in utype and only convert to type
afterwards.  Move the last pointer_diff_expr simplify into the
two outermost ifs.

* gcc.c-torture/execute/pr81281.c: New test.
* gcc.dg/pr81281-1.c: New test.
* gcc.dg/pr81281-2.c: New test.
* g++.dg/ubsan/pr81281.C: New test.
* g++.dg/ubsan/pr81281-aux.cc: New test.

From-SVN: r255449

6 years agoPR tree-optimization/82646 - bogus -Wstringop-overflow with -D_FORTIFY_SOURCE=2 on...
Martin Sebor [Wed, 6 Dec 2017 17:59:01 +0000 (17:59 +0000)]
PR tree-optimization/82646 - bogus -Wstringop-overflow with -D_FORTIFY_SOURCE=2 on strncpy with range to a member array

gcc/ChangeLog:

PR tree-optimization/82646
* builtins.c (maybe_emit_chk_warning): Use size as the bound for
strncpy, not maxlen.

gcc/testsuite/ChangeLog:

PR tree-optimization/82646
* gcc.dg/builtin-stringop-chk-1.c: Adjust.
* gcc.dg/builtin-stringop-chk-9.c: New test.
* g++.dg/ext/strncpy-chk1.C: Adjust.

From-SVN: r255448

6 years agoinvoke.texi (-Wstringop-truncation): Mention attribute nonstring.
Martin Sebor [Wed, 6 Dec 2017 17:51:21 +0000 (17:51 +0000)]
invoke.texi (-Wstringop-truncation): Mention attribute nonstring.

gcc/ChangeLog:

* doc/invoke.texi (-Wstringop-truncation): Mention attribute
nonstring.

From-SVN: r255447

6 years agoPR tree-optimization/83075 - Invalid strncpy optimization
Martin Sebor [Wed, 6 Dec 2017 17:47:45 +0000 (17:47 +0000)]
PR tree-optimization/83075 - Invalid strncpy optimization

gcc/ChangeLog:

PR tree-optimization/83075
* tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
strncat/strncpy don't change length of source string.

gcc/testsuite/ChangeLog:

PR tree-optimization/83075
* gcc.dg/tree-ssa/strncat.c: New test.
* gcc.dg/tree-ssa/strncpy-2.c: Same.

From-SVN: r255446

6 years agolibgo: remove -fplan9-extensions from CFLAGS
Ian Lance Taylor [Wed, 6 Dec 2017 17:43:29 +0000 (17:43 +0000)]
libgo: remove -fplan9-extensions from CFLAGS

    Remove -fplan9-extensions from the CFLAGS used for libgo (no
    longer needed since the runtime was converted from C to Go).

    Reviewed-on: https://go-review.googlesource.com/82177

From-SVN: r255445

6 years agopr41305.C: Refine test option.
Bin Cheng [Wed, 6 Dec 2017 16:43:43 +0000 (16:43 +0000)]
pr41305.C: Refine test option.

gcc/testsuite
* g++.dg/graphite/pr41305.C: Refine test option.
* gcc.dg/graphite/pr42205-1.c: Ditto.
* gcc.dg/graphite/pr42205-2.c: Ditto.
* gcc.dg/graphite/pr42211.c: Ditto.
* gcc.dg/graphite/pr46185.c: Ditto.
* gcc.dg/graphite/pr46966.c: Ditto.
* gcc.dg/graphite/pr59817-1.c: Ditto.
* gcc.dg/graphite/pr59817-2.c: Ditto.
* gcc.dg/graphite/pr60740.c: Ditto.
* gcc.dg/graphite/pr60785.c: Ditto.
* gcc.dg/graphite/pr68715-2.c: Ditto.
* gcc.dg/graphite/pr68715.c: Ditto.
* gcc.dg/graphite/pr70045.c: Ditto.
* gfortran.dg/graphite/pr14741.f90: Ditto.
* gfortran.dg/graphite/pr40982.f90: Ditto.
* gfortran.dg/graphite/pr42285.f90: Ditto.
* gfortran.dg/graphite/pr42334-1.f: Ditto.
* gfortran.dg/graphite/pr42334.f90: Ditto.
* gfortran.dg/graphite/pr43349.f: Ditto.
* gfortran.dg/graphite/pr59817.f: Ditto.

From-SVN: r255444

6 years ago[ARM] testsuite: force hardfp in addr-modes-float.c
Charles Baylis [Wed, 6 Dec 2017 15:19:42 +0000 (15:19 +0000)]
[ARM] testsuite: force hardfp in addr-modes-float.c

gcc/testsuite/ChangeLog:

<date>  Charles Baylis  <charles.baylis@linaro.org>

* gcc.target/arm/addr-modes-float.c: Place dg-add-options after
        dg-require-effective-target.
        (ATTR): New define.
        (POST_STORE): Pass ATTR as 2nd argument.
        (POST_LOAD): Likewise.
        (POST_STORE_VEC): Likewise.
        * gcc.target/arm/addr-modes-int.c (ATTR): New define.
        (PRE_STORE): Pass ATTR as 2nd argument.
        (POST_STORE): Likewise.
        (PRE_LOAD): Likewise.
        (POST_LOAD): Likewise.
        * gcc.target/arm/addr-modes.h:  (PRE_STORE): New parameter.
        (POST_STORE): Likewise.
        (POST_STORE_VEC): Likewise.
        (PRE_LOAD): Likewise.
        (POST_LOAD): Likewise.
        (POST_LOAD_VEC): Likewise.

From-SVN: r255443

6 years agocompiler: handle set-and-use-temp in nilcheck code
Ian Lance Taylor [Wed, 6 Dec 2017 13:32:06 +0000 (13:32 +0000)]
compiler: handle set-and-use-temp in nilcheck code

    Change the code in Unary_expression::do_get_backend that introduces
    explicit nil checks for dereference operations to special case
    set-and-use-temporary expressions. For this case it is better to
    generate an explicit reference of the temp in the final conditional
    (avoids introducing tree sharing).

    Reviewed-on: https://go-review.googlesource.com/81915

From-SVN: r255442

6 years agore PR ada/66205 (gnatbind generates invalid code when finalization is enabled in...
Simon Wright [Wed, 6 Dec 2017 09:42:57 +0000 (09:42 +0000)]
re PR ada/66205 (gnatbind generates invalid code when finalization is enabled in restricted runtime)

PR ada/66205
* bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is
set, generate a null body.

From-SVN: r255441

6 years agoRevert
Eric Botcazou [Wed, 6 Dec 2017 08:38:11 +0000 (08:38 +0000)]
Revert
2017-11-29  Martin Aberg  <maberg@gaisler.com>

* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
to prevent b2bst errata sequence.
(sqrtdf2_fix): Likewise.

From-SVN: r255439

6 years agore PR tree-optimization/81945 (ICE in operator[], at vec.h:749)
Jakub Jelinek [Wed, 6 Dec 2017 08:16:44 +0000 (09:16 +0100)]
re PR tree-optimization/81945 (ICE in operator[], at vec.h:749)

PR tree-optimization/81945
* cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
* tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
to dest_cfun has orig_loop_num set, either remap it to the new
loop number if the loop got moved too, or clear it.

* gcc.dg/graphite/pr81945.c: New test.

From-SVN: r255438

6 years agoDaily bump.
GCC Administrator [Wed, 6 Dec 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255437

6 years agore PR c++/79228 ('i' suffix for __complex__ extension interferes with C++14 UDLs...
Jakub Jelinek [Tue, 5 Dec 2017 21:00:15 +0000 (22:00 +0100)]
re PR c++/79228 ('i' suffix for __complex__ extension interferes with C++14 UDLs for std::complex)

PR c++/79228
* expr.c (interpret_float_suffix): Avoid memcmp.
(interpret_int_suffix): Likewise.  Don't check for if.

From-SVN: r255434

6 years agoRemove $tmpdir from -dumpbase, we should be in $tmpdir.
Mike Stump [Tue, 5 Dec 2017 19:26:56 +0000 (19:26 +0000)]
Remove $tmpdir from -dumpbase, we should be in $tmpdir.

From-SVN: r255433

6 years agodump-noaddr.x: Generate dump files in tmpdir.
Matthew Gretton-Dann [Tue, 5 Dec 2017 19:16:52 +0000 (19:16 +0000)]
dump-noaddr.x: Generate dump files in tmpdir.

2017-12-05  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

* gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in
tmpdir.

From-SVN: r255432

6 years agothunderx2-t99.md (thunderx2t99_branch): Add trap to reservation.
Steve Ellcey [Tue, 5 Dec 2017 18:47:00 +0000 (18:47 +0000)]
thunderx2-t99.md (thunderx2t99_branch): Add trap to reservation.

2017-12-05  Steve Ellcey  <sellcey@cavium.com>

* config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
to reservation.
(thunderx2t99_nothing): New insn reservation.
(thunderx2t99_mrs): New insn reservation.
(thunderx2t99_multiple): New insn reservation.
(thunderx2t99_alu_basi): Add bfx to reservation.
(thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.

From-SVN: r255431

6 years agoPR c++/82331 - ICE with variadic partial specialization of auto
Jason Merrill [Tue, 5 Dec 2017 18:05:23 +0000 (13:05 -0500)]
PR c++/82331 - ICE with variadic partial specialization of auto

* pt.c (unify) [TEMPLATE_PARM_INDEX]: Set processing_template_decl
around call to tsubst.

From-SVN: r255430

6 years ago[PR C++/83287] Mark lookup for keeping
Nathan Sidwell [Tue, 5 Dec 2017 17:29:58 +0000 (17:29 +0000)]
[PR C++/83287] Mark lookup for keeping

https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00242.html
PR c++/83287
* tree.c (build_min): Check CAST_EXPR arg for OVERLOADs.

* g++.dg/lookup/pr83287.C: New.

From-SVN: r255429

6 years ago[Patch ARM] Fix probe_stack constraint.
Ramana Radhakrishnan [Tue, 5 Dec 2017 16:32:55 +0000 (16:32 +0000)]
[Patch ARM] Fix probe_stack constraint.

The probe_stack pattern uses r0 as a fixed register. This can cause issues if we have auto-increment instructions coming out that have r0 as the base register.

Tested with a bootstrap and regression run. richi reports that the original issue was fixed in the run. I did consider whether probe_stack_range was affected but it all comes back to probe_stack pattern so I think we are ok.

I don't have a testcase that seems to provoke this but it seems to be default on most distributions so I'm expecting the testcoverage to come from there.

Applied.

Ramana

PR target/82248

* config/arm/arm.md (probe_stack) : Use the 'o' constraint.

From-SVN: r255428

6 years agore PR testsuite/83289 (i386/sse2-init-v2di-2.c, i386/avx256-unaligned-load-1.c, i386...
Jakub Jelinek [Tue, 5 Dec 2017 16:17:09 +0000 (17:17 +0100)]
re PR testsuite/83289 (i386/sse2-init-v2di-2.c, i386/avx256-unaligned-load-1.c, i386/avx256-unaligned-store-*.c fails)

PR testsuite/83289
* gcc.target/i386/avx256-unaligned-load-1.c: Adjust for -dp
alternative numbers being 0 based instead of former 1 based.
* gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
* gcc.target/i386/sse2-init-v2di-2.c: Likewise.

From-SVN: r255427

6 years agotree-ssa-dce.c (simple_dce_from_worklist): Move and rename from tree-ssa-pre.c::remov...
Bin Cheng [Tue, 5 Dec 2017 15:42:58 +0000 (15:42 +0000)]
tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from tree-ssa-pre.c::remove_dead_inserted_code.

* tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
tree-ssa-pre.c::remove_dead_inserted_code.
* tree-ssa-dce.h: New file.
* tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
(remove_dead_inserted_code): Move and rename to function
tree-ssa-dce.c::simple_dce_from_worklist.
(pass_pre::execute): Update use.

From-SVN: r255426

6 years agoCorrect noexcept mismatch in declarations.
Jason Merrill [Tue, 5 Dec 2017 15:23:26 +0000 (10:23 -0500)]
Correct noexcept mismatch in declarations.

2017-12-05  Jason Merrill  <jason@redhat.com>
    Jonathan Wakely  <jwakely@redhat.com>

* include/bits/fs_fwd.h (copy, copy_file): Remove noexcept.
(permissions): Add noexcept.
* include/bits/fs_ops.h (permissions): Add noexcept.
* libsupc++/eh_throw.cc (__cxa_init_primary_exception): Add
_GLIBCXX_NOTHROW.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r255425

6 years agore PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize)
Richard Biener [Tue, 5 Dec 2017 15:10:23 +0000 (15:10 +0000)]
re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize)

2017-12-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83277
* graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
to code-gen liveout vars.

* gcc.dg/graphite/pr83277.c: New testcase.

From-SVN: r255424

6 years ago[AArch64] Fix some define_insn_and_split conditions
Richard Sandiford [Tue, 5 Dec 2017 14:40:37 +0000 (14:40 +0000)]
[AArch64] Fix some define_insn_and_split conditions

The split conditions for aarch64_simd_bsldi_internal and
aarch64_simd_bsldi_alt were:

  "&& GP_REGNUM_P (REGNO (operands[0]))"

But since they (deliberately) can be split before reload, the operand
matched by register_operand can be a SUBREG rather than a REG.  This
triggered a boostrap failure building libgcc with rtl checking enabled.

While checking other define_insn_and_splits for the same thing,
I noticed a couple of SIMD ones were missing the leading "&&",
meaning that they would trigger even without TARGET_SIMD.  That
shouldn't matter in practice, since combine should never end up
generating matching rtl, but...

2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
(aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
(aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
split condition.

From-SVN: r255423

6 years agogcc: xtensa: enable address sanitizer
Max Filippov [Tue, 5 Dec 2017 14:17:35 +0000 (14:17 +0000)]
gcc: xtensa: enable address sanitizer

gcc/
2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
function.
(TARGET_ASAN_SHADOW_OFFSET): New macro definition.
* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
ASAN is enabled.

From-SVN: r255420

6 years agore PR testsuite/83281 (libgomp.oacc-c-c++-common/reduction-cplx-flt.c and reduction...
Jakub Jelinek [Tue, 5 Dec 2017 13:34:41 +0000 (14:34 +0100)]
re PR testsuite/83281 (libgomp.oacc-c-c++-common/reduction-cplx-flt.c and reduction-cplx-dbl.c fail starting with r255335)

PR testsuite/83281
* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c (main): Use
j suffix instead of i.
* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c (main):
Likewise.

From-SVN: r255418

6 years agore PR tree-optimization/83283 (Casting from boolean to unsigned char to enum returns...
Jakub Jelinek [Tue, 5 Dec 2017 13:33:52 +0000 (14:33 +0100)]
re PR tree-optimization/83283 (Casting from boolean to unsigned char to enum returns incorrect results)

PR tree-optimization/83283
* g++.dg/torture/pr83283.C: New test.

From-SVN: r255417

6 years agotimevar.def (TV_TREE_RECIP, [...]): Add.
Richard Biener [Tue, 5 Dec 2017 13:19:45 +0000 (13:19 +0000)]
timevar.def (TV_TREE_RECIP, [...]): Add.

2017-12-05  Richard Biener   <rguenther@suse.de>

* timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL):
Add.
* tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
(pass_data_cse_sincos): Use TV_TREE_SINCOS.
(pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.

From-SVN: r255415

6 years agosem_util.adb (Contains_Refined_State): Remove.
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:45:35 +0000 (12:45 +0000)]
sem_util.adb (Contains_Refined_State): Remove.

gcc/ada/

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

* sem_util.adb (Contains_Refined_State): Remove.

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A
predicate cannot apply to a formal type.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

* exp_unst.ads: Fix typos.

2017-12-05  Jerome Lambourg  <lambourg@adacore.com>

* libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in
QNX.  At startup, the first mutex created has a non-zero ceiling
priority whatever its actual policy. This makes some tests fail
(c940013 for example).

2017-12-05  Bob Duff  <duff@adacore.com>

* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call
Expand_Cleanup_Actions for N_Extended_Return_Statement.
* exp_ch7.adb (Expand_Cleanup_Actions): Handle
N_Extended_Return_Statement by transforming the statements into a
block, and (indirectly) calling Expand_Cleanup_Actions on the block.
It's too hard for Expand_Cleanup_Actions to operate directly on the
N_Extended_Return_Statement, because it has a different structure than
the other node kinds that Expand_Cleanup_Actions.
* exp_util.adb (Requires_Cleanup_Actions): Add support for
N_Extended_Return_Statement.  Change "when others => return False;" to
"when others => raise ...;" so it's clear what nodes this function
handles.  Use named notation where appropriate.
* exp_util.ads: Mark incorrect comment with ???.

2017-12-05  Javier Miranda  <miranda@adacore.com>

* exp_ch9.adb (Install_Private_Data_Declarations): Add missing
Debug_Info_Needed decoration of internally generated discriminal
renaming declaration.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

* exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on
nested subprograms.

2017-12-05  Sergey Rybin  <rybin@adacore.com>

* doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore'
option for gnatmetric, gnatpp, gnat2xml, and gnattest.

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

* sem_util.adb (Contains_Refined_State): Remove.

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

* rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for
Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for
Ada.Calendar.Clock_Time).

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Is_Private_Overriding): If the candidate private
subprogram is overloaded, scan the list of homonyms in the same
scope, to find the inherited operation that may be overridden
by the candidate.
* exp_ch11.adb, exp_ch7.adb: Minor reformatting.

2017-12-05  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
Init_Assignment is rewritten, we need to set Assignment_OK on the new
node.  Otherwise, we will get spurious errors when initializing via
assignment statement.

gcc/testsuite/

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/private_overriding.adb: New testcase.

From-SVN: r255414

6 years ago[multiple changes]
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:22:46 +0000 (12:22 +0000)]
[multiple changes]

2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb: Update the terminology and switch sections.
(Check_SPARK_Model_In_Effect): New routine.
(Check_SPARK_Scenario): Verify the model in effect for SPARK.
(Process_Conditional_ABE_Call_SPARK): Verify the model in effect for
SPARK.
(Process_Conditional_ABE_Instantiation_SPARK): Verify the model in
effect for SPARK.
(Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model
in effect for SPARK.

2017-12-05  Nicolas Setton  <setton@adacore.com>

* terminals.c (__gnat_setup_child_communication): As documented,
__gnat_setup_child_communication should not terminate - it is intended
to be used as the child process of a call to fork().  However, execvp
might actually return in some cases, for instance when attempting to
run a 32-bit binary on a 64-bit Linux distribution when the
compatibility packages are not installed. In these cases, exit the
program to conform to the documentation.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

* libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface
update.

2017-12-05  Gary Dismukes  <dismukes@adacore.com>

* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix
and reformatting.
* gnat_ugn.texi: Regenerate.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

* sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep
on access to subprogram types with foreign convention.

2017-12-05  Yannick Moy  <moy@adacore.com>

* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's
Guide description of default settings of warnings.

From-SVN: r255413

6 years ago[multiple changes]
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:12:22 +0000 (12:12 +0000)]
[multiple changes]

2017-12-05  Olivier Hainque  <hainque@adacore.com>

* s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end
of section. Add comments explaining the rationale of the computation.

2017-12-05  Bob Duff  <duff@adacore.com>

* exp_ch11.adb: Minor refactoring.

2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

* debug.adb: Add debug switches d_a, d_e, and d_p, along with
documentation.
(Set_Underscored_Debug_Flag): New routine.
* debug.ads: Add the flags for all underscore switches.
(Set_Underscored_Debug_Flag): New routine.
* einfo.adb: Flag303 is now Suppress_Elaboration_Warnings.
(Suppress_Elaboration_Warnings): New routine.
(Set_Suppress_Elaboration_Warnings): New routine.
(Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings.
* einfo.ads: Add new flag Suppress_Elaboration_Warnings.
(Suppress_Elaboration_Warnings): New routine along with pragma Inline.
(Set_Suppress_Elaboration_Warnings): New routine along with pragma
Inline.
* exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the
legacy elaboration model.
(Default_Initialize_Object): Restore the behavior of the legacy
elaboration model.
* exp_ch9.adb: Add with and use clause for Sem_Elab.
(Build_Task_Activation_Call): Restore the behavior of the legacy
elaboration model.
* frontend.adb (Frontend): Restore the behavior of the legacy
elaboration model.
* opt.ads: Add new flags Legacy_Elaboration_Checks and
Relaxed_Elaboration_Checks, along with documentation.
* sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the
legacy elaboration model.
* sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy
elaboration model.
* sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of
the legacy elaboration model.
* sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy
elaboration model.
* sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior
of the legacy elaboration model.
(Analyze_Package_Instantiation): Restore the behavior of the legacy
elaboration model.
(Analyze_Subprogram_Instantiation): Restore the behavior of the legacy
elaboration model.
* sem_elab.adb: Update the documentation of the Processing phase.
Update the documentation on elaboration-related compilation
switches.  Update the documentation on adding a new target.  Add
Processing_Attributes which represent the state of the Processing
phase.  Resurrect the previous elaboration model as "legacy elaboration
model".
(Build_Call_Marker): This routine does not function when the legacy
elaboration model is in effect. Do not consider entry calls and requeue
statements when debug flag d_e is in effect. Do not consider calls to
subprograms which verify the runtime semantics of certain assertion
pragmas when debug flag d_p is in effect.
(Build_Variable_Reference_Marker): This routine does not function when
the legacy elaboration model is in effect.
(Check_Elaboration_Scenarios): This routine does not function when the
legacy elaboration model is in effect.
(Ensure_Prior_Elaboration): The various flags have now been replaced
with a state. Do not generate implicit Elaborate[_All] pragmas when
their creation has been suppressed.
(Ensure_Prior_Elaboration_Static): The with clause is marked based on
the requested pragma, not on the nature of the scenario.
(In_External_Context): Removed.
(Is_Assertion_Pragma_Target): New routine.
(Is_Potential_Scenario): Stop the traversal of a task body when
reaching an accept or select statement, and debug switch d_a is in
effect.
(Kill_Elaboration_Scenario): This routine does not function when the
legacy elaboration model is in effect.
(Process_Activation_Generic): The various flags have now been replaced
with a state.
(Process_Conditional_ABE): The various flags have now been replaced
with a state.
(Process_Conditional_ABE_Access): The various flags have now been
replaced with a state.
(Process_Conditional_ABE_Activation_Impl): The various flags have now
been replaced with a state. Do not process an activation call which
activates a task whose type is defined in an external instance, and
debug switch dL is in effect. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Call): The various flags have now been
replaced with a state. Do not process a call which invokes a subprogram
defined in an external instance, and debug switch dL is in effect.
(Process_Conditional_ABE_Call_Ada): The various flags have now been
replaced with a state. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Call_SPARK): The various flags have now been
replaced with a state.
(Process_Conditional_ABE_Instantiation): The various flags have now
been replaced with a state.
(Process_Conditional_ABE_Instantiation_Ada): The various flags have now
been replaced with a state. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Instantiation_SPARK): The various flags have
now been replaced with a state.
(Process_Guaranteed_ABE_Activation_Impl): The various flags have now
been replaced with a state.
(Process_Single_Activation): The various flags have now been replaced
with a state.
(Record_Elaboration_Scenario): This routine does not function when the
legacy elaboration model is in effect.
(Traverse_Body): The various flags have now been replaced with a state.
* sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy
elaboration model".
* sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy
elaboration model.
* sem_res.adb (Resolve_Call): Restore the behavior of the legacy
elaboration model.
(Resolve_Entity_Name): Restore the behavior of the legacy elaboration
model.
* sem_util.adb (Mark_Elaboration_Attributes): This routine does not
function when the legacy elaboration model is in effect.
* sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check.
(No_Elaboration_Check): New routine.
(Set_Is_Known_Guaranteed_ABE): Update the assertion check.
(Set_No_Elaboration_Check): New routine.
* sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE
along with occurrences in nodes.  Add new flag No_Elaboration_Check
along with occurrences in nodes.
* switch-c.adb (Scan_Front_End_Switches): Add processing for debug
switches with underscores.  Add processing for switches -gnatH and
-gnatJ.
* usage.adb (Usage): Add output for switches -gnatH and -gnatJ.
* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
documentation to include the legacy and relaxed elaboration models.
* gnat_ugn.texi: Regenerate.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

* doc/gnat_ugn/platform_specific_information.rst: Minor edit.
Improve doc on required packages for linux 32bits.

2017-12-05  Doug Rupp  <rupp@adacore.com>

* tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit.

2017-12-05  Javier Miranda  <miranda@adacore.com>

* checks.adb (Generate_Range_Check): Force evaluation of the node in
more cases.  This patch was written to improve the code generated by
the CCG compiler but it is enabled for all targets since double
evaluation is always a potential source of inefficiency.

2017-12-05  Gary Dismukes  <dismukes@adacore.com>

* doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete
-fdump-xref switch.

From-SVN: r255412

6 years ago[multiple changes]
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:58:13 +0000 (11:58 +0000)]
[multiple changes]

2017-12-05  Eric Botcazou  <ebotcazou@adacore.com>

* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the
iteration scheme throughout, except for the new loop statement(s).

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

* exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the
assignment if it is part of an Iterated_Component_Association: the
analysis needs to take place once the loop structure is analyzed and
the loop parameter made visible, because references to it typically
appear in the corresponding expression.  This is necessary if the
expression is an aggregate, because previous pre-analysis of the
expression does not handle nested aggregates properly.

2017-12-05  Bob Duff  <duff@adacore.com>

* sem_res.adb (Resolve_Allocator): Avoid coextension processing for an
allocator that is the expansion of a build-in-place function call.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

libgnat/
* s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of
possibly adjusting the lookup address by a load address, expect
a extra argument through which the load address can be conveyed
separately.
(Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the
retrieved load address to Init_Module.
* s-tsmona__linux.adb (Get): Honor the new interface.
* s-tsmona__mingw.adb (Get): Likewise.
* s-dwalin.ads: Adjust comments to be explicit about which
addresses are from module info and which are run-time addresses,
offsetted by the module load address.
* s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide.
Do not alter the module Low and High (relative) addresses.
(Is_Inside): Improve documentation regarding the kinds of addresses
at hand and correct the test.
(Symbolic_Traceback): Use separate variables with explicit names
for the address in traceback (run-time value) and the address to
lookup within the shared object (module-relative). Adjust the
computation of address passed to Symbolic_Address for symbolization.

From-SVN: r255411

6 years ago[multiple changes]
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:46:16 +0000 (11:46 +0000)]
[multiple changes]

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

* opt.ads (Expand_Nonbinary_Modular_Ops): New flag.
* exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use
Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that
other back-ends can also benefit from the front-end expansion. Remove
test for Modify_Tree_For_C in all callers to better share code.
* gnat1drv.adb (Adjust_Global_Switches): Set
Expand_Nonbinary_Modular_Ops when generating C code.

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

* exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop
parameter becomes invisible after analyzing the loop, which has been
rewritten as a while-loop.

2017-12-05  Doug Rupp  <rupp@adacore.com>

* vxaddr2line.adb: Revise and enhance for new ports, remove dead ports,
and update for 64bit ports.

From-SVN: r255410

6 years ago[multiple changes]
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:38:00 +0000 (11:38 +0000)]
[multiple changes]

2017-12-05  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix
instead of the full name.
* sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals
in the case of an instance of a generic.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

(Adjust_Global_Switches): Create an alias GNAT_Annotate to map to
pragma Annotate.

From-SVN: r255409

6 years agoRTEMS/Ada: Define EH_MECHANISM
Sebastian Huber [Tue, 5 Dec 2017 10:46:42 +0000 (10:46 +0000)]
RTEMS/Ada: Define EH_MECHANISM

Without this definition I got the following error:

<...>/xgcc <...>  -c -g -O2   -W -Wall -gnatpg -nostdinc  -g -fno-inline \
      -fno-toplevel-reorder -O1  a-except.adb -o a-except.o
a-exexpr.adb:38:06: "System.Exceptions.Machine" is not a predefined library unit
a-exexpr.adb:38:06: "Ada.Exceptions (body)" depends on "Ada.Exceptions.Exception_Propagation (body)"
a-exexpr.adb:38:06: "Ada.Exceptions.Exception_Propagation (body)" depends on "System.Exceptions.Machine (spec)"
../gcc-interface/Makefile:2661: recipe for target 'a-except.o' failed

gcc/ada

* gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM.

From-SVN: r255408

6 years agoAvoid -Werror=format-overflow error in dbxout.c (dbxout_block) on 64-bit Solaris...
Rainer Orth [Tue, 5 Dec 2017 10:03:56 +0000 (10:03 +0000)]
Avoid -Werror=format-overflow error in dbxout.c (dbxout_block) on 64-bit Solaris/SPARC

* dbxout.c (dbxout_block): Grow buf to 30 bytes.

From-SVN: r255406

6 years agoinvoke.texi: Document the options.
Martin Liska [Tue, 5 Dec 2017 09:23:25 +0000 (10:23 +0100)]
invoke.texi: Document the options.

gcc/
* doc/invoke.texi: Document the options.
* flag-types.h (enum sanitize_code): Add
SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
* ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
* opts.c: Define new sanitizer options.
* sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
(BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
gcc/c/
* c-typeck.c (pointer_diff): Add new argument and instrument
pointer subtraction.
(build_binary_op): Similar for pointer comparison.
gcc/cp/
* typeck.c (pointer_diff): Add new argument and instrument
pointer subtraction.
(cp_build_binary_op): Create compound expression if doing an
instrumentation.
gcc/testsuite/
* c-c++-common/asan/pointer-compare-1.c: New test.
* c-c++-common/asan/pointer-compare-2.c: New test.
* c-c++-common/asan/pointer-subtract-1.c: New test.
* c-c++-common/asan/pointer-subtract-2.c: New test.
* c-c++-common/asan/pointer-subtract-3.c: New test.
* c-c++-common/asan/pointer-subtract-4.c: New test.
libsanitizer/
* asan/asan_descriptions.cc: Cherry-pick upstream r319668.
* asan/asan_descriptions.h: Likewise.
* asan/asan_report.cc: Likewise.
* asan/asan_thread.cc: Likewise.
* asan/asan_thread.h: Likewise.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r255404

6 years agocp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if -O0...
Jakub Jelinek [Tue, 5 Dec 2017 09:17:32 +0000 (10:17 +0100)]
cp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if -O0 or if -fsanitize=unreachable.

* cp-gimplify.c (cp_maybe_instrument_return): Don't add
__builtin_unreachable if -O0 or if -fsanitize=unreachable.

* g++.dg/missing-return.C: Add -O to dg-options.

From-SVN: r255403

6 years agoEnable VNNI support [1/5]
Julia Koval [Tue, 5 Dec 2017 07:11:58 +0000 (08:11 +0100)]
Enable VNNI support [1/5]

gcc/
* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
(ix86_handle_option): Handle -mavx512vnni.
* config/i386/cpuid.h (bit_AVX512VNNI): New bit.
* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
* config/i386/i386-c (__AVX512VNNI__): New.
* config/i386/i386.c (ix86_target_string): Handle new option.
(ix86_valid_target_attribute_inner_p): Handle new option.
* config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
* config/i386/i386.opt (mavx512vnni): New option.

From-SVN: r255401

6 years agocompiler: no nil check needed for closure var dereferences
Ian Lance Taylor [Tue, 5 Dec 2017 02:03:19 +0000 (02:03 +0000)]
compiler: no nil check needed for closure var dereferences

    Add the "no nil check needed" annotation to the dereference operations
    created in Parse::enclosing_var_reference (this is safe since the
    closure object is under control of the compiler, and pointer fields in
    it will always be non-nil).

    Reviewed-on: https://go-review.googlesource.com/81795

From-SVN: r255400

6 years agoMakefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and libatomic_la_LIBADD.
Steve Ellcey [Tue, 5 Dec 2017 00:49:09 +0000 (00:49 +0000)]
Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and libatomic_la_LIBADD.

2017-12-04  Steve Ellcey  <sellcey@cavium.com>

* Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and
libatomic_la_LIBADD.
* config/linux/aarch64/host-config.h: New file.
* configure.ac (IFUNC_RESOLVER_ARGS): Define.
(ARCH_AARCH64_LINUX): New conditional for IFUNC builds.
* configure.tgt (aarch64): Set ARCH and try_ifunc.
(aarch64*-*-linux*) Update config_path.
(aarch64*-*-linux*) Set IFUNC_RESOLVER_ARGS.
* libatomic_i.h (GEN_SELECTOR): Add IFUNC_RESOLVER_ARGS argument.
* Makefile.in: Regenerate.
* auto-config.h.in: Regenerate.
* configure: Regenerate.

From-SVN: r255399

6 years agoDaily bump.
GCC Administrator [Tue, 5 Dec 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255398

6 years agore PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
Jan Hubicka [Mon, 4 Dec 2017 23:59:11 +0000 (00:59 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)

PR target/81616
* athlon.md: Disable for generic.
* haswell.md: Enable for generic.
* i386.c (ix86_sched_init_global): Add core hooks for generic.
* x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
to 4.
(ix86_adjust_cost): Move generic to haswell path.

From-SVN: r255395

6 years agosparc.c (sparc_do_work_around_errata): Use mem_ref instead of MEM_P in a couple more...
Eric Botcazou [Mon, 4 Dec 2017 23:13:56 +0000 (23:13 +0000)]
sparc.c (sparc_do_work_around_errata): Use mem_ref instead of MEM_P in a couple more places.

* config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
instead of MEM_P in a couple more places.  Fix formatting issues.

From-SVN: r255393

6 years agoFix warnings in <bits/regex_compiler.tcc>
Jonathan Wakely [Mon, 4 Dec 2017 23:08:22 +0000 (23:08 +0000)]
Fix warnings in <bits/regex_compiler.tcc>

* include/bits/regex_compiler.tcc: Use C-style comment to work around
PR preprocessor/61638.
(__INSERT_REGEX_MATCHER): Replace GNU extension with __VA_ARGS__.

From-SVN: r255392

6 years agoFix -Wunused warnings in libstdc++ headers
Jonathan Wakely [Mon, 4 Dec 2017 23:07:39 +0000 (23:07 +0000)]
Fix -Wunused warnings in libstdc++ headers

* config/io/basic_file_stdio.h (__basic_file): Remove name of unused
parameter.
* include/bits/boost_concept_check.h: Add pragmas to disable
-Wunused-local-typedef warnings.
* include/bits/codecvt.h (codecvt_byname<char16_t, char, mbstate_t>)
(codecvt_byname<char32_t, char, mbstate_t>): Remove name of unused
parameter.
* include/bits/locale_facets_nonio.tcc (time_get::do_get_weekday)
(time_get::do_get_monthname, time_get::do_get_year): Remove unused
variables.
* include/std/bitset (_Base_bitset<0>::_M_getword): Remove name of
unused parameter.
* include/std/streambuf (_IsUnused): Define.
(basic_streambuf::imbue, basic_streambuf::pbackfail)
(basic_streambuf::overflow): Add macro to unused parameters.
* testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error.

From-SVN: r255391

6 years agoPR c++/83273 - constexpr if allows non-constant condition
Jason Merrill [Mon, 4 Dec 2017 22:52:07 +0000 (17:52 -0500)]
PR c++/83273 - constexpr if allows non-constant condition

* semantics.c (finish_if_stmt_cond): Use require_constant_expression
rather than is_constant_expression.
* constexpr.c (potential_constant_expression_1) [LAMBDA_EXPR]: Allow
in C++17.

From-SVN: r255390

6 years agoFix typos in riscv register save/restore.
Jim Wilson [Mon, 4 Dec 2017 22:08:47 +0000 (22:08 +0000)]
Fix typos in riscv register save/restore.

gcc/
* config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
instead of GP_REG_LAST-1.
(riscv_adjust_libcall_cfi_prologue): Likewise.
(riscv_adjust_libcall_cri_epilogue): Likewise.
* config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
comment.

From-SVN: r255389

6 years agoFix missing newlines from local-pure-const pass dump
Luis Machado [Mon, 4 Dec 2017 17:04:18 +0000 (17:04 +0000)]
Fix missing newlines from local-pure-const pass dump

I noticed the debugging output from local-pure-const pass is missing a
newline in a couple places, leading to this:

 local analysis of main
   scanning: i ={v} 0;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure  scanning: j ={v} 20;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure  scanning: vol.0_10 ={v} i;
    Volatile stmt is not const/pure

It should've been:

 local analysis of main
   scanning: i ={v} 0;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure
   scanning: j ={v} 20;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure
   scanning: vol.0_10 ={v} i;
    Volatile stmt is not const/pure

gcc/ChangeLog:

2017-12-04  Luis Machado  <luis.machado@linaro.org>

* ipa-pure-const.c (check_decl): Add missing newline.
(state_from_flags): Likewise.

From-SVN: r255388

6 years agore PR tree-optimization/78496 (Missed opportunities for jump threading)
Jeff Law [Mon, 4 Dec 2017 16:14:24 +0000 (09:14 -0700)]
re PR tree-optimization/78496 (Missed opportunities for jump threading)

PR tree-optimizatin/78496
* gimple-ssa-evrp-analyze.h
(evrp_range_analyzer::get_vr_values): Simplify.
* gimple-ssa-evrp-analyze.c: Corresponding changes.
* tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
and gimple-ssa-evrp-analyze.h.
(dom_opt_dom_walker class): Add evrp_range_analyzer member.
(simplify_stmt_for_jump_threading): Copy a blob of code from
tree-vrp.c to use ranges to simplify statements.
(dom_opt_dom_walker::before_dom_children): Call
evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
(dom_opt_dom_walker::after_dom_children): Similarly for
evrp_range_analyzer::leave.
(dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
conditionals.

PR tree-optimization/78496
* gcc.dg/builtin-unreachable-6.c: Disable DOM.
* gcc.dg/builtin-unreachable-6a.c: New test.
* gcc.dg/tree-ssa/20030922-1.c: No longer XFAIL.
* gcc.dg/ssa-dom-branch-1.c: Tweak expected output.

From-SVN: r255387

6 years ago* gimple-ssa-evrp-analyze.c
Jeff Law [Mon, 4 Dec 2017 16:10:49 +0000 (09:10 -0700)]
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::extract_range_from_stmt):  Always use
vr_values::update_value_range so preexisting range info is
medged with new range info, even if the new range is VR_VARYING.

From-SVN: r255386

6 years agocombine: Remove use_crosses_set_p
Segher Boessenkool [Mon, 4 Dec 2017 15:38:20 +0000 (16:38 +0100)]
combine: Remove use_crosses_set_p

This removes use_crosses_set_p, and uses modified_between_p instead
everywhere it was used.  This improves optimisation.

* combine.c: Adjust comment.
(use_crosses_set_p): Delete.
(can_combine_p): Use modified_between_p instead of use_crosses_set_p.
(try_combine): Ditto.

From-SVN: r255384

6 years agore PR tree-optimization/83255 ([graphite] Wrong code w/ -O1 -floop-nest-optimize)
Richard Biener [Mon, 4 Dec 2017 14:04:36 +0000 (14:04 +0000)]
re PR tree-optimization/83255 ([graphite] Wrong code w/ -O1 -floop-nest-optimize)

2017-12-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83255
* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
Re-add zero-iteration check.

* gcc.dg/graphite/pr83255.c: New testcase.

From-SVN: r255382

6 years agoRTEMS/Ada: Account for 64-bit time_t
Sebastian Huber [Mon, 4 Dec 2017 13:36:19 +0000 (13:36 +0000)]
RTEMS/Ada: Account for 64-bit time_t

The Newlib time_t has now 64 bits for RTEMS.

gcc/ada

* gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb.
* libgnat/s-osprim__rtems.adb: New file.
* libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment.
(pthread_mutexattr_t): Likewise.
(pthread_rwlockattr_t): Likewise.
(pthread_rwlock_t): Likewise.
(time_t): Use 64-bit integer.

From-SVN: r255380

6 years agolra: Clobbers in a parallel are earlyclobbers (PR83245)
Segher Boessenkool [Mon, 4 Dec 2017 09:30:37 +0000 (10:30 +0100)]
lra: Clobbers in a parallel are earlyclobbers (PR83245)

The documentation (rtl.texi) says:

  When a @code{clobber} expression for a register appears inside a
  @code{parallel} with other side effects, the register allocator
  guarantees that the register is unoccupied both before and after that
  insn if it is a hard register clobber.

and at least the rs6000 backend relies on that (see PR83245).  This
patch restores that behaviour.

Registers that are also used as operands in the instruction are not
treated as earlyclobber, so such insns also still work (PR80818, an
s390 testcase).

PR rtl-optimization/83245
* lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
hard registers as earlyclobber, also if not in an asm.

From-SVN: r255377

6 years agore PR bootstrap/83265 (Bootstrap failure on powerpc64)
Segher Boessenkool [Mon, 4 Dec 2017 09:19:27 +0000 (10:19 +0100)]
re PR bootstrap/83265 (Bootstrap failure on powerpc64)

PR bootstrap/83265
Revert
2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>

PR target/43871
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
rs6000_cpu based on cpu_index, not tune_index.

From-SVN: r255376

6 years agore PR tree-optimization/83238 ([graphite] ICE in graphite_can_represent_scev, at...
Richard Biener [Mon, 4 Dec 2017 08:26:18 +0000 (08:26 +0000)]
re PR tree-optimization/83238 ([graphite] ICE in graphite_can_represent_scev, at graphite-scop-detection.c:971)

2017-12-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83238
* graphite-scop-detection.c (scop_detection::merge_sese): Make
code match comment, rejecting invalid SESE regions.

* gcc.dg/graphite/pr83238.c: New testcase.

From-SVN: r255375

6 years agoRequire effective target alloca for pr82875.c
Tom de Vries [Mon, 4 Dec 2017 06:58:22 +0000 (06:58 +0000)]
Require effective target alloca for pr82875.c

2017-12-04  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/pr82875.c: Require effective target alloca.

From-SVN: r255374

6 years agoDaily bump.
GCC Administrator [Mon, 4 Dec 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255372

6 years agopa.c (pa_legitimate_address_p): For scaled indexing...
John David Anglin [Sun, 3 Dec 2017 23:18:10 +0000 (23:18 +0000)]
pa.c (pa_legitimate_address_p): For scaled indexing...

* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
require base operand is a REG_POINTER prior to reload on targets
with non-equivalent space registers.

From-SVN: r255369

6 years agore PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)
Thomas Koenig [Sun, 3 Dec 2017 20:14:05 +0000 (20:14 +0000)]
re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)

2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/36313
* check.c (gfc_check_minval_maxval): Use
int_orLreal_or_char_check_f2003 for array argument.
* iresolve.c (gfc_resolve_maxval): Insert number in
function name for character arguments.
(gfc_resolve_minval): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
Fix comment.
(gfc_conv_intrinsic_minmaxval): Resort arguments and call library
function if dealing with a character function.

2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/36313
* Makefile.am: Add new files for character-valued
maxval and minval.
* Makefile.in: Regenerated.
* gfortran.map: Add new functions.
* m4/iforeach-s2.m4: New file.
* m4/ifunction-s2.m4: New file.
* m4/iparm.m4: Add intitval for minval and maxval.
* m4/maxval0s.m4: New file.
* m4/maxval1s.m4: New file.
* m4/minval0s.m4: New file.
* m4/minval1s.m4: New file.
        * generated/maxval0_s1.c: New file.
        * generated/maxval0_s4.c: New file.
        * generated/maxval1_s1.c: New file.
        * generated/maxval1_s4.c: New file.
        * generated/minval0_s1.c: New file.
        * generated/minval0_s4.c: New file.
        * generated/minval1_s1.c: New file.
        * generated/minval1_s4.c: New file.

2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/36313
* gfortran.dg/maxval_char_1.f90: New test.
* gfortran.dg/maxval_char_2.f90: New test.
* gfortran.dg/maxval_char_3.f90: New test.
* gfortran.dg/maxval_char_4.f90: New test.
* gfortran.dg/minval_char_1.f90: New test.
* gfortran.dg/minval_char_2.f90: New test.
* gfortran.dg/minval_char_3.f90: New test.
* gfortran.dg/minval_char_4.f90: New test.

From-SVN: r255367

6 years agoFix typo in ChangeLog.
Jerry DeLisle [Sun, 3 Dec 2017 16:49:37 +0000 (16:49 +0000)]
Fix typo in ChangeLog.

From-SVN: r255366

6 years agore PR fortran/83191 (Writing a namelist with repeated complex numbers)
Jerry DeLisle [Sun, 3 Dec 2017 16:47:12 +0000 (16:47 +0000)]
re PR fortran/83191 (Writing a namelist with repeated complex numbers)

2017-12-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
            Dominique d'Humieres  <dominiq@lps.ens.fr>

        PR libgfortran/83191
        * io/transfer.c (list_formatted_read_scalar): Do not set
        namelist_mode bit here. (namelist_read): Likewise.
        (data_transfer_init): Clear the mode bit here.
        (finalize_transfer): Do set the mode bit just before any calls
        to namelist_read or namelist_write. It can now be referred to
        in complex_write.
        ^ io/write.c (write_complex): Suppress the leading blanks when
        namelist_mode bit is not set to 1.

        * gfortran.dg/namelist_95.f90: New test.

Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
From-SVN: r255365

6 years agoFix spelling error in log.
Jerry DeLisle [Sun, 3 Dec 2017 04:42:09 +0000 (04:42 +0000)]
Fix spelling error in log.

From-SVN: r255363

6 years agore PR fortran/83225 (runtime error in transfer.c)
Jerry DeLisle [Sun, 3 Dec 2017 03:26:09 +0000 (03:26 +0000)]
re PR fortran/83225 (runtime error in transfer.c)

2017-12-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/83225
* io/io.h (is_internal_unit): Use the unit_is_internal bit.
* io/transfer.c (data_transfer_init): Set the bit to true for
internal umits. Use that bit for checks for internal unit
initializations.
* io/unit.c (insert_unit): As a precaution, set the
internal_unit_kind to zero when a unit structure is first created.

From-SVN: r255362

6 years agoDaily bump.
GCC Administrator [Sun, 3 Dec 2017 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255361

6 years agoipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
Jan Hubicka [Sat, 2 Dec 2017 09:48:24 +0000 (10:48 +0100)]
ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.

* ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
(update_specialized_profile): Fix updating of counts.
(perhaps_add_new_callers): Likewise.

From-SVN: r255358

6 years agore PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
Jan Hubicka [Sat, 2 Dec 2017 09:22:41 +0000 (10:22 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)

PR target/81616
* x86-tune.def: Remove obsolette FIXMEs.
(X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
(X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
Enable for generic.
(X86_TUNE_PAD_RETURNS): Disable for generic.
* gcc.target/i386/pad-1.c: Compile for amdfam10.
* gcc.target/i386/align-limit.c: Likewise.

From-SVN: r255357

6 years agore PR tree-optimization/83170 (ICE: Segmentation fault - during GIMPLE pass: store...
Jakub Jelinek [Sat, 2 Dec 2017 07:58:57 +0000 (08:58 +0100)]
re PR tree-optimization/83170 (ICE: Segmentation fault - during GIMPLE pass: store-merging)

PR tree-optimization/83170
PR tree-optimization/83241
* gimple-ssa-store-merging.c
(imm_store_chain_info::try_coalesce_bswap): Update vuse field from
gimple_vuse (ins_stmt) in case it has changed.
(imm_store_chain_info::output_merged_store): Likewise.

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

From-SVN: r255356

6 years agotree-chkp.c (chkp_compute_bounds_for_assignment): Handle POINTER_DIFF_EXPR.
Jakub Jelinek [Sat, 2 Dec 2017 07:58:05 +0000 (08:58 +0100)]
tree-chkp.c (chkp_compute_bounds_for_assignment): Handle POINTER_DIFF_EXPR.

* tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
POINTER_DIFF_EXPR.

* gcc.target/i386/mpx/pointer-diff-1.c: New test.

From-SVN: r255355

6 years agore PR sanitizer/81212 (-Wreturn-type is disabled when used together with -fsanitize...
Jakub Jelinek [Sat, 2 Dec 2017 07:57:04 +0000 (08:57 +0100)]
re PR sanitizer/81212 (-Wreturn-type is disabled when used together with -fsanitize=return)

PR c++/81212
* tree-cfg.c (pass_warn_function_return::execute): Handle
__builtin_ubsan_handle_missing_return like __builtin_unreachable
with BUILTINS_LOCATION.

* g++.dg/ubsan/pr81212.C: New test.
* g++.dg/ubsan/return-1.C: Add -Wno-return-type to dg-options.
* g++.dg/ubsan/return-2.C: Likewise.
* g++.dg/ubsan/return-7.C: Likewise.

From-SVN: r255354

6 years agore PR target/78643 (ICE in convert_move, at expr.c:230)
Jakub Jelinek [Sat, 2 Dec 2017 07:54:47 +0000 (08:54 +0100)]
re PR target/78643 (ICE in convert_move, at expr.c:230)

PR target/78643
PR target/80583
* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
is BLKmode for vector field with vector raw mode, use TYPE_MODE
instead of DECL_MODE.

* gcc.target/i386/pr80583.c: New test.

From-SVN: r255353

6 years agoi386-protos.h (standard_sse_constant_opcode): Change last argument to rtx pointer.
Jakub Jelinek [Sat, 2 Dec 2017 07:37:50 +0000 (08:37 +0100)]
i386-protos.h (standard_sse_constant_opcode): Change last argument to rtx pointer.

* config/i386/i386-protos.h (standard_sse_constant_opcode): Change
last argument to rtx pointer.
* config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
depending on the chosen ISAs.
* config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
*movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
*movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
callers.
* config/i386/sse.md (mov<mode>_internal): Likewise.
* config/i386/mmx.md (*mov<mode>_internal): Likewise.

From-SVN: r255352

6 years agodoc update for -dp
Segher Boessenkool [Sat, 2 Dec 2017 02:03:19 +0000 (03:03 +0100)]
doc update for -dp

* doc/invoke.texi (-dp): Say that instruction cost is printed as well.

From-SVN: r255351

6 years agors6000: Improve fusion assembler output
Segher Boessenkool [Sat, 2 Dec 2017 01:33:39 +0000 (02:33 +0100)]
rs6000: Improve fusion assembler output

This improves the output for load and store fusion a little.  In most
cases it removes the comment output, because that makes the generated
assembler code hard to read, and equivalent info is available with -dp
anyway.  For the vector loads it puts the comment on the second insn,
where it doesn't interfere with other debug comments.

* config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
parameters from prototype.
* config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
parameters.  Don't print a comment.
(emit_fusion_gpr_load): Adjust.
(emit_fusion_load_store): Adjust.
* config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
* config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
comment on the second line.

gcc/testsuite/
* gcc.target/powerpc/fusion.c: Add -dp to options.  Adjust the expected
output.
* gcc.target/powerpc/fusion3.c: Ditto.
* gcc.target/powerpc/fusion4.c: Ditto.

From-SVN: r255350

6 years agors6000: Set rs6000_cpu correctly (PR43871)
Segher Boessenkool [Sat, 2 Dec 2017 01:23:41 +0000 (02:23 +0100)]
rs6000: Set rs6000_cpu correctly (PR43871)

We set rs6000_cpu based on tune_index, but it should be cpu_index.
This patch fixes it.

PR target/43871
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
rs6000_cpu based on cpu_index, not tune_index.

From-SVN: r255349

6 years agofinal: Improve output for -dp and -fverbose-asm
Segher Boessenkool [Sat, 2 Dec 2017 01:20:08 +0000 (02:20 +0100)]
final: Improve output for -dp and -fverbose-asm

This improves the assembler output (for -dp and -fverbose-asm) in
several ways.  It always prints the insn_cost.  It does not print
"[length = NN]" but "[c=NN l=NN]", to save space.  It does not add one
to the instruction alternative number (everything else starts counting
those at 0, too).  And finally, it tries to keep things lined up in
columns a bit better.

* final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
which_alternative instead of which_alternative + 1.
(output_asm_insn): Print an extra tab if the template is short.

From-SVN: r255348

6 years agoruntime: export cgoCheck functions
Ian Lance Taylor [Sat, 2 Dec 2017 00:46:00 +0000 (00:46 +0000)]
runtime: export cgoCheck functions

    The functions cgoCheckPointer and cgoCheckResult are called by code
    generated by cgo. That means that we need to export them using
    go:linkname, as otherwise they are local symbols. The cgo code
    currently uses weak references to only call the symbols if they are
    defined, which is why it has been working--the cgo code has not been
    doing any checks.

    Reviewed-on: https://go-review.googlesource.com/80295

From-SVN: r255347

6 years agocompiler: avoid GCC middle-end control warnings
Ian Lance Taylor [Sat, 2 Dec 2017 00:38:54 +0000 (00:38 +0000)]
compiler: avoid GCC middle-end control warnings

    GCC has started emitting "control reaches end of non-void function"
    warnings. Avoid them for Go by 1) marking the builtin function panic
    and the compiler-generated function __go_runtime_error as not
    returning and 2) adding a default case to the switch used for select
    statements that simply calls __builtin_unreachable.

    Fixes golang/go#22767

    Reviewed-on: https://go-review.googlesource.com/80416

* go-gcc.cc (Gcc_backend::Gcc_backend): Define
__builtin_unreachable.
(Gcc_backend::function): Add does_not_return parameter.

From-SVN: r255346

6 years agoDelete obsolete DWARF1 references.
Jim Wilson [Sat, 2 Dec 2017 00:24:36 +0000 (00:24 +0000)]
Delete obsolete DWARF1 references.

gcc/
* common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
comment.
* config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
* doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
reference.
* doc/tm.texi: Regenerate.

From-SVN: r255345

6 years agoDaily bump.
GCC Administrator [Sat, 2 Dec 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255344

6 years agore PR target/81959 (PowerPC __float128 optimization fails with integer PRE_INC addresses)
Michael Meissner [Fri, 1 Dec 2017 23:52:20 +0000 (23:52 +0000)]
re PR target/81959 (PowerPC __float128 optimization fails with integer PRE_INC addresses)

[gcc]
2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81959
* config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
whether we can allocate pseudos before trying to fix an address.
* config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
memory address is indexed or indirect.
(floatuns_<mode>si2_hw2): Likewise.

[gcct/testsuite]
2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81959
* gcc.target/powerpc/pr81959.c: New test.

From-SVN: r255341

6 years agocompiler: introduce size threshold for nil checks
Than McIntosh [Fri, 1 Dec 2017 23:12:13 +0000 (23:12 +0000)]
compiler: introduce size threshold for nil checks

    Add a new control variable to the Gogo class that stores the size
    threshold for nil checks. This value can be used to control the
    policy for deciding when a given deference operation needs a check and
    when it does not. A size threshold of -1 means that every potentially
    faulting dereference needs an explicit check (and branch to error
    call). A size threshold of K (where K > 0) means that if the size of
    the object being dereferenced is >= K, then we need a check.

    Reviewed-on: https://go-review.googlesource.com/80996

* go-c.h (go_create_gogo_args): Add nil_check_size_threshold
field.
* go-lang.c (go_langhook_init): Set nil_check_size_threshold.

From-SVN: r255340

6 years ago* doc/extend.texi: Mention C++14 library complex suffix.
Jason Merrill [Fri, 1 Dec 2017 21:17:32 +0000 (16:17 -0500)]
* doc/extend.texi: Mention C++14 library complex suffix.

From-SVN: r255339