Commit Graph

173529 Commits

Author SHA1 Message Date
Martin Sebor 8640a70471 extend.texi (attribute access): Correct typos.
gcc/ChangeLog:

	* doc/extend.texi (attribute access): Correct typos.

From-SVN: r279398
2019-12-14 10:31:54 -07:00
Jakub Jelinek 16570c12c9 re PR ipa/92357 (ICE in IPA pass fnsummary in openmp offload)
PR ipa/92357
	* ipa-fnsummary.c (ipa_fn_summary_write): Use
	lto_symtab_encoder_iterator with lsei_start_function_in_partition and
	lsei_next_function_in_partition instead of walking all cgraph nodes
	in encoder.

From-SVN: r279395
2019-12-14 12:19:07 +01:00
Jakub Jelinek 813b70a17b re PR tree-optimization/92930 (GCC incorrectly optimizes away __builtin_apply() calls)
PR tree-optimization/92930
	* ipa-pure-const.c (special_builtin_state): Don't handle
	BUILT_IN_APPLY.  Formatting fixes.
	(check_call): Formatting fixes.

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

From-SVN: r279394
2019-12-14 12:18:30 +01:00
Iain Sandoe 4e62faf211 [Darwin, PPC] Use Darwin9 bundle header for Rosetta builds.
On Darwin10 it's possible to make a 32b PPC build using the
'Rosetta' emulator.  However, these builds need to make use of
Darwin9 crts (for exes, dylibs and bundles).  This adds the
change to cater for bundles.

gcc/ChangeLog:

2019-12-14  Iain Sandoe  <iain@sandoe.co.uk>

	* config/darwin.h (DARWIN_EXTRA_SPECS): Add new
	bundle spec. (DARWIN_BUNDLE1_SPEC): New.
	(STARTFILE_SPEC): Use darwin bundle spec.
	* config/rs6000/darwin.h (DARWIN_BUNDLE1_SPEC): New.
	(DARWIN_DYLIB1_SPEC): Delete duplicate.

From-SVN: r279393
2019-12-14 08:25:02 +00:00
Martin Sebor ef29b12cfb PR middle-end/91582 - missing heap overflow detection for strcpy
PR middle-end/91582 - missing heap overflow detection for strcpy
PR middle-end/92868 - ICE: tree check: expected integer_cst, have ssa_name

gcc/ChangeLog:

	PR middle-end/91582
	PR middle-end/92868
	* builtins.c (addr_decl_size): New function.
	(gimple_call_alloc_size): Add arguments.
	(compute_objsize): Add an argument.  Set *PDECL even for allocated
	objects.
	Correct checking for negative wide_int.
	Correct handling of negative outer offsets into unknown regions
	or with unknown inner offsets.
	Extend offsets to at most sizetype precision.
	Only handle constant subobject sizes.
	* builtins.h (gimple_call_alloc_size): Add arguments.
	* tree.c (component_ref_size): Always return sizetype.
	* tree-ssa-strlen.c (strinfo::alloc): New member.
	(get_addr_stridx): Add argument.
	(get_stridx): Use ptrdiff_t.  Add argument.
	(new_strinfo): Set new member.
	(get_string_length): Handle alloca and VLA.
	(dump_strlen_info): Dump more state.
	(maybe_invalidate): Print more info.  Decrease indentation.
	(unshare_strinfo): Set new member.
	(valid_builtin_call): Handle alloca and VLA.
	(maybe_warn_overflow): Check and set no-warning bit.  Improve
	handling of offsets.  Print allocated objects.
	(handle_builtin_strlen): Handle strinfo records with null lengths.
	(handle_builtin_strcpy): Add argument.  Call maybe_warn_overflow.
	(is_strlen_related_p): Handle dynamically allocated objects.
	(get_range): Add argument.
	(handle_builtin_malloc): Rename...
	(handle_alloc): ...to this and handle all allocation functions.
	(handle_builtin_memset): Call maybe_warn_overflow.
	(count_nonzero_bytes): Handle more MEM_REF forms.
	(strlen_check_and_optimize_call): Call handle_alloc_call.  Pass
	arguments to more callees.
	(handle_integral_assign): Add argument.  Create strinfo entries
	for MEM_REF assignments.
	(check_and_optimize_stmt): Handle more MEM_REF forms.

