Commit Graph

171780 Commits

Author SHA1 Message Date
Thomas Schwinge
df77d70319 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
2019-10-08 12:20:50 +02:00
Thomas Schwinge
ca72b78045 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
2019-10-08 12:20:41 +02:00
Thomas Schwinge
41bc80c3cd Revise 'libgfortran/runtime/minimal.c' to better conform to the original sources
libgfortran/
	* runtime/minimal.c: Revise.

From-SVN: r276690
2019-10-08 12:20:31 +02:00
Tobias Burnus
5cfa327dc0 Remove '>>>' merge marker from changelog
From-SVN: r276689
2019-10-08 11:35:56 +02:00
Richard Sandiford
813982933f [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
2019-10-08 08:24:40 +00:00
Joseph Myers
fbb2a6dcf8 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
2019-10-08 01:37:45 +01:00
GCC Administrator
b11df8983d Daily bump.
From-SVN: r276685
2019-10-08 00:16:15 +00:00
Prathamesh Kulkarni
b238b34ea4 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
2019-10-07 23:44:49 +00:00
Jozef Lawrynowicz
cac52161c5 Revert: 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.md: Revert: Group zero_extend* insns together.

From-SVN: r276680
2019-10-07 21:22:04 +00:00
Jozef Lawrynowicz
795fe3d2c6 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
2019-10-07 21:04:07 +00:00
Iain Sandoe
b393e5ede4 [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
2019-10-07 20:21:50 +00:00
Iain Sandoe
2161a445d1 [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
2019-10-07 20:14:26 +00:00
Jozef Lawrynowicz
8a8969957a 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
2019-10-07 20:09:49 +00:00
Jozef Lawrynowicz
53f450825d 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
2019-10-07 20:05:30 +00:00
Uros Bizjak
36d387f2f0 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
2019-10-07 20:41:17 +02:00
Jozef Lawrynowicz
8682b1a508 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
2019-10-07 15:58:19 +00:00
Jakub Jelinek
0b06099d40 * gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276664
2019-10-07 17:49:52 +02:00
Jakub Jelinek
240334e084 * gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276663
2019-10-07 17:44:55 +02:00
Paolo Carlini
132235c30f 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
2019-10-07 15:37:52 +00:00
Ilya Leoshkevich
dcd2ca63ec 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
2019-10-07 15:01:15 +00:00
Ilya Leoshkevich
70e2a30ac8 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
2019-10-07 14:59:00 +00:00
Vladislav Ivanishin
880dcdaeda 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
2019-10-07 14:29:07 +00:00
Vladislav Ivanishin
ca95ce80e0 [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
2019-10-07 14:19:30 +00:00
Aldy Hernandez
19849d1585 * ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check.
From-SVN: r276655
2019-10-07 11:53:40 +00:00
Aldy Hernandez
523fe5b611 Disentangle range_fold_*ary_expr() into various independent pieces.
From-SVN: r276654
2019-10-07 11:43:13 +00:00
Aldy Hernandez
3faf75d458 Use value_range_base::num_pairs instead of vrp_val_is* to check if a range
has one sub-range.

From-SVN: r276653
2019-10-07 09:39:42 +00:00
Mark Eggleston
7a3248463c Delete auto-in_equiv.f90 forgot to use svn delete the first time.
From-SVN: r276651
2019-10-07 09:13:16 +00:00
Richard Sandiford
9b0365879b [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
2019-10-07 08:39:12 +00:00
Richard Sandiford
ad00d6c174 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
2019-10-07 08:38:49 +00:00
Richard Sandiford
698114484e [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
2019-10-07 08:36:06 +00:00
Richard Biener
806bdf4e40 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
2019-10-07 07:53:45 +00:00
GCC Administrator
3e1f7c33ae Daily bump.
From-SVN: r276644
2019-10-07 00:16:24 +00:00
François Dumont
5daedc0218 Add std::copy_n istreambuf_iterator specialization
Commit this missing part which had been rejected.

From-SVN: r276640
2019-10-06 15:53:51 +00:00
Richard Sandiford
1c8264003a 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
2019-10-06 15:39:27 +00:00
François Dumont
8ab38f6cbc 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
2019-10-06 15:29:04 +00:00
François Dumont
6e55630310 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
2019-10-06 15:10:40 +00:00
François Dumont
2c6374228b 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
2019-10-06 10:29:35 +00:00
Iain Sandoe
b1ca639a86 [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
2019-10-06 08:02:03 +00:00
GCC Administrator
224d1b10ae Daily bump.
From-SVN: r276634
2019-10-06 00:16:37 +00:00
Steven G. Kargl
f24b653c39 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
2019-10-05 22:40:07 +00:00
Jan Hubicka
6c291ad828 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
2019-10-05 21:36:46 +00:00
Steven G. Kargl
2345fe52da 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
2019-10-05 15:23:26 +00:00
Steven G. Kargl
74e4fb1361 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
2019-10-05 14:27:26 +00:00
Paul Thomas
980f185ce3 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
2019-10-05 08:17:55 +00:00
Iain Sandoe
d56cbcc0a2 [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
2019-10-05 08:05:44 +00:00
Jakub Jelinek
8e007055dd 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
2019-10-05 09:38:21 +02:00
Jakub Jelinek
0043b5280e 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
2019-10-05 09:36:09 +02:00
GCC Administrator
30648d0215 Daily bump.
From-SVN: r276618
2019-10-05 00:16:20 +00:00
Joseph Myers
843f104d5b 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
2019-10-04 22:56:14 +01:00
Martin Sebor
daa94de24b 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
2019-10-04 15:29:41 -06:00