Commit Graph

151217 Commits

Author SHA1 Message Date
Arnaud Charlet
10c2c151f1 [multiple changes]
2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.
	* spark_xrefs.ads: minor cleanup of comments for SPARK xrefs

2017-01-12  Bob Duff  <duff@adacore.com>

	* binde.adb (Forced): New reason for a dependence.
	(Force_Elab_Order): Implementation of the new switch.
	* binde.ads: Minor comment fixes.
	* bindusg.adb: Add -f switch. Apparently, there was an -f switch
	long ago that is no longer supported; removed comment about that.
	* opt.ads (Force_Elab_Order_File): Name of file specified for
	-f switch.
	* switch-b.adb: Parse -f switch.

From-SVN: r244355
2017-01-12 14:26:34 +01:00
Justin Squirek
84e1361435 exp_ch6.adb (Check_View_Conversion): Created this function to properly chain calls to check type invariants that may...
2017-01-12  Justin Squirek  <squirek@adacore.com>

	* exp_ch6.adb (Check_View_Conversion): Created this function
	to properly chain calls to check type invariants that may be
	present in a subprogram call after the subprogram.
	(Expand_Call): Add a conditional to identify when a view conversion
	needs to be checked.
	* nlists.adb, nlists.ads (Prepend_New): New routine.
	(Prepend_New_To): New routine.

From-SVN: r244354
2017-01-12 14:24:16 +01:00
Arnaud Charlet
e51102b29c [multiple changes]
2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sinfo.ads: Minor reformatting.

2017-01-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and
	reformatting.

2017-01-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new
	variable Definite. Create a local object and pass its 'Access to the
	BIP function when the result type is either definite or it does not
	require any finalization or secondary stack management.

From-SVN: r244353
2017-01-12 14:21:21 +01:00
Bob Duff
6e759c2a0f contracts.adb, [...] (Pragma_Name): Change name to Pragma_Name_Unmapped.
2017-01-12  Bob Duff  <duff@adacore.com>

	* contracts.adb, einfo.adb, errout.adb, exp_attr.adb,
	exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb,
	frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb,
	par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb,
	sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
	sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads,
	sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name):
	Change name to Pragma_Name_Unmapped.
	(Pragma_Name_Mapped): Change name to Pragma_Name.
	This is because the "mapped" version should be the usual case.

From-SVN: r244352
2017-01-12 14:18:47 +01:00
Richard Biener
6bb4ea5cdf tree-pretty-print.c (dump_generic_node): Provide -gimple variant for MEM_REF.
2017-01-12  Richard Biener  <rguenther@suse.de>

	* tree-pretty-print.c (dump_generic_node): Provide -gimple
	variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.

	c/
	* gimple-parser.c (c_parser_gimple_postfix_expression): Parse
	__MEM.

	* gcc.dg/gimplefe-21.c: New testcase.

From-SVN: r244350
2017-01-12 08:33:09 +00:00
Richard Biener
ef9d56f8ac tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION and TS_TARGET_OPTION directly derive from TS_BASE.
2017-01-12  Richard Biener  <rguenther@suse.de>

	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
	and TS_TARGET_OPTION directly derive from TS_BASE.
	* tree-core.h (tree_optimization_option): Derive from tree_base.
	(tree_target_option): Likewise.

From-SVN: r244349
2017-01-12 08:13:43 +00:00
Michael Collison
f15dbadbf6 zero_bits_compound-2.c: Fix test for aarch64.
2016-11-30  Michael Collison  <michael.collison@arm.com>

	* gcc.dg/zero_bits_compound-2.c: Fix test for aarch64.

From-SVN: r244348
2017-01-12 08:12:02 +00:00
GCC Administrator
da7069127c Daily bump.
From-SVN: r244346
2017-01-12 00:16:14 +00:00
Uros Bizjak
f69dacdae5 i386.c (memory_address_length): Increase len only when rip_relative_addr_p returns false.
* config/i386/i386.c (memory_address_length): Increase len
	only when rip_relative_addr_p returns false.

From-SVN: r244341
2017-01-11 22:53:45 +01:00
Jason Merrill
91d01bf40a PR c++/78337 - ICE on invalid with generic lambda
* semantics.c (process_outer_var_ref): Check if containing_function
	is null.  Move inform call under complain test.