gcc/testsuite/ChangeLog:

	PR middle-end/91582
	* c-c++-common/Wrestrict.c: Adjust expected warnings.
	* gcc/testsuite/c-c++-common/Wstringop-truncation-4.c: Enable more
	warnings.
	* gcc/testsuite/c-c++-common/Wstringop-truncation.c: Remove an xfail.
	* gcc.dg/Warray-bounds-46.c: Disable -Wstringop-overflow.
	* gcc.dg/Warray-bounds-47.c: Same.
	* gcc.dg/Warray-bounds-52.c: New test.
	* gcc.dg/Wstringop-overflow-27.c: New test.
	* gcc.dg/Wstringop-overflow-28.c: New test.
	* gcc.dg/Wstringop-overflow-29.c: New test.
	* gcc.dg/attr-alloc_size.c (test): Disable -Warray-bounds.
	* gcc.dg/attr-copy-2.c: Adjust expected warnings.
	* gcc.dg/builtin-stringop-chk-5.c: Adjust text of expected messages.
	* gcc.dg/strlenopt-86.c: Relax test.
	* gcc.target/i386/pr82002-1.c: Prune expected warnings.

From-SVN: r279392
2019-12-13 17:52:46 -07:00
GCC Administrator e78b9a6fca Daily bump.
From-SVN: r279391
2019-12-14 00:16:44 +00:00
Julian Brown 1cbd94e834 Fix potential race condition in OpenACC "exit data" operations
PR libgomp/92881

	libgomp/
	* libgomp.h (gomp_remove_var_async): Add prototype.
	* oacc-mem.c (delete_copyout): Call gomp_remove_var_async instead of
	gomp_remove_var.
	* target.c (gomp_unref_tgt): Change return type to bool, indicating
	whether target_mem_desc was unmapped.
	(gomp_unref_tgt_void): New.
	(gomp_remove_var): Reimplement in terms of...
	(gomp_remove_var_internal): ...this new helper function.
	(gomp_remove_var_async): New, implemented using above helper function.
	(gomp_unmap_vars_internal): Use gomp_unref_tgt_void instead of
	gomp_unref_tgt.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r279388
2019-12-13 23:14:15 +00:00
Iain Sandoe a7c70129b9 [Darwin, PPC] Use Darwin9 dylib header for Rosetta builds.
On Darwin10 it's possible to make a 32b PPC build using the
'Rosetta' emulator.  However, these builds need to make use of
Darwin9 crts (for exes and dylibs).  This adds the change to
cater for dylibs.

gcc/ChangeLog:

2019-12-13  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.h (DARWIN_DYLIB1_SPEC): New.

From-SVN: r279381
2019-12-13 21:06:22 +00:00
Ian Lance Taylor c926fd82bb libbacktrace: add DWARF 5 support
* dwarf.c (struct attr): Add val field.
	(enum attr_val_encoding): Add ATTR_VAL_ADDDRESS_INDEX,
	ATTR_VAL_STRING_INDEX, ATTR_VAL_RNGLISTS_INDEX.
	(struct line_header): Add addrsize field.
	(struct line_header_format): Define.
	(struct unit): Add str_offsets_base, addr_base, and rnglists_base
	fields.
	(read_uint24): New static function.
	(read_attribute): Add implicit_val parameter.  Replace dwarf_str
	and dwarf_str_size parameters with dwarf_sections parameter.  Add
	support for new DWARF 5 forms.  Change all callers.
	(resolve_string): New static function.
	(resolve_addr_index): Likewise.
	(read_abbrevs): Support DW_FORM_implicit_const.
	(struct pcrange): Add lowpc_is_addr_index, highpc_is_addr_Index,
	and ranges_is_index fields.
	(update_pcrange): Support DWARF 5 encodings.
	(add_high_low_range): New static function, split out of
	add_ranges.
	(add_ranges_from_ranges): Likewise.
	(add_ranges_from_rnglists): New static function.
	(add_ranges): Just call new helper functions.
	(find_address_ranges): Use resolve_string for strings, after
	reading all attributes.  Handle new DWARF 5 attributes.
	(build_address_map): Support DWARF 5 compilation units.
	(read_v2_paths): New static function, split out of
	read_line_header.
	(read_lnct): New static	function.
	(read_line_header_format_entries): Likewise.
	(read_line_header): Add ddata parameter.  Support DWARF 5 line
	headers.  Call new helper functions.  Change all callers.
	(read_line_program): Use addrsize from line program header.  Don't
	special case directory index 0 for DWARF 5.
	(read_referenced_name): Use resolve_string.
	(read_function_entry): Handle DWARF 5 encodings.  Use
	resolve_string.
	* internal.h (enum dwarf_section): Add DEBUG_ADDR,
	DEBUG_STR_OFFSETS, DEBUG_LINE_STR, DEBUG_RNGLISTS.
	* elf.c (dwarf_section_names): Add new section names.
	* pecoff.c (dwarf_section_names): Likewise.
	* xcoff.c (xcoff_add): Clear dwarf_sections before setting
	fields.
	* configure.ac: Define HAVE_DWARF5 automake conditional.
	* Makefile.am (dwarf5_SOURCES): New variable if HAVE_DWARF5.
	(dwarf5_CFLAGS, dwarf5_LDADD): Likewise.
	(dwarf5_alloc_SOURCES, dwarf5_alloc_CFLAGS): Likewise.
	(dwarf5_alloc_LDADD): Likewise.
	(BUILDTESTS): Add dwarf5 tests if HAVE_DWARF5.
	(CLEANFILES, clean-local): Define.

