Commit graph

157792 commits

Author SHA1 Message Date
Sudakshina Das
90b415f686 [PATCH] Add myself as GCC maintainer
*** ChangeLog ***

2017-11-22  Sudakshina Das  <sudi.das@arm.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r255071
2017-11-22 18:18:51 +00:00
Thomas Koenig
ddc9995b13 re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)
2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* Makefile.am: Add i_maxloc0s_c, i_maxloc1s_c, i_maxloc2s_c,
	i_minloc0s_c, i_minloc1s_c and i_minloc2s_c.
	* Makefile.in: Regenerated.
        * generated/maxloc0_16_s1.c: New file.
        * generated/maxloc0_16_s4.c: New file.
        * generated/maxloc0_4_s1.c: New file.
        * generated/maxloc0_4_s4.c: New file.
        * generated/maxloc0_8_s1.c: New file.
        * generated/maxloc0_8_s4.c: New file.
        * generated/maxloc1_16_s1.c: New file.
        * generated/maxloc1_16_s4.c: New file.
        * generated/maxloc1_4_s1.c: New file.
        * generated/maxloc1_4_s4.c: New file.
        * generated/maxloc1_8_s1.c: New file.
        * generated/maxloc1_8_s4.c: New file.
        * generated/maxloc2_16_s1.c: New file.
        * generated/maxloc2_16_s4.c: New file.
        * generated/maxloc2_4_s1.c: New file.
        * generated/maxloc2_4_s4.c: New file.
        * generated/maxloc2_8_s1.c: New file.
        * generated/maxloc2_8_s4.c: New file.
        * generated/minloc0_16_s1.c: New file.
        * generated/minloc0_16_s4.c: New file.
        * generated/minloc0_4_s1.c: New file.
        * generated/minloc0_4_s4.c: New file.
        * generated/minloc0_8_s1.c: New file.
        * generated/minloc0_8_s4.c: New file.
        * generated/minloc1_16_s1.c: New file.
        * generated/minloc1_16_s4.c: New file.
        * generated/minloc1_4_s1.c: New file.
        * generated/minloc1_4_s4.c: New file.
        * generated/minloc1_8_s1.c: New file.
        * generated/minloc1_8_s4.c: New file.
        * generated/minloc2_16_s1.c: New file.
        * generated/minloc2_16_s4.c: New file.
        * generated/minloc2_4_s1.c: New file.
        * generated/minloc2_4_s4.c: New file.
        * generated/minloc2_8_s1.c: New file.
        * generated/minloc2_8_s4.c: New file.
        * m4/iforeach-s.m4: New file.
        * m4/ifunction-s.m4: New file.
        * m4/maxloc0s.m4: New file.
        * m4/maxloc1s.m4: New file.
        * m4/maxloc2s.m4: New file.
        * m4/minloc0s.m4: New file.
        * m4/minloc1s.m4: New file.
        * m4/minloc2s.m4: New file.
	* gfortran.map: Add new functions.
	* libgfortran.h: Add gfc_array_s1 and gfc_array_s4.

2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* check.c (int_or_real_or_char_check_f2003): New function.
	* iresolve.c (gfc_resolve_maxloc): Add number "2" for
	character arguments and rank-zero return value.
	(gfc_resolve_minloc): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Handle case of
	character arguments and rank-zero return value by removing
	unneeded arguments and calling the library function.

2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* gfortran.dg/maxloc_string_1.f90: New test.
	* gfortran.dg/minloc_string_1.f90: New test.

From-SVN: r255070
2017-11-22 18:08:07 +00:00
Olivier Hainque
824a2b3d8c vxworks.c (vxworks_override_options): Pick default dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
2017-11-22  Olivier Hainque  <hainque@adacore.com>

       * config/vxworks.c (vxworks_override_options): Pick default
	dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
       * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
       DWARF_GNAT_ENCODINGS_DEFAULT.
       * config/vxworksae.h: Likewise.

From-SVN: r255069
2017-11-22 17:30:07 +00:00
Marc Glisse
e54675bbab Avoid two_valued_val_range_p for pointers.
2017-11-22  Marc Glisse  <marc.glisse@inria.fr>

	PR tree-optimization/83104
gcc/
	* vr-values.c (simplify_stmt_using_ranges): Check integral argument,
	not result.

gcc/testsuite/
	* gcc.c-torture/compile/pr83104.c: New file.

From-SVN: r255068
2017-11-22 16:44:46 +00:00
Christophe Lyon
29a3136e6d [ARM] Fix more -Wreturn-type fallout (gcc.target/arm/pr56184.C).
2017-11-22  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/arm/pr56184.C: Add -Wno-return-type to dg-options.

