Commit Graph

153198 Commits

Author SHA1 Message Date
Arnaud Charlet
1f8766d3c3 [multiple changes]
2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Also
	initialize Block_Decls variable.
	(Expand_Entry_Barrier): Add pragma Warnings on Func_Body variable.
	(Build_Dispatching_Requeue): Add pragma Warnings on Op variable.
	* exp_disp.adb (Expand_Interface_Actuals): Initialize
	Formal_DDT and Actual_DDT variables.
	(Expand_Interface_Thunk): Initialize Iface_Formal.
	(Make_DT): Initialize Size_Comp.
	(Make_Select_Specific_Data_Table): Initialize Decls.
	* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies):
	Also initialize more RPC_Receiver_* variables.
	(Build_To_Any_Function): Initialize Cstr_Formal.
	* exp_prag.adb (Expand_Pragma_Contract_Cases): Initialize Msg_Str.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Freeze_Type_Refs): For an interface conversion
	node between access types, freeze the designated type as well,
	so that dispatch table pointers are created in the proper scope,
	and not in the constructed body of the expression function.

2017-04-28  Bob Duff  <duff@adacore.com>

	* alloc.ads (Nodes_Initial): Go back to previous value. The large
	value makes large compilations faster, but small compilations slower.

2017-04-28  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb: minor typos in Is_Child_Or_Sibling.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* erroutc.adb (Compilation_Errors): Do not consider info messages
	as suitable warnings when warnings must be treated as errors.
	* sem_ch7.adb (Analyze_Package_Specification): Do not consider
	internally-generated packages when outputting completion
	information.
	* errout.adb (Output_Messages): Do not consider info messages as
	suitable warnings when warnings must be treated as errors.
	* errutil.adb (Finalize): Do not consider info messages as
	suitable warnings when warnings must be treated as errors.


2017-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	* warnsw.ads: Minor fix for incorrect wording in comment.

2017-04-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (In_Instance_Code): New predicate in
	Valid_Conversion, to determine whether a type conversion appears
	as (or within) an actual for a formal object.  Type conversions
	in instances are not rechecked in Valid_Conversion because
	visibility changes between generic location andi instance may
	lead to spurious errors, but conversions within an actual must be
	fully checked, and they are not fully resolved when pre-analyzing
	the actuals.

From-SVN: r247385
2017-04-28 15:33:16 +02:00
Hristian Kirtchev
d5fa5335e2 exp_ch6.adb (Expand_N_Extended_Return_Statement): Use New_Copy_Tree instead of Relocate_Node as any subsequent copies of the...
2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Use
	New_Copy_Tree instead of Relocate_Node as any subsequent copies
	of the relocated node will have mangled Parent pointers.
	* sem_util.adb (Build_NCT_Hash_Tables): Reset both hash
	tables used in conjunction with entity and itype replication.
	(Visit_Entity): Rewrite the restriction on which entities
	require duplication.  The restriction now includes all types.

2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-cofuse.ads, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfinve.adb,
	a-cfinve.ads, a-cforma.adb, a-cforma.ads, a-cofuma.adb, a-cofuma.ads,
	a-cfhama.adb, a-cfhama.ads, a-cforse.adb: Minor reformatting and code
	cleanups.

From-SVN: r247384
2017-04-28 15:29:34 +02:00
Hristian Kirtchev
ef952fd5e9 exp_util.adb, [...]: Minor reformatting.
2017-04-28  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, g-dyntab.adb, par-ch4.adb, sem_util.adb, sem_attr.adb,
	gnat1drv.adb, exp_disp.adb, namet.adb, alloc.ads: Minor reformatting.

From-SVN: r247383
2017-04-28 15:26:33 +02:00
Arnaud Charlet
dc99d24171 Fix date.
From-SVN: r247382
2017-04-28 15:25:26 +02:00
Arnaud Charlet
e6326de502 [multiple changes]
2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Minor reformatting.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: Fix copy/pasto.

From-SVN: r247381
2017-04-28 15:25:02 +02:00
Jan Hubicka
ab38481cef ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
* ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
	(estimate_local_effects): Likewise.
	* ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
	edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
	* ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
	estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
	do_estimate_edge_time, estimate_edge_time): Likewise.
	* ipa-inline-analysis.c (estimate_node_size_and_time,
	estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
	(estimate_time_after_inlining): Remove.

From-SVN: r247380
2017-04-28 13:04:48 +00:00
Jonathan Wakely
b26f45f069 PR libstdc++/80553 don't allow destroying non-destructible types
PR libstdc++/80553
	* include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static
	assertions to ensure type is destructible.
	(destroy_at, destroy, destroy_n): Move from stl_uninitialized.h.
	* include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n):
	Move to stl_construct.h.
	* testsuite/20_util/specialized_algorithms/memory_management_tools/
	destroy_neg.cc: New test.
	* testsuite/23_containers/vector/cons/destructible_neg.cc: New test.