From-SVN: r244340
2017-01-11 16:43:42 -05:00
Julia Koval
73e32c4743 i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
* common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
	(OPTION_MASK_ISA_SGX_SET): New.
	(ix86_handle_option): Handle OPT_msgx.
	* config.gcc: Added sgxintrin.h.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
	* config/i386/i386.c (ix86_target_string): Add -msgx.
	(PTA_SGX): New.
	(ix86_option_override_internal): Handle new options.
	(ix86_valid_target_attribute_inner_p): Add sgx.
	* config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
	* config/i386/i386.opt: Add msgx.
	* config/i386/sgxintrin.h: New file.
	* config/i386/x86intrin.h: Add sgxintrin.h.

testsuite/ChangeLog:

	* gcc.target/i386/sgx.c New test.
	* gcc.target/i386/sse-12.c: Add -msgx.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-14.c: Ditto.
	* gcc.target/i386/sse-22.c: Ditto.
	* gcc.target/i386/sse-23.c: Ditto.
	* g++.dg/other/i386-2.C: Ditto.
	* g++.dg/other/i386-3.C: Ditto.


Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r244339
2017-01-11 22:41:13 +01:00
Jakub Jelinek
fa8438f71c Fix up a typo.
From-SVN: r244338
2017-01-11 22:39:25 +01:00
Martin Sebor
3594adc7b0 PR c++/24511 - [DR 470] explicit instantiation/extern template unsats
PR c++/24511 - [DR 470] explicit instantiation/extern template unsats
// on symbols defined later

gcc/testsuite/ChangeLog:
	* g++.dg/template/explicit9.C: New test.

From-SVN: r244337
2017-01-11 14:02:46 -07:00
Nathan Sidwell
01bfd25762 re PR c++/77812 (incorrectly rejects valid C++ code that uses enum in template instantiation)
cp/
	PR c++/77812
	* name-lookup.c (set_namespace_binding_1): An overload of 1 decl
	is a new overload.

	testsuite/
	PR c++/77812
	* g++.dg/pr77812.C: New.

From-SVN: r244335
2017-01-11 20:37:16 +00:00
Nathan Sidwell
5b33cc835c * name-lookup.c (push_overloaded_decl_1): Refactor OVERLOAD creation.
From-SVN: r244334
2017-01-11 20:11:56 +00:00
Jakub Jelinek
eae63d784c re PR c++/71537 (GCC rejects consetxpr boolean conversions and comparisons on the result of pointer arithmetic.)
PR c++/71537
	* fold-const.c (maybe_nonzero_address): Return 1 for function
	local objects.
	(tree_single_nonzero_warnv_p): Don't handle function local objects
	here.

	* g++.dg/cpp1y/constexpr-71537.C: New test.

From-SVN: r244333
2017-01-11 21:10:36 +01:00
Jakub Jelinek
88df7964b5 flatten-3.c: Add quotation marks around dg-options argument.
* gcc.dg/tree-ssa/flatten-3.c: Add quotation marks around dg-options
	argument.

From-SVN: r244332
2017-01-11 20:48:56 +01:00
Martin Sebor
960ecba4bf PR c/47931 - missing -Waddress warning for comparison with NULL
gcc/testsuite/ChangeLog:
	* c-c++-common/Waddress-2.c: New test.

From-SVN: r244331
2017-01-11 11:33:13 -07:00
Than McIntosh
a2182c9cc2 compiler: add containing Bfunction to conditional_expression
Add containing Bfunction to Backend::conditional_expression
    method signature, since the back end might need to create a
    temporary when generating IR for this construct.
    
    Reviewed-on: https://go-review.googlesource.com/35056

From-SVN: r244330
2017-01-11 18:15:16 +00:00
Jakub Jelinek
1f258a55a9 re PR c++/78341 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: in cp_parser_std_attribute_spec, at cp/parser.c:24597))
PR c++/78341
	* parser.c (cp_parser_std_attribute_spec): Remove over-eager
	assertion.  Formatting fix.

	* g++.dg/cpp0x/pr78341.C: New test.

From-SVN: r244329
2017-01-11 19:09:58 +01:00
Jakub Jelinek
6b5b4e9cec re PR c++/72813 (atomic header cannot be compiled into translation unit with -fkeep-inline-functions)
PR c++/72813
	* gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
	of c-header.

	* c-decl.c (pop_file_scope): Set flag_syntax_only to 1 after writing
	PCH file.

	* decl2.c (c_parse_final_cleanups): Set flag_syntax_only to 1 after
	writing PCH file.