From-SVN: r255067
2017-11-22 17:33:21 +01:00
Marek Polacek
974aedcce8 re PR c++/60336 (empty struct value is passed differently in C and C++)
PR c++/60336
	PR middle-end/67239
	PR target/68355
	* c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.

	* class.c (layout_class_type): Set DECL_PADDING_P on padding.
	* decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P.
	(grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.

	* lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P.

	* calls.c (initialize_argument_information): Call
	warn_parameter_passing_abi target hook.
	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
	argument onto stack.
	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
	* common.opt: Update -fabi-version description.
	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
	int_size_in_bytes.
	(ix86_is_empty_record): New function.
	(ix86_warn_parameter_passing_abi): New function.
	(TARGET_EMPTY_RECORD_P): Redefine.
	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
	* doc/tm.texi: Regenerated.
	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
	* dwarf2out.c (get_ultimate_context): Move to tree.c.
	* explow.c (hard_function_value): Call arg_int_size_in_bytes
	instead of int_size_in_bytes.
	* expr.c (copy_blkmode_to_reg): Likewise.
	* function.c (aggregate_value_p): Return 0 for empty types.
	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook.
	(locate_and_pad_parm): Call arg size_in_bytes instead
	size_in_bytes.
	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
	* target.def (empty_record_p, warn_parameter_passing_abi): New target
	hooks.
	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
	(std_gimplify_va_arg_expr): Skip empty records.  Call
	arg_size_in_bytes instead size_in_bytes.
	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
	* tree-core.h (tree_type_common): Add empty_flag.
	(tree_decl_common): Update comments.
	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
	DECL_PADDING_P.
	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
	DECL_PADDING_P.
	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
	* tree.c (default_is_empty_type): New function.
	(default_is_empty_record): New function.
	(arg_int_size_in_bytes): New function.
	(arg_size_in_bytes): New function.
	(get_ultimate_context): New function.
	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
	TRANSLATION_UNIT_WARN_EMPTY_P.
	(default_is_empty_record, arg_int_size_in_bytes,
	arg_size_in_bytes, get_ultimate_context): Declare.

	* g++.dg/abi/empty12.C: New test.
	* g++.dg/abi/empty12.h: New test.
	* g++.dg/abi/empty12a.c: New test.
	* g++.dg/abi/empty13.C: New test.
	* g++.dg/abi/empty13.h: New test.
	* g++.dg/abi/empty13a.c: New test.
	* g++.dg/abi/empty14.C: New test.
	* g++.dg/abi/empty14.h: New test.
	* g++.dg/abi/empty14a.c: New test.
	* g++.dg/abi/empty15.C: New test.
	* g++.dg/abi/empty15.h: New test.
	* g++.dg/abi/empty15a.c: New test.
	* g++.dg/abi/empty16.C: New test.
	* g++.dg/abi/empty16.h: New test.
	* g++.dg/abi/empty16a.c: New test.
	* g++.dg/abi/empty17.C: New test.
	* g++.dg/abi/empty17.h: New test.
	* g++.dg/abi/empty17a.c: New test.
	* g++.dg/abi/empty18.C: New test.
	* g++.dg/abi/empty18.h: New test.
	* g++.dg/abi/empty18a.c: New test.
	* g++.dg/abi/empty19.C: New test.
	* g++.dg/abi/empty19.h: New test.
	* g++.dg/abi/empty19a.c: New test.
	* g++.dg/abi/empty20.C: New test.
	* g++.dg/abi/empty21.C: New test.
	* g++.dg/abi/empty22.C: New test.
	* g++.dg/abi/empty22.h: New test.
	* g++.dg/abi/empty22a.c: New test.
	* g++.dg/abi/empty23.C: New test.
	* g++.dg/abi/empty24.C: New test.
	* g++.dg/abi/empty25.C: New test.
	* g++.dg/abi/empty25.h: New test.
	* g++.dg/abi/empty25a.c: New test.
	* g++.dg/abi/empty26.C: New test.
	* g++.dg/abi/empty26.h: New test.
	* g++.dg/abi/empty26a.c: New test.
	* g++.dg/abi/empty27.C: New test.
	* g++.dg/abi/empty28.C: New test.
	* g++.dg/abi/pr60336-1.C: New test.
	* g++.dg/abi/pr60336-10.C: New test.
	* g++.dg/abi/pr60336-11.C: New test.
	* g++.dg/abi/pr60336-12.C: New test.
	* g++.dg/abi/pr60336-2.C: New test.
	* g++.dg/abi/pr60336-3.C: New test.
	* g++.dg/abi/pr60336-4.C: New test.
	* g++.dg/abi/pr60336-5.C: New test.
	* g++.dg/abi/pr60336-6.C: New test.
	* g++.dg/abi/pr60336-7.C: New test.
	* g++.dg/abi/pr60336-8.C: New test.
	* g++.dg/abi/pr60336-9.C: New test.
	* g++.dg/abi/pr68355.C: New test.
	* g++.dg/lto/pr60336_0.C: New test.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
Co-Authored-By: Jason Merrill <jason@redhat.com>

From-SVN: r255066
2017-11-22 16:06:18 +00:00
Thomas Preud'homme
fc7160b2c7 [ARM] Factor out CMSE register clearing code
Functions cmse_nonsecure_call_clear_caller_saved and
cmse_nonsecure_entry_clear_before_return both contain very similar code
to clear registers. What's worse, they differ slightly at times so if a
bug is found in one careful thoughts is needed to decide whether the
other function needs fixing too.

This commit addresses the situation by factoring the two pieces of code
into a new function. In doing so the code generated to clear VFP
registers in cmse_nonsecure_call now uses the same sequence as
cmse_nonsecure_entry functions. Tests expectation are thus updated
accordingly.

2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.c (cmse_clear_registers): New function.
    (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
    code by call to cmse_clear_registers.
    (cmse_nonsecure_entry_clear_before_return): Likewise.

    gcc/testsuite/
    * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Adapt expectations
    to vmov instructions now generated.
    * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Likewise.
    * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Likewise.
    * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Likewise.
    * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Likewise.
    * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Likewise.

From-SVN: r255065
2017-11-22 15:58:22 +00:00
Tamar Christina
9388732aa5 2017-11-22 Tamar Christina <tamar.christina@arm.com>
* config/arm/arm_neon.h (vdot_u32, vdotq_u32)
	(vdot_s32, vdotq_s32): New.
	(vdot_lane_u32, vdotq_lane_u32): New.
	(vdot_lane_s32, vdotq_lane_s32): New.


gcc/testsuite/
2017-11-22  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/arm/simd/vdot-compile.c: New.
	* gcc.target/arm/simd/vect-dot-qi.h: New.
	* gcc.target/arm/simd/vect-dot-s8.c: New.
	* gcc.target/arm/simd/vect-dot-u8.c: New

From-SVN: r255064
2017-11-22 15:54:48 +00:00
Uros Bizjak
e88efb994f target-supports.exp (check_effective_target_bswap16): Do not skip on alpha and x86 targets.
* lib/target-supports.exp (check_effective_target_bswap16):
	Do not skip on alpha and x86 targets.

From-SVN: r255063
2017-11-22 16:50:14 +01:00
Ian Lance Taylor
9e951dd664 compiler: make comparison operator() methods const
This is required for new versions of libstdc++ in C++17 mode.
    
    Fixes GCC PR 83102.
    
    Reviewed-on: https://go-review.googlesource.com/79396

From-SVN: r255062
2017-11-22 15:18:43 +00:00
Sudakshina Das
543382b75e [ARM] Fix test armv8_2-fp16-move-1.c
2017-11-22  Sudakshina Das  <sudi.das@arm.com>

	* gcc.target/arm/armv8_2-fp16-move-1.c: Add -mfloat-abi=hard option.

From-SVN: r255061
2017-11-22 15:05:14 +00:00
Richard Sandiford
2131f7f5b7 PR82547: Undetected overflow for UNSIGNED wide_ints
wi::add_large and wi::sub_large weren't setting the overflow bit
correctly for unsigned operations if the result needed fewer HWIs
than the precision.

2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	PR middle-end/82547
	* wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
	for unsigned values with fewer HWIs than the precision.
	(test_overflow): New function.
	(wide_int_cc_tests): Call it.

From-SVN: r255059
2017-11-22 13:58:57 +00:00
Richard Sandiford
a76ef9c5a8 PR83004: Accidental change to pr81136.c for VECTOR_BITS==128
r254589 was supposed to leave tests unchanged for the default
VECTOR_BITS==128, but I must have got my sums wrong on pr81136.c.

2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/testsuite/
	PR testsuite/83004
	* gcc.dg/vect/pr81136.c: Restore previous alignment of 32
	in the default case.

From-SVN: r255058
2017-11-22 13:58:46 +00:00
Richard Sandiford
f95c5b8ec1 Fix calculation of ptr_mode for MODE_PARTIAL_INT Pmode
This patch fixes a regression caused by r251469, where I'd incorrectly
converted a call to mode_for_size that sometimes needs MODE_PARTIAL_INTs.

2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
	has the same mode class as Pmode.

From-SVN: r255057
2017-11-22 13:58:20 +00:00
Thomas Preud'homme
902c4e8f95 arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of padding_bits_to_clear_ptr.
2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
    padding_bits_to_clear_ptr.
    (cmse_nonsecure_entry_clear_before_return): Likewise.

From-SVN: r255056
2017-11-22 13:57:48 +00:00
Thomas Preud'homme
b24de9a6f4 [ARM] Use bitmap to control cmse_nonsecure_call register clearing
As part of r253256, cmse_nonsecure_entry_clear_before_return has been
rewritten to use auto_sbitmap instead of an integer bitfield to control
which register needs to be cleared. This commit continues this work in
cmse_nonsecure_call_clear_caller_saved.

2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
    auto_sbitap instead of integer bitfield to control register needing
    clearing.

From-SVN: r255055
2017-11-22 13:32:21 +00:00
Jakub Jelinek
ff4790688b re PR tree-optimization/83044 (ice in contains_struct_check)
PR tree-optimization/83044
	* tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
	INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
	that need the upper bound.  Subtract offset from
	get_addr_base_and_unit_offset only if positive and subtract it
	before division by eltsize rather than after it.

	* gcc.dg/pr83044.c: New test.
	* c-c++-common/Warray-bounds.c (fb): Fix up MAX value.

From-SVN: r255054
2017-11-22 13:35:26 +01:00
Paul Thomas
a7d3cd407c re PR fortran/79072 (ICE with class(*) pointer function result and character value)
2017-11-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/79072
	* trans-stmt.c (trans_associate_var): Weaken the over strong
	condition for using the fake result decl.

2017-11-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/79072
	* gfortran.dg/class_result_6.f90: New test for comment 10 of
	the PR.

From-SVN: r255053
2017-11-22 11:37:16 +00:00
Jonathan Wakely
e350134d72 PR go/83102 relax std::set checks for invocable comparison object
PR go/83102
	* include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
	comparison object pre-C++17.

From-SVN: r255052
2017-11-22 11:06:15 +00:00
Jakub Jelinek
aaa49b45f6 re PR debug/83084 (-fcompare-debug failure on ppc64le)
PR debug/83084
	* valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
	debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
	(dead_debug_insert_temp): Likewise, but also ignore even non-volatile
	asm.

	* g++.dg/opt/pr83084.C: New test.

From-SVN: r255051
2017-11-22 11:02:19 +01:00
Jakub Jelinek
a2998ed1dc re PR middle-end/82875 (ICE at -Os on valid code on x86_64-linux-gnu: in find_widening_optab_handler_and_mode, at optabs-query.c:414)
PR middle-end/82875
	* optabs.c (expand_doubleword_mult, expand_binop): Before calling
	expand_binop with *mul_widen_optab, make sure at least one of the
	operands doesn't have VOIDmode.

	* gcc.dg/pr82875.c: New test.
	* gcc.c-torture/compile/pr82875.c: New test.

From-SVN: r255050
2017-11-22 10:57:28 +01:00
Jakub Jelinek
0a770b5907 re PR debug/83034 (ice in mem_loc_descriptor, at dwarf2out.c :15669)
PR debug/83034
	* dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.

	* gcc.dg/pr83034.c: New test.

From-SVN: r255049
2017-11-22 10:43:28 +01:00
Jakub Jelinek
213ffde2ea re PR rtl-optimization/82044 (runtime signed integer overflow in check_mem_read_rtx() and all_positions_needed_p() in dse.c)
PR rtl-optimization/82044
	PR tree-optimization/82042
	* dse.c (record_store): Check for overflow.
	(check_mem_read_rtx): Properly check for overflow if width == -1, call
	add_wild_read instead of clear_rhs_from_active_local_stores on
	overflow and log it into dump_file.

From-SVN: r255048
2017-11-22 10:08:23 +01:00
Richard Biener
608c0f6318 gimple-iterator.c (gimple_find_edge_insert_loc): Ignore fake edges to exit when looking for a place to insert.
2017-11-22  Richard Biener  <rguenther@suse.de>

	* gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
	fake edges to exit when looking for a place to insert.
	* tree-ssa-pre.c (clear_expression_ids): Inline into callers
	and remove.
	(insert_into_preds_of_block): Commit edge insertion immediately,
	assert that doesn't require new BBs.
	(fini_pre): Release expressions.
	(pass_pre::execute): Shuffle things around a bit, if the fn
	is too large do not compute AVAIL either as this is really the
	quadratic bit.

From-SVN: r255047
2017-11-22 09:05:53 +00:00
Janne Blomqvist
9cf7bfd919 PR 83070 Fix -Wsign-compare warning
2017-11-22  Janne Blomqvist  <jb@gcc.gnu.org>

        PR libfortran/83070
        * intrinsics/eoshift0.c (eoshift0): Fix -Wsign-compare warning by
        making a_ex and r_ex index_type instead of size_t.

From-SVN: r255045
2017-11-22 10:51:21 +02:00
Richard Biener
8f8e53262b re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name))
2017-11-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/83089
	* tree-if-conv.c (pass_if_conversion::execute): If anything
	changed reset SCEV and free the number of iteration estimates.

	* gcc.dg/pr83089.c: New testcase.

