gcc.git
6 years agopoly_int: IN_TARGET_CODE
Richard Sandiford [Sat, 16 Dec 2017 14:10:55 +0000 (14:10 +0000)]
poly_int: IN_TARGET_CODE

This patch makes each target-specifc TU define an IN_TARGET_CODE macro,
which is used to decide whether poly_int<1, C> should convert to C.

2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* doc/sourcebuild.texi: Document IN_TARGET_CODE.
* genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
target C file.
* genautomata.c (main): Likewise.
* genconditions.c (write_header): Likewise.
* genemit.c (main): Likewise.
* genextract.c (print_header): Likewise.
* genopinit.c (main): Likewise.
* genoutput.c (output_prologue): Likewise.
* genpeep.c (main): Likewise.
* genpreds.c (write_insn_preds_c): Likewise.
* genrecog.c (writer_header): Likewise.
* config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
* config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
* config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
* config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
* config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
* config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
* config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
* config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
* config/arc/arc.c (IN_TARGET_CODE): Likewise.
* config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
* config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
* config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
* config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
* config/arm/arm.c (IN_TARGET_CODE): Likewise.
* config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
* config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
* config/avr/avr.c (IN_TARGET_CODE): Likewise.
* config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
* config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
* config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
* config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
* config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
* config/cris/cris.c (IN_TARGET_CODE): Likewise.
* config/darwin.c (IN_TARGET_CODE): Likewise.
* config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
* config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
* config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
* config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
* config/frv/frv.c (IN_TARGET_CODE): Likewise.
* config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
* config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
* config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
* config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
* config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
* config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
* config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
* config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
* config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
* config/i386/i386.c (IN_TARGET_CODE): Likewise.
* config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
* config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
* config/i386/winnt.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
* config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
* config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
* config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
* config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
* config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
* config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
* config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
* config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
* config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
* config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
* config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
* config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
* config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
* config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
* config/mips/mips.c (IN_TARGET_CODE): Likewise.
* config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
* config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
* config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
* config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
* config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
* config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
* config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
* config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
* config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
* config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
* config/pa/pa.c (IN_TARGET_CODE): Likewise.
* config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
* config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
* config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
* config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
* config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
* config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
* config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
* config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
* config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
* config/rx/rx.c (IN_TARGET_CODE): Likewise.
* config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
* config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
* config/s390/s390.c (IN_TARGET_CODE): Likewise.
* config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
* config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
* config/sh/sh.c (IN_TARGET_CODE): Likewise.
* config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
* config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
* config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
* config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
* config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
* config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
* config/spu/spu.c (IN_TARGET_CODE): Likewise.
* config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
* config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
* config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
* config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
* config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
* config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
* config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
* config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
* config/v850/v850.c (IN_TARGET_CODE): Likewise.
* config/vax/vax.c (IN_TARGET_CODE): Likewise.
* config/visium/visium.c (IN_TARGET_CODE): Likewise.
* config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
* config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
* config/vms/vms.c (IN_TARGET_CODE): Likewise.
* config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255743

6 years agoMinor vn_reference_lookup_3 tweak
Richard Sandiford [Sat, 16 Dec 2017 14:09:04 +0000 (14:09 +0000)]
Minor vn_reference_lookup_3 tweak

The repeated checks for MEM_REF made this code hard to convert to
poly_ints as-is.  Hopefully the new structure also makes it clearer
at a glance what the two cases are.

2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
checks for MEM_REF.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255742

6 years agoAdd VEC_SERIES_EXPR and associated optab
Richard Sandiford [Sat, 16 Dec 2017 14:04:46 +0000 (14:04 +0000)]
Add VEC_SERIES_EXPR and associated optab

Similarly to the VEC_DUPLICATE_EXPR, this patch adds a tree code
equivalent of the VEC_SERIES rtx code: VEC_SERIES_EXPR.

2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* doc/generic.texi (VEC_SERIES_EXPR): Document.
* doc/md.texi (vec_series@var{m}): Document.
* tree.def (VEC_SERIES_EXPR): New tree code.
* tree.h (build_vec_series): Declare.
* tree.c (build_vec_series): New function.
* cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
* tree-pretty-print.c (dump_generic_node): Likewise.
* gimple-pretty-print.c (dump_binary_rhs): Likewise.
* tree-inline.c (estimate_operator_cost): Likewise.
* expr.c (expand_expr_real_2): Likewise.
* optabs-tree.c (optab_for_tree_code): Likewise.
* tree-cfg.c (verify_gimple_assign_binary): Likewise.
* fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
* expmed.c (make_tree): Handle VEC_SERIES.
* optabs.def (vec_series_optab): New optab.
* optabs.h (expand_vec_series_expr): Declare.
* optabs.c (expand_vec_series_expr): New function.
* tree-vect-generic.c (expand_vector_operations_1): Check that
the operands also have vector type.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255741

6 years agoAdd VEC_DUPLICATE_EXPR and associated optab
Richard Sandiford [Sat, 16 Dec 2017 14:03:30 +0000 (14:03 +0000)]
Add VEC_DUPLICATE_EXPR and associated optab

SVE needs a way of broadcasting a scalar to a variable-length vector.
This patch adds VEC_DUPLICATE_EXPR for when CONSTRUCTOR would be used
for fixed-length vectors; this is the tree equivalent of the existing
rtl code VEC_DUPLICATE.

The patch also adds a vec_duplicate_optab to go with VEC_DUPLICATE_EXPR.