From-SVN: r247379
2017-04-28 13:56:53 +01:00
Jonathan Wakely
38233afdcf Remove superfluous "" in dg-error.
* testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
	superfluous "" in dg-error.

From-SVN: r247378
2017-04-28 13:56:38 +01:00
Martin Liska
e03f26cbb8 Enhance documentation of gcov.
2017-04-28  Martin Liska  <mliska@suse.cz>

	* doc/gcov.texi: Enhance documentation of gcov.

From-SVN: r247377
2017-04-28 12:51:57 +00:00
Martin Liska
2f360676fa Sort options of gcov, gcov-dump and gcov-tool both in --help and documentation
2017-04-28  Martin Liska  <mliska@suse.cz>

	* doc/gcov.texi: Sort options in alphabetic order.
	* doc/gcov-dump.texi: Likewise.
	* doc/gcov-tool.texi: Likewise.
	* gcov.c (print_usage): Likewise.
	* gcov-dump.c (print_usage): Likewise.
	* gcov-tool.c (print_merge_usage_message): Likewise.
	(print_rewrite_usage_message): Likewise.
	(print_overlap_usage_message): Likewise.

From-SVN: r247376
2017-04-28 12:51:40 +00:00
Martin Liska
07ea19a797 Fix format_gcov to not print misleading values (PR gcov-profile/53915)
2017-04-28  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/53915
	* gcov.c (format_gcov): Print 'NAN %' when top > bottom.

From-SVN: r247375
2017-04-28 12:51:22 +00:00
Martin Liska
6e49961ce4 Make gcno more precise about BBs really belonging to a line (PR gcov-profile/79891).
2017-04-28  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/79891
	* gcov.c (add_line_counts): Assign BBs to lines just if the BB
	is marked by compiler as living on a line.
	(get_cycles_count): Remove usage of the union.
	(output_intermediate_file): Likewise.
	(find_source): Fix GNU coding style.
	(accumulate_line_counts): Remove old non-all block mode.
	(output_lines): Remove usage of the union.
	* profile.c (output_location): Include all BBs, even if
	belonging to a same line (and file) as a previous BB.
2017-04-28  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/79891
	* gcc.misc-tests/gcov-17.c: New test.
	* gcc.misc-tests/gcov-18.c: New test.

From-SVN: r247374
2017-04-28 12:51:05 +00:00
Martin Liska
9b9d6370d4 Introduce new option -w which shows verbose informations.
2017-04-28  Martin Liska  <mliska@suse.cz>

	* gcov.c (process_args): Handle new argument 'w'.
	(read_graph_file): Assign ID to BBs.
	(output_branch_count): Display BB # if verbose flag is set.
	(output_lines): Likewise for arcs.
	(print_usage): Add '--verbose' option help.
	* doc/gcov.texi: Document --verbose (-w) option.

From-SVN: r247373
2017-04-28 12:50:47 +00:00
Martin Liska
0790260e7c Simplify representation of locations of a block.
2017-04-28  Martin Liska  <mliska@suse.cz>

	* gcov.c (struct block_location_info): New struct.
	(process_file): Fill up the new structure.
	(read_graph_file): Replace usage of encoding by the newly added
	struct.
	(add_line_counts): Likewise.
	(accumulate_line_counts): Remove usage of the union.
	(function_info::function_info): New function.
	(function_info::~function_info): Likewise.
	(process_file): Call delete instead of release_function.
	(release_function): Release the function.
	(release_structures): Call delete instead of release_function.
	(solve_flow_graph): Replace usage of num_blocks.
	(find_exception_blocks): Likewise.
	(output_lines): Fix GNU coding style.

From-SVN: r247372
2017-04-28 12:50:29 +00:00
Martin Liska
4ebcdc2373 Remove .gcno file when compilation does not success (PR driver/56469).
2017-04-28  Martin Liska  <mliska@suse.cz>

	PR driver/56469
	* coverage.c (coverage_remove_note_file): New function.
	* coverage.h: Declare the function.
	* toplev.c (finalize): Clean if an error has been seen.

From-SVN: r247371
2017-04-28 12:50:08 +00:00
Martin Liska
34769baf7d gcno file: do not stream block flags (PR gcov-profile/80031).
2017-04-28  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/80031
	* gcov-dump.c (tag_blocks): Just print number of basic blocks.
	* gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
	* gcov.c (read_graph_file): Read just number of blocks.
	* profile.c (branch_prob): Do not stream 0 flags per a basic
	block.