From-SVN: r255044
2017-11-22 08:47:47 +00:00
Ian Lance Taylor
ce143aa6e3 libgo: don't use grep -q in mksigtab.sh
Solaris grep does not support the -q option.
    
    Reviewed-on: https://go-review.googlesource.com/79239

From-SVN: r255042
2017-11-22 00:27:29 +00:00
GCC Administrator
2ee325a522 Daily bump.
From-SVN: r255041
2017-11-22 00:16:22 +00:00
David Malcolm
d4300cc6ea C: don't suggest names that came from earlier failures (PR c/83056)
PR c/83056 reports an issue affecting trunk and gcc-7 in which
the C frontend's implementation of lookup_name_fuzzy uses undeclared
identifiers as suggestions when encountering subsequent undeclared
identifiers.

The fix is to filter out the names bound to error_mark_node
in lookup_name_fuzzy.

The C++ frontend is unaffected, as it already does this.

gcc/c/ChangeLog:
	PR c/83056
	* c-decl.c (lookup_name_fuzzy): Don't suggest names that came from
	earlier failed lookups.

gcc/testsuite/ChangeLog:
	PR c/83056
	* gcc.dg/spellcheck-pr83056.c: New test case.

From-SVN: r255038
2017-11-21 21:59:53 +00:00
Martin Sebor
6f9b7472a3 re PR tree-optimization/82945 (add warning for passing non-strings to functions that expect string arguments)
gcc/ChangeLog:

	PR tree-optimization/82945
	* calls.h (warn_nonstring_bound): Remove unused function.