2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hawyard@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
(VEC_COND_EXPR): Add missing @tindex.
* doc/md.texi (vec_duplicate@var{m}): Document.
* tree.def (VEC_DUPLICATE_EXPR): New tree codes.
* tree.c (build_vector_from_val): Add stubbed-out handling of
variable-length vectors, using VEC_DUPLICATE_EXPR.
(uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
* cfgexpand.c (expand_debug_expr): Likewise.
* tree-cfg.c (verify_gimple_assign_unary): Likewise.
* tree-inline.c (estimate_operator_cost): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
* fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
(test_vec_duplicate_folding): New function.
(fold_const_c_tests): Call it.
* optabs.def (vec_duplicate_optab): New optab.
* optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
* optabs.h (expand_vector_broadcast): Declare.
* optabs.c (expand_vector_broadcast): Make non-static.  Try using
vec_duplicate_optab.
* expr.c (store_constructor): Try using vec_duplicate_optab for
uniform vectors.
(expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255740

6 years agore PR target/83358 (division not converted with Intel tuning since r253934)
Markus Trippelsdorf [Sat, 16 Dec 2017 04:28:08 +0000 (04:28 +0000)]
re PR target/83358 (division not converted with Intel tuning since r253934)

2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>

PR target/83358
* config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
div/mod latencies a bit.

        PR target/83358
* gcc.target/i386/pr83358-1.c: New test.
* gcc.target/i386/pr83358-2.c: New test.

From-SVN: r255739

6 years agoos: pass -s to hostname on AIX
Ian Lance Taylor [Sat, 16 Dec 2017 01:49:54 +0000 (01:49 +0000)]
os: pass -s to hostname on AIX

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

From-SVN: r255738

6 years agosyscall: emulate Flock on AIX
Ian Lance Taylor [Sat, 16 Dec 2017 01:45:45 +0000 (01:45 +0000)]
syscall: emulate Flock on AIX

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

From-SVN: r255737

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

From-SVN: r255734

6 years agore PR middle-end/36550 (Wrong "may be used uninitialized" warning (conditional PHIs))
Jeff Law [Fri, 15 Dec 2017 22:35:51 +0000 (15:35 -0700)]
re PR middle-end/36550 (Wrong "may be used uninitialized" warning (conditional PHIs))

PR tree-optimization/36550
* tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
(mark_threaded_blocks): Rewrite code to avoid block copying when
optimizing for size.  Don't pessimize blocks which will be
copied, but all the statements will be dead.

PR tree-optimization/36550
* gcc.dg/tree-ssa/pr36550.c: New test.

From-SVN: r255731

6 years agore PR tree-optimization/81165 (Regression in GCC-8.0.0's optimizer)
Jeff Law [Fri, 15 Dec 2017 22:11:06 +0000 (15:11 -0700)]
re PR tree-optimization/81165 (Regression in GCC-8.0.0's optimizer)

PR tree-optimization/81165
* tree-ssa-threadupdate.c (uses_in_bb): New.
(estimate_threading_killed_stmts): New.
* tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
* tree-ssa-threadedge.c
(record_temporary_equivalences_from_stmts_at_dest): Expand limit
when its hit.

PR tree-optimization/81165
* gcc.dg/pr81165.c: New.

From-SVN: r255724

6 years agore PR c++/83205 (ICE on structured binding with ill-formed negative std::tuple_size...
Jakub Jelinek [Fri, 15 Dec 2017 21:40:45 +0000 (22:40 +0100)]
re PR c++/83205 (ICE on structured binding with ill-formed negative std::tuple_size<T>::value)

PR c++/83205
* decl.c (cp_finish_decomp): Handle the case when tsize is not
error_mark_node, but doesn't fit into uhwi.  Split up count != eltscnt
and !tree_fits_uhwi_p (tsize) error_at calls into error_n and inform_n
to handle plural forms properly.

* g++.dg/cpp1z/decomp3.C: Adjust for structured binding count
mismatch diagnostics split into error and warning with plural
forms.
* g++.dg/cpp1z/decomp10.C: Likewise.
* g++.dg/cpp1z/decomp32.C: New test.

From-SVN: r255706

6 years agore PR c++/81197 (ICE with structured binding and lifetime-extended temporaries)
Jakub Jelinek [Fri, 15 Dec 2017 21:39:20 +0000 (22:39 +0100)]
re PR c++/81197 (ICE with structured binding and lifetime-extended temporaries)

PR c++/81197
* cp-tree.h (cp_maybe_mangle_decomp): Declare.
* decl.c (cp_maybe_mangle_decomp): New function.
(cp_finish_decomp): Don't SET_DECL_ASSEMBLER_NAME here.
* parser.c (cp_convert_range_for,
cp_parser_decomposition_declaration): Call cp_maybe_mangle_decomp.
* pt.c (tsubst_expr): Likewise.
* mangle.c (find_decomp_unqualified_name): New function.
(write_unqualified_name): Handle DECL_DECOMPOSITION_P
where DECL_ASSEMBLER_NAME is already set.

* g++.dg/cpp1z/decomp34.C: New test.

From-SVN: r255705

6 years agore PR c++/80135 (ICE in output_constructor_regular_field, at varasm.c:4968)
Jakub Jelinek [Fri, 15 Dec 2017 20:20:00 +0000 (21:20 +0100)]
re PR c++/80135 (ICE in output_constructor_regular_field, at varasm.c:4968)

PR c++/80135
PR c++/81922
* typeck2.c (digest_init_r): Change nested argument type from bool to
int.  Use code instead of TREE_CODE (type) where possible.  If
nested == 2, diagnose initialization of flexible array member with
STRING_CST.  Pass nested to process_init_constructor.  Formatting fix.
(digest_init, digest_init_flags): Adjust digest_init_r caller.
(massage_init_elt): Add nested argument.  Pass 2 instead of 1 to
digest_init_r's nested argument if nested is non-zero.
(process_init_constructor_array): Add nested argument.  If nested == 2,
diagnose initialization of flexible array member with non-empty
braced enclosed list.  Pass nested to massage_init_elt.
(process_init_constructor_record, process_init_constructor_union): Add
nested argument, pass it to massage_init_elt.
(process_init_constructor): Add nested argument, pass it to
process_init_constructor_{array,record,union}.
* init.c (find_field_init): Renamed to ...
(find_flexarray_init): ... this.  Return NULL_TREE if init is
error_mark_node.  Don't look through nested CONSTRUCTORs.
(warn_placement_new_too_small): Adjust caller.

* g++.dg/warn/Wplacement-new-size-1.C (fBx1): Initialize nested
flexible array member only with {}.  Add dg-warning.
(fBx2, fBx3): Remove.
* g++.dg/warn/Wplacement-new-size-2.C (fBx1): Initialize nested
flexible array member only with {}.  Add dg-warning.
(fBx2, fBx3): Remove.
* g++.dg/warn/Wplacement-new-size-6.C: New test.
* g++.dg/ext/flexary13.C (main): Remove test for initialization
of nested flexible array member with non-empty initializer.
* g++.dg/ext/flexary25.C: New test.
* g++.dg/ext/flexary26.C: New test.
* g++.dg/ext/flexary27.C: New test.
* g++.dg/parse/pr43765.C: Expect diagnostics about initialization
of nested flexible array member with non-empty initializer.  Expect
C++2A diagnostics about mixing of designated and non-designated
initializers.

From-SVN: r255703

6 years agore PR c++/83217 (Compiler segfault: structured binding by reference to a templated...
Jakub Jelinek [Fri, 15 Dec 2017 19:41:45 +0000 (20:41 +0100)]
re PR c++/83217 (Compiler segfault: structured binding by reference to a templated type via a pointer)

PR c++/83217
* decl.c (cp_finish_decomp): If decl's type is REFERENCE_TYPE,
call complete_type (TREE_TYPE (type)).

* g++.dg/cpp1z/decomp33.C: New test.

From-SVN: r255702

6 years agore PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code)
Jakub Jelinek [Fri, 15 Dec 2017 17:51:36 +0000 (18:51 +0100)]
re PR tree-optimization/80631 (Compiling with -O3 -mavx2 gives wrong code)

PR tree-optimization/80631
* gcc.target/i386/avx2-pr80631.c: New test.

From-SVN: r255701

6 years agore PR tree-optimization/83410 (libgomp.graphite/force-parallel-4.c etc. FAIL)
Jeff Law [Fri, 15 Dec 2017 16:19:22 +0000 (09:19 -0700)]
re PR tree-optimization/83410 (libgomp.graphite/force-parallel-4.c etc. FAIL)

PR tree-optimization/83410
* tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
threads when parallelizing loops.

From-SVN: r255700

6 years agotree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields.
Jakub Jelinek [Fri, 15 Dec 2017 15:13:12 +0000 (16:13 +0100)]
tree-core.h (struct attribute_spec): Swap affects_type_identity and handler fields.

* tree-core.h (struct attribute_spec): Swap affects_type_identity and
handler fields.
* config/alpha/alpha.c (vms_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
* config/mips/mips.c (mips_attribute_table): Likewise.
* config/visium/visium.c (visium_attribute_table): Likewise.
* config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
* config/microblaze/microblaze.c (microblaze_attribute_table):
Likewise.
* config/spu/spu.c (spu_attribute_table): Likewise.
* config/mcore/mcore.c (mcore_attribute_table): Likewise.
* config/arc/arc.c (arc_attribute_table): Likewise.
* config/m68k/m68k.c (m68k_attribute_table): Likewise.
* config/v850/v850.c (v850_handle_interrupt_attribute,
v850_handle_data_area_attribute): Formatting fixes.
(v850_attribute_table): Swap affects_type_identity and handler
fields, adjust comments.
* config/m32r/m32r.c (m32r_attribute_table): Likewise.
* config/arm/arm.c (arm_attribute_table): Likewise.
* config/avr/avr.c (avr_attribute_table): Likewise.
* config/s390/s390.c (s390_attribute_table): Likewise.
* config/sh/sh.c (sh_attribute_table): Likewise.
* config/i386/i386.c (ix86_handle_cconv_attribute,
ix86_handle_callee_pop_aggregate_return): Formatting fixes.
(ix86_attribute_table): Swap affects_type_identity and handler
fields, adjust comments.
* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
* config/sparc/sparc.c (sparc_attribute_table): Likewise.
* config/m32c/m32c.c (m32c_attribute_table): Likewise.
* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
* config/ia64/ia64.c (ia64_attribute_table): Likewise.
* config/msp430/msp430.c (msp430_attribute_table): Likewise.
* config/rx/rx.c (rx_attribute_table): Likewise.
* config/cr16/cr16.c (cr16_attribute_table): Likewise.
* config/h8300/h8300.c (h8300_attribute_table): Likewise.
* config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
* config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
* config/bfin/bfin.c (bfin_attribute_table): Likewise.
* config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
* config/rl78/rl78.c (rl78_attribute_table): Likewise.
* config/nds32/nds32.c (nds32_attribute_table): Likewise.
* doc/plugins.texi (user_attr): Likewise.  Add NULL for
exclude.
* attribs.c (empty_attribute_table): Swap affects_type_identity and
handler fields.
(register_scoped_attributes, decl_attributes): Formatting fixes.
ada/
* gcc-interface/utils.c (gnat_internal_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
brig/
* brig-lang.c (brig_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
c-family/
* c-attribs.c (c_common_attribute_table,
c_common_format_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
cp/
* tree.c (cxx_attribute_table, std_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
fortran/
* f95-lang.c (gfc_attribute_table): Swap affects_type_identity
and handler fields, adjust comments.
lto/
* lto-lang.c (lto_attribute_table, lto_format_attribute_table): Swap
affects_type_identity and handler fields, adjust comments.
testsuite/
* g++.dg/plugin/attribute_plugin.c (user_attr): Swap
affects_type_identity and handler fields, add NULL for exclude.

From-SVN: r255699

6 years ago[PR C++/59930] template friend classes & default args
Nathan Sidwell [Fri, 15 Dec 2017 15:04:59 +0000 (15:04 +0000)]
[PR C++/59930] template friend classes & default args

https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01055.html
PR c++/59930
* decl.c (xref_tag_1): Correct comments about template friends and
default args.
* friend.c (make_friend_class): Move comments concerning
self-friendliness to code dealing with such.
* pt.c (check_default_tmpl_args): Deal with template friend
classes too.
(push_template_decl_real): Check default args for non-function
template friends.

PR c++/59930
* g++.dg/cpp0x/temp_default4.C: Adjust diagnostic.
* g++.old-deja/g++.pt/friend23.C: Likewise.
* g++.old-deja/g++.pt/friend24.C: Delete.

From-SVN: r255698

6 years agore PR tree-optimization/83269 (Wrong constant folding)
Jakub Jelinek [Fri, 15 Dec 2017 14:37:52 +0000 (15:37 +0100)]
re PR tree-optimization/83269 (Wrong constant folding)

PR tree-optimization/83269
* fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
subtraction in arg0's type if type is signed and arg0 is unsigned.
Formatting fix.

* gcc.c-torture/execute/pr83269.c: New test.

From-SVN: r255697

6 years agore PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)
Jakub Jelinek [Fri, 15 Dec 2017 14:36:26 +0000 (15:36 +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): Use @@0 instead of @0 and
convert? on @0 instead of convert.  Check type of @1, not @0.
((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
convert? on @0 instead of convert.  Check type of @1, not @0.
((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
only optimize if either both @1 and @2 types are narrower
precision, or both are wider or equal precision, and in the former
case only if both have undefined overflow.

* gcc.dg/pr81281-3.c: New test.

From-SVN: r255696

6 years agoexp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of the innermost...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 14:09:02 +0000 (14:09 +0000)]
exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of the innermost array instead of Esize of its component...

gcc/ada/

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

* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use Component_Size of
the innermost array instead of Esize of its component type to exclude
inappropriate array types, including packed array types.

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

* sem_prag.adb (Analyze_Input_Item): Allow concurrent types to appear
within the input list of Initializes. Remove the uses of Input_OK.

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

* exp_ch4.adb (Expand_N_In): Do not replace a membership test on a
scalar type with a validity test when the membership appears in a
predicate expression, to prevent a spurious error when predicate is
specified static.
* sem_ch13.adb (Build_Predicate_Functions): Add warning if a static
predicate, after constant-folding, reduces to True and is this
redundant.
* par-ch4.adb: Typo fixes and minor reformattings.

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

* sem_elab.adb (Ensure_Prior_Elaboration_Static): Mark the generated
with clause as being implicit for an instantiation in order to
circumvent an issue with 'W' and 'Z' line encodings in ALI files.

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

* sem_util.adb (Is_Potentially_Unevaluated): Detect further cases of
misuse of 'Old that appear within an expression that is potentially
unevaluated, when the prefix of the attribute does not statically
designate an object (e.g. a function call).

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

* sem_ch6.adb (Conformking_Types): Two incomplete types are conforming
when one of them is used as a generic actual, but only within an
instantiation.
* einfo.ads: Clarify use of flag Used_As_Generic_Actual.

2017-12-15  Justin Squirek  <squirek@adacore.com>

* sem_attr.adb (Resolve_Attribute): Modify check for aliased view on
prefix to use the prefix's original node to avoid looking at expanded
conversions for certain array types.

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

* sem_res.adb (Resolve_Membership_Op): Add warning on a membership
operation on a scalar type for which there is a user-defined equality
operator.

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

* doc/gnat_rm/implementation_defined_pragmas.rst: Add Ghost assertion
policy.

gcc/testsuite/

2017-12-15  Justin Squirek  <squirek@adacore.com>

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

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

* gnat.dg/incomplete6.adb, gnat.dg/incomplete6.ads: New testcase.

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

* gnat.dg/initializes.ads, gnat.dg/initializes.adb: New testcase.

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

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

From-SVN: r255695

6 years agore PR sanitizer/83388 (reference statement index not found error with -fsanitize...
Richard Biener [Fri, 15 Dec 2017 13:43:30 +0000 (13:43 +0000)]
re PR sanitizer/83388 (reference statement index not found error with -fsanitize=null)

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

PR lto/83388
* internal-fn.def (IFN_NOP): Add.
* internal-fn.c (expand_NOP): Do nothing.
* lto-streamer-in.c (input_function): Instead of removing
sanitizer calls replace them with IFN_NOP calls.

* gcc.dg/lto/pr83388_0.c: New testcase.

From-SVN: r255694

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 13:23:10 +0000 (13:23 +0000)]
[multiple changes]

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

* sem_prag.adb (Analyze_Initialization_Item): Remove the specialized
processing for a null initialization item. Such an item is always
illegal.

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

* types.ads, types.h, libgnat/a-except.adb, exp_ch11.adb
(PE_Build_In_Place_Mismatch): New reason code for raising when the
BIPalloc formal parameter is incorrect. This can happen if a compiler
bug causes a mismatch of build-in-place between caller and callee.
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
PE_Build_In_Place_Mismatch.

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

* exp_ch4.ads, exp_ch4.adb (Expand_N_Reduction_Expression): New
procedure.
* exp_util.adb (Insert_Actions): Handle N_Reduction_Expression.
* expander.adb (Expand): Call Expand_N_Reduction_Expression
* par-ch4.adb (P_Reduction_Expression): New procedure.
(P_Iterated_Component_Assoc_Or_Reduction): New precedure, extension of
P_Iterated_Component_Association.
(OK_Reduction_Expression_Parameter): New procedure.
(P_Aggregate_Or_Paren_Expr): Improve error message for malformed delta
aggregate.
* sem.adb (Analyze): Call Analyze_Reduction_Expression and
Analyze_Reduction_Expression_Parameter
* sinfo.ads, sinfo.adb: New node kinds N_Reduction_Expression and
N_Reduction_Expression_Parameter.
* sem_ch4.ads, sem_ch4.adb (Analyze_Reduction_Expression,
Analyze_Reduction_Expression_Parameter): New procedures.
* sem_res.adb (Resolve): Handle Reduction_Expression and
Reduction_Expression_Parameter
* sem_spark.adb: Dummy entries for Reduction_Expression and
Reduction_Expression_Parameter
* sprint.adb (Sprint_Node_Actual): Print Reduction_Expression,
Reduction_Expression_Parameter

From-SVN: r255693

6 years agoMake dse.c use offset/width instead of start/end
Richard Sandiford [Fri, 15 Dec 2017 13:12:25 +0000 (13:12 +0000)]
Make dse.c use offset/width instead of start/end

store_info and read_info_type in dse.c represented the ranges as
start/end, but a lot of the internal code used offset/width instead.
Using offset/width throughout fits better with the poly_int.h
range-checking functions.

2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* dse.c (store_info, read_info_type): Replace begin and end with
offset and width.
(print_range): New function.
(set_all_positions_unneeded, any_positions_needed_p)
(check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
accordingly.
(record_store): Likewise.  Optimize the case in which all positions
are unneeded.
(get_stored_val): Replace read_begin and read_end with read_offset
and read_width.
(replace_read): Update call accordingly.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255692

6 years agogimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
Bin Cheng [Fri, 15 Dec 2017 12:22:24 +0000 (12:22 +0000)]
gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.

* gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
(loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
(loop_cand::loop_cand): Initialize above members.
(loop_cand::supported_operations): Delete.
(loop_cand::can_interchange_p): Inline above function.
(loop_cand::classify_simple_reduction): Record number of constant
initialized simple reductions.
(should_interchange_loops): New parameters.  Check stmt cost of loops
to be interchange.
(tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
Update call to should_interchange_loops.
(should_interchange_loop_nest): Update call to
should_interchange_loops.

From-SVN: r255691

6 years agoeinfo.ads: Comment fix.
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:34:47 +0000 (11:34 +0000)]
einfo.ads: Comment fix.

gcc/ada/

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

* einfo.ads: Comment fix.

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

* s-vercon.adb: Minor style fixes.

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

* sem_ch6.adb (Freeze_Expr_Types): Do not emit a freeze node for an
itype that is the type of a discriminant-dependent component.

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

* sem_prag.adb (Analyze_Part_Of): The context-specific portion of the
analysis is now directed to several specialized routines.
(Check_Part_Of_Abstract_State): New routine.
(Check_Part_Of_Concurrent_Type): New routine. Reimplement the checks
involving the item, the single concurrent type, and their respective
contexts.
* sem_res.adb (Resolve_Entity_Name): Potential constituents of a single
concurrent type are now recorded regardless of the SPARK mode.
* sem_util.adb (Check_Part_Of_Reference): Split some of the tests in
individual predicates.  A Part_Of reference is legal when it appears
within the statement list of the object's immediately enclosing
package.
(Is_Enclosing_Package_Body): New routine.
(Is_Internal_Declaration_Or_Body): New routine.
(Is_Single_Declaration_Or_Body): New routine.
(Is_Single_Task_Pragma): New routine.

gcc/testsuite/

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

* gnat.dg/expr_func2.ads, gnat.dg/expr_func2.adb: New testcase.

From-SVN: r255690

6 years agore PR target/66488 (segfault on sizeof(long) < sizeof(void*) and large GCC memory...
Eric Botcazou [Fri, 15 Dec 2017 11:30:56 +0000 (11:30 +0000)]
re PR target/66488 (segfault on sizeof(long) < sizeof(void*) and large GCC memory usage)

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

        PR target/66488
        * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
        * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
        * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.

From-SVN: r255687

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:20:34 +0000 (11:20 +0000)]
[multiple changes]

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* gnat_ugn.texi: Regenerate.

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

* gnatvsn.ads: Minor comment fixes.

From-SVN: r255686

6 years agognat_and_program_execution.rst: Update section "Dynamic Stack Usage Analysis" to...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 11:16:14 +0000 (11:16 +0000)]
gnat_and_program_execution.rst: Update section "Dynamic Stack Usage Analysis" to include more details about...

gcc/ada/

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Update section "Dynamic
Stack Usage Analysis" to include more details about GNAT_STACK_LIMIT.

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

* exp_util.adb (Add_Own_DIC): Ensure that the expression of the pragma
is available (Is_Verifiable_DIC_Pragma): Moved from Sem_Util.
* sem_util.adb (Has_Full_Default_Initialization):
Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
whether a type has full default initialization due to pragma
Default_Initial_Condition.
(Has_Fully_Default_Initializing_DIC_Pragma): New routine.
(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
* sem_util.ads (Has_Fully_Default_Initializing_DIC_Pragma): New
routine.
(Is_Verifiable_DIC_Pragma): Moved to Exp_Util.
* sem_warn.adb (Is_OK_Fully_Initialized):
Has_Fully_Default_Initializing_DIC_Pragma is now used to determine
whether a type has full default initialization due to pragma
Default_Initial_Condition.

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

* sem_prag.adb (Match_Constituent): Do not quietly accept constants as
suitable constituents.
* exp_util.adb: Minor reformatting.

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

* exp_aggr.adb (In_Place_Assign_OK): Extend the predicate to recognize
an array aggregate in an allocator, when the designated type is
unconstrained and the upper bound of the aggregate belongs to the base
type of the index.

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

* exp_ch6.adb (Expand_N_Extended_Return_Statement,
Expand_Simple_Function_Return): Assert that the b-i-p-ness of the
caller and callee match.  Otherwise, we would need some substantial
changes to allow b-i-p calls non-b-i-p, and vice versa.

gcc/testsuite/

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

* gnat.dg/dflt_init_cond.adb, gnat.dg/dflt_init_cond_pkg.ads: New
testcase.

From-SVN: r255685

6 years agogcc/ada/ChangeLog: add entries missing from previous commit
Pierre-Marie de Rodat [Fri, 15 Dec 2017 10:28:14 +0000 (10:28 +0000)]
gcc/ada/ChangeLog: add entries missing from previous commit

From-SVN: r255684

6 years agoexp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is a generic packag...
Pierre-Marie de Rodat [Fri, 15 Dec 2017 10:21:24 +0000 (10:21 +0000)]
exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is a generic package body.

gcc/ada/

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

* exp_unst.adb (Unnest_Subprograms): Nothing to do if the main unit is
a generic package body. Unnesting is only an issue when generating
code, and if the main unit is generic then nested instance bodies have
not been created and analyzed, and unnesting will crash in the absence
of those bodies,

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

* inline.adb (Add_Inlined_Body): Do not add a function which is
completed by an expression function defined in the same context as the
initial declaration because the completing body is not in a package
body.
(Is_Non_Loading_Expression_Function): New routine.

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

* debug.adb: Move the functionality of -gnatdL to -gnatd_i. Restore
the behavior of -gnatdL from before revision 255412.
* sem_elab.adb: Update the section of compiler switches.
(Build_Call_Marker): Do not create a marker for a call which originates
from an expanded spec or body of an instantiated gener, does not invoke
a generic formal subprogram, the target is external to the instance,
and -gnatdL is in effect.
(In_External_Context): New routine.
(Process_Conditional_ABE_Activation_Impl): Update the uses of -gnatdL
and associated flag.
(Process_Conditional_ABE_Call): Update the uses of -gnatdL and
associated flag.
* switch-c.adb (Scan_Front_End_Switches): Switch -gnatJ now sets switch
-gnatd_i.
* exp_unst.adb: Minor typo fixes and edits.

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

* sem_ch6.adb (Possible_Freeze): Do not set Delayed_Freeze on an
subprogram instantiation, now that the enclosing wrapper package
carries an explicit freeze node. THis prevents freeze nodes for the
subprogram for appearing in the wrong scope. This is relevant when the
generic subprogram has a private or incomplete formal type and the
instance appears within a package that declares the actual type for the
instantiation, and that type has itself a delayed freeze.

2017-12-15  Patrick Bernardi  <bernardi@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Removed references to
the environment variable GNAT_STACK_LIMIT from the Stack Overflow
Checking section as it is no longer used by any of our supported
targets.

gcc/testsuite/

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

* gnat.dg/expr_func_main.adb, gnat.dg/expr_func_pkg.ads,
gnat.dg/expr_func_pkg.adb: New testcase.

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

* gnat.dg/abe_pkg.adb, gnat.dg/abe_pkg.ads: New testcase.

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

* gnat.dg/subp_inst.adb, gnat.dg/subp_inst_pkg.adb,
gnat.dg/subp_inst_pkg.ads: New testcase.

From-SVN: r255683

6 years ago[multiple changes]
Pierre-Marie de Rodat [Fri, 15 Dec 2017 09:44:22 +0000 (09:44 +0000)]
[multiple changes]

2017-12-15  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.

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

* exp_unst.adb (Visit_Node): Refine handling of 'Access to ignore non
relevant nodes.
(Has_Non_Null_Statements): Moved to sem_util for later reuse.

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

* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Fix comment.
* libgnat/s-fatgen.adb (Model): Use Machine attribute.
(Truncation): Likewise.

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

* exp_ch7.adb (Expand_Cleanup_Actions): Make sure the block and handled
statement sequence generated for certain extended return statements
have a Sloc that is not No_Location. Otherwise, the back end doesn't
set any location and ends up reading uninitialized variables.

From-SVN: r255680

6 years agotypes.ads, [...]: Partly revert r255414, committed by mistake.
Bob Duff [Fri, 15 Dec 2017 09:36:12 +0000 (09:36 +0000)]
types.ads, [...]: Partly revert r255414, committed by mistake.

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

* types.ads, exp_ch6.adb, libgnat/s-regexp.ads, opt.ads: Partly revert
r255414, committed by mistake.

From-SVN: r255679

6 years agoEnable VAES support [5/5]
Julia Koval [Fri, 15 Dec 2017 05:04:33 +0000 (06:04 +0100)]
Enable VAES support [5/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
__builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi): New.
* config/i386/sse.md (vaesenclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
_mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesenclast-2.c: New test.
* gcc.target/i386/avx512vl-aesenclast-2.c: Ditto.
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255676

6 years agoEnable VAES support [4/5]
Julia Koval [Fri, 15 Dec 2017 04:31:08 +0000 (05:31 +0100)]
Enable VAES support [4/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
__builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
* config/i386/sse.md (vaesenc_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
_mm_aesenc_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesenc-2.c: New test.
* gcc.target/i386/avx512vl-aesenc-2.c: Ditto.
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255675

6 years agoEnable VAES support [3/5]
Julia Koval [Fri, 15 Dec 2017 04:05:17 +0000 (05:05 +0100)]
Enable VAES support [3/5]

gcc/
* config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
__builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi): New.
* config/i386/sse.md (vaesdeclast_<mode>): New pattern.
* config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
_mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.

gcc/testsuite/
* gcc.target/i386/avx512f-aesdeclast-2.c: New test.
* gcc.target/i386/avx512vl-aesdeclast-2.c
* gcc.target/i386/avx512fvl-vaes-1.c: Handle new intrinsics.

From-SVN: r255674

6 years agoFix ChangeLog entry date
Peter Bergner [Fri, 15 Dec 2017 03:46:02 +0000 (21:46 -0600)]
Fix ChangeLog entry date

From-SVN: r255673

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

From-SVN: r255670

6 years agoPR libstdc++/83279 handle sendfile not copying entire file
Jonathan Wakely [Thu, 14 Dec 2017 21:49:03 +0000 (21:49 +0000)]
PR libstdc++/83279 handle sendfile not copying entire file

PR libstdc++/83279
* src/filesystem/std-ops.cc (do_copy_file): Handle sendfile not
copying entire file.

From-SVN: r255666

6 years agoPR libstdc++/68519 use native duration to avoid rounding errors
Jonathan Wakely [Thu, 14 Dec 2017 20:41:52 +0000 (20:41 +0000)]
PR libstdc++/68519 use native duration to avoid rounding errors

PR libstdc++/68519
* include/std/condition_variable (condition_variable::wait_for):
Convert duration to native clock's duration before addition.
* testsuite/30_threads/condition_variable/members/68519.cc: New test.

From-SVN: r255665

6 years agogimple-ssa-strength-reduction.c (analyze_increments): Distinguish replacement costs...
Bill Schmidt [Thu, 14 Dec 2017 20:40:21 +0000 (20:40 +0000)]
gimple-ssa-strength-reduction.c (analyze_increments): Distinguish replacement costs for constant strides from those for unknown strides.

2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gimple-ssa-strength-reduction.c (analyze_increments):
Distinguish replacement costs for constant strides from those for
unknown strides.

From-SVN: r255664

6 years ago* var-tracking.c (variable_tracking_main_1): Formatting fix.
Jakub Jelinek [Thu, 14 Dec 2017 20:12:38 +0000 (21:12 +0100)]
* var-tracking.c (variable_tracking_main_1): Formatting fix.

From-SVN: r255663

6 years agoinvoke.texi: Document -Wcast-function-type.
Bernd Edlinger [Thu, 14 Dec 2017 18:59:24 +0000 (18:59 +0000)]
invoke.texi: Document -Wcast-function-type.

gcc:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * doc/invoke.texi: Document -Wcast-function-type.
        * recog.h (stored_funcptr): Change signature.
        * tree-dump.c (dump_node): Avoid warning.
        * typed-splay-tree.h (typed_splay_tree): Avoid warning.

libcpp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * internal.h (maybe_print_line): Change signature.

c-family:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c.opt (Wcast-function-type): New warning option.
        * c-lex.c (get_fileinfo): Avoid warning.
        * c-ppoutput.c (scan_translation_unit_directives_only): Remove cast.

c:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-typeck.c (c_safe_arg_type_equiv_p,
        c_safe_function_type_cast_p): New function.
        (build_c_cast): Implement -Wcast-function-type.

cp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * decl2.c (start_static_storage_duration_function): Avoid warning.
        * typeck.c (cxx_safe_arg_type_equiv_p,
        cxx_safe_function_type_cast_p): New function.
        (build_reinterpret_cast_1): Implement -Wcast-function-type.

testsuite:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-c++-common/Wcast-function-type.c: New test.
        * g++.dg/Wcast-function-type.C: New test.

From-SVN: r255661

6 years agoMakefile.am (IFUNC_OPTIONS): Change aarch64 option from -march=armv8.1-a to -march...
Steve Ellcey [Thu, 14 Dec 2017 18:30:38 +0000 (18:30 +0000)]
Makefile.am (IFUNC_OPTIONS): Change aarch64 option from -march=armv8.1-a to -march=armv8-a+lse.

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

* Makefile.am (IFUNC_OPTIONS): Change aarch64
option from -march=armv8.1-a to -march=armv8-a+lse.
* configure.ac (*aarch64*): Check to see if
compiler understands -march=armv8-a+lse option.
* configure.tgt (*aarch64*): Only set try_ifunc
if compiler understands -march=armv8-a+lse option.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* configure: Regenerate.
* aclocal.m4: Regenerate.

From-SVN: r255659

6 years agoPatch for middle-end/PR79538
Qing Zhao [Thu, 14 Dec 2017 17:37:20 +0000 (17:37 +0000)]
Patch for middle-end/PR79538
missing -Wformat-overflow with %s and non-member array arguments

-Wformat-overflow uses the routine "get_range_strlen" to decide the
maximum string length, however, currently "get_range_strlen" misses
the handling of non-member arrays.

Adding the handling of non-member array resolves the issue.
Adding test case pr79538.c into gcc.dg.

During gcc bootstrap, 2 source files (c-family/c-cppbuiltin.c,
fortran/class.c) were detected new warnings by -Wformat-overflow
due to the new handling of non-member array in "get_range_strlen".
in order to avoid these new warnings and continue with bootstrap,
updating these 2 files to avoid the warnings.

in c-family/c-cppbuiltin.c, the warning is following:

../../latest_gcc_2/gcc/c-family/c-cppbuiltin.c:1627:15: note:
‘sprintf’ output 2 or more bytes (assuming 257) into a destination
of size 256
       sprintf (buf1, "%s=%s", macro, buf2);
       ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
in the above, buf1 and buf2 are declared as:
char buf1[256], buf2[256];

i.e, buf1 and buf2 have same size. adjusting the size of buf1 and
buf2 resolves the warning.

fortran/class.c has the similar issue as above. Instead of adjusting
size of the buffers, replacing sprintf with xasprintf is a better
solution for these cases.

From-SVN: r255654

6 years ago* gcc-interface/Makefile.in: Generalize support for symbolic traces.
Eric Botcazou [Thu, 14 Dec 2017 17:32:56 +0000 (17:32 +0000)]
* gcc-interface/Makefile.in: Generalize support for symbolic traces.

From-SVN: r255653

6 years agoPR libstdc++/83427 detect weak result type from noexcept functions
Jonathan Wakely [Thu, 14 Dec 2017 17:18:22 +0000 (17:18 +0000)]
PR libstdc++/83427 detect weak result type from noexcept functions

PR libstdc++/83427
* include/bits/refwrap.h (_Maybe_unary_or_binary_function): Move here
from <bits/std_function.h>.
(_Mem_fn_traits_base, _Mem_fn_traits): Move here, from <functional>.
(_Weak_result_type_impl, _Reference_wrapper_base): Deduce noexcept
for function types. Remove partial specializations for member
functions.
(_Weak_result_type_impl): Remove unused partial specializations for
non-referenceable function types and for references to functions.
(_Weak_result_type_memfun, _Reference_wrapper_base_memfun): New
helpers to handle member functions via _Mem_fn_traits.
(_Weak_result_type, reference_wrapper): Derive from new helpers.
* include/bits/std_function.h (_Maybe_unary_or_binary_function): Move
to <bits/refwrap.h>.
* include/std/functional (_Pack, _AllConvertible, _NotSame): Remove.
(_Mem_fn_traits_base, _Mem_fn_traits): Move to <bits/refwrap.h>.
* testsuite/20_util/bind/83427.cc: New test.
* testsuite/20_util/bind/refqual.cc: Add noexcept to functions and
check for weak result types.
* testsuite/20_util/reference_wrapper/83427.cc: New test.

From-SVN: r255651

6 years ago* gcc-interface/misc.c (default_pass_by_ref): Minor tweak.
Eric Botcazou [Thu, 14 Dec 2017 17:17:03 +0000 (17:17 +0000)]
* gcc-interface/misc.c (default_pass_by_ref): Minor tweak.

From-SVN: r255650

6 years agovrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)
David Malcolm [Thu, 14 Dec 2017 17:15:39 +0000 (17:15 +0000)]
vrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)

gcc/ChangeLog:
PR tree-optimization/83312
* domwalk.h (dom_walker::dom_walker): Fix typo in comment.
* tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
"val" param, and to cope with arbitrary basic blocks.
(find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
handle NULL_TREE for "val", dropping "bb" param.
(find_taken_edge_switch_expr): Make "switch_stmt" param const and
drop "bb" param.  Handle NULL_TREE for "val".
(find_case_label_for_value): Make "switch_stmt" param const.
* tree-vrp.c (class check_array_bounds_dom_walker): New subclass
of dom_walker.
(vrp_prop::check_all_array_refs): Reimplement as...
(check_array_bounds_dom_walker::before_dom_children): ...this new
vfunc.  Replace linear search through BB block list, excluding
those with non-executable in-edges via dominator walk.

gcc/testsuite/ChangeLog:
PR tree-optimization/83312
* gcc.dg/pr83312.c: New test case.

From-SVN: r255649

6 years agotrans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS to 0 on the callee if the...
Eric Botcazou [Thu, 14 Dec 2017 17:13:03 +0000 (17:13 +0000)]
trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS to 0 on the callee if the call is recursive.

* gcc-interface/trans.c (Call_to_gnu): Set DECL_DISREGARD_INLINE_LIMITS
to 0 on the callee if the call is recursive.

From-SVN: r255648

6 years agodecl.c (gnat_to_gnu_field): Do not set the alignment of the enclosing record type...
Eric Botcazou [Thu, 14 Dec 2017 17:03:16 +0000 (17:03 +0000)]
decl.c (gnat_to_gnu_field): Do not set the alignment of the enclosing record type if it is not already set.

* gcc-interface/decl.c (gnat_to_gnu_field): Do not set the alignment
of the enclosing record type if it is not already set.

From-SVN: r255645

6 years ago[arm] Add -mverbose-cost-dump and de-verbosify cost dumps
Kyrylo Tkachov [Thu, 14 Dec 2017 15:53:36 +0000 (15:53 +0000)]
[arm] Add -mverbose-cost-dump and de-verbosify cost dumps

This patch adds an -mverbose-cost-dump option, similar to the one in aarch64.
It makes the RTX cost dump print the RTX we're costing in the backend, as well as its cost.
This can be distracting in other cost-related RTL dumps like combine's.

So now we don't dump the backend information by default, but provide the power-user option -mverbose-cost-dump
to enable the old verbose dumping.

This option is for GCC developers debugging the compiler only, so no documentation are added.
It's also trivially simple in functionality so no test is added either.

Bootstrapped and tested on arm-none-linux-gnueabihf.

Committed to trunk.

* config/arm/arm.opt (mverbose-cost-dump): New option.
* config/arm/arm.c (arm_rtx_costs): Use it.

From-SVN: r255644

6 years agore PR lto/81406 (ICE in check_die, at dwarf2out.c:6185)
Jakub Jelinek [Thu, 14 Dec 2017 15:26:00 +0000 (16:26 +0100)]
re PR lto/81406 (ICE in check_die, at dwarf2out.c:6185)

PR lto/81406
* gcc.dg/lto/pr81406_0.c: New test.

From-SVN: r255643

6 years agore PR tree-optimization/66974 (-Warray-bounds false positive with -O3)
Richard Biener [Thu, 14 Dec 2017 15:18:16 +0000 (15:18 +0000)]
re PR tree-optimization/66974 (-Warray-bounds false positive with -O3)

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

PR tree-optimization/66974
* gcc.dg/Warray-bounds-24.c: New testcase.

From-SVN: r255642

6 years agore PR tree-optimization/65258 (Wrong array bounds warning)
Richard Biener [Thu, 14 Dec 2017 15:08:09 +0000 (15:08 +0000)]
re PR tree-optimization/65258 (Wrong array bounds warning)

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

PR tree-optimization/65258
* gcc.dg/Warray-bounds-23.c: New testcase.

From-SVN: r255641

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Andreas Schwab [Thu, 14 Dec 2017 15:06:25 +0000 (15:06 +0000)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* reload1.c (emit_input_reload_insns): Skip debug markers.

From-SVN: r255640

6 years ago[compare-debug] use call loc for nop_endbr
Alexandre Oliva [Thu, 14 Dec 2017 15:03:09 +0000 (15:03 +0000)]
[compare-debug] use call loc for nop_endbr

We skip debug insns and notes after a call that needs a nop_endbr, but
since a debug insn could be the last in a block, it may affect the loc
in the emitted nop_endbr insn.  Although this has no effect on
codegen, it does mess with debug info a bit, and it causes
-fcompare-debug to fail for e.g. libsanitizer's
tsan/tsan_platform_linux.cc on x86_64.

So, pick the location of the call insn for the nop_endbr insn, to
avoid the line number differences in dumps, including -fcompare-debug
ones.

Also, we don't need to determine what the insert point would be unless
we're actually emitting the nop_endbr insn after the call, so
rearrange the code to avoid wasting cycles.

Finally, it seems like testing for barriers is a mistake.  We probably
never actually pass that test, for the barriers would hit BB_END
first.  If we did, we'd end up emitting the nop_endbr outside any BB,
even after the end of the function!  That would be Very Bad (TM).
Now, since the test as it is can't hurt, I figured I wouldn't change
the logic right now, just add a comment so that someone involved in
endbr stuff can have a second look and hopefully fix it.

for  gcc/ChangeLog

* config/i386/i386.c (rest_of_insert_endbranch): Use call loc
for its nop_endbr.

From-SVN: r255639

6 years ago[SFN] next/prev_nonnote_insn_bb are no more, even for ports
Alexandre Oliva [Thu, 14 Dec 2017 15:02:58 +0000 (15:02 +0000)]
[SFN] next/prev_nonnote_insn_bb are no more, even for ports

The patch that added _nondebug to next_ and prev_nonnote_insn_bb
failed to find and adjust uses within config.  Fixed.

for  gcc/ChangeLog

PR bootstrap/83396
* config/arc/arc.c (hwloop_optimize): Skip debug insns.
* config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
* config/sh/sh.c: Skip debug insns besides notes.
* config/sh/sh.md: Likewise.
* config/sh/sh_treg_combine.cc: Likewise.
* config/sh/sync.md: Likewise.

From-SVN: r255638

6 years agoRequire effective target weak_undefined for visibility-22.c
Tom de Vries [Thu, 14 Dec 2017 15:01:47 +0000 (15:01 +0000)]
Require effective target weak_undefined for visibility-22.c

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

* lib/target-supports.exp (check_effective_target_weak_undefined): New
proc.
* gcc.dg/visibility-22.c: Require effective target weak_undefined.

* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
Add item for weak_undefined.

From-SVN: r255637

6 years agore PR tree-optimization/67842 (Incorrect check in sese.h:bb_in_region)
Richard Biener [Thu, 14 Dec 2017 14:53:40 +0000 (14:53 +0000)]
re PR tree-optimization/67842 (Incorrect check in sese.h:bb_in_region)

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

PR tree-optimization/67842
* sese.h (bb_in_region): Remove #if 0'ed code.

From-SVN: r255636

6 years agore PR tree-optimization/83326 (SPEC CPU2017 648.exchange2_s ~6% performance regressio...
Richard Biener [Thu, 14 Dec 2017 14:32:24 +0000 (14:32 +0000)]
re PR tree-optimization/83326 (SPEC CPU2017 648.exchange2_s ~6% performance regression with r255267 (reproducer attached))

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

PR tree-optimization/83326
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
may_be_zero parameter and handle it by not marking the first
peeled copy as not exiting the loop.
(try_peel_loop): Likewise.
(canonicalize_loop_induction_variables): Use number_of_iterations_exit
to handle the case of constant or zero iterations and perform
loop header copying on-the-fly.

* gcc.dg/tree-ssa/pr81388-2.c: Adjust.

From-SVN: r255635

6 years agoTest whitespace handling in std::complex extraction
Jonathan Wakely [Thu, 14 Dec 2017 11:47:42 +0000 (11:47 +0000)]
Test whitespace handling in std::complex extraction

* testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
Add tests using noskipws.

From-SVN: r255632

6 years agogigi.h (pad_type_has_rm_size): Declare.
Eric Botcazou [Thu, 14 Dec 2017 11:47:24 +0000 (11:47 +0000)]
gigi.h (pad_type_has_rm_size): Declare.

* gcc-interface/gigi.h (pad_type_has_rm_size): Declare.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Do not build
a padding type for the alignment before validating the size.
Flip conditional construct and add a comment.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Size>: Make sure to
apply the exception for padded objects to the type of the object.
* gcc-interface/utils.c (hash_pad_type): New static function.
(lookup_and_insert_pad_type): Rename into...
(canonicalize_pad_type): ...this.  Call hash_pad_type, do only one
lookup with insertion and always return the canonical type.
(maybe_pad_type): Adjust to above changes.  Set debug type later.
(pad_type_has_rm_size): New predicate.
(set_reverse_storage_order_on_pad_type): Adjust to above changes.

From-SVN: r255631

6 years agoImprove std::complex test and move to sub-directory
Jonathan Wakely [Thu, 14 Dec 2017 11:28:41 +0000 (11:28 +0000)]
Improve std::complex test and move to sub-directory

* testsuite/26_numerics/complex/dr2714.cc: Move to ...
* testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
... Here. Remove duplicate header and dg-options. Check first invalid
character gets putback. Remove wchar_t test.

From-SVN: r255630

6 years agore PR middle-end/83415 (ICE during gimplification of assignment to read-only vector)
Richard Biener [Thu, 14 Dec 2017 11:13:34 +0000 (11:13 +0000)]
re PR middle-end/83415 (ICE during gimplification of assignment to read-only vector)

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

PR c/83415
c/
* c-fold.c (c_fully_fold_internal): Treat VIEW_CONVERT_EXPR
like REALPART_EXPR for the behavior of whether its operand
is an lvalue.

* gcc.dg/pr83415.c: New testcase.

From-SVN: r255629

6 years agore PR tree-optimization/83418 (ICE in extract_range_for_var_from_comparison_expr...
Richard Biener [Thu, 14 Dec 2017 11:12:52 +0000 (11:12 +0000)]
re PR tree-optimization/83418 (ICE in extract_range_for_var_from_comparison_expr, at vr-values.c:448)

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

PR tree-optimization/83418
* vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
Instead of asserting we don't get unfolded comparisons deal with
them.

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

From-SVN: r255628

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Jakub Jelinek [Thu, 14 Dec 2017 11:02:37 +0000 (12:02 +0100)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
basic blocks.  Assert debug bind insns don't appear outside of bbs,
don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
bb.  Simplify.

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

From-SVN: r255627

6 years agore PR tree-optimization/83198 (ICE in format_floating, at gimple-ssa-sprintf.c:1900)
Jakub Jelinek [Thu, 14 Dec 2017 11:01:17 +0000 (12:01 +0100)]
re PR tree-optimization/83198 (ICE in format_floating, at gimple-ssa-sprintf.c:1900)

PR tree-optimization/83198
* gimple-ssa-sprintf.c (format_floating): Set type solely based on
dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
value if arg is a REAL_CST with incompatible type.

* gcc.dg/pr83198.c: New test.
* gcc.dg/tree-ssa/pr83198.c: New test.

From-SVN: r255626

6 years ago[PATCH PR81228][AARCH64]Fix ICE by adding LTGT in vec_cmp<mode><v_int_equiv>
Sudakshina Das [Thu, 14 Dec 2017 10:35:38 +0000 (10:35 +0000)]
[PATCH PR81228][AARCH64]Fix ICE by adding LTGT in vec_cmp<mode><v_int_equiv>

This patch is a follow up to the existing discussions on
https://gcc.gnu.org/ml/gcc-patches/2017-07/msg01904.html
Bin had earlier submitted this patch to fix the ICE that
occurs because of the missing LTGT in aarch64-simd.md.
That discussion opened up a new bug report PR81647 for
an inconsistent behavior.

As discussed earlier on the gcc-patches discussion and on
the bug report, PR81647 was occurring because of how UNEQ
was handled in aarch64-simd.md rather than LTGT.
Since __builtin_islessgreater is guaranteed to not give an
FP exception but LTGT might, __builtin_islessgreater gets
converted to ~UNEQ very early on in fold_builtin_unordered_cmp.
Thus I will post a separate patch for correcting how UNEQ and
other unordered comparisons are handled in aarch64-simd.md.

This patch is only adding the missing LTGT to plug the ICE.

Testing done: Checked for regressions on bootstrapped
aarch64-none-linux-gnu and added a new compile time test case
that gives out LTGT to make sure it doesn't ICE

*** gcc/ChangeLog ***

2017-12-14  Sudakshina Das  <sudi.das@arm.com>
    Bin Cheng  <bin.cheng@arm.com>

PR target/81228
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
to CCFPEmode.
* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
LTGT.

*** gcc/testsuite/ChangeLog ***

2017-12-14  Sudakshina Das  <sudi.das@arm.com>

PR target/81228
* gcc.dg/pr81228.c: New.

Co-Authored-By: Bin Cheng <bin.cheng@arm.com>
From-SVN: r255625

6 years ago[AArch64] Specify fp16 support for Cortex-A55 and Cortex-A75
Kyrylo Tkachov [Thu, 14 Dec 2017 09:50:33 +0000 (09:50 +0000)]
[AArch64] Specify fp16 support for Cortex-A55 and Cortex-A75

The Cortex-A55 and Cortex-A75 processors support the fp16 extension.
We already specify them as such in the arm port.
This patch makes aarch64 consistent on this front.

Bootstrapped and tested on aarch64-none-linux-gnu.
Manually checked that compiling with aarch64-none-linux-gnu-gcc -mcpu=cortex-a55 -dM -E - < /dev/null
shows __ARM_FEATURE_FP16_VECTOR_ARITHMETIC and __ARM_FEATURE_FP16_SCALAR_ARITHMETIC being specified
as expected whereas they were not before this patch.

* config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.

From-SVN: r255624

6 years agore PR c++/79650 (ICE on invalid c++ code with label arithmetic in convert_nontype_arg...
Jakub Jelinek [Thu, 14 Dec 2017 08:16:51 +0000 (09:16 +0100)]
re PR c++/79650 (ICE on invalid c++ code with label arithmetic in convert_nontype_argument (pt.c:6515))

PR c++/79650
* pt.c (convert_nontype_argument): Diagnose
reduced_constant_expression_p expressions that aren't INTEGER_CST.

* g++.dg/template/pr79650.C: New test.

From-SVN: r255623

6 years agore PR libfortran/78549 (Very slow formatted internal file output)
Jerry DeLisle [Thu, 14 Dec 2017 02:30:49 +0000 (02:30 +0000)]
re PR libfortran/78549 (Very slow formatted internal file output)

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

        PR libgfortran/78549
        * io/inquire.c (inquire_via_unit): Adjust test for existence for
        pre-connected internal units.
        * io/transfer.c (finalize_transfer): When done with a transfer
        to internal units, free the format buffer and close the stream.
        (st_read_done): Delete freeing the stream, now handled using
        sclose in finalize_transfer. (st_write_done): Likewise.
        * io/unit.c (get_unit): Return NULL for special reserved unit
        numbers, signifying not accessible to the user.
        (init_units): Insert the two special internal units into the
        unit treap. This makes these unit structures available without
        further allocations for later use by internal unit I/O. These
        units are automatically deleted by normal program termination.
        * io/unix.c (mem_close): Add a guard check to protect from double free.

From-SVN: r255621

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

From-SVN: r255620

6 years agopoly_int: add poly-int.h
Richard Sandiford [Thu, 14 Dec 2017 00:06:02 +0000 (00:06 +0000)]
poly_int: add poly-int.h

This patch adds a new "poly_int" class to represent polynomial integers
of the form:

  C0 + C1*X1 + C2*X2 ... + Cn*Xn

It also adds poly_int-based typedefs for offsets and sizes of various
precisions.  In these typedefs, the Ci coefficients are compile-time
constants and the Xi indeterminates are run-time invariants.  The number
of coefficients is controlled by the target and is initially 1 for all
ports.

Most routines can handle general coefficient counts, but for now a few
are specific to one or two coefficients.  Support for other coefficient
counts can be added when needed.

The patch also adds a new macro, IN_TARGET_CODE, that can be
set to indicate that a TU contains target-specific rather than
target-independent code.  When this macro is set and the number of
coefficients is 1, the poly-int.h classes define a conversion operator
to a constant.  This allows most existing target code to work without
modification.  The main exceptions are:

- values passed through ..., which need an explicit conversion to a
  constant

- ?: expression in which one arm ends up being a polynomial and the
  other remains a constant.  In these cases it would be valid to convert
  the constant to a polynomial and the polynomial to a constant, so a
  cast is needed to break the ambiguity.

The patch also adds a new target hook to return the estimated
value of a polynomial for costing purposes.

The patch also adds operator<< on wide_ints (it was already defined
for offset_int and widest_int).  I think this was originally excluded
because >> is ambiguous for wide_int, but << is useful for converting
bytes to bits, etc., so is worth defining on its own.  The patch also
adds operator% and operator/ for offset_int and widest_int, since those
types are always signed.  These changes allow the poly_int interface to
be more predictable.

I'd originally tried adding the tests as selftests, but that ended up
bloating cc1 by at least a third.  It also took a while to build them
at -O2.  The patch therefore uses plugin tests instead, where we can
force the tests to be built at -O0.  They still run in negligible time
when built that way.

2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* poly-int.h: New file.
* poly-int-types.h: Likewise.
* coretypes.h: Include them.
(POLY_INT_CONVERSION): Define.
* target.def (estimated_poly_value): New hook.
* doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
* doc/tm.texi: Regenerate.
* doc/poly-int.texi: New file.
* doc/gccint.texi: Include it.
* doc/rtl.texi: Describe restrictions on subreg modes.
* Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
* genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
(emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
* targhooks.h (default_estimated_poly_value): Declare.
* targhooks.c (default_estimated_poly_value): New function.
* target.h (estimated_poly_value): Likewise.
* wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
(wi::unary_traits): Delete.
(wi::binary_traits::signed_shift_result_type): Define for
offset_int << HOST_WIDE_INT, etc.
(generic_wide_int::operator <<=): Define for all types and use
wi::lshift instead of <<.
(wi::hwi_with_prec): Add a default constructor.
(wi::ints_for): New class.
(operator <<): Define for all wide-int types.
(operator /): New function.
(operator %): Likewise.
* selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
(ASSERT_MAYBE_NE_AT): New macros.

gcc/testsuite/
* gcc.dg/plugin/poly-int-tests.h,
gcc.dg/plugin/poly-int-test-1.c,
gcc.dg/plugin/poly-int-01_plugin.c,
gcc.dg/plugin/poly-int-02_plugin.c,
gcc.dg/plugin/poly-int-03_plugin.c,
gcc.dg/plugin/poly-int-04_plugin.c,
gcc.dg/plugin/poly-int-05_plugin.c,
gcc.dg/plugin/poly-int-06_plugin.c,
gcc.dg/plugin/poly-int-07_plugin.c: New tests.
* gcc.dg/plugin/plugin.exp: Run them.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r255617

6 years agore PR middle-end/78468 (libgomp.c/reduction-10.c and many more FAIL)
Eric Botcazou [Wed, 13 Dec 2017 23:16:56 +0000 (23:16 +0000)]
re PR middle-end/78468 (libgomp.c/reduction-10.c and many more FAIL)

PR middle-end/78468
* emit-rtl.c (init_emit): Remove ??? comment.
* explow.c (get_dynamic_stack_size): Take known alignment of stack
pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
* config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
alignment of 3 virtual registers to BITS_PER_WORD.

* config/sparc/sparc.c (sparc_compute_frame_size): Simplify.

Co-Authored-By: Dominik Vogt <vogt@linux.vnet.ibm.com>
From-SVN: r255616

6 years agoppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
Peter Bergner [Wed, 13 Dec 2017 21:20:51 +0000 (15:20 -0600)]
ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.

gcc/
* config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
* config/rs6000/rs6000.c (cpu_supports_info): Use it.

gcc/testsuite/
* gcc.target/powerpc/cpu-builtin-1.c (htm-no-suspend): Add test.

From-SVN: r255614

6 years agore PR c++/81061 (ICE modifying read-only variable)
Paolo Carlini [Wed, 13 Dec 2017 20:29:11 +0000 (20:29 +0000)]
re PR c++/81061 (ICE modifying read-only variable)

/cp
2017-12-13  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81061
* typeck.c (cp_build_modify_expr): Upon cxx_readonly_error
immediately return error_mark_node.

/testsuite
2017-12-13  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81061
* g++.dg/other/const5.C: New.

From-SVN: r255613

6 years ago[SFN] don't eliminate regs in markers
Alexandre Oliva [Wed, 13 Dec 2017 19:09:45 +0000 (19:09 +0000)]
[SFN] don't eliminate regs in markers

Eliminate regs in debug bind insns, but not in markers.

for  gcc/ChangeLog

PR bootstrap/83396
* reload1.c (eliminate_regs_in_insn): Skip debug markers.

From-SVN: r255612

6 years agotree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of...
Jakub Jelinek [Wed, 13 Dec 2017 18:48:23 +0000 (19:48 +0100)]
tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of debug begin stmt markers appear...

* tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
with the exception of debug begin stmt markers appear before
labels.

From-SVN: r255611

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Jakub Jelinek [Wed, 13 Dec 2017 18:47:45 +0000 (19:47 +0100)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
* final.c (rest_of_handle_final): Call variable_tracking_main only
if !flag_var_tracking.

From-SVN: r255610

6 years agore PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)
Alexandre Oliva [Wed, 13 Dec 2017 18:46:43 +0000 (18:46 +0000)]
re PR bootstrap/83396 (Bootstrap failures with Statement Frontiers)

PR bootstrap/83396
PR debug/83391
* tree-cfgcleanup.c (remove_forwarder_block): Keep after
labels debug stmts that can only appear after labels.

* gcc.dg/torture/pr83396.c: New test.
* g++.dg/torture/pr83391.C: New test.

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

6 years agoPR libstdc++/59568 fix error handling for std::complex stream extraction
Jonathan Wakely [Wed, 13 Dec 2017 17:02:14 +0000 (17:02 +0000)]
PR libstdc++/59568 fix error handling for std::complex stream extraction

PR libstdc++/59568
* include/std/complex (operator>>): Implement proposed resolution to
LWG 2714. Use putback if and only if a character has been successfully
extracted but isn't a delimiter. Use ctype::widen and traits::eq when
testing if extracted characters match delimiters.
* testsuite/26_numerics/complex/dr2714.cc: New test.

From-SVN: r255608

6 years agosel-sched: fix sel_rank_for_schedule for qsort (PR 82398)
Alexander Monakov [Wed, 13 Dec 2017 16:30:29 +0000 (19:30 +0300)]
sel-sched: fix sel_rank_for_schedule for qsort (PR 82398)

PR rtl-optimization/82398
* sel-sched.c (sel_rank_for_schedule): Fix check for zero
EXPR_USEFULNESS in priority comparison.

From-SVN: r255607

6 years agocombine: Fix PR83393
Segher Boessenkool [Wed, 13 Dec 2017 14:05:57 +0000 (15:05 +0100)]
combine: Fix PR83393

In move_deaths we move a REG_DEAD note if the instruction combination
has extended the lifetime of a register so that the existing note is
no longer valid.  We find that note using reg_stat, but what that finds
can refer to a later insn.  If so, we cannot use the cached value.  This
patch implements that.

PR rtl-optimization/83393
* combine.c (move_deaths): If reg_stat points to a too new insn in
last_death, do not use it: find the proper insn instead.

gcc/testsuite/
PR rtl-optimization/83393
* gcc.dg/pr83393.c: New testcase.

From-SVN: r255606

6 years ago[PR C++/15272] lookups with ambiguating dependent base
Nathan Sidwell [Wed, 13 Dec 2017 12:40:45 +0000 (12:40 +0000)]
[PR C++/15272] lookups with ambiguating dependent base

https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00766.html
PR c++/15272
* pt.c (tsubst_baselink): Don't repeat the lookup for
non-dependent baselinks.

PR c++/15272
* g++.dg/template/pr71826.C: Adjust for 15272 fix.

From-SVN: r255605

6 years ago* gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus.
Eric Botcazou [Wed, 13 Dec 2017 09:30:25 +0000 (09:30 +0000)]
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Initialize locus.

From-SVN: r255603

6 years agotrans.c (process_freeze_entity): Be prepared for a package without body.
Eric Botcazou [Wed, 13 Dec 2017 09:18:24 +0000 (09:18 +0000)]
trans.c (process_freeze_entity): Be prepared for a package without body.

* gcc-interface/trans.c (process_freeze_entity): Be prepared for a
package without body.

From-SVN: r255601

6 years agodecl.c (gnat_to_gnu_entity): Robustify test for types descendant of System.Address.
Eric Botcazou [Wed, 13 Dec 2017 09:05:07 +0000 (09:05 +0000)]
decl.c (gnat_to_gnu_entity): Robustify test for types descendant of System.Address.

* gcc-interface/decl.c (gnat_to_gnu_entity): Robustify test for types
descendant of System.Address.
(gnat_to_gnu_subprog_type): Likewise.

From-SVN: r255599

6 years agoUse C version of multi3 for RVE support.
Kito Cheng [Wed, 13 Dec 2017 06:25:06 +0000 (06:25 +0000)]
Use C version of multi3 for RVE support.

libgcc/
* config/riscv/t-elf: Use multi3.c instead of multi3.S.
* config/riscv/multi3.c: New file.
* config/riscv/multi3.S: Remove.

From-SVN: r255598

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

From-SVN: r255596

6 years agore PR tree-optimization/83298 (wrong code at -O1, -O2 and -O3 on x86_64-linux-gnu)
Jeff Law [Tue, 12 Dec 2017 22:46:46 +0000 (15:46 -0700)]
re PR tree-optimization/83298 (wrong code at -O1, -O2 and -O3 on x86_64-linux-gnu)

PR tree-optimization/83298
PR tree-optimization/83362
PR tree-optimization/83383
* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
push_value_range a public interface.  Add new argument to
record_ranges_from_stmt.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
Update comments.  Handle recording temporary equivalences.
* tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
* tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
gimple-ssa-evrp-analyze.h.
(record_temporary_equivalences_from_phis): Add new argument.  When
the PHI arg is an SSA_NAME, set the result's range to the range
of the PHI arg.
(record_temporary_equivalences_from_stmts_at_dest): Record ranges
from statements too.
(thread_through_normal_block): Accept new argument, evrp_range_analyzer.
Pass it down to children as needed.
(thread_outgoing_edges): Likewise.
(thread_across_edge): Likewise.   Push/pop range state as needed.
* tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.

PR tree-optimization/83298
PR tree-optimization/83362
PR tree-optimization/83383
* gcc.c-torture/execute/pr83298.c: New test.
* gcc.c-torture/execute/pr83362.c New test.
* gcc.c-torture/execute/pr83383.c New test.

From-SVN: r255593

6 years agore PR target/82190 (Possibly latent miscompilation issue on ppc64le-linux-gnu for...
Aaron Sawdey [Tue, 12 Dec 2017 22:22:53 +0000 (16:22 -0600)]
re PR target/82190 (Possibly latent miscompilation issue on ppc64le-linux-gnu for memcpy-bi.c with -fweb -fno-optimize-strlen)

2017-12-12  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

PR target/82190
* config/rs6000/rs6000-string.c (expand_block_compare,
expand_strn_compare): Fix set_mem_size() calls.

From-SVN: r255592

6 years agoRemove type_dependent_init_p.
Jason Merrill [Tue, 12 Dec 2017 22:09:48 +0000 (17:09 -0500)]
Remove type_dependent_init_p.

* decl.c (value_dependent_init_p): Check the type of a CONSTRUCTOR.
(type_dependent_init_p): Remove.

From-SVN: r255591

6 years agoPR c++/82115 - ICE with variable initialized with its own address.
Jason Merrill [Tue, 12 Dec 2017 22:09:42 +0000 (17:09 -0500)]
PR c++/82115 - ICE with variable initialized with its own address.

* cp-tree.h (struct lang_decl_base): Add dependent_init_p.
(DECL_DEPENDENT_INIT_P, SET_DECL_DEPENDENT_INIT_P): New.
* decl.c (cp_finish_decl): Set it.
(duplicate_decls): Copy it.
* pt.c (tsubst_decl): Clear it.
(value_dependent_expression_p): Revert earlier change.  Check it.

From-SVN: r255590

6 years agoi386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
Uros Bizjak [Tue, 12 Dec 2017 22:05:19 +0000 (23:05 +0100)]
i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.

* config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
(PTA_CANNONLAKE): Remove PTA_CLWB.

From-SVN: r255589

6 years agore PR target/83332 (new test case gfortran.dg/vect/pr81303.f fails (r255499))
Bill Schmidt [Tue, 12 Dec 2017 20:44:57 +0000 (20:44 +0000)]
re PR target/83332 (new test case gfortran.dg/vect/pr81303.f fails (r255499))

2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/83332
* config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
(vcondv2div2df): Likewise.
(vconduv2dfv2di): Likewise.

From-SVN: r255588

6 years agointrinsic.texi (MAXLOC): Remove double description of return value.
Thomas Koenig [Tue, 12 Dec 2017 19:29:53 +0000 (19:29 +0000)]
intrinsic.texi (MAXLOC): Remove double description of return value.

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

* intrinsic.texi (MAXLOC): Remove double description
of return value.
(MINLOC): Likewise.

From-SVN: r255587

6 years agobuiltins.def (BUILT_IN_NEXTAFTER, [...]): Use ATTR_MATHFN_ERRNO instead of ATTR_MATHF...
Jakub Jelinek [Tue, 12 Dec 2017 18:53:01 +0000 (19:53 +0100)]
builtins.def (BUILT_IN_NEXTAFTER, [...]): Use ATTR_MATHFN_ERRNO instead of ATTR_MATHFN_FPROUNDING_ERRNO.

* builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
ATTR_MATHFN_FPROUNDING_ERRNO.

From-SVN: r255586

6 years agoPR libstdc++/83395 fix invocable traits for INVOKE<cv void>
Jonathan Wakely [Tue, 12 Dec 2017 17:42:19 +0000 (17:42 +0000)]
PR libstdc++/83395 fix invocable traits for INVOKE<cv void>

PR libstdc++/83395
* include/std/type_traits (__is_invocable_impl): Remove partial
specialization for INVOKE<void> and restore is_void<R> check in
primary template.
(__is_nt_invocable_impl): Likewise.
* testsuite/20_util/is_invocable/83395.cc: New test.
* testsuite/20_util/is_nothrow_invocable/83395.cc: New test.

From-SVN: r255584

6 years agoUpdated email in MAINTAINERS file.
Steven Munroe [Tue, 12 Dec 2017 17:40:24 +0000 (17:40 +0000)]
Updated email in MAINTAINERS file.

From-SVN: r255583