Commit Graph

153393 Commits

Author SHA1 Message Date
Joshua Conner 7ab8766a8e Add fuchsia support to libgcc
* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
	pc-relative indirect handling for fuchsia.
	* config/t-slibgcc-fuchsia: New file.
	* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
	x86_64-*-fuchsia*): Add definitions.

From-SVN: r247710
2017-05-06 00:22:38 +00:00
GCC Administrator 08dd548e8d Daily bump.
From-SVN: r247709
2017-05-06 00:16:44 +00:00
Nathan Sidwell 5cf5c9dabf store-motion.c (remove_reachable_equiv_notes): Reformat long lines.
* store-motion.c (remove_reachable_equiv_notes): Reformat long
	lines.  Use for (;;).

From-SVN: r247705
2017-05-05 23:24:41 +00:00
Bill Schmidt 9945596cef rs6000.c (rs6000_vect_nonmem): New static var.
[gcc]

2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
	(rs6000_init_cost): Initialize rs6000_vect_nonmem.
	(rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
	(rs6000_finish_cost): Avoid vectorizing simple copy loops with
	VF=2 that require versioning.

[gcc/testsuite]

2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/versioned-copy-loop.c: New file.

From-SVN: r247671
2017-05-05 21:27:54 +00:00
David Malcolm ba82e6b5c8 Convert CARET_LINE_MARGIN to const int
gcc/ChangeLog:
	* diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
	int.

From-SVN: r247666
2017-05-05 21:07:38 +00:00
David Malcolm 62a77bdfe9 Convert diagnostic_override_option_index from macro to inline function
gcc/ChangeLog:
	* diagnostic.h (diagnostic_override_option_index): Convert from
	macro to inline function.

From-SVN: r247665
2017-05-05 21:05:15 +00:00
David Malcolm 26d5ed6cea Get rid of macros for diagnostic_report_current_module
diagnostic.h has a couple of macros (diagnostic_last_module_changed
and diagnostic_set_last_module) which are only used within
diagnostic_report_current_module.

This patch eliminates the macros in favor of static functions within
diagnostic.c.

No functional change intended.

gcc/ChangeLog:
	* diagnostic.c (last_module_changed_p): New function.
	(set_last_module): New function.
	(diagnostic_report_current_module): Convert macro usage to
	the above functions.
	* diagnostic.h (diagnostic_context::last_module): Strengthen
	from const line_map * to const line_map_ordinary *.
	(diagnostic_last_module_changed): Delete macro.
	(diagnostic_set_last_module): Delete macro.

From-SVN: r247664
2017-05-05 21:03:07 +00:00
David Malcolm 56d3558517 Eliminate report_diagnostic macro
This patch eliminates the report_diagnostic macro, manually
expanding it in all sites in the code.

No functional change intended.

gcc/c-family/ChangeLog:
	* c-common.c (c_cpp_error): Replace report_diagnostic
	with diagnostic_report_diagnostic.

gcc/c/ChangeLog:
	* c-decl.c (warn_defaults_to): Replace report_diagnostic
	with diagnostic_report_diagnostic.
	* c-errors.c (pedwarn_c99): Likewise.
	(pedwarn_c90): Likewise.

gcc/cp/ChangeLog:
	* error.c (pedwarn_cxx98): Replace report_diagnostic
	with diagnostic_report_diagnostic.

gcc/ChangeLog:
	* diagnostic.c (diagnostic_impl): Replace report_diagnostic
	with diagnostic_report_diagnostic.
	(diagnostic_n_impl_richloc): Likewise.
	* diagnostic.h (report_diagnostic): Delete macro.
	* rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
	with diagnostic_report_diagnostic.
	* substring-locations.c (format_warning_va): Likewise.

gcc/fortran/ChangeLog:
	* cpp.c (cb_cpp_error): Replace report_diagnostic
	with diagnostic_report_diagnostic.
	* error.c (gfc_warning): Likewise.
	(gfc_warning_now_at): Likewise.
	(gfc_warning_now): Likewise.
	(gfc_warning_internal): Likewise.
	(gfc_error_now): Likewise.
	(gfc_fatal_error): Likewise.
	(gfc_error_opt): Likewise.
	(gfc_internal_error): Likewise.

From-SVN: r247663
2017-05-05 21:01:05 +00:00
David Malcolm 80ceac09a5 diagnostic.c: add print_option_information
This patch simplifies diagnostic_report_diagnostic by moving
option-printing to a new subroutine.

Doing so required a slight rewrite.  In both the old and new
code, context->option_name returns a malloc-ed string.
The old behavior was to then use ACONCAT to manipulate the
format_spec, appending the option metadata.
ACONCAT calcs the buffer size, then uses alloca, and then copies the
data to the on-stack buffer.

Given the alloca, this needs rewriting when moving the printing to
a subroutine.  In the new version, the metadata is simply printed
using pp_* calls (so it's hitting the obstack within the
pretty_printer).

This means we can get rid of the save/restore of format_spec: I don't
believe anything else in the code modifies it.

It also seems inherently simpler; it seems odd to me to be
appending metadata to the formatting string, rather than simply
printing the metadata after the formatted string is printed
(the old code also assumed that no option name contained a '%').

No functional change intended.

gcc/ChangeLog:
	* diagnostic.c (diagnostic_report_diagnostic): Eliminate
	save/restor of format_spec.  Move option-printing code to...
	(print_option_information): ...this new function, and
	reimplement by simply printing to the pretty_printer,
	rather than appending to the format string.

From-SVN: r247661
2017-05-05 20:56:36 +00:00
David Malcolm dc41c9b07d diagnostic_report_diagnostic: refactor pragma-handling
This patch simplifies diagnostic_report_diagnostic by moving the
pragma-handling logic into a subroutine.

No functional change intended.

gcc/ChangeLog:
	* diagnostic.c (diagnostic_report_diagnostic): Split out pragma
	handling logic into...
	(update_effective_level_from_pragmas): ...this new function.

From-SVN: r247660
2017-05-05 20:51:18 +00:00
Andrew Waterman 8228569284 RISC-V: Add -mstrict-align option
The RISC-V user ISA permits misaligned accesses, but they may trap
and be emulated.  That emulation software needs to be compiled assuming
strict alignment.

Even when strict alignment is not required, set SLOW_UNALIGNED_ACCESS
based upon -mtune to avoid a performance pitfall.

gcc/ChangeLog:

2017-05-04  Andrew Waterman  <andrew@sifive.com>

	* config/riscv/riscv.opt (mstrict-align): New option.
	* config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
	(SLOW_UNALIGNED_ACCESS): Define.
	(riscv_slow_unaligned_access): Declare.
	* config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
	field.
	(riscv_slow_unaligned_access): New variable.
	(rocket_tune_info): Set slow_unaligned_access to true.
	(optimize_size_tune_info): Set slow_unaligned_access to false.
	(riscv_cpu_info_table): Add entry for optimize_size_tune_info.
	(riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
	(riscv_option_override): Set riscv_slow_unaligned_access.
        * doc/invoke.texi: Add -mstrict-align to RISC-V.

From-SVN: r247659
2017-05-05 20:24:46 +00:00
Kito Cheng 248710c431 RISC-V: Unify indention in riscv.md
This contains only whitespace changes.

gcc/ChangeLog

2017-05-04  Kito Cheng  <kito.cheng@gmail.com>

	* config/riscv/riscv.md: Unify indentation.

From-SVN: r247658
2017-05-05 20:24:38 +00:00
Michael Meissner 8acb85754a re PR target/79038 (Improve PowerPC ISA 3.0 conversion between integers and hardware _Float128)
[gcc]
2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/79038
	PR target/79202
	PR target/79203
	* config/rs6000/rs6000.md (u code attribute): Add FIX and
	UNSIGNED_FIX.
	(extendsi<mode>2): Add support for doing sign extension via
	VUPKHSW and XXPERMDI if the value is in Altivec registers and we
	don't have ISA 3.0 instructions.
	(extendsi<mode>2 splitter): Likewise.
	(fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
	generate the normal insns since SImode can now go in vector
	registers.  Disallow the special UNSPECs needed for previous
	machines to hide SImode being used.  Add new insns
	fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
	(fix_trunc<mode>si2_stfiwx): Likewise.
	(fix_trunc<mode>si2_internal): Likewise.
	(fixuns_trunc<mode>si2): Likewise.
	(fixuns_trunc<mode>si2_stfiwx): Likewise.
	(fctiw<u>z_<mode>_smallint): Likewise.
	(fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
	of floating point to 32-bit integer from doing a direct move to
	the GPR registers to do a store.
	(fctiwz_<mode>): Break long line.

[gcc/testsuite]
2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/79038
	PR target/79202
	PR target/79203
	* gcc.target/powerpc/ppc-round3.c: New test.
	* gcc.target/powerpc/ppc-round2.c: Update expected code.

From-SVN: r247657
2017-05-05 20:21:15 +00:00
Nathan Sidwell 4b4b2e58e3 cp-tree.h (IDENTIFIER_GLOBAL_VALUE): Use get_namespace_value.
* cp-tree.h (IDENTIFIER_GLOBAL_VALUE): Use get_namespace_value.
	(SET_IDENTIFIER_GLOBAL_VALUE): Use set_global_value.
	(IDENTIFIER_NAMESPACE_VALUE): Delete.
	* name-lookup.h (namespace_binding, set_namespace_binding):
	Replace
	with ...
	(get_namespace_value, set_global_value): ... these.
	(get_global_value_if_present, is_typename_at_global_scope):
	Delete.
	* decl.c (poplevel): Use get_namespace_value.
	(grokdeclarator): Use IDENTIFIER_GLOBAL_VALUE.
	* class.c (build_vtbl_initializer): Stash library decl in
	static var. Use IDENTIFIER_GLOBAL_VALUE.
	* except.c (do_get_exception_ptr, do_begin_catch, do_end_catch)
	do_allocate_exception, do_free_exception, build_throw): Likewise.
	* init.c (throw_bad_array_new_length): Likewise.
	* rtti.c (throw_bad_cast, throw_bad_typeid): Likewise.
	* name-lookup.c (arg_assoc_namespace, pushdecl_maybe_friend_1)
	check_for_our_of_scope_variable, push_overloaded_decl_1): Use
	get_namespace_value.
	(set_namespace_binding_1): Rename to
	(set_namespace_binding): ... here.
	(set_global_value): New.
	(lookup_name_innermost_nonclass_level_1, push_namespace): Use
	get_namespace_value.
	* pt.c (listify): Use get_namespace_value.
((--This line, and those below, will be ignored--

M    cp/name-lookup.c
M    cp/name-lookup.h
M    cp/ChangeLog
M    cp/except.c
M    cp/class.c
M    cp/pt.c
M    cp/init.c
M    cp/cp-tree.h
M    cp/decl.c
M    cp/rtti.c

From-SVN: r247654
2017-05-05 20:04:45 +00:00
Bin Cheng 359b060e79 Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
* Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
	* tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
	(addr_list, addr_offset_valid_p): New.
	(split_address_groups): Check offset validity with above function.
	(gt-tree-ssa-loop-ivopts.h): Include header file.

From-SVN: r247653
2017-05-05 18:34:45 +00:00
Martin Sebor 13c5654f74 builtins.c (check_sizes, [...]): Fix typos introduced during merge conflict resolution.
gcc/ChangeLog:
	* builtins.c (check_sizes, check_strncat_sizes): Fix typos
	introduced during merge	conflict resolution.
	(expand_builtin_strncat): Same.

gcc/testsuite/ChangeLog:
	* gcc.dg/pr78138.c: Adjust text of expected diagnostics.
	* gcc.dg/pr79214.c: Same.
	* gcc.dg/pr79222.c: Same.
	* gcc.dg/pr79223.c: Same.
	* gcc.dg/tree-ssa/builtins-folding-gimple-ub.c: Expect warnings.

From-SVN: r247652
2017-05-05 12:03:26 -06:00
Nathan Sidwell 2d66253dd8 * config.gcc (arm*-*-*): Add missing 'fi'.
From-SVN: r247650
2017-05-05 17:31:57 +00:00
Steve Ellcey b4a3af07b5 invoke.texi (-fopt-info): Explicitly say order of options included in -fopt-info does not matter.
2017-05-05  Steve Ellcey  <sellcey@cavium.com>

	* doc/invoke.texi (-fopt-info): Explicitly say order of options
	included in -fopt-info does not matter.
	* doc/optinfo.texi (-fopt-info): Fix description of default
	behavour. Explicitly say order of options included in -fopt-info
	does not matter.

From-SVN: r247648
2017-05-05 17:00:46 +00:00
Thomas Preud'homme 2f738ca53b [ARM] Allow combination of aprofile and rmprofile multilibs
2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config.gcc: Allow combinations of aprofile and rmprofile values for
    --with-multilib-list.
    * config/arm/t-multilib: New file.
    * config/arm/t-aprofile: Remove initialization of MULTILIB_*
    variables.  Remove setting of ISA and floating-point ABI in
    MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
    MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
    and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
    matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
    CPU options.
    * config/arm/t-rmprofile: Likewise except for the matches changes.
    * doc/install.texi (--with-multilib-list): Document the combination of
    aprofile and rmprofile values and warn about pitfalls in doing that.

From-SVN: r247646
2017-05-05 16:50:40 +00:00
Nathan Sidwell 77fa3ec1b2 call.c (make_temporary_var_for_ref_to_temp): Push decl into current scope.
* call.c (make_temporary_var_for_ref_to_temp): Push decl into
	current scope.
	* lex.c (unqualified_name_lookup_error): Likewise.

From-SVN: r247645
2017-05-05 16:50:14 +00:00
Nathan Sidwell 7187a6c83a class.c (alter_class): Use retrofit_lang_decl directly.
* class.c (alter_class): Use retrofit_lang_decl directly.
	* decl.c (push_local_name, dupliate_decls): Likewise.
	* semantics.c (omp_privatize_field): Likewise.

From-SVN: r247644
2017-05-05 16:47:39 +00:00
Wilco Dijkstra 8e10223f36 Float to int moves currently generate inefficient code due to hacks used in the movsi and movdi patterns.
Float to int moves currently generate inefficient code due to
hacks used in the movsi and movdi patterns.  The 'r = w' variant
uses '*' which tells the register allocator to ignore it.
As a result the float to int moves typically spill to the stack,
which is extremely inefficient.

    gcc/
	* config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
	(movdi_aarch64): Likewise.

From-SVN: r247643
2017-05-05 16:18:17 +00:00
Jakub Jelinek 8dc6a926f2 re PR tree-optimization/80632 (error: invalid PHI argument with -O2)
PR tree-optimization/80632
	* tree-switch-conversion.c (struct switch_conv_info): Add target_vop
	field.
	(build_arrays): Initialize it for virtual phis.
	(fix_phi_nodes): Use it for virtual phis.

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

From-SVN: r247642
2017-05-05 18:02:44 +02:00
Jakub Jelinek ac699a047f re PR tree-optimization/80558 (VRP not handling x & -2 well)
PR tree-optimization/80558
	* tree-vrp.c (extract_range_from_binary_expr_1): Optimize
	[x, y] op z into [x op, y op z] for op & or | if conditions
	are met.

	* gcc.dg/tree-ssa/vrp115.c: New test.

From-SVN: r247641
2017-05-05 17:43:22 +02:00
Andre Vieira 655b5fc85b [ARM] PR71607: Fix ICE when loading constant
2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
            Prakhar Bahuguna  <prakhar.bahuguna@arm.com>

    gcc/
    PR target/71607
    * config/arm/arm.md (use_literal_pool): Remove.
    (64-bit immediate split): No longer takes cost into consideration
    if arm_disable_literal_pool is enabled.
    * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
    used when arm_disable_literal_pool is enabled.
    (arm_max_const_double_inline_cost): Remove use of
    arm_disable_literal_pool.
    (push_minipool_fix): Add assert.
    (arm_reorg): Add return if arm_disable_literal_pool is enabled.
    * config/arm/vfp.md (no_literal_pool_df_immediate): New.
    (no_literal_pool_sf_immediate): New.

2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
        Thomas Preud'homme  <thomas.preudhomme@arm.com>
        Prakhar Bahuguna  <prakhar.bahuguna@arm.com>

    gcc/testsuite/
    PR target/71607
    * gcc.target/arm/thumb2-slow-flash-data.c: Renamed to ...
    * gcc.target/arm/thumb2-slow-flash-data-1.c: ... this.
    * gcc.target/arm/thumb2-slow-flash-data-2.c: New.
    * gcc.target/arm/thumb2-slow-flash-data-3.c: New.
    * gcc.target/arm/thumb2-slow-flash-data-4.c: New.
    * gcc.target/arm/thumb2-slow-flash-data-5.c: New.
    * gcc.target/arm/tls-disable-literal-pool.c: New.

Co-Authored-By: Prakhar Bahuguna <prakhar.bahuguna@arm.com>
Co-Authored-By: Thomas Preud'homme <thomas.preudhomme@arm.com>

From-SVN: r247640
2017-05-05 15:41:28 +00:00
Nathan Sidwell b6263c5df2 Kill walk_namespaces.
* cp-tree.h (walk_namespaces_fn, walk_namespaces): Delete.
	* decl.c (walk_namespaces_r, walk_namespaces): Delete.

From-SVN: r247638
2017-05-05 15:06:13 +00:00
Prathamesh Kulkarni c02d2d0adb re PR tree-optimization/80613 (ICE in is_gimple_reg_type with -O2)
2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	PR tree-optimization/80613
	* tree-ssa-dce.c (propagate_necessity): Remove cases for
	BUILT_IN_STRDUP and BUILT_IN_STRNDUP.

testsuite/
	* gcc.dg/tree-ssa/pr79697.c (k): Remove.

From-SVN: r247635
2017-05-05 13:21:28 +00:00
Richard Biener 79bed25b23 tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
2017-05-05  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.

From-SVN: r247634
2017-05-05 12:51:36 +00:00
Nathan Sidwell 3031802941 Kill per-namespace static_decls.
* cp-tree.h (static_decls): Declare.
	(wrapup_globals_for_namespace)
	diagnose_inline_vars_for_namespace): Replace with ...
	(wrapup_namespace_globals): ... this.
	* decl.c (static_decls): Define.
	(wrapup_globals_for_namespace)
	diagnose_inline_vars_for_namespace): Replace with ...
	(wrapup_namespace_globals): ... this.
	(cxx_init_decl_processing): Initialize static_decls.
	* decl2.c (c_parse_final_cleanups): Adjust.
	* name-lookup.h (cp_binding_level): Remove static_decls member.
	* name-lookup.c (add_decl_to_level): Adjust.
	(begin_scope): Adjust.
((--This line, and those below, will be ignored--

M    cp/cp-tree.h
M    cp/name-lookup.c
M    cp/name-lookup.h
M    cp/ChangeLog
M    cp/decl2.c
M    cp/decl.c

From-SVN: r247633
2017-05-05 11:30:49 +00:00
Georg-Johann Lay f71425227e avr.md [...]: Remove any occurence of this flag from insn conditions due to removal from r247495.
* config/avr/avr.md [flag_strict_overflow]: Remove any occurence
	of this flag from insn conditions due to removal from r247495.

From-SVN: r247632
2017-05-05 10:35:55 +00:00
Wilco Dijkstra 9d29ae83ed Code scheduling for Cortex-A53 isn't as good as it could be.
Code scheduling for Cortex-A53 isn't as good as it could be.  It turns out
code runs faster overall if we place loads and stores with a dependency
closer together.  To achieve this effect, this patch adds a bypass between
cortex_a53_load1 and cortex_a53_load*/cortex_a53_store* if the result of an
earlier load is used in an address calculation.  This significantly improved
benchmark scores in a proprietary benchmark suite.

    gcc/
	* config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
	New function.
	(arm_early_store_addr_dep_ptr): Likewise.
	* config/arm/aarch-common-protos.h
	(arm_early_load_addr_dep_ptr): Add prototype.
	(arm_early_store_addr_dep_ptr): Likewise.
	* config/arm/cortex-a53.md: Add new bypasses.

From-SVN: r247631
2017-05-05 09:40:01 +00:00
Paolo Carlini dfae9048a0 re PR c++/71577 (ICE on invalid C++11 code (with extra struct initializer): in digest_init_r, at cp/typeck2.c:1117)
/cp
2017-05-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71577
	* decl.c (reshape_init): Unconditionally return error_mark_node
	upon error about too many initializers.

/testsuite
2017-05-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71577
	* g++.dg/cpp0x/pr71577.C: New.

From-SVN: r247630
2017-05-05 09:02:22 +00:00
Jakub Jelinek 56871768b4 tree.c (next_type_uid): Change type to unsigned.
* tree.c (next_type_uid): Change type to unsigned.
	(type_hash_canon): Decrement back next_type_uid if
	freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
	also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
	if possible.

From-SVN: r247628
2017-05-05 09:35:13 +02:00
GCC Administrator 18c182ff7d Daily bump.
From-SVN: r247627
2017-05-05 00:16:23 +00:00
Martin Sebor ded507ae42 builtins.c: Fix a trivial typo in a comment.
gcc/ChangeLog:
	* builtins.c: Fix a trivial typo in a comment.

From-SVN: r247623
2017-05-04 17:54:22 -06:00
Martin Sebor d9c5a8b98a PR libstdc++/54924 - Warn for std::string constructor with wrong size
PR libstdc++/54924 - Warn for std::string constructor with wrong size
PR middle-end/79234 - warn on past the end reads by library functions

gcc/ChangeLog:

	PR middle-end/79234
	* builtins.c (check_sizes): Adjust to handle reading past the end.
	Avoid printing excessive upper bound of ranges.  Use %E to print
	tree nodes instead of converting them to %wu.
	(expand_builtin_memchr): New function.
	(compute_dest_size): Rename...
	(compute_objsize): ...to this.
	(expand_builtin_memcpy): Adjust.
	(expand_builtin_mempcpy): Adjust.
	(expand_builtin_strcat): Adjust.
	(expand_builtin_strcpy): Adjust.
	(check_strncat_sizes): Adjust.
	(expand_builtin_strncat): Adjust.
	(expand_builtin_strncpy): Adjust and simplify.
	(expand_builtin_memset): Adjust.
	(expand_builtin_bzero): Adjust.
	(expand_builtin_memcmp): Adjust.
	(expand_builtin): Handle memcmp.
	(maybe_emit_chk_warning): Check strncat just once.

gcc/testsuite/ChangeLog:

	PR middle-end/79234
	* gcc.dg/builtin-stringop-chk-8.c: New test.
	* gcc.dg/builtin-stringop-chk-1.c: Adjust.
	* gcc.dg/builtin-stringop-chk-4.c: Same.
	* gcc.dg/builtin-strncat-chk-1.c: Same.
	* g++.dg/ext/strncpy-chk1.C: Same.
	* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same.
	* gcc.dg/out-of-bounds-1.c: Same.
	* gcc.dg/pr78138.c: Same.
	* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Same.
	* gfortran.dg/mvbits_7.f90: Same.

From-SVN: r247622
2017-05-04 17:50:21 -06:00
Martin Sebor 0f3587ec0e Fix a typo.
From-SVN: r247619
2017-05-04 15:04:04 -06:00
Martin Sebor e50d56a502 PR preprocessor/79214 - -Wno-system-header defeats strncat buffer overflow warnings
PR preprocessor/79214 -  -Wno-system-header defeats strncat buffer overflow warnings
PR middle-end/79222 - missing -Wstringop-overflow= on a stpcpy overflow
PR middle-end/79223 - missing -Wstringop-overflow on a memmove overflow

gcc/ChangeLog:

	PR preprocessor/79214
	PR middle-end/79222
	PR middle-end/79223
	* builtins.c (check_sizes): Add inlinining context and issue
	warnings even when -Wno-system-headers is set.
	(check_strncat_sizes): Same.
	(expand_builtin_strncat): Same.
	(expand_builtin_memmove): New function.
	(expand_builtin_stpncpy): Same.
	(expand_builtin): Handle memmove and stpncpy.

gcc/testsuite/ChangeLog:

	PR preprocessor/79214
	PR middle-end/79222
	PR middle-end/79223
	* gcc.dg/pr79214.c: New test.
	* gcc.dg/pr79214.h: New test header.
	* gcc.dg/pr79222.c: New test.
	* gcc.dg/pr79223.c: New test.
	* gcc.dg/pr78138.c: Adjust.
	* gfortran.dg/unconstrained_commons.f: Same.

From-SVN: r247618
2017-05-04 14:54:43 -06:00
Nathan Sidwell 0f05d90543 * constraint.cc (diagnose_check_constraint): Fix %E thinko.
From-SVN: r247614
2017-05-04 18:37:53 +00:00
Bin Cheng 7e887487db tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr which is not used any more.
* tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
	which is not used any more.

From-SVN: r247612
2017-05-04 18:01:10 +00:00
Wilco Dijkstra 3b4c0f7e1e Many supported cores use the AUTOPREFETCHER_WEAK setting which tries to order...
Many supported cores use the AUTOPREFETCHER_WEAK setting which tries
to order loads and stores to improve streaming performance.  Since significant
gains were reported in http://patchwork.ozlabs.org/patch/534469/ it seems
like a good idea to enable this setting too for -mcpu=generic.  Since the
weak model only keeps the order if it doesn't make the schedule worse, it
should not impact performance adversely on cores that don't show a gain.

    gcc/
        * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.

From-SVN: r247610
2017-05-04 17:52:03 +00:00
Wilco Dijkstra 9779b2e87c Set jump alignment to 4 for Cortex cores as it reduces codesize by 0.4% on...
Set jump alignment to 4 for Cortex cores as it reduces codesize by 0.4% on
average with no obvious performance difference.  See original discussion of
the overheads of various alignments:
https://gcc.gnu.org/ml/gcc-patches/2016-06/msg02075.html.

    gcc/
	* config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
	(cortexa53_tunings): Likewise.
	(cortexa57_tunings): Likewise.
	(cortexa72_tunings): Likewise.
	(cortexa73_tunings): Likewise.

From-SVN: r247609
2017-05-04 17:49:19 +00:00
Wilco Dijkstra 6b13482bb6 With -mcpu=generic the loop alignment is currently 4.
With -mcpu=generic the loop alignment is currently 4.  All but one of the
supported cores use 8 or higher.  Since using 8 provides performance gains
on several cores, it is best to use that by default.  As discussed in [1],
the jump alignment has no effect on performance, yet has a relatively high
codesize cost [2], so setting it to 4 is best.  This gives a 0.2% overall
codesize improvement as well as performance gains in several benchmarks.

    gcc/
	* config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
	Set loop alignment to 8.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00574.html
[2] https://gcc.gnu.org/ml/gcc-patches/2016-06/msg02075.html

From-SVN: r247608
2017-05-04 17:43:43 +00:00
Martin Sebor 0f2c4a8f1d PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c
gcc/c-family/ChangeLog:

	PR translation/80280
	* c-attribs.c (handle_alias_ifunc_attribute): Quote a %D directive.
	(handle_weakref_attribute): Same.

PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c

gcc/ChangeLog:

	PR translation/80280
	* config/i386/i386.c (ix86_function_versions): Quote a %D directive.

PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c

gcc/cp/ChangeLog:

	PR translation/80280
	* call.c (print_z_candidate): Add missing quoting to %D and other
	like directives.
	(build_op_call_1): Same.
	* constraint.cc (diagnose_check_constraint): Same.
	* mangle.c (mangle_decl): Same.
	* name-lookup.c (cp_binding_level_debug): Same.
	(set_decl_namespace): Same.
	* parser.c (cp_parser_tx_qualifier_opt): Same.
	* pt.c (print_candidates_1): Same.
	(check_template_variable): Same.
	(tsubst_default_argument): Same.
	(most_specialized_partial_spec): Same.
	* semantics.c (omp_reduction_lookup): Same.
	* tree.c (check_abi_tag_redeclaration): Same.
	* typeck.c (comptypes): Same.
	* typeck2.c (abstract_virtuals_error_sfinae): Same.

PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c

gcc/ChangeLog:

	PR translation/80280
	* builtins.c (expand_builtin_object_size): Add missing quoting to
	%D and like directives.
	* hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
	(hsa_type_for_tree_type): Same.
	(verify_function_arguments): Same.
	* symtab.c (symbol_table::change_decl_assembler_name): Same.
	* varasm.c (get_section): Same.
	(mark_weak): Same.

PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c

gcc/objc/ChangeLog:

	PR translation/80280
	* objc-gnu-runtime-abi-01.c (objc_eh_runtime_type): Add missing
	quoting to directives.
	* objc-next-runtime-abi-01.c (objc_eh_runtime_type): Ditto.
	* objc-next-runtime-abi-02.c (next_runtime_02_eh_type): Ditto.

PR translation/80280 - Missing closing quote (%>) c/semantics.c and c/c-typeck.c

gcc/testsuite/ChangeLog:

	PR translation/80280
	* g++.dg/abi/Wabi-2-3.C: Adjust.
	* g++.dg/abi/Wabi-3-2.C: Ditto.
	* g++.dg/lookup/using17.C: Ditto.
	* gcc.dg/format/gcc_diag-1.c (foo): Ditto.

From-SVN: r247607
2017-05-04 11:40:05 -06:00
Wilco Dijkstra 2fae724a1e All cores which add a cpu_addrcost_table use a non-zero value for HI and TI...
All cores which add a cpu_addrcost_table use a non-zero value for
HI and TI mode shifts (a non-zero value for general indexing also
applies to all shifts).  Given this, it makes no sense to use a
different setting in generic_addrcost_table.  So change it so that
all supported cores, including -mcpu=generic, now generate the same:

int f(short *p, short *q, long x) { return p[x] + q[x]; }

        lsl     x2, x2, 1
        ldrsh   w3, [x0, x2]
        ldrsh   w0, [x1, x2]
        add     w0, w3, w0
        ret

    gcc/
	* config/aarch64/aarch64.c (generic_addrcost_table):
	Change HI/TI mode setting.

From-SVN: r247606
2017-05-04 17:05:28 +00:00
Martin Jambor 8eef60973d [PR 80622] Treat const pools as initialized in SRA
2017-05-04  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/80622
	* tree-sra.c (comes_initialized_p): New function.
	(build_accesses_from_assign): Only set write lazily when
	comes_initialized_p is false.
	(analyze_access_subtree): Use comes_initialized_p.
	(propagate_subaccesses_across_link): Assert !comes_initialized_p
	instead of testing for PARM_DECL.

testsuite/
	* gcc.dg/tree-ssa/pr80622.c: New test.

From-SVN: r247604
2017-05-04 18:19:20 +02:00
Kyrylo Tkachov 9bf2f77904 [AArch64] Accept more addressing modes for PRFM
* config/aarch64/aarch64.md (prefetch); Adjust predicate and
	constraint on operand 0 to allow more general addressing modes.
	Adjust output template.
	* config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
	New function.
	* config/aarch64/aarch64-protos.h
	(aarch64_address_valid_for_prefetch_p): Declare prototype.
	* config/aarch64/constraints.md (Dp): New address constraint.
	* config/aarch64/predicates.md (aarch64_prefetch_operand): New
	predicate.

	* gcc.target/aarch64/prfm_imm_offset_1.c: New test.

From-SVN: r247603
2017-05-04 16:14:37 +00:00
Joseph Myers 928351c3ef Update .po files.
* be.po, da.po, el.po, fi.po, hr.po, id.po, ja.po, nl.po, ru.po,
	sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po, zh_TW.po: Update.

From-SVN: r247601
2017-05-04 16:54:08 +01:00
Nathan Sidwell ad9870f2d5 More global trees.
* cp-tree.h (enum cp_tree_index): Add CPTI_GLOBAL,
	CPTI_GLOBAL_TYPE, CPTI_GLOBAL_IDENTIFIER, CPTI_ANON_IDENTIFIER,
	CPTI_INIT_LIST_IDENTIFIER.
	(global_namespace, global_type_node, global_identifier)
	anon_identifier, init_list_identifier): New.
	* decl.c (global_type_node, global_scope_name): Delete.
	(initialize_predefined_identifiers): Add new identifiers.
	(cxx_init_decl_processing): Adjust.
	* name-lookup.h (global_namespace, global_type_node): Delete.
	* name-lookup.c (global_namespace, anonymous_namespace_name)
	get_anonymous_namespace_name): Delete.
	(namespace_scope_ht_size, begin_scope, pushtag_1)
	push_namespace): Adjust,
	* call.c (type_has_extended_temps): Use init_list_identifier.
	* pt.c (listify): Likewise.
(((--This line, and those below, will be ignored--

M    cp/name-lookup.c
M    cp/name-lookup.h
M    cp/ChangeLog
M    cp/call.c
M    cp/pt.c
M    cp/cp-tree.h
M    cp/decl.c

From-SVN: r247599
2017-05-04 15:39:05 +00:00
Jan Hubicka 26f1a658e6 ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter; update use of estimate_ipcp_clone_size_and_time.
* ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
	update use of estimate_ipcp_clone_size_and_time.
	(estimate_local_effects): Update use of
	estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
	* ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
	* ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
	Return nonspecialized time.

	* gcc.dg/ipa/ipcp-2.c: Decrease ipcp threshold
	* gcc.dg/tree-ssa/ipa-cp-1.c: Likewise.

From-SVN: r247597
2017-05-04 13:57:35 +00:00