From-SVN: r279380
2019-12-13 20:04:47 +00:00
Jan Hubicka 510873f901 lto-streamer-in.c (input_function): Add node parameter.
* lto-streamer-in.c (input_function): Add node parameter.
	(lto_read_body_or_constructor): Use it.

From-SVN: r279379
2019-12-13 18:43:20 +00:00
Andrew Stubbs 26b74ed022 Update OpenACC tests for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-init-1.c: Handle gcn.
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Disable on GCN.
	* testsuite/libgomp.oacc-c-c++-common/tile-1.c: Likewise.

From-SVN: r279378
2019-12-13 17:40:06 +00:00
Roman Zhuykov faab8a70f2 modulo-sched: fix branch rescheduling issue (PR92591)
PR rtl-optimization/92591
	* modulo-sched.c (ps_add_node_check_conflicts): Improve checking
	for history > 0 case.

testsuite:

	PR rtl-optimization/92591
	* gcc.dg/pr92951-1.c: New test.
	* gcc.dg/pr92951-2.c: New test.

From-SVN: r279377
2019-12-13 17:33:38 +00:00
Roman Zhuykov c420be8b3c modulo-sched: fix parameters usage and their ranges
* modulo-sched.c (sms_schedule): Use param_sms_max_ii_factor
	value instead of macro.  Adjust comment.
	(sms_schedule_by_order): Use parameter value without macro.
	* params.opt: Add ranges for modulo scheduler parameters,
	set param_sms_max_ii_factor = 2 by default.

From-SVN: r279376
2019-12-13 17:17:31 +00:00
Roman Zhuykov 728c2e5eea modulo-sched: speed up DDG analysis (PR90001)
PR rtl-optimization/90001
	* ddg.c (create_ddg): Init max_dist array for each node.
	(free_ddg): Free max_dist array.
	(create_ddg_edge): Use bool field instead of aux union.
	(set_recurrence_length): Use prepared max_dist information instead
	of calling longest_simple_path.
	(create_scc): Remove graph argument, fill node's aux.count with
	SCC id, and move set_recurrence_length call to...
	(create_ddg_all_sccs): ...here, after filling all max_dist arrays
	using Floyd–Warshall-like algorithm.
	(update_dist_to_successors): Remove the whole function.
	(longest_simple_path): Likewise.
	* ddg.h (struct ddg_node): Add max_dist pointer.
	(struct ddg_edge): Use bool field instead of unused aux union.

From-SVN: r279375
2019-12-13 17:02:53 +00:00
Andrew Stubbs 7b945b19ad Sub-dword vector multiply for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (mulv64si3<exec>): Rename to ...
	(mul<mode>3<exec>): ... this, and implement sub-dword patterns.
	(mulv64si3_dup<exec>): Rename to ...
	(mul<mode>3_dup<exec>): ... this, and implement sub-dword patterns.