From-SVN: r244328
2017-01-11 19:08:57 +01:00
Ian Lance Taylor
25e15acf8c compiler: mark generated struct/array types as incomparable
The recent change to generate type functions for more types with
    identity comparisons caused us to generate some unnecessary functions,
    and even caused a compiler crash on Solaris due to phase ordering.
    Avoid this by marking all generated and uncompared struct and array
    types as incomparable, so that we don't try to generate type functions
    for them.
    
    Reviewed-on: https://go-review.googlesource.com/35110

From-SVN: r244327
2017-01-11 17:41:49 +00:00
Martin Sebor
bf5fbf465d PR c/78768 - -Walloca-larger-than and -Wformat-length warnings disabled by -flto
gcc/ChangeLog:
	* c.opt (-Walloca-larger-than, -Wformat-length, -Wformat-truncation):
	Also enable for LTO.

gcc/testsuite/ChangeLog:
	PR c/78768
	* gcc.dg/pr78768.c: New test.

From-SVN: r244326
2017-01-11 10:28:52 -07:00
David Malcolm
19ff0049cd Offer suggestions for unrecognized sanitizer options (PR driver/78877)
gcc/ChangeLog:
	PR driver/78877
	* opts.c: Include "spellcheck.h"
	(struct string_fragment): New struct.
	(struct edit_distance_traits<const string_fragment &>): New
	struct.
	(get_closest_sanitizer_option): New function.
	(parse_sanitizer_options): Offer suggestions for unrecognized arguments.

gcc/testsuite/ChangeLog:
	PR driver/78877
	* gcc.dg/spellcheck-options-14.c: New test case.
	* gcc.dg/spellcheck-options-15.c: New test case.
	* gcc.dg/spellcheck-options-16.c: New test case.
	* gcc.dg/spellcheck-options-17.c: New test case.