From-SVN: r247370
2017-04-28 12:49:26 +00:00
Martin Liska
5c5059bcf8 Fix indentation of gcov-dump.
2017-04-28  Martin Liska  <mliska@suse.cz>

	* gcov-dump.c (tag_*): Add new argument to declarations.
	(dump_gcov_file): Likewise.
	(tag_blocks): Add and use new argument depth.
	(tag_arcs): Likewise.
	(tag_lines): Likewise.
	(tag_counters): Likewise.
	(tag_summary): Likewise.
	(dump_working_sets): Use depth to do a proper indentation.

From-SVN: r247369
2017-04-28 12:48:44 +00:00
Jakub Jelinek
1ad784e2fc re PR bootstrap/80531 (RC1 bootstrap comparison failure)
PR bootstrap/80531
	* cgraph.h (symtab_node::debug_symtab): No longer inline.
	* symtab.c (symtab_node::debug_symtab): Move definition here.

From-SVN: r247367
2017-04-28 13:15:55 +02:00
Richard Biener
d90d82e309 lto-streamer.h (LTO_major_version): Bump to 7.
2017-04-28  Richard Biener  <rguenther@suse.de>

	* lto-streamer.h (LTO_major_version): Bump to 7.

From-SVN: r247365
2017-04-28 08:42:56 +00:00
Tom de Vries
f166beaf42 Remove superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus)
find $(find -type d -name testsuite) -type f \
     | xargs sed -ri \
       's#(dg-(error|warning|message|bogus).*) \{ target \*-\*-\* \} \}#\1 }#'

2017-04-28  Tom de Vries  <tom@codesourcery.com>

	* g++.dg/parse/error2.C: Remove superfluous '{ target *-*-* }' in
	dg-(error|warning|message|bogus).
	* g++.dg/parse/parameter-declaration-1.C: Same.
	* g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: Same.
	* gcc.dg/Wpointer-sign-Wall.c: Same.
	* gcc.dg/Wpointer-sign-pedantic.c: Same.
	* gcc.dg/cpp/19990413-1.c: Same.
	* gcc.dg/dg-test-1.c: Same.
	* gcc.dg/empty-source-2.c: Same.
	* gcc.dg/empty-source-3.c: Same.
	* gcc.dg/format/c99-printf-1.c: Same.
	* gcc.dg/format/c99-scanf-1.c: Same.
	* gcc.dg/label-decl-2.c: Same.
	* gcc.dg/m-un-2.c: Same.
	* gcc.dg/uninit-pr20644-O0.c: Same.
	* gfortran.dg/pr70006.f90: Same.
	* obj-c++.dg/fsf-package-0.m: Same.

	* testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
	superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus).

From-SVN: r247364
2017-04-28 07:26:32 +00:00
Tom de Vries
c3125b18e2 Remove superfluous ' . ' in dg-(error|warning|message|bogus)
find $(find -type d -name testsuite) -type f \
     | xargs sed -ri 's#(dg-(error|warning|message|bogus).*) \. \}#\1 }#'

2017-04-28  Tom de Vries  <tom@codesourcery.com>

	* c-c++-common/Wimplicit-fallthrough-6.c: Remove superfluous ' . ' in
	dg-(error|warning|message|bogus).
	* c-c++-common/Wimplicit-fallthrough-7.c: Same.
	* c-c++-common/cilk-plus/AN/pr61963.c: Same.
	* c-c++-common/cilk-plus/CK/no_args_error.c: Same.
	* c-c++-common/pr20000.c: Same.
	* c-c++-common/pr49706.c: Same.
	* g++.dg/ext/utf16-4.C: Same.
	* g++.dg/parse/error2.C: Same.
	* g++.dg/warn/Wtype-limits-Wextra.C: Same.
	* g++.dg/warn/Wtype-limits.C: Same.
	* g++.dg/warn/overflow-warn-1.C: Same.
	* g++.dg/warn/overflow-warn-3.C: Same.
	* gcc.dg/Wpointer-sign-Wall.c: Same.
	* gcc.dg/Wpointer-sign-pedantic.c: Same.
	* gcc.dg/Wtype-limits-Wextra.c: Same.
	* gcc.dg/Wtype-limits.c: Same.
	* gcc.dg/cpp/19990413-1.c: Same.
	* gcc.dg/dg-test-1.c: Same.
	* gcc.dg/empty-source-2.c: Same.
	* gcc.dg/empty-source-3.c: Same.
	* gcc.dg/label-decl-2.c: Same.
	* gcc.dg/m-un-2.c: Same.
	* gcc.dg/uninit-pr19430-O0.c: Same.
	* gcc.dg/uninit-pr19430.c: Same.
	* gcc.dg/uninit-pr20644-O0.c: Same.
	* gcc.dg/utf16-4.c: Same.
	* gfortran.dg/pr70006.f90: Same.
	* obj-c++.dg/fsf-package-0.m: Same.