From-SVN: r279374
2019-12-13 16:37:17 +00:00
Jan Hubicka e44deb433b Fix merging of common traget info.
* ipa-utils.c (ipa_merge_profiles): Improve dumping; merge common
	targets.

From-SVN: r279373
2019-12-13 15:41:55 +00:00
Andrew Stubbs 3d66c77719 Sub-dword vector extend and truncate for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (sdwa): New mode attribute.
	(VCVT_FROM_MODE): Rename to ...
	(VCVT_MODE): ... this.
	(VCVT_TO_MODE): Delete mode iterator.
	(VCVT_FMODE): New mode iterator.
	(VCVT_IMODE): Likewise.
	(<cvt_name><VCVT_FROM_MODE:mode><VCVT_TO_MODE:mode>2<exec>): Change ...
	(<cvt_name><VCVT_MODE:mode><VCVT_FMODE:mode>2<exec>): ... to this.
	(<cvt_name><VCVT_FMODE:mode><VCVT_IMODE:mode>2<exec>): New.
	(zero_convert): New code iterator.
	(convop): New code attribute.
	(<convop><VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>)
	: New.
	(extend<VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>)
	: New.
	(vec_truncatev64div64si): Rename to ...
	(truncv64di<mode>2): ... this and implement sub-dword patterns.
	(vec_truncatev64div64si_exec): Rename to ...
	(truncv64di<mode>2_exec): ... this and implement sub-dword patterns.
	(<convop><mode>v64di2): New insn_and_split.
	(<convop><mode>v64di2_exec): Likewise.
	(mask_gather_load<mode>): Update truncate names.
	(mask_scatter_store<mode>): Likewise.
	* config/gcn/gcn.c (gcn_expand_scaled_offsets): Update truncate names.

From-SVN: r279372
2019-12-13 15:29:26 +00:00
Dennis Zhang a93e1d5c70 [AArch64] Enable CLI for Armv8.6-a: armv8.6-a, i8mm and bf16
2019-12-13  Dennis Zhang  <dennis.zhang@arm.com>

gcc/
	* config/aarch64/aarch64-arches.def (armv8.6-a): New.
	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
	__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC and
	__ARM_FEATURE_BF16_SCALAR_ARITHMETIC when enabled.
	* config/aarch64/aarch64-option-extensions.def (i8mm, bf16): New.
	(fp): Disabling fp also disables i8mm and bf16.
	(simd): Disabling simd also disables i8mm.
	* config/aarch64/aarch64.h (AARCH64_FL_V8_6): New macro.
	(AARCH64_FL_I8MM, AARCH64_FL_BF16, AARCH64_FL_FOR_ARCH8_6): Likewise.
	(AARCH64_ISA_V8_6, AARCH64_ISA_I8MM, AARCH64_ISA_BF16): Likewise.
	(TARGET_I8MM, TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
	* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options
	and add a new table to list permissible values for ARCH.

gcc/testsuite/
	* gcc.target/aarch64/pragma_cpp_predefs_2.c: Add tests for i8mm
	and bf16 features.

From-SVN: r279370
2019-12-13 10:22:39 +00:00
Jakub Jelinek 1a4c0446c0 re PR target/92908 (wrong code with -Og -fno-tree-fre -mavx512bw and vector compare)
PR target/92908
	* simplify-rtx.c (simplify_relational_operation): Punt for vector
	cmp_mode and scalar mode, if simplify_relational_operation returned
	const_true_rtx.
	(simplify_const_relational_operation): Change VOID_mode in function
	comment to VOIDmode.

	* gcc.target/i386/avx512bw-pr92908.c: New test.

From-SVN: r279369
2019-12-13 11:12:55 +01:00
Gary Dismukes 814db0c199 [Ada] Minor rewording of one sentence
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor
	rewording of one sentence.
	* gnat_rm.texi: Regenerate.

From-SVN: r279368
2019-12-13 09:05:43 +00:00
Arnaud Charlet 9531aef54f [Ada] Unnesting and annex E
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Account for trees produced
	by Annex E constructs.

From-SVN: r279367
2019-12-13 09:05:38 +00:00
Ghjuvan Lacambre e203dd6e24 [Ada] implementation_defined_pragmas.rst: Update Initialize_Scalars docs
2019-12-13  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
	Initialize_Scalars documentation.
	* gnat_rm.texi: Regenerate.

From-SVN: r279366
2019-12-13 09:05:33 +00:00
Javier Miranda c90e1eca37 [Ada] Spurious error on precondition of subprogram instantiation
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_ch13.adb (Analyze_Aspect_Specification): Processing a
	precondition, if the expression is of the form A and then B, do
	not generate separate Pre/Post aspects for the separate clases
	when we are processing a generic unit. Required to avoid
	reporting spurious visibility errors on the instantiations.

From-SVN: r279365
2019-12-13 09:05:28 +00:00
Eric Botcazou e1e1e53a48 [Ada] Better error message for aliased formal and atomic actual
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Actuals): Give canonical error for
	illegal case of atomic/volatile parameter also if the formal is
	aliased.