From-SVN: r255036
2017-11-21 14:44:26 -07:00
Jonathan Wakely
866e4d3853 PR libstdc++/48101 improve errors for invalid container specializations
PR libstdc++/48101
	* include/bits/allocator.h (allocator<const _Tp>)
	(allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial
	specializations.
	* include/bits/forward_list.h (forward_list): Add static assertions.
	* include/bits/hashtable.h (__cache_default): Use
	__is_nothrow_invocable instead of __is_noexcept_hash.
	(_Hashtable): Add static assertions.
	* include/bits/hashtable_policy.h (__is_noexcept_hash): Remove.
	* include/bits/stl_deque.h (deque): Add static assertions.
	* include/bits/stl_function.h (_Identity<const _Tp>): Add partial
	specialization.
	* include/bits/stl_list.h (list): Add static assertions.
	* include/bits/stl_map.h (map): Likewise.
	* include/bits/stl_multimap.h (multimap): Likewise.
	* include/bits/stl_multiset.h (multiset): Likewise.
	* include/bits/stl_set.h (set): Likewise.
	* include/bits/stl_tree.h (_Rb_tree): Likewise.
	* include/bits/stl_vector.h (vector): Likewise.
	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
	Use typename instead of class in template-parameter-list and remove
	spaces.
	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
	Likewise.
	* testsuite/23_containers/deque/48101-2_neg.cc: New test.
	* testsuite/23_containers/deque/48101_neg.cc: New test.
	* testsuite/23_containers/forward_list/48101-2_neg.cc: New test.
	* testsuite/23_containers/forward_list/48101_neg.cc: New test.
	* testsuite/23_containers/list/48101-2_neg.cc: New test.
	* testsuite/23_containers/list/48101_neg.cc: New test.
	* testsuite/23_containers/map/48101-2_neg.cc: New test.
	* testsuite/23_containers/map/48101_neg.cc: New test.
	* testsuite/23_containers/map/operations/31440.cc: Fix comparison
	object to have const-qualified call operator.
	* testsuite/23_containers/multimap/48101-2_neg.cc: New test.
	* testsuite/23_containers/multimap/48101_neg.cc: New test.
	* testsuite/23_containers/multiset/48101-2_neg.cc: New test.
	* testsuite/23_containers/multiset/48101_neg.cc: New test.
	* testsuite/23_containers/set/48101-2_neg.cc: New test.
	* testsuite/23_containers/set/48101_neg.cc: New test.
	* testsuite/23_containers/unordered_map/48101-2_neg.cc: New test.
	* testsuite/23_containers/unordered_map/48101_neg.cc: New test.
	* testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test.
	* testsuite/23_containers/unordered_multimap/48101_neg.cc: New test.
	* testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test.
	* testsuite/23_containers/unordered_multiset/48101_neg.cc: New test.
	* testsuite/23_containers/unordered_set/48101-2_neg.cc: New test.
	* testsuite/23_containers/unordered_set/48101_neg.cc: New test.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
	dg-error line number.
	* testsuite/23_containers/vector/48101-2_neg.cc: New test.
	* testsuite/23_containers/vector/48101_neg.cc: New test.

From-SVN: r255035
2017-11-21 20:47:09 +00:00
Martin Sebor
6a33d0ff21 PR tree-optimization/82945 - add warning for passing non-strings to functions that expect string arguments
gcc/ChangeLog:

	PR tree-optimization/82945
	* builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
	* calls.h (maybe_warn_nonstring_arg): Declare new function.
	* calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
	functions.
	(initialize_argument_information): Call maybe_warn_nonstring_arg.
	* calls.h (get_attr_nonstring_decl): Declare new function.
	* doc/extend.texi (attribute nonstring): Update.
	* gimple-fold.c (gimple_fold_builtin_strncpy): Call
	get_attr_nonstring_decl and handle it.
	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
	detection of nul-termination.
	(strlen_to_stridx): Change to a pointer.
	(handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
	(pass_strlen::execute): Same.

gcc/testsuite/ChangeLog:

	PR tree-optimization/82945
	* c-c++-common/Wstringop-truncation-2.c: New test.
	* c-c++-common/Wstringop-truncation.c: Adjust.
	* c-c++-common/attr-nonstring-2.c: Adjust.
	* c-c++-common/attr-nonstring-3.c: New test.

From-SVN: r255031
2017-11-21 13:01:58 -07:00
Sergey Shalnov
ab2c4ec8dc i386-opts.h (enum prefer_vector_width): Added new enum for the new option -mprefer-vector-width=[none|128|256|512].
* config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
	for the new option -mprefer-vector-width=[none|128|256|512].
	* config/i386/i386.c (ix86_target_string): remove old style options
	-mprefer-avx256 and make -mprefer-avx128 as alias.
	(ix86_option_override_internal):  Apply defaults for the
	-mprefer-vector-width=[128|256] option.
	* config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
	Implement macros to work with -mprefer-vector-width=.
	* config/i386/i386.opt: Implemented option
	-mprefer-vector-width=[none|128|256|512].
	* doc/invoke.texi: Documentation for
	-mprefer-vector-width=[none|128|256|512].

gcc/testsuite/

	* g++.dg/ext/pr57362.C (__attribute__): Test
	prefer-vector-width=[128|256] target attribute.
	* gcc.target/i386/avx512f-constant-float-return.c (dg-optioins):
	Use -mprefer-vector-width=256 instead of -mprefer-avx256.
	* gcc.target/i386/avx512f-prefer.c: Ditto.
	* gcc.target/i386/pr82460-2.c: Ditto.

From-SVN: r255030
2017-11-21 20:52:01 +01:00
Martin Liska
84fa214dea Add quotes for constexpr keyword.
2017-11-21  Martin Liska  <mliska@suse.cz>

	* class.c (finalize_literal_type_property): Add quotes for
	constexpr keyword.
	(explain_non_literal_class): Likewise.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
	(is_valid_constexpr_fn): Likewise.
	(check_constexpr_ctor_body): Likewise.
	(register_constexpr_fundef): Likewise.
	(explain_invalid_constexpr_fn): Likewise.
	(cxx_eval_builtin_function_call): Likewise.
	(cxx_eval_call_expression): Likewise.
	(cxx_eval_loop_expr): Likewise.
	(potential_constant_expression_1): Likewise.
	* decl.c (check_previous_goto_1): Likewise.
	(check_goto): Likewise.
	(grokfndecl): Likewise.
	(grokdeclarator): Likewise.
	* error.c (maybe_print_constexpr_context): Likewise.
	* method.c (process_subob_fn): Likewise.
	(defaulted_late_check): Likewise.
	* parser.c (cp_parser_compound_statement): Likewise.
2017-11-21  Martin Liska  <mliska@suse.cz>

	* g++.dg/cpp0x/constexpr-48089.C: Add quotes for constexpr
	keyword; add dg-message for 'in .constexpr. expansion of '.
	* g++.dg/cpp0x/constexpr-50060.C: Likewise.
	* g++.dg/cpp0x/constexpr-60049.C: Likewise.
	* g++.dg/cpp0x/constexpr-70323.C: Likewise.
	* g++.dg/cpp0x/constexpr-70323a.C: Likewise.
	* g++.dg/cpp0x/constexpr-cast.C: Likewise.
	* g++.dg/cpp0x/constexpr-diag3.C: Likewise.
	* g++.dg/cpp0x/constexpr-ex1.C: Likewise.
	* g++.dg/cpp0x/constexpr-generated1.C: Likewise.
	* g++.dg/cpp0x/constexpr-ice16.C: Likewise.
	* g++.dg/cpp0x/constexpr-ice5.C: Likewise.
	* g++.dg/cpp0x/constexpr-incomplete2.C: Likewise.
	* g++.dg/cpp0x/constexpr-neg1.C: Likewise.
	* g++.dg/cpp0x/constexpr-recursion.C: Likewise.
	* g++.dg/cpp0x/constexpr-shift1.C: Likewise.
	* g++.dg/cpp1y/constexpr-70265-1.C: Likewise.
	* g++.dg/cpp1y/constexpr-70265-2.C: Likewise.
	* g++.dg/cpp1y/constexpr-79655.C: Likewise.
	* g++.dg/cpp1y/constexpr-new.C: Likewise.
	* g++.dg/cpp1y/constexpr-return2.C: Likewise.
	* g++.dg/cpp1y/constexpr-shift1.C: Likewise.
	* g++.dg/cpp1y/constexpr-throw.C: Likewise.
	* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
	* g++.dg/ext/constexpr-vla1.C: Likewise.
	* g++.dg/ext/constexpr-vla2.C: Likewise.
	* g++.dg/ext/constexpr-vla3.C: Likewise.
	* g++.dg/cpp0x/static_assert10.C: Likewise.
	* g++.dg/cpp1y/pr63996.C: Likewise.
	* g++.dg/cpp1y/pr68180.C: Likewise.
	* g++.dg/cpp1y/pr77830.C: Likewise.
	* g++.dg/ubsan/pr63956.C: Likewise.

From-SVN: r255025
2017-11-21 18:58:49 +00:00
Pat Haugen
fc3605f174 ppc-asm.h (f50, vs50): Fix values.
* config/rs6000/ppc-asm.h (f50, vs50): Fix values.

From-SVN: r255024
2017-11-21 18:46:23 +00:00
Przemyslaw Wirkus
b99415b760 Fix invalid XML in libstdc++ manual
2017-11-21  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

	* doc/xml/manual/using.xml (manual.intro.using.macros): Move
	variablelist element at the end of its list.

From-SVN: r255023
2017-11-21 18:45:04 +00:00
Jonathan Wakely
4bd9c84c52 Improve -Wmaybe-uninitialized documentation
* doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.

From-SVN: r255022
2017-11-21 18:38:18 +00:00
Marc Glisse
1af4ebf598 New POINTER_DIFF_EXPR
2017-11-21  Marc Glisse  <marc.glisse@inria.fr>

gcc/c/
	* c-fold.c (c_fully_fold_internal): Handle POINTER_DIFF_EXPR.
	* c-typeck.c (pointer_diff): Use POINTER_DIFF_EXPR.

gcc/c-family/
	* c-pretty-print.c (pp_c_additive_expression,
	c_pretty_printer::expression): Handle POINTER_DIFF_EXPR.

gcc/cp/
	* constexpr.c (cxx_eval_constant_expression,
	potential_constant_expression_1): Handle POINTER_DIFF_EXPR.
	* cp-gimplify.c (cp_fold): Likewise.
	* error.c (dump_expr): Likewise.
	* typeck.c (pointer_diff): Use POINTER_DIFF_EXPR.

gcc/
	* doc/generic.texi: Document POINTER_DIFF_EXPR, update
	POINTER_PLUS_EXPR.
	* cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
	* expr.c (expand_expr_real_2): Likewise.
	* fold-const.c (const_binop, fold_addr_of_array_ref_difference,
	fold_binary_loc): Likewise.
	* match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
	P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
	(A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
	MINUS_EXPR transformations.
	* optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
	* tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
	* tree-inline.c (estimate_operator_cost): Likewise.
	* tree-pretty-print.c (dump_generic_node, op_code_prio,
	op_symbol_code): Likewise.
	* tree-vect-stmts.c (vectorizable_operation): Likewise.
	* vr-values.c (extract_range_from_binary_expr): Likewise.
	* varasm.c (initializer_constant_valid_p_1): Likewise.
	* tree.def: New tree code POINTER_DIFF_EXPR.

From-SVN: r255021
2017-11-21 18:23:56 +00:00
Uros Bizjak
ffb41aab7a * config/i386/i386.md: Missing file from my previous commit.
From-SVN: r255019
2017-11-21 18:46:38 +01:00
Jakub Jelinek
826eccc6fd re PR c++/83045 (-Wreturn-type regression in C++)
PR c++/83045
	* tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
	Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
	Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.

	* c-c++-common/pr61405.c (fn0, fn1): Add return stmts.
	* c-c++-common/Wlogical-op-2.c (fn): Likewise.
	* g++.dg/debug/pr53466.C: Add -Wno-return-type to dg-options.
	* g++.dg/opt/combine.C: Likewise.
	* g++.dg/ubsan/return-3.C: Likewise.
	* g++.dg/pr59445.C: Likewise.
	* g++.dg/pr49847.C: Likewise.
	* g++.dg/ipa/pr61800.C: Likewise.
	* g++.dg/ipa/pr63470.C: Likewise.
	* g++.dg/ipa/pr68672-1.C: Likewise.
	* g++.dg/pr58438.C: Likewise.
	* g++.dg/torture/pr59265.C: Likewise.
	* g++.dg/tree-ssa/ssa-dse-2.C: Likewise.
	* g++.old-deja/g++.eh/catch13.C: Likewise.
	* g++.old-deja/g++.eh/crash1.C: Likewise.
	* g++.dg/tm/pr60004.C: Expect -Wreturn-type warning.
	* g++.dg/torture/pr55740.C: Likewise.
	* g++.dg/torture/pr43257.C: Likewise.
	* g++.dg/torture/pr64280.C: Likewise.
	* g++.dg/torture/pr54684.C: Likewise.
	* g++.dg/torture/pr56694.C: Likewise.
	* g++.dg/torture/pr68470.C: Likewise.
	* g++.dg/torture/pr60648.C: Likewise.
	* g++.dg/torture/pr71281.C: Likewise.
	* g++.dg/torture/pr52772.C: Add -Wno-return-type dg-additional-options.
	* g++.dg/torture/pr64669.C: Likewise.
	* g++.dg/torture/pr58369.C: Likewise.
	* g++.dg/torture/pr33627.C: Likewise.
	* g++.dg/torture/predcom-1.C: Add
	#pragma GCC diagnostic ignored "-Wreturn-type".
	* g++.dg/lto/20090221_0.C: Likewise.
	* g++.dg/lto/20091026-1_1.C: Likewise.
	* g++.dg/lto/pr54625-1_1.C: Likewise.
	* g++.dg/warn/pr83045.C: New test.

From-SVN: r255018
2017-11-21 18:40:34 +01:00
Uros Bizjak
8fccb0a6b6 i386.md (*bswap<mode>2_movbe): Add integer suffix to movbe mnemonic.
* config/i386/i386.md (*bswap<mode>2_movbe): Add
	integer suffix to movbe mnemonic.
	(*bswaphi2_movbe): Ditto.
	(bswaphi_lowpart): Merge with *bswaphi_lowpart_1.

testsuite/ChangeLog:

	* gcc.target/i386/movbe-1.c: Update scan string for movbe
	with integer suffix.
	* gcc.target/i386/movbe-2.c: Ditto.
	* gcc.target/i386/movbe-3.c: Ditto.
	* gcc.target/i386/movbe-4.c: Ditto.
	* gcc.target/i386/movbe-5.c: Ditto.

From-SVN: r255017
2017-11-21 18:35:23 +01:00
Uros Bizjak
40a9022414 * gcc.target/i386/pr82713.c: Fix dg directive.
From-SVN: r255016
2017-11-21 18:00:35 +01:00
Paolo Carlini
00709c08e8 re PR c++/83020 (('17) Class template constructor call skipped with no error when substitution fails in default argument)
2017-11-21  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/83020
	* g++.dg/cpp1z/pr83020.C: New.

From-SVN: r255006
2017-11-21 15:36:25 +00:00
Martin Liska
769ae3bb49 Remove not needed xstrdup_for_dump.
2017-11-21  Martin Liska  <mliska@suse.cz>

	* tree-inline.c (expand_call_inline):
	  Remove not needed xstrdup_for_dump.

From-SVN: r255005
2017-11-21 14:59:27 +00:00
Jakub Jelinek
0698829670 re PR target/82880 (gcc --help=target --help=optimizers hangs on mips)
PR target/82880
	* config/mips/frame-header-opt.c (mips_register_frame_header_opt):
	Remove static keyword from f variable.

	* gcc.dg/opts-8.c: New test.

From-SVN: r255004
2017-11-21 15:50:03 +01:00
Jakub Jelinek
7d2f0f9b61 * c-common.c (get_nonnull_operand): Use tree_to_uhwi.
From-SVN: r255003
2017-11-21 14:57:11 +01:00
Jakub Jelinek
aa11164a39 re PR tree-optimization/83086 (valgrind error in gimple-ssa-store-merging.c for recent build)
PR tree-optimization/83086
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
	rather than n.base_addr.

From-SVN: r255002
2017-11-21 14:54:08 +01:00
Martin Liska
938f9248db Fix UBSAN errors in dse.c (PR rtl-optimization/82044).
2017-11-21  Martin Liska  <mliska@suse.cz>

	PR rtl-optimization/82044
	PR tree-optimization/82042
	* dse.c (check_mem_read_rtx): Check for overflow.

From-SVN: r255001
2017-11-21 13:39:14 +00:00
Aldy Hernandez
ddc1759a35 tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix typo in comment.
* tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
	typo in comment.

From-SVN: r254999
2017-11-21 11:39:51 +00:00
Claudiu Zissulescu
13f5d5e082 Don't split call from its call arg location.
gcc/
2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>

	* cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
	and its corresponding call arg location note.

testsuite/
2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>

	* gcc.target/arc/loop-5.cpp: New test.

From-SVN: r254998
2017-11-21 12:37:42 +01:00