Jason Merrill [Tue, 13 Nov 2018 04:34:59 +0000 (23:34 -0500)]
Implement P0780R2, pack expansion in lambda init-capture.
Mostly this was straightforward; the tricky bit was finding, in the
instantiation, the set of capture proxies built when instantiating the
init-capture. The comment in lookup_init_capture_pack goes into detail.
* parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
* pt.c (tsubst_pack_expansion): Handle init-capture packs.
(lookup_init_capture_pack): New.
(tsubst_expr) [DECL_EXPR]: Use it.
(tsubst_lambda_expr): Remember field pack expansions for
init-captures.
From-SVN: r266052
Jason Merrill [Tue, 13 Nov 2018 04:33:57 +0000 (23:33 -0500)]
cp-tree.h (struct cp_evaluated): New.
* cp-tree.h (struct cp_evaluated): New.
This patch simplifies the saving/clearing/restoring of
cp_unevaluated_operand and c_inhibit_evaluation_warnings in the presence of
mid-block returns.
* init.c (get_nsdmi): Use it.
* parser.c (cp_parser_enclosed_template_argument_list): Use it.
* pt.c (coerce_template_parms, tsubst_aggr_type): Use it.
From-SVN: r266051
Jason Merrill [Tue, 13 Nov 2018 04:32:25 +0000 (23:32 -0500)]
Change __cpp_explicit_bool to __cpp_conditional_explicit.
People objected to the old macro name as unclear, so it was changed.
* c-cppbuiltin.c (c_cpp_builtins): Change __cpp_explicit_bool to
__cpp_conditional_explicit.
From-SVN: r266050
Alan Modra [Tue, 13 Nov 2018 03:55:30 +0000 (14:25 +1030)]
[RS6000] secondary_reload and find_replacement
This patch removes a call only necessary when using reload. It also
corrects a PRE_DEC address offset.
* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
offset for PRE_DEC.
(rs6000_secondary_reload_gpr): Don't call find_replacement.
From-SVN: r266049
Sandra Loosemore [Tue, 13 Nov 2018 03:40:53 +0000 (22:40 -0500)]
re PR middle-end/59634 (Documentation (info/man page): lack of information for cache size parameters (--param))
2018-11-13 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/59634
gcc/
* doc/invoke.texi (Optimize Options): Clarify that the
l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
apply to data cache size.
From-SVN: r266048
Alan Modra [Tue, 13 Nov 2018 03:26:40 +0000 (13:56 +1030)]
[RS6000] Comment fixes
* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.
From-SVN: r266047
Alan Modra [Tue, 13 Nov 2018 03:20:22 +0000 (13:50 +1030)]
[RS6000] Rotate testcase
The testcase exercises one of the rotate patterns.
gcc/
* config/rs6000/predicates.md (logical_const_operand),
(logical_operand): Correct comment.
gcc/testsuite/
* gcc.target/powerpc/rotmask.c: New.
From-SVN: r266046
Alan Modra [Tue, 13 Nov 2018 03:12:45 +0000 (13:42 +1030)]
[RS6000] Hide insn not needing to be public
* config/rs6000/rs6000.md (addsi3_high): Prefix with '*'.
From-SVN: r266045
Alan Modra [Tue, 13 Nov 2018 03:03:10 +0000 (13:33 +1030)]
[RS6000] Ignore "c", "l" and "h" for register preference
This catches a few places where move insn patterns don't slightly
disparage CTR, LR and VRSAVE regs. Also fixes the doc for the rs6000
h constraint, and removes an r->cl alternative covered by r->h.
* gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
description.
* config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case
covered by alternative.
(movcc_internal1): Ignore h for register preference.
(mov<mode>_hardfloat64): Likewise.
(mov<mode>_softfloat): Ignore c, l, h for register preference.
From-SVN: r266044
Sandra Loosemore [Tue, 13 Nov 2018 02:06:30 +0000 (21:06 -0500)]
re PR preprocessor/47823 (#pragma once is documented in a weird spot)
2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
PR preprocessor/47823
gcc/
* doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
documentation to...
(Pragmas): ...here.
* doc/extend.texi (Pragmas): Note additional pragmas documented
in the CPP manual.
From-SVN: r266043
GCC Administrator [Tue, 13 Nov 2018 00:16:30 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r266042
Kugan Vivekanandarajah [Mon, 12 Nov 2018 23:43:56 +0000 (23:43 +0000)]
re PR target/86677 (popcount builtin detection is breaking some kernel build)
gcc/ChangeLog:
2018-11-13 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/86677
PR middle-end/87528
* tree-scalar-evolution.c (expression_expensive_p): Make BUILTIN POPCOUNT
as expensive when backend does not define it.
gcc/testsuite/ChangeLog:
2018-11-13 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/86677
PR middle-end/87528
* g++.dg/tree-ssa/pr86544.C: Run only for target supporting popcount
pattern.
* gcc.dg/tree-ssa/popcount.c: Likewise.
* gcc.dg/tree-ssa/popcount2.c: Likewise.
* gcc.dg/tree-ssa/popcount3.c: Likewise.
* gcc.target/aarch64/popcount4.c: New test.
* lib/target-supports.exp (check_effective_target_popcountl): New.
From-SVN: r266039
Fredrik Noring [Mon, 12 Nov 2018 23:16:40 +0000 (23:16 +0000)]
MIPS: Default to --with-llsc for the R5900 Linux target as well
The Linux kernel requires and emulates LL and SC for the R5900 too. The
special --without-llsc default for the R5900 is therefore not applicable
in that case.
Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org>
2018-11-12 Fredrik Noring <noring@nocrew.org>
gcc/
* config.gcc: Update with-llsc defaults for MIPS r5900.
From-SVN: r266038
Martin Liska [Mon, 12 Nov 2018 21:01:38 +0000 (22:01 +0100)]
Instrument only selected files (PR gcov-profile/87442).
2018-11-12 Martin Liska <mliska@suse.cz>
PR gcov-profile/87442
* common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
options.
* doc/invoke.texi: Document them.
* tree-profile.c (parse_profile_filter): New.
(parse_profile_file_filtering): Likewise.
(release_profile_file_filtering): Likewise.
(include_source_file_for_profile): Likewise.
(tree_profiling): Filter source files based on the
newly added options.
2018-11-12 Martin Liska <mliska@suse.cz>
PR gcov-profile/87442
* gcc.dg/profile-filtering-1.c: New test.
* gcc.dg/profile-filtering-2.c: New test.
From-SVN: r266037
Martin Liska [Mon, 12 Nov 2018 20:58:02 +0000 (21:58 +0100)]
Fix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86.
2018-11-12 Martin Liska <mliska@suse.cz>
PR target/87903
* doc/extend.texi: Add missing values for __builtin_cpu_is and
__builtin_cpu_supports for x86 target.
From-SVN: r266036
Sandra Loosemore [Mon, 12 Nov 2018 19:08:37 +0000 (14:08 -0500)]
re PR middle-end/21110 (incorrect documentat for high and lo_sum RTL operators)
2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/21110
gcc/
* doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
have to be Pmode.
(Arithmetic): Likewise for "lo_sum".
From-SVN: r266035
Martin Sebor [Mon, 12 Nov 2018 18:02:41 +0000 (18:02 +0000)]
PR c/81824 - Warn for missing attributes with function aliases
gcc/testsuite/ChangeLog:
* gcc.dg/Wattribute-alias.c: Require ifunc support.
From-SVN: r266034
Renlin Li [Mon, 12 Nov 2018 16:47:24 +0000 (16:47 +0000)]
[PR87815]Don't generate shift sequence for load replacement in DSE when the mode size is not compile-time constant
The patch adds a check if the gap is compile-time constant.
This happens when dse decides to replace the load with previous store value.
The problem is that, shift sequence could not accept compile-time non-constant
mode operand.
gcc/
2018-11-12 Renlin Li <renlin.li@arm.com>
PR target/87815
* dse.c (get_stored_val): Add check for compile-time
constantness of gap.
gcc/testsuite/
2018-11-12 Renlin Li <renlin.li@arm.com>
PR target/87815
* gcc.target/aarch64/sve/pr87815.c: New.
From-SVN: r266033
Jonathan Wakely [Mon, 12 Nov 2018 15:25:40 +0000 (15:25 +0000)]
PR libstdc++/87963 fix build for 64-bit mingw
PR libstdc++/87963
* src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
unsigned to uint32_t.
(chunk): Fix static assertion for 64-bit targets that aren't LP64.
(bigblock::all_ones): Fix undefined shift.
From-SVN: r266032
Sudakshina Das [Mon, 12 Nov 2018 14:58:39 +0000 (14:58 +0000)]
[GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM
This patch adds -march=armv8.5-a to the Arm backend.
Armv8.5-A also adds two new security features:
- Speculation Barrier instruction
- Execution and Data Prediction Restriction Instructions
These are made optional to all older Armv8-A versions. Thus we are adding two
new options "+sb" and "+predres" to all older Armv8-A. These are passed on to
the assembler and have no code generation effects and have already gone in the
trunk of binutils.
*** gcc/ChangeLog ***
2018-11-12 Sudakshina Das <sudi.das@arm.com>
* config/arm/arm-cpus.in (armv8_5, sb, predres): New features.
(ARMv8_5a): New fgroup.
(armv8.5-a): New arch.
(armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
sb and predres.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
* config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
* config/arm/t-multilib (v8_5_a_simd_variants): New variable.
Add matching rules for -march=armv8.5-a and extensions.
* doc/invoke.texi (ARM options): Document -march=armv8.5-a.
Add sb and predres to all armv8-a except armv8.5-a.
*** gcc/testsuite/ChangeLog ***
2018-11-12 Sudakshina Das <sudi.das@arm.com>
* gcc.target/arm/multilib.exp: Add some -march=armv8.5-a
combination tests.
From-SVN: r266031
Richard Biener [Mon, 12 Nov 2018 14:53:36 +0000 (14:53 +0000)]
2018-11=12 Richard Biener <rguenther@suse.de>
* tree-vrp.h (value_range[_base]::set): Make public. Provide
overload for single value.
(value_range[_base]::set_nonnull): New.
(value_range[_base]::set_null): Likewise.
(value_range): Document bitmap copying behavior, mark
copy constructor and assignment operator deleted.
(value_range::move): New.
(value_range::set_and_canonicalize): Default bitmap to zero.
(set_value_range_to_nonnull): Remove.
(set_value_range_to_null): Likewise.
(set_value_range): Likewise.
(set_value_range_to_value): Likewise.
(extract_range_from_unary_expr): Work on value_range_base.
(extract_range_from_binary_expr_1): Likewise. Rename to...
(extract_range_from_binary_expr): ... this.
* tree-vrp.c (value_range::update): Clear equiv bitmap
if required.
(value_range::move): New, move equiv bitmap.
(value_range_base::set_undefined): Avoid assignment.
(value_range::set_undefined): Likewise.
(value_range_base::set_varying): Likewise.
(value_range::set_varying): Likewise.
(set_value_range): Remove.
(value_range_base::set): New overload for value.
(value_range::set): Likewise.
(set_value_range_to_nonnull): Remove.
(value_range_base::set_nonnull): New.
(value_range::set_nonnull): Likewise.
(set_value_range_to_null): Remove.
(value_range_base::set_null): New.
(value_range::set_null): Likewise.
(range_is_null): Work on value_range_base.
(range_is_nonnull): Likewise.
(ranges_from_anti_range): Likewise.
(extract_range_into_wide_ints): Likewise.
(extract_range_from_multiplicative_op): Likewise.
(extract_range_from_binary_expr): Likewise. Update for API changes.
(extract_range_from_unary_expr): Likewise. Remove OBJ_TYPE_REF
handling.
(value_range::intersect_helper): Avoid copy and assignment.
(value_range::union_helper): Likewise.
(determine_value_range_1): Adjust.
* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
Avoid assignment by using move.
(evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Likewise.
* tree-ssanames.c (get_range_info): Likewise.
* vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
* vr-values.c (vr_values::get_value_range): Adjust.
(vr_values::update_value_range): Likewise.
(symbolic_range_based_on_p): Work on value_range_base.
(vr_values::extract_range_from_binary_expr): Use value_range_base.
(vr_values::extract_range_from_unary_expr): Likewise.
(vr_values::extract_range_from_cond_expr): Avoid assignment.
(vr_values::extract_range_from_comparison): Adjust.
(vr_values::check_for_binary_op_overflow): Use value_range_base.
(vr_values::extract_range_basic): Adjust.
(vr_values::adjust_range_with_scev): Likewise.
(vr_values::vrp_visit_assignment_or_call): Likewise.
(vr_values::get_vr_for_comparison): Change API to avoid
assignment and copy construction.
(vr_values::compare_name_with_value): Adjust accordingly.
(vr_values::compare_names): Likewise.
(vr_values::extract_range_from_phi_node): Avoid assignment and
bogus in-place modify of equiv bitmap.
(vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
for extract_range_from_unary_expr API change.
* ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.
From-SVN: r266030
Eric Botcazou [Mon, 12 Nov 2018 12:00:37 +0000 (12:00 +0000)]
* config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.
From-SVN: r266029
Richard Biener [Mon, 12 Nov 2018 11:59:32 +0000 (11:59 +0000)]
tree-vrp.h (value_range_base::symbolic_p, [...]): Move from value_range.
2018-11-12 Richard Biener <rguenther@suse.de>
* tree-vrp.h (value_range_base::symbolic_p,
value_range_base::constant_p, value_range_base::zero_p,
value_range_base::singleton_p): Move from value_range.
(value_range::dump): Add.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Use set_varying.
* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
(value_range::constant_p): Likewise.
(value_range::singleton_p): Likewise.
(value_range_base::dump): Add.
(set_value_range_to_undefined): Remove.
(set_value_range_to_varying): Likewise.
(range_int_cst_p): Take value_range_base argument.
(range_int_cst_singleton_p): Likewise.
(value_range_constant_singleton): Likewise.
(vrp_set_zero_nonzero_bits): Likewise.
(extract_range_from_multiplicative_op): Use set_varying.
(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
(extract_range_from_unary_expr): Likewise.
(dump_value_range_base): Change to overload of dump_value_range.
(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
(vrp_prop::visit_stmt): Likewise.
(value_range::intersect_helper): Likewise.
(value_range::union_helper): Likewise.
(determine_value_range_1): Likewise.
From-SVN: r266028
Richard Biener [Mon, 12 Nov 2018 11:16:36 +0000 (11:16 +0000)]
tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
2018-11-12 Richard Biener <rguenther@suse.de>
* tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
(set_value_range_to_null): Likewise.
* vr-values.c (vr_values::extract_range_from_comparison):
Clear equiv for constant singleton ranges.
From-SVN: r266027
Wei Xiao [Mon, 12 Nov 2018 08:52:37 +0000 (08:52 +0000)]
sse.md: Combine VFIXUPIMM* patterns
2018-11-12 Wei Xiao <wei3.xiao@intel.com>
* config/i386/sse.md: Combine VFIXUPIMM* patterns
(<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
(<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
(<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
(avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
(avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.
From-SVN: r266026
Sandra Loosemore [Mon, 12 Nov 2018 06:23:16 +0000 (01:23 -0500)]
re PR c/69502 (attribute aligned reduces alignment contrary to documentation)
2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
PR c/69502
gcc/
* doc/extend.texi (Common Type Attributes): For the align type
attribute, copy language about decreasing alignment from the
corresponding variable attribute.
From-SVN: r266025
Xianmiao Qu [Mon, 12 Nov 2018 02:36:45 +0000 (02:36 +0000)]
csky.md (*fpuv2_nmulsf3_1, [...]): Handle -frounding-math.
2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
gcc/
* config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
-frounding-math.
gcc/testsuite
* gcc.target/csky/fnmul-1.c: New.
* gcc.target/csky/fnmul-2.c: New.
* gcc.target/csky/fnmul-3.c: New.
* gcc.target/csky/fnmul-4.c: New.
From-SVN: r266024
GCC Administrator [Mon, 12 Nov 2018 00:16:28 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r266023
Sandra Loosemore [Sun, 11 Nov 2018 22:46:00 +0000 (17:46 -0500)]
re PR c++/43105 (Document restrictions on mixing -fno-rtti and -frtti)
2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
PR c++/43105
gcc/
* doc/invoke.texi (C++ Dialect Options): Add warning about mixing
-frtti and -fno-rtti code.
From-SVN: r266020
Hans-Peter Nilsson [Sun, 11 Nov 2018 22:21:28 +0000 (22:21 +0000)]
Fix copypasto in las ChangeLog.
From-SVN: r266019
Hans-Peter Nilsson [Sun, 11 Nov 2018 22:20:19 +0000 (22:20 +0000)]
re PR libstdc++/54005 (Use __atomic_always_lock_free in libstdc++ is_lock_free instead of __atomic_is_lock_free)
PR libstdc++-v3/54005
* include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
__atomic_base<_PTp*>::is_lock_free()): Call __atomic_always_lock_free
with the type-derived _S_alignment instead of __alignof the object.
* include/std/atomic (atomic<T>::is_lock_free()): Likewise.
From-SVN: r266018
Sandra Loosemore [Sun, 11 Nov 2018 18:39:10 +0000 (13:39 -0500)]
re PR c/26366 (__builtin_expect needs better documentation)
2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
PR c/26366
gcc/
* doc/extend.texi (Other Builtins): Document probability associated
with __builtin_expect.
From-SVN: r266017
Uros Bizjak [Sun, 11 Nov 2018 17:49:33 +0000 (18:49 +0100)]
re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161 since r228607)
PR target/87928
* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
instead of (TARGET_64BIT && ix86_abi == MS_ABI).
* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
* config/i386/cygming.h (STACK_BOUNDARY): Remove.
testsuite /Changelog:
PR target/87928
* gcc.target/i386/pr87928.c: New test.
From-SVN: r266016
Xianmiao Qu [Sun, 11 Nov 2018 14:56:23 +0000 (14:56 +0000)]
csky-linux-elf.h (CC1_SPEC): Support -profile.
2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
* config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.
From-SVN: r266013
Xianmiao Qu [Sun, 11 Nov 2018 13:44:01 +0000 (13:44 +0000)]
csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
* config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
From-SVN: r266012
Richard Biener [Sun, 11 Nov 2018 08:51:34 +0000 (08:51 +0000)]
tree-vrp.h (class value_range_base): New base class for value_range containing all but the m_equiv member.
2018-11-11 Richard Biener <rguenther@suse.de>
* tree-vrp.h (class value_range_base): New base class for
value_range containing all but the m_equiv member.
(dump_value_range_base): Add.
(range_includes_zero_p): Work on value_range_base.
* tree-vrp.c (value_range_base::set): Split out base handling
from...
(value_range::set): this.
(value_range::set_equiv): New.
(value_range_base::value_range_base): New constructors.
(value_range_base::check): Split out base handling from...
(value_range::check): this.
(value_range::equal_p): Refactor in terms of
ignore_equivs_equal_p which is now member of the base.
(value_range_base::set_undefined): New.
(value_range_base::set_varying): Likewise.
(value_range_base::dump):Split out base handling from...
(value_range::dump): this.
(value_range_base::set_and_canonicalize): Split out base handling
from...
(value_range::set_and_canonicalize): this.
(value_range_base::union_): New.
* ipa-prop.h (struct ipa_jump_func): Use value_range_base *
for m_vr.
* ipa-cp.c (class ipcp_vr_lattice): Use value_range_base
instead of value_range everywhere.
(ipcp_vr_lattice::print): Use dump_value_range_base.
(ipcp_vr_lattice::meet_with): Adjust.
(ipcp_vr_lattice::meet_with_1): Likewise.
(ipa_vr_operation_and_type_effects): Likewise.
(propagate_vr_across_jump_function): Likewise.
* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise.
(ipa_get_value_range): Likewise.
(ipa_set_jfunc_vr): Likewise.
(ipa_compute_jump_functions_for_edge): Likewise.
From-SVN: r266011
Jonathan Wakely [Sun, 11 Nov 2018 05:17:03 +0000 (05:17 +0000)]
Implement P0318R1 unwrap_ref_decay and unwrap_reference
Implement P0318R1 unwrap_ref_decay and unwrap_reference
* include/std/type_traits (unwrap_reference, unwrap_reference_t)
(unwrap_ref_decay, unwrap_ref_decay_t): New traits and aliases.
* testsuite/20_util/unwrap_reference/1.cc: New test.
* testsuite/20_util/unwrap_reference/2.cc: New test.
From-SVN: r266010
Jonathan Wakely [Sun, 11 Nov 2018 05:16:51 +0000 (05:16 +0000)]
Implement P1007R3 std::assume_aligned
Implement P1007R3 std::assume_aligned
* include/std/memory (assume_aligned): Implement for C++17.
* testsuite/20_util/assume_aligned/1.cc: New test.
* testsuite/20_util/assume_aligned/2_neg.cc: New test.
* testsuite/20_util/assume_aligned/3.cc: New test.
From-SVN: r266009
Sandra Loosemore [Sun, 11 Nov 2018 01:33:53 +0000 (20:33 -0500)]
re PR middle-end/65703 (-fdefer-pop documentation is confusing)
2018-11-10 Sandra Loosemore <sandra@codesourcery.com>
PR middle-end/65703
gcc/
* doc/invoke.texi (Optimize Options): Add @opindex entries
for the positive forms of -fno-xxx and -mno-xxx options
that were lacking them.
From-SVN: r266008
GCC Administrator [Sun, 11 Nov 2018 00:16:47 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r266007
Segher Boessenkool [Sat, 10 Nov 2018 23:12:48 +0000 (00:12 +0100)]
combine: More make_more_copies
This makes make_more_copies do what its documentation says, that is,
only make an intermediate pseudo if copying to a pseudo.
This regressed generated code quality when we didn't keep the original
notes that were on the copy, but since r265582 we do, and only allowing
pseudos now is a win. It also simplifies the code.
* combine.c (make_more_copies): Only make an intermediate copy if the
dest of a move is a pseudo.
From-SVN: r266004
GCC Administrator [Sat, 10 Nov 2018 00:16:45 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r266001
Martin Sebor [Fri, 9 Nov 2018 23:15:59 +0000 (23:15 +0000)]
re PR testsuite/87965 (Test cases c-c++-common/pr60226.c and gcc.dg/pr39323-1.c fail starting with r265977)
gcc/testsuite/ChangeLog:
PR testsuite/87965
* c-c++-common/pr60226.c: Adjust text of expected diagnostic.
* gcc.dg/pr39323-1.c: Ditto.
From-SVN: r265998
Stafford Horne [Fri, 9 Nov 2018 21:22:20 +0000 (21:22 +0000)]
MAINTAINERS: add myself as or1k maintainer
ChangeLog:
yyyy-mm-dd Stafford Horne <shorne@gmail.com>
* MAINTAINERS (CPU Port Maintainers): Add myself for or1k.
(Write After Approval): Remove myself.
From-SVN: r265996
Paul Koning [Fri, 9 Nov 2018 21:08:32 +0000 (16:08 -0500)]
Walloca-16.c: Ignore conflicting types for built-in warnings.
* gcc.dg/Walloca-16.c: Ignore conflicting types for built-in
warnings.
* gcc.dg/Wrestrict-4.c: Ditto.
* gcc.dg/Wrestrict-5.c: Ditto.
* gcc.dg/pr83463.c: Ditto.
* gcc.dg/torture/pr55890-2.c: Ditto.
* gcc.dg/torture/pr55890-3.c: Ditto.
* gcc.dg/torture/pr71816.c: Ditto.
From-SVN: r265995
Maya Rashish [Fri, 9 Nov 2018 20:55:39 +0000 (20:55 +0000)]
re PR target/87221 (cannot build with -pie)
PR target/87221
* config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE.
(NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE.
From-SVN: r265994
Sandra Loosemore [Fri, 9 Nov 2018 20:45:06 +0000 (15:45 -0500)]
re PR driver/41179 (Documentation for "-fno-toplevel-reorder" is confusing (and wrong))
2018-11-09 Sandra Loosemore <sandra@codesourcery.com>
PR driver/41179
PR middle-end/65703
gcc/
* doc/invoke.texi (Optimize Options): Clarify default behavior
for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.
From-SVN: r265993
Bernd Edlinger [Fri, 9 Nov 2018 20:38:07 +0000 (20:38 +0000)]
re PR tree-optimization/87940 (FAIL: gcc.dg/warn-strlen-no-nul.c)
2018-11-09 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR tree-optimization/87940
* expr.c (string_constant): Don't strip NOPS in subexpressions.
Fold PLUS_EXPR correctly.
From-SVN: r265992
Ilya Leoshkevich [Fri, 9 Nov 2018 20:33:19 +0000 (20:33 +0000)]
S/390: Allow relative addressing of literal pool entries
r265490 allowed the compiler to choose in a more flexible way whether to
use load or load-address-relative-long (LARL) instruction. When it
chose LARL for literal pool references, the latter ones were rewritten
by pass_s390_early_mach to use UNSPEC_LTREF, which assumes base register
usage, which in turn is not compatible with LARL. The end result was an
ICE because of unrecognizable insn.
UNSPEC_LTREF and friends are necessary in order to communicate the
dependency on the base register to pass_sched2. When relative
addressing is used, no base register is necessary, so in such cases the
rewrite must be avoided.
gcc/ChangeLog:
2018-11-09 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/87762
* config/s390/s390.c (s390_safe_relative_long_p): New function.
(annotate_constant_pool_refs): Skip insns which support
relative addressing.
(annotate_constant_pool_refs_1): New helper function.
(find_constant_pool_ref): Skip insns which support relative
addression.
(find_constant_pool_ref_1): New helper function.
(replace_constant_pool_ref): Skip insns which support
relative addressing.
(replace_constant_pool_ref_1): New helper function.
(s390_mainpool_start): Adapt to the new signature.
(s390_mainpool_finish): Likewise.
(s390_chunkify_start): Likewise.
(s390_chunkify_finish): Likewise.
(pass_s390_early_mach::execute): Likewise.
(s390_prologue_plus_offset): Likewise.
(s390_emit_prologue): Likewise.
(s390_emit_epilogue): Likewise.
From-SVN: r265991
Jakub Jelinek [Fri, 9 Nov 2018 20:22:48 +0000 (21:22 +0100)]
c-parser.c (c_parser_omp_clause_final): Use c_parser_expr_no_commas...
c/
* c-parser.c (c_parser_omp_clause_final): Use
c_parser_expr_no_commas, convert_lvalue_to_rvalue,
c_objc_common_truthvalue_conversion, c_fully_fold and parentheses
parsing instead of c_parser_paren_condition.
(c_parser_omp_clause_if): Use c_parser_expr_no_commas,
convert_lvalue_to_rvalue, c_objc_common_truthvalue_conversion and
c_fully_fold instead of c_parser_condition.
(c_parser_omp_clause_num_threads, c_parser_omp_clause_num_tasks,
c_parser_omp_clause_grainsize, c_parser_omp_clause_priority,
c_parser_omp_clause_hint, c_parser_omp_clause_num_teams,
c_parser_omp_clause_thread_limit, c_parser_omp_clause_linear): Use
c_parser_expr_no_commas instead of c_parser_expression.
cp/
* parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use
cp_parser_assignment_expression instead of cp_parser_condition.
(cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks,
cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority,
cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use
cp_parser_assignment_expression instead of cp_parser_expression.
(cp_parser_omp_clause_hint): Likewise. Formatting fix.
testsuite/
* c-c++-common/gomp/clauses-5.c: New test.
From-SVN: r265990
Jakub Jelinek [Fri, 9 Nov 2018 20:21:41 +0000 (21:21 +0100)]
c-parser.c (c_parser_omp_clause_reduction): Call sorry_at on reduction clause with inscan modifier.
* c-parser.c (c_parser_omp_clause_reduction): Call sorry_at on
reduction clause with inscan modifier.
* parser.c (cp_parser_omp_clause_reduction): Call sorry_at on
reduction clause with inscan modifier.
From-SVN: r265989
Jakub Jelinek [Fri, 9 Nov 2018 20:20:53 +0000 (21:20 +0100)]
c-parser.c (c_parser_omp_requires): Call sorry_at on requires clauses other than atomic_default_mem_order.
* c-parser.c (c_parser_omp_requires): Call sorry_at on requires
clauses other than atomic_default_mem_order.
* parser.c (cp_parser_omp_requires): Call sorry_at on requires
clauses other than atomic_default_mem_order.
* c-c++-common/gomp/requires-1.c: Prune not supported yet messages.
* c-c++-common/gomp/requires-2.c: Likewise.
* c-c++-common/gomp/requires-4.c: Likewise.
From-SVN: r265988
Jakub Jelinek [Fri, 9 Nov 2018 20:19:58 +0000 (21:19 +0100)]
gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid but unsupported lastprivate with conditional modifier.
* gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
but unsupported lastprivate with conditional modifier.
* c-c++-common/gomp/lastprivate-conditional-1.c: New test.
* c-c++-common/gomp/lastprivate-conditional-2.c: New test.
From-SVN: r265987
Jeff Law [Fri, 9 Nov 2018 20:17:52 +0000 (13:17 -0700)]
mips.c (mips_loongson_ext2_prefetch_cookie): Handle unused argument better.
* config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
unused argument better. Add gcc_unreachable to silence warning.
From-SVN: r265986
Jakub Jelinek [Fri, 9 Nov 2018 20:17:40 +0000 (21:17 +0100)]
affinity-fmt.c: Include inttypes.h if HAVE_INTTYPES_H.
* affinity-fmt.c: Include inttypes.h if HAVE_INTTYPES_H.
(gomp_display_affinity): Use __builtin_choose_expr to handle
properly handle argument having integral, or pointer or some other
type. If inttypes.h is available and PRIx64 is defined, use PRIx64
with uint64_t type instead of %llx and unsigned long long.
From-SVN: r265985
Jonathan Wakely [Fri, 9 Nov 2018 20:14:07 +0000 (20:14 +0000)]
PR libstdc++/87787 fix UBsan error in std::vector
PR libstdc++/87787
* include/bits/stl_uninitialized.h (__relocate_a_1): Do not call
memmove when there's nothing to copy (and pointers could be null).
From-SVN: r265984
Jonathan Wakely [Fri, 9 Nov 2018 20:13:58 +0000 (20:13 +0000)]
Fix whitespace in ChangeLog
From-SVN: r265983
Jeff Law [Fri, 9 Nov 2018 20:08:20 +0000 (13:08 -0700)]
gcc.dg/torture/stackalign/builtin-apply-2.c: Skip on v850.
From-SVN: r265982
Ian Lance Taylor [Fri, 9 Nov 2018 19:03:59 +0000 (19:03 +0000)]
cmd/cgo: fix typo in gccgo name mangling recipe
The code to implement new-style gccgo name mangling had a recipe that
didn't quite match the one in the compiler (incorrect handling for
'.'). This showed up as a failure in the gotools cgo test if the
directory containing the test run included a "." character.
Reviewed-on: https://go-review.googlesource.com/c/147917
From-SVN: r265981
Martin Sebor [Fri, 9 Nov 2018 17:32:52 +0000 (17:32 +0000)]
PR middle-end/81824 - Warn for missing attributes with function aliases
gcc/c-family/ChangeLog:
PR middle-end/81824
* c-attribs.c (handle_copy_attribute): New function.
gcc/cp/ChangeLog:
PR middle-end/81824
* pt.c (warn_spec_missing_attributes): Move code to attribs.c.
Call decls_mismatched_attributes.
gcc/ChangeLog:
PR middle-end/81824
* attribs.c (has_attribute): New helper function.
(decls_mismatched_attributes, maybe_diag_alias_attributes): Same.
* attribs.h (decls_mismatched_attributes): Declare.
* cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes.
(maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_.
* common.opt (-Wattribute-alias): Take an argument.
(-Wno-attribute-alias): New option.
* doc/extend.texi (Common Function Attributes): Document copy.
(Common Variable Attributes): Same.
* doc/invoke.texi (-Wmissing-attributes): Document enhancement.
(-Wattribute-alias): Document new option argument.
gcc/testsuite/ChangeLog:
PR middle-end/81824
* gcc.dg/Wattribute-alias.c: New test.
* gcc.dg/Wmissing-attributes.c: New test.
* gcc.dg/attr-copy.c: New test.
* gcc.dg/attr-copy-2.c: New test.
* gcc.dg/attr-copy-3.c: New test.
* gcc.dg/attr-copy-4.c: New test.
From-SVN: r265980
Jerry DeLisle [Fri, 9 Nov 2018 17:29:33 +0000 (17:29 +0000)]
re PR fortran/78351 (comma not terminating READ of formatted input field - ok in 4.1.7, not 4.4.7- maybe related to 25419?)
2018-11-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/78351
* io/transfer.c (read_sf_internal): Delete leftover
debug code.
From-SVN: r265979
Richard Earnshaw [Fri, 9 Nov 2018 17:28:57 +0000 (17:28 +0000)]
arm - minor cleanups for CPU alias support
A couple of very minor issues with the new support for CPU
aliases.
* config/arm/parsecpu.awk (/alias/): Tighten invisible alias
matching criteria. Remove unused array initializer.
From-SVN: r265978
Martin Sebor [Fri, 9 Nov 2018 17:17:47 +0000 (10:17 -0700)]
PR c/87795 - Excessive alignment permitted for functions and labels
gcc/c-family/ChangeLog:
PR c/87795
* c-common.c (check_user_alignment): Use MAX_OFILE_ALIGNMENT.
gcc/testsuite/ChangeLog:
PR c/87795
* gcc.dg/attr-aligned.c: New test.
From-SVN: r265977
Bill Schmidt [Fri, 9 Nov 2018 16:35:23 +0000 (16:35 +0000)]
xmmintrin.h (_mm_cvtss_si32): Fix incorrect constraints by introducing a new temporary.
2018-11-09 Bill Schmidt <wschmidt@linux.ibm.com>
Jinsong Ji <jji@us.ibm.com>
* config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect
constraints by introducing a new temporary.
(_mm_cvtss_si64): Likewise.
Co-Authored-By: Jinsong Ji <jji@us.ibm.com>
From-SVN: r265975
Ian Lance Taylor [Fri, 9 Nov 2018 15:30:51 +0000 (15:30 +0000)]
syscall: change RLIM_INFINITY from 0xffffffffffffffff to -1
For compatibility with the gc toolchain's syscall package.
Fixes golang/go#28665
Reviewed-on: https://go-review.googlesource.com/c/148697
From-SVN: r265974
Peter Bergner [Fri, 9 Nov 2018 15:17:46 +0000 (09:17 -0600)]
Update ChangeLog entry
From-SVN: r265971
Martin Liska [Fri, 9 Nov 2018 15:05:40 +0000 (16:05 +0100)]
Come up with the flag -fipa-stack-alignment.
2018-11-09 Martin Liska <mliska@suse.cz>
* common.opt: Add -fipa-stack-alignment flag.
* doc/invoke.texi: Document it.
* final.c (rest_of_clean_state): Guard stack
shrinking with flag.
2018-11-09 Martin Liska <mliska@suse.cz>
* gcc.target/i386/ipa-stack-alignment.c: New test.
From-SVN: r265970
Martin Liska [Fri, 9 Nov 2018 15:04:52 +0000 (16:04 +0100)]
Come up with -fipa-reference-addressable flag.
2018-11-09 Martin Liska <mliska@suse.cz>
* cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename
to ...
(ipa_discover_variable_flags): ... this.
* common.opt: Come up with new flag -fipa-reference-addressable.
* doc/invoke.texi: Document it.
* ipa-reference.c (propagate): Call the renamed fn.
* ipa-visibility.c (whole_program_function_and_variable_visibility):
Likewise.
* ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to
...
(ipa_discover_variable_flags): ... this. Discover
non-addressable variables only with the newly added flag.
* opts.c: Enable the newly added flag with -O1 and higher
optimization level.
2018-11-09 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-ssa/writeonly-2.c: New test.
From-SVN: r265969
David Malcolm [Fri, 9 Nov 2018 13:25:33 +0000 (13:25 +0000)]
json.cc: fix comment
gcc/ChangeLog:
* json.cc (selftest::test_writing_literals): Fix comment.
From-SVN: r265968
Jakub Jelinek [Fri, 9 Nov 2018 13:02:50 +0000 (14:02 +0100)]
workshare-reduction-1.c: New test.
2018-11-09 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/gomp/workshare-reduction-1.c: New test.
* gcc.dg/gomp/workshare-reduction-2.c: New test.
* gcc.dg/gomp/workshare-reduction-3.c: New test.
* gcc.dg/gomp/workshare-reduction-4.c: New test.
* gcc.dg/gomp/workshare-reduction-5.c: New test.
* gcc.dg/gomp/workshare-reduction-6.c: New test.
* gcc.dg/gomp/workshare-reduction-7.c: New test.
* gcc.dg/gomp/workshare-reduction-8.c: New test.
* gcc.dg/gomp/workshare-reduction-9.c: New test.
* gcc.dg/gomp/workshare-reduction-10.c: New test.
* gcc.dg/gomp/workshare-reduction-11.c: New test.
* gcc.dg/gomp/workshare-reduction-12.c: New test.
* gcc.dg/gomp/workshare-reduction-13.c: New test.
* gcc.dg/gomp/workshare-reduction-14.c: New test.
* gcc.dg/gomp/workshare-reduction-15.c: New test.
* gcc.dg/gomp/workshare-reduction-16.c: New test.
* gcc.dg/gomp/workshare-reduction-17.c: New test.
* gcc.dg/gomp/workshare-reduction-18.c: New test.
* gcc.dg/gomp/workshare-reduction-19.c: New test.
* gcc.dg/gomp/workshare-reduction-20.c: New test.
* gcc.dg/gomp/workshare-reduction-21.c: New test.
* gcc.dg/gomp/workshare-reduction-22.c: New test.
* gcc.dg/gomp/workshare-reduction-23.c: New test.
* gcc.dg/gomp/workshare-reduction-24.c: New test.
* gcc.dg/gomp/workshare-reduction-25.c: New test.
* gcc.dg/gomp/workshare-reduction-26.c: New test.
* gcc.dg/gomp/workshare-reduction-27.c: New test.
* gcc.dg/gomp/workshare-reduction-28.c: New test.
* gcc.dg/gomp/workshare-reduction-29.c: New test.
* gcc.dg/gomp/workshare-reduction-30.c: New test.
* gcc.dg/gomp/workshare-reduction-31.c: New test.
* gcc.dg/gomp/workshare-reduction-32.c: New test.
* gcc.dg/gomp/workshare-reduction-33.c: New test.
* gcc.dg/gomp/workshare-reduction-34.c: New test.
* gcc.dg/gomp/workshare-reduction-35.c: New test.
* gcc.dg/gomp/workshare-reduction-36.c: New test.
* gcc.dg/gomp/workshare-reduction-37.c: New test.
* gcc.dg/gomp/workshare-reduction-38.c: New test.
* gcc.dg/gomp/workshare-reduction-39.c: New test.
* gcc.dg/gomp/workshare-reduction-40.c: New test.
* gcc.dg/gomp/workshare-reduction-41.c: New test.
* gcc.dg/gomp/workshare-reduction-42.c: New test.
* gcc.dg/gomp/workshare-reduction-43.c: New test.
* gcc.dg/gomp/workshare-reduction-44.c: New test.
* gcc.dg/gomp/workshare-reduction-45.c: New test.
* gcc.dg/gomp/workshare-reduction-46.c: New test.
* gcc.dg/gomp/workshare-reduction-47.c: New test.
* gcc.dg/gomp/workshare-reduction-48.c: New test.
* gcc.dg/gomp/workshare-reduction-49.c: New test.
* gcc.dg/gomp/workshare-reduction-50.c: New test.
* gcc.dg/gomp/workshare-reduction-51.c: New test.
* gcc.dg/gomp/workshare-reduction-52.c: New test.
* gcc.dg/gomp/workshare-reduction-53.c: New test.
* gcc.dg/gomp/workshare-reduction-54.c: New test.
* gcc.dg/gomp/workshare-reduction-55.c: New test.
* gcc.dg/gomp/workshare-reduction-56.c: New test.
* gcc.dg/gomp/workshare-reduction-57.c: New test.
* gcc.dg/gomp/workshare-reduction-58.c: New test.
libgomp/
* testsuite/libgomp.c-c++-common/task-reduction-13.c: New test.
* testsuite/libgomp.c-c++-common/task-reduction-14.c: New test.
From-SVN: r265967
Martin Liska [Fri, 9 Nov 2018 13:01:19 +0000 (14:01 +0100)]
Remove extra memory allocation of strings.
2018-11-09 Martin Liska <mliska@suse.cz>
* config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy
string to a stack buffer.
(aarch64_parse_cpu): Likewise.
(aarch64_parse_tune): Likewise.
From-SVN: r265966
Richard Biener [Fri, 9 Nov 2018 12:29:51 +0000 (12:29 +0000)]
re PR c/87953 (asan: stack-buffer-overflow in vectorizable_reduction)
2018-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/87953
* tree-vect-loop.c (vectorizable_reduction): For analysis
always pass ops[0] to vectorizable_condition.
From-SVN: r265964
Stafford Horne [Fri, 9 Nov 2018 12:16:14 +0000 (12:16 +0000)]
or1k: gcc: initial support for openrisc
2018-11-09 Stafford Horne <shorne@gmail.com>
Richard Henderson <rth@twiddle.net>
Joel Sherrill <joel@rtems.org>
* common/config/or1k/or1k-common.c: New file.
* config/or1k/*: New.
* config.gcc (or1k*-*-*): New.
* configure.ac (or1k*-*-*): New test for openrisc tls.
* configure: Regenerated.
* doc/install.texi: Document OpenRISC triplets.
* doc/invoke.texi: Document OpenRISC arguments.
* doc/md.texi: Document OpenRISC.
Co-Authored-By: Joel Sherrill <joel@rtems.org>
Co-Authored-By: Richard Henderson <rth@twiddle.net>
From-SVN: r265963
Stafford Horne [Fri, 9 Nov 2018 12:12:56 +0000 (12:12 +0000)]
or1k: testsuite: initial support for openrisc
gcc/testsuite/ChangeLog:
2018-11-09 Stafford Horne <shorne@gmail.com>
Richard Henderson <rth@twiddle.net>
* gcc.c-torture/execute/
20101011-1.c: Adjust for OpenRISC.
* gcc.dg/
20020312-2.c: Likewise.
* gcc.dg/attr-alloc_size-11.c: Likewise.
* gcc.dg/builtin-apply2.c: Likewise.
* gcc.dg/nop.h: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise.
* gcc.dg/tree-ssa/
20040204-1.c: Likewise.
* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
* gcc.dg/tree-ssa/reassoc-36.c: Likewise.
* lib/target-supports.exp
(check_effective_target_logical_op_short_circuit): Add or1k*-*-*.
* gcc.target/or1k/*: New.
Co-Authored-By: Richard Henderson <rth@twiddle.net>
From-SVN: r265962
Stafford Horne [Fri, 9 Nov 2018 12:09:15 +0000 (12:09 +0000)]
or1k: libgcc: initial support for openrisc
libgcc/ChangeLog:
2018-11-09 Stafford Horne <shorne@gmail.com>
Richard Henderson <rth@twiddle.net>
* config.host: Add OpenRISC support.
* config/or1k/*: New.
Co-Authored-By: Richard Henderson <rth@twiddle.net>
From-SVN: r265961
Richard Earnshaw [Fri, 9 Nov 2018 10:58:59 +0000 (10:58 +0000)]
arm - use the new CPU alias option to simplify the list of CPUs.
This patch simplifies the table of CPUs supported in GCC by making
use of the new alias feature. Most of the changes are fairly
straight-forward:
- arm7tdmi and arm7tdmi-s are the same thing.
- arm710t, arm720t and arm740t differ only in features external to the core
- arm920 and arm920t are the same thing; arm922t and arm940t differ from
arm920t only in features external to the core; ep9312 is an arm920t-derived
core that we continue to recognize for legacy reasons.
- arm10tdmi and arm1020t differ only in features external to the core.
- arm9e, arm946te-s, arm966e-s and arm968e-s differ only in features external
to the core.
- arm10e, arm1020e and arm1022e differ only in features external to the core.
The arm10e/arm1020e/arm1022e change is the only one which changes
behaviour of the compiler slightly. Previously, and for no reason
that I can remember, the scheduler for arm1020e/arm1022e was not used
for arm10e: this was probably an oversight. The unification means
that the same scheduler is now used for all three cores.
* config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s.
(arm7tdmi-s): Delete CPU.
(arm710t): Add aliases for arm720t and arm740t.
(arm720t, arm740t): Delete CPUs.
(arm920t): Add aliases for arm920, arm922t and arm940t.
(arm920, arm922t, arm940t): Delete CPUs.
(arm10tdmi): Add alias for arm1020t.
(arm1020t): Delete CPU.
(arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
(arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
(arm10e): Add aliases for arm1020e and arm1022e.
(arm1020e, arm1022e): Delete CPU.
* config/arm/arm.md (generic_sched): Remove entries that are now
handled by aliases.
(generic_vfp): Likewise.
* config/arm/arm1020e.md: Simplify tuning selection based on alias
changes.
* config/arm/arm-tune.md: Regenerated.
* config/arm/arm-tables.opt: Regenerated.
From-SVN: r265960
Richard Biener [Fri, 9 Nov 2018 10:53:31 +0000 (10:53 +0000)]
re PR tree-optimization/87621 (outer loop auto-vectorization fails for exponentiation code)
2018-11-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/87621
* tree-vect-loop.c (vectorizable_reduction): Handle reduction
op with only phi inputs.
* tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h.
(ch_base::copy_headers): Run CSE on copied loop headers.
(pass_ch_vect::process_loop_p): Simplify.
* g++.dg/vect/pr87621.cc: New testcase.
From-SVN: r265959
Alexandre Oliva [Fri, 9 Nov 2018 10:49:47 +0000 (10:49 +0000)]
large-addr-aware for biarch non-w64 mingw32
for gcc/ChangeLog
* config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust
for non-w64 x86_64 biarch.
From-SVN: r265958
Alexandre Oliva [Fri, 9 Nov 2018 10:16:09 +0000 (10:16 +0000)]
[PR86438] compare-elim: cope with set of in_b
When in_a resolves to a register set in the prev_clobber insn, we may
use the SET_SRC for the compare instead. However, when in_b so
resolves, we proceed to use the reg with its earlier value. When both
resolve to the same register and prev_clobber is an insn that modifies
the register, this arrangement may cause the compare to match (when it
shouldn't) and the elimination of the compare to incorrectly succeed.
(set (reg 1) (plus (reg 1) (const_int N)))
(set (reg 2) (reg 1))
(set (reg flags) (compare (reg 1) (reg 2)))
in_a: (reg 1) --> (plus (reg 1) (const_int N))
in_b: (reg 2) -> (reg 1) -/> oops
(parallel [
(set (reg flags) (compare (plus (reg 1) (const_int N))
(reg 1))) ;; should be (plus...)
(set (reg 1) (plus (reg 1) (const_int N)))])
(set (reg 2) (reg 1))
This patch arranges for in_b to also undergo SET_SRC substitution
when appropriate, with a shortcut for when in_a and in_b are the same
rtx.
for gcc/ChangeLog
PR rtl-optimization/86438
* compare-elim.c (try_eliminate_compare): Use SET_SRC instead
of in_b for the compare if in_b is SET_DEST.
for gcc/testsuite/ChangeLog
PR rtl-optimization/86438
* gcc.dg/torture/pr86438.c: New.
From-SVN: r265957
Alexandre Oliva [Fri, 9 Nov 2018 10:15:46 +0000 (10:15 +0000)]
[PR87793] reject non-toplevel unspecs in debug loc exprs on x86
Before revision 254025, we'd reject UNSPECs in debug loc exprs.
TARGET_CONST_NOT_OK_FOR_DEBUG_P still rejects that by default, on all
ports that override it, except for x86, that accepts @gotoff unspecs.
We can indeed accept them in top-level expressions, but not as
subexpressions: the assembler rejects the difference between two
@gotoff symbols, for example.
We could simplify such a difference and drop the @gotoffs, provided
that the symbols are in the same section; we could also accept
@gotoffs plus literal constants. However, accepting those but
rejecting such combinations as subexpressions would be ugly, and most
likely not worth the trouble: sym@gotoff+litconst hardly makes sense
as a standalone expression, and the difference between @gotoffs should
be avoided to begin with, as follows.
Ideally, the debug loc exprs would use the symbolic data in
REG_EQUIV/REG_EQUAL notes, or delegitimized addresses, instead of
simplifying the difference between two legitimized addresses so that
the occurrences of the GOT register cancel each other. That would
require some more elaborate surgery in var-tracking and cselib than
would be appropriate at this stage.
for gcc/ChangeLog
PR target/87793
* config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject
non-toplevel UNSPEC.
for gcc/testsuite/ChangeLog
PR target/87793
* gcc.dg/pr87793.c: New.
From-SVN: r265956
Aldy Hernandez [Fri, 9 Nov 2018 09:53:11 +0000 (09:53 +0000)]
tree-vrp.c (value_range::check): Do not access internals directly.
* tree-vrp.c (value_range::check): Do not access internals
directly.
(value_range::singleton_p): Same.
(value_range::type): Same.
(vrp_finalize): Use value_range API.
From-SVN: r265955
Aldy Hernandez [Fri, 9 Nov 2018 09:52:53 +0000 (09:52 +0000)]
* tree-vrp.c (may_contain_p): Do not access m_min/m_max directly.
From-SVN: r265954
Aldy Hernandez [Fri, 9 Nov 2018 09:52:43 +0000 (09:52 +0000)]
vr-values.c (vr_values::get_value_range): Use value_range API instead of piecing together ranges.
* vr-values.c (vr_values::get_value_range): Use value_range API
instead of piecing together ranges.
(vr_values::update_value_range): Same.
From-SVN: r265953
Aldy Hernandez [Fri, 9 Nov 2018 09:52:32 +0000 (09:52 +0000)]
gimple-fold.c (size_must_be_zero_p): Use value_range API instead of performing ad-hoc calculations.
* gimple-fold.c (size_must_be_zero_p): Use value_range API instead
of performing ad-hoc calculations.
* tree-ssanames.c (set_range_info): New overloaded function
accepting value_range &.
(get_range_info): Same.
* tree-ssanames.h (set_range_info_raw): Remove.
(set_range_info): New prototype.
(get_range_info): Same.
* tree-vrp.h (value_range::null_p): Rename to zero_p.
* tree-vrp.c (value_range::null_p): Same.
From-SVN: r265952
Martin Liska [Fri, 9 Nov 2018 09:21:56 +0000 (10:21 +0100)]
Include patch in LOCAL_PATCHES.
2018-11-09 Martin Liska <mliska@suse.cz>
* LOCAL_PATCHES: Include one local patch.
From-SVN: r265951
Martin Liska [Fri, 9 Nov 2018 09:14:36 +0000 (10:14 +0100)]
Fallback in libsanitizer for scudo sanitizer (PR sanitizer/87892).
2018-11-09 Martin Liska <mliska@suse.cz>
PR sanitizer/87892
* sanitizer_common/sanitizer_linux_libcdep.cc (defined): Return
1 when CPU_COUNT macro is not defined.
From-SVN: r265950
Jan Hubicka [Fri, 9 Nov 2018 09:12:39 +0000 (10:12 +0100)]
tree.c (fld_type_variant_equal_p): Test user align flag.
* tree.c (fld_type_variant_equal_p): Test user align flag.
(flt_type_variant): Copy user align flag.
(fld_incomplete_type_of): Clear it.
From-SVN: r265949
Prathamesh Kulkarni [Fri, 9 Nov 2018 06:39:25 +0000 (06:39 +0000)]
neon.md (div<mode>3): New pattern.
2018-11-09 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* config/arm/neon.md (div<mode>3): New pattern.
testsuite/
* gcc.target/arm/neon-vect-div-1.c: New test.
* gcc.target/arm/neon-vect-div-2.c: Likewise.
From-SVN: r265948
Andi Kleen [Fri, 9 Nov 2018 05:42:43 +0000 (05:42 +0000)]
Add PTWRITE builtins for x86
Add builtins/intrinsics for PTWRITE. PTWRITE is a new instruction on Intel Gemini Lake/
Goldmont Plus that allows to write values into the Processor Trace log. This allows
very light weight instrumentation of programs.
The intrinsics are compatible to icc. Automatically enabled for Goldmont Plus.
gcc/:
2018-11-08 Andi Kleen <ak@linux.intel.com>
* common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New.
(OPTION_MASK_ISA_PTWRITE_UNSET): New.
(ix86_handle_option): Handle OPT_mptwrite.
* config/i386/cpuid.h (bit_PTWRITE): Add.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite.
* config/i386/i386-builtin.def (BDESC): Add ptwrite32/64.
* config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__.
* config/i386/i386.c (ix86_target_string): Handle ptwrite.
(ix86_option_override_internal): Handle PTA_PTWRITE.
(ix86_valid_target_attribute_inner_p): Define ptwrite.
(def_builtin2): Force UINT64 to be 64bit only.
* config/i386/i386.h (TARGET_PTWRITE): Add.
(TARGET_PTWRITE_P): Add.
(PTA_PTWRITE): Add.
* config/i386/i386.md: Define ptwrite.
* config/i386/i386.opt: Add -mptwrite.
* config/i386/immintrin.h (_ptwrite64): Add.
(_ptwrite32): Add
* doc/extend.texi: Document __builtin_ia32_ptwrite*.
* doc/invoke.texi: Document -mptwrite.
gcc/testsuite/:
2018-11-08 Andi Kleen <ak@linux.intel.com>
* gcc.target/i386/ptwrite1.c: New test.
* gcc.target/i386/ptwrite2.c: New test.
From-SVN: r265947
Jerry DeLisle [Fri, 9 Nov 2018 02:46:03 +0000 (02:46 +0000)]
re PR fortran/78351 (comma not terminating READ of formatted input field - ok in 4.1.7, not 4.4.7- maybe related to 25419?)
2018-11-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/78351
* io/transfer.c (read_sf_internal): Add support for early
comma termination of internal unit formatted reads.
* gfortran.dg/read_legacy_comma.f90: New test.
From-SVN: r265946
GCC Administrator [Fri, 9 Nov 2018 00:16:44 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r265945
Peter Bergner [Thu, 8 Nov 2018 22:39:45 +0000 (22:39 +0000)]
re PR rtl-optimization/87600 (Fix for PRs 86939 and 87479 causes build issues for several targets)
gcc/
PR rtl-optimization/87600
* cfgexpand.c (expand_asm_stmt): Catch illegal asm constraint usage.
* lra-constraints.c (process_alt_operands): Skip illegal hard
register usage. Prefer reloading non hard register operands.
gcc/testsuite/
PR rtl-optimization/87600
* gcc.dg/pr87600.h: New file.
* gcc.dg/pr87600-1.c: New test.
* gcc.dg/pr87600-2.c: Likewise.
From-SVN: r265942
Bill Seurer [Thu, 8 Nov 2018 22:33:52 +0000 (22:33 +0000)]
[PATCH, rs6000] Disable ASLR in sanitizer on powerpc64.
Cherry pick powerpc64 sanitizer fix from upstream llvm.
See https://reviews.llvm.org/rL346030 and
https://reviews.llvm.org/D52900.
2018-11-08 Bill Seurer <seurer@linux.vnet.ibm.com>
* libsanitizer/sanitizer_common/sanitizer_linux.cc (CheckASLR):
Disable ASLR for powerpc64 when using sanitizers.
From-SVN: r265941
Roman Geissler [Thu, 8 Nov 2018 22:05:27 +0000 (22:05 +0000)]
collect2.c (linker_select): Add USE_LLD_LD.
* collect2.c (linker_select): Add USE_LLD_LD.
(ld_suffixes): Add ld.lld.
(main): Handle -fuse-ld=lld.
* common.opt (-fuse-ld=lld): New option.
* doc/invoke.texi (-fuse-ld=lld): Document.
* opts.c (common_handle_option): Handle OPT_fuse_ld_lld.
From-SVN: r265940
Sandra Loosemore [Thu, 8 Nov 2018 22:02:38 +0000 (17:02 -0500)]
re PR other/36572 (Documentation for some options starting with “no-” not clear)
2018-11-08 Sandra Loosemore <sandra@codesourcery.com>
PR other/36572
gcc/
* doc/invoke.texi (Optimize Options): Clarify default behavior
for -fno-sched-interblock and -fno-sched-spec.
From-SVN: r265939
Rainer Orth [Thu, 8 Nov 2018 21:39:11 +0000 (21:39 +0000)]
Fix Solaris build with OpenMP 5.0
* affinity.c: Include <string.h>, <stdio.h>.
(gomp_display_affinity_place): Remove cpusetp.
* teams.c: Include <limits.h>.
From-SVN: r265938
Jakub Jelinek [Thu, 8 Nov 2018 19:38:21 +0000 (20:38 +0100)]
task-reduction-8.c (bar): Add in_reduction clause for s[0].
* testsuite/libgomp.c-c++-common/task-reduction-8.c (bar): Add
in_reduction clause for s[0].
From-SVN: r265934
Jason Merrill [Thu, 8 Nov 2018 18:57:53 +0000 (13:57 -0500)]
* doc/invoke.texi: Fix build.
From-SVN: r265933
Paul Koning [Thu, 8 Nov 2018 18:56:58 +0000 (13:56 -0500)]
re PR c/87795 (Excessive alignment permitted for functions and labels)
* config/pdp11/constraints.md: Add "Z" series constraints for use
with pre-dec and post-inc addressing.
* config/pdp11/pdp11-protos.m (expand_block_move): Delete.
(pdp11_expand_operands): Add int argument (word count).
(pdp11_sp_frame_offset): Delete.
(pdp11_cmp_length): New function.
(pushpop_regeq): New function.
* config/pdp11/pdp11.c (TARGET_STACK_PROTECT_RUNTIME_ENABLED_P):
Add hook.
(pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new
frame layout.
(pdp11_initial_elimination_offset): Ditto.
(pdp11_expand_operands): Add word count argument. Bugfixes.
(output_move_multiple): Change how pointer adjustment is done.
(pdp11_gen_int_label): Correct format.
(output_ascii): Ditto.
(pdp11_asm_output_var): Add code for DEC assembler case.
(pdp11_asm_print_operand): Bugfix for CONST_DOUBLE holding integer
value.
(legitimate_const_double_p): Ditto.
(pdp11_register_move_cost): Adjust for new register classes.
(pdp11_regno_reg_class): Ditto.
(expand_block_move): Delete.
(pushpop_regeq): New function.
(pdp11_legitimate_address_p): Bugfix in check for constant
offset.
(pdp11_sp_frame_offset): Delete.
(pdp11_reg_save_size): New helper function for new frame layout.
(output_addr_const_pdp11): Remove CONST_DOUBLE case.
(pdp11_expand_shift): Bugfix in check for constant shift count.
(pdp11_shift_length): Ditto.
(pdp11_assemble_shift): Copy input to pdp11_expand_operands.
(pdp11_cmp_length): New function.
* config/pdp11/pdp11.h (TARGET_CPU_CPP_BUILTINS): Add macros for
some compile options.
(FIXED_REGISTERS): Remove HARD_FRAME_POINTER_REGNUM.
(CALL_USED_REGISTERS): Ditto.
(ELIMINABLE_REGS): Ditto.
(REGISTER_NAMES): Ditto.
(reg_class): Add classes NOTR0_REG through NOTSP_REG for use by Z
constraints.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Ditto. Also remove
HARD_FRAME_POINTER_REGNUM.
(CPU_REG_CLASS): New macro.
(CLASS_MAX_NREGS): Adjust for new register classes.
(FUNCTION_PROFILER): Make no-op.
(may_call_alloca): Remove unused declaration.
(ASM_OUTPUT_ALIGN): Add workaround for PR87795.
(ASM_OUTPUT_SKIP): Fix format.
* config/pdp11/pdp11.md (unspecv): Add UNSPECV_MOVMEM.
(HARD_FRAME_POINTER_REGNUM): Remove.
(return): Delete.
(*rts): Rename. Remove epilogue related checks.
(cmpsi, cmpdi): New insn.
(cbranch<mode>4): Change to apply to SI and DI modes as well.
(mov<mode>): Change constraints to enforce that push/pop
destination cannot use the same register as source.
(*mov<mode><cc_cc>): Ditto.
(movmemhi, movmemhi1, movmemhi_nocc): Change to expand block move
at assembly output rather than as RTL expander.
(zero_extendqihi2): Bugfix in check for same registers.
(adddi3_nocc): Bugfix in check for constant operand.
(addsi3_nocc): Ditto.
(subdi3_nocc): Ditto.
(subsi3_nocc): Ditto.
(negdi2_nocc): Copy input to pdp11_expand_operands.
(negsi2_nocc): Ditto.
(bswap2_nocc): Ditto.
* config/pdp11/pdp11.opt (mlra): Fix documentation.
* config/pdp11/t-pdp11: Use -Os.
From-SVN: r265932
Richard Earnshaw [Thu, 8 Nov 2018 17:48:39 +0000 (17:48 +0000)]
arm - Add support for aliases of CPU names
This patch adds support for defining an alias for a CPU name that can
then be used in conjunction with the -mcpu option in the same way that
the primary name can be used. Aliases do not lead to a short-cut of
the feature options; they are literally an alternative name for the
core CPU.
The new entry in arm-cpus.in allows a cpu definition to contain an
alias statement, for example
begin cpu strongarm
alias strongarm110 !strongarm1100 !strongarm1110
...
end cpu strongarm
each entry in the list represents another alias for the CPU. If the
alias name starts with an exclamation mark, then it will match as for
any other alias (sans the ! itself), but it will not be listed in any
of the CPU hinting options (the intent is to make the alias
essentially undocumented). In the above example, hints would be
provided for strongarm and strongarm110, but not for strongarm1100 or
strongarm1110.
The advantage of using aliases in this way is that it allows us to
reduce the number of duplicate table entries and identifier tags used
inside the compiler itself.
* config/arm/parsecpu.awk (/alias/): New parsing rule.
(/begin cpu/): Check that the cpu name hasn't been previously defined.
(gen_comm_data): Print out CPU alias tables.
(check_cpu): Match aliases when checking the CPU name.
* config/arm/arm-protos.h (cpu_alias): New structure.
(cpu_option): Add entry for aliases.
* config/arm/arm-cpus.in (strongarm): Add aliases for strongarm110
strongarm1100 and strongarm1110.
(strongarm110, strongarm1100, strongarm1110): Delete CPU entries.
(config/arm/arm-generic.md): Remove redundant references to
strongarm110, strongarm1100 and strongarm1110.
* common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
Scan aliases for additional hints.
(arm_parse_cpu_option_name): Also match a cpu name against the list
of aliases.
* config/arm/arm-tables.opt: Regenerated.
* config/arm/arm-tune.md: Regenerated.
From-SVN: r265931