From-SVN: r279364
2019-12-13 09:05:23 +00:00
Eric Botcazou a35c1b077e [Ada] Clear confusion about subcomponents of atomic object
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses.
	* sem_util.adb (Is_Atomic_Object): For an indexed component,
	only look at the Has_Atomic_Components aspect of the prefix and
	do not recurse on it; for a selected component, do not look at
	the prefix.
	(Is_Atomic_Or_VFA_Object): Minor tweak.

From-SVN: r279363
2019-12-13 09:05:18 +00:00
Arnaud Charlet 309ff6fb23 [Ada] Fix support for > 24 hours image in Ada.Calendar.Formatting
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-calfor.ads, libgnat/a-calfor.adb (Split_Duration):
	New procedure.
	(Split, Image): Use Split_Duration. Update Image spec.

From-SVN: r279362
2019-12-13 09:05:13 +00:00
Javier Miranda 3af796b550 [Ada] Adding support for unsupported type conversions in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Generate an extra temporary
	to facilitate the C backend processing dereferences.

From-SVN: r279361
2019-12-13 09:05:08 +00:00
Javier Miranda 48f05f09e6 [Ada] Pragma Linker_Section in subprogram instantiations in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma): Propagate the
	Linker_Section_Attribute to the ultimate alias of the subprogram
	to facilitate the C backend processing this attribute.

From-SVN: r279360
2019-12-13 09:05:03 +00:00
Yannick Moy de12d07e93 [Ada] Avoid spurious mismatch error of assertion policy in generics
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_util.adb (Original_Aspect_Pragma_Name): Go through
	Original_Node for pragma.

From-SVN: r279359
2019-12-13 09:04:58 +00:00
Piotr Trojanek 8973b987b6 [Ada] Minor fix typo in comment
2019-12-13  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_aggr.adb, exp_unst.adb: Minor fix typo in comment.

From-SVN: r279358
2019-12-13 09:04:53 +00:00
Steve Baird a85475beae [Ada] Detect illegal implicit type conversions
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call
	when testing whether a type is a general access type.

From-SVN: r279357
2019-12-13 09:04:48 +00:00
Javier Miranda 02458cc742 [Ada] Adding support for unsupported type conversion in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an
	extra temporary for cases unsupported by the C backend.

From-SVN: r279356
2019-12-13 09:04:43 +00:00
Steve Baird cfedf3e51b [Ada] Implement AI12-0109 (prohibit some "early" derivations)
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* einfo.ads: Correct comment for Derived_Type_Link to reflect
	that fact that this function is now used for more than just
	generation of warnings.
	* sem_ch3.adb (Build_Derived_Type): Do not call
	Set_Derived_Type_Link if the derived type and the parent type
	are in different compilation units. Such a derivation cannot be
	a problematic "early" derivation (identifying these is what the
	Derived_Type_Link attribute is used for) and we don't like
	inter-unit references that go in the opposite direction of
	semantic dependencies.
	* sem_ch13.adb (Is_Type_Related_Rep_Item): A new function,
	analogous to the existing function Is_Operational_Item.
	(Rep_Item_Too_Late): Generate a hard error (with same text as
	the warning that was previously being generated) if the
	AI12-0109 legality rule is violated.

