Tulio Magno Quites Machado Filho [Tue, 8 Oct 2019 15:08:35 +0000 (15:08 +0000)]
Change the library search path when using --with-advance-toolchain
From: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Remove all -L directories from LINK_OS_EXTRA_SPEC32 and
LINK_OS_EXTRA_SPEC64 so that user directories specified at
build time have higher preference over the advance toolchain libraries.
Set MD_STARTFILE_PREFIX to $prefix/lib/ and MD_STARTFILE_PREFIX_1 to
$at/lib/ so that a compiler library has preference over the Advance
Toolchain libraries.
* config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
From-SVN: r276702
Richard Biener [Tue, 8 Oct 2019 13:39:03 +0000 (13:39 +0000)]
tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
2019-10-08 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
(_stmt_vec_info::is_reduc_info): Add.
(STMT_VINFO_VEC_REDUCTION_TYPE): Remove.
(vectorizable_condition): Remove.
(vectorizable_shift): Likewise.
(vectorizable_reduction): Adjust.
(info_for_reduction): New.
* tree-vect-loop.c (vect_force_simple_reduction): Fold into...
(vect_analyze_scalar_cycles_1): ... here.
(vect_analyze_loop_operations): Adjust.
(needs_fold_left_reduction_p): Simplify for single caller.
(vect_is_simple_reduction): Likewise. Remove stmt restriction
for nested cycles not part of double reductions.
(vect_model_reduction_cost): Pass in the reduction type.
(info_for_reduction): New function.
(vect_create_epilog_for_reduction): Use it, access reduction
meta off the stmt info it returns. Use STMT_VINFO_REDUC_TYPE
instead of STMT_VINFO_VEC_REDUCTION_TYPE.
(vectorize_fold_left_reduction): Remove pointless assert.
(vectorizable_reduction): Analyze the full reduction when
visiting the outermost PHI. Simplify. Use STMT_VINFO_REDUC_TYPE
instead of STMT_VINFO_VEC_REDUCTION_TYPE. Direct reduction
stmt code-generation to vectorizable_* in most cases. Verify
code-generation only for cases handled by
vect_transform_reductuon.
(vect_transform_reduction): Use info_for_reduction to get at
reduction meta. Simplify.
(vect_transform_cycle_phi): Likewise.
(vectorizable_live_operation): Likewise.
* tree-vect-patterns.c (vect_reassociating_reduction_p): Look
at the PHI node for STMT_VINFO_REDUC_TYPE.
* tree-vect-slp.c (vect_schedule_slp_instance): Remove no
longer necessary code.
* tree-vect-stmts.c (vectorizable_shift): Make static again.
(vectorizable_condition): Likewise. Get at reduction related
info via info_for_reduction.
(vect_analyze_stmt): Adjust.
(vect_transform_stmt): Likewise.
* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
STMT_VINFO_REDUC_TYPE instead of STMT_VINFO_VEC_REDUCTION_TYPE.
* gcc.dg/vect/pr65947-1.c: Adjust.
* gcc.dg/vect/pr65947-13.c: Likewise.
* gcc.dg/vect/pr65947-14.c: Likewise.
* gcc.dg/vect/pr65947-4.c: Likewise.
* gcc.dg/vect/pr80631-1.c: Likewise.
* gcc.dg/vect/pr80631-2.c: Likewise.
From-SVN: r276700
Tobias Burnus [Tue, 8 Oct 2019 12:30:44 +0000 (12:30 +0000)]
Fortran - fix OpenMP 'target simd'
gcc/fortran/
* parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD.
libgomp/
* testsuite/libgomp.fortran/target-simd.f90: New.
From-SVN: r276698
Jonathan Wakely [Tue, 8 Oct 2019 11:01:44 +0000 (12:01 +0100)]
Add makefile target to update HTML files in source tree
Also remove the creation of the html/ext sub-directory, which has been
unused since revision r245258.
* doc/Makefile.am (doc-html-docbook-regenerate): New target.
(${docbook_outdir}/html): Do not create unused 'html/ext' directory.
* doc/Makefile.in: Regenerate.
* doc/xml/manual/documentation_hacking.xml: Document new target.
* doc/html/*: Regenerate.
From-SVN: r276695
Tobias Burnus [Tue, 8 Oct 2019 10:49:27 +0000 (10:49 +0000)]
Fortran - Improve OpenMP/OpenACC diagnostic
gcc/fortran/
* match.h (gfc_match_omp_eos_error): Renamed from gfc_match_omp_eos.
* openmp.c (gfc_match_omp_eos): Make static.
(gfc_match_omp_eos_error): New.
* parse.c (matchs, matchdo, matchds): Do as done for 'matcho' -
if error occurred after OpenMP/OpenACC directive matched, do not
try other directives.
(decode_oacc_directive, decode_omp_directive): Call new function
instead.
testsuite/
* gfortran.dg/goacc/continuation-free-form.f95: Update dg-error.
From-SVN: r276694
Jonathan Wakely [Tue, 8 Oct 2019 10:41:28 +0000 (11:41 +0100)]
Restore URL for Austern article on allocators
This reverts "Remove broken URL from libstdc++ manual" by restoring the
link, but using an archived copy from the Wayback Machine.
* doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
* doc/html/*: Regenerate.
From-SVN: r276693
Thomas Schwinge [Tue, 8 Oct 2019 10:20:50 +0000 (12:20 +0200)]
Remove Cell Broadband Engine SPU targets
Follow-up to trunk 275343:
* MAINTAINERS: Add back Trevor Smigiel; move into Write After
Approval section.
From-SVN: r276692
Thomas Schwinge [Tue, 8 Oct 2019 10:20:41 +0000 (12:20 +0200)]
Extend 'libgfortran/runtime/minimal.c' per r274599 "PR fortran/68401 Improve allocation error message"
libgfortran/
PR fortran/68401
* runtime/minimal.c (os_error_at): New function.
From-SVN: r276691
Thomas Schwinge [Tue, 8 Oct 2019 10:20:31 +0000 (12:20 +0200)]
Revise 'libgfortran/runtime/minimal.c' to better conform to the original sources
libgfortran/
* runtime/minimal.c: Revise.
From-SVN: r276690
Tobias Burnus [Tue, 8 Oct 2019 09:35:56 +0000 (11:35 +0200)]
Remove '>>>' merge marker from changelog
From-SVN: r276689
Richard Sandiford [Tue, 8 Oct 2019 08:24:40 +0000 (08:24 +0000)]
[AArch64] Limit simd-abi-9.c function body test to LP64
On ILP32 targets, there's an extra UXTW instruction to extend
the incoming pointer before the load. It doesn't seem worth
complicating the test for that, since all we're checking is
that an optimisation takes place, and that optimisation isn't
related to pointer size.
2019-10-08 Richard Sandiford <richard.sandiford@arm.com>
gcc/testsuite/
* gcc.target/aarch64/torture/simd-abi-9.c: Require LP64 for
the function body test.
From-SVN: r276688
Joseph Myers [Tue, 8 Oct 2019 00:37:45 +0000 (01:37 +0100)]
Make C2X imply -fno-fp-int-builtin-inexact.
Since TS 18661-1 has been integrated into C2X, this patch makes C2X
imply -fno-fp-int-builtin-inexact.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
gcc:
* doc/invoke.texi (-ffp-int-builtin-inexact): Document
-fno-fp-int-builtin-inexact default for C2X.
gcc/c-family:
* c-opts.c (c_common_post_options): Set
-fno-fp-int-builtin-inexact for C2X.
gcc/testsuite:
* gcc.dg/torture/builtin-fp-int-inexact-c2x.c: New test.
From-SVN: r276686
GCC Administrator [Tue, 8 Oct 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276685
Prathamesh Kulkarni [Mon, 7 Oct 2019 23:44:49 +0000 (23:44 +0000)]
re PR tree-optimization/91532 ([SVE] Redundant predicated store in gcc.target/aarch64/fmla_2.c)
2019-10-07 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Richard Biener <rguenther@suse.de>
PR tree-optimization/91532
* tree-if-conv.c: Include tree-ssa-dse.h.
(ifcvt_local_dce): Change param from bb to loop,
and call dse_classify_store.
(tree_if_conversion): Pass loop instead of loop->header as arg
to ifcvt_local_dce.
* tree-ssa-dse.c: Include tree-ssa-dse.h.
(delete_dead_or_redundant_assignment): Remove static qualifier from
declaration, and add prototype in tree-ssa-dse.h.
(dse_store_status): Move to tree-ssa-dse.h.
(dse_classify_store): Remove static qualifier and add new tree param
stop_at_vuse, and add prototype in tree-ssa-dse.h.
* tree-ssa-dse.h: New header.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r276681
Jozef Lawrynowicz [Mon, 7 Oct 2019 21:22:04 +0000 (21:22 +0000)]
Revert: 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.md: Revert: Group zero_extend* insns together.
From-SVN: r276680
Jozef Lawrynowicz [Mon, 7 Oct 2019 21:04:07 +0000 (21:04 +0000)]
msp430.md: Group zero_extend* insns together.
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.md: Group zero_extend* insns together.
From-SVN: r276679
Iain Sandoe [Mon, 7 Oct 2019 20:21:50 +0000 (20:21 +0000)]
[Darwin, machopic 1/n] Consider visibility in indirections.
For weak, hidden vars the indirection should just be as normal, that
is that the indirections for such symbols should appear in the non-lazy
symbol pointers table, not in the .data section.
gcc/ChangeLog:
2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_output_indirection): Don't put
hidden symbol indirections into the .data section, use the
non-lazy symbol pointers section as normal.
(darwin_encode_section_info): Record if a symbol is hidden.
* config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
(MACHO_SYMBOL_HIDDEN_VIS_P): New.
From-SVN: r276675
Iain Sandoe [Mon, 7 Oct 2019 20:14:26 +0000 (20:14 +0000)]
[Darwin, machopic 0/n] Initial tidy of Mach-O symbol handling.
We want to improve the detection and caching of symbol-properties
so that (a) we can make the compiler's output match the platform
norms (b) we can improve efficiency by checking flags instead of
inspecting strings. (c) The fix for PR71767 was a largish hammer
and we want to reduce the number of symbols that are made linker-
visible.
This first patch is largely typographical changes with no functional
difference intended:
- Tries to ensure that there's no overlap between the symbols used in
the Mach-O case and those declared in the i386 or rs6000 port trees.
- Some improvement to comments.
- Makes the naming of the symbol flags consistent with other uses.
- Provides a predicate macro for each use.
gcc/ChangeLog:
2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_symbol_defined_p): Use symbol flag
predicates instead of accessing bits directly.
(machopic_indirect_call_target): Likewise.
(machopic_output_indirection): Likewise.
(darwin_encode_section_info): Improve description. Use renamed
symbol flags. Use predicate macros for variables and functions.
* config/darwin.h:
Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
(MACHO_SYMBOL_VARIABLE_P): New.
(MACHO_SYMBOL_DEFINED_P):New.
(MACHO_SYMBOL_STATIC_P): New.
* config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
(SYMBOL_FLAG_SUBT_DEP): New.
* config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
From-SVN: r276674
Jozef Lawrynowicz [Mon, 7 Oct 2019 20:09:49 +0000 (20:09 +0000)]
msp430.c (msp430_file_end): s/msp_/msp430_/
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.c (msp430_file_end): s/msp_/msp430_/
(msp430_expand_epilogue): Likewise.
* config/msp430/predicates.md: Likewise.
* config/msp430/msp430.md: Likewise.
Replace blocks of 8 spaces with tabs.
From-SVN: r276671
Jozef Lawrynowicz [Mon, 7 Oct 2019 20:05:30 +0000 (20:05 +0000)]
msp430-protos.h (msp430_split_addsi): New prototype.
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430-protos.h (msp430_split_addsi): New prototype.
* config/msp430/msp430.c (msp430_split_addsi): New.
* config/msp430/msp430.md: Call msp430_split_addsi () instead of using
a block of C code for splitting addsi.
From-SVN: r276670
Uros Bizjak [Mon, 7 Oct 2019 18:41:17 +0000 (20:41 +0200)]
i386-expand.c (ix86_expand_floorceildf_32, [...]): Reorder functions.
* config/i386/i386-expand.c (ix86_expand_floorceildf_32,
ix86_expand_rounddf_32): Reorder functions.
* config/i386/i386-protos.h: Update..
From-SVN: r276668
Jozef Lawrynowicz [Mon, 7 Oct 2019 15:58:19 +0000 (15:58 +0000)]
MSP430: Don't generate 430X insns when handling data in the lower memory region
gcc/ChangeLog:
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config.in: Regenerate.
* config/msp430/constraints.md: Fix docstring for "Ys" constraint.
Add new "Yx" constraint.
* config/msp430/driver-msp430.c (msp430_propagate_region_opt): New spec
function.
* config/msp430/msp430-protos.h (msp430_op_not_in_high_mem): New
prototype.
* config/msp430/msp430.c (msp430_option_override): Allow the lower
code/data region to be selected in the small memory model.
(msp430_section_attr): Don't warn if the "section" and "lower"
attributes are used together.
(msp430_handle_generic_attribute): Likewise.
(msp430_var_in_low_mem): New function.
(TARGET_ENCODE_SECTION_INFO): Define.
(msp430_encode_section_info): New function.
(gen_prefix): Return early in the small memory model.
Require TARGET_USE_LOWER_REGION_PREFIX to be set before adding the
".lower" prefix if -m{code,data}-region=lower have been passed.
(msp430_output_aligned_decl_common): Emit common symbols when
-mdata-region=lower is passed unless TARGET_USE_LOWER_REGION_PREFIX is
set.
(TARGET_ASM_FILE_END): Define.
(msp430_file_end): New function.
(msp430_do_not_relax_short_jumps): Allow relaxation when
function will be in the lower region.
(msp430_op_not_in_high_mem): New function.
(msp430_print_operand): Check "msp430_op_not_in_high_mem" for
the 'X' operand selector.
Clarify comment for 'x' operand selector.
* config/msp430/msp430.h (LINK_SPEC): Propagate
-m{code,data}-region to the linker via spec function
msp430_propagate_region_opt.
(msp430_propagate_region_opt): New prototype.
(EXTRA_SPEC_FUNCTIONS): Add msp430_propagate_region_opt.
(SYMBOL_FLAG_LOW_MEM): Define.
* config/msp430/msp430.md (addsipsi3): Add missing "%X" operand
selector.
(zero_extendqihi2): Fix operand number used by "%X" selector.
(zero_extendqisi2): Likewise.
(zero_extendhisi2): Likewise.
(movqi): Use "Yx" constraint in place of "%X" operand selector.
(movhi): Likewise.
(addqi3): Likewise.
(addhi3): Likewise.
(addsi3): Likewise.
(addhi3_cy): Likewise.
(addchi4_cy): Likewise.
(subqi3): Likewise.
(subhi3): Likewise.
(subsi3): Likewise.
(bic<mode>3): Likewise.
(and<mode>3): Likewise.
(ior<mode>3): Likewise.
(xor<mode>3): Likewise.
(slli_1): Add missing "%X" operand selector.
(slll_1): Likewise.
(slll_2): Likewise.
(srai_1): Likewise.
(sral_1): Likewise.
(sral_2): Likewise.
(srli_1): Likewise.
(srll_1): Likewise.
(cbranchqi4_real): Use "Yx" constraint in place of "%X" operand
selector.
(cbranchhi4_real): Likewise.
(cbranchqi4_reversed): Likewise.
(cbranchhi4_reversed): Likewise.
(*bitbranch<mode>4): Likewise.
(*bitbranch<mode>4_z): Remove unnecessary "%x" operand selector.
* config/msp430/msp430.opt (mcode-region=): Set default to
MSP430_REGION_LOWER. Improve docstring.
(mdata-region=): Likewise.
(muse-lower-region-prefix): New option.
* config/msp430/t-msp430 (MULTILIB_OPTIONS): Add
mdata-region=none multilib.
(MULTILIB_MATCHES): Set mdata-region={upper,either} to match
mdata-region=none multilib.
MULTILIB_EXCEPTIONS: Remove.
MULTILIB_REQUIRED: Define.
* configure: Regenerate.
* configure.ac: Define HAVE_AS_GNU_ATTRIBUTE and
HAVE_AS_MSPABI_ATTRIBUTE if GAS version >= 2.33.50.
* doc/extend.texi: Clarify comment for {upper,lower,either}
function attributes.
Add separate description for "lower" variable attribute.
gcc/testsuite/ChangeLog:
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* gcc.target/msp430/430x-insns.c: New test.
* gcc.target/msp430/data-attributes-2.c: Remove dg-warning
directives for conflicts between the "section" and "lower" attributes.
* gcc.target/msp430/msp430.exp
(check_effective_target_msp430_region_not_lower): New.
(check_effective_target_msp430_region_lower): New.
* gcc.target/msp430/object-attributes-430.c: New test.
* gcc.target/msp430/object-attributes-default.c: New test.
* gcc.target/msp430/object-attributes-mlarge-any-region.c: New test.
* gcc.target/msp430/object-attributes-mlarge.c: New test.
From-SVN: r276665
Jakub Jelinek [Mon, 7 Oct 2019 15:49:52 +0000 (17:49 +0200)]
* gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276664
Jakub Jelinek [Mon, 7 Oct 2019 15:44:55 +0000 (17:44 +0200)]
* gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276663
Paolo Carlini [Mon, 7 Oct 2019 15:37:52 +0000 (15:37 +0000)]
call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
/cp
2019-10-07 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
* decl.c (grokdeclarator): Use id_loc in one place.
* decl2.c (build_anon_union_vars): Use DECL_SOURCE_LOCATION.
* parser.c (cp_parser_delete_expression): Fix the location of the
returned expression.
(cp_parser_throw_expression): Likewise.
* pt.c (determine_specialization): Use DECL_SOURCE_LOCATION.
/testsuite
2019-10-07 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/not-a-function-template-1.C: New.
* g++.dg/template/crash107.C: Adjust expected location.
* g++.dg/template/dependent-expr1.C: Check locations.
* g++.dg/template/error17.C: Check location.
From-SVN: r276661
Ilya Leoshkevich [Mon, 7 Oct 2019 15:01:15 +0000 (15:01 +0000)]
Introduce can_vcond_compare_p function
z13 supports only non-signaling vector comparisons. This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.
However, we cannot express this restriction today: the code only checks
whether vcond$a$b optab exists, but this does not say anything about the
operation.
Introduce a function that checks whether back-end supports vector
comparisons with individual rtx codes by matching vcond expander's third
argument with a fake comparison with the corresponding rtx code.
gcc/ChangeLog:
2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/77918
* optabs-tree.c (vcond_icode_p): New function.
(vcond_eq_icode_p): Likewise.
(expand_vec_cond_expr_p): Use vcond_icode_p and
vcond_eq_icode_p.
* optabs.c (can_vcond_compare_p): New function.
* optabs.h (can_vcond_compare_p): Likewise.
From-SVN: r276660
Ilya Leoshkevich [Mon, 7 Oct 2019 14:59:00 +0000 (14:59 +0000)]
Allow COND_EXPR and VEC_COND_EXPR condtions to trap
Right now gimplifier does not allow VEC_COND_EXPR's condition to trap
and introduces a temporary if this could happen, for example, generating
_5 = _4 > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 };
_6 = VEC_COND_EXPR <_5, { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>;
from GENERIC
VEC_COND_EXPR < (*b > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }) ,
{ -1, -1, -1, -1 } ,
{ 0, 0, 0, 0 } >
This is not necessary and makes the resulting GIMPLE harder to analyze.
Change the gimplifier so as to allow COND_EXPR and VEC_COND_EXPR
conditions to trap.
This patch takes special care to avoid introducing trapping comparisons
in GIMPLE_COND. They are not allowed, because they would require 3
outgoing edges (then, else and EH), which is awkward to say the least.
Therefore, computations of such conditions should live in their own basic
blocks.
gcc/ChangeLog:
2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/77918
* gimple-expr.c (gimple_cond_get_ops_from_tree): Assert that the
caller passes a non-trapping condition.
(is_gimple_condexpr): Allow trapping conditions.
(is_gimple_condexpr_1): New helper function.
(is_gimple_condexpr_for_cond): New function, acts like old
is_gimple_condexpr.
* gimple-expr.h (is_gimple_condexpr_for_cond): New function.
* gimple.c (gimple_could_trap_p_1): Handle COND_EXPR and
VEC_COND_EXPR. Fix an issue with statements like i = (fp < 1.).
* gimplify.c (gimplify_cond_expr): Use
is_gimple_condexpr_for_cond.
(gimplify_expr): Allow is_gimple_condexpr_for_cond.
* tree-eh.c (operation_could_trap_p): Assert on COND_EXPR and
VEC_COND_EXPR.
(tree_could_trap_p): Handle COND_EXPR and VEC_COND_EXPR.
* tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Use
is_gimple_condexpr_for_cond, remove pointless tmp check
(forward_propagate_into_cond): Remove pointless tmp check.
From-SVN: r276659
Vladislav Ivanishin [Mon, 7 Oct 2019 14:29:07 +0000 (14:29 +0000)]
Make gsi_next_nonvirtual_phi do what one expects
gcc/
* gimple-iterator.h (gsi_next_nonvirtual_phi): Change the semantics to
match that of other gsi_next_* functions. Adjust the comment.
(gsi_start_nonvirtual_phis): New function.
* ipa-icf.c (sem_function::compare_phi_node): Update uses of
gsi_next_nonvirtual_phi accordingly. (No functional change.)
From-SVN: r276658
Vladislav Ivanishin [Mon, 7 Oct 2019 14:19:30 +0000 (14:19 +0000)]
[doc] -Wuninitialized doesn't do -Wclobbered's job
* gcc/doc/invoke.texi (-Wuninitialized): Don't mention the clobbered by
setjmp situation here. Fix a verb's ending: "the exact variables or
elements for which there are warnings depends" -> "... depend".
From-SVN: r276657
Aldy Hernandez [Mon, 7 Oct 2019 11:53:40 +0000 (11:53 +0000)]
* ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check.
From-SVN: r276655
Aldy Hernandez [Mon, 7 Oct 2019 11:43:13 +0000 (11:43 +0000)]
Disentangle range_fold_*ary_expr() into various independent pieces.
From-SVN: r276654
Aldy Hernandez [Mon, 7 Oct 2019 09:39:42 +0000 (09:39 +0000)]
Use value_range_base::num_pairs instead of vrp_val_is* to check if a range
has one sub-range.
From-SVN: r276653
Mark Eggleston [Mon, 7 Oct 2019 09:13:16 +0000 (09:13 +0000)]
Delete auto-in_equiv.f90 forgot to use svn delete the first time.
From-SVN: r276651
Richard Sandiford [Mon, 7 Oct 2019 08:39:12 +0000 (08:39 +0000)]
[IRA] Handle fully-tied destinations in a similar way to earlyclobbers
IRA's make_early_clobber_and_input_conflicts checks for cases in
which an output operand is likely to be an earlyclobber and an input
operand is unlikely to be tieable with it. If so, the allocno for
the output conflicts with the allocno for the input. This seems
to work well.
However, a similar situation arises if an output operand is likely
to be tied to one of a set of input operands X and if another input
operand has a different value from all of the operands in X.
E.g. if we have:
0: "=r, r"
1: "0, r"
2: "r, 0"
3: "r, r"
operand 0 will always be tied to operand 1 or operand 2, so if operand 3
is different from them both, operand 0 acts like an earlyclobber as far
as operand 3 (only) is concerned. The same is true for operand 2 in:
0: "=r"
1: "0"
2: "r"
In the second example, we'd normally have a copy between operand 1 and
operand 0 if operand 1 dies in the instruction, and so there's rarely
a problem. But if operand 1 doesn't die in the instruction, operand 0
still acts as an earlyclobber for operand 2 (if different from operand 1),
since in that case LRA must copy operand 1 to operand 0 before the
instruction.
As the existing comment says:
Avoid introducing unnecessary conflicts by checking classes of the
constraints and pseudos because otherwise significant code
degradation is possible for some targets.
I think that's doubly true here. E.g. it's perfectly reasonable to have
constraints like:
0: "=r, r"
1: "0, r"
2: "r, r"
on targets like s390 that have shorter instructions for tied operands,
but that don't want the size difference to influence RA too much.
We shouldn't treat operand 0 as earlyclobber wrt operand 2 in that case.
This patch therefore treats a normal tied non-earlyclobber output as
being effectively earlyclobber wrt to an input if it is so for *all*
preferred alternatives.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* ira-lives.c (check_and_make_def_conflict): Handle cases in which
DEF is not a true earlyclobber but is tied to a specific input
operand, and so is effectively earlyclobber wrt inputs that have
different values.
(make_early_clobber_and_input_conflicts): Pass this case to the above.
From-SVN: r276650
Richard Sandiford [Mon, 7 Oct 2019 08:38:49 +0000 (08:38 +0000)]
Use CONSTEXPR in machmode.h
This patch adds CONSTEXPR to constructors and operators in machmode.h,
excluding the controversial constexpr-resistant "() {}" constructors,
which would become "= default" if we required C++11.
Some of the other routines could potentially be constexpr too,
but that can be done on an as-needed basis.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* machmode.h (opt_mode): Mark constructors with CONSTEXPR.
(pod_mode): Mark operators likewise.
(scalar_int_mode): Mark non-default constructors and
operators with CONSTEXPR.
(scalar_float_mode, scalar_mode, complex_mode): Likewise.
(fixed_size_mode): Likewise.
From-SVN: r276649
Richard Sandiford [Mon, 7 Oct 2019 08:36:06 +0000 (08:36 +0000)]
[i386] Make the vzeroupper pattern describe its effects (PR91994)
The problem in this PR was that vzeroupper has an effect on register
contents, but those effects weren't modelled in the rtl pattern,
which was just an unspec_volatile.
This patch fixes that by running a subpass after vzeroupper insertion
to add SETs and CLOBBERs as appropriate. See the comments in the patch
for more details.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR target/91994
* config/i386/sse.md (avx_vzeroupper): Turn into a define_expand
and wrap the unspec_volatile in a parallel.
(*avx_vzeroupper): New define_insn. Use a match_parallel around
the unspec_volatile.
* config/i386/predicates.md (vzeroupper_pattern): Expect the
unspec_volatile to be wrapped in a parallel.
* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper)
(ix86_add_reg_usage_to_vzerouppers): New functions.
(rest_of_handle_insert_vzeroupper): Use them to add register
usage information to the vzeroupper instructions.
gcc/testsuite/
PR target/91994
* gcc.target/i386/pr91994.c: New test.
From-SVN: r276648
Richard Biener [Mon, 7 Oct 2019 07:53:45 +0000 (07:53 +0000)]
re PR tree-optimization/91975 (worse code for small array copy using pointer arithmetic than array indexing)
2019-10-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/91975
* tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
handle invariants.
* g++.dg/tree-ssa/ivopts-3.C: Adjust.
* gcc.dg/vect/vect-profile-1.c: Disable cunrolli.
* gcc.dg/vect/vect-double-reduc-6.c: Disable unrolling of
the innermost loop.
* gcc.dg/vect/vect-93.c: Likewise.
* gcc.dg/vect/vect-105.c: Likewise.
* gcc.dg/vect/pr79920.c: Likewise.
* gcc.dg/vect/no-vfa-vect-102.c: Likewise.
* gcc.dg/vect/no-vfa-vect-101.c: Likewise.
* gcc.dg/vect/pr83202-1.c: Operate on a larger array.
* gfortran.dg/vect/vect-8.f90: Likewise.
* gcc.dg/tree-ssa/cunroll-2.c: Scan early unrolling dump instead
of late one.
From-SVN: r276645
GCC Administrator [Mon, 7 Oct 2019 00:16:24 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276644
François Dumont [Sun, 6 Oct 2019 15:53:51 +0000 (15:53 +0000)]
Add std::copy_n istreambuf_iterator specialization
Commit this missing part which had been rejected.
From-SVN: r276640
Richard Sandiford [Sun, 6 Oct 2019 15:39:27 +0000 (15:39 +0000)]
Fix EXECUTE_IF_SET_IN_HARD_REG_SET use
As Maxim pointed out, r276309 broke -O3 bootstrap for aarch64-linux-gnu.
It turns out that EXECUTE_IF_SET_IN_HARD_REG_SET isn't safe to use for
temporary objects because their lifetimes don't extend to the end of
the loop. This patch therefore uses an explicit temporary instead.
Other patches in the series already used this style (but for
full_reg_and_partial_clobbers rather than full_reg_clobbers),
so AFAICT this is the only place that needs fixing.
2019-10-06 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* var-tracking.c (dataflow_set_clear_at_call): Hoist temporary
function result outside of EXECUTE_IF_SET_IN_HARD_REG_SET.
From-SVN: r276639
François Dumont [Sun, 6 Oct 2019 15:29:04 +0000 (15:29 +0000)]
Add std::copy_n istreambuf_iterator specialization
* include/bits/stl_algo.h
(__copy_n_a(_IIte, _Size, _OIte)): New.
(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
(__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
latter.
* include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
std::__copy_n_a friend.
(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
From-SVN: r276638
François Dumont [Sun, 6 Oct 2019 15:10:40 +0000 (15:10 +0000)]
Add C++11 __iterator_category_t template alias.
* include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
for C++11.
(_RequireInputIte): Likewise and use __enable_if_t.
* include/std/numeric
(__is_random_access_iter): Use __iterator_category_t.
From-SVN: r276637
François Dumont [Sun, 6 Oct 2019 10:29:35 +0000 (10:29 +0000)]
Add std::copy_n __glibcxx_requires_can_increment checks.
* include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
debug checks.
* testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
* testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
From-SVN: r276636
Iain Sandoe [Sun, 6 Oct 2019 08:02:03 +0000 (08:02 +0000)]
[Darwin] Fix some format-related build warnings.
This fixes two error messages to avoid punctuation and contracted
negations.
gcc/ChangeLog:
2019-10-06 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (darwin_override_options): Adjust objective-c
ABI version error messages to avoid punctuation and contracted
negations.
From-SVN: r276635
GCC Administrator [Sun, 6 Oct 2019 00:16:37 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276634
Steven G. Kargl [Sat, 5 Oct 2019 22:40:07 +0000 (22:40 +0000)]
2019-0105 Steven G. Kargl <kargl@gcc.gnu.org>
In my previous commit, I managed to include a duplicate copy
of the ChangeLog file. This commit removes the duplicate
portion.
From-SVN: r276630
Jan Hubicka [Sat, 5 Oct 2019 21:36:46 +0000 (23:36 +0200)]
ipa-inline.c: Fix type; compute size rather than self_size for size of caller function.
* ipa-inline.c: Fix type; compute size rather than self_size
for size of caller function.
From-SVN: r276629
Steven G. Kargl [Sat, 5 Oct 2019 15:23:26 +0000 (15:23 +0000)]
re PR fortran/47054 (Compilation error when cray pointers are declared in both host and internal subroutines)
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/47045
* decl.c (variable_decl): Do not search parent namespace for symbol.
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/47045
* gfortran.dg/pr47054_1.f90: New test
* gfortran.dg/pr47054_2.f90: Ditto.
From-SVN: r276627
Steven G. Kargl [Sat, 5 Oct 2019 14:27:26 +0000 (14:27 +0000)]
re PR fortran/91497 (-Wconversion warns when doing explicit type conversion)
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91497
* gfortran.dg/pr91497.f90: Run on i?86-*-* and x86_64-*-* only.
From-SVN: r276626
Paul Thomas [Sat, 5 Oct 2019 08:17:55 +0000 (08:17 +0000)]
re PR fortran/91926 (assumed rank optional)
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the
assignment of the attribute field to account correctly for an
assumed shape dummy. Assign separately to the gfc and cfi
descriptors since the atribute can be different. Add btanch to
correctly handle missing optional dummies.
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* gfortran.dg/ISO_Fortran_binding_13.f90 : New test.
* gfortran.dg/ISO_Fortran_binding_13.c : Additional source.
* gfortran.dg/ISO_Fortran_binding_14.f90 : New test.
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc): Do not
modify the bounds and offset for CFI_other.
From-SVN: r276624
Iain Sandoe [Sat, 5 Oct 2019 08:05:44 +0000 (08:05 +0000)]
[Darwin] Amend section for constants with reloactions.
Darwin's linker doesn't like text section relocations (they require special
enabling). At least, the Fortran FE seems to generate cases where the
initialiser for a pointer constant can need a relocation. We can handle
this by special-casing SECCAT_RODATA when the relocation is present by
placing the constant in the .const_data section.
gcc/ChangeLog:
2019-10-05 Iain Sandoe <iain@sandoe.co.uk>
PR target/59888
* config/darwin.c (darwin_rodata_section): Add relocation flag,
choose const_data section for constants with relocations.
(machopic_select_section): Pass relocation flag to
darwin_rodata_section ().
From-SVN: r276623
Jakub Jelinek [Sat, 5 Oct 2019 07:38:21 +0000 (09:38 +0200)]
PR c++/91369 - Implement P0784R7: constexpr new
PR c++/91369 - Implement P0784R7: constexpr new
c-family/
* c-cppbuiltin.c (c_cpp_builtins): Predefine
__cpp_constexpr_dynamic_alloc=201907 for -std=c++2a.
cp/
* cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_UNINIT_IDENTIFIER,
CPTI_HEAP_IDENTIFIER and CPTI_HEAP_DELETED_IDENTIFIER.
(heap_uninit_identifier, heap_identifier, heap_deleted_identifier):
Define.
(type_has_constexpr_destructor, build_new_constexpr_heap_type,
cxx_constant_dtor): Declare.
* class.c (type_maybe_constexpr_default_constructor): Make static.
(type_maybe_constexpr_destructor, type_has_constexpr_destructor): New
functions.
(finalize_literal_type_property): For c++2a, don't clear
CLASSTYPE_LITERAL_P for types without trivial destructors unless they
have non-constexpr destructors.
(explain_non_literal_class): For c++2a, complain about non-constexpr
destructors rather than about non-trivial destructors.
* constexpr.c: Include stor-layout.h.
(struct constexpr_global_ctx): New type.
(struct constexpr_ctx): Add global field, remove values and
constexpr_ops_count.
(cxx_replaceable_global_alloc_fn): New inline function.
(cxx_eval_call_expression): For c++2a allow calls to replaceable
global allocation functions, for new return address of a heap uninit
var, for delete record its deletion. Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
(non_const_var_error): Add auto_diagnostic_group sentinel. Emit
special diagnostics for heap variables.
(cxx_eval_store_expression): Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
(cxx_eval_loop_expr): Initialize jump_target if NULL. Change
new_ctx.values->remove to ctx->global->values.remove.
(cxx_eval_constant_expression): Change *ctx->constexpr_ops_count
to ctx->global->constexpr_ops_count. Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
<case NOP_EXPR>: Formatting fix. On cast of replaceable global
allocation function to some pointer type, adjust the type of
the heap variable and change name from heap_uninit_identifier
to heap_identifier.
(find_heap_var_refs): New function.
(cxx_eval_outermost_constant_expr): Add constexpr_dtor argument,
handle evaluation of constexpr dtors and add tracking of heap
variables. Use tf_no_cleanup for get_target_expr_with_sfinae.
(cxx_constant_value): Adjust cxx_eval_outermost_constant_expr caller.
(cxx_constant_dtor): New function.
(maybe_constant_value, fold_non_dependent_expr_template,
maybe_constant_init_1): Adjust cxx_eval_outermost_constant_expr
callers.
(potential_constant_expression_1): Ignore clobbers. Allow
COND_EXPR_IS_VEC_DELETE for c++2a.
* decl.c (initialize_predefined_identifiers): Add heap identifiers.
(decl_maybe_constant_destruction): New function.
(cp_finish_decl): Don't clear TREE_READONLY for constexpr variables
with non-trivial, but constexpr destructors.
(register_dtor_fn): For constexpr variables with constexpr non-trivial
destructors call cxx_maybe_build_cleanup instead of adding destructor
calls at runtime.
(expand_static_init): For constexpr variables with constexpr
non-trivial destructors call cxx_maybe_build_cleanup.
(grokdeclarator): Allow constexpr destructors for c++2a. Formatting
fix.
(cxx_maybe_build_cleanup): For constexpr variables with constexpr
non-trivial destructors call cxx_constant_dtor instead of adding
destructor calls at runtime.
* init.c: Include stor-layout.h.
(build_new_constexpr_heap_type, maybe_wrap_new_for_constexpr): New
functions.
(build_new_1): For c++2a and new[], add cast around the alloc call
to help constexpr evaluation figure out the type of the heap storage.
(build_vec_delete_1): Set DECL_INITIAL of tbase and emit a DECL_EXPR
for it instead of initializing an uninitialized variable.
* method.c: Include intl.h.
(SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P, SFK_MOVE_P): Move
definitions earlier.
(process_subob_fn): Add sfk argument, adjust non-constexpr call
diagnostics based on it.
(walk_field_subobs): Formatting fixes. Adjust process_subob_fn caller.
(synthesized_method_base_walk): Likewise.
(synthesized_method_walk): Set *constexpr_p to true for dtors in c++2a.
Fix up DR number in comment.
(implicitly_declare_fn): Formatting fix.
* typeck2.c (store_init_value): Don't call cp_fully_fold_init on
initializers of automatic non-constexpr variables in constexpr
functions.
testsuite/
* g++.dg/cpp0x/constexpr-delete2.C: Adjust expected diagnostics for
c++2a.
* g++.dg/cpp0x/locations1.C: Only expect constexpr ~S() diagnostics
in c++17_down, adjust expected wording.
* g++.dg/cpp1y/constexpr-new.C: Only expect diagnostics in c++17_down.
* g++.dg/cpp2a/constexpr-dtor1.C: New test.
* g++.dg/cpp2a/constexpr-dtor2.C: New test.
* g++.dg/cpp2a/constexpr-dtor3.C: New test.
* g++.dg/cpp2a/constexpr-new1.C: New test.
* g++.dg/cpp2a/constexpr-new2.C: New test.
* g++.dg/cpp2a/constexpr-new3.C: New test.
* g++.dg/cpp2a/constexpr-new4.C: New test.
* g++.dg/cpp2a/feat-cxx2a.C: Add __cpp_constinit and
__cpp_constexpr_dynamic_alloc tests. Tweak __cpp_* tests for c++2a
features to use style like older features, including #ifdef test.
* g++.dg/ext/is_literal_type3.C: New test.
From-SVN: r276622
Jakub Jelinek [Sat, 5 Oct 2019 07:36:09 +0000 (09:36 +0200)]
re PR tree-optimization/91734 (gcc skip an if statement with "-O1 -ffast-math")
PR tree-optimization/91734
* generic-match-head.c: Include fold-const-call.h.
* match.pd (sqrt(x) cmp c): Check the boundary value and
in case inexact computation of c*c affects comparison of the boundary,
turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
or GT_EXPR into GE_EXPR. Punt for sqrt comparisons against NaN and
for -frounding-math. For c2, try the next smaller or larger floating
point constant depending on comparison code and if it has the same
sqrt as c2, use it instead of c2.
* gcc.dg/pr91734.c: New test.
From-SVN: r276621
GCC Administrator [Sat, 5 Oct 2019 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276618
Joseph Myers [Fri, 4 Oct 2019 21:56:14 +0000 (22:56 +0100)]
Add strftime format checking support for C2x %OB and %Ob (bug 82752).
C2x adds strftime %OB and %Ob formats, for alternative forms of month
names (for mainly Slavic languages where a month name on its own is
declined differently from a month name together with a date within
that month). This patch adds corresponding format checking support.
(glibc support for these formats was added in glibc 2.27.)
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
PR c/82752
gcc/c-family:
* c-format.c (C_STD_VER): Handle C2x.
(C_STD_NAME): Likewise.
(strftime_flag_specs): Add 'O' modifier with 'p' flag.
(time_char_table): Use separate entry for 'B' and 'b', with 'O'
modifier allowed and 'p' flag.
* c-format.h (enum format_std_version): Add STD_C2X.
(struct format_char_info): Mention 'p' in comment on flags2.
gcc/testsuite:
* gcc.dg/format/c2x-strftime-1.c: New test.
From-SVN: r276605
Martin Sebor [Fri, 4 Oct 2019 21:29:41 +0000 (21:29 +0000)]
PR middle-end/91977 - missing -Wstringop-overflow on memcpy into a pointer plus offset
gcc/ChangeLog:
PR middle-end/91977
* tree-ssa-strlen.c (count_nonzero_bytes): Handle assignments with
MEM_REF right operand. Avoid failing for MEM_REF assignments from
uninitialized objects.
gcc/testsuite/ChangeLog:
PR middle-end/91977
* gcc.dg/Wstringop-overflow-18.c: New test.
From-SVN: r276603
Martin Sebor [Fri, 4 Oct 2019 21:26:27 +0000 (21:26 +0000)]
builtins.c (compute_objsize): Add an argument.
gcc/ChangeLog:
* builtins.c (compute_objsize): Add an argument.
* tree-object-size.c (addr_object_size): Same.
(compute_builtin_object_size): Same.
* tree-object-size.h (compute_builtin_object): Same.
gcc/testsuite/ChangeLog:
* gcc.dg/Wstringop-overflow-17.c: New test.
From-SVN: r276602
Steven G. Kargl [Fri, 4 Oct 2019 21:21:21 +0000 (21:21 +0000)]
PR fortran.91959
2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran.91959
* fortran/decl.c (variable_decl): Re-arrange code for matching %FILL.
2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran.91959
* gfortran.dg/pr91959.f90: New test.
From-SVN: r276601
François Dumont [Fri, 4 Oct 2019 20:22:11 +0000 (20:22 +0000)]
Improve _GLIBCXX_DEBUG safe iterator range size computation.
* include/debug/forward_list
(_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
distance when not empty.
* include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
Likewise.
* include/debug/helper_functions.h (__dp_sign_max_size): New
_Distance_precision enum entry.
(__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
__false_type)): Adapt.
* include/debug/safe_iterator.tcc
(_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
distance computation.
From-SVN: r276600
Jan Hubicka [Fri, 4 Oct 2019 19:10:39 +0000 (21:10 +0200)]
* ipa-inline.c (inline_insns_single, inline_insns_auto): Fix typo.
From-SVN: r276597
Nathan Sidwell [Fri, 4 Oct 2019 19:08:09 +0000 (19:08 +0000)]
[preprocessor/91991] column location overflow
https://gcc.gnu.org/ml/gcc-patches/2019-10/msg00371.html
PR preprocessor/91991
* line-map.c (linemap_line_start): Clear max_column_hint if we run
out of locations.
From-SVN: r276596
Rafael Tsuha [Fri, 4 Oct 2019 18:34:29 +0000 (18:34 +0000)]
match.pd (sinh (x) / cosh (x)): New simplification rule.
* match.pd (sinh (x) / cosh (x)): New simplification rule.
* gcc.dg/sinhovercosh-1.c: New test.
From-SVN: r276595
Ian Lance Taylor [Fri, 4 Oct 2019 18:14:30 +0000 (18:14 +0000)]
compiler: include selected constant types during export processing
The machinery that collects types referenced by expressions that are
part of inlinable function bodies was missing the types of local named
constants in certain cases. This patch updates the
Collect_export_references::expression() hook to look for references to
local named constants and include their types in the exported set.
Fixes golang/go#34577.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/198017
From-SVN: r276594
Martin Jambor [Fri, 4 Oct 2019 16:25:02 +0000 (18:25 +0200)]
Add missing gimple_call_set_fntype
2019-10-04 Martin Jambor <mjambor@suse.cz>
* tree-ssa-forwprop.c (simplify_builtin_call): Set gimple call
fntype when switching to calling memcpy instead of memset.
From-SVN: r276593
Bernd Edlinger [Fri, 4 Oct 2019 16:22:28 +0000 (16:22 +0000)]
hash-table.h (hash_table::empty_slow): Don't assign size_t values to int variables.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* hash-table.h (hash_table::empty_slow): Don't assign
size_t values to int variables.
From-SVN: r276592
Bernd Edlinger [Fri, 4 Oct 2019 16:21:11 +0000 (16:21 +0000)]
expr.c (convert_mode_scalar): Remove shadowing local var.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* expr.c (convert_mode_scalar): Remove shadowing local var.
(emit_block_move): Rename local vars.
(block_move_libcall_safe_for_call_parm): Remove shadowing local var.
(emit_push_insn): Rename local vars.
(expand_assignment): Fix wrong mode in assign_stack_temp. Remove
shadowing local vars.
(store_constructor): Remove shadowing local vars. Rename local var.
(store_field, expand_cond_expr_using_cmove,
expand_expr_real_2): Remove shadowing local vars.
(expand_expr_real_1,
do_store_flag): Remove shadowing local vars. Rename local vars.
From-SVN: r276591
Bernd Edlinger [Fri, 4 Oct 2019 16:18:22 +0000 (16:18 +0000)]
cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
From-SVN: r276590
Bernd Edlinger [Fri, 4 Oct 2019 16:15:00 +0000 (16:15 +0000)]
genmatch.c (commutate): Rename local var.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* genmatch.c (commutate): Rename local var.
(lower_cond): Reuse local var.
(dt_node::gen, dt_node::gen_kids, dt_node::gen_kids_1,
dt_operand::gen, dt_operand::gen_gimple_expr,
dt_simplify::gen): Add a param. Rename generated vars.
(decision_tree::insert_operand,
(capture_info::walk_match, capture_info::walk_result,
capture_info::walk_c_expr): Rename local vars.
(expr::gen_transform): Rename generated vars.
Use snprintf. Rename local vars.
(capture::gen_transform, dt_operand::get_name,
dt_operand::gen_opname): Rename generated vars.
(write_predicate): Adjust call to gen_kids.
(parser::get_internal_capture_id): Rename generated vars.
(parser::parse_expr): Rename local vars.
(parser::parse_if): Remove local var.
(parser::parse_pattern, add_operator): Rename local vars.
From-SVN: r276589
Joseph Myers [Fri, 4 Oct 2019 16:08:06 +0000 (17:08 +0100)]
Mark C2x built-in functions as such.
Various built-in functions that GCC has as extensions are now standard
functions in C2x. This patch adds DEF_C2X_BUILTIN and uses it to mark
them as such. Some of the so-marked functions were previously
DEF_EXT_LIB_BUILTIN, while some DFP ones were DEF_GCC_BUILTIN
(i.e. __builtin_* only); both sets become DEF_C2X_BUILTIN. This in
turn requires flag_isoc2x to be defined in various front ends using
builtins.def.
As the semantics of the built-in functions should already be tested,
the tests added only verify that they are declared in C2x mode but not
in C11 mode. The test of DFP built-in functions being declared for
C2x goes in gcc.dg/dfp/, as while such built-in functions currently
don't depend on whether DFP is supported, that looks like a bug to me
(see bug 91985), so it seems best for the tests not to depend on
exactly how that bug might be fixed.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
gcc:
* builtins.def (DEF_C2X_BUILTIN): New macro.
(exp10, exp10f, exp10l, fabsd32, fabsd64, fabsd128, nand32)
(nand64, nand128, roundeven, roundevenf, roundevenl, strdup)
(strndup): Use DEF_C2X_BUILTIN.
* coretypes.h (enum function_class): Add function_c2x_misc.
gcc/ada:
* gcc-interface/utils.c (flag_isoc2x): New variable.
gcc/brig:
* brig-lang.c (flag_isoc2x): New variable.
gcc/lto:
* lto-lang.c (flag_isoc2x): New variable.
gcc/testsuite:
* gcc.dg/c11-builtins-1.c, gcc.dg/c2x-builtins-1.c,
gcc.dg/dfp/c2x-builtins-dfp-1.c: New tests.
From-SVN: r276588
Maya Rashish [Fri, 4 Oct 2019 15:43:07 +0000 (15:43 +0000)]
ira-color.c (update_costs_from_allocno): Call ira_init_register_move_cost_if_necessary.
* ira-color.c (update_costs_from_allocno): Call
ira_init_register_move_cost_if_necessary.
From-SVN: r276587
Jonathan Wakely [Fri, 4 Oct 2019 15:08:23 +0000 (16:08 +0100)]
Build filesystem library with large file support
Enable AC_SYS_LARGEFILE to set the macros needed for large file APIs to
be used by default. We do not want to define those macros in the
public headers that users include. The values of the macros are copied
to a separate file that is only included by the filesystem sources
during the build, and then the macros in <bits/c++config.h> are renamed
so that they don't have any effect in user code including our headers.
Also use larger type for result of filesystem::file_size to avoid
truncation of large values on 32-bit systems (PR 91947).
PR libstdc++/81091
PR libstdc++/91947
* configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
* config.h.in: Regenerate:
* configure: Regenerate:
* include/Makefile.am (${host_builddir}/largefile-config.h): New
target to generate config header for filesystem library.
(${host_builddir}/c++config.h): Rename macros for large file support.
* include/Makefile.in: Regenerate.
* src/c++17/fs_dir.cc: Include new config header.
* src/c++17/fs_ops.cc: Likewise.
(filesystem::file_size): Use uintmax_t for size.
* src/filesystem/dir.cc: Include new config header.
* src/filesystem/ops.cc: Likewise.
(experimental::filesystem::file_size): Use uintmax_t for size.
From-SVN: r276585
Jonathan Wakely [Fri, 4 Oct 2019 15:08:14 +0000 (16:08 +0100)]
Replace uses of std::tr1::unordered_map in testsuite
* testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
std::tr1::unordered_map.
* testsuite/util/testsuite_allocator.h: Likewise.
From-SVN: r276584
Jeff Law [Fri, 4 Oct 2019 14:45:46 +0000 (08:45 -0600)]
h8300.md (cpymemsi): Disable.
* config/h8300/h8300.md (cpymemsi): Disable.
(movmd, movmd_internal_<mode>, movstr, movsd):
(movstr, movsd, stpcpy_internal_<mode>: Likewise.
(movmd splitter, movsd splitter): Likewise.
From-SVN: r276582
Jeff Law [Fri, 4 Oct 2019 14:27:45 +0000 (08:27 -0600)]
range-op.cc (range_tests): Avoid two tests when ints and shorts are the same size.
* range-op.cc (range_tests): Avoid two tests when ints and
shorts are the same size.
From-SVN: r276581
Mark Eggleston [Fri, 4 Oct 2019 14:11:36 +0000 (14:11 +0000)]
Replace test cases for using automatic variables in equivalence statements.
From-SVN: r276580
Ian Lance Taylor [Fri, 4 Oct 2019 13:50:07 +0000 (13:50 +0000)]
compiler: adjust code to avoid shadowing local variables
Also add a couple of missing calls to free after mpz_get_str.
This should make the code clean with respect to -Wshadow=local.
Based on patch by Bernd Edlinger.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/198837
From-SVN: r276579
Richard Sandiford [Fri, 4 Oct 2019 13:27:53 +0000 (13:27 +0000)]
Fix gcc.target/aarch64/torture/simd-abi-8.c for big-endian
Fix a big-endian failure reported by Christophe. Also tighten the
test so that it doesn't allow saving and restoring 128-bit vectors
as Q registers.
2019-10-04 Richard Sandiford <richard.sandiford@arm.com>
gcc/testsuite/
* gcc.target/aarch64/torture/simd-abi-8.c: Use -mlittle-endian.
Check that there are no Q register saves or restores.
From-SVN: r276577
Jonathan Wakely [Fri, 4 Oct 2019 13:17:54 +0000 (14:17 +0100)]
Add missing header required by previous change
* include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
From-SVN: r276576
Jonathan Wakely [Fri, 4 Oct 2019 12:17:01 +0000 (13:17 +0100)]
Adjust tr1::_Hashtable to work with std::allocator in C++20
In C++20 std::allocator will no longer define construct and destroy
member functions, so using them needs to go via allocator_traits.
* include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
__gnu_cxx::__alloc_traits for allocator construct function.
(tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
From-SVN: r276575
Jonathan Wakely [Fri, 4 Oct 2019 12:16:56 +0000 (13:16 +0100)]
Add <span> to <bits/stdc++.h> precompiled header
* include/precompiled/stdc++.h: Include <span> for C++20.
* testsuite/17_intro/names.cc: Do not define 'e' for C++20.
From-SVN: r276574
Richard Biener [Fri, 4 Oct 2019 11:40:40 +0000 (11:40 +0000)]
loop-3.c: Fix undefined behavior.
2019-10-04 Richard Biener <rguenther@suse.de>
* gcc.c-torture/execute/loop-3.c: Fix undefined behavior.
From-SVN: r276572
Richard Biener [Fri, 4 Oct 2019 11:37:16 +0000 (11:37 +0000)]
re PR debug/91968 (DW_AT_low_pc missing for DW_TAG_label with LTO)
2019-10-04 Richard Biener <rguenther@suse.de>
PR lto/91968
* tree.c (find_decls_types_r): Do not remove LABEL_DECLs from
BLOCK_VARS.
From-SVN: r276571
Yuliang Wang [Fri, 4 Oct 2019 10:40:47 +0000 (10:40 +0000)]
Fix gcc.target/aarch64/sve2/shracc_1.c for ILP32
2019-10-04 Yuliang Wang <yuliang.wang@arm.com>
gcc/testsuite/
* gcc.target/aarch64/sve2/shracc_1.c: Tighten scan-assembler-nots
to avoid matching scalar code.
From-SVN: r276568
Tobias Burnus [Fri, 4 Oct 2019 09:29:31 +0000 (11:29 +0200)]
[Fortran] Fix column of %C diagnostic location
gcc/fortran/
* error (error_print, gfc_format_decoder): Fix off-by one issue with %C.
gcc/testsuite/
* gfortran.dg/use_without_only_1.f90: Update column num in dg-warning.
From-SVN: r276567
Richard Biener [Fri, 4 Oct 2019 09:18:26 +0000 (09:18 +0000)]
re PR target/91982 (gcc.target/aarch64/sve/clastb_*.c tests failing with segfault)
2019-10-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/91982
* tree-vect-loop.c (vectorizable_live_operation): Also guard
against EXTRACT_LAST_REDUCTION.
* tree-vect-stmts.c (vect_transform_stmt): Likewise.
From-SVN: r276566
Aldy Hernandez [Fri, 4 Oct 2019 07:08:56 +0000 (07:08 +0000)]
Adjust various comments and rename some functions in range-op.cc to
improve readability.
From-SVN: r276564
Jakub Jelinek [Fri, 4 Oct 2019 06:56:02 +0000 (08:56 +0200)]
re PR c++/71504 ([C++11] constexpr fails with multidimensional arrays)
PR c++/71504
* constexpr.c (cxx_fold_indirect_ref_1): New function.
(cxx_fold_indirect_ref): Use it.
* g++.dg/cpp0x/constexpr-array21.C: New test.
* g++.dg/cpp1y/constexpr-array7.C: New test.
* g++.dg/cpp1z/constexpr-array1.C: New test.
2019-10-04 Jason Merrill <jason@redhat.com>
PR c++/71504
* g++.dg/cpp0x/constexpr-array20.C: New test.
From-SVN: r276563
Jakub Jelinek [Fri, 4 Oct 2019 06:54:05 +0000 (08:54 +0200)]
re PR c++/91974 (function not sequenced before function argument)
PR c++/91974
* cp-gimplify.c (cp_gimplify_expr) <case CALL_EXPR>: For
-fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated
before any arguments. Additionally, ensure CALL_EXPR_FN that isn't
invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary.
* g++.dg/cpp1z/eval-order5.C: New test.
From-SVN: r276562
Bernd Edlinger [Fri, 4 Oct 2019 05:42:08 +0000 (05:42 +0000)]
invoke.texi (-Wshadow=global, [...]): Fix description.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* doc/invoke.texi (-Wshadow=global, -Wshadow=local,
-Wshadow=compatible-local): Fix description.
Add an example where -Wshadow=compatible-local does not
warn.
From-SVN: r276561
GCC Administrator [Fri, 4 Oct 2019 00:16:26 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276560
John David Anglin [Thu, 3 Oct 2019 23:51:42 +0000 (23:51 +0000)]
fptr.c: Disable -Warray-bounds warning.
* config/pa/fptr.c: Disable -Warray-bounds warning.
From-SVN: r276556
John David Anglin [Thu, 3 Oct 2019 23:32:53 +0000 (23:32 +0000)]
pa.h (MAX_PCREL17F_OFFSET): Adjust.
* config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust.
From-SVN: r276555
John David Anglin [Thu, 3 Oct 2019 22:39:49 +0000 (22:39 +0000)]
pa.c (pa_output_call): Remove 64-bit sibcall sequence.
* config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
(pa_attr_length_call): Adjust length for 64-bit plabel sequence.
From-SVN: r276543
Aaron Sawdey [Thu, 3 Oct 2019 22:19:14 +0000 (22:19 +0000)]
expr.c (emit_block_move_hints): Slightly cleaner fix to can_move_by_pieces issue.
2019-10-03 Aaron Sawdey <acsawdey@linux.ibm.com>
* expr.c (emit_block_move_hints): Slightly cleaner fix to
can_move_by_pieces issue.
From-SVN: r276542
Eduard-Mihai Burtescu [Thu, 3 Oct 2019 21:54:47 +0000 (23:54 +0200)]
rust-demangle.c (looks_like_rust): Remove.
* rust-demangle.c (looks_like_rust): Remove.
(rust_is_mangled): Don't check escapes.
(is_prefixed_hash): Allow 0-9a-f permutations.
(rust_demangle_sym): Don't bail on unknown escapes.
* testsuite/rust-demangle-expected: Update 'main::$99$' test.
From-SVN: r276539
Steven G. Kargl [Thu, 3 Oct 2019 20:46:26 +0000 (20:46 +0000)]
re PR fortran/91497 (-Wconversion warns when doing explicit type conversion)
2019-10-03 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91497
* simplify.c (gfc_simplify_dble, simplify_intconv, gfc_simplify_real,
gfc_simplify_sngl): Disable -Wconversion and -Wconversion-extra
warnings for explicit conversion of literal constants.
2019-10-03 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91497
* gfortran.dg/pr91497.f90: New test.
From-SVN: r276532
Iain Sandoe [Thu, 3 Oct 2019 20:19:18 +0000 (20:19 +0000)]
[Darwin] Pick up SDKROOT as the sysroot fallback.
For compatibility with xcrun and the behaviour of the clang driver, make use
of the setting of the SDKROOT environment variable when it is available.
This applies to both finding headers and libraries (i.e. it is also passed to
ld64).
Priority:
1. User's command-line specified --sysroot= or -isysroot.
2. The SDKROOT variable when set, and validated.
3. Any sysroot provided by --with-sysroot= configuration parameter.
SDKROOT is checked thus:
1. Presence.
2. That it starts with "/" (i.e. 'absolute').
3. That it is not "/" only (since that's the default).
4. That it is readable by the process executing the driver.
This is pretty much the same rule set as used by the clang driver.
NOTE: (3) might turn out to be overly restrictive in the case that we
have configured with --with-sysroot= and then we want to run on a system
with an installation of the headers/libraries in /. We can revisit this
if that turns out to be an important use-case.
So one can do:
xcrun --sdk macosx /path/to/gcc ....
and that provides the SDK path as the sysroot to GCC as expected.
CAVEAT: An unfortunate effect of the fact that "gcc" (and "g++") are
executables in the Xcode installation, which are found ahead of any such
named in the $PATH:
PATH=/path/to/gcc/install:$PATH
xcrun --sdk macosx gcc ....
does *not* work, instead that executes the clang from the xcode/commmand
line tools installation.
PATH=/path/to/gcc/install:$PATH
xcrun --sdk macosx x64_64-apple-darwinXX-gcc ...
does work as expected, however.
gcc/ChangeLog:
2019-10-03 Iain Sandoe <iain@sandoe.co.uk>
PR target/87243
* config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New.
(darwin_driver_init): Use the sysroot provided by SDKROOT when that
is available and the user has not set one on the command line.
From-SVN: r276530
Jan Hubicka [Thu, 3 Oct 2019 19:45:23 +0000 (21:45 +0200)]
* g++.dg/tree-ssa/pr61034.C: Add --param max-inline-insns-single-O2=200.
From-SVN: r276527
Dragan Mladjenovic [Thu, 3 Oct 2019 19:17:20 +0000 (19:17 +0000)]
re PR target/91769 (wrong code with -O2 on MIPS)
Fix PR target/91769
This fixes the issue by checking that addr's base reg is not part of dest
multiword reg instead just checking the first reg of dest.
gcc/ChangeLog:
2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
PR target/91769
* config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
instead of REGNO equality check on addr.reg.
gcc/testsuite/ChangeLog:
2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
PR target/91769
* gcc.target/mips/pr91769.c: New test.
From-SVN: r276525
Julian Brown [Thu, 3 Oct 2019 17:48:36 +0000 (17:48 +0000)]
Libgomp magic offset value self-documentation
2019-10-02 Julian Brown <julian@codesourcery.com>
Cesar Philippidis <cesar@codesourcery.com>
libgomp/
* libgomp.h (OFFSET_INLINED, OFFSET_POINTER, OFFSET_STRUCT): Define.
* target.c (FIELD_TGT_EMPTY): Define.
(gomp_map_val): Use OFFSET_* macros instead of magic constants. Write
as switch instead of list of ifs.
(gomp_map_vars_internal): Use OFFSET_* and FIELD_TGT_EMPTY macros.
Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r276519