Jason Merrill [Wed, 28 Jun 2017 19:41:49 +0000 (15:41 -0400)]
PR c++/55639 - partial specialization with ::template
* parser.c (cp_parser_class_head): Handle ::template.
From-SVN: r249754
Jason Merrill [Wed, 28 Jun 2017 19:41:43 +0000 (15:41 -0400)]
PR c++/45976 - error with ::template in declarator.
* pt.c (resolve_typename_type): Fix TEMPLATE_ID_EXPR handling.
From-SVN: r249753
Jason Merrill [Wed, 28 Jun 2017 19:41:36 +0000 (15:41 -0400)]
PR c++/54769 - wrong lookup of dependent template-name.
* parser.c (cp_parser_template_name): Handle dependent object type.
(cp_parser_nested_name_specifier_opt): Make template_keyword_p a
parameter.
(cp_parser_id_expression): Pass it.
(cp_parser_diagnose_invalid_type_name): Handle TEMPLATE_ID_EXPR.
From-SVN: r249752
Jason Merrill [Wed, 28 Jun 2017 19:41:24 +0000 (15:41 -0400)]
Make the TEMPLATE_ID_EXPR location a range.
* parser.c (cp_parser_template_id): Use the range location on the
TEMPLATE_ID_EXPR.
From-SVN: r249751
Jason Merrill [Wed, 28 Jun 2017 19:41:18 +0000 (15:41 -0400)]
PR c++/81204 - parse error with dependent template-name
* parser.c (cp_parser_lookup_name): Disqualify function templates
after lookup.
From-SVN: r249750
Szabolcs Nagy [Wed, 28 Jun 2017 16:02:42 +0000 (16:02 +0000)]
multiarch support for non-glibc linux systems
Current multiarch directory name is always *-linux-gnu* on linux,
this patch configures different names for uclibc and musl targets.
2017-06-28 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config.gcc (*-linux-musl*): Add t-musl tmake_file.
(*-linux-uclibc*): Add t-uclibc tmake_file.
* config/t-musl: New.
* config/t-uclibc: New.
From-SVN: r249745
Thomas Preud'homme [Wed, 28 Jun 2017 15:09:08 +0000 (15:09 +0000)]
[ARM] Consistently check for neon in vect effective targets
Conditions checked for ARM targets in vector-related effective targets
are inconsistent:
* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes
* is-effective-target
This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.
2017-06-28 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/testsuite/
* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.
From-SVN: r249744
Richard Earnshaw [Wed, 28 Jun 2017 15:02:38 +0000 (15:02 +0000)]
[arm] Fix incorrect __ARM_ARCH_PROFILE for -march=armv7
ACLE explicitly states that when targetting the common subset of
ARMv7-A, ARMv7-R and ARMv7-M, the __ARM_ARCH_PROFILE macro should not
be set. We currently set it to 'M' which is clearly erroneous.
The logic for creating this is very convoluted and also somewhat
fragile, so I've taken the opportunity to use the new CPU and
architecture definition infrastructure to record the profile for each
architecture explicitly rather than try to reconstruct it from other
data. I think this results in a much more robust solution.
2017-06-28 Richard Earnshaw <rearnsha@arm.com>
* config/arm/parsecpu.awk (profile): Parse new keyword in an arch
context.
(gen_comm_data): Emit architectural setting of arch_prof.
* config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
profile.
(armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
(armv8-m.base, armv8-m.main): Likewise.
* arm-protos.h (arm_build_target): Add profile field.
(arch_option): Likewise.
* config/arm/arm.c (arm_configure_build_target): Copy the profile to
the active target.
* config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
arm_active_target.profile.
From-SVN: r249743
Richard Biener [Wed, 28 Jun 2017 14:24:00 +0000 (14:24 +0000)]
re PR tree-optimization/81227 (ICE in get_single_symbol, at tree-vrp.c:799)
2017-06-28 Richard Biener <rguenther@suse.de>
PR middle-end/81227
* fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
TYPE_OVERFLOW_WRAPS.
* match.pd (negate_expr_p): Likewise.
* tree-ssa-reassoc.c (optimize_range_tests_diff): Use
fold_build2, not fold_binary.
* gcc.dg/pr81227.c: New testcase.
From-SVN: r249742
Wilco Dijkstra [Wed, 28 Jun 2017 14:21:04 +0000 (14:21 +0000)]
This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c triggered...
This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c
triggered by https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01367.html.
In ILP32 all memory accesses must have Pmode as the base address, but
aarch64_expand_mov_immediate wasn't emitting a conversion in one case.
Besides fixing this add an assert that flags any MEM operands that are
not Pmode.
gcc/
* config/aarch64/aarch64 (aarch64_expand_mov_immediate):
Convert memory address to Pmode.
(aarch64_print_operand): Assert MEM operands are always Pmode.
From-SVN: r249741
Wilco Dijkstra [Wed, 28 Jun 2017 14:13:02 +0000 (14:13 +0000)]
Improve Cortex-A53 shift bypass
The aarch_forward_to_shift_is_not_shifted_reg bypass always returns true
on AArch64 shifted instructions. This causes the bypass to activate in
too many cases, resulting in slower execution on Cortex-A53 like reported
in PR79665.
This patch uses the arm_no_early_alu_shift_dep condition instead which
improves the example in PR79665 by ~7%. Given it is no longer used,
remove aarch_forward_to_shift_is_not_shifted_reg. Also remove an
unnecessary REG_P check.
gcc/
PR target/79665
* config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
Remove redundant if.
(aarch_forward_to_shift_is_not_shifted_reg): Remove.
* config/arm/aarch-common-protos.h
(aarch_forward_to_shift_is_not_shifted_re): Remove.
* config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
From-SVN: r249740
Michael Meissner [Wed, 28 Jun 2017 13:07:12 +0000 (13:07 +0000)]
re PR ipa/81238 (Target clone support does not make default clone static.)
[gcc]
2017-06-28 Michael Meissner <meissner@linux.vnet.ibm.com>
PR ipa/81238
* multiple_target.c (create_dispatcher_calls): Set the default
clone to be static, not public.
[gcc/testsuite]
2017-06-28 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/81193
* lib/target-supports.exp
(check_ppc_cpu_supports_hw_available): New test to make sure
__builtin_cpu_supports works on power7 and newer.
From-SVN: r249737
Richard Biener [Wed, 28 Jun 2017 13:02:01 +0000 (13:02 +0000)]
tree-vect-loop.c (vectorizable_reduction): Move special cond reduction IV var creation ...
2017-06-28 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vectorizable_reduction): Move special
cond reduction IV var creation ...
(vect_create_epilog_for_reduction): ... here. Remove induction_index
parameter. Use STMT_VINFO_VECTYPE.
* tree-vect-slp.c (vect_get_constant_vectors): Properly reset
constant_p.
From-SVN: r249736
Martin Liska [Wed, 28 Jun 2017 12:47:24 +0000 (14:47 +0200)]
Do not allow to inline ifunc resolvers (PR ipa/81128).
2017-06-28 Martin Liska <mliska@suse.cz>
PR ipa/81128
* ipa-visibility.c (non_local_p): Handle visibility.
2017-06-28 Martin Liska <mliska@suse.cz>
PR ipa/81128
* c-attribs.c (handle_alias_ifunc_attribute): Append ifunc alias
to a function declaration.
2017-06-28 Martin Liska <mliska@suse.cz>
PR ipa/81128
* gcc.target/i386/pr81128.c: New test.
From-SVN: r249735
Martin Liska [Wed, 28 Jun 2017 12:45:59 +0000 (14:45 +0200)]
Introduce IntegerRange for options (PR driver/79659).
2017-06-28 Martin Liska <mliska@suse.cz>
PR driver/79659
* common.opt: Add IntegerRange to various options.
* opt-functions.awk (integer_range_info): New function.
* optc-gen.awk: Add integer_range_info to cl_options struct.
* opts-common.c (decode_cmdline_option): Handle
CL_ERR_INT_RANGE_ARG.
(cmdline_handle_error): Likewise.
* opts.c (print_filtered_help): Show valid interval in
when --help is provided.
* opts.h (struct cl_option): Add range_min and range_max fields.
* config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
2017-06-28 Martin Liska <mliska@suse.cz>
PR driver/79659
* c.opt: Add IntegerRange to various options.
2017-06-28 Martin Liska <mliska@suse.cz>
PR driver/79659
* g++.dg/opt/pr79659.C: New test.
From-SVN: r249734
Christophe Lyon [Wed, 28 Jun 2017 12:18:31 +0000 (12:18 +0000)]
copy-sign-1.c, mult-abs-2.c: Restrict to c99_runtime.
2017-06-28 Christophe Lyon <christophe.lyon@linaro.org>
* gcc.dg/tree-ssa/copy-sign-1.c: Add c99_runtime effective target
and options.
* gcc.dg/tree-ssa/mult-abs-2.c: Likewise.
From-SVN: r249733
Marc Glisse [Wed, 28 Jun 2017 09:22:30 +0000 (11:22 +0200)]
Simplify 3*x == 3*y for wrapping types
2017-06-28 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
(x * C EQ/NE y * C): New transformation.
gcc/testsuite/
* gcc.dg/tree-ssa/addadd.c: Remove test duplicated in addadd-2.c.
* gcc.dg/tree-ssa/mulcmp-1.c: New file.
From-SVN: r249732
Joseph Myers [Wed, 28 Jun 2017 09:21:16 +0000 (10:21 +0100)]
Use ucontext_t not struct ucontext in linux-unwind.h files.
Current glibc no longer gives the ucontext_t type the tag struct
ucontext, to conform with POSIX namespace rules. This requires
various linux-unwind.h files in libgcc, that were previously using
struct ucontext, to be fixed to use ucontext_t instead. This is
similar to the removal of the struct siginfo tag from siginfo_t some
years ago.
This patch changes those files to use ucontext_t instead. As the
standard name that should be unconditionally safe, so this is not
restricted to architectures supported by glibc, or conditioned on the
glibc version.
Tested compilation together with current glibc with glibc's
build-many-glibcs.py.
* config/aarch64/linux-unwind.h (aarch64_fallback_frame_state),
config/alpha/linux-unwind.h (alpha_fallback_frame_state),
config/bfin/linux-unwind.h (bfin_fallback_frame_state),
config/i386/linux-unwind.h (x86_64_fallback_frame_state,
x86_fallback_frame_state), config/m68k/linux-unwind.h (struct
uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext),
config/pa/linux-unwind.h (pa32_fallback_frame_state),
config/riscv/linux-unwind.h (riscv_fallback_frame_state),
config/sh/linux-unwind.h (sh_fallback_frame_state),
config/tilepro/linux-unwind.h (tile_fallback_frame_state),
config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use
ucontext_t instead of struct ucontext.
From-SVN: r249731
Christophe Lyon [Wed, 28 Jun 2017 09:15:59 +0000 (09:15 +0000)]
genmultilib (combination_space): Accept '+' in option names.
2017-06-28 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
* genmultilib (combination_space): Accept '+' in option names.
From-SVN: r249730
Jakub Jelinek [Wed, 28 Jun 2017 08:05:20 +0000 (10:05 +0200)]
cmov7.c (sgn): Renamed to ...
* gcc.target/i386/cmov7.c (sgn): Renamed to ...
(foo): ... this. Change constants such that it isn't matched
as __builtin_copysign, yet tests the combiner the same.
From-SVN: r249729
Martin Liska [Wed, 28 Jun 2017 07:59:23 +0000 (09:59 +0200)]
Bail out HARD_REGISTER vars in asan (PR sanitizer/81224).
2017-06-28 Martin Liska <mliska@suse.cz>
PR sanitizer/81224
* asan.c (instrument_derefs): Bail out inner references
that are hard register variables.
2017-06-28 Martin Liska <mliska@suse.cz>
PR sanitizer/81224
* gcc.dg/asan/pr81224.c: New test.
From-SVN: r249728
Jakub Jelinek [Wed, 28 Jun 2017 07:55:20 +0000 (09:55 +0200)]
re PR target/81175 (EXC_BAD_ACCESS in ::slpeel_duplicate_current_defs_from_edges(edge, edge, edge, edge) at is-a.h:192)
PR target/81175
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
rather than def_builtin_pure for __builtin_ia32_gatherpf*.
From-SVN: r249727
Martin Liska [Wed, 28 Jun 2017 07:54:14 +0000 (09:54 +0200)]
re PR bootstrap/81217 (Makefile:22754: warning: overriding recipe for target 'profiledbootstrap')
Fix PR bootstrap/81217
2017-06-28 Martin Liska <mliska@suse.cz>
PR bootstrap/81217
* Makefile.def: Remove superfluous bootstrap_target from
bootstrap_stage.
* Makefile.in: Re-generate the file.
From-SVN: r249726
Martin Liska [Wed, 28 Jun 2017 07:52:46 +0000 (09:52 +0200)]
Doxygen: add default location for filters and output folder.
2017-06-28 Martin Liska <mliska@suse.cz>
* gcc.doxy: Add default location for filters and output folder.
* filter_gcc_for_doxygen_new: Rename to filter_gcc_for_doxygen.
* filter_params.pl: Remove.
From-SVN: r249725
Eric Botcazou [Wed, 28 Jun 2017 07:51:35 +0000 (07:51 +0000)]
val-profiler-threads-1.c (main): Fix 2nd argument passed to pthread_join.
2017-06-28 Eric Botcazou <ebotcazou@adacore.com>
* gcc.dg/tree-prof/val-profiler-threads-1.c (main): Fix 2nd argument
passed to pthread_join.
From-SVN: r249723
Richard Biener [Wed, 28 Jun 2017 07:47:35 +0000 (07:47 +0000)]
tree-vectorizer.h (vect_get_vec_defs): Remove.
2017-06-28 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_get_vec_defs): Remove.
(vect_get_slp_defs): Adjust.
* tree-vect-loop.c (get_initial_defs_for_reduction): Split
out from ...
* tree-vect-slp.c (vect_get_constant_vectors): ... here and
simplify.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
get_initial_defs_for_reduction instead of vect_get_vec_defs.
(vectorizable_reduction): Adjust.
* tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
handling.
(vect_get_slp_defs): Likewise.
* tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
(vectorizable_bswap): Adjust.
(vectorizable_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_condition): Likewise.
(vectorizable_comparison): Likewise.
From-SVN: r249722
Michael Collison [Wed, 28 Jun 2017 07:07:49 +0000 (07:07 +0000)]
re PR target/68535 (arm.c: 5 * set but not used)
2017-06-28 Michael Collison <michael.collison@arm.com>
PR target/68535
* config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
set of base_reg
(arm_gen_movmemqi): Removed unused variable 'i'.
Convert 'for' loop into 'while' loop.
(arm_expand_prologue): Remove last unnecessary set of insn.
(thumb_pop): Remove unused variable 'pushed_words'.
(thumb_exit): Remove last unnecessary set of regs_to_pop.
From-SVN: r249721
Andreas Krebbel [Wed, 28 Jun 2017 07:03:35 +0000 (07:03 +0000)]
S/390: New option -mpic-data-is-text-relative
For hotpatching it might be required to introduce new .text parts
while keep using the existing .data/.bss sections. To make this work
the backend needs to be prevented from using relative addressing
between code and data.
This only works when already building PIC
since the addressing will then be handling via GOT.
gcc/testsuite/ChangeLog:
2017-06-28 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gcc.target/s390/nodatarel-1.c: New test.
gcc/ChangeLog:
2017-06-28 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/predicates.md: Use s390_rel_address_ok_p.
* config/s390/s390-protos.h: Add prototype of
s390_rel_address_ok_p.
* config/s390/s390.c (s390_got_symbol): New function.
(s390_rel_address_ok_p): New function.
(legitimize_pic_address): Use s390_rel_address_ok_p.
(s390_load_got): Use s390_got_symbol.
(s390_option_override): Issue error if
-mno-pic-data-is-text-relative is used without -fpic/-fPIC.
* config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
New macro.
* config/s390/s390.opt: New option mpic-data-is-text-relative.
From-SVN: r249720
Jerry DeLisle [Wed, 28 Jun 2017 02:17:40 +0000 (02:17 +0000)]
re PR fortran/80164 (ICE in gfc_format_decoder at gcc/fortran/error.c:933)
2017-06-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/80164
* trans-stmt.c (gfc_trans_call): If no code expr, use code->loc
as warning/error locus.
* gfortran.dg/array_temporaries_4.f90: New test.
From-SVN: r249718
GCC Administrator [Wed, 28 Jun 2017 00:16:30 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249717
Ian Lance Taylor [Tue, 27 Jun 2017 22:36:48 +0000 (22:36 +0000)]
runtime: adapt memory management to AIX mmap
On AIX:
* mmap does not allow to map an already mapped range,
* mmap range start at 0x30000000 for 32 bits processes,
* mmap range start at 0x70000000_00000000 for 64 bits processes
This is adapted from change 37845.
Issue golang/go#19200
Reviewed-on: https://go-review.googlesource.com/46772
From-SVN: r249713
Ian Lance Taylor [Tue, 27 Jun 2017 21:51:50 +0000 (21:51 +0000)]
syscall: ptrace fixes for s390
Fixes required now that we #include <linux/ptrace.h> in sysinfo.c.
Patch by Andreas Krebbel.
Reviewed-on: https://go-review.googlesource.com/46839
From-SVN: r249712
Nathan Sidwell [Tue, 27 Jun 2017 19:39:05 +0000 (19:39 +0000)]
pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to initialization point.
* pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to
initialization point. Don't unnecessarily check for ctor name.
From-SVN: r249709
Tim Shen [Tue, 27 Jun 2017 18:19:03 +0000 (18:19 +0000)]
re PR libstdc++/80187 (C++ variant should be trivially copy constructible if possible)
PR libstdc++/80187
* include/std/variant (variant::variant, variant::~variant,
variant::operator=): Implement triviality forwarding for four
special member functions.
* testsuite/20_util/variant/compile.cc: Tests.
From-SVN: r249706
Andrew Pinski [Tue, 27 Jun 2017 17:57:23 +0000 (17:57 +0000)]
match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
2017-06-27 Andrew Pinski <apinski@cavium.com>
* match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
(X * copysign (1.0, X)): New pattern.
(X * copysign (1.0, -X)): New pattern.
(copysign (-1.0, CST)): New pattern.
2017-06-27 Andrew Pinski <apinski@cavium.com>
* gcc.dg/tree-ssa/copy-sign-1.c: New testcase.
* gcc.dg/tree-ssa/copy-sign-2.c: New testcase.
* gcc.dg/tree-ssa/mult-abs-2.c: New testcase.
From-SVN: r249704
Joseph Myers [Tue, 27 Jun 2017 17:33:28 +0000 (18:33 +0100)]
Fix genmultilib reuse rule checks for large sets of option combinations.
genmultilib computes combination_space, a list of all combinations of
options in MULTILIB_OPTIONS that might have multilibs built for them
(some of which may end up not having multilibs built for them, and
some of those may end up being mapped to other multilibs with
MULTILIB_REUSE). It is then used to validate the right hand part of
MULTILIB_REUSE rules, checking with expr that combination_space
matches a basic regular expression derived from that right hand part.
There are two problems with this approach to validation:
* It requires that right hand part to have options in the same order
as in MULTILIB_OPTIONS, in contradiction to the documentation of
MULTILIB_REUSE saying that order does not matter there.
* combination_space can be so large that the expr call fails with an
E2BIG error. I have a local ARM configuration with 40 multilibs but
3840 combinations of options from MULTILIB_OPTIONS (so 3839 listed
in combination_space, since it doesn't list the default multilib)
and 996 MULTILIB_REUSE rules. This generates a combination_space
string longer than the Linux kernel's MAX_ARG_STRLEN (PAGE_SIZE *
32, the limit on the length of a single argv string), so that expr
cannot be run.
This patch changes the validation approach to generate a much shorter
extended regular expression for any sequence of multilib options in
any order, and uses that for the validation instead.
Tested with a build for arm-none-eabi --with-multilib-list=aprofile
(as a configuration that uses MULTILIB_REUSE).
* genmultilib (combination_space): Remove variable.
Validate reuse rules against regular expression for any sequence
of multilib options in any order.
From-SVN: r249703
Michael Collison [Tue, 27 Jun 2017 17:29:06 +0000 (17:29 +0000)]
aarch64-simd.md (aarch64_combine<mode>): Directly call aarch64_split_simd_combine.
2017-06-19 Michael Collison <michael.collison@arm.com>
* config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
call aarch64_split_simd_combine.
* (aarch64_combine_internal<mode>): Delete pattern.
* config/aarch64/aarch64.c (aarch64_split_simd_combine):
Allow register and subreg operands.
From-SVN: r249702
Nathan Sidwell [Tue, 27 Jun 2017 17:27:49 +0000 (17:27 +0000)]
cp-tree.h (CLASSTYPE_DESTRUCTORS): Rename to ...
* cp-tree.h (CLASSTYPE_DESTRUCTORS): Rename to ...
(CLASSTYPE_DESTRUCTOR): ... this.
* class.c (accessible_nvdtor_p)
maybe_warn_about_overly_private_class,
add_implicitly_declared_members,
clone_constructors_and_destructors, type_has_virtual_destructor):
Adjust for CLASSTYPE_DESTRUCTOR.
(deduce_noexcept_on_destructors): Absorb into ...
(check_bases_and_members): ... here.
* except.c (dtor_nothrow): Adjust for CLASSTYPE_DESTRUCTOR.
* init.c (build_delete): Likewise.
* parser.c (cp_parser_lookup_name): Likewise.
* pt.c (check_explicit_specialization): Likewise.
* rtti.c (emit_support_tinfos): Likewise.
* search.c (lookup_fnfields_idx_nolazy): Likewise.
(--This line, and those below, will be ignored--
M cp/cp-tree.h
M cp/search.c
M cp/init.c
M cp/class.c
M cp/rtti.c
M cp/except.c
M cp/ChangeLog
M cp/pt.c
M cp/parser.c
From-SVN: r249701
Jonathan Wakely [Tue, 27 Jun 2017 16:19:16 +0000 (17:19 +0100)]
PR libstdc++/81221 only run new test for check-parallel
PR libstdc++/81221
* testsuite/25_algorithms/sample/81221.cc: Disable except for
check-parallel.
From-SVN: r249697
Maya Rashish [Tue, 27 Jun 2017 16:10:15 +0000 (16:10 +0000)]
* longlong.h: Remove ns32k support.
From-SVN: r249696
Tom de Vries [Tue, 27 Jun 2017 15:51:48 +0000 (15:51 +0000)]
Show value of GOMP_OPENACC_DIM in libgomp nvptx plugin
2017-06-27 Tom de Vries <tom@codesourcery.com>
* plugin/plugin-nvptx.c (notify_var): New function.
(nvptx_exec): Use notify_var for GOMP_OPENACC_DIM.
From-SVN: r249695
Tom de Vries [Tue, 27 Jun 2017 15:51:37 +0000 (15:51 +0000)]
Use secure_getenv for GOMP_DEBUG
2017-06-27 Tom de Vries <tom@codesourcery.com>
* env.c (parse_unsigned_long_1): Factor out of ...
(parse_unsigned_long): ... here.
(parse_int_1): Factor out of ...
(parse_int): ... here.
(parse_int_secure): New function.
(initialize_env): Use parse_int_secure for GOMP_DEBUG.
* secure_getenv.h: Factor out of ...
* plugin/plugin-hsa.c: ... here.
* testsuite/libgomp.oacc-c-c++-common/gomp-debug-env.c: New test.
From-SVN: r249694
Nathan Sidwell [Tue, 27 Jun 2017 15:26:38 +0000 (15:26 +0000)]
Kill IDENTIFIER_TEMPLATE.
* cp-tree.h (lang_identifier): Remove class_template_info field.
(IDENTIFIER_TEMPLATE): Delete.
* name-lookup.c (constructor_name_full): Subsume into ...
(constructor_name): ... here. Don't check IDENTIFIER_TEMPLATE.
(constructor_name_p): Likewise.
* mangle.c (write_source_name): Likewise.
* ptree.c (cxx_print_identifier): Likewise.
From-SVN: r249693
Jonathan Wakely [Tue, 27 Jun 2017 14:44:50 +0000 (15:44 +0100)]
PR libstdc++/81221 fix namespace qualification for parallel mode
PR libstdc++/81221
* include/bits/stl_algo.h (sample): Qualify with _GLIBCXX_STD_A not
std.
* testsuite/25_algorithms/sample/81221.cc: New.
From-SVN: r249692
Jerome Lambourg [Tue, 27 Jun 2017 13:55:42 +0000 (13:55 +0000)]
vxworks.h (ASM_SPEC): Remove definition.
2017-06-27 Jerome Lambourg <lambourg@adacore.com>
* config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
specific need, just fallback on defaults.
(ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
From-SVN: r249691
Jerome Lambourg [Tue, 27 Jun 2017 13:47:26 +0000 (13:47 +0000)]
vxworks.h (DBX_REGISTER_NUMBER): Pick distinct map for 64bits.
2017-06-27 Jerome Lambourg <lambourg@adacore.com>
Olivier Hainque <hainque@adacore.com>
* config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
map for 64bits.
(TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
targets. Pick a default if no particular attempt applied.
(STACK_CHECK_PROTECT): Double for 64bit targets, which have
larger contexts.
Co-Authored-By: Olivier Hainque <hainque@adacore.com>
From-SVN: r249690
Jerome Lambourg [Tue, 27 Jun 2017 13:15:35 +0000 (13:15 +0000)]
config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
2017-06-27 Jerome Lambourg <lambourg@adacore.com>
gcc/
* config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
(x86_64-wrs-vxworks7): Likewise.
libgcc/
* config.host (i*86-wrs)vxworks7): Handle new acceptable triplet.
(x86_64-wrs-vxworks7): Likewise.
From-SVN: r249689
Olivier Hainque [Tue, 27 Jun 2017 12:20:05 +0000 (12:20 +0000)]
t-vxworks7: New file.
2017-06-27 Olivier Hainque <hainque@adacore.com>
* config/t-vxworks7: New file.
* config.host (*-*-vxworks7): Use it.
From-SVN: r249688
Marek Polacek [Tue, 27 Jun 2017 11:38:31 +0000 (11:38 +0000)]
re PR sanitizer/81223 (ICE in instrument_null at gcc/ubsan.c:1230)
PR sanitizer/81223
* ubsan.c (instrument_null): Check get_base_address's result for null.
* gcc.dg/ubsan/pr81223.c: New test.
From-SVN: r249687
Marc Glisse [Tue, 27 Jun 2017 09:42:38 +0000 (11:42 +0200)]
Simple reassoc transforms in match.pd
2017-06-27 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
gcc/testsuite/
* gcc.dg/tree-ssa/assoc-1.c: New file.
From-SVN: r249686
Marc Glisse [Tue, 27 Jun 2017 09:38:28 +0000 (11:38 +0200)]
fenv.h builtins
2017-06-27 Marc Glisse <marc.glisse@inria.fr>
* builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
(BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
New function types.
* builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
BUILT_IN_FEUPDATEENV): New builtins.
* tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
* tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
macros.
(builtin_structptr_types): Adjust size.
* tree.c (builtin_structptr_types): Add four entries.
From-SVN: r249685
Jerome Lambourg [Tue, 27 Jun 2017 09:15:55 +0000 (09:15 +0000)]
vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
2017-06-27 Jerome Lambourg <lambourg@adacore.com>
Olivier Hainque <hainque@adacore.com>
* config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
(TLS_SYM): New local macro, forcing reference to __tls__ on
link command lines for VxWorks 7 RTPs, triggering initialization
of tlsLib.
(VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
OS features TLS support, true for RTPs on VxWorks 7.
* config/vxworks.c (vxworks_override_options): Setup emutls
accordingly.
Co-Authored-By: Olivier Hainque <hainque@adacore.com>
From-SVN: r249684
Jakub Jelinek [Tue, 27 Jun 2017 09:13:53 +0000 (11:13 +0200)]
predict.c (test_prediction_value_range): Use -1U instead of -1 to avoid narrowing conversion warning.
* predict.c (test_prediction_value_range): Use -1U instead of -1
to avoid narrowing conversion warning.
* dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
to avoid narrowing conversion warning.
* opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
-1.
* optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
From-SVN: r249683
Paolo Carlini [Tue, 27 Jun 2017 09:00:52 +0000 (09:00 +0000)]
re PR c++/62046 (A catch in a class, without any try, compiles fine)
2017-06-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/62046
* g++.dg/parse/catch2.C: New.
From-SVN: r249682
Jerome Lambourg [Tue, 27 Jun 2017 08:54:53 +0000 (08:54 +0000)]
vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for 64bit configurations.
2017-06-27 Jerome Lambourg <lambourg@adacore.com>
* config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
64bit configurations.
(PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
(SIZE_TYPE): Likewise.
* config/vxworks.c (vxworks_emutls_var_fields): Use
long_unsigned_type_node instead of unsigned_type_node as the offset
field type, which is "pointer" mode in emutls.c.
From-SVN: r249681
Jakub Jelinek [Tue, 27 Jun 2017 07:23:54 +0000 (09:23 +0200)]
re PR sanitizer/81209 (-fsanitize=undefined ICE on darwin)
PR sanitizer/81209
* ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
* g++.dg/ubsan/pr81209.C: New test.
From-SVN: r249678
Jakub Jelinek [Tue, 27 Jun 2017 07:22:14 +0000 (09:22 +0200)]
re PR middle-end/81207 (tree check fail in simplify_builtin_call)
PR middle-end/81207
* gimple-fold.c (replace_call_with_call_and_fold): Handle
gimple_vuse copying separately from gimple_vdef copying.
* gcc.c-torture/compile/pr81207.c: New test.
From-SVN: r249677
Marek Polacek [Tue, 27 Jun 2017 07:16:29 +0000 (07:16 +0000)]
re PR bootstrap/81216 (bootstrap failed on i386 and powerpc64le)
PR bootstrap/81216
* parser.c (cp_parser_already_scoped_statement): Initialize
LOC_AFTER_LABELS.
* g++.dg/warn/Wmultistatement-macros-1.C: New test.
From-SVN: r249676
Prathamesh Kulkarni [Tue, 27 Jun 2017 06:13:54 +0000 (06:13 +0000)]
value-prof.c (free_hist): Remove call to memset and the enclosing if condition.
2017-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* value-prof.c (free_hist): Remove call to memset and the enclosing if
condition.
From-SVN: r249675
Ian Lance Taylor [Tue, 27 Jun 2017 04:21:40 +0000 (04:21 +0000)]
libgo: add misc/cgo files
Copy all the misc/cgo files from the gc toolchain into libgo/misc.
These will be used for testing purposes by later changes to the
gotools directory.
Reviewed-on: https://go-review.googlesource.com/46721
From-SVN: r249674
GCC Administrator [Tue, 27 Jun 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249673
Ian Lance Taylor [Mon, 26 Jun 2017 22:47:18 +0000 (22:47 +0000)]
Makefile.am (s-zdefaultcc): Don't record $(bindir) for defaultCC or defaultCXX.
* Makefile.am (s-zdefaultcc): Don't record $(bindir) for defaultCC
or defaultCXX.
* Makefile.in: Rebuild.
From-SVN: r249669
Jim Wilson [Mon, 26 Jun 2017 21:40:47 +0000 (21:40 +0000)]
Fix for SPEC CPU2017 621.wrf_s failure, add missing locking code.
libgfortran/
PR libfortran/81195
* io/unit.c (get_unit): Call __gthread_mutex_lock before newunit_stack
and newunit_tos references. Call __gthread_mutex_unlock afterward.
From-SVN: r249667
Jason Merrill [Mon, 26 Jun 2017 18:49:18 +0000 (14:49 -0400)]
PR c++/81215 - deduction failure with variadic TTP.
* pt.c (unify_bound_ttp_args): Restore old logic for C++14 and down.
From-SVN: r249664
Ian Lance Taylor [Mon, 26 Jun 2017 17:59:12 +0000 (17:59 +0000)]
syscall: don't define PtraceRegs for Alpha
It's now defined by mksysinfo.sh.
Patch by Uros Bizjak.
Reviewed-on: https://go-review.googlesource.com/46712
From-SVN: r249663
Ian Lance Taylor [Mon, 26 Jun 2017 17:56:14 +0000 (17:56 +0000)]
libgo: redefine ia64 struct names around linux/ptrace.h
Avoid https://sourceware.org/bugzilla/show_bug.cgi?id=762.
Patch by Andreas Schwab.
Reviewed-on: https://go-review.googlesource.com/46711
From-SVN: r249662
Martin Sebor [Mon, 26 Jun 2017 17:19:15 +0000 (17:19 +0000)]
PR c++/81169 - -Wclass-memaccess illegitimate warning related to volatile
gcc/cp/ChangeLog:
PR c++/81169
* call.c (maybe_warn_class_memaccess): Preserve explicit conversions
to detect casting away cv-qualifiers.
gcc/testsuite/ChangeLog:
PR c++/81169
* g++.dg/Wclass-memaccess-2.C: New test.
From-SVN: r249660
Jerome Lambourg [Mon, 26 Jun 2017 17:04:44 +0000 (17:04 +0000)]
config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines for all vxworks7 targets.
2017-06-26 Jerome Lambourg <lambourg@adacore.com>
Olivier Hainque <hainque@adacore.com>
* config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
for all vxworks7 targets.
* config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
(VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
(VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
variations for VX6/VX7 and 32/64bits later on in ...
(VXWORKS_LIB_SPEC): Leverage new macros.
(VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
Co-Authored-By: Olivier Hainque <hainque@adacore.com>
From-SVN: r249659
Nathan Sidwell [Mon, 26 Jun 2017 16:38:40 +0000 (16:38 +0000)]
cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
gcc/cp/
* cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
(DECL_COMPLETE_CONSTRUCTOR_P): Directly compare
identifier.
(DECL_BASE_CONSTRUCTOR_P, DECL_COMPLETE_DESTRUCTOR_P)
DECL_BASE_DESTRUCTOR_P, DECL_DELETING_DESTRUCTOR_P): Likewise.
(DECL_ASSIGNMENT_OPERATOR_P): Use IDENTIFIER_ASSIGN_OP_P.
* decl.c (grok_op_properties): Adjust identifier checking.
* init.c (expand_default_init): Adjust identifier descision.
* method.c (implicitly_declare_fn): Don't use
DECL_ASSIGNMENT_OPERATOR_P.
* search.c (lookup_fnfields_1): Use IDENTIFIER_CTOR_P,
IDENTIFIER_DTOR_P.
* call.c (in_charge_arg_for_name): Reimplement.
(build_special_member_call): Use IDENTIFIER_CDTOR_P,
IDENTIFIER_DTOR_P.
libcc1/
* libcp1plugin.cc (plugin_build_decl): Don't set
DECL_ASSIGNMENT_OPERATOR_P.
(--This line, and those below, will be ignored--
M gcc/cp/init.c
M gcc/cp/decl.c
M gcc/cp/method.c
M gcc/cp/cp-tree.h
M gcc/cp/call.c
M gcc/cp/search.c
M gcc/cp/ChangeLog
M libcc1/ChangeLog
M libcc1/libcp1plugin.cc
From-SVN: r249657
Jerome Lambourg [Mon, 26 Jun 2017 15:17:44 +0000 (15:17 +0000)]
vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define _VX_TOOL_FAMILY and _VX_TOOL to gnu.
2017-06-26 Jerome Lambourg <lambourg@adacore.com>
* config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
_VX_TOOL_FAMILY and _VX_TOOL to gnu.
From-SVN: r249656
Carl Love [Mon, 26 Jun 2017 14:29:48 +0000 (14:29 +0000)]
rs6000-c.c: Add support for built-in functions vector bool char vec_reve (vector bool char)...
gcc/ChangeLog:
2017-06-26 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-c.c: Add support for built-in functions
vector bool char vec_reve (vector bool char);
vector signed char vec_reve (vector signed char);
vector unsigned char vec_reve (vector unsigned char);
vector bool int vec_reve (vector bool int);
vector signed int vec_reve (vector signed int);
vector unsigned int vec_reve (vector unsigned int);
vector bool long long vec_reve (vector bool long long);
vector signed long long vec_reve (vector signed long long);
vector unsigned long long vec_reve (vector unsigned long long);
vector bool short vec_reve (vector bool short);
vector signed short vec_reve (vector signed short);
vector double vec_reve (vector double);
vector float vec_reve (vector float);
* config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
* config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
(altivec_vreve): New pattern.
* config/rs6000/altivec.h (vec_reve): New define.
* doc/extend.texi (vec_rev): Update the built-in documentation file
for the new built-in functions.
gcc/testsuite/ChangeLog:
2017-06-26 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-3-vec_reve-runnable.c:
Add new runnable test file for the vec_rev built-ins.
From-SVN: r249650
William Schmidt [Mon, 26 Jun 2017 14:19:33 +0000 (14:19 +0000)]
re PR tree-optimization/71815 (SLSR misses several PHI candidate cases)
[gcc]
2016-06-26 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/71815
* gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
function.
(find_basis_for_candidate): Call uses_consumed_by_stmt rather than
has_single_use.
(slsr_process_phi): Likewise.
(replace_uncond_cands_and_profitable_phis): Don't replace a
multiply candidate with a stride of 1 (copy or cast).
(phi_incr_cost): Call uses_consumed_by_stmt rather than
has_single_use.
(lowest_cost_path): Likewise.
(total_savings): Likewise.
[gcc/testsuite]
2016-06-26 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/71815
* gcc.dg/tree-ssa/slsr-35.c: Remove -fno-code-hoisting workaround.
* gcc.dg/tree-ssa/slsr-36.c: Likewise.
From-SVN: r249649
Bill Schmidt [Mon, 26 Jun 2017 14:17:35 +0000 (14:17 +0000)]
gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New function.
[gcc]
2016-06-26 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
function.
(find_basis_for_candidate): Call uses_consumed_by_stmt rather than
has_single_use.
(slsr_process_phi): Likewise.
(replace_uncond_cands_and_profitable_phis): Don't replace a
multiply candidate with a stride of 1 (copy or cast).
(phi_incr_cost): Call uses_consumed_by_stmt rather than
has_single_use.
(lowest_cost_path): Likewise.
(total_savings): Likewise.
[gcc/testsuite]
2016-06-26 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.dg/tree-ssa/slsr-35.c: Remove -fno-code-hoisting workaround.
* gcc.dg/tree-ssa/slsr-36.c: Likewise.
From-SVN: r249648
Renlin Li [Mon, 26 Jun 2017 13:28:32 +0000 (13:28 +0000)]
[PATCH][Testsuite]Use user defined memmove in gcc.c-torture/execute/builtins/memops-asm-lib.c
After the change r249278. bcopy is folded into memmove. And in newlib
aarch64 memmove implementation, it will call memcpy in certain conditions.
The memcpy defined in memops-asm-lib.c will abort when the test is running.
A user defined memmove function is defined to bypass the library one.
So that memcpy won't be called accidentally.
gcc/testsuite/
* gcc.c-torture/execute/builtins/memops-asm-lib.c (my_memmove): New.
* gcc.c-torture/execute/builtins/memops-asm.c (memmove): Declare memmove.
Co-Authored-By: Szabolcs Nagy <szabolcs.nagy@arm.com>
From-SVN: r249647
Richard Biener [Mon, 26 Jun 2017 10:34:49 +0000 (10:34 +0000)]
re PR target/81175 (EXC_BAD_ACCESS in ::slpeel_duplicate_current_defs_from_edges(edge, edge, edge, edge) at is-a.h:192)
2017-06-26 Richard Biener <rguenther@suse.de>
PR target/81175
* config/i386/i386.c (ix86_init_mmx_sse_builtins):
Use def_builtin_pure for all gather builtins.
* gfortran.dg/pr81175.f: New testcase.
From-SVN: r249645
Richard Biener [Mon, 26 Jun 2017 10:33:12 +0000 (10:33 +0000)]
re PR tree-optimization/81203 (tail recursion: internal compiler error: verify_ssa failed)
2017-06-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/81203
* tree-tailcall.c (find_tail_calls): Do not move stmts into
non-dominating BBs.
* gcc.dg/torture/pr81203.c: New testcase.
From-SVN: r249644
Marek Polacek [Mon, 26 Jun 2017 10:02:27 +0000 (10:02 +0000)]
re PR c/80116 (Warn about macros expanding to multiple statements)
PR c/80116
* c-common.h (warn_for_multistatement_macros): Declare.
* c-warn.c: Include "c-family/c-indentation.h".
(warn_for_multistatement_macros): New function.
* c.opt (Wmultistatement-macros): New option.
* c-indentation.c (guard_tinfo_to_string): No longer static.
Change the parameter type to "enum rid". Handle RID_SWITCH.
* c-indentation.h (guard_tinfo_to_string): Declare.
* c-parser.c (c_parser_if_body): Set the location of the
body of the conditional after parsing all the labels. Call
warn_for_multistatement_macros.
(c_parser_else_body): Likewise.
(c_parser_switch_statement): Likewise.
(c_parser_while_statement): Likewise.
(c_parser_for_statement): Likewise.
(c_parser_statement): Add a default argument. Save the location
after labels have been parsed.
(c_parser_c99_block_statement): Likewise.
* parser.c (cp_parser_statement): Add a default argument. Save the
location of the expression-statement after labels have been parsed.
(cp_parser_implicitly_scoped_statement): Set the location of the
body of the conditional after parsing all the labels. Call
warn_for_multistatement_macros.
(cp_parser_already_scoped_statement): Likewise.
* doc/invoke.texi: Document -Wmultistatement-macros.
* c-c++-common/Wmultistatement-macros-1.c: New test.
* c-c++-common/Wmultistatement-macros-2.c: New test.
* c-c++-common/Wmultistatement-macros-3.c: New test.
* c-c++-common/Wmultistatement-macros-4.c: New test.
* c-c++-common/Wmultistatement-macros-5.c: New test.
* c-c++-common/Wmultistatement-macros-6.c: New test.
* c-c++-common/Wmultistatement-macros-7.c: New test.
* c-c++-common/Wmultistatement-macros-8.c: New test.
* c-c++-common/Wmultistatement-macros-9.c: New test.
* c-c++-common/Wmultistatement-macros-10.c: New test.
* c-c++-common/Wmultistatement-macros-11.c: New test.
From-SVN: r249643
Eric Botcazou [Mon, 26 Jun 2017 09:49:08 +0000 (09:49 +0000)]
* c-c++-common/ubsan/sanitize-recover-7.c (dg-options): Add -w.
From-SVN: r249641
Maxim Ostapenko [Mon, 26 Jun 2017 09:44:49 +0000 (09:44 +0000)]
* MAINTAINERS: Add myself to Write After Approval.
From-SVN: r249640
Christophe Lyon [Mon, 26 Jun 2017 09:25:55 +0000 (09:25 +0000)]
[ARM, testsuite] Add -mfloat-abi=hard to arm_neon_ok
2017-06-02 Christophe Lyon <christophe.lyon@linaro.org>
gcc/testsuite/
* lib/target-supports.exp
(check_effective_target_arm_neon_ok_nocache): Add flags with
-mfloat-abi=hard. Include arm_neon.h.
(check_effective_target_arm_neon_ok_no_float_abi_nocache): New.
(check_effective_target_arm_neon_ok_no_float_abi): New.
* gcc.target/arm/lto/pr65837_0.c: Require
arm_neon_ok_no_float_abi. Add -mfpu=neon to dg-lto-options.
* gcc.target/arm/lto/pr65837-attr_0.c: Require
arm_neon_ok_no_float_abi. Remove dg-suppress-ld-options.
gcc/
* doc/sourcebuild.texi (ARM-specific attributes): Document new
arm_neon_ok_no_float_abi effective target.
From-SVN: r249639
Richard Biener [Mon, 26 Jun 2017 07:19:37 +0000 (07:19 +0000)]
re PR tree-optimization/80928 (SLP vectorization does not handle induction in outer loop vectorization)
2017-06-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/80928
* cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
(copy_bbs): Set BB_DUPLICATED flag early.
(execute_on_growing_pred): Do not execute for BB_DUPLICATED
marked blocks.
(execute_on_shrinking_pred): Likewise.
* tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
BB_DUPLICATED blocks.
* tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
iterate over all PHIs considering removal of *gsi.
From-SVN: r249638
GCC Administrator [Mon, 26 Jun 2017 00:16:27 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249637
GCC Administrator [Sun, 25 Jun 2017 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249632
Jerry DeLisle [Sat, 24 Jun 2017 21:22:08 +0000 (21:22 +0000)]
re PR fortran/81160 (arith.c:2009: bad statement order ?)
2017-06-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/81160
* arith.c (wprecision_int_real): Set return value before
mpz_clear and then return after it.
From-SVN: r249627
Paolo Carlini [Sat, 24 Jun 2017 19:31:24 +0000 (19:31 +0000)]
re PR c++/62315 (do not print typename in diagnostic if the original code does not have it)
/cp
2017-06-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/62315
* parser.c (cp_parser_diagnose_invalid_type_name): Don't print
'typename' in error messages about missing 'typename'.
/testsuite
2017-06-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/62315
* g++.dg/parse/typedef2.C: Specify a dg-error string.
From-SVN: r249626
Thomas Koenig [Sat, 24 Jun 2017 07:07:56 +0000 (07:07 +0000)]
re PR fortran/52473 (CSHIFT slow - inline it?)
2017-06-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/52473
* Makefile.am: Add i_cshift1a_c. Add rules to generate files
from cshift1a.m4.
* Makefile.in: Regenerated.
* m4/cshift1a.m4: New file.
* m4/cshift.m4 (cshift1): Split up inner loop by removing
condition. Use memcpy where possible. Call helper functions
based on dtype.
* libgfortran.h: Add prototypes for cshift1_16_c10,
cshift1_16_c16, cshift1_16_c4, cshift1_16_c8, cshift1_16_i1,
cshift1_16_i16, cshift1_16_i2, cshift1_16_i4, cshift1_16_i8,
cshift1_16_r10, cshift1_16_r16, cshift1_16_r4, cshift1_16_r8,
cshift1_4_c10, cshift1_4_c16, cshift1_4_c4, cshift1_4_c8,
cshift1_4_i1, cshift1_4_i16, cshift1_4_i2, cshift1_4_i4,
cshift1_4_i8, cshift1_4_r10, cshift1_4_r16, cshift1_4_r4,
cshift1_4_r8, cshift1_8_c10, cshift1_8_c16, cshift1_8_c4,
cshift1_8_c8, cshift1_8_i1, cshift1_8_i16, cshift1_8_i2,
cshift1_8_i4, cshift1_8_i8, cshift1_8_r10, cshift1_8_r16,
cshift1_8_r4 and cshift1_8_r8.
* generated/cshift1_16_c10.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_c16.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_c4.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_c8.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_i1.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_i16.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_i2.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_i4.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_i8.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_r10.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_r16.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_r4.c: New file, generated from cshift1a.m4.
* generated/cshift1_16_r8.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_c10.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_c16.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_c4.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_c8.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_i1.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_i16.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_i2.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_i4.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_i8.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_r10.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_r16.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_r4.c: New file, generated from cshift1a.m4.
* generated/cshift1_4_r8.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_c10.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_c16.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_c4.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_c8.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_i1.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_i16.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_i2.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_i4.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_i8.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_r10.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_r16.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_r4.c: New file, generated from cshift1a.m4.
* generated/cshift1_8_r8.c: New file, generated from cshift1a.m4.
2017-06-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/52473
* gfortran.dg/cshift_2.f90: New test.
From-SVN: r249620
GCC Administrator [Sat, 24 Jun 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249619
Jason Merrill [Fri, 23 Jun 2017 23:29:51 +0000 (19:29 -0400)]
PR c++/79056 - C++17 ICE with invalid template syntax.
* parser.c (cp_parser_simple_type_specifier): Don't assume that type
is a TYPE_DECL.
(cp_parser_check_for_invalid_template_id): Handle TYPE_DECL.
* pt.c (template_placeholder_p): New.
* cp-tree.h: Declare it.
From-SVN: r249614
Jim Wilson [Fri, 23 Jun 2017 21:40:55 +0000 (21:40 +0000)]
Fix missing Aarch64 falkor/qdf24xx options.
gcc/
* doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
qdf24xx.
From-SVN: r249613
Jim Wilson [Fri, 23 Jun 2017 21:01:32 +0000 (21:01 +0000)]
Testcase for FSF GCC bug 79794.
gcc/testsuite/
PR middle-end/79794
* gcc.target/aarch64/pr79794.c: New.
From-SVN: r249612
Ian Lance Taylor [Fri, 23 Jun 2017 20:19:40 +0000 (20:19 +0000)]
runtime: complete defer handling in CgocallBackDone
When C code calls a Go function, it actually calls a function
generated by cgo. That function is written in Go, and, among other
things, it calls the real Go function like this:
CgocallBack()
defer CgocallBackDone()
RealGoFunction()
The deferred CgocallBackDone function enters syscall mode as we return
to C. Typically the C function will then eventually return to Go.
However, in the case where the C function is running on a thread
created in C, it will not return to Go. For that case we will have
allocated an m struct, with an associated g struct, for the duration
of the Go code, and when the Go is complete we will return the m and g
to a free list.
That all works, but we are running in a deferred function, which means
that we have been invoked by deferreturn, and deferreturn expects to
do a bit of cleanup to record that the defer has been completed. Doing
that cleanup while using an m and g that have already been returned to
the free list is clearly a bad idea. It was kind of working because
deferreturn was holding the g pointer in a local variable, but there
were races with some other thread picking up and using the newly freed g.
It was also kind of working because of a special check in freedefer;
that check is no longer necessary.
This patch changes the special case of releasing the m and g to do the
defer cleanup in CgocallBackDone itself.
This patch also checks for the special case of a panic through
CgocallBackDone. In that special case, we don't want to release the m
and g. Since we are returning to C code that was not called by Go
code, we know that the panic is not going to be caught and we are
going to exit the program. So for that special case we keep the m and
g structs so that the rest of the panic code can use them.
Reviewed-on: https://go-review.googlesource.com/46530
From-SVN: r249611
Ian Lance Taylor [Fri, 23 Jun 2017 20:11:27 +0000 (20:11 +0000)]
cmd/go: don't require GOROOT to exist for gccgo
Reviewed-on: https://go-review.googlesource.com/46590
From-SVN: r249609
Aaron Sawdey [Fri, 23 Jun 2017 19:59:42 +0000 (19:59 +0000)]
rs6000-string.c: (expand_block_clear...
2017-06-23 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
* config/rs6000/rs6000-string.c: (expand_block_clear,
do_load_for_compare, select_block_compare_mode,
compute_current_alignment, expand_block_compare,
expand_strncmp_align_check, expand_strn_compare,
expand_block_move, rs6000_output_load_multiple)
Move functions related to string/block move/compare
to a separate file.
* config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
* config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
for this function which is now used in two files.
* config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
* config.gcc: Add rs6000-string.o to extra_objs for
targets powerpc*-*-* and rs6000*-*-*.
From-SVN: r249608
Michael Meissner [Fri, 23 Jun 2017 18:25:10 +0000 (18:25 +0000)]
re PR target/80510 (Optimize Power7/power8 Altivec load/stores)
[gcc]
2017-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/80510
* config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
32-bit, since indexed is not valid for DImode.
(mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
(define_peephole2 for Altivec d-form load): Add 32-bit support.
(define_peephole2 for Altivec d-form store): Likewise.
[gcc/testsuite]
2017-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/80510
* gcc.target/powerpc/pr80510-1.c: Allow test to run on 32-bit.
* gcc.target/powerpc/pr80510-2.c: Likewise.
From-SVN: r249607
Michael Meissner [Fri, 23 Jun 2017 18:08:31 +0000 (18:08 +0000)]
re PR ipa/81185 (Target clones support generates awkward names)
2017-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
PR ipa/81185
* multiple_target.c (create_dispatcher_calls): Only create the
dispatcher call if the function is the default clone of a
versioned function.
From-SVN: r249605
Jakub Jelinek [Fri, 23 Jun 2017 17:46:21 +0000 (19:46 +0200)]
trans.c (gnat_to_gnu): Initialize sync to false to avoid UB.
* gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false to
avoid UB.
From-SVN: r249604
Segher Boessenkool [Fri, 23 Jun 2017 17:37:27 +0000 (19:37 +0200)]
Fix expand_builtin_atomic_fetch_op for pre-op (PR80902)
__atomic_add_fetch adds a value to some memory, and returns the result.
If there is no direct support for this, expand_builtin_atomic_fetch_op
is asked to implement this as __atomic_fetch_add (which returns the
original value of the mem), followed by the addition. Now, the
__atomic_add_fetch could have been a tail call, but we shouldn't
perform the __atomic_fetch_add as a tail call: following code would
not be executed, and in fact thrown away because there is a barrier
after tail calls.
This fixes it.
PR middle-end/80902
* builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
a call, force the call to not be a tail call.
From-SVN: r249603
Eric Botcazou [Fri, 23 Jun 2017 17:33:43 +0000 (19:33 +0200)]
os-unix-sysdep.c (__cilkrts_getticks): Adjust preprocessor test for SPARC/Linux.
* runtime/config/sparc/os-unix-sysdep.c (__cilkrts_getticks): Adjust
preprocessor test for SPARC/Linux.
* runtime/jmpbuf.h (CILK_[UN]ADJUST_SP): Likewise.
From-SVN: r249601
Ian Lance Taylor [Fri, 23 Jun 2017 17:10:18 +0000 (17:10 +0000)]
os: align siginfo argument to waitid
Backport https://golang.org/cl/46511 from gc trunk, as it may fix a
bug reported for gccgo running on MIPS
(https://groups.google.com/d/msg/golang-dev/sDg-t1_DPw0/-AJmLxgPBQAJ).
Reviewed-on: https://go-review.googlesource.com/46571
From-SVN: r249599
Ian Lance Taylor [Fri, 23 Jun 2017 16:05:44 +0000 (16:05 +0000)]
runtime: don't crash if no p in kickoff
The kickoff function for g0 can be invoked without a p, for example
from mcall(exitsyscall0) in exitsyscall after exitsyscall has cleared
the p field. The assignment gp.param = nil will invoke a write barrier.
If gp.param is not already nil, this will require a p. Avoid the problem
for a specific case that is known to be OK: when the value in gp.param
is a *g.
Reviewed-on: https://go-review.googlesource.com/46512
From-SVN: r249595