From-SVN: r279355
2019-12-13 09:04:38 +00:00
Eric Botcazou 63e21a7237 [Ada] Minor tweak to Volatile_Full_Access wording in GNAT RM
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor tweak to
	Volatile_Full_Access wording in GNAT RM.
	* gnat_rm.texi: Regenerate.

From-SVN: r279354
2019-12-13 09:04:33 +00:00
Gary Dismukes 47997d257a [Ada] Suppress Base_Address call on init of activation record components
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference,
	Attribute_Address): Suppress generation of a call to
	Base_Address in the case where the Address attribute is being
	used to initialize a corresponding component of an activation
	record.
	(Is_Unnested_Component_Init): New function to determine whether
	an attribute reference for Address is used to initialized a
	component of an activation record object that corresponds to the
	object denoted by the prefix of the attribute (an assignment
	used in support of unnesting for back ends like LLVM).

From-SVN: r279353
2019-12-13 09:04:28 +00:00
Ed Schonberg be3614c740 [Ada] Crash on implicit dereference not made explicit
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve): IF an entity reference is overloaded
	because its type has an Implicit_Dereference aspect, we must
	examine the discriminants of the type to determine whether an
	explicit dereference must be inserted for use in code
	generation. Previously this was done for other expressions but
	not for entity references by themselves.  This was sufficient to
	handle uses of the aspect in container handling and iteration,
	but not more generally.

From-SVN: r279352
2019-12-13 09:04:23 +00:00
Javier Miranda 20dc266e5a [Ada] Deallocation of controlled type implementing interface types
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_disp.ads (Expand_Interface_Thunk): Adding one formal (the
	interface type).
	* exp_disp.adb (Expand_Interface_Thunk): Using the added formal
	to ensure the correct profile of the thunk generated for
	predefined primitives; in addition, the added formal is also
	used to perform a check that ensures that the controlling type
	of the thunk is the one expected by the GCC backend.
	(Make_Secondary_DT, Register_Primitive): Adding the new formal
	to the calls to Expand_Interface_Thunk.
	* exp_ch6.adb (Register_Predefined_DT_Entry): Adding the new
	formal to the call to Expand_Interface_Thunk.
	* exp_intr.adb (Expand_Unc_Deallocation): When deallocating a
	controlled type and the call to unchecked deallocation is
	performed with a pointer to one of the convered interface types,
	displace the pointer to the object to reference the base of the
	object to deallocate its memory.
	* gcc-interface/trans.c (maybe_make_gnu_thunk): Assert that the
	controlling type of the thunk is an interface type.

From-SVN: r279351
2019-12-13 09:04:18 +00:00
Bob Duff 6c9e4a1d65 [Ada] Remove Is_Available function
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* exp_attr.adb (Is_Available): Remove this function, and replace
	all calls with RTE_Available. RTE_Available will return True if
	"not Configurable_Run_Time_Mode". Remove the "???" comment.

From-SVN: r279350
2019-12-13 09:04:12 +00:00
Ed Schonberg 7f8ad8f001 [Ada] Crash on inherited private operation in child package
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch7.adb (Analyze_Package_Body_Helper): Do not call
	Declare_Inherited_Private_Subprograms on s child body: the
	required operations have already been created when analyzing the
	corresponding package declaration. This prevents a redeclaration
	of inehrited operation, and a crash when inserting the new
	operation in the current scope.

From-SVN: r279349
2019-12-13 09:04:06 +00:00
Yannick Moy 0a8ff576db [Ada] Avoid spurious errors on Global/Depends in instantiations
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
	Analyze_Global_In_Decl_Part,
	Analyze_Refined_Depends_In_Decl_Part,
	Analyze_Refined_Global_In_Decl_Part, Check_Missing_Part_Of):
	Skip redundant checking involving visibility inside
	instantiations.

From-SVN: r279348
2019-12-13 09:04:01 +00:00
Yannick Moy 2e3795d016 [Ada] Prevent inlining inside condition of while loop in GNATprove
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Call): Prevent inlining inside while loop
	conditions.
	* sem_util.adb, sem_util.ads (In_While_Loop_Condition): New
	query function.