From-SVN: r247363
2017-04-28 07:26:18 +00:00
Richard Biener
119092c17a tree-vrp.c (assert_info): New struct.
2017-04-28  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (assert_info): New struct.
	(add_assert_info): New helper.
	(register_edge_assert_for_2): Refactor to add asserts to a vector
	of assert_info.
	(register_edge_assert_for_1): Likewise.
	(register_edge_assert_for): Likewise.
	(finish_register_edge_assert_for): New helper actually registering
	asserts where live on edge.
	(find_conditional_asserts): Adjust.
	(find_switch_asserts): Likewise.
	(evrp_dom_walker::try_find_new_range): Generalize.
	(evrp_dom_walker::before_dom_children): Use register_edge_assert_for.

	* gcc.dg/tree-ssa/evrp7.c: New testcase.
	* gcc.dg/tree-ssa/evrp8.c: Likewise.
	* gcc.dg/tree-ssa/evrp9.c: Likewise.
	* gcc.dg/tree-ssa/vrp35.c: Disable EVRP.
	* gcc.dg/tree-ssa/vrp36.c: Likewise.
	* gcc.dg/tree-ssa/pr49039.c: Likewise.

From-SVN: r247362
2017-04-28 06:42:20 +00:00
GCC Administrator
e223180e6a Daily bump.
From-SVN: r247361
2017-04-28 00:16:23 +00:00
Marek Polacek
3777eda2ed re PR sanitizer/80349 (UBSAN: compile time crash with "type mismatch in binary expression" message)
PR sanitizer/80349
	* fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
	arg10 and arg11 to itype.

	* c-c++-common/ubsan/pr80349.c: New test.

From-SVN: r247352
2017-04-27 21:12:29 +00:00
Jakub Jelinek
f49215b10c re PR bootstrap/80531 (RC1 bootstrap comparison failure)
PR bootstrap/80531
	* configure.tgt (*-*-aix*): Add -frandom-seed=$@ to XCFLAGS to avoid
	bootstrap compare failures.

From-SVN: r247350
2017-04-27 22:03:01 +02:00
Jonathan Wakely
1035527b78 * doc/extend.texi (Object Size Checking): Improve grammar.
From-SVN: r247349
2017-04-27 19:44:25 +01:00
Volker Reichelt
8211c4a299 parser.c (cp_parser_cast_expression): Add target type of cast to diagnostic.
* parser.c (cp_parser_cast_expression): Add target type of cast to
        diagnostic.
        * error.c (type_to_string): Add '{enum}' suffix to enumeration types.

        * g++.dg/cpp1z/direct-enum-init1.C: Adjust for more verbose enum
        diagnostics.
        * g++.dg/warn/pr12242.C: Likewise.

From-SVN: r247347
2017-04-27 16:10:54 +00:00
Jonathan Wakely
4ca4927ac6 Remove reundant const-qualification from cast targets
* include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
	(PB_DS_CLASS_C_DEC::end()): Remove redundant const in cast type.
	* testsuite/util/testsuite_rng.h (twister_rand_gen::get_prob()):
	Likewise.

From-SVN: r247346
2017-04-27 16:17:05 +01:00
David Edelsohn
94baf2e2cf * gcc.c-torture/execute/alias-3.c: Skip on AIX.
From-SVN: r247343
2017-04-27 10:43:05 -04:00
Martin Liska
9a448688ed Fix test-case on ppc64le (PR testsuite/79455).
2017-04-27  Martin Liska  <mliska@suse.cz>

	PR testsuite/79455
	* c-c++-common/tsan/race_on_mutex.c: Make the scanned pattern
	more generic.

From-SVN: r247342
2017-04-27 14:28:06 +00:00
Richard Earnshaw
2e19adc8b4 [AArch64] Fix for gcc-7 regression PR 80530
This patch fixes the regression caused by the changes to add square root
estimation when compiling for xgene-1 or exynos-m1 targets.

The issue is that the expand path for the reciprocal estimate square
root pattern assumes that pattern cannot fail once it has been decided
that this expansion path is available, but because the logic deep inside
aarch64_emit_approx_sqrt() differs from use_rsqrt_p() the two disagree
as to what is safe.

This patch refactors the logic to ensure that we cannot unknowingly make
different choices here.

	PR target/80530
	* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
	that the logic for permitting reciprocal estimates matches that
	in use_rsqrt_p.

From-SVN: r247340
2017-04-27 14:09:55 +00:00
Tristan Gingold
a96eb6f2d7 Make-lang.in: Define EH_MECHANISM while building raise-gcc.c.
2017-04-27  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Make-lang.in: Define EH_MECHANISM while building
	raise-gcc.c. Fix include search path for raise-gcc.c

