Commit Graph

173540 Commits

Author SHA1 Message Date
Bob Duff
a4ada47ed0 [Ada] Correct documentation of -gnatw_C switch
2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Correct documentation of -gnatw_C switch
	* gnat_ugn.texi: Regenerate.

From-SVN: r279417
2019-12-16 10:33:31 +00:00
Joel Brobecker
5903c91cae [Ada] Reword the impact of -minimal on the debugger
2019-12-16  Joel Brobecker  <brobecker@adacore.com>

gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
	(_Switches_for_gnatbind): Reword the section explaining the
	impact of -minimal on debugging.
	* gnat_ugn.texi: Regenerate.

From-SVN: r279416
2019-12-16 10:33:27 +00:00
Gary Dismukes
f17267c88f [Ada] Typo fixes and minor reformatting
2019-12-16  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and
	minor reformatting.

From-SVN: r279415
2019-12-16 10:33:22 +00:00
Eric Botcazou
6a6ac07985 [Ada] Implement RM C.6(19) clause entirely in the front-end
2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate.
	(Expand_Actuals): Use it to decide whether to add call by copy
	code as per the RM C.6(19) clause.
	* fe.h (Is_Atomic_Object): Remove.
	(Is_Volatile_Object): Likewise.
	* sem_util.ads (Is_Atomic_Object): Remove WARNING note.
	(Is_Volatile_Object): Likewise.
	* gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete.
	(Call_to_gnu): Do not implement the  RM C.6(19) clause.

From-SVN: r279414
2019-12-16 10:33:17 +00:00
Ghjuvan Lacambre
4efe11c6bc [Ada] Validate_Access_Subprogram_Instance: check if not null types match
2019-12-16  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* sem_ch12.adb (Validate_Access_Subprogram_Instance): Add
	Can_Never_Be_Null checks.

From-SVN: r279413
2019-12-16 10:33:13 +00:00
Eric Botcazou
d6c7e020cf [Ada] Implement new legality rules introduced in C.6(13) by AI12-0128
2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Document
	extension of the no-aliasing rule to any subcomponent.
	* freeze.adb (Freeze_Object_Declaration): Small comment tweak.
	(Freeze_Record_Type): Do not deal with delayed aspect
	specifications for components here but...
	(Freeze_Entity): ...here instead.
	* sem_ch12.adb (Instantiate_Object): Improve wording of errors
	given for legality rules in C.6(12) and implement the new rule
	in C.6(13).
	* sem_res.adb (Resolve_Actuals): Likewise.
	* sem_prag.adb (Check_Atomic_VFA): New procedure implementing
	the new legality rules in C.6(13).
	(Process_Atomic_Independent_Shared_Volatile): Call
	Check_Atomic_VFA to check the legality rules.  Factor out code
	marking types into...
	(Mark_Type): ...this new procedure.
	(Check_VFA_Conflicts): Do not check the legality rules here.
	(Pragma_Atomic_Components): Call Check_Atomic_VFA on component
	type.
	* sem_util.ads (Is_Subcomponent_Of_Atomic_Object): Declare.
	* sem_util.adb (Is_Subcomponent_Of_Atomic_Object): New
	predicate.
	* gnat_rm.texi: Regenerate.

From-SVN: r279412
2019-12-16 10:33:08 +00:00
Andreas Krebbel
070fa48b0a Fix PR92950: Wrong code emitted for movv1qi
The backend emits 16 bit memory loads for single element character
vector.  As a result the character will not be right justified in the
GPR.

gcc/ChangeLog:

2019-12-16  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/92950
	* config/s390/vector.md ("mov<mode>" for V_8): Replace lh, lhy,
	and lhrl with llc.

gcc/testsuite/ChangeLog:

2019-12-16  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/92950
	* gcc.target/s390/vector/pr92950.c: New test.

From-SVN: r279410
2019-12-16 08:03:28 +00:00
Andrew Pinski
438fbf6303 Add a couple int128_t bit-field testcases.
2019-12-15  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/compile/bitfield-1.c: New test.
        * gcc.c-torture/compile/bitfield-endian-1.c: New test.
        * gcc.c-torture/compile/bitfield-endian-2.c: New test.

From-SVN: r279409
2019-12-15 19:43:19 -08:00
GCC Administrator
0f1374e98b Daily bump.
From-SVN: r279408
2019-12-16 00:16:20 +00:00
GCC Administrator
3d3a0f364b Daily bump.
From-SVN: r279402
2019-12-15 00:16:13 +00:00
Jakub Jelinek
937a778ea3 re PR preprocessor/92919 (invalid memory access in wide_str_to_charconst when running ucn2.C testcase (caught by hwasan))
PR preprocessor/92919
	* charset.c (wide_str_to_charconst): If str contains just the
	NUL terminator, punt quietly.

From-SVN: r279399
2019-12-14 23:18:53 +01:00
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