From-SVN: r279347
2019-12-13 09:03:56 +00:00
Bob Duff e841d4d8b3 [Ada] Ada2020: Update Impunit for Ada 202X
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* impunit.ads: Add Ada_202X_Unit.
	* impunit.adb: Add a table Non_Imp_File_Names_2X analogous to
	the other tables. Add code to search this table.
	* opt.ads: Add Warn_On_Ada_202X_Compatibility flag, currently
	always True.
	* sem_ch10.adb (Analyze_With_Clause): Give a warning if an Ada
	2020 unit is with-ed when Ada_Version < Ada_2020.  Change 'if'
	to 'case': Full coverage rules rule.

From-SVN: r279346
2019-12-13 09:03:50 +00:00
Bob Duff 90366d6573 [Ada] Rtsfind: minor comment fixes
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* rtsfind.ads: Minor comment fix.

From-SVN: r279345
2019-12-13 09:03:45 +00:00
Gary Dismukes 563be3ee1d [Ada] Up-level addressing problems with private tasks and selective accept procs
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* sem_util.adb (Scope_Within): For the case of checking for a
	task type procedure, check the Implementation_Base_Type of Curr.
	(Scope_Within_Or_Same): For the case of checking for a task type
	procedure, check the Implementation_Base_Type of Curr.

From-SVN: r279344
2019-12-13 09:03:40 +00:00
Arnaud Charlet 9ea2a24d50 [Ada] Add Ada.Containers.Vectors.Generic_Parallel_Sorting to known units
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* impunit.adb (Non_Imp_File_Names_12): Add
	Ada.Containers.Vectors.Generic_Parallel_Sorting.

From-SVN: r279343
2019-12-13 09:03:34 +00:00
Justin Squirek 8daf00dd4a [Ada] Missing accessibility checks on conditionals
2019-12-13  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Allocator): Add calls to
	Check_Cond_Expr_Accessibility when a conditional expression is
	found.
	(Check_Allocator_Discrim_Accessibility_Exprs): Created to
	recursively traverse a potentially compound conditional
	expression and perform accessibility checks for each
	alternative.
	* sem_util.adb (Dynamic_Accessibility_Level): Avoid use of
	original node of the expression in question so we can handle
	dynamic accessibility in the limited case of a constant folded
	conditional expression.

From-SVN: r279342
2019-12-13 09:03:28 +00:00
Steve Baird d7c37f4549 [Ada] Implement AI12-0101
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function
	from within Expand_N_Op_Eq.Find_Equality out to immediately
	within Expand_N_Op_Eq in order to give it greater visibility.
	Add a new Typ parameter (defaulted to Empty) which, if
	non-empty, means the function will return False in the case of
	an equality op for some other type.
	* (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new
	function. Given an untagged record type, finds the corresponding
	user-defined primitive equality op (if any).  May return Empty.
	Ignores visibility.
	* (Expand_N_Op): For Ada2012 or later, check for presence of a
	user-defined primitive equality op before falling back on the
	usual predefined component-by-component comparison. If found,
	then call the user-defined op instead.

From-SVN: r279341
2019-12-13 09:03:23 +00:00
Justin Squirek 08f4f1721a [Ada] Spurious error on overriding controlled primitive
2019-12-13  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_ch6.adb (Check_Overriding_Indicator): Modify condition to
	take into account the modification of the Is_Hidden flag within
	generic instances.
	(Verify_Overriding_Indicator): Add an exception for controlled
	primitives within an instance.

From-SVN: r279340
2019-12-13 09:03:18 +00:00
Ed Schonberg b622076c56 [Ada] New flag to indicate whether aspect appears on partial view
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sinfo.ads, sinfo.adb (Aspect_On_Partial_View,
	Set_Aspect_On_Partial_View): New flag for use by SPARK, to
	indicate whether an aspect that appears on a type declaration
	applies to the partial view of that type.
	* sem_ch13.adb (Analyze_Aspect_Specification): Set new flag
	appropriately.

From-SVN: r279339
2019-12-13 09:03:02 +00:00
Andrew Pinski db0aa34fb4 Add C testcases for PR 86659
testsuite/ChangeLog:
2019-12-13  Andrew Pinski  <apinski@marvell.com>

       * gcc.c-torture/execute/pr86659-1.c: New test.
       * gcc.c-torture/execute/pr86659-2.c: New test.

From-SVN: r279338
2019-12-13 00:31:42 -08:00