From-SVN: r247339
2017-04-27 15:54:41 +02:00
Arnaud Charlet
8ab31c0c31 [multiple changes]
2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Warn_On_Questionable_Layout): Declare.
	* warnsw.ads (Warn_On_Record_Holes): Move down.
	(Warn_On_Questionable_Layout): New boolean variable.
	(Warning_Record): Add Warn_On_Questionable_Layout field.
	* warnsw.adb (All_Warnings): Set Warn_On_Questionable_Layout.
	(Restore_Warnings): Likewise.
	(Save_Warnings): Likewise.
	(Set_Dot_Warning_Switch): Handle 'q' and 'Q' letters.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to
	components_to_record.
	(gnu_field_to_gnat): New function.
	(warn_on_field_placement): Likewise.
	(components_to_record): Add GNAT_RECORD_TYPE and remove REORDER
	parameters.  Rename local variables and adjust recursive call.
	Rework final scan of the field list and implement warnings on the
	problematic placement of specific sorts of fields.

2017-04-27  Bob Duff  <duff@adacore.com>

	* errout.adb, exp_aggr.adb, exp_attr.adb, exp_code.adb, fname.adb,
	* fname.ads, freeze.adb, inline.adb, lib.adb, lib.ads, lib-list.adb,
	* lib-load.adb, lib-writ.adb, par.adb, restrict.adb, rtsfind.adb,
	* sem.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch3.adb,
	* sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
	* sem_intr.adb, sem_res.adb, sem_util.adb, sem_warn.adb, sprint.adb:
	For efficiency, cache results of Is_Internal_File_Name and
	Is_Predefined_File_Name in the Units table. This avoids a lot
	of repeated text processing.

2017-04-27  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Sort_Sections): remove useless test.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfhase.adb, a-cfhase.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that are
	used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	(Equivalent_Keys): Functions over cursors are removed. They were
	awkward with explicit container parameters.
	* a-cforse.adb, a-cforse.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that
	are used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb: Code cleanup.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Replace_Entity): The prefix of a 'Result
	attribute reference in a post- condition is the subprogram to
	which the condition applies. If the condition is inherited
	by a type extension, the prefix becomes a reference to the
	inherited operation, but there is no need to create a wrapper
	for this operation, because 'Result is expanded independently
	when elaborating the postconditions.

From-SVN: r247338
2017-04-27 15:53:26 +02:00
Bob Duff
a216846295 sinput.adb: Minor code cleanup.
2017-04-27  Bob Duff  <duff@adacore.com>

	* sinput.adb: Minor code cleanup.
	* namet.adb (Append): Create faster versions of
	Append(String) and Append(Name_Id) by using slice assignment
	instead of loops.
	* sem_util.adb (In_Instance): Speed this up by removing
	unnecessary tests; Is_Generic_Instance is defined for all
	entities.
	* sem_util.ads, sem_util.adb (In_Parameter_Specification):
	Remove unused function.
	* alloc.ads (Nodes_Initial): Use a much larger value, because
	the compiler was spending a lot of time copying the nodes table
	when it grows. This number was chosen in 1996, so is rather out
	of date with current memory sizes. Anyway, it's virtual memory.
	Get rid of Orig_Nodes_...; use Node_... instead.
	* atree.adb (Lock): Do not release the Nodes tables; it's a
	waste of time.
	Orig_Nodes_ ==> Nodes_
	* nlists.adb: Orig_Nodes_ ==> Nodes_
	* g-table.adb: Remove unused "with" clause.
	* g-table.ads, table.ads: Remove Big_Table_Type, which should
	not be used by clients.
	* g-dyntab.adb (Last_Allocated): New function
	to encapsulate T.P.Last_Allocated, which I'm thinking of changing.

