Commit Graph

166789 Commits

Author SHA1 Message Date
Jerry DeLisle
9faf6e7018 re PR libfortran/89020 (close(status='DELETE') does not remove file)
2019-01-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/89020
	* io/close.c (st_close): Simplify text of error message to not
	presume a specific cause of failure to remove file.

From-SVN: r268319
2019-01-27 19:42:34 +00:00
Eric Botcazou
683ccd0568 repinfo.adb (List_Component_Layout): Remove superfluous space for zero-sized field.
* repinfo.adb (List_Component_Layout): Remove superfluous space for
	zero-sized field.
	* gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
	* gcc-interface/gigi.h (create_extra_subtype): Declare.
	* gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
	(update_n_elem): New function.
	(gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
	instead of doing it manually.
	<E_Array_Type>: Use update_n_elem to compute the maximum size.  Use the
 	index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
	of the array to the maximum size.
	<E_Array_Subtype>: Create an extra subtype using the index type of the
	base array type for self-referential bounds.  Use update_n_elem to
	compute the maximum size.  Set TYPE_ARRAY_MAX_SIZE of the array to the
	maximum size.
	(gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
	* gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
	the base type for an extra subtype.
	(gnat_type_max_size): Remove obsolete code.
	* gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
	(can_be_lower_p): Deal with pathological types.
	* gcc-interface/utils.c (create_extra_subtype): New function.
	(create_field_decl): Minor tweak.
	(max_size) <tcc_reference>: Compute a better value by using the extra
 	subtypes on the self-referential bounds.
	<tcc_binary>: Rewrite.  Deal with "negative value" in unsigned types.
	<tcc_expression>: Likewise.
	* gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
	of the arrays upfront.  Swap only if the second length is not constant.
	Use comparisons on the original bounds consistently for the null tests.
	(build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
	(build_allocator): Minor tweak.

From-SVN: r268318
2019-01-27 19:14:14 +00:00
Eric Botcazou
33731c6661 decl.c (array_type_has_nonaliased_component): Return the same value for every dimension of a multidimensional array type.
* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
	the same value for every dimension of a multidimensional array type.

From-SVN: r268314
2019-01-27 18:05:59 +00:00
Jakub Jelinek
b253f94d4f re PR target/87214 (r263772 miscompiled 520.omnetpp_r in SPEC CPU 2017)
PR target/87214
	* config/i386/sse.md
	(<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>,
	avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ensure the
	first constants in pairs are multiples of 2.  Formatting fixes.
	(avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
	avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Ensure the
	first constants in each quadruple are multiples of 4.  Formatting fixes.

	* gcc.target/i386/avx512vl-pr87214-1.c: New test.
	* gcc.target/i386/avx512vl-pr87214-2.c: New test.

From-SVN: r268310
2019-01-27 12:56:44 +01:00
Jerry DeLisle
2ee43ae6d6 re PR libfortran/89020 (close(status='DELETE') does not remove file)
2019-01-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/89020
	* io/close.c (st_close): Fix typo.

From-SVN: r268309
2019-01-27 01:36:40 +00:00
GCC Administrator
b8f1882e87 Daily bump.
From-SVN: r268308
2019-01-27 00:16:30 +00:00
Martin Jambor
95a2ed0325 [PR ipa/88933] Careful CFG cleanup in IPA-CP function transformation
2019-01-26  Martin Jambor  <mjambor@suse.cz>

	PR ipa/88933
	* tree-inline.c: Include tree-cfgcleanup.h.
	(delete_unreachable_blocks_update_callgraph): Move...
	* tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
	...here, make externally visible, make second argument bool, adjust
	all callers.
	* tree-cfgcleanup.c: Include cgraph.h.
	* tree-cfgcleanup.h (delete_unreachable_blocks_update_callgraph):
	Declare.
	* ipa-prop.c: Include tree-cfgcleanup.h.
	(ipcp_transform_function): Call
	delete_unreachable_blocks_update_callgraph instead of cleaning uo CFG.

	testsuite/
	* gfortran.dg/gomp/pr88933.f90: New test.

From-SVN: r268305
2019-01-26 23:19:17 +01:00
Iain Buclaw
e4e13e2610 Fix ICE when handling void initialized manifest constants.
gcc/d/ChangeLog:

2019-01-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR d/89042
	* decl.cc (DeclVisitor::visit(VarDeclaration)): Don't assert if
	handling a void initialized manifest constant.

gcc/testsuite/ChangeLog:

2019-01-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR d/89042
	* gdc.dg/pr89042a.d: New test.
	* gdc.dg/pr89042b.d: New test.

From-SVN: r268304
2019-01-26 21:07:15 +00:00
Harald Anlauf
3a55c8e248 re PR fortran/57553 ([F08] Valid use of STORAGE_SIZE rejected, bad error message for invalid use)
2019-01-26  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/57553
	* expr.c (check_inquiry): Add list of inquiry functions allowed in
	constant expressions for F2008+.

2019-01-26  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/57553
	* gfortran.dg/pr57553.f90: New test.

From-SVN: r268303
2019-01-26 20:45:55 +00:00
Jerry DeLisle
fac29445ac Fix bug number referenced in previous commit.
From-SVN: r268302
2019-01-26 20:39:33 +00:00
Jerry DeLisle
0e34715e97 re PR libfortran/89020 (close(status='DELETE') does not remove file)
2019-01-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/88020
	* io/close.c (st_close): Generate error if calls to 'remove' return
	an error.

From-SVN: r268301
2019-01-26 20:27:16 +00:00
Harald Anlauf
b4f964c8ed Add myself to MAINTAINERS
From-SVN: r268300
2019-01-26 20:12:45 +00:00
Eric Botcazou
93101d2386 trans.c (Regular_Loop_to_gnu): Use the SLOC of the iteration scheme, if present, throughout the translation.
* gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
	iteration scheme, if present, throughout the translation.

From-SVN: r268299
2019-01-26 16:07:47 +00:00
Eric Botcazou
e54b62687a trans.c (gnat_to_gnu): Use DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned by a...
* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
	DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
	by a call to memset if the LHS is a DECL.

From-SVN: r268296
2019-01-26 15:59:34 +00:00
Iain Buclaw
685ae5b871 libphobos: Merge phobos and druntime with upstream.
Commits merged from druntime.

    Fix struct tls_index definition on x32
    https://github.com/dlang/druntime/pull/2354

    Update SectionGroup signatures to match on all targets
    https://github.com/dlang/druntime/pull/2401

    Fix issue 19128 - argument to alloca may be too large
    https://github.com/dlang/druntime/pull/2409

    Define some common filesystem limits in core.stdc.limits
    https://github.com/dlang/druntime/pull/2460

    Use version Darwin instead of OSX in core.sys.posix.aio
    https://github.com/dlang/druntime/pull/2470

Commits merged from phobos.

    Don't run HardFloat tests on SoftFloat systems
    https://github.com/dlang/phobos/pull/5358

    Remove reliance on stdin, stdout, stderr being aliasable
    https://github.com/dlang/phobos/pull/5718

    Solaris: add import clock_gettime to currStdTime
    https://github.com/dlang/phobos/pull/5807

    Don't print debug messages when building unittests
    https://github.com/dlang/phobos/pull/6827

    Add HPPA support to phobos
    Fixes https://gcc.gnu.org/PR89054
    https://github.com/dlang/phobos/pull/6836

From-SVN: r268293
2019-01-26 13:41:26 +00:00
Eric Botcazou
8f915edbe1 trans.c (struct loop_info_d): Remove artificial field.
* gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
	(Loop_Statement_to_gnu): Do not set it.

From-SVN: r268290
2019-01-26 12:02:51 +00:00
Eric Botcazou
22903f2208 trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
* gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
	(Acc_gnat_to_gnu): Likewise.
	(Acc_Data_to_gnu): Likewise.
	(Acc_Var_to_gnu): Likewise.
	(Acc_Reduc_to_gnu): Likewise.
	(Acc_Size_List_to_gnu): Likewise.
	(Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
	<Pragma_Acc_Data>): Likewise.
	(find_loop_for): Remove default value for parameters.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
	<N_Op_Eq>): ...this.

From-SVN: r268289
2019-01-26 11:45:40 +00:00
Eric Botcazou
03160cc9d6 decl.c (annotate_value): Use test on the sign bit instead of on the sign of the value.
* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
	the sign bit instead of on the sign of the value.
	<PLUS_EXPR>: Turn addition of negative constant into subtraction.
	<MULT_EXPR>: Add test for degenerate case.
	<BIT_AND_EXPR>: Simplify.

From-SVN: r268286
2019-01-26 11:34:39 +00:00
Jakub Jelinek
18f5df94df re PR preprocessor/88974 (ICE: Segmentation fault (in linemap_resolve_location))
PR preprocessor/88974
	* directives.c (SEEN_EOL): Move macro to ...
	* internal.h (SEEN_EOL): ... here.
	* expr.c (parse_has_include): Don't cpp_get_token if SEEN_EOL ().

	* c-c++-common/cpp/pr88974.c: New test.

From-SVN: r268285
2019-01-26 11:08:00 +01:00
GCC Administrator
2f6a6b28eb Daily bump.
From-SVN: r268284
2019-01-26 00:16:27 +00:00
Vladimir Makarov
990c182066 Fix PR number in my ChangeLog entry.
From-SVN: r268281
2019-01-25 22:24:43 +00:00
Vladimir Makarov
cc30d932d4 2019-01-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/888846
	* ira.c (process_set_for_memref_referenced_p): New.
	(memref_referenced_p): Add new param.  Use
	process_set_for_memref_referenced_p.  Add new switch cases.
	(memref_used_between_p): Pass new arg to memref_referenced_p.

From-SVN: r268280
2019-01-25 22:13:43 +00:00
Paolo Carlini
6edee4b3d3 re PR c++/88969 (ICE in build_op_delete_call, at cp/call.c:6509)
/cp
2019-01-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/88969
	* call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
	* decl2.c (coerce_delete_type): Use build_pointer_type instead
	of TYPE_POINTER_TO.

/testsuite
2019-01-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/88969
	* g++.dg/cpp2a/destroying-delete2.C: New.
	* g++.dg/cpp2a/destroying-delete3.C: Likewise.

From-SVN: r268278
2019-01-25 19:50:55 +00:00
Steven G. Kargl
f28c46cdb8 re PR fortran/85780 (ICE in resolve_fl_procedure, at fortran/resolve.c:12504)
2019-01-25  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85780
	* decl.c (gfc_match_subroutine): Check for conflict between BIND(C)
	and alternative return.

2019-01-25  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85780
	* gfortran.dg/pr85780.f90: Update testcase for error message.

From-SVN: r268277
2019-01-25 17:55:25 +00:00
Kwok Cheung Yeung
1009e9a2e4 Add myself to MAINTAINERS
2019-01-25  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r268276
2019-01-25 17:23:19 +00:00
Nathan Sidwell
4bfcd13938 [backtrace] Avoid segfault
https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01521.html

	* elf.c (elf_add): Pass "" filename to recursive call with
	separated debug.

From-SVN: r268275
2019-01-25 17:16:53 +00:00
Richard Earnshaw
c590597c45 This is pretty unlikely in real code...
This is pretty unlikely in real code, but similar to Arm, the AArch64
ABI has a bug with the handling of 128-bit bit-fields, where if the
bit-field dominates the overall alignment the back-end code may end up
passing the argument correctly.  This is a regression that started in
gcc-6 when the ABI support code was updated to support overaligned
types.  The fix is very similar in concept to the Arm fix.  128-bit
bit-fields are fortunately extremely rare, so I'd be very surprised if
anyone has been bitten by this.

PR target/88469
gcc/
	* config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add new
	argument ABI_BREAK.  Set to true if the calculated alignment has
	changed in gcc-9.  Check bit-fields for their base type alignment.
	(aarch64_layout_arg): Warn if argument passing has changed in gcc-9.
	(aarch64_function_arg_boundary): Likewise.
	(aarch64_gimplify_va_arg_expr): Likewise.

gcc/testsuite/
	* gcc.target/aarch64/aapcs64/test_align-10.c: New test.
	* gcc.target/aarch64/aapcs64/test_align-11.c: New test.
	* gcc.target/aarch64/aapcs64/test_align-12.c: New test.

From-SVN: r268273
2019-01-25 17:09:33 +00:00
Richard Sandiford
3c35efc322 Fix output_constructor_bitfield handling of wide bitfields (PR89037)
The testcase was failing because we were trying to access
TREE_INT_CST_ELT (x, 1) of a 128-bit integer that was small enough
to need only a single element.

2019-01-25  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR middle-end/89037
	* varasm.c (output_constructor_bitfield): Use wi::extract_uhwi
	instead of accessing TREE_INT_CST_ELT directly.

gcc/testsuite/
	PR middle-end/89037
	* gcc.dg/pr89037.c: New test.

From-SVN: r268272
2019-01-25 16:57:32 +00:00
Segher Boessenkool
62fa42ce81 Fix Xiong's changelogs a bit
From-SVN: r268271
2019-01-25 17:20:40 +01:00
Tom de Vries
c75795fa1d [libbacktrace] Fix strrchr segfault
Currently, when running a libbacktrace testcase t with .gnu_debuglink to
t.debug, and t.debug having a .gnu_debugaltlink to t.alt.debug, a segfault
is triggered when calling strrchr with a NULL string from
elf_find_debugfile_by_debuglink.  The NULL string originates from the elf_add
called for the .gnu_debugaltlink, which uses NULL as filename argument.

Fix this by using "" as filename argument instead.

2019-01-25  Tom de Vries  <tdevries@suse.de>

	* elf.c (elf_add): When handling .gnu_debugaltlink, call elf_add with
	filename == "".
	* Makefile.am (TESTS): Add btest_dwz_gnudebuglink.
	* Makefile.in: Regenerate.

From-SVN: r268269
2019-01-25 14:39:58 +00:00
Tom de Vries
37ab491dce [libbacktrace] Rename dtest to btest_gnudebuglink
Create a pattern rule for copying an existing test-case, separating out the
debug information into a .debug file, and referencing the .debug file from
the copied test-case using a .gnu_debuglink.

2019-01-25  Tom de Vries  <tdevries@suse.de>

	* Makefile.am: Rewrite dtest rule into "%_gnudebuglink" pattern rule.
	(TESTS): Rename dtest to btest_gnudebuglink.
	* Makefile.in: Regenerate.

From-SVN: r268268
2019-01-25 14:39:47 +00:00
Christophe Lyon
55ac4e01c1 [testsuite] Add missing fenv effective target to fp-int-convert-timode* tests.
2019-01-25  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* doc/sourcebuild.texi (Environment attributes): Add fenv and
	fenv_exceptions description.

2019-01-25  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_fenv): New.
	* gcc.dg/torture/fp-int-convert-float128-timode-3.c: Add missing
	fenv effective target.
	* gcc.dg/torture/fp-int-convert-timode-1.c: Likewise.
	* gcc.dg/torture/fp-int-convert-timode-2.c: Likewise.
	* gcc.dg/torture/fp-int-convert-timode-3.c: Likewise.
	* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.

From-SVN: r268266
2019-01-25 14:36:37 +01:00
Wilco Dijkstra
f73dc00604 [PATCH][AArch64] Fix generation of tst (PR87763)
The TST instruction no longer matches in all cases due to changes in
Combine.  The fix is simple, we now need to allow a subreg as well when
selecting the cc_mode.  This fixes the tst_5.c and tst_6.c failures.

AArch64 regress & bootstrap OK.

	PR rtl-optimization/87763
	* config/aarch64/aarch64.c (aarch64_select_cc_mode):
	Allow SUBREG when matching CC_NZmode compare.

From-SVN: r268265
2019-01-25 13:29:06 +00:00
Richard Biener
cb1ba35f58 re PR tree-optimization/89049 (Unexpected vectorization)
2019-01-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/89049
	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
	Look at the pattern stmt to determine if the stmt is vectorized.

From-SVN: r268264
2019-01-25 12:46:24 +00:00
Richard Sandiford
9c6b4601a9 [AArch64][SVE] Handle register-register pred_movs
pred_mov<mode> is defined for predicated loads and stores, where
exactly one of the operands is a register.  However, the instruction
condition only checked for "one" rather than "exactly one", and
Prathamesh found a case in which combine could fold a predicated
pattern to an all-register pred_mov<mode>.  The constraints would
then force one of the registers to memory.

This patch splits all-register forms into a normal move as soon
as possible, but also adds an all-register alternative in case the
instruction doesn't get split before RA (or in case the RA can use
inheritance to avoid a reload).

The testcase for this will be added to aarch64/sve-acle-branch.

2018-01-25  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64-sve.md (*pred_mov<mode>)
	(pred_mov<mode>): Handle all-register forms using both a new
	alternative and a split.

From-SVN: r268263
2019-01-25 12:26:49 +00:00
Richard Biener
2ad04111c3 re PR tree-optimization/86865 (Wrong code w/ -O2 -floop-parallelize-all -fstack-reuse=none -fwrapv -fno-tree-ch -fno-tree-dce -fno-tree-dominator-opts -fno-tree-loop-ivcanon)
2019-01-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/86865
	* graphite-scop-detection.c (scop_detection::can_represent_loop):
	Reject non-do-while loops.

	* gcc.dg/graphite/pr86865.c: New testcase.
	* gcc.dg/graphite/pr69728.c: XFAIL.
	* gcc.dg/graphite/scop-21.c: Likewise.

From-SVN: r268257
2019-01-25 08:13:34 +00:00
GCC Administrator
bb58a17beb Daily bump.
From-SVN: r268256
2019-01-25 00:16:33 +00:00
Peter Bergner
2e42a52fd1 altivec.md (build_vector_mask_for_load): Use MEM_P.
* config/rs6000/altivec.md (build_vector_mask_for_load): Use MEM_P.
	* config/rs6000/constraints.md (Q constraint): Use REG_P.
	* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Use SYMBOL_REF_P.
	* config/rs6000/freebsd64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
	SYMBOL_REF_P, CONST_INT_P and CONST_DOUBLE_P.
	* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
	* config/rs6000/predicates.md (altivec_register_operand, vint_operand,
	vsx_register_operand, vsx_reg_sfsubreg_ok, vfloat_operand,
	vlogical_operand, gpc_reg_operand, int_reg_operand,
	int_reg_operand_not_pseudo): Use SUBREG_P and HARD_REGISTER_P.
	(ca_operand, base_reg_operand, htm_spr_reg_operand, cc_reg_operand,
	cc_reg_not_cr0_operand, input_operand): Use SUBREG_P.
	(save_world_operation, restore_world_operation, lmw_operation,
	stmw_operation): Use MEM_P and REG_P.
	(tie_operand): Use MEM_P.
	(vrsave_operation, crsave_operation): Use REG_P.
	(mfcr_operation, mtcrf_operation): Use REG_P and CONST_INT_P.
	(fpr_reg_operand): Use SUBREG_P and HARD_REGISTER_NUM_P.
	(quad_int_reg_operand): Use HARD_REGISTER_NUM_P.
	(call_operand): Use HARD_REGISTER_P.
	(indexed_or_indirect_operand, altivec_indexed_or_indirect_operand):
	Use CONST_INT_P.
	(lwa_operand): Use SUBREG_P, REG_P and CONST_INT_P.
	* config/rs6000/rs6000-p8swap.c (insn_is_load_p, insn_is_store_p,
	quad_aligned_load_p, replace_swapped_aligned_store,
	recombine_lvx_pattern, replace_swapped_aligned_load,
	recombine_stvx_pattern): Use MEM_P.
	(const_load_sequence_p, adjust_vperm, replace_swapped_load_constant):
	Use MEM_P and SYMBOL_REF_P.
	(rtx_is_swappable_p): Use REG_P and CONST_INT_P.
	(insn_is_swappable_p): Use REG_P and MEM_P.
	(insn_is_swap_p, (alignment_mask): Use CONST_INT_P.
	* config/rs6000/rs6000-string.c (expand_block_clear, expand_block_move):
	Use CONST_INT_P.
	* config/rs6000/rs6000.c (rs6000_secondary_reload, rs6000_emit_cmove):
	Use CONST_DOUBLE_P.
	(rs6000_output_move_128bit): Use CONST_DOUBLE_P, CONST_INT_P and
	CONST_WIDE_INT_P.
	(rs6000_legitimize_address): Use CONST_DOUBLE_P, CONST_INT_P,
	CONST_WIDE_INT_P, REG_P and SYMBOL_REF_P.
	(rs6000_emit_move): Use CONST_DOUBLE_P, CONST_INT_P, HARD_REGISTER_P,
	HARD_REGISTER_NUM_P, MEM_P, REG_P, SUBREG_P, SYMBOL_REF_P and
	reg_or_subregno:
	(output_toc): Use CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
	(easy_altivec_constant, rs6000_legitimate_offset_address_p,
	rs6000_mode_dependent_address, rs6000_expand_mtfsf_builtin,
	rs6000_expand_set_fpscr_rn_builtin, rs6000_expand_set_fpscr_drn_builtin,
	rs6000_expand_unop_builtin, INT_P, rs6000_generate_compare,
	rs6000_machopic_legitimize_pic_address, rs6000_split_logical_inner,
	rs6000_split_logical_di): Use CONST_INT_P.
	(rs6000_legitimize_reload_address): Use CONST_INT_P, HARD_REGISTER_P,
	REG_P and SYMBOL_REF_P.
	(setup_incoming_varargs, rs6000_rtx_costs): Use CONST_INT_P and MEM_P.
	(print_operand): Use CONST_INT_P, MEM_P and REG_P.
	(virtual_stack_registers_memory_p, rs6000_legitimate_address_p,
	mems_ok_for_quad_peep): Use CONST_INT_P and REG_P.
	(rs6000_secondary_reload_memory): Use CONST_INT_P and SUBREG_P.
	(small_data_operand, print_operand_address): Use CONST_INT_P and
	SYMBOL_REF_P.
	(split_stack_arg_pointer_used_p): Use HARD_REGISTER_P.
	(rs6000_init_hard_regno_mode_ok, direct_move_p):
	Use HARD_REGISTER_NUM_P.
	(rs6000_secondary_reload_gpr): Use HARD_REGISTER_NUM_P and MEM_P.
	(rs6000_secondary_reload_class): Use HARD_REGISTER_NUM_P, REG_P,
	SUBREG_P and SYMBOL_REF_P.
	(register_to_reg_type, rs6000_secondary_reload_inner): Use SUBREG_P
	and HARD_REGISTER_NUM_P.
	(rs6000_adjust_vec_address): Use HARD_REGISTER_NUM_P and
	reg_or_subregno.
	(rs6000_adjust_cost, find_mem_ref): Use MEM_P.
	(macho_lo_sum_memory_operand, rs6000_eliminate_indexed_memrefs): Use
	MEM_P and REG_P.
	(legitimate_indirect_address_p, legitimate_lo_sum_address_p,
	registers_ok_for_quad_peep, rs6000_output_function_epilogue,
	find_addr_reg): Use REG_P.
	(altivec_expand_vec_perm_const): Use REG_P and SUBREG_P.
	(rs6000_emit_le_vsx_move): Use SUBREG_P.
	(offsettable_ok_by_alignment, constant_pool_expr_p,
	legitimate_small_data_p, rs6000_output_dwarf_dtprel,
	rs6000_delegitimize_address, rs6000_const_not_ok_for_debug_p,
	rs6000_cannot_force_const_mem, rs6000_output_addr_const_extra,
	rs6000_assemble_integer, create_TOC_reference,
	rs6000_emit_allocate_stack, rs6000_xcoff_encode_section_info,
	rs6000_call_aix, rs6000_call_aix): Use SYMBOL_REF_P.
	(rs6000_split_vec_extract_var): Use reg_or_subregno.
	* config/rs6000/rtems.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
	CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
	* config/rs6000/sysv4.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
	* config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
	* config/rs6000/rs6000.h (RS6000_SYMBOL_REF_TLS_P): Use SYMBOL_REF_P.
	(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use HARD_REGISTER_NUM_P.
	(INT_REG_OK_FOR_INDEX_P, INT_REG_OK_FOR_BASE_P): Use HARD_REGISTER_P.
	(CONSTANT_ADDRESS_P): Use CONST_INT_P and SYMBOL_REF_P.
	* config/rs6000/rs6000.md (define_expands strlensi, mod<mode>3
	and cbranch<mode>4): Use CONST_INT_P.
	(multiple define_splits): Use REG_P and SUBREG_P.
	(define_expands call, call_value): Use MEM_P.
	(define_expands sibcall, sibcall_value): Use CONST_INT_P and  MEM_P.
	(define insn *mtcrfsi): Use CONST_INT_P and REG_P.
	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>,
	*vsx_le_perm_load_v8hi, *vsx_le_perm_load_v16qi): Use HARD_REGISTER_P
	and HARD_REGISTER_NUM_P.
	(multiple define_splits): Use HARD_REGISTER_NUM_P.

From-SVN: r268253
2019-01-24 16:48:06 -06:00
Jason Merrill
b5d0294eaf PR c++/89001 - mangling of reference temporaries
It used to be the case that the mangled name of a reference temporary didn't
need to be standardized, because all access would be through the reference.
But now constant expressions can look through references and so different
translation units need to agree on the address of a temporary in the
initializer of a reference with vague linkage.

	* cp-tree.h (struct saved_scope): Add ref_temp_count.
	(current_ref_temp_count): New macro.
	* mangle.c (mangle_ref_init_variable): Use it.
	* typeck2.c (store_init_value): Clear it.
	* call.c (make_temporary_var_for_ref_to_temp): Copy public and
	comdat.

From-SVN: r268252
2019-01-24 16:23:33 -05:00
Martin Sebor
d8b5a1a00d PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
PR middle-end/86308 - ICE in verify_gimple calling index() with an invalid declaration
PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
PR c/88886 - [9 Regression] ice in get_constant, at c-family/c-format.c:292

gcc/c/ChangeLog:

	PR c/86125
	PR c/88886
	PR middle-end/86308
	* c-decl.c (match_builtin_function_types): Add arguments.
	(diagnose_mismatched_decls): Diagnose mismatched declarations
	of built-ins more strictly.

gcc/testsuite/ChangeLog:

	PR c/86125
	PR c/88886
	PR middle-end/86308
	* gcc.dg/Wbuiltin-declaration-mismatch-6.c: New test.
	* gcc.dg/Wbuiltin-declaration-mismatch-7.c: New test.
	* gcc.dg/Wbuiltin-declaration-mismatch-8.c: New test.
	* gcc.dg/Wbuiltin-declaration-mismatch-9.c: New test.
	* gcc.dg/Wbuiltin-declaration-mismatch-10.c: New test.
	* gcc.dg/builtins-69.c: New test.
	* gcc.dg/Wint-conversion-2.c: Add expected warning.
	* gcc.c-torture/execute/eeprof-1.c: Adjust function signatures.

From-SVN: r268251
2019-01-24 14:06:01 -07:00
Uros Bizjak
b0e0e88526 ChangeLog: Correct PR classification.
* ChangeLog: Correct PR classification.
	* testsuite/ChangeLog: Ditto.

From-SVN: r268250
2019-01-24 21:51:25 +01:00
Uros Bizjak
53f2f08b05 re PR rtl-optimization/88948 (ICE in elimination_costs_in_insn, at reload1.c:3640 since r264148)
PR target/88948
	* rtl.h (prepare_copy_insn): New prototype.
	* gcse.c (prepare_copy_insn): New function, split out from
	process_insert_insn.
	(process_insert_insn): Use prepare_copy_insn.
	* store-motion.c (replace_store_insn): Use prepare_copy_insn
	instead of gen_move_insn.

testsuite/ChangeLog:

	PR target/88948
	* gcc.target/i386/pr88948.c: New test.

From-SVN: r268249
2019-01-24 21:48:01 +01:00
Jakub Jelinek
83e23dcd56 re PR debug/89006 (New note: non-delegitimized UNSPEC UNSPEC_SET_GOT (14) found in variable location since r267638)
PR debug/89006
	* config/i386/i386.c (ix86_pic_register_p): Return true for
	UNSPEC_SET_GOT too.

	* g++.dg/debug/pr89006.C: New test.

From-SVN: r268248
2019-01-24 21:20:47 +01:00
Jakub Jelinek
f359ba2fa9 re PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)
PR tree-optimization/88964
	* gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Also
	punt if HONOR_SNANS (chrec).

From-SVN: r268247
2019-01-24 20:49:09 +01:00
Jakub Jelinek
3b4218cc9f re PR middle-end/89015 (ICE in lookup_decl_in_outer_ctx, at omp-low.c:3480)
PR middle-end/89015
	* tree-nested.c (convert_nonlocal_reference_stmt,
	convert_local_reference_stmt, convert_tramp_reference_stmt,
	convert_gimple_call) <case GIMPLE_OMP_TEAMS>: Treat
	gimple_omp_teams_host teams stmts like GIMPLE_OMP_PARALLEL
	or GIMPLE_OMP_TASK.

	* gcc.dg/gomp/pr89015.c: New test.

From-SVN: r268246
2019-01-24 20:17:13 +01:00
Jakub Jelinek
e21c449129 re PR c++/88976 (ICE in fold_convert_loc, at fold-const.c:2552)
PR c++/88976
	* c-typeck.c (c_finish_omp_cancel): Diagnose more than one if
	on #pragma omp cancel with different modifiers.

	* semantics.c (finish_omp_cancel): Diagnose more than one if
	on #pragma omp cancel with different modifiers.  Use
	maybe_convert_cond when not in template or build_x_binary_op
	otherwise.

	* c-c++-common/gomp/cancel-2.c: New test.
	* gcc.dg/gomp/cancel-1.c: New test.
	* g++.dg/gomp/cancel-1.C: New test.
	* g++.dg/gomp/cancel-2.C: New test.
	* g++.dg/gomp/cancel-3.C: New test.

From-SVN: r268245
2019-01-24 20:16:21 +01:00
Jakub Jelinek
acac773aaa re PR tree-optimization/89027 (ICE: verify_gimple failed (Error: non-trivial conversion at assignment))
PR tree-optimization/89027
	* tree-inline.c (add_clobbers_to_eh_landing_pad): Don't add clobbers
	for "omp simd array" variables.

	* gfortran.dg/gomp/pr89027.f90: New test.

From-SVN: r268243
2019-01-24 20:14:51 +01:00
Richard Earnshaw
21f657a48f Mitigation for PR target/88469 on arm-based systems bootstrapping with gcc-6/7/8
This patch, for gcc 8/9 is a mitigation patch for PR target/88469
where gcc-6/7/8 miscompile a structure whose alignment is dominated by
a 64-bit bitfield member.  Since the PCS rules for such a type must
ignore any overalignment of the base type we cannot address this by
simply adding a larger alignment to the class.  We can, however, force
the alignment of the bit-field itself and GCC will handle that as
desired.

	PR target/88469
	* profile-count.h (profile_count): On ARM systems using GCC 6/7/8
	force the alignment of m_val.

From-SVN: r268240
2019-01-24 16:06:34 +00:00
Jonathan Wakely
e658669fe1 PR libstdc++/88840 delay evaluation of constant until type is complete
Clang fails to compile std::vector<Incomplete> because the static member
__use_relocate cannot be evaluated for an incomplete type. Replace with
a static member function that will not be odr-used until needed, by
which point the type must be complete.

	PR libstdc++/88840
	* include/bits/stl_vector.h (vector::__use_relocate): Replace static
	data member with static member function _S_use_relocate().
	* include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
	(vector::_M_default_append): Use _S_use_relocate() instead of
	__use_relocate.

From-SVN: r268239
2019-01-24 15:39:25 +00:00
Jonathan Wakely
400a08e284 Fix failing test due to inconsistent strcmp results
* testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
	sign of results.

From-SVN: r268238
2019-01-24 15:39:19 +00:00