From-SVN: r244325
2017-01-11 17:25:40 +00:00
Jakub Jelinek
d29bd378ab dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease by 12.
* dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
	by 12.
	(DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
	DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
	(DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
	(calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
	for initial die_offset if dwarf_split_debug_info.
	(output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
	initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
	fields.
	(output_skeleton_debug_sections): Formatting fix.  Use
	DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
	DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.

From-SVN: r244323
2017-01-11 17:46:15 +01:00
Wilco Dijkstra
d2471b3168 My previous change to the Cortex-A53 scheduler resulted in a 13% regression on a proprietary benchmark.
My previous change to the Cortex-A53 scheduler resulted in a 13% regression on a
proprietary benchmark.  This turned out to be due to non-optimal scheduling of int
to float conversions.  This patch separates int to FP transfers from int to float
conversions based on experiments to determine the best schedule.  As a result of
these tweaks the performance of the benchmark improves by 20%.

    gcc/
	* config/arm/cortex-a53.md: Add bypasses for
	cortex_a53_r2f_cvt.
	(cortex_a53_r2f): Only use for transfers.
	(cortex_a53_f2r): Likewise.
	(cortex_a53_r2f_cvt): Add reservation for conversions.
	(cortex_a53_f2r_cvt): Likewise.

From-SVN: r244322
2017-01-11 16:38:42 +00:00
Tamar Christina
dbd8471076 arm_neon.h: Add __artificial__ and gnu_inline to all inlined functions, change static to extern.
2017-01-09  Tamar Christina  <tamar.christina@arm.com>

	* config/arm/arm_neon.h: Add __artificial__ and gnu_inline
          to all inlined functions, change static to extern.

From-SVN: r244321
2017-01-11 16:30:28 +00:00
Christophe Lyon
6027c4b5ca [ARM] PR target/78253 Call weak function instead of strong when called through pointer.
2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/78253
	* config/arm/arm.c (legitimize_pic_address): Handle reference to
	weak symbol.
	(arm_assemble_integer): Likewise.

From-SVN: r244320
2017-01-11 17:13:14 +01:00
Jonathan Wakely
b744bf4e18 PR78134 fix return types of heterogeneous lookup functions
PR libstdc++/78134
	* include/bits/stl_map.h (map::lower_bound, map::upper_bound)
	(map::equal_range): Fix return type of heterogeneous overloads.
	* include/bits/stl_multimap.h (multimap::lower_bound)
	(multimap::upper_bound, multimap::equal_range): Likewise.
	* include/bits/stl_multiset.h (multiset::lower_bound)
	(multiset::upper_bound, multiset::equal_range): Likewise.
	* include/bits/stl_set.h (set::lower_bound, set::upper_bound)
	(set::equal_range): Likewise.
	* testsuite/23_containers/map/operations/2.cc
	* testsuite/23_containers/multimap/operations/2.cc
	* testsuite/23_containers/multiset/operations/2.cc
	* testsuite/23_containers/set/operations/2.cc

From-SVN: r244318
2017-01-11 14:44:15 +00:00
Jonathan Wakely
b091b8dc0b PR78273 fix count to work with partitioning function
PR libstdc++/78273
	* include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
	the heterogeneous comparison can only find one match.
	* include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
	* testsuite/23_containers/map/operations/2.cc: Test count works with
	comparison function that just partitions rather than sorting.
	* testsuite/23_containers/set/operations/2.cc: Likewise.

From-SVN: r244317
2017-01-11 14:44:04 +00:00
Richard Earnshaw
a92ffb3e94 [arm] Replace command-line option .def files with single definition file
The files arm-cores.def, arm-fpus.def and arm-arches.def are parsed and
used in several places and the format is slightly awkward to maintain
as they must be parsable in C and by certain scripts.  Furthermore,
changes to the content that affects every entry is particularly awkward for
dealing with merges.

This patch replaces all three files with a single file that specifies all
the command-line related definitions in a new format that allows for better
checking for consistency as well as (hopefully) easier to merge changes.

The awk script used to parse it is relatively complicated, but should be
pretty portable.  It works by parsing in all the data and then operating
one of a number of possible sub-commands to generate the desired output.

The new method picked up one error.  The CPU descriptions referred to an
architecture ARMv5tej which was not supported by -march.  This has been
fixed by adding the relevant entry to the architecture list.

gcc:
	* config.gcc: Use new awk script to check CPU, FPU and architecture
	parameters for --with-... options.
	* config/arm/parsecpu.awk: New file
	* config/arm/arm-cpus.in: New file.
	* config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
	files.
	* config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
	files.
	* config/arm/t-arm: Update dependency rules.
	* common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
	of processing .def files.
	* config/arm/genopt.sh: Deleted.
	* config/arm/gentune.sh: Deleted.
	* config/arm/arm-cores.def: Deleted.
	* config/arm/arm-arches.def: Deleted.
	* config/arm/arm-fpus.def: Deleted.
	* config/arm/arm-tune.md: Regenerated.
	* config/arm/arm-tables.opt: Regenerated.
	* config/arm/arm-cpu.h: New generated file.
	* config/arm/arm-cpu-data.h: New generated file.
	* config/arm/arm-cpu-cdata.h: New generated file.

Contrib:
	* gcc_update: Adjust touch list.

From-SVN: r244316
2017-01-11 14:39:00 +00:00
Maxim Ostapenko
ca280d38f9 re PR lto/79042 (LTO doesn't propagate node->dynamically_initialized bit for varpool nodes.)
PR lto/79042
	* lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
	bit.
	(input_varpool_node): Unpack dynamically_initialized bit.

From-SVN: r244314
2017-01-11 14:57:42 +02:00
Martin Liska
c86e9f03ab Fix flatten-3.c test-case.
2017-01-11  Martin Liska  <mliska@suse.cz>

	* gcc.dg/tree-ssa/flatten-3.c: Add -fno-ipa-icf to dg-options.

From-SVN: r244313
2017-01-11 12:17:27 +00:00
Jakub Jelinek
947f51d61b decomp4.C (test): Use 2 identifier decomposition instead of just 1 for the decomposition from...
* g++.dg/cpp1z/decomp4.C (test): Use 2 identifier decomposition
	instead of just 1 for the decomposition from struct C.

From-SVN: r244312
2017-01-11 12:47:30 +01:00
Eric Botcazou
849fccf831 re PR rtl-optimization/79032 (unaligned memory access generated with LRA and optimization)
PR rtl-optimization/79032
	* lra-constraints.c (simplify_operand_subreg): In the MEM case, test
	the alignment of the adjusted memory reference against that of MODE,
	instead of the alignment of the original memory reference.

From-SVN: r244311
2017-01-11 11:27:43 +00:00
Richard Biener
e325277522 re PR bootstrap/79052 (bootstrap-ubsan failures due to warnings)
2017-01-11  Richard Biener  <rguenther@suse.de>

	PR bootstrap/79052
	* gimple-parser.c (c_parser_gimple_switch_stmt): Add missing
	returns on parse errors.

From-SVN: r244310
2017-01-11 11:26:59 +00:00
Ville Voutilainen
f3df0b3cde Reduce the size of variant, it doesn't need an index of type size_t internally.
Reduce the size of variant, it doesn't need an index of
type size_t internally.
* include/std/variant (parse_numbers.h): New include.
(__select_index): New.
(_Variant_storage<false, _Types...>::_M_reset_impl): Use
_index_type for comparison with variant_npos.
(_Variant_storage<false, _Types...>::__index_type): New.
(_Variant_storage<false, _Types...>::_M_index): Change the
type from size_t to __index_type.
(_Variant_storage<true, _Types...>::__index_type): New.
(_Variant_storage<true, _Types...>::_M_index): Change the
type from size_t to __index_type.
(_Variant_base::_M_valid): Use _Storage::__index_type
for comparison with variant_npos.
(variant::index): Use _Base::_Storage::__index_type
for comparison with variant_npos.
* testsuite/20_util/variant/index_type.cc: New.

From-SVN: r244309
2017-01-11 13:23:43 +02:00
Martin Jambor
5102089246 [hsa] Fix hsa function cloning test
2017-01-11  Martin Jambor  <mjambor@suse.cz>

	* hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
	test.
	* ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
	decorated functions.

From-SVN: r244308
2017-01-11 11:35:31 +01:00
Richard Biener
80c74722bc tree-vrp.c (evrp_dom_walker::before_dom_children): Also set range/nonnull info for PHI results.
2017-01-11  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (evrp_dom_walker::before_dom_children): Also
	set range/nonnull info for PHI results.  Do not set it on
	stmts marked for removal.

	* gcc.dg/tree-ssa/pr61743-1.c: Adjust.

From-SVN: r244305
2017-01-11 09:06:29 +00:00
Jakub Jelinek
4c4b47031d re PR middle-end/50199 (wrong code with -flto -fno-merge-constants)
PR middle-end/50199
	* lto-lang.c (lto_post_options): Force flag_merge_constants = 1
	if it was 0.

	* gcc.dg/lto/pr50199_0.c: New test.

From-SVN: r244304
2017-01-11 09:40:59 +01:00
GCC Administrator
a476f04689 Daily bump.
From-SVN: r244302
2017-01-11 00:16:17 +00:00
Eric Botcazou
a34ab4c942 expr.c (store_field): In the bitfield case...
* expr.c (store_field): In the bitfield case, fetch the return value
	from the registers before applying a single big-endian adjustment.
	Always do a final load for a BLKmode value not larger than a word.

From-SVN: r244299
2017-01-10 23:05:13 +00:00
Martin Sebor
664b1a6b29 PR testsuite/78960 - FAIL: gcc.dg/tree-ssa/builtin-sprintf.c execution test
PR testsuite/78960 - FAIL: gcc.dg/tree-ssa/builtin-sprintf.c execution test
PR testsuite/78959 - FAIL: gcc.c-torture/execute/pr78622.c 
PR testsuite/78133 - Commit r241489 adds printf specifiers not supported by newlib

gcc/testsuite/ChangeLog:
	PR testsuite/78960
	PR testsuite/78959
	PR testsuite/78133
	* gcc.dg/tree-ssa/builtin-sprintf.c: Require C99 runtime.
	* gcc.dg/tree-ssa/pr78622.c: Ditto.

From-SVN: r244298
2017-01-10 15:45:52 -07:00
Martin Sebor
fefd30867d PR middle-end/78138 - missing warnings on buffer overflow with non-constant source length
gcc/testsuite/ChangeLog:

	PR middle-end/78138
	* gcc.dg/pr78138.c: New test.

From-SVN: r244297
2017-01-10 15:35:22 -07:00
Jason Merrill
8cef58751a re PR c++/77598 (constexpr compilation failure on reference type casting)
PR c++/77598

	* g++.dg/cpp0x/constexpr-ref11.C: New.

From-SVN: r244296
2017-01-10 17:33:09 -05:00
Martin Sebor
5a50f6bbed PR middle-end/78245 - missing -Wformat-length on an overflow of a dynamically allocated buffer
gcc/testsuite/ChangeLog:

	PR middle-end/78245
	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Add tests.

gcc/ChangeLog:

	PR middle-end/78245
	* gimple-ssa-sprintf.c (get_destination_size): Call
	{init,fini}object_sizes.
	* tree-object-size.c (addr_object_size): Adjust.
	(pass_through_call): Adjust.
	(pass_object_sizes::execute): Adjust.
	* tree-object-size.h (fini_object_sizes): Declare.

From-SVN: r244294
2017-01-10 14:56:44 -07:00
Martin Sebor
eb07c7cffb PR middle-end/78245 - missing -Wformat-length on an overflow of a dynamically allocated buffer
gcc/testsuite/ChangeLog:

	PR middle-end/78245
	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Add tests.

gcc/ChangeLog:

	PR middle-end/78245
	* gimple-ssa-sprintf.c (get_destination_size): Call
	{init,fini}object_sizes.
	* tree-object-size.c (addr_object_size): Adjust.
	(pass_through_call): Adjust.
	(pass_object_sizes::execute): Adjust.
	* tree-object-size.h (fini_object_sizes): Declare.

From-SVN: r244293
2017-01-10 14:54:15 -07:00
David Malcolm
b9f4757f8e Fix issues with unrepresentable column numbers (PR c++/77949)
PR c++/77949 identifies an ICE when the C++ frontend attempts to emit a
fix-it hint inserting a missing semicolon at column 4097 of a source file.

This column value exceeds LINE_MAP_MAX_COLUMN_NUMBER and hence isn't
representable using a location_t.

Attempting to do so leads to these problems, which this patch fixes:

(a) when encountering a column number > LINE_MAP_MAX_COLUMN_NUMBER we
create a new linemap with m_column_and_range_bits == 0, but
linemap_position_for_column doesn't check for this, and hence can emit
a bogus location_t value that's calculated relative to the previous
linemap start, but which will be decoded relative to the new linemap,
leading to very large incorrect line values.

(b) when encountering a column number that can't be represented, and
for which the linemap was pre-existing, the code would hit this assertion:
  if (linemap_assert_fails (column < (1u << map->m_column_and_range_bits)))
around a bail-out condition.  The patch replaces this assertion with a
simple conditional, to stop the ICE when this occurs, and fixes the
bit count (effective column bits, vs column+range bits)

(c) the C++ frontend wasn't checking for failure of
linemap_position_for_loc_and_offset when considering emitting the fix-it
hint.  The patch adds a conditional, so that no fix-it hint is emitted
if the location is bogus.

gcc/cp/ChangeLog:
	PR c++/77949
	* parser.c (cp_parser_class_specifier_1): Only suggest inserting
	a missing semicolon if we have a valid insertion location for
	the fix-it hint.

gcc/ChangeLog:
	PR c++/77949
	* input.c (selftest::test_accessing_ordinary_linemaps): Verify
	that we correctly handle column numbers greater than
	LINE_MAP_MAX_COLUMN_NUMBER.

gcc/testsuite/ChangeLog:
	PR c++/77949
	* g++.dg/diagnostic/pr77949.C: New test case.

libcpp/ChangeLog:
	PR c++/77949
	* line-map.c (linemap_position_for_column): When calling
	linemap_start_line, detect if a new linemap was created with
	0 column bits, and bail out early if this is the case.
	(linemap_position_for_loc_and_offset): Replace overzealous
	linemap_assert_fails with a simple conditional; use correct
	bit count.

From-SVN: r244292
2017-01-10 21:54:09 +00:00
Ian Lance Taylor
6fcb740ac4 runtime: copy more scheduler code from Go 1.7 runtime
I looked at a diff of proc.go between Go 1.7 and gccgo, and copied
    over all the easy stuff.
    
    Reviewed-on: https://go-review.googlesource.com/35090

From-SVN: r244291
2017-01-10 21:09:00 +00:00
Martin Sebor
c16880eff0 PR tree-optimization/78775 - [7 Regression] ICE in maybe_warn_alloc_args_overflow
gcc/ChangeLog:

	PR tree-optimization/78775
	* builtins.c (get_size_range): Move...
	* calls.c: ...to here.
	(alloc_max_size): Accept zero argument.
	(operand_signed_p): Remove.
	(maybe_warn_alloc_args_overflow): Call get_size_range.
	* calls.h (get_size_range): Declare.

gcc/testsuite/ChangeLog:

	PR tree-optimization/78775
	* gcc.dg/attr-alloc_size-4.c: Add test cases.
	* gcc.dg/attr-alloc_size-10.c: New test.
	* gcc.dg/attr-alloc_size-11.c: New test.
	* gcc.dg/builtin-stringop-chk-7.c: New test.
	* gcc.dg/pr78775.c: New test.
	* gcc.dg/pr78973-2.c: New test.
	* gcc.dg/pr78973.c: New test.

From-SVN: r244290
2017-01-10 14:02:07 -07:00