From-SVN: r247335
2017-04-27 15:43:49 +02:00
Jakub Jelinek
f8a36447db re PR c++/80534 (7.1 RC - internal compiler error: in finish_member_declaration, at cp/semantics.c:2963)
PR c++/80534
	* tree.c (type_cache_hasher::equal): Only compare
	TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
	(build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
	non-aggregate element types.
	* tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
	about the flag on ARRAY_TYPEs in the comment, formatting fix.
c-family/
	* c-common.c (complete_array_type): Only hash TYPE_TYPELESS_STORAGE
	flag on non-aggregate element types.
testsuite/
	* g++.dg/other/pr80534-1.C: New test.
	* g++.dg/other/pr80534-2.C: New test.

From-SVN: r247334
2017-04-27 15:42:37 +02:00
Arnaud Charlet
304757d2ce [multiple changes]
2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Compatible): Remove duplicated
	check.
	(Subtypes_Statically_Match): Remove duplicate check.
	* sem_prag.adb (Check_Arg_Is_External_Name): Remove duplicate check.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Replace_Type): Remove the special processing
	for selected components.
	* exp_attr.adb (Expand_N_Attribute_Reference): Merge the
	processing for attributes Fixed_Value and Integer_Value.
	* exp_util.adb (Side_Effect_Free): Merge the processing for
	qualified expressions, type conversions, and unchecked type
	conversions.
	* g-comlin.adb (Is_In_Config): Merge the processing for No_Space
	and Optional.
	* par-ch3.adb (P_Declarative_Items): Merge the processing for
	tokens function, not, overriding, and procedure.
	* sem_ch6.adb (Fully_Conformant_Expressions): Merge the processing
	for qualified expressions, type conversions, and unchecked
	type conversions.
	* sem_util.adb (Compile_Time_Constraint_Error): Merge the
	processing for Ada 83 and instances.
	(Object_Access_Level): Merge the processing for indexed components
	and selected components.
	* uname.adb (Add_Node_Name): Merge the processing for stubs.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Install_Primitive_Elaboration_Check):
	Do not generate the check when restriction No_Elaboration_Code
	is in effect.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Class_Wide_Check): New subsidiary
	of Expand_Dispatching_Call. If the denoted subprogram has a
	class-wide precondition, this is the only precondition that
	applies to the call, rather that the class-wide preconditions
	that may apply to the body that is executed. (This is specified
	in AI12-0195).

From-SVN: r247333
2017-04-27 15:38:28 +02:00
Arnaud Charlet
bfc37f375f [multiple changes]
2017-04-27  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Issue
	a warning in GNATprove mode if the runtime library does not
	support IEEE-754 floats.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherit_Class_Wide_Pre): If the parent operation
	is itself inherited it does not carry any contract information,
	so examine its parent operation which is its Alias.

From-SVN: r247332
2017-04-27 15:22:35 +02:00
Arnaud Charlet
9dd8f36f23 [multiple changes]
2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Image): In Ada2012 the
	prefix can be an object reference in which case Obj'Image (X)
	can only be interpreted as an indexing of the parameterless
	version of the attribute.
	* par-ch4.adb (P_Name): An attribute reference can be the prefix of
	an indexing or a slice operation if the attribute does not require
	parameters. In Ada2012 'Image also belongs in this category,
	and A'Image (lo .. hi) is legal and must be parsed as a slice.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb: Minor reformatting.
	* gnat1drv.adb (Adjust_Global_Switches): When in GNATprove mode,
	disable the CodePeer and C generation modes. Similar to the
	opposite actions done in CodePeer mode.

From-SVN: r247331
2017-04-27 15:18:28 +02:00
Arnaud Charlet
7327f5c21c [multiple changes]
2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_res.adb: Remove duplicate code.
	* sem_attr.adb: Delete duplicate code.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.adb: Reduce the amount of copying in
	Release. No need to copy items past Last.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb Add with and use clauses for Sem_Disp.
	(Install_Primitive_Elaboration_Check): New routine.
	* checks.ads (Install_Primitive_Elaboration_Check): New routine.
	* exp_attr.adb (Expand_N_Attribute_Reference): Clean up the
	processing of 'Elaborated.
	* exp_ch6.adb (Expand_N_Subprogram_Body): Install a primitive
	elaboration check.

From-SVN: r247330
2017-04-27 15:15:40 +02:00
Bob Duff
7494697b8c g-dyntab.ads, [...]: Remove incorrect assertion.
2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb, g-table.ads: Remove incorrect assertion.
	If the table grows and then shrinks back to empty, we won't necessarily
	point back to the empty array. Code cleanups.
	* sinput.ads: Add 'Base to Size clause to match the declared
	component subtypes.

From-SVN: r247329
2017-04-27 15:05:10 +02:00
Claire Dross
f2acfbce60 a-cforma.adb, [...] (=): Generic parameter removed to allow the use of regular equality over elements in...
2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cforma.adb, a-cforma.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that
	are used in subprogram contracts.
	(Current_To_Last): Removed, model functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	* a-cofuma.adb, a-cofuma.ads (Enable_Handling_Of_Equivalence)
	Boolean generic parameter to disable contracts for equivalence
	between keys.
	(Witness): Create a witness of a key that is used for handling of
	equivalence between keys.
	(Has_Witness): Check whether a witness is contained in a map.
	(W_Get): Get the element associated to a witness.
	(Lift_Equivalent_Keys): Removed, equivalence between keys is handled
	directly.
	* a-cofuse.adb, a-cofuse.ads (Enable_Handling_Of_Equivalence)
	Boolean generic parameter to disable contracts for equivalence
	between keys.
	* a-cfhama.adb, a-cfhama.ads (Formal_Model.P) Disable handling
	of equivalence on functional maps.
	* a-cfdlli.adb, a-cfdlli.ads (Formal_Model.P) Disable handling
	of equivalence on functional maps.

From-SVN: r247328
2017-04-27 14:55:29 +02:00
Richard Biener
12ead254ee re PR middle-end/80533 (Alias analysis of zero length array does not recognize accesses beyond end of array)
2017-04-27  Richard Biener  <rguenther@suse.de>

	PR middle-end/80533
	* emit-rtl.c (set_mem_attributes_minus_bitpos): When
	stripping ARRAY_REFs from MEM_EXPR make sure we're not
	keeping a reference to a trailing array.

From-SVN: r247327
2017-04-27 12:34:45 +00:00
Hristian Kirtchev
3b2249aa1b exp_ch9.adb (Expand_Entry_Barrier): Code cleanup.
2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Expand_Entry_Barrier): Code
	cleanup. Do not perform the optimization which removes the
	declarations of the discriminant and component renamings when
	validity checks on operands and attributes are in effect.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb, exp_util.adb, sem_ch7.adb, g-dyntab.adb, g-dyntab.ads,
	freeze.adb, a-cfinve.ads, a-cofuma.adb, a-cofuma.ads, a-cfhama.adb,
	a-cfhama.ads, a-cofove.ads: Minor reformatting.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-debpoo.adb (Dump_Gnatmem): Protect against a possible null
	pointer dereference.
	* g-spipat.adb (Dump): Code clean up. Protect against a possible
	null pointer dereference.

From-SVN: r247326
2017-04-27 14:18:31 +02:00
Bob Duff
a3ef4e650e g-dyntab.ads, [...]: Default for Table_Low_Bound.
2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Default for Table_Low_Bound.
	Rename Empty --> Empty_Table_Ptr, and don't duplicate code for it.
	Free renames Init, since they do the same thing.
	* g-table.ads: Default for Table_Low_Bound.
	* table.ads: Default for Table_Low_Bound, Table_Initial, and
	Table_Increment.

From-SVN: r247324
2017-04-27 14:10:04 +02:00
Arnaud Charlet
de33eb3865 [multiple changes]
2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Add assertions to subprograms that
	can reallocate.
	* atree.adb, elists.adb, fname-uf.adb, ghost.adb, inline.adb,
	* lib.adb, namet.adb, nlists.adb, sem.adb, sinput.adb, stringt.adb:
	Reorder code so that above assertions do not fail.
	* table.ads: Remove obsolete comment on Locked.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads: Code cleanup.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Freeze_Type): Build a DIC procedure
	when needed for proof.	(Expand_SPARK): Call the new procedure.
	* exp_util.ads Fix typo.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* a-cofuma.ads, a-cfhama.ads: Minor reformatting, grammar, and typo
	fixes.

From-SVN: r247323
2017-04-27 14:09:11 +02:00
Richard Biener
1b7c8d39fb re PR middle-end/80539 (gcc ICE at -O2 and above on valid code on x86_64-linux-gnu in "chrec_fold_plus_poly_poly")
2017-04-27  Richard Biener  <rguenther@suse.de>

	PR middle-end/80539
	* tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
	being in loop-closed SSA form conservatively.
	(chrec_fold_multiply_poly_poly): Likewise.

	* gcc.dg/torture/pr80539.c: New testcase.

From-SVN: r247322
2017-04-27 11:42:57 +00:00
Arnaud Charlet
a6d25cadec [multiple changes]
2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb Add new type Visited_Element
	and update the contents of table Elab_Visited.	Various code clean up.
	(Check_Elab_Call): Determine whether a prior call to
	the same subprogram was already examined within the same context.
	(Check_Internal_Call_Continue): Register the subprogram being
	called as examined within a particular context. Do not suppress
	elaboration warnings.

2017-04-27  Gary Dismukes  <dismukes@adacore.com>

	* xoscons.adb, osint.ads: Minor reformatting.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-dyntab.ads, g-dyntab.adb: Misc cleanup. Rename
	Table_Count_Type --> Table_Last_Type, because the name
	was confusing (a "count" usually starts at zero).  Add
	functionality supported or needed by other tables packages
	(Move, Release_Threshold).
	* g-table.ads, g-table.adb: This is now just a thin wrapper
	around g-dyntab.ads/g-dyntab.adb.  Add functionality supported
	or needed by other tables packages (Save, Restore).
	* table.ads, table.adb: This is now just a thin wrapper around
	* g-table.ads/g-table.adb.
	* namet.h, scos.h, uintp.h: These files are reaching into the
	private data of some instances of g-table, whose names changed,
	so the above change requires some adjustment here. It now uses
	public interfaces.

2017-04-27  Bob Duff  <duff@adacore.com>

	* namet.adb, namet.ads: Minor: remove unused procedures.

2017-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Initialize Ok variable too.
	(Minimize_Eliminate_Overflows): Initialize Llo and Lhi.
	Add pragma Warnings on Rtype variable in nested block.	*
	* exp_ch3.adb (Build_Init_Statements): Initialize VAR_LOC.
	* exp_ch4.adb (Expand_Concatenate): Initialize 3 variables.
	(Size_In_Storage_Elements): Add pragma Warnings on Res variable.
	* exp_ch7.adb (Build_Adjust_Statements): Initialize Bod_Stmts.
	(Process_Component_List_For_Finalize): Initialize Counter_Id.
	(Build_Finalize_Statements): Initialize Bod_Stmts.
	* exp_disp.adb (Expand_Dispatching_Call): Initialize SCIL_Node.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cfhama.adb, a-cfhamai.ads (=): Generic parameter removed to
	allow the use of regular equality over elements in contracts.
	(Formal_Model): Ghost package containing model functions that are
	used in subprogram contracts.
	(Current_To_Last): Removed, model
	functions should be used instead.
	(First_To_Previous): Removed, model functions should be used instead.
	(Strict_Equal): Removed, model functions should be used instead.
	(No_Overlap): Removed, model functions should be used instead.
	(Equivalent_Keys): Functions over cursors are removed. They were
	awkward with explicit container parameters.
	* a-cofuma.adb, a-cofuma.ads (Lift_Equivalent_Keys): New lemma
	(proof only) procedure to help GNATprove when equivalence over
	keys is not equality.

From-SVN: r247320
2017-04-27 13:01:32 +02:00
Hristian Kirtchev
27eaddda0f exp_util.adb, [...]: Minor reformatting and code cleanups.
2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, a-cfdlli.adb, a-cfdlli.ads, exp_ch9.adb, g-dyntab.adb,
	sem_dim.adb, a-cfinve.adb, a-cfinve.ads, a-cofove.adb, a-cofove.ads:
	Minor reformatting and code cleanups.

From-SVN: r247319
2017-04-27 12:58:25 +02:00
Arnaud Charlet
6dd86c75d6 [multiple changes]
2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Build_Inherited_Condition_Pragmas): New procedure,
	subsidiary of Check_Inherited_Conditions, to build pragmas for an
	operation whose ancestor has classwide pre/postconditions. This
	is used both to check the legality of the inheritance in Ada
	and in SPARK, and to determine whether a wrapper is needed for
	an inherited operation.
	* exp_util.adb (Build_Class_Wide_Expression, Replace_Entity):
	Improve placement of error message for inherited classwide
	conditions that become illegal on type derivation.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Set
	SPARK_Mode from context on generic package.
	* sem_ch7.adb (Analyze_Package_Declaration): Simplify code to remove
	useless test.

2017-04-27  Claire Dross  <dross@adacore.com>

	* a-cofuve.ads (Range_Shifted): Rewrite precondition to avoid
	overflows in computations.
	* a-cofove.ads (Capacity_Range): Rewrite last bound to avoid
	overflows in computations.
	(Insert): Rewrite precondition to avoid overflows in computations.
	* a-cfinve.ads (Capacity_Range): Rewrite last bound to avoid
	overflows in computations.
	(Insert): Rewrite precondition to avoid overflows in computations.

From-SVN: r247318
2017-04-27 12:56:46 +02:00
Arnaud Charlet
f24745230f [multiple changes]
2017-04-27  Steve Baird  <baird@adacore.com>

	* exp_ch9.adb (Expand_N_Asynchronous_Select): Initialize the Cancel
	flag when it is declared in order to avoid confusing CodePeer about
	the possibility of an uninitialized variable read.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Object_Declaration): There is
	no dimensionality error if the subtype of the expression is
	identical to the nominal subtype in the declaration, even though
	the expression itself may have been constant-folded and lack a
	dimension vector.
	* sem_dim.ads: Add comments on setting of dimension vectors and
	its interaction with node rewritings and side-effect removal.

2017-04-27  Bob Duff  <duff@adacore.com>

	* debug.adb: Minor comment correction.
	* sem_dim.ads: Minor reformatting and typo fixes.

2017-04-27  Bob Duff  <duff@adacore.com>

	* g-table.adb, g-table.adsa, scos.h: From the C side, access First and
	Last of the tables via function calls, rather than relying on layout
	of data structures.

2017-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb: No wrapper in GNATprove mode.

2017-04-27  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Comparison_Op): Always
	evaluate comparisons between values of universal types.

2017-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Do not generate
	an elaboration counter nor a check when in GNATprove mode.
	* sem_util.adb (Build_Elaboration_Entity): Do not create an
	elaboration counter when in GNATprove mode.

From-SVN: r247317
2017-04-27 12:55:17 +02:00