diff options
author | Martin Liska <mliska@suse.cz> | 2022-01-12 13:34:27 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-01-12 13:34:27 +0100 |
commit | 6ab1963fc8f70a07dc8566f8b6ad317b40ab379d (patch) | |
tree | ea1dbe49ef56bcc858c0ee042ba776d70fc5b42c /gcc | |
parent | 013d1573ab19ea3e168441c71b539ba3df6310af (diff) | |
parent | 03a1a86b5ee40d4e2402516cbcdf39d981e433b3 (diff) | |
download | gcc-6ab1963fc8f70a07dc8566f8b6ad317b40ab379d.zip gcc-6ab1963fc8f70a07dc8566f8b6ad317b40ab379d.tar.gz gcc-6ab1963fc8f70a07dc8566f8b6ad317b40ab379d.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc')
2542 files changed, 23471 insertions, 9331 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8b898a..f1b9150 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,733 @@ +2022-01-11 qing zhao <qing.zhao@oracle.com> + + * gimplify.c (gimple_add_init_for_auto_var): Delete the 3rd argument. + Change the 3rd argument of function .DEFERRED_INIT to the name of the + decl. + (gimplify_decl_expr): Delete the 3rd argument when call + gimple_add_init_for_auto_var. + * internal-fn.c (expand_DEFERRED_INIT): Update comments to reflect + the 3rd argument change of function .DEFERRED_INIT. + * tree-cfg.c (verify_gimple_call): Update comments and verification + to reflect the 3rd argument change of function .DEFERRED_INIT. + * tree-sra.c (generate_subtree_deferred_init): Delete the 3rd argument. + (sra_modify_deferred_init): Change the 3rd argument of function + .DEFERRED_INIT to the name of the decl. + +2022-01-11 Thomas Koenig <tkoenig@gcc.gnu.org> + + * flag-types.h (enum gfc_convert): Add flags for + conversion. + +2022-01-11 Michael Meissner <meissner@the-meissners.org> + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove + checks for only C/C++ front ends before allowing the long double + format to change without a warning. + +2022-01-11 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/103974 + * ira-int.h (ira_subloop_allocnos_can_differ_p): Take an + extra argument, default true, that says whether old-reload + targets should be excluded. + * ira-color.c (color_pass): Pass false. + +2022-01-11 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * config/i386/mmx.md (vcond<mode><mode>): + Use VI_16_32 mode iterator. Enable for TARGET_SSE4_1. + (vcondu<mode><mode>): Ditto. + (vcond_mask_<mode><mode>): Ditto. + (mmx_pblendvb_v8qi): Rename from mmx_pblendvb64. + (mmx_pblendvb_<mode>): Rename from mmx_pblendvb32. + Use VI_16_32 mode iterator. + * config/i386/i386-expand.c (ix86_expand_sse_movcc): + Update for rename. Handle V2QImode. + (expand_vec_perm_blend): Update for rename. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/101597 + * tree.def (OBJ_TYPE_REF): Document type of OBJ_TYPE_REF_TOKEN. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * tree-object-size.c (size_valid_p): New function. + (size_for_offset): Remove OFFSET constness assertion. + (addr_object_size): Build dynamic expressions for object + sizes and use size_valid_p to decide if it is valid for the + given OBJECT_SIZE_TYPE. + (compute_builtin_object_size): Allow dynamic offsets when + computing size at O0. + (call_object_size): Call size_valid_p. + (plus_stmt_object_size): Allow non-constant offset and use + size_valid_p to decide if it is valid for the given + OBJECT_SIZE_TYPE. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * tree-object-size.c (alloc_object_size): Make and return + non-constant size expression. + (call_object_size): Return expression or unknown based on + whether dynamic object size is requested. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * tree-object-size.c: Include tree-dfa.h. + (parm_object_size): New function. + (collect_object_sizes_for): Call it. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * builtins.c (fold_builtin_object_size): Adjust for dynamic size + expressions. + * tree-object-size.c: Include gimplify-me.h. + (struct object_size_info): New member UNKNOWNS. + (size_initval_p, size_usable_p, object_sizes_get_raw): New + functions. + (object_sizes_get): Return suitable gimple variable for + object size. + (bundle_sizes): New function. + (object_sizes_set): Use it and handle dynamic object size + expressions. + (object_sizes_set_temp): New function. + (size_for_offset): Adjust for dynamic size expressions. + (emit_phi_nodes, propagate_unknowns, gimplify_size_expressions): + New functions. + (compute_builtin_object_size): Call gimplify_size_expressions + for OST_DYNAMIC. + (dynamic_object_size): New function. + (cond_expr_object_size): Use it. + (phi_dynamic_object_size): New function. + (collect_object_sizes_for): Call it for OST_DYNAMIC. Adjust to + accommodate dynamic object sizes. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/103961 + * tree-object-size.c (plus_stmt_object_size): Always avoid + computing offset for -1 size. + +2022-01-11 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/103821 + * range-op.cc (range_operator::fold_range): Only do precise ranges + when there are not too many subranges. + +2022-01-11 Richard Sandiford <richard.sandiford@arm.com> + + * ira-costs.c (ira_tune_allocno_costs): Fix missing rclass + definition in IRA_HARD_REGNO_ADD_COST_MULTIPLIER code. + +2022-01-11 Roger Sayle <roger@nextmovesoftware.com> + Richard Biener <rguenther@suse.de> + + * tree-ssa-math-opts.c (struct widen_mul_stats): Add a + highpart_mults_inserted field. + (convert_mult_to_highpart): New function to convert right shift + of a widening multiply into a MULT_HIGHPART_EXPR. + (math_opts_dom_walker::after_dom_children) [RSHIFT_EXPR]: + Call new convert_mult_to_highpart function. + (pass_optimize_widening_mul::execute): Add a statistics counter + for tracking "highpart multiplications inserted" events. + +2022-01-11 Xionghu Luo <luoxhu@linux.ibm.com> + + PR target/102239 + * config/rs6000/rs6000-protos.h (rs6000_is_valid_rotate_dot_mask): New + declare. + * config/rs6000/rs6000.c (rs6000_is_valid_rotate_dot_mask): New + function. + * config/rs6000/rs6000.md (*branch_anddi3_dot): New. + +2022-01-11 Olivier Hainque <hainque@adacore.com> + + * gcc.c (driver_handle_option): State --sysroot as + validated. + +2022-01-11 Kewen Lin <linkw@linux.ibm.com> + + * config/rs6000/rs6000.c (rs6000_disable_incompatible_switches): Remove + useless related to option -mno-power10. + +2022-01-11 Haochen Jiang <haochen.jiang@intel.com> + + PR target/53652 + * config/i386/sse.md (*andnot<mode>3): Extend predicate of + operands[1] from register_operand to vector_operand. + +2022-01-10 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * config/i386/i386-expand.c (ix86_expand_int_sse_cmp): + Handle V2QImode. + * config/i386/mmx.md (<sat_plusminus:insn><mode>3): + Use VI1_16_32 mode iterator. + (*eq<mode>3): Ditto. + (*gt<mode>3): Ditto. + (*xop_maskcmp<mode>3): Ditto. + (*xop_maskcmp_uns<mode>3): Ditto. + (vec_cmp<mode><mode>): Ditto. + (vec_cmpu<mode><mode>): Ditto. + +2022-01-10 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103948 + * tree-vect-generic.c (expand_vector_condition): Return true if + all ones vector is returned for true, all zeros vector for false + and the target defines corresponding vec_cmp{,u}MN named RTX pattern. + +2022-01-10 Paul A. Clarke <pc@us.ibm.com> + + * config/rs6000/smmintrin.h (_mm_blendv_epi8): Use vec_blendv + when _ARCH_PWR10. Use signed types. + (_mm_blendv_ps): Use vec_blendv when _ARCH_PWR10. + (_mm_blendv_pd): Likewise. + +2022-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com> + + * tree-vectorizer.c (better_epilogue_loop_than_p): Round factors up for + epilogue costing. + * tree-vect-loop.c (vect_analyze_loop): Re-analyze all modes for + epilogues, unless we are guaranteed that we can't have partial vectors. + * genopinit.c: (partial_vectors_supported): Generate new function. + +2022-01-10 Jakub Jelinek <jakub@redhat.com> + + PR target/102024 + * config/i386/i386.c (classify_argument): Add zero_width_bitfields + argument, when seeing DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD bitfields, + always ignore them, when seeing other zero sized bitfields, either + set zero_width_bitfields to 1 and ignore it or if equal to 2 process + it. Pass it to recursive calls. Add wrapper + with old arguments and diagnose ABI differences for C structures + with zero width bitfields. Formatting fixes. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-int.h (ira_soft_conflict): Declare. + * ira-color.c (max_soft_conflict_loop_depth): New constant. + (ira_soft_conflict): New function. + (spill_soft_conflicts): Likewise. + (assign_hard_reg): Use them to handle the case described by + the comment above ira_soft_conflict. + (improve_allocation): Likewise. + * ira.c (check_allocation): Allow allocnos with "soft" conflicts + to share the same register. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-int.h (ira_caller_save_cost): New function. + (ira_caller_save_loop_spill_p): Likewise. + * ira-build.c (ira_propagate_hard_reg_costs): Test whether it is + cheaper to spill a call-clobbered register throughout a loop rather + than spill it around each individual call. If so, treat all + call-clobbered registers as conflicts and... + (propagate_allocno_info): ...do not propagate call information + from the child to the parent. + * ira-color.c (move_spill_restore): Update accordingly. + * ira-costs.c (ira_tune_allocno_costs): Use ira_caller_save_cost. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-int.h (ira_allocno::might_conflict_with_parent_p): New field. + (ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P): New macro. + (ira_single_region_allocno_p): New function. + (ira_total_conflict_hard_regs): Likewise. + * ira-build.c (ira_create_allocno): Initialize + ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P. + (ira_propagate_hard_reg_costs): New function. + (propagate_allocno_info): Use it. Try to avoid propagating + hard register conflicts to parent allocnos if we can handle + the conflicts by spilling instead. Limit the propagated + register costs to the cost of spilling throughout the child loop. + * ira-color.c (color_pass): Use ira_single_region_allocno_p to + test whether a child and parent allocno can share the same + register. + (move_spill_restore): Adjust for the new behavior of + propagate_allocno_info. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-int.h (ira_subloop_allocnos_can_differ_p): New function, + extracted from... + * ira-color.c (color_pass): ...here. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-color.c (color_pass): Add comments to describe the spill costs. + (move_spill_restore): Likewise. Fix reversed calculation. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + PR rtl-optimization/98782 + * ira-int.h (ira_loop_border_costs): New class. + * ira-color.c (ira_loop_border_costs::ira_loop_border_costs): + New constructor. + (calculate_allocno_spill_cost): Use ira_loop_border_costs. + (color_pass): Likewise. + (move_spill_restore): Likewise. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + PR target/103465 + * coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET. + +2022-01-10 Richard Biener <rguenther@suse.de> + + PR tree-optimization/100359 + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): + Allow non-growing peeling with !allow_peel and UL_ALL. + +2022-01-08 Roger Sayle <roger@nextmovesoftware.com> + + * config/i386/i386-expand.c (ix86_expand_vector_move): Add + special case for TImode to V1TImode moves, going via V2DImode. + +2022-01-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/89074 + * match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC + simplification. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * doc/analyzer.texi + (Special Functions for Debugging the Analyzer): Document + __analyzer_dump_escaped. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * doc/analyzer.texi (Other Debugging Techniques): Document + region::is_named_decl_p. + +2022-01-07 Andrew Pinski <apinski@marvell.com> + + PR target/102941 + * config/arm/aarch-common.c (arm_md_asm_adjust): + Use a temp if !REG_P. + +2022-01-07 Uroš Bizjak <ubizjak@gmail.com> + + * config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute. + (*movv2qi_internal): Remve sse2 requirement for alternatives 4,5. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + PR rtl-optimization/103750 + * fwprop.c (forward_propagate_into): Allow propagations from + inner loop to outer loop. + +2022-01-07 Roger Sayle <roger@nextmovesoftware.com> + + * config/nvptx/nvptx.md (*cnot<mode>2): New define_insn. + +2022-01-07 Haochen Gui <guihaoc@gcc.gnu.org> + + * config/rs6000/rs6000.md (rs6000_mffscrni): Define. + (rs6000_set_fpscr_rn): Change the type of operand[0] from DI to SI. + Call gen_rs6000_mffscrni when operand[0] is a const_0_to_3_operand. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + * config/i386/sse.md + (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Extend to + UNSPEC_PCMP_UNSIGNED. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + PR target/103753 + * config/i386/i386-expand.c (ix86_expand_vector_set): Not use + gen_avx2_pblendph_1 when elt == 0. + * config/i386/sse.md (avx2_pblendph): Rename to .. + (avx2_pblend<ssemodesuffix>_1).. this, and extend to V16HI. + (*avx2_pblendw): Rename to .. + (*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF. + (avx2_pblendw): Rename to .. + (*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF. + (blendsuf): Removed. + (sse4_1_pblend<blendsuf>): Renamed to .. + (sse4_1_pblend<ssemodesuffix>): .. this. + +2022-01-06 H.J. Lu <hjl.tools@gmail.com> + + PR target/103925 + * config/i386/i386.c (ix86_output_indirect_function_return): + Generate INT3 after indirect jmp for -mharden-sls=indirect-jmp. + +2022-01-06 H.J. Lu <hjl.tools@gmail.com> + + PR target/102952 + * config/i386/i386-opts.h (harden_sls): Replace + harden_sls_indirect_branch with harden_sls_indirect_jmp. + * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): + Likewise. + (ix86_output_indirect_jmp): Likewise. + (ix86_output_call_insn): Likewise. + * config/i386/i386.opt: Replace indirect-branch with + indirect-jmp. Replace harden_sls_indirect_branch with + harden_sls_indirect_jmp. + * doc/invoke.texi (-harden-sls=): Replace indirect-branch with + indirect-jmp. + +2022-01-06 Uroš Bizjak <ubizjak@gmail.com> + + * config/i386/i386.c (ix86_output_ssemov) <MODE_DI>: + Add %q modifier for operands in general registers. + <MODE_SI>: Add %q modifier for operands in general registers. + * config/i386/i386.md (*movhi_internal): Change type attribute of + xmm-gpr interunit alternatives 9,10 to ssemov and mode attribute + to SImode for non-avx512fp16 targets. + (*movhf_internal): Ditto for xmm-gpr interunit alternatives 6,8. + * config/i386/mmx.md (*movv2qi_internal): + Ditto for xmm-gpr interunit alternatives 8,9. + +2022-01-06 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.c (riscv_implied_info): Add + vector extensions. + (riscv_ext_version_table): Add version info for vector extensions. + (riscv_ext_flag_table): Add option mask for vector extensions. + * config/riscv/riscv-opts.h (MASK_VECTOR_EEW_32): New. + (MASK_VECTOR_EEW_64): New. + (MASK_VECTOR_EEW_FP_32): New. + (MASK_VECTOR_EEW_FP_64): New. + (MASK_ZVL32B): New. + (MASK_ZVL64B): New. + (MASK_ZVL128B): New. + (MASK_ZVL256B): New. + (MASK_ZVL512B): New. + (MASK_ZVL1024B): New. + (MASK_ZVL2048B): New. + (MASK_ZVL4096B): New. + (MASK_ZVL8192B): New. + (MASK_ZVL16384B): New. + (MASK_ZVL32768B): New. + (MASK_ZVL65536B): New. + (TARGET_ZVL32B): New. + (TARGET_ZVL64B): New. + (TARGET_ZVL128B): New. + (TARGET_ZVL256B): New. + (TARGET_ZVL512B): New. + (TARGET_ZVL1024B): New. + (TARGET_ZVL2048B): New. + (TARGET_ZVL4096B): New. + (TARGET_ZVL8192B): New. + (TARGET_ZVL16384B): New. + (TARGET_ZVL32768B): New. + (TARGET_ZVL65536B): New. + * config/riscv/riscv.opt (Mask(VECTOR)): New. + (riscv_vector_eew_flags): New. + (riscv_zvl_flags): New. + +2022-01-06 Kito Cheng <kito.cheng@sifive.com> + + * common/config/riscv/riscv-common.c + (riscv_subset_list::parse_multiletter_ext): Allow ext. name has + digit. + +2022-01-06 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/103899 + * expr.c (expand_expr_real_1): Add a workaround for bogus uninit + warning by moving context variable to the only spot where it is used + and moving gcc_assert into if body. + +2022-01-06 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/103908 + * ifcvt.c (bb_valid_for_noce_process_p): Punt on bbs ending with + asm goto. + +2022-01-05 Bill Schmidt <wschmidt@linux.ibm.com> + + PR target/103622 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Skip over instances with undefined function types. + +2022-01-05 Andrew Pinski <apinski@marvell.com> + + PR target/103910 + * config/i386/i386.h (x86_mfence): Mark with GTY. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * config/i386/mmx.md (VI_16_32): New mode iterator. + (VI1_16_32): Ditto. + (mmxvecsize): Handle V2QI mode. + (<smaxmin:code><mode>3): Rename from <smaxmin:code>v4qi3. + Use VI1_16_32 mode iterator. + (<umaxmin:code><mode>3): Rename from <umaxmin:code>v4qi3. + Use VI1_16_32 mode iterator. + (abs<mode>2): Use VI_16_32 mode iterator. + (uavgv2qi3_ceil): New insn pattern. + +2022-01-05 Martin Sebor <msebor@redhat.com> + + * gimple-ssa-warn-access.cc (pass_waccess::maybe_warn_memmodel): Use + %qs to avoid -Wformat-diag. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103915 + * config/i386/mmx.md (one_cmplv2qi2): Change + alternatives 1,2 type from sselog to sselog1. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103905 + * config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix number of + narrow mode remapped elements for !one_operand_p case. + +2022-01-05 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103816 + * tree-vect-data-refs.c (vect_analyze_group_access_1): Also + check DR_GROUP_GAP compute for overflow and representability. + +2022-01-05 Jakub Jelinek <jakub@redhat.com> + + PR fortran/103691 + * gimple-fold.c (fold_stmt_1): Don't call maybe_fold_reference + for DEBUG stmts with ADDR_EXPR gimple_debug_bind_get_value, + it can do unwanted rhs folding like &a[0] into &2.0 etc. + +2022-01-05 Kewen Lin <linkw@linux.ibm.com> + + PR ipa/102059 + * config/rs6000/rs6000.c (TARGET_NEED_IPA_FN_TARGET_INFO): New macro. + (TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise. + (rs6000_need_ipa_fn_target_info): New function. + (rs6000_update_ipa_fn_target_info): Likewise. + (rs6000_can_inline_p): Adjust for ipa function summary target info. + * config/rs6000/rs6000.h (RS6000_FN_TARGET_INFO_HTM): New macro. + * ipa-fnsummary.c (ipa_dump_fn_summary): Adjust for ipa function + summary target info. + (analyze_function_body): Adjust for ipa function summary target info + and call hook rs6000_need_ipa_fn_target_info and + rs6000_update_ipa_fn_target_info. + (ipa_merge_fn_summary_after_inlining): Adjust for ipa function summary + target info. + (inline_read_section): Likewise. + (ipa_fn_summary_write): Likewise. + * ipa-fnsummary.h (ipa_fn_summary::target_info): New member. + * doc/tm.texi: Regenerate. + * doc/tm.texi.in (TARGET_UPDATE_IPA_FN_TARGET_INFO): Document new hook. + (TARGET_NEED_IPA_FN_TARGET_INFO): Likewise. + * target.def (update_ipa_fn_target_info): New hook. + (need_ipa_fn_target_info): Likewise. + * targhooks.c (default_need_ipa_fn_target_info): New function. + (default_update_ipa_fn_target_info): Likewise. + * targhooks.h (default_update_ipa_fn_target_info): New declare. + (default_need_ipa_fn_target_info): Likewise. + +2022-01-04 Martin Sebor <msebor@redhat.com> + + PR middle-end/99612 + * builtins.c (get_memmodel): Move warning code to + gimple-ssa-warn-access.cc. + (expand_builtin_atomic_compare_exchange): Same. + (expand_ifn_atomic_compare_exchange): Same. + (expand_builtin_atomic_load): Same. + (expand_builtin_atomic_store): Same. + (expand_builtin_atomic_clear): Same. + * doc/extend.texi (__atomic_exchange_n): Update valid memory + models. + * gimple-ssa-warn-access.cc (memmodel_to_uhwi): New function. + (struct memmodel_pair): New struct. + (memmodel_name): New function. + (pass_waccess::maybe_warn_memmodel): New function. + (pass_waccess::check_atomic_memmodel): New function. + (pass_waccess::check_atomic_builtin): Handle memory model. + * input.c (expansion_point_location_if_in_system_header): Return + original location if expansion location is in a system header. + +2022-01-04 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * config/i386/mmx.md (one_cmplv2qi3): New insn pattern. + (one_cmplv2qi3 splitters): New post-reload splitters. + (*andnotv2qi3): New insn pattern. + (andnotv2qi3 splitters): New post-reload splitters. + (<any_logic:code>v2qi3): New insn pattern. + (<any_logic:insn>v2qi3 splitters): New post-reload splitters. + +2022-01-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103800 + * tree-vect-loop.c (vectorizable_phi): Remove assert and + expand comment. + +2022-01-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103690 + * tree-pass.h (tail_merge_optimize): Adjust. + * tree-ssa-tail-merge.c (tail_merge_optimize): Pass in whether + to re-split critical edges, move CFG cleanup ... + * tree-ssa-pre.c (pass_pre::execute): ... here, before + simple_dce_from_worklist and delay freeing inserted_exprs from + ... + (fini_pre): .. here. + +2022-01-04 Roger Sayle <roger@nextmovesoftware.com> + + * config/nvptx/nvptx.h (STORE_FLAG_VALUE): Change to 1. + * config/nvptx/nvptx.md (movbi): Use P1 constraint for true. + (setcc_from_bi): Remove SImode specific pattern. + (setcc<mode>_from_bi): Provide more general HSDIM pattern. + (extendbi<mode>2, zeroextendbi<mode>2): Provide instructions + for sign- and zero-extending BImode predicates to integers. + (setcc_int<mode>): Remove previous (-1-based) instructions. + (cstorebi4): Remove BImode to SImode specific expander. + (cstore<mode>4): Fix indentation. Expand using setccsi_from_bi. + (cstore<mode>4): For both integer and floating point modes. + +2022-01-04 Olivier Hainque <hainque@adacore.com> + + * gcc.c (driver_handle_option): do_save --sysroot. + +2022-01-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103864 + PR tree-optimization/103544 + * tree-vect-slp.c (vect_analyze_slp_instance): Exclude + reductions wrapped in conversions from SLP handling. + (vect_analyze_slp): Revert PR103544 change. + +2022-01-04 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/103860 + * shrink-wrap.c (try_shrink_wrapping): Don't call can_get_prologue + uselessly for blocks for which it has been called already. + +2022-01-04 Cui,Lili <lili.cui@intel.com> + + * common/config/i386/cpuinfo.h (get_intel_cpu): Add new model values + to Alderlake and Rocketlake. + +2022-01-04 Chung-Lin Tang <cltang@codesourcery.com> + + PR middle-end/103643 + * gimplify.c (gimplify_omp_affinity): Adjust gimplify_expr of entire + OMP_CLAUSE_DECL to use 'is_gimple_lvalue, fb_lvalue' + +2022-01-04 liuhongt <hongtao.liu@intel.com> + + PR target/103895 + * config/i386/sse.md (*bit_and_float_vector_all_ones): + Force_reg operand 1 to avoid ICE. + +2022-01-04 Jason Merrill <jason@redhat.com> + + * tree-pretty-print.c (do_niy): Add spc parameter. + (NIY): Pass it. + (print_call_name): Add spc local variable. + +2022-01-03 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103894 + * config/i386/mmx.md (mov<V_32:mode>): Remove TARGET_SSE2 constraint. + (mov<V_32:mode>_internal): Ditto. + (*push<V_32:mode>_rex64): Ditto. + (movmisalign<V_32:mode>): Ditto. + (*push<V_32:mode>_rex64 splitter): Enable for + TARGET_64BIT && TARGET_SSE. + (*push<V_32:mode>2): Remove insn pattern. + +2022-01-03 Andrew Pinski <apinski@marvell.com> + + PR c/33193 + * doc/extend.texi: Extend the documentation about Complex + types for casting and also rewrite the __real__/__imag__ + expression portion to use tables. + Move __builtin_complex to the Complex type section. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR target/98737 + * internal-fn.def (ATOMIC_ADD_FETCH_CMP_0, ATOMIC_SUB_FETCH_CMP_0, + ATOMIC_AND_FETCH_CMP_0, ATOMIC_OR_FETCH_CMP_0, ATOMIC_XOR_FETCH_CMP_0): + New internal fns. + * internal-fn.h (ATOMIC_OP_FETCH_CMP_0_EQ, ATOMIC_OP_FETCH_CMP_0_NE, + ATOMIC_OP_FETCH_CMP_0_LT, ATOMIC_OP_FETCH_CMP_0_LE, + ATOMIC_OP_FETCH_CMP_0_GT, ATOMIC_OP_FETCH_CMP_0_GE): New enumerators. + * internal-fn.c (expand_ATOMIC_ADD_FETCH_CMP_0, + expand_ATOMIC_SUB_FETCH_CMP_0, expand_ATOMIC_AND_FETCH_CMP_0, + expand_ATOMIC_OR_FETCH_CMP_0, expand_ATOMIC_XOR_FETCH_CMP_0): New + functions. + * optabs.def (atomic_add_fetch_cmp_0_optab, + atomic_sub_fetch_cmp_0_optab, atomic_and_fetch_cmp_0_optab, + atomic_or_fetch_cmp_0_optab, atomic_xor_fetch_cmp_0_optab): New + direct optabs. + * builtins.h (expand_ifn_atomic_op_fetch_cmp_0): Declare. + * builtins.c (expand_ifn_atomic_op_fetch_cmp_0): New function. + * tree-ssa-ccp.c: Include internal-fn.h. + (optimize_atomic_bit_test_and): Add . before internal fn call + in function comment. Change return type from void to bool and + return true only if successfully replaced. + (optimize_atomic_op_fetch_cmp_0): New function. + (pass_fold_builtins::execute): Use optimize_atomic_op_fetch_cmp_0 + for BUILT_IN_ATOMIC_{ADD,SUB,AND,OR,XOR}_FETCH_{1,2,4,8,16} and + BUILT_IN_SYNC_{ADD,SUB,AND,OR,XOR}_AND_FETCH_{1,2,4,8,16}, + for *XOR* ones only if optimize_atomic_bit_test_and failed. + * config/i386/sync.md (atomic_<plusminus_mnemonic>_fetch_cmp_0<mode>, + atomic_<logic>_fetch_cmp_0<mode>): New define_expand patterns. + (atomic_add_fetch_cmp_0<mode>_1, atomic_sub_fetch_cmp_0<mode>_1, + atomic_<logic>_fetch_cmp_0<mode>_1): New define_insn patterns. + * doc/md.texi (atomic_add_fetch_cmp_0<mode>, + atomic_sub_fetch_cmp_0<mode>, atomic_and_fetch_cmp_0<mode>, + atomic_or_fetch_cmp_0<mode>, atomic_xor_fetch_cmp_0<mode>): Document + new named patterns. + +2022-01-03 Richard Biener <rguenther@suse.de> + + PR middle-end/103851 + * tree-cfg.c (move_sese_region_to_fn): Always release SSA names. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/94716 + * symtab.c: Include fold-const.h. + (symtab_node::equal_address_to): If folding_initializer is true, + handle it like memory_accessed. Simplify. + +2022-01-03 Martin Liska <mliska@suse.cz> + + * doc/extend.texi: Use ; for function declarations. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/103600 + * symtab.c (symtab_node::equal_address_to): Return 0 if one of + VAR_DECLs has "non overlapping" attribute and rs1 != rs2. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c (print_version): Ditto. + * gcov.c (print_version): Ditto. + * gcov-tool.c (print_version): Ditto. + * gengtype.c (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + 2022-01-02 Uroš Bizjak <ubizjak@gmail.com> PR target/103861 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 736fe92..c163224 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20220103 +20220112 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3a4f03c..dc9d9ea 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,3463 @@ +2022-01-11 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Relax a + little the assertion on designated types of pointer types. + +2022-01-11 Justin Squirek <squirek@adacore.com> + + * sem_ch8.adb (Nvis_Messages): Add generic instance name to + error message. + +2022-01-11 Etienne Servais <servais@adacore.com> + + * par-ch6.adb (Scan_Body_Or_Expression_Function): Accept left + bracket as token to open an expression function. + +2022-01-11 Justin Squirek <squirek@adacore.com> + + * sem_warn.adb (Check_References): Add call to Has_Task instead + of checking component type. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_util.ads (Insert_Declaration): Remove spec. + * exp_util.adb (Insert_Declaration): Remove body. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch4.adb (Expand_N_Expression_With_Actions): Avoid + redundant check. + * exp_ch5.adb (Expand_N_If_Statement): Likewise. + * exp_ch7.adb (Process_Declarations): Likewise. + * sem_elab.adb (Freeze_Node_Location): Likewise. + * exp_util.adb (Insert_Actions): Likewise. + (Is_OK_PF_Pragma): Likewise. + (Requires_Cleanup_Actions): Remove early exit; ordinary + processing path will similarly do nothing. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * snames.ads-tmpl: Restore Name_Rpc. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * sem_ch4.adb (Analyze_Allocator): Move DECLARE block inside IF + statement; refill code and comments. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * sem_ch4.adb (Analyze_Allocator): Fix comment. + * sem_eval.ads (Compile-Time Known Values): Likewise. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * snames.ads-tmpl: Remove unreferenced names. + +2022-01-11 Yannick Moy <moy@adacore.com> + + * libgnat/s-aridou.adb (Double_Divide): Adjust proof of lemma + Prove_Signs, call lemma for commutation of Big and + multiplication. + (Multiply_With_Ovflo_Check): Adjust postcondition of + Prove_Pos_Int. + (Scaled_Divide): Explicit commutation in the proof of lemma + Prove_Multiplication, add new lemma Prove_Shift_Progress for + congruence property that is not proved in a larger context, add + assertions at the end of the loop to state loop invariant + properties. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Remove spec. + * sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Remove body. + +2022-01-11 Yannick Moy <moy@adacore.com> + + * libgnat/a-strfix.adb (Insert, Overwrite): Add assertions. + +2022-01-11 Arnaud Charlet <charlet@adacore.com> + + PR ada/79724 + * osint.adb (Program_Name): Fix handling of suffixes. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch4.adb (Size_In_Storage_Elements): Remove unnecessary + DECLARE block; refill code and comments. + +2022-01-11 Eric Botcazou <ebotcazou@adacore.com> + + * sem_ch3.adb (Analyze_Subtype_Declaration): In the case of an array + copy Packed_Array_Impl_Type manually here. + (Copy_Array_Subtype_Attributes): Do not copy it here. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch7.adb (Set_Block_Elab_Proc, Unnest_Block, Unnest_Loop, + Unnest_Statement_List): Simplify with Make_Temporary. + * exp_put_image.adb (Build_Image_Call): Likewise. + * inline.adb (Generate_Subprogram_Body): Likewise. + * sem_ch13.adb (Build_Predicate_Functions): Likewise. + * sem_util.adb (New_Copy_Separate_List): Likewise. + +2022-01-11 Etienne Servais <servais@adacore.com> + + * sem_ch3.adb (Check_Dynamic_Object): Swap check order. + +2022-01-11 Yannick Moy <moy@adacore.com> + + * libgnat/s-casuti.adb: Add ghost code. + * libgnat/s-casuti.ads: Add contracts. + +2022-01-11 Claire Dross <dross@adacore.com> + + * libgnat/a-tiinau.ads: Use a procedure for the Scan parameter + instead of a function with side-effects. + * libgnat/a-tiinau.adb: Idem. + * libgnat/a-wtinau.ads: Idem. + * libgnat/a-wtinau.adb: Idem. + * libgnat/a-ztinau.ads: Idem. + * libgnat/a-ztinau.adb: Idem. + * libgnat/s-valint.ads: Change the function with side-effects + Scan_Integer into a procedure + * libgnat/s-vallli.ads: Idem. + * libgnat/s-valllli.ads: Idem. + * libgnat/s-vallllu.ads: Add SPARK_Mode and pragma to ignore + assertions in instance. + * libgnat/s-valllu.ads: Idem. + * libgnat/s-valuns.ads: Idem. + * libgnat/s-valuei.ads: Use a procedure for the + Scan_Raw_Unsigned parameter instead of a function with + side-effects and change the function with side-effects + Scan_Integer into a procedure. + * libgnat/s-valuei.adb: Idem. + * libgnat/s-valuti.ads: Introduce a ghost function that scans an + exponent and complete the postcondition of Scan_Exponent to also + describe the value of Ptr after the call. Fix the postcondition + of Scan_Underscore. Simplify the definition of + Scan_Natural_Ghost. + * libgnat/s-valuti.adb: Idem. + * libgnat/s-valboo.ads, libgnat/s-valboo.adb: Update calls to + First_Non_Space_Ghost. + * libgnat/s-valueu.ads: Add functional contracts. + * libgnat/s-valueu.adb: Idem. + +2022-01-11 Yannick Moy <moy@adacore.com> + + * libgnat/s-expmod.adb (Exp_Modular): Add assertions. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Error_Msg_CRT): Build message with string + concatenation; it is slightly repetitive but much easier to + read. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch11.adb (Expand_N_Exception_Declaration): Remove explicit + initialization of the exceptF object. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * par-ch3.adb (P_Array_Type_Definition): Use + Error_Msg_GNAT_Extension. + +2022-01-11 Gary Dismukes <dismukes@adacore.com> + + * sem_disp.adb (Check_Controlling_Type): Add test for the case + where Subp is a subprogram associated with a protected + subprogram and return Empty, unless Tagged_Type is the + corresponding record type of the protected type. + +2022-01-11 Yannick Moy <moy@adacore.com> + + * libgnat/s-veboop.adb: Add ghost code for proof. + * libgnat/s-veboop.ads: Add specification. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * exp_aggr.adb, exp_attr.adb, exp_ch3.adb, exp_ch7.adb, + exp_dist.adb, exp_util.adb, freeze.adb, frontend.adb, + inline.adb, itypes.adb, lib-load.adb, lib-xref.adb, + libgnat/a-cfhase.adb, libgnat/a-cforse.adb, + libgnat/a-chtgbo.adb, libgnat/a-crdlli.adb, + libgnat/a-except.adb, libgnat/a-strfix.adb, + libgnat/a-textio.adb, libgnat/a-tienau.adb, + libgnat/a-tigeau.adb, libgnat/a-witeio.adb, + libgnat/a-wtenau.adb, libgnat/a-wtgeau.adb, + libgnat/a-ztenau.adb, libgnat/a-ztexio.adb, + libgnat/a-ztgeau.adb, libgnat/g-comlin.adb, + libgnat/g-debpoo.adb, libgnat/g-expect.adb, + libgnat/s-fileio.adb, libgnat/s-memory.adb, libgnat/s-mmap.adb, + libgnat/s-objrea.adb, libgnat/s-pehage.adb, + libgnat/s-regpat.adb, libgnat/s-shasto.adb, + libgnat/s-valued.adb, libgnat/s-valuef.adb, par-ch11.adb, + par-ch4.adb, par-ch6.adb, par-ch9.adb, par_sco.adb, + repinfo-input.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, + sem_ch13.adb, sem_ch4.adb, sem_eval.adb, sem_prag.adb, + sem_res.adb, sem_util.adb, sinput.adb, switch-c.adb: Fix style. + +2022-01-11 Arnaud Charlet <charlet@adacore.com> + + * exp_ch9.adb, gen_il-types.ads, make.adb, par-ch12.adb, + sem_ch13.adb: Use membership tests. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * erroutc.ads, erroutc.adb (Is_Runtime_Raise): Global flag to + connect status of initial messages and their continuation; we + already have several flags like this. + (Error_Msg_Object): Add field Warn_Runtime_Raise to connect + error reporting (when problematic code is found) and removal + (when problematic code is determined to be dead). + * errout.adb (Error_Msg_Internal): Handle new field when + recording a continuation message; propagate status from + continuation to the preceding messages. + (To_Be_Removed): For dead code remove both simple warnings and + warnings about constraint errors that have been escalated to + hard errors. + (Set_Msg_Text): Recognize warnings about constraint errors that + are escalated to hard errors. + * errutil.adb (Error_Msg): Handle added field when recording a + new message. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Error_Msg_Internal): Propagate warnings-as-error + flag from continuation message to its preceding messages. + +2022-01-11 Arnaud Charlet <charlet@adacore.com> + + * gnatvsn.ads (Current_Year): Update copyright notice, bump to + 2022. + * ada_get_targ.adb: Update copyright notice. + * adabkend.adb: Likewise. + * adabkend.ads: Likewise. + * adadecode.c: Likewise. + * adadecode.h: Likewise. + * adaint.c: Likewise. + * adaint.h: Likewise. + * affinity.c: Likewise. + * ali-util.adb: Likewise. + * ali-util.ads: Likewise. + * ali.adb: Likewise. + * ali.ads: Likewise. + * alloc.ads: Likewise. + * argv-lynxos178-raven-cert.c: Likewise. + * argv.c: Likewise. + * aspects.adb: Likewise. + * aspects.ads: Likewise. + * atree.adb: Likewise. + * atree.ads: Likewise. + * atree.h: Likewise. + * aux-io.c: Likewise. + * back_end.adb: Likewise. + * back_end.ads: Likewise. + * backend_utils.adb: Likewise. + * backend_utils.ads: Likewise. + * bcheck.adb: Likewise. + * bcheck.ads: Likewise. + * binde.adb: Likewise. + * binde.ads: Likewise. + * binderr.adb: Likewise. + * binderr.ads: Likewise. + * bindgen.adb: Likewise. + * bindgen.ads: Likewise. + * bindo-augmentors.adb: Likewise. + * bindo-augmentors.ads: Likewise. + * bindo-builders.adb: Likewise. + * bindo-builders.ads: Likewise. + * bindo-diagnostics.adb: Likewise. + * bindo-diagnostics.ads: Likewise. + * bindo-elaborators.adb: Likewise. + * bindo-elaborators.ads: Likewise. + * bindo-graphs.adb: Likewise. + * bindo-graphs.ads: Likewise. + * bindo-units.adb: Likewise. + * bindo-units.ads: Likewise. + * bindo-validators.adb: Likewise. + * bindo-validators.ads: Likewise. + * bindo-writers.adb: Likewise. + * bindo-writers.ads: Likewise. + * bindo.adb: Likewise. + * bindo.ads: Likewise. + * bindusg.adb: Likewise. + * bindusg.ads: Likewise. + * butil.adb: Likewise. + * butil.ads: Likewise. + * cal.c: Likewise. + * casing.adb: Likewise. + * casing.ads: Likewise. + * checks.adb: Likewise. + * checks.ads: Likewise. + * cio.c: Likewise. + * clean.adb: Likewise. + * clean.ads: Likewise. + * comperr.adb: Likewise. + * comperr.ads: Likewise. + * contracts.adb: Likewise. + * contracts.ads: Likewise. + * csets.adb: Likewise. + * csets.ads: Likewise. + * cstand.adb: Likewise. + * cstand.ads: Likewise. + * cstreams.c: Likewise. + * ctrl_c.c: Likewise. + * debug.ads: Likewise. + * debug_a.adb: Likewise. + * debug_a.ads: Likewise. + * einfo-utils.adb: Likewise. + * einfo-utils.ads: Likewise. + * einfo.adb: Likewise. + * einfo.ads: Likewise. + * elists.adb: Likewise. + * elists.ads: Likewise. + * elists.h: Likewise. + * env.c: Likewise. + * env.h: Likewise. + * err_vars.ads: Likewise. + * errno.c: Likewise. + * errout.adb: Likewise. + * errout.ads: Likewise. + * erroutc.adb: Likewise. + * erroutc.ads: Likewise. + * errutil.adb: Likewise. + * errutil.ads: Likewise. + * eval_fat.adb: Likewise. + * eval_fat.ads: Likewise. + * exit.c: Likewise. + * exp_aggr.adb: Likewise. + * exp_aggr.ads: Likewise. + * exp_atag.adb: Likewise. + * exp_atag.ads: Likewise. + * exp_attr.adb: Likewise. + * exp_attr.ads: Likewise. + * exp_cg.adb: Likewise. + * exp_cg.ads: Likewise. + * exp_ch10.ads: Likewise. + * exp_ch11.adb: Likewise. + * exp_ch11.ads: Likewise. + * exp_ch12.adb: Likewise. + * exp_ch12.ads: Likewise. + * exp_ch13.adb: Likewise. + * exp_ch13.ads: Likewise. + * exp_ch2.adb: Likewise. + * exp_ch2.ads: Likewise. + * exp_ch3.adb: Likewise. + * exp_ch3.ads: Likewise. + * exp_ch4.adb: Likewise. + * exp_ch4.ads: Likewise. + * exp_ch5.adb: Likewise. + * exp_ch5.ads: Likewise. + * exp_ch6.adb: Likewise. + * exp_ch6.ads: Likewise. + * exp_ch7.adb: Likewise. + * exp_ch7.ads: Likewise. + * exp_ch8.adb: Likewise. + * exp_ch8.ads: Likewise. + * exp_ch9.adb: Likewise. + * exp_ch9.ads: Likewise. + * exp_code.adb: Likewise. + * exp_code.ads: Likewise. + * exp_dbug.adb: Likewise. + * exp_dbug.ads: Likewise. + * exp_disp.adb: Likewise. + * exp_disp.ads: Likewise. + * exp_dist.adb: Likewise. + * exp_dist.ads: Likewise. + * exp_fixd.adb: Likewise. + * exp_fixd.ads: Likewise. + * exp_imgv.adb: Likewise. + * exp_imgv.ads: Likewise. + * exp_intr.adb: Likewise. + * exp_intr.ads: Likewise. + * exp_pakd.adb: Likewise. + * exp_pakd.ads: Likewise. + * exp_prag.adb: Likewise. + * exp_prag.ads: Likewise. + * exp_put_image.adb: Likewise. + * exp_put_image.ads: Likewise. + * exp_sel.adb: Likewise. + * exp_sel.ads: Likewise. + * exp_smem.adb: Likewise. + * exp_smem.ads: Likewise. + * exp_spark.adb: Likewise. + * exp_spark.ads: Likewise. + * exp_strm.adb: Likewise. + * exp_strm.ads: Likewise. + * exp_tss.adb: Likewise. + * exp_tss.ads: Likewise. + * exp_unst.adb: Likewise. + * exp_unst.ads: Likewise. + * exp_util.adb: Likewise. + * exp_util.ads: Likewise. + * expander.adb: Likewise. + * expander.ads: Likewise. + * expect.c: Likewise. + * fe.h: Likewise. + * final.c: Likewise. + * fmap.adb: Likewise. + * fmap.ads: Likewise. + * fname-sf.adb: Likewise. + * fname-sf.ads: Likewise. + * fname-uf.adb: Likewise. + * fname-uf.ads: Likewise. + * fname.adb: Likewise. + * fname.ads: Likewise. + * freeze.adb: Likewise. + * freeze.ads: Likewise. + * frontend.adb: Likewise. + * frontend.ads: Likewise. + * gen_il-fields.ads: Likewise. + * gen_il-gen-gen_entities.adb: Likewise. + * gen_il-gen-gen_nodes.adb: Likewise. + * gen_il-gen.adb: Likewise. + * gen_il-gen.ads: Likewise. + * gen_il-internals.adb: Likewise. + * gen_il-internals.ads: Likewise. + * gen_il-main.adb: Likewise. + * gen_il-types.ads: Likewise. + * gen_il.adb: Likewise. + * gen_il.ads: Likewise. + * get_scos.adb: Likewise. + * get_scos.ads: Likewise. + * get_targ.adb: Likewise. + * get_targ.ads: Likewise. + * ghost.adb: Likewise. + * ghost.ads: Likewise. + * gnat1drv.adb: Likewise. + * gnat1drv.ads: Likewise. + * gnat_cuda.adb: Likewise. + * gnat_cuda.ads: Likewise. + * gnatbind.adb: Likewise. + * gnatbind.ads: Likewise. + * gnatchop.adb: Likewise. + * gnatclean.adb: Likewise. + * gnatcmd.adb: Likewise. + * gnatcmd.ads: Likewise. + * gnatdll.adb: Likewise. + * gnatfind.adb: Likewise. + * gnatkr.adb: Likewise. + * gnatkr.ads: Likewise. + * gnatlink.adb: Likewise. + * gnatlink.ads: Likewise. + * gnatls.adb: Likewise. + * gnatls.ads: Likewise. + * gnatmake.adb: Likewise. + * gnatmake.ads: Likewise. + * gnatname.adb: Likewise. + * gnatname.ads: Likewise. + * gnatprep.adb: Likewise. + * gnatprep.ads: Likewise. + * gnatvsn.adb: Likewise. + * gnatxref.adb: Likewise. + * gprep.adb: Likewise. + * gprep.ads: Likewise. + * gsocket.h: Likewise. + * hostparm.ads: Likewise. + * impunit.adb: Likewise. + * impunit.ads: Likewise. + * indepsw-aix.adb: Likewise. + * indepsw-darwin.adb: Likewise. + * indepsw-gnu.adb: Likewise. + * indepsw.adb: Likewise. + * indepsw.ads: Likewise. + * init.c: Likewise. + * initialize.c: Likewise. + * inline.adb: Likewise. + * inline.ads: Likewise. + * itypes.adb: Likewise. + * itypes.ads: Likewise. + * krunch.adb: Likewise. + * krunch.ads: Likewise. + * layout.adb: Likewise. + * layout.ads: Likewise. + * lib-list.adb: Likewise. + * lib-load.adb: Likewise. + * lib-load.ads: Likewise. + * lib-sort.adb: Likewise. + * lib-util.adb: Likewise. + * lib-util.ads: Likewise. + * lib-writ.adb: Likewise. + * lib-writ.ads: Likewise. + * lib-xref-spark_specific.adb: Likewise. + * lib-xref.adb: Likewise. + * lib-xref.ads: Likewise. + * lib.adb: Likewise. + * lib.ads: Likewise. + * libgnarl/a-astaco.adb: Likewise. + * libgnarl/a-dispat.adb: Likewise. + * libgnarl/a-dynpri.adb: Likewise. + * libgnarl/a-etgrbu.ads: Likewise. + * libgnarl/a-exetim__darwin.adb: Likewise. + * libgnarl/a-exetim__default.ads: Likewise. + * libgnarl/a-exetim__mingw.adb: Likewise. + * libgnarl/a-exetim__mingw.ads: Likewise. + * libgnarl/a-exetim__posix.adb: Likewise. + * libgnarl/a-interr.adb: Likewise. + * libgnarl/a-interr.ads: Likewise. + * libgnarl/a-intnam.ads: Likewise. + * libgnarl/a-intnam__aix.ads: Likewise. + * libgnarl/a-intnam__darwin.ads: Likewise. + * libgnarl/a-intnam__dragonfly.ads: Likewise. + * libgnarl/a-intnam__dummy.ads: Likewise. + * libgnarl/a-intnam__freebsd.ads: Likewise. + * libgnarl/a-intnam__hpux.ads: Likewise. + * libgnarl/a-intnam__linux.ads: Likewise. + * libgnarl/a-intnam__lynxos.ads: Likewise. + * libgnarl/a-intnam__mingw.ads: Likewise. + * libgnarl/a-intnam__qnx.ads: Likewise. + * libgnarl/a-intnam__rtems.ads: Likewise. + * libgnarl/a-intnam__solaris.ads: Likewise. + * libgnarl/a-intnam__vxworks.ads: Likewise. + * libgnarl/a-reatim.adb: Likewise. + * libgnarl/a-reatim.ads: Likewise. + * libgnarl/a-retide.adb: Likewise. + * libgnarl/a-retide.ads: Likewise. + * libgnarl/a-rttiev.adb: Likewise. + * libgnarl/a-rttiev.ads: Likewise. + * libgnarl/a-synbar.adb: Likewise. + * libgnarl/a-synbar.ads: Likewise. + * libgnarl/a-synbar__posix.adb: Likewise. + * libgnarl/a-synbar__posix.ads: Likewise. + * libgnarl/a-sytaco.adb: Likewise. + * libgnarl/a-sytaco.ads: Likewise. + * libgnarl/a-tasatt.adb: Likewise. + * libgnarl/a-tasatt.ads: Likewise. + * libgnarl/a-taside.adb: Likewise. + * libgnarl/a-taside.ads: Likewise. + * libgnarl/a-tasini.adb: Likewise. + * libgnarl/a-tasini.ads: Likewise. + * libgnarl/a-taster.adb: Likewise. + * libgnarl/g-boubuf.adb: Likewise. + * libgnarl/g-boubuf.ads: Likewise. + * libgnarl/g-boumai.ads: Likewise. + * libgnarl/g-semaph.adb: Likewise. + * libgnarl/g-semaph.ads: Likewise. + * libgnarl/g-signal.adb: Likewise. + * libgnarl/g-signal.ads: Likewise. + * libgnarl/g-tastus.ads: Likewise. + * libgnarl/g-thread.adb: Likewise. + * libgnarl/g-thread.ads: Likewise. + * libgnarl/i-vxinco.adb: Likewise. + * libgnarl/i-vxinco.ads: Likewise. + * libgnarl/s-inmaop.ads: Likewise. + * libgnarl/s-inmaop__dummy.adb: Likewise. + * libgnarl/s-inmaop__hwint.adb: Likewise. + * libgnarl/s-inmaop__posix.adb: Likewise. + * libgnarl/s-interr.adb: Likewise. + * libgnarl/s-interr.ads: Likewise. + * libgnarl/s-interr__dummy.adb: Likewise. + * libgnarl/s-interr__hwint.adb: Likewise. + * libgnarl/s-interr__sigaction.adb: Likewise. + * libgnarl/s-interr__vxworks.adb: Likewise. + * libgnarl/s-intman.ads: Likewise. + * libgnarl/s-intman__android.adb: Likewise. + * libgnarl/s-intman__dummy.adb: Likewise. + * libgnarl/s-intman__lynxos.adb: Likewise. + * libgnarl/s-intman__mingw.adb: Likewise. + * libgnarl/s-intman__posix.adb: Likewise. + * libgnarl/s-intman__qnx.adb: Likewise. + * libgnarl/s-intman__rtems.adb: Likewise. + * libgnarl/s-intman__rtems.ads: Likewise. + * libgnarl/s-intman__solaris.adb: Likewise. + * libgnarl/s-intman__susv3.adb: Likewise. + * libgnarl/s-intman__vxworks.adb: Likewise. + * libgnarl/s-intman__vxworks.ads: Likewise. + * libgnarl/s-linux.ads: Likewise. + * libgnarl/s-linux__alpha.ads: Likewise. + * libgnarl/s-linux__android.ads: Likewise. + * libgnarl/s-linux__hppa.ads: Likewise. + * libgnarl/s-linux__mips.ads: Likewise. + * libgnarl/s-linux__riscv.ads: Likewise. + * libgnarl/s-linux__sparc.ads: Likewise. + * libgnarl/s-linux__x32.ads: Likewise. + * libgnarl/s-mudido.adb: Likewise. + * libgnarl/s-mudido__affinity.adb: Likewise. + * libgnarl/s-osinte__aix.adb: Likewise. + * libgnarl/s-osinte__aix.ads: Likewise. + * libgnarl/s-osinte__android.adb: Likewise. + * libgnarl/s-osinte__android.ads: Likewise. + * libgnarl/s-osinte__darwin.adb: Likewise. + * libgnarl/s-osinte__darwin.ads: Likewise. + * libgnarl/s-osinte__dragonfly.adb: Likewise. + * libgnarl/s-osinte__dragonfly.ads: Likewise. + * libgnarl/s-osinte__dummy.ads: Likewise. + * libgnarl/s-osinte__freebsd.adb: Likewise. + * libgnarl/s-osinte__freebsd.ads: Likewise. + * libgnarl/s-osinte__gnu.adb: Likewise. + * libgnarl/s-osinte__gnu.ads: Likewise. + * libgnarl/s-osinte__hpux-dce.adb: Likewise. + * libgnarl/s-osinte__hpux-dce.ads: Likewise. + * libgnarl/s-osinte__hpux.ads: Likewise. + * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise. + * libgnarl/s-osinte__linux.ads: Likewise. + * libgnarl/s-osinte__lynxos178.adb: Likewise. + * libgnarl/s-osinte__lynxos178e.ads: Likewise. + * libgnarl/s-osinte__mingw.ads: Likewise. + * libgnarl/s-osinte__posix.adb: Likewise. + * libgnarl/s-osinte__qnx.adb: Likewise. + * libgnarl/s-osinte__qnx.ads: Likewise. + * libgnarl/s-osinte__rtems.adb: Likewise. + * libgnarl/s-osinte__rtems.ads: Likewise. + * libgnarl/s-osinte__solaris.adb: Likewise. + * libgnarl/s-osinte__solaris.ads: Likewise. + * libgnarl/s-osinte__vxworks.adb: Likewise. + * libgnarl/s-osinte__vxworks.ads: Likewise. + * libgnarl/s-osinte__x32.adb: Likewise. + * libgnarl/s-proinf.adb: Likewise. + * libgnarl/s-proinf.ads: Likewise. + * libgnarl/s-putaim.adb: Likewise. + * libgnarl/s-putaim.ads: Likewise. + * libgnarl/s-qnx.ads: Likewise. + * libgnarl/s-solita.adb: Likewise. + * libgnarl/s-solita.ads: Likewise. + * libgnarl/s-stusta.adb: Likewise. + * libgnarl/s-stusta.ads: Likewise. + * libgnarl/s-taasde.adb: Likewise. + * libgnarl/s-taasde.ads: Likewise. + * libgnarl/s-tadeca.adb: Likewise. + * libgnarl/s-tadeca.ads: Likewise. + * libgnarl/s-tadert.adb: Likewise. + * libgnarl/s-tadert.ads: Likewise. + * libgnarl/s-taenca.adb: Likewise. + * libgnarl/s-taenca.ads: Likewise. + * libgnarl/s-taprob.adb: Likewise. + * libgnarl/s-taprob.ads: Likewise. + * libgnarl/s-taprop.ads: Likewise. + * libgnarl/s-taprop__dummy.adb: Likewise. + * libgnarl/s-taprop__hpux-dce.adb: Likewise. + * libgnarl/s-taprop__linux.adb: Likewise. + * libgnarl/s-taprop__mingw.adb: Likewise. + * libgnarl/s-taprop__posix.adb: Likewise. + * libgnarl/s-taprop__qnx.adb: Likewise. + * libgnarl/s-taprop__rtems.adb: Likewise. + * libgnarl/s-taprop__solaris.adb: Likewise. + * libgnarl/s-taprop__vxworks.adb: Likewise. + * libgnarl/s-tarest.adb: Likewise. + * libgnarl/s-tarest.ads: Likewise. + * libgnarl/s-tasdeb.adb: Likewise. + * libgnarl/s-tasdeb.ads: Likewise. + * libgnarl/s-tasinf.adb: Likewise. + * libgnarl/s-tasinf.ads: Likewise. + * libgnarl/s-tasinf__linux.adb: Likewise. + * libgnarl/s-tasinf__linux.ads: Likewise. + * libgnarl/s-tasinf__mingw.adb: Likewise. + * libgnarl/s-tasinf__mingw.ads: Likewise. + * libgnarl/s-tasinf__solaris.adb: Likewise. + * libgnarl/s-tasinf__solaris.ads: Likewise. + * libgnarl/s-tasinf__vxworks.ads: Likewise. + * libgnarl/s-tasini.adb: Likewise. + * libgnarl/s-tasini.ads: Likewise. + * libgnarl/s-taskin.adb: Likewise. + * libgnarl/s-taskin.ads: Likewise. + * libgnarl/s-taspri__dummy.ads: Likewise. + * libgnarl/s-taspri__hpux-dce.ads: Likewise. + * libgnarl/s-taspri__lynxos.ads: Likewise. + * libgnarl/s-taspri__mingw.ads: Likewise. + * libgnarl/s-taspri__posix-noaltstack.ads: Likewise. + * libgnarl/s-taspri__posix.ads: Likewise. + * libgnarl/s-taspri__solaris.ads: Likewise. + * libgnarl/s-taspri__vxworks.ads: Likewise. + * libgnarl/s-tasque.adb: Likewise. + * libgnarl/s-tasque.ads: Likewise. + * libgnarl/s-tasren.adb: Likewise. + * libgnarl/s-tasren.ads: Likewise. + * libgnarl/s-tasres.ads: Likewise. + * libgnarl/s-tassta.adb: Likewise. + * libgnarl/s-tassta.ads: Likewise. + * libgnarl/s-tasuti.adb: Likewise. + * libgnarl/s-tasuti.ads: Likewise. + * libgnarl/s-tataat.adb: Likewise. + * libgnarl/s-tataat.ads: Likewise. + * libgnarl/s-tpinop.adb: Likewise. + * libgnarl/s-tpinop.ads: Likewise. + * libgnarl/s-tpoaal.adb: Likewise. + * libgnarl/s-tpoben.adb: Likewise. + * libgnarl/s-tpoben.ads: Likewise. + * libgnarl/s-tpobmu.adb: Likewise. + * libgnarl/s-tpobmu.ads: Likewise. + * libgnarl/s-tpobop.adb: Likewise. + * libgnarl/s-tpobop.ads: Likewise. + * libgnarl/s-tpopmo.adb: Likewise. + * libgnarl/s-tpopsp__posix-foreign.adb: Likewise. + * libgnarl/s-tpopsp__posix.adb: Likewise. + * libgnarl/s-tpopsp__solaris.adb: Likewise. + * libgnarl/s-tpopsp__tls.adb: Likewise. + * libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise. + * libgnarl/s-tpopsp__vxworks-tls.adb: Likewise. + * libgnarl/s-tpopsp__vxworks.adb: Likewise. + * libgnarl/s-tporft.adb: Likewise. + * libgnarl/s-tposen.adb: Likewise. + * libgnarl/s-tposen.ads: Likewise. + * libgnarl/s-vxwext.adb: Likewise. + * libgnarl/s-vxwext.ads: Likewise. + * libgnarl/s-vxwext__kernel-smp.adb: Likewise. + * libgnarl/s-vxwext__kernel.adb: Likewise. + * libgnarl/s-vxwext__kernel.ads: Likewise. + * libgnarl/s-vxwext__rtp-smp.adb: Likewise. + * libgnarl/s-vxwext__rtp.adb: Likewise. + * libgnarl/s-vxwext__rtp.ads: Likewise. + * libgnarl/s-vxwork__aarch64.ads: Likewise. + * libgnarl/s-vxwork__arm.ads: Likewise. + * libgnarl/s-vxwork__ppc.ads: Likewise. + * libgnarl/s-vxwork__x86.ads: Likewise. + * libgnarl/thread.c: Likewise. + * libgnat/a-assert.adb: Likewise. + * libgnat/a-assert.ads: Likewise. + * libgnat/a-btgbso.adb: Likewise. + * libgnat/a-btgbso.ads: Likewise. + * libgnat/a-calari.adb: Likewise. + * libgnat/a-calari.ads: Likewise. + * libgnat/a-calcon.adb: Likewise. + * libgnat/a-calcon.ads: Likewise. + * libgnat/a-caldel.adb: Likewise. + * libgnat/a-caldel.ads: Likewise. + * libgnat/a-calend.adb: Likewise. + * libgnat/a-calend.ads: Likewise. + * libgnat/a-calfor.adb: Likewise. + * libgnat/a-calfor.ads: Likewise. + * libgnat/a-catizo.adb: Likewise. + * libgnat/a-cbdlli.adb: Likewise. + * libgnat/a-cbdlli.ads: Likewise. + * libgnat/a-cbhama.adb: Likewise. + * libgnat/a-cbhama.ads: Likewise. + * libgnat/a-cbhase.adb: Likewise. + * libgnat/a-cbhase.ads: Likewise. + * libgnat/a-cbmutr.adb: Likewise. + * libgnat/a-cbmutr.ads: Likewise. + * libgnat/a-cborma.adb: Likewise. + * libgnat/a-cborma.ads: Likewise. + * libgnat/a-cborse.adb: Likewise. + * libgnat/a-cborse.ads: Likewise. + * libgnat/a-cbprqu.adb: Likewise. + * libgnat/a-cbprqu.ads: Likewise. + * libgnat/a-cbsyqu.adb: Likewise. + * libgnat/a-cbsyqu.ads: Likewise. + * libgnat/a-cdlili.adb: Likewise. + * libgnat/a-cdlili.ads: Likewise. + * libgnat/a-cfdlli.adb: Likewise. + * libgnat/a-cfdlli.ads: Likewise. + * libgnat/a-cfhama.adb: Likewise. + * libgnat/a-cfhama.ads: Likewise. + * libgnat/a-cfhase.adb: Likewise. + * libgnat/a-cfhase.ads: Likewise. + * libgnat/a-cfinve.adb: Likewise. + * libgnat/a-cfinve.ads: Likewise. + * libgnat/a-cforma.adb: Likewise. + * libgnat/a-cforma.ads: Likewise. + * libgnat/a-cforse.adb: Likewise. + * libgnat/a-cforse.ads: Likewise. + * libgnat/a-cgaaso.adb: Likewise. + * libgnat/a-cgaaso.ads: Likewise. + * libgnat/a-cgarso.adb: Likewise. + * libgnat/a-cgcaso.adb: Likewise. + * libgnat/a-chacon.adb: Likewise. + * libgnat/a-chacon.ads: Likewise. + * libgnat/a-chahan.adb: Likewise. + * libgnat/a-chahan.ads: Likewise. + * libgnat/a-chlat9.ads: Likewise. + * libgnat/a-chtgbk.adb: Likewise. + * libgnat/a-chtgbk.ads: Likewise. + * libgnat/a-chtgbo.adb: Likewise. + * libgnat/a-chtgbo.ads: Likewise. + * libgnat/a-chtgke.adb: Likewise. + * libgnat/a-chtgke.ads: Likewise. + * libgnat/a-chtgop.adb: Likewise. + * libgnat/a-chtgop.ads: Likewise. + * libgnat/a-chzla1.ads: Likewise. + * libgnat/a-chzla9.ads: Likewise. + * libgnat/a-cidlli.adb: Likewise. + * libgnat/a-cidlli.ads: Likewise. + * libgnat/a-cihama.adb: Likewise. + * libgnat/a-cihama.ads: Likewise. + * libgnat/a-cihase.adb: Likewise. + * libgnat/a-cihase.ads: Likewise. + * libgnat/a-cimutr.adb: Likewise. + * libgnat/a-cimutr.ads: Likewise. + * libgnat/a-ciorma.adb: Likewise. + * libgnat/a-ciorma.ads: Likewise. + * libgnat/a-ciormu.adb: Likewise. + * libgnat/a-ciormu.ads: Likewise. + * libgnat/a-ciorse.adb: Likewise. + * libgnat/a-ciorse.ads: Likewise. + * libgnat/a-clrefi.adb: Likewise. + * libgnat/a-clrefi.ads: Likewise. + * libgnat/a-coboho.adb: Likewise. + * libgnat/a-coboho.ads: Likewise. + * libgnat/a-cobove.adb: Likewise. + * libgnat/a-cobove.ads: Likewise. + * libgnat/a-cofove.adb: Likewise. + * libgnat/a-cofove.ads: Likewise. + * libgnat/a-cofuba.adb: Likewise. + * libgnat/a-cofuba.ads: Likewise. + * libgnat/a-cofuma.adb: Likewise. + * libgnat/a-cofuma.ads: Likewise. + * libgnat/a-cofuse.adb: Likewise. + * libgnat/a-cofuse.ads: Likewise. + * libgnat/a-cofuve.adb: Likewise. + * libgnat/a-cofuve.ads: Likewise. + * libgnat/a-cogeso.adb: Likewise. + * libgnat/a-cogeso.ads: Likewise. + * libgnat/a-cohama.adb: Likewise. + * libgnat/a-cohama.ads: Likewise. + * libgnat/a-cohase.adb: Likewise. + * libgnat/a-cohase.ads: Likewise. + * libgnat/a-cohata.ads: Likewise. + * libgnat/a-coinho.adb: Likewise. + * libgnat/a-coinho.ads: Likewise. + * libgnat/a-coinho__shared.adb: Likewise. + * libgnat/a-coinho__shared.ads: Likewise. + * libgnat/a-coinve.adb: Likewise. + * libgnat/a-coinve.ads: Likewise. + * libgnat/a-colien.adb: Likewise. + * libgnat/a-colien.ads: Likewise. + * libgnat/a-colire.adb: Likewise. + * libgnat/a-colire.ads: Likewise. + * libgnat/a-comlin.adb: Likewise. + * libgnat/a-comlin.ads: Likewise. + * libgnat/a-comutr.adb: Likewise. + * libgnat/a-comutr.ads: Likewise. + * libgnat/a-conhel.adb: Likewise. + * libgnat/a-conhel.ads: Likewise. + * libgnat/a-convec.adb: Likewise. + * libgnat/a-convec.ads: Likewise. + * libgnat/a-coorma.adb: Likewise. + * libgnat/a-coorma.ads: Likewise. + * libgnat/a-coormu.adb: Likewise. + * libgnat/a-coormu.ads: Likewise. + * libgnat/a-coorse.adb: Likewise. + * libgnat/a-coorse.ads: Likewise. + * libgnat/a-coprnu.adb: Likewise. + * libgnat/a-coprnu.ads: Likewise. + * libgnat/a-costso.adb: Likewise. + * libgnat/a-costso.ads: Likewise. + * libgnat/a-crbltr.ads: Likewise. + * libgnat/a-crbtgk.adb: Likewise. + * libgnat/a-crbtgk.ads: Likewise. + * libgnat/a-crbtgo.adb: Likewise. + * libgnat/a-crbtgo.ads: Likewise. + * libgnat/a-crdlli.adb: Likewise. + * libgnat/a-crdlli.ads: Likewise. + * libgnat/a-csquin.ads: Likewise. + * libgnat/a-cuprqu.adb: Likewise. + * libgnat/a-cuprqu.ads: Likewise. + * libgnat/a-cusyqu.adb: Likewise. + * libgnat/a-cusyqu.ads: Likewise. + * libgnat/a-cwila1.ads: Likewise. + * libgnat/a-cwila9.ads: Likewise. + * libgnat/a-decima.adb: Likewise. + * libgnat/a-decima.ads: Likewise. + * libgnat/a-decima__128.ads: Likewise. + * libgnat/a-dhfina.adb: Likewise. + * libgnat/a-dhfina.ads: Likewise. + * libgnat/a-diocst.adb: Likewise. + * libgnat/a-diocst.ads: Likewise. + * libgnat/a-direct.adb: Likewise. + * libgnat/a-direct.ads: Likewise. + * libgnat/a-direio.adb: Likewise. + * libgnat/a-direio.ads: Likewise. + * libgnat/a-dirval.adb: Likewise. + * libgnat/a-dirval.ads: Likewise. + * libgnat/a-dirval__mingw.adb: Likewise. + * libgnat/a-einuoc.adb: Likewise. + * libgnat/a-einuoc.ads: Likewise. + * libgnat/a-elchha.adb: Likewise. + * libgnat/a-elchha.ads: Likewise. + * libgnat/a-envvar.adb: Likewise. + * libgnat/a-excach.adb: Likewise. + * libgnat/a-except.adb: Likewise. + * libgnat/a-except.ads: Likewise. + * libgnat/a-exctra.adb: Likewise. + * libgnat/a-exctra.ads: Likewise. + * libgnat/a-exexda.adb: Likewise. + * libgnat/a-exexpr.adb: Likewise. + * libgnat/a-exextr.adb: Likewise. + * libgnat/a-exstat.adb: Likewise. + * libgnat/a-finali.adb: Likewise. + * libgnat/a-finali.ads: Likewise. + * libgnat/a-locale.adb: Likewise. + * libgnat/a-locale.ads: Likewise. + * libgnat/a-nagefl.ads: Likewise. + * libgnat/a-naliop.ads: Likewise. + * libgnat/a-naliop__nolibm.ads: Likewise. + * libgnat/a-nallfl.ads: Likewise. + * libgnat/a-nallfl__wraplf.ads: Likewise. + * libgnat/a-nalofl.ads: Likewise. + * libgnat/a-nashfl.ads: Likewise. + * libgnat/a-nashfl__wraplf.ads: Likewise. + * libgnat/a-nbnbig.adb: Likewise. + * libgnat/a-nbnbin.adb: Likewise. + * libgnat/a-nbnbin__gmp.adb: Likewise. + * libgnat/a-nbnbre.adb: Likewise. + * libgnat/a-ngcefu.adb: Likewise. + * libgnat/a-ngcoar.adb: Likewise. + * libgnat/a-ngcoty.adb: Likewise. + * libgnat/a-ngcoty.ads: Likewise. + * libgnat/a-ngelfu.adb: Likewise. + * libgnat/a-ngelfu.ads: Likewise. + * libgnat/a-ngrear.adb: Likewise. + * libgnat/a-ngrear.ads: Likewise. + * libgnat/a-nuauco.ads: Likewise. + * libgnat/a-nuauco__x86.ads: Likewise. + * libgnat/a-nuaufl.ads: Likewise. + * libgnat/a-nuaufl__wraplf.ads: Likewise. + * libgnat/a-nudira.adb: Likewise. + * libgnat/a-nudira.ads: Likewise. + * libgnat/a-nuflra.adb: Likewise. + * libgnat/a-nuflra.ads: Likewise. + * libgnat/a-numaux.ads: Likewise. + * libgnat/a-rbtgbk.adb: Likewise. + * libgnat/a-rbtgbk.ads: Likewise. + * libgnat/a-rbtgbo.adb: Likewise. + * libgnat/a-rbtgbo.ads: Likewise. + * libgnat/a-rbtgso.adb: Likewise. + * libgnat/a-rbtgso.ads: Likewise. + * libgnat/a-sbecin.adb: Likewise. + * libgnat/a-sbecin.ads: Likewise. + * libgnat/a-sbhcin.adb: Likewise. + * libgnat/a-sbhcin.ads: Likewise. + * libgnat/a-sblcin.adb: Likewise. + * libgnat/a-sblcin.ads: Likewise. + * libgnat/a-secain.adb: Likewise. + * libgnat/a-secain.ads: Likewise. + * libgnat/a-sequio.adb: Likewise. + * libgnat/a-sequio.ads: Likewise. + * libgnat/a-sfecin.ads: Likewise. + * libgnat/a-sfhcin.ads: Likewise. + * libgnat/a-sflcin.ads: Likewise. + * libgnat/a-shcain.adb: Likewise. + * libgnat/a-shcain.ads: Likewise. + * libgnat/a-siocst.adb: Likewise. + * libgnat/a-siocst.ads: Likewise. + * libgnat/a-slcain.adb: Likewise. + * libgnat/a-slcain.ads: Likewise. + * libgnat/a-ssicst.adb: Likewise. + * libgnat/a-ssicst.ads: Likewise. + * libgnat/a-stboha.adb: Likewise. + * libgnat/a-stbubo.adb: Likewise. + * libgnat/a-stbubo.ads: Likewise. + * libgnat/a-stbufi.adb: Likewise. + * libgnat/a-stbufi.ads: Likewise. + * libgnat/a-stbufo.adb: Likewise. + * libgnat/a-stbufo.ads: Likewise. + * libgnat/a-stbuun.adb: Likewise. + * libgnat/a-stbuut.adb: Likewise. + * libgnat/a-stbuut.ads: Likewise. + * libgnat/a-stmaco.ads: Likewise. + * libgnat/a-storio.adb: Likewise. + * libgnat/a-strbou.adb: Likewise. + * libgnat/a-strbou.ads: Likewise. + * libgnat/a-stream.adb: Likewise. + * libgnat/a-stream.ads: Likewise. + * libgnat/a-strfix.adb: Likewise. + * libgnat/a-strhas.adb: Likewise. + * libgnat/a-strmap.adb: Likewise. + * libgnat/a-strmap.ads: Likewise. + * libgnat/a-strsea.adb: Likewise. + * libgnat/a-strsea.ads: Likewise. + * libgnat/a-strsto.ads: Likewise. + * libgnat/a-strsup.adb: Likewise. + * libgnat/a-strsup.ads: Likewise. + * libgnat/a-strunb.adb: Likewise. + * libgnat/a-strunb.ads: Likewise. + * libgnat/a-strunb__shared.adb: Likewise. + * libgnat/a-strunb__shared.ads: Likewise. + * libgnat/a-ststbo.adb: Likewise. + * libgnat/a-ststbo.ads: Likewise. + * libgnat/a-ststio.adb: Likewise. + * libgnat/a-ststio.ads: Likewise. + * libgnat/a-ststun.adb: Likewise. + * libgnat/a-ststun.ads: Likewise. + * libgnat/a-sttebu.adb: Likewise. + * libgnat/a-stunau.adb: Likewise. + * libgnat/a-stunau.ads: Likewise. + * libgnat/a-stunau__shared.adb: Likewise. + * libgnat/a-stunha.adb: Likewise. + * libgnat/a-stuten.adb: Likewise. + * libgnat/a-stwibo.adb: Likewise. + * libgnat/a-stwibo.ads: Likewise. + * libgnat/a-stwifi.adb: Likewise. + * libgnat/a-stwiha.adb: Likewise. + * libgnat/a-stwima.adb: Likewise. + * libgnat/a-stwima.ads: Likewise. + * libgnat/a-stwise.adb: Likewise. + * libgnat/a-stwise.ads: Likewise. + * libgnat/a-stwisu.adb: Likewise. + * libgnat/a-stwisu.ads: Likewise. + * libgnat/a-stwiun.adb: Likewise. + * libgnat/a-stwiun.ads: Likewise. + * libgnat/a-stwiun__shared.adb: Likewise. + * libgnat/a-stwiun__shared.ads: Likewise. + * libgnat/a-stzbou.adb: Likewise. + * libgnat/a-stzbou.ads: Likewise. + * libgnat/a-stzfix.adb: Likewise. + * libgnat/a-stzhas.adb: Likewise. + * libgnat/a-stzmap.adb: Likewise. + * libgnat/a-stzmap.ads: Likewise. + * libgnat/a-stzsea.adb: Likewise. + * libgnat/a-stzsea.ads: Likewise. + * libgnat/a-stzsup.adb: Likewise. + * libgnat/a-stzsup.ads: Likewise. + * libgnat/a-stzunb.adb: Likewise. + * libgnat/a-stzunb.ads: Likewise. + * libgnat/a-stzunb__shared.adb: Likewise. + * libgnat/a-stzunb__shared.ads: Likewise. + * libgnat/a-suecin.adb: Likewise. + * libgnat/a-suecin.ads: Likewise. + * libgnat/a-suenco.adb: Likewise. + * libgnat/a-suenst.adb: Likewise. + * libgnat/a-suewst.adb: Likewise. + * libgnat/a-suezst.adb: Likewise. + * libgnat/a-suhcin.adb: Likewise. + * libgnat/a-suhcin.ads: Likewise. + * libgnat/a-sulcin.adb: Likewise. + * libgnat/a-sulcin.ads: Likewise. + * libgnat/a-suteio.adb: Likewise. + * libgnat/a-suteio.ads: Likewise. + * libgnat/a-suteio__shared.adb: Likewise. + * libgnat/a-swbwha.adb: Likewise. + * libgnat/a-swmwco.ads: Likewise. + * libgnat/a-swunau.adb: Likewise. + * libgnat/a-swunau.ads: Likewise. + * libgnat/a-swunau__shared.adb: Likewise. + * libgnat/a-swuwha.adb: Likewise. + * libgnat/a-swuwti.adb: Likewise. + * libgnat/a-swuwti.ads: Likewise. + * libgnat/a-swuwti__shared.adb: Likewise. + * libgnat/a-szbzha.adb: Likewise. + * libgnat/a-szmzco.ads: Likewise. + * libgnat/a-szunau.adb: Likewise. + * libgnat/a-szunau.ads: Likewise. + * libgnat/a-szunau__shared.adb: Likewise. + * libgnat/a-szuzha.adb: Likewise. + * libgnat/a-szuzti.adb: Likewise. + * libgnat/a-szuzti.ads: Likewise. + * libgnat/a-szuzti__shared.adb: Likewise. + * libgnat/a-tags.adb: Likewise. + * libgnat/a-tags.ads: Likewise. + * libgnat/a-teioed.adb: Likewise. + * libgnat/a-teioed.ads: Likewise. + * libgnat/a-textio.adb: Likewise. + * libgnat/a-textio.ads: Likewise. + * libgnat/a-tiboio.adb: Likewise. + * libgnat/a-ticoau.adb: Likewise. + * libgnat/a-ticoau.ads: Likewise. + * libgnat/a-ticoio.adb: Likewise. + * libgnat/a-ticoio.ads: Likewise. + * libgnat/a-tideau.adb: Likewise. + * libgnat/a-tideau.ads: Likewise. + * libgnat/a-tideio.adb: Likewise. + * libgnat/a-tideio.ads: Likewise. + * libgnat/a-tideio__128.adb: Likewise. + * libgnat/a-tienau.adb: Likewise. + * libgnat/a-tienau.ads: Likewise. + * libgnat/a-tienio.adb: Likewise. + * libgnat/a-tifiau.adb: Likewise. + * libgnat/a-tifiau.ads: Likewise. + * libgnat/a-tifiio.adb: Likewise. + * libgnat/a-tifiio__128.adb: Likewise. + * libgnat/a-tiflau.adb: Likewise. + * libgnat/a-tiflau.ads: Likewise. + * libgnat/a-tiflio.adb: Likewise. + * libgnat/a-tiflio.ads: Likewise. + * libgnat/a-tigeau.adb: Likewise. + * libgnat/a-tigeau.ads: Likewise. + * libgnat/a-tigeli.adb: Likewise. + * libgnat/a-tiinau.adb: Likewise. + * libgnat/a-tiinau.ads: Likewise. + * libgnat/a-tiinio.adb: Likewise. + * libgnat/a-tiinio.ads: Likewise. + * libgnat/a-tiinio__128.adb: Likewise. + * libgnat/a-timoio.adb: Likewise. + * libgnat/a-timoio.ads: Likewise. + * libgnat/a-timoio__128.adb: Likewise. + * libgnat/a-tiocst.adb: Likewise. + * libgnat/a-tiocst.ads: Likewise. + * libgnat/a-tirsfi.adb: Likewise. + * libgnat/a-tirsfi.ads: Likewise. + * libgnat/a-titest.adb: Likewise. + * libgnat/a-undesu.adb: Likewise. + * libgnat/a-wichha.adb: Likewise. + * libgnat/a-wichun.adb: Likewise. + * libgnat/a-wichun.ads: Likewise. + * libgnat/a-witeio.adb: Likewise. + * libgnat/a-witeio.ads: Likewise. + * libgnat/a-wrstfi.adb: Likewise. + * libgnat/a-wrstfi.ads: Likewise. + * libgnat/a-wtcoau.adb: Likewise. + * libgnat/a-wtcoau.ads: Likewise. + * libgnat/a-wtcoio.adb: Likewise. + * libgnat/a-wtcstr.adb: Likewise. + * libgnat/a-wtcstr.ads: Likewise. + * libgnat/a-wtdeau.adb: Likewise. + * libgnat/a-wtdeau.ads: Likewise. + * libgnat/a-wtdeio.adb: Likewise. + * libgnat/a-wtdeio__128.adb: Likewise. + * libgnat/a-wtedit.adb: Likewise. + * libgnat/a-wtedit.ads: Likewise. + * libgnat/a-wtenau.adb: Likewise. + * libgnat/a-wtenau.ads: Likewise. + * libgnat/a-wtenio.adb: Likewise. + * libgnat/a-wtfiau.adb: Likewise. + * libgnat/a-wtfiau.ads: Likewise. + * libgnat/a-wtfiio.adb: Likewise. + * libgnat/a-wtfiio__128.adb: Likewise. + * libgnat/a-wtflau.adb: Likewise. + * libgnat/a-wtflau.ads: Likewise. + * libgnat/a-wtflio.adb: Likewise. + * libgnat/a-wtgeau.adb: Likewise. + * libgnat/a-wtgeau.ads: Likewise. + * libgnat/a-wtinau.adb: Likewise. + * libgnat/a-wtinau.ads: Likewise. + * libgnat/a-wtinio.adb: Likewise. + * libgnat/a-wtinio__128.adb: Likewise. + * libgnat/a-wtmoio.adb: Likewise. + * libgnat/a-wtmoio.ads: Likewise. + * libgnat/a-wtmoio__128.adb: Likewise. + * libgnat/a-wttest.adb: Likewise. + * libgnat/a-wwboio.adb: Likewise. + * libgnat/a-zchhan.adb: Likewise. + * libgnat/a-zchuni.adb: Likewise. + * libgnat/a-zchuni.ads: Likewise. + * libgnat/a-zrstfi.adb: Likewise. + * libgnat/a-zrstfi.ads: Likewise. + * libgnat/a-ztcoau.adb: Likewise. + * libgnat/a-ztcoio.adb: Likewise. + * libgnat/a-ztcstr.adb: Likewise. + * libgnat/a-ztcstr.ads: Likewise. + * libgnat/a-ztdeau.adb: Likewise. + * libgnat/a-ztdeau.ads: Likewise. + * libgnat/a-ztdeio.adb: Likewise. + * libgnat/a-ztdeio__128.adb: Likewise. + * libgnat/a-ztedit.adb: Likewise. + * libgnat/a-ztedit.ads: Likewise. + * libgnat/a-ztenau.adb: Likewise. + * libgnat/a-ztenau.ads: Likewise. + * libgnat/a-ztenio.adb: Likewise. + * libgnat/a-ztexio.adb: Likewise. + * libgnat/a-ztexio.ads: Likewise. + * libgnat/a-ztfiau.adb: Likewise. + * libgnat/a-ztfiau.ads: Likewise. + * libgnat/a-ztfiio.adb: Likewise. + * libgnat/a-ztfiio__128.adb: Likewise. + * libgnat/a-ztflau.adb: Likewise. + * libgnat/a-ztflau.ads: Likewise. + * libgnat/a-ztflio.adb: Likewise. + * libgnat/a-ztgeau.adb: Likewise. + * libgnat/a-ztgeau.ads: Likewise. + * libgnat/a-ztinau.adb: Likewise. + * libgnat/a-ztinau.ads: Likewise. + * libgnat/a-ztinio.adb: Likewise. + * libgnat/a-ztinio__128.adb: Likewise. + * libgnat/a-ztmoio.adb: Likewise. + * libgnat/a-ztmoio__128.adb: Likewise. + * libgnat/a-zttest.adb: Likewise. + * libgnat/a-zzboio.adb: Likewise. + * libgnat/g-allein.ads: Likewise. + * libgnat/g-alleve.adb: Likewise. + * libgnat/g-alleve.ads: Likewise. + * libgnat/g-alleve__hard.adb: Likewise. + * libgnat/g-alleve__hard.ads: Likewise. + * libgnat/g-altcon.adb: Likewise. + * libgnat/g-altcon.ads: Likewise. + * libgnat/g-altive.ads: Likewise. + * libgnat/g-alveop.adb: Likewise. + * libgnat/g-alveop.ads: Likewise. + * libgnat/g-alvety.ads: Likewise. + * libgnat/g-alvevi.ads: Likewise. + * libgnat/g-arrspl.adb: Likewise. + * libgnat/g-arrspl.ads: Likewise. + * libgnat/g-awk.adb: Likewise. + * libgnat/g-awk.ads: Likewise. + * libgnat/g-binenv.adb: Likewise. + * libgnat/g-binenv.ads: Likewise. + * libgnat/g-brapre.ads: Likewise. + * libgnat/g-bubsor.adb: Likewise. + * libgnat/g-bubsor.ads: Likewise. + * libgnat/g-busora.adb: Likewise. + * libgnat/g-busora.ads: Likewise. + * libgnat/g-busorg.adb: Likewise. + * libgnat/g-busorg.ads: Likewise. + * libgnat/g-byorma.adb: Likewise. + * libgnat/g-byorma.ads: Likewise. + * libgnat/g-bytswa.adb: Likewise. + * libgnat/g-bytswa.ads: Likewise. + * libgnat/g-calend.adb: Likewise. + * libgnat/g-calend.ads: Likewise. + * libgnat/g-casuti.adb: Likewise. + * libgnat/g-casuti.ads: Likewise. + * libgnat/g-catiio.adb: Likewise. + * libgnat/g-catiio.ads: Likewise. + * libgnat/g-cgi.adb: Likewise. + * libgnat/g-cgi.ads: Likewise. + * libgnat/g-cgicoo.adb: Likewise. + * libgnat/g-cgicoo.ads: Likewise. + * libgnat/g-cgideb.adb: Likewise. + * libgnat/g-cgideb.ads: Likewise. + * libgnat/g-comlin.adb: Likewise. + * libgnat/g-comlin.ads: Likewise. + * libgnat/g-comver.adb: Likewise. + * libgnat/g-comver.ads: Likewise. + * libgnat/g-cppexc.adb: Likewise. + * libgnat/g-cppexc.ads: Likewise. + * libgnat/g-crc32.adb: Likewise. + * libgnat/g-crc32.ads: Likewise. + * libgnat/g-ctrl_c.adb: Likewise. + * libgnat/g-ctrl_c.ads: Likewise. + * libgnat/g-curexc.ads: Likewise. + * libgnat/g-debpoo.adb: Likewise. + * libgnat/g-debpoo.ads: Likewise. + * libgnat/g-debuti.adb: Likewise. + * libgnat/g-debuti.ads: Likewise. + * libgnat/g-decstr.adb: Likewise. + * libgnat/g-decstr.ads: Likewise. + * libgnat/g-deutst.ads: Likewise. + * libgnat/g-diopit.adb: Likewise. + * libgnat/g-diopit.ads: Likewise. + * libgnat/g-dirope.adb: Likewise. + * libgnat/g-dirope.ads: Likewise. + * libgnat/g-dynhta.adb: Likewise. + * libgnat/g-dynhta.ads: Likewise. + * libgnat/g-dyntab.adb: Likewise. + * libgnat/g-dyntab.ads: Likewise. + * libgnat/g-eacodu.adb: Likewise. + * libgnat/g-encstr.adb: Likewise. + * libgnat/g-encstr.ads: Likewise. + * libgnat/g-enutst.ads: Likewise. + * libgnat/g-excact.adb: Likewise. + * libgnat/g-excact.ads: Likewise. + * libgnat/g-except.ads: Likewise. + * libgnat/g-exctra.adb: Likewise. + * libgnat/g-exctra.ads: Likewise. + * libgnat/g-expect.adb: Likewise. + * libgnat/g-expect.ads: Likewise. + * libgnat/g-exptty.adb: Likewise. + * libgnat/g-exptty.ads: Likewise. + * libgnat/g-flocon.ads: Likewise. + * libgnat/g-forstr.adb: Likewise. + * libgnat/g-forstr.ads: Likewise. + * libgnat/g-graphs.adb: Likewise. + * libgnat/g-graphs.ads: Likewise. + * libgnat/g-heasor.adb: Likewise. + * libgnat/g-heasor.ads: Likewise. + * libgnat/g-hesora.adb: Likewise. + * libgnat/g-hesora.ads: Likewise. + * libgnat/g-hesorg.adb: Likewise. + * libgnat/g-hesorg.ads: Likewise. + * libgnat/g-htable.adb: Likewise. + * libgnat/g-htable.ads: Likewise. + * libgnat/g-io.adb: Likewise. + * libgnat/g-io.ads: Likewise. + * libgnat/g-io_aux.adb: Likewise. + * libgnat/g-io_aux.ads: Likewise. + * libgnat/g-lists.adb: Likewise. + * libgnat/g-lists.ads: Likewise. + * libgnat/g-locfil.adb: Likewise. + * libgnat/g-locfil.ads: Likewise. + * libgnat/g-mbdira.adb: Likewise. + * libgnat/g-mbdira.ads: Likewise. + * libgnat/g-mbflra.adb: Likewise. + * libgnat/g-mbflra.ads: Likewise. + * libgnat/g-md5.adb: Likewise. + * libgnat/g-md5.ads: Likewise. + * libgnat/g-memdum.adb: Likewise. + * libgnat/g-memdum.ads: Likewise. + * libgnat/g-moreex.adb: Likewise. + * libgnat/g-moreex.ads: Likewise. + * libgnat/g-os_lib.adb: Likewise. + * libgnat/g-os_lib.ads: Likewise. + * libgnat/g-pehage.adb: Likewise. + * libgnat/g-pehage.ads: Likewise. + * libgnat/g-rannum.adb: Likewise. + * libgnat/g-rannum.ads: Likewise. + * libgnat/g-regexp.adb: Likewise. + * libgnat/g-regexp.ads: Likewise. + * libgnat/g-regist.adb: Likewise. + * libgnat/g-regist.ads: Likewise. + * libgnat/g-regpat.adb: Likewise. + * libgnat/g-regpat.ads: Likewise. + * libgnat/g-rewdat.adb: Likewise. + * libgnat/g-rewdat.ads: Likewise. + * libgnat/g-sechas.adb: Likewise. + * libgnat/g-sechas.ads: Likewise. + * libgnat/g-sehamd.adb: Likewise. + * libgnat/g-sehamd.ads: Likewise. + * libgnat/g-sehash.adb: Likewise. + * libgnat/g-sehash.ads: Likewise. + * libgnat/g-sercom.adb: Likewise. + * libgnat/g-sercom.ads: Likewise. + * libgnat/g-sercom__linux.adb: Likewise. + * libgnat/g-sercom__mingw.adb: Likewise. + * libgnat/g-sestin.ads: Likewise. + * libgnat/g-sets.adb: Likewise. + * libgnat/g-sets.ads: Likewise. + * libgnat/g-sha1.adb: Likewise. + * libgnat/g-sha1.ads: Likewise. + * libgnat/g-sha224.ads: Likewise. + * libgnat/g-sha256.ads: Likewise. + * libgnat/g-sha384.ads: Likewise. + * libgnat/g-sha512.ads: Likewise. + * libgnat/g-shsh32.adb: Likewise. + * libgnat/g-shsh32.ads: Likewise. + * libgnat/g-shsh64.adb: Likewise. + * libgnat/g-shsh64.ads: Likewise. + * libgnat/g-shshco.adb: Likewise. + * libgnat/g-shshco.ads: Likewise. + * libgnat/g-soccon.ads: Likewise. + * libgnat/g-socket.adb: Likewise. + * libgnat/g-socket.ads: Likewise. + * libgnat/g-socket__dummy.adb: Likewise. + * libgnat/g-socket__dummy.ads: Likewise. + * libgnat/g-socpol.adb: Likewise. + * libgnat/g-socpol.ads: Likewise. + * libgnat/g-socpol__dummy.adb: Likewise. + * libgnat/g-socpol__dummy.ads: Likewise. + * libgnat/g-socthi.adb: Likewise. + * libgnat/g-socthi.ads: Likewise. + * libgnat/g-socthi__dummy.adb: Likewise. + * libgnat/g-socthi__dummy.ads: Likewise. + * libgnat/g-socthi__mingw.adb: Likewise. + * libgnat/g-socthi__mingw.ads: Likewise. + * libgnat/g-socthi__vxworks.adb: Likewise. + * libgnat/g-socthi__vxworks.ads: Likewise. + * libgnat/g-soliop.ads: Likewise. + * libgnat/g-soliop__lynxos.ads: Likewise. + * libgnat/g-soliop__mingw.ads: Likewise. + * libgnat/g-soliop__qnx.ads: Likewise. + * libgnat/g-soliop__solaris.ads: Likewise. + * libgnat/g-sopowa.adb: Likewise. + * libgnat/g-sopowa__mingw.adb: Likewise. + * libgnat/g-sopowa__posix.adb: Likewise. + * libgnat/g-sothco.adb: Likewise. + * libgnat/g-sothco.ads: Likewise. + * libgnat/g-sothco__dummy.adb: Likewise. + * libgnat/g-sothco__dummy.ads: Likewise. + * libgnat/g-souinf.ads: Likewise. + * libgnat/g-spchge.adb: Likewise. + * libgnat/g-spchge.ads: Likewise. + * libgnat/g-speche.adb: Likewise. + * libgnat/g-speche.ads: Likewise. + * libgnat/g-spipat.adb: Likewise. + * libgnat/g-spipat.ads: Likewise. + * libgnat/g-spitbo.adb: Likewise. + * libgnat/g-spitbo.ads: Likewise. + * libgnat/g-spogwa.adb: Likewise. + * libgnat/g-spogwa.ads: Likewise. + * libgnat/g-sptabo.ads: Likewise. + * libgnat/g-sptain.ads: Likewise. + * libgnat/g-sptavs.ads: Likewise. + * libgnat/g-sse.ads: Likewise. + * libgnat/g-ssvety.ads: Likewise. + * libgnat/g-sthcso.adb: Likewise. + * libgnat/g-stheme.adb: Likewise. + * libgnat/g-strhas.ads: Likewise. + * libgnat/g-string.adb: Likewise. + * libgnat/g-string.ads: Likewise. + * libgnat/g-strspl.ads: Likewise. + * libgnat/g-stseme.adb: Likewise. + * libgnat/g-stsifd__sockets.adb: Likewise. + * libgnat/g-table.adb: Likewise. + * libgnat/g-table.ads: Likewise. + * libgnat/g-tasloc.adb: Likewise. + * libgnat/g-tasloc.ads: Likewise. + * libgnat/g-timsta.adb: Likewise. + * libgnat/g-timsta.ads: Likewise. + * libgnat/g-traceb.adb: Likewise. + * libgnat/g-traceb.ads: Likewise. + * libgnat/g-trasym.adb: Likewise. + * libgnat/g-trasym.ads: Likewise. + * libgnat/g-tty.adb: Likewise. + * libgnat/g-tty.ads: Likewise. + * libgnat/g-u3spch.adb: Likewise. + * libgnat/g-u3spch.ads: Likewise. + * libgnat/g-utf_32.adb: Likewise. + * libgnat/g-utf_32.ads: Likewise. + * libgnat/g-wispch.adb: Likewise. + * libgnat/g-wispch.ads: Likewise. + * libgnat/g-wistsp.ads: Likewise. + * libgnat/g-zspche.adb: Likewise. + * libgnat/g-zspche.ads: Likewise. + * libgnat/g-zstspl.ads: Likewise. + * libgnat/gnat.ads: Likewise. + * libgnat/i-c.adb: Likewise. + * libgnat/i-cexten.ads: Likewise. + * libgnat/i-cexten__128.ads: Likewise. + * libgnat/i-cobol.adb: Likewise. + * libgnat/i-cobol.ads: Likewise. + * libgnat/i-cpoint.adb: Likewise. + * libgnat/i-cpoint.ads: Likewise. + * libgnat/i-cstrea.adb: Likewise. + * libgnat/i-cstrea.ads: Likewise. + * libgnat/i-cstrin.adb: Likewise. + * libgnat/i-cstrin.ads: Likewise. + * libgnat/i-fortra.adb: Likewise. + * libgnat/i-pacdec.adb: Likewise. + * libgnat/i-pacdec.ads: Likewise. + * libgnat/i-vxwoio.adb: Likewise. + * libgnat/i-vxwoio.ads: Likewise. + * libgnat/i-vxwork.ads: Likewise. + * libgnat/i-vxwork__x86.ads: Likewise. + * libgnat/interfac.ads: Likewise. + * libgnat/interfac__2020.ads: Likewise. + * libgnat/memtrack.adb: Likewise. + * libgnat/s-addima.adb: Likewise. + * libgnat/s-addima.ads: Likewise. + * libgnat/s-addope.adb: Likewise. + * libgnat/s-addope.ads: Likewise. + * libgnat/s-aoinar.adb: Likewise. + * libgnat/s-aoinar.ads: Likewise. + * libgnat/s-aomoar.adb: Likewise. + * libgnat/s-aomoar.ads: Likewise. + * libgnat/s-aotase.adb: Likewise. + * libgnat/s-aotase.ads: Likewise. + * libgnat/s-aridou.adb: Likewise. + * libgnat/s-aridou.ads: Likewise. + * libgnat/s-arit128.adb: Likewise. + * libgnat/s-arit128.ads: Likewise. + * libgnat/s-arit32.adb: Likewise. + * libgnat/s-arit32.ads: Likewise. + * libgnat/s-arit64.adb: Likewise. + * libgnat/s-arit64.ads: Likewise. + * libgnat/s-assert.adb: Likewise. + * libgnat/s-assert.ads: Likewise. + * libgnat/s-atacco.adb: Likewise. + * libgnat/s-atacco.ads: Likewise. + * libgnat/s-atocou.adb: Likewise. + * libgnat/s-atocou.ads: Likewise. + * libgnat/s-atocou__builtin.adb: Likewise. + * libgnat/s-atoope.ads: Likewise. + * libgnat/s-atopex.adb: Likewise. + * libgnat/s-atopex.ads: Likewise. + * libgnat/s-atopri.adb: Likewise. + * libgnat/s-atopri.ads: Likewise. + * libgnat/s-auxdec.adb: Likewise. + * libgnat/s-auxdec.ads: Likewise. + * libgnat/s-bignum.adb: Likewise. + * libgnat/s-bignum.ads: Likewise. + * libgnat/s-bitfie.ads: Likewise. + * libgnat/s-bitops.adb: Likewise. + * libgnat/s-bitops.ads: Likewise. + * libgnat/s-bituti.adb: Likewise. + * libgnat/s-bituti.ads: Likewise. + * libgnat/s-boarop.ads: Likewise. + * libgnat/s-boustr.adb: Likewise. + * libgnat/s-boustr.ads: Likewise. + * libgnat/s-bytswa.ads: Likewise. + * libgnat/s-carsi8.adb: Likewise. + * libgnat/s-carsi8.ads: Likewise. + * libgnat/s-carun8.adb: Likewise. + * libgnat/s-carun8.ads: Likewise. + * libgnat/s-casi128.adb: Likewise. + * libgnat/s-casi128.ads: Likewise. + * libgnat/s-casi16.adb: Likewise. + * libgnat/s-casi16.ads: Likewise. + * libgnat/s-casi32.adb: Likewise. + * libgnat/s-casi32.ads: Likewise. + * libgnat/s-casi64.adb: Likewise. + * libgnat/s-casi64.ads: Likewise. + * libgnat/s-casuti.adb: Likewise. + * libgnat/s-casuti.ads: Likewise. + * libgnat/s-caun128.adb: Likewise. + * libgnat/s-caun128.ads: Likewise. + * libgnat/s-caun16.adb: Likewise. + * libgnat/s-caun16.ads: Likewise. + * libgnat/s-caun32.adb: Likewise. + * libgnat/s-caun32.ads: Likewise. + * libgnat/s-caun64.adb: Likewise. + * libgnat/s-caun64.ads: Likewise. + * libgnat/s-chepoo.ads: Likewise. + * libgnat/s-commun.adb: Likewise. + * libgnat/s-commun.ads: Likewise. + * libgnat/s-conca2.adb: Likewise. + * libgnat/s-conca2.ads: Likewise. + * libgnat/s-conca3.adb: Likewise. + * libgnat/s-conca3.ads: Likewise. + * libgnat/s-conca4.adb: Likewise. + * libgnat/s-conca4.ads: Likewise. + * libgnat/s-conca5.adb: Likewise. + * libgnat/s-conca5.ads: Likewise. + * libgnat/s-conca6.adb: Likewise. + * libgnat/s-conca6.ads: Likewise. + * libgnat/s-conca7.adb: Likewise. + * libgnat/s-conca7.ads: Likewise. + * libgnat/s-conca8.adb: Likewise. + * libgnat/s-conca8.ads: Likewise. + * libgnat/s-conca9.adb: Likewise. + * libgnat/s-conca9.ads: Likewise. + * libgnat/s-crc32.adb: Likewise. + * libgnat/s-crc32.ads: Likewise. + * libgnat/s-crtl.ads: Likewise. + * libgnat/s-dfmkio.ads: Likewise. + * libgnat/s-dfmopr.ads: Likewise. + * libgnat/s-dgmgop.ads: Likewise. + * libgnat/s-diflio.adb: Likewise. + * libgnat/s-diflio.ads: Likewise. + * libgnat/s-diflmk.ads: Likewise. + * libgnat/s-digemk.ads: Likewise. + * libgnat/s-diinio.adb: Likewise. + * libgnat/s-diinio.ads: Likewise. + * libgnat/s-dilomk.ads: Likewise. + * libgnat/s-dim.ads: Likewise. + * libgnat/s-dimkio.ads: Likewise. + * libgnat/s-dimmks.ads: Likewise. + * libgnat/s-direio.adb: Likewise. + * libgnat/s-direio.ads: Likewise. + * libgnat/s-dlmkio.ads: Likewise. + * libgnat/s-dlmopr.ads: Likewise. + * libgnat/s-dmotpr.ads: Likewise. + * libgnat/s-dorepr.adb: Likewise. + * libgnat/s-dorepr__fma.adb: Likewise. + * libgnat/s-dourea.adb: Likewise. + * libgnat/s-dourea.ads: Likewise. + * libgnat/s-dsaser.ads: Likewise. + * libgnat/s-dwalin.adb: Likewise. + * libgnat/s-dwalin.ads: Likewise. + * libgnat/s-elaall.adb: Likewise. + * libgnat/s-elaall.ads: Likewise. + * libgnat/s-excdeb.adb: Likewise. + * libgnat/s-excdeb.ads: Likewise. + * libgnat/s-except.adb: Likewise. + * libgnat/s-except.ads: Likewise. + * libgnat/s-excmac__arm.adb: Likewise. + * libgnat/s-excmac__arm.ads: Likewise. + * libgnat/s-excmac__gcc.adb: Likewise. + * libgnat/s-excmac__gcc.ads: Likewise. + * libgnat/s-exctab.adb: Likewise. + * libgnat/s-exctab.ads: Likewise. + * libgnat/s-exctra.adb: Likewise. + * libgnat/s-exctra.ads: Likewise. + * libgnat/s-exnflt.ads: Likewise. + * libgnat/s-exnint.adb: Likewise. + * libgnat/s-exnint.ads: Likewise. + * libgnat/s-exnlfl.ads: Likewise. + * libgnat/s-exnllf.adb: Likewise. + * libgnat/s-exnllf.ads: Likewise. + * libgnat/s-exnlli.adb: Likewise. + * libgnat/s-exnlli.ads: Likewise. + * libgnat/s-exnllli.ads: Likewise. + * libgnat/s-expint.adb: Likewise. + * libgnat/s-expint.ads: Likewise. + * libgnat/s-explli.adb: Likewise. + * libgnat/s-explli.ads: Likewise. + * libgnat/s-expllli.ads: Likewise. + * libgnat/s-explllu.ads: Likewise. + * libgnat/s-expllu.adb: Likewise. + * libgnat/s-expllu.ads: Likewise. + * libgnat/s-expmod.adb: Likewise. + * libgnat/s-expmod.ads: Likewise. + * libgnat/s-exponn.adb: Likewise. + * libgnat/s-exponn.ads: Likewise. + * libgnat/s-exponr.adb: Likewise. + * libgnat/s-exponr.ads: Likewise. + * libgnat/s-expont.adb: Likewise. + * libgnat/s-expont.ads: Likewise. + * libgnat/s-exponu.adb: Likewise. + * libgnat/s-exponu.ads: Likewise. + * libgnat/s-expuns.adb: Likewise. + * libgnat/s-expuns.ads: Likewise. + * libgnat/s-fatflt.ads: Likewise. + * libgnat/s-fatgen.adb: Likewise. + * libgnat/s-fatgen.ads: Likewise. + * libgnat/s-fatlfl.ads: Likewise. + * libgnat/s-fatllf.ads: Likewise. + * libgnat/s-ficobl.ads: Likewise. + * libgnat/s-filatt.ads: Likewise. + * libgnat/s-fileio.adb: Likewise. + * libgnat/s-fileio.ads: Likewise. + * libgnat/s-finmas.adb: Likewise. + * libgnat/s-finmas.ads: Likewise. + * libgnat/s-finroo.adb: Likewise. + * libgnat/s-finroo.ads: Likewise. + * libgnat/s-flocon.adb: Likewise. + * libgnat/s-flocon.ads: Likewise. + * libgnat/s-flocon__none.adb: Likewise. + * libgnat/s-fode128.ads: Likewise. + * libgnat/s-fode32.ads: Likewise. + * libgnat/s-fode64.ads: Likewise. + * libgnat/s-fofi128.ads: Likewise. + * libgnat/s-fofi32.ads: Likewise. + * libgnat/s-fofi64.ads: Likewise. + * libgnat/s-fore_d.adb: Likewise. + * libgnat/s-fore_d.ads: Likewise. + * libgnat/s-fore_f.adb: Likewise. + * libgnat/s-fore_f.ads: Likewise. + * libgnat/s-forrea.adb: Likewise. + * libgnat/s-forrea.ads: Likewise. + * libgnat/s-gearop.adb: Likewise. + * libgnat/s-gearop.ads: Likewise. + * libgnat/s-genbig.adb: Likewise. + * libgnat/s-genbig.ads: Likewise. + * libgnat/s-geveop.adb: Likewise. + * libgnat/s-geveop.ads: Likewise. + * libgnat/s-gloloc.adb: Likewise. + * libgnat/s-gloloc.ads: Likewise. + * libgnat/s-gloloc__mingw.adb: Likewise. + * libgnat/s-htable.adb: Likewise. + * libgnat/s-htable.ads: Likewise. + * libgnat/s-imageb.adb: Likewise. + * libgnat/s-imageb.ads: Likewise. + * libgnat/s-imaged.adb: Likewise. + * libgnat/s-imaged.ads: Likewise. + * libgnat/s-imagef.adb: Likewise. + * libgnat/s-imagef.ads: Likewise. + * libgnat/s-imagei.adb: Likewise. + * libgnat/s-imagei.ads: Likewise. + * libgnat/s-imagen.adb: Likewise. + * libgnat/s-imagen.ads: Likewise. + * libgnat/s-imager.adb: Likewise. + * libgnat/s-imager.ads: Likewise. + * libgnat/s-imageu.adb: Likewise. + * libgnat/s-imageu.ads: Likewise. + * libgnat/s-imagew.adb: Likewise. + * libgnat/s-imagew.ads: Likewise. + * libgnat/s-imde128.ads: Likewise. + * libgnat/s-imde32.ads: Likewise. + * libgnat/s-imde64.ads: Likewise. + * libgnat/s-imen16.ads: Likewise. + * libgnat/s-imen32.ads: Likewise. + * libgnat/s-imenu8.ads: Likewise. + * libgnat/s-imfi128.ads: Likewise. + * libgnat/s-imfi32.ads: Likewise. + * libgnat/s-imfi64.ads: Likewise. + * libgnat/s-imgbiu.adb: Likewise. + * libgnat/s-imgbiu.ads: Likewise. + * libgnat/s-imgboo.adb: Likewise. + * libgnat/s-imgboo.ads: Likewise. + * libgnat/s-imgcha.adb: Likewise. + * libgnat/s-imgcha.ads: Likewise. + * libgnat/s-imgflt.ads: Likewise. + * libgnat/s-imgint.adb: Likewise. + * libgnat/s-imgint.ads: Likewise. + * libgnat/s-imglfl.ads: Likewise. + * libgnat/s-imgllb.adb: Likewise. + * libgnat/s-imgllb.ads: Likewise. + * libgnat/s-imgllf.ads: Likewise. + * libgnat/s-imglli.adb: Likewise. + * libgnat/s-imglli.ads: Likewise. + * libgnat/s-imglllb.ads: Likewise. + * libgnat/s-imgllli.ads: Likewise. + * libgnat/s-imglllu.ads: Likewise. + * libgnat/s-imglllw.ads: Likewise. + * libgnat/s-imgllu.adb: Likewise. + * libgnat/s-imgllu.ads: Likewise. + * libgnat/s-imgllw.adb: Likewise. + * libgnat/s-imgllw.ads: Likewise. + * libgnat/s-imgrea.adb: Likewise. + * libgnat/s-imgrea.ads: Likewise. + * libgnat/s-imguns.adb: Likewise. + * libgnat/s-imguns.ads: Likewise. + * libgnat/s-imguti.adb: Likewise. + * libgnat/s-imguti.ads: Likewise. + * libgnat/s-imgwch.adb: Likewise. + * libgnat/s-imgwch.ads: Likewise. + * libgnat/s-imgwiu.adb: Likewise. + * libgnat/s-imgwiu.ads: Likewise. + * libgnat/s-io.adb: Likewise. + * libgnat/s-io.ads: Likewise. + * libgnat/s-llflex.ads: Likewise. + * libgnat/s-maccod.ads: Likewise. + * libgnat/s-mantis.adb: Likewise. + * libgnat/s-mantis.ads: Likewise. + * libgnat/s-mastop.adb: Likewise. + * libgnat/s-mastop.ads: Likewise. + * libgnat/s-memcop.ads: Likewise. + * libgnat/s-memory.adb: Likewise. + * libgnat/s-memory.ads: Likewise. + * libgnat/s-mmap.adb: Likewise. + * libgnat/s-mmap.ads: Likewise. + * libgnat/s-mmauni__long.ads: Likewise. + * libgnat/s-mmosin__mingw.adb: Likewise. + * libgnat/s-mmosin__mingw.ads: Likewise. + * libgnat/s-mmosin__unix.adb: Likewise. + * libgnat/s-mmosin__unix.ads: Likewise. + * libgnat/s-multip.adb: Likewise. + * libgnat/s-objrea.adb: Likewise. + * libgnat/s-objrea.ads: Likewise. + * libgnat/s-optide.adb: Likewise. + * libgnat/s-os_lib.adb: Likewise. + * libgnat/s-os_lib.ads: Likewise. + * libgnat/s-osprim.ads: Likewise. + * libgnat/s-osprim__darwin.adb: Likewise. + * libgnat/s-osprim__lynxos.ads: Likewise. + * libgnat/s-osprim__mingw.adb: Likewise. + * libgnat/s-osprim__posix.adb: Likewise. + * libgnat/s-osprim__posix2008.adb: Likewise. + * libgnat/s-osprim__rtems.adb: Likewise. + * libgnat/s-osprim__solaris.adb: Likewise. + * libgnat/s-osprim__unix.adb: Likewise. + * libgnat/s-osprim__x32.adb: Likewise. + * libgnat/s-pack03.adb: Likewise. + * libgnat/s-pack03.ads: Likewise. + * libgnat/s-pack05.adb: Likewise. + * libgnat/s-pack05.ads: Likewise. + * libgnat/s-pack06.adb: Likewise. + * libgnat/s-pack06.ads: Likewise. + * libgnat/s-pack07.adb: Likewise. + * libgnat/s-pack07.ads: Likewise. + * libgnat/s-pack09.adb: Likewise. + * libgnat/s-pack09.ads: Likewise. + * libgnat/s-pack10.adb: Likewise. + * libgnat/s-pack10.ads: Likewise. + * libgnat/s-pack100.adb: Likewise. + * libgnat/s-pack100.ads: Likewise. + * libgnat/s-pack101.adb: Likewise. + * libgnat/s-pack101.ads: Likewise. + * libgnat/s-pack102.adb: Likewise. + * libgnat/s-pack102.ads: Likewise. + * libgnat/s-pack103.adb: Likewise. + * libgnat/s-pack103.ads: Likewise. + * libgnat/s-pack104.adb: Likewise. + * libgnat/s-pack104.ads: Likewise. + * libgnat/s-pack105.adb: Likewise. + * libgnat/s-pack105.ads: Likewise. + * libgnat/s-pack106.adb: Likewise. + * libgnat/s-pack106.ads: Likewise. + * libgnat/s-pack107.adb: Likewise. + * libgnat/s-pack107.ads: Likewise. + * libgnat/s-pack108.adb: Likewise. + * libgnat/s-pack108.ads: Likewise. + * libgnat/s-pack109.adb: Likewise. + * libgnat/s-pack109.ads: Likewise. + * libgnat/s-pack11.adb: Likewise. + * libgnat/s-pack11.ads: Likewise. + * libgnat/s-pack110.adb: Likewise. + * libgnat/s-pack110.ads: Likewise. + * libgnat/s-pack111.adb: Likewise. + * libgnat/s-pack111.ads: Likewise. + * libgnat/s-pack112.adb: Likewise. + * libgnat/s-pack112.ads: Likewise. + * libgnat/s-pack113.adb: Likewise. + * libgnat/s-pack113.ads: Likewise. + * libgnat/s-pack114.adb: Likewise. + * libgnat/s-pack114.ads: Likewise. + * libgnat/s-pack115.adb: Likewise. + * libgnat/s-pack115.ads: Likewise. + * libgnat/s-pack116.adb: Likewise. + * libgnat/s-pack116.ads: Likewise. + * libgnat/s-pack117.adb: Likewise. + * libgnat/s-pack117.ads: Likewise. + * libgnat/s-pack118.adb: Likewise. + * libgnat/s-pack118.ads: Likewise. + * libgnat/s-pack119.adb: Likewise. + * libgnat/s-pack119.ads: Likewise. + * libgnat/s-pack12.adb: Likewise. + * libgnat/s-pack12.ads: Likewise. + * libgnat/s-pack120.adb: Likewise. + * libgnat/s-pack120.ads: Likewise. + * libgnat/s-pack121.adb: Likewise. + * libgnat/s-pack121.ads: Likewise. + * libgnat/s-pack122.adb: Likewise. + * libgnat/s-pack122.ads: Likewise. + * libgnat/s-pack123.adb: Likewise. + * libgnat/s-pack123.ads: Likewise. + * libgnat/s-pack124.adb: Likewise. + * libgnat/s-pack124.ads: Likewise. + * libgnat/s-pack125.adb: Likewise. + * libgnat/s-pack125.ads: Likewise. + * libgnat/s-pack126.adb: Likewise. + * libgnat/s-pack126.ads: Likewise. + * libgnat/s-pack127.adb: Likewise. + * libgnat/s-pack127.ads: Likewise. + * libgnat/s-pack13.adb: Likewise. + * libgnat/s-pack13.ads: Likewise. + * libgnat/s-pack14.adb: Likewise. + * libgnat/s-pack14.ads: Likewise. + * libgnat/s-pack15.adb: Likewise. + * libgnat/s-pack15.ads: Likewise. + * libgnat/s-pack17.adb: Likewise. + * libgnat/s-pack17.ads: Likewise. + * libgnat/s-pack18.adb: Likewise. + * libgnat/s-pack18.ads: Likewise. + * libgnat/s-pack19.adb: Likewise. + * libgnat/s-pack19.ads: Likewise. + * libgnat/s-pack20.adb: Likewise. + * libgnat/s-pack20.ads: Likewise. + * libgnat/s-pack21.adb: Likewise. + * libgnat/s-pack21.ads: Likewise. + * libgnat/s-pack22.adb: Likewise. + * libgnat/s-pack22.ads: Likewise. + * libgnat/s-pack23.adb: Likewise. + * libgnat/s-pack23.ads: Likewise. + * libgnat/s-pack24.adb: Likewise. + * libgnat/s-pack24.ads: Likewise. + * libgnat/s-pack25.adb: Likewise. + * libgnat/s-pack25.ads: Likewise. + * libgnat/s-pack26.adb: Likewise. + * libgnat/s-pack26.ads: Likewise. + * libgnat/s-pack27.adb: Likewise. + * libgnat/s-pack27.ads: Likewise. + * libgnat/s-pack28.adb: Likewise. + * libgnat/s-pack28.ads: Likewise. + * libgnat/s-pack29.adb: Likewise. + * libgnat/s-pack29.ads: Likewise. + * libgnat/s-pack30.adb: Likewise. + * libgnat/s-pack30.ads: Likewise. + * libgnat/s-pack31.adb: Likewise. + * libgnat/s-pack31.ads: Likewise. + * libgnat/s-pack33.adb: Likewise. + * libgnat/s-pack33.ads: Likewise. + * libgnat/s-pack34.adb: Likewise. + * libgnat/s-pack34.ads: Likewise. + * libgnat/s-pack35.adb: Likewise. + * libgnat/s-pack35.ads: Likewise. + * libgnat/s-pack36.adb: Likewise. + * libgnat/s-pack36.ads: Likewise. + * libgnat/s-pack37.adb: Likewise. + * libgnat/s-pack37.ads: Likewise. + * libgnat/s-pack38.adb: Likewise. + * libgnat/s-pack38.ads: Likewise. + * libgnat/s-pack39.adb: Likewise. + * libgnat/s-pack39.ads: Likewise. + * libgnat/s-pack40.adb: Likewise. + * libgnat/s-pack40.ads: Likewise. + * libgnat/s-pack41.adb: Likewise. + * libgnat/s-pack41.ads: Likewise. + * libgnat/s-pack42.adb: Likewise. + * libgnat/s-pack42.ads: Likewise. + * libgnat/s-pack43.adb: Likewise. + * libgnat/s-pack43.ads: Likewise. + * libgnat/s-pack44.adb: Likewise. + * libgnat/s-pack44.ads: Likewise. + * libgnat/s-pack45.adb: Likewise. + * libgnat/s-pack45.ads: Likewise. + * libgnat/s-pack46.adb: Likewise. + * libgnat/s-pack46.ads: Likewise. + * libgnat/s-pack47.adb: Likewise. + * libgnat/s-pack47.ads: Likewise. + * libgnat/s-pack48.adb: Likewise. + * libgnat/s-pack48.ads: Likewise. + * libgnat/s-pack49.adb: Likewise. + * libgnat/s-pack49.ads: Likewise. + * libgnat/s-pack50.adb: Likewise. + * libgnat/s-pack50.ads: Likewise. + * libgnat/s-pack51.adb: Likewise. + * libgnat/s-pack51.ads: Likewise. + * libgnat/s-pack52.adb: Likewise. + * libgnat/s-pack52.ads: Likewise. + * libgnat/s-pack53.adb: Likewise. + * libgnat/s-pack53.ads: Likewise. + * libgnat/s-pack54.adb: Likewise. + * libgnat/s-pack54.ads: Likewise. + * libgnat/s-pack55.adb: Likewise. + * libgnat/s-pack55.ads: Likewise. + * libgnat/s-pack56.adb: Likewise. + * libgnat/s-pack56.ads: Likewise. + * libgnat/s-pack57.adb: Likewise. + * libgnat/s-pack57.ads: Likewise. + * libgnat/s-pack58.adb: Likewise. + * libgnat/s-pack58.ads: Likewise. + * libgnat/s-pack59.adb: Likewise. + * libgnat/s-pack59.ads: Likewise. + * libgnat/s-pack60.adb: Likewise. + * libgnat/s-pack60.ads: Likewise. + * libgnat/s-pack61.adb: Likewise. + * libgnat/s-pack61.ads: Likewise. + * libgnat/s-pack62.adb: Likewise. + * libgnat/s-pack62.ads: Likewise. + * libgnat/s-pack63.adb: Likewise. + * libgnat/s-pack63.ads: Likewise. + * libgnat/s-pack65.adb: Likewise. + * libgnat/s-pack65.ads: Likewise. + * libgnat/s-pack66.adb: Likewise. + * libgnat/s-pack66.ads: Likewise. + * libgnat/s-pack67.adb: Likewise. + * libgnat/s-pack67.ads: Likewise. + * libgnat/s-pack68.adb: Likewise. + * libgnat/s-pack68.ads: Likewise. + * libgnat/s-pack69.adb: Likewise. + * libgnat/s-pack69.ads: Likewise. + * libgnat/s-pack70.adb: Likewise. + * libgnat/s-pack70.ads: Likewise. + * libgnat/s-pack71.adb: Likewise. + * libgnat/s-pack71.ads: Likewise. + * libgnat/s-pack72.adb: Likewise. + * libgnat/s-pack72.ads: Likewise. + * libgnat/s-pack73.adb: Likewise. + * libgnat/s-pack73.ads: Likewise. + * libgnat/s-pack74.adb: Likewise. + * libgnat/s-pack74.ads: Likewise. + * libgnat/s-pack75.adb: Likewise. + * libgnat/s-pack75.ads: Likewise. + * libgnat/s-pack76.adb: Likewise. + * libgnat/s-pack76.ads: Likewise. + * libgnat/s-pack77.adb: Likewise. + * libgnat/s-pack77.ads: Likewise. + * libgnat/s-pack78.adb: Likewise. + * libgnat/s-pack78.ads: Likewise. + * libgnat/s-pack79.adb: Likewise. + * libgnat/s-pack79.ads: Likewise. + * libgnat/s-pack80.adb: Likewise. + * libgnat/s-pack80.ads: Likewise. + * libgnat/s-pack81.adb: Likewise. + * libgnat/s-pack81.ads: Likewise. + * libgnat/s-pack82.adb: Likewise. + * libgnat/s-pack82.ads: Likewise. + * libgnat/s-pack83.adb: Likewise. + * libgnat/s-pack83.ads: Likewise. + * libgnat/s-pack84.adb: Likewise. + * libgnat/s-pack84.ads: Likewise. + * libgnat/s-pack85.adb: Likewise. + * libgnat/s-pack85.ads: Likewise. + * libgnat/s-pack86.adb: Likewise. + * libgnat/s-pack86.ads: Likewise. + * libgnat/s-pack87.adb: Likewise. + * libgnat/s-pack87.ads: Likewise. + * libgnat/s-pack88.adb: Likewise. + * libgnat/s-pack88.ads: Likewise. + * libgnat/s-pack89.adb: Likewise. + * libgnat/s-pack89.ads: Likewise. + * libgnat/s-pack90.adb: Likewise. + * libgnat/s-pack90.ads: Likewise. + * libgnat/s-pack91.adb: Likewise. + * libgnat/s-pack91.ads: Likewise. + * libgnat/s-pack92.adb: Likewise. + * libgnat/s-pack92.ads: Likewise. + * libgnat/s-pack93.adb: Likewise. + * libgnat/s-pack93.ads: Likewise. + * libgnat/s-pack94.adb: Likewise. + * libgnat/s-pack94.ads: Likewise. + * libgnat/s-pack95.adb: Likewise. + * libgnat/s-pack95.ads: Likewise. + * libgnat/s-pack96.adb: Likewise. + * libgnat/s-pack96.ads: Likewise. + * libgnat/s-pack97.adb: Likewise. + * libgnat/s-pack97.ads: Likewise. + * libgnat/s-pack98.adb: Likewise. + * libgnat/s-pack98.ads: Likewise. + * libgnat/s-pack99.adb: Likewise. + * libgnat/s-pack99.ads: Likewise. + * libgnat/s-parame.adb: Likewise. + * libgnat/s-parame.ads: Likewise. + * libgnat/s-parame__hpux.ads: Likewise. + * libgnat/s-parame__posix2008.ads: Likewise. + * libgnat/s-parame__rtems.adb: Likewise. + * libgnat/s-parame__vxworks.adb: Likewise. + * libgnat/s-parame__vxworks.ads: Likewise. + * libgnat/s-parint.adb: Likewise. + * libgnat/s-parint.ads: Likewise. + * libgnat/s-pehage.adb: Likewise. + * libgnat/s-pehage.ads: Likewise. + * libgnat/s-pooglo.adb: Likewise. + * libgnat/s-pooglo.ads: Likewise. + * libgnat/s-pooloc.adb: Likewise. + * libgnat/s-pooloc.ads: Likewise. + * libgnat/s-poosiz.adb: Likewise. + * libgnat/s-poosiz.ads: Likewise. + * libgnat/s-powflt.ads: Likewise. + * libgnat/s-powlfl.ads: Likewise. + * libgnat/s-powllf.ads: Likewise. + * libgnat/s-purexc.ads: Likewise. + * libgnat/s-putima.adb: Likewise. + * libgnat/s-putima.ads: Likewise. + * libgnat/s-rannum.adb: Likewise. + * libgnat/s-rannum.ads: Likewise. + * libgnat/s-ransee.adb: Likewise. + * libgnat/s-ransee.ads: Likewise. + * libgnat/s-regexp.adb: Likewise. + * libgnat/s-regexp.ads: Likewise. + * libgnat/s-regpat.adb: Likewise. + * libgnat/s-regpat.ads: Likewise. + * libgnat/s-resfil.adb: Likewise. + * libgnat/s-resfil.ads: Likewise. + * libgnat/s-restri.adb: Likewise. + * libgnat/s-restri.ads: Likewise. + * libgnat/s-rident.ads: Likewise. + * libgnat/s-rpc.adb: Likewise. + * libgnat/s-rpc.ads: Likewise. + * libgnat/s-scaval.adb: Likewise. + * libgnat/s-scaval.ads: Likewise. + * libgnat/s-scaval__128.adb: Likewise. + * libgnat/s-scaval__128.ads: Likewise. + * libgnat/s-secsta.adb: Likewise. + * libgnat/s-secsta.ads: Likewise. + * libgnat/s-sequio.adb: Likewise. + * libgnat/s-sequio.ads: Likewise. + * libgnat/s-shabig.ads: Likewise. + * libgnat/s-shasto.adb: Likewise. + * libgnat/s-shasto.ads: Likewise. + * libgnat/s-soflin.adb: Likewise. + * libgnat/s-soflin.ads: Likewise. + * libgnat/s-soliin.adb: Likewise. + * libgnat/s-soliin.ads: Likewise. + * libgnat/s-spsufi.adb: Likewise. + * libgnat/s-spsufi.ads: Likewise. + * libgnat/s-stache.adb: Likewise. + * libgnat/s-stache.ads: Likewise. + * libgnat/s-stalib.adb: Likewise. + * libgnat/s-stalib.ads: Likewise. + * libgnat/s-statxd.adb: Likewise. + * libgnat/s-statxd.ads: Likewise. + * libgnat/s-stausa.adb: Likewise. + * libgnat/s-stausa.ads: Likewise. + * libgnat/s-stchop.adb: Likewise. + * libgnat/s-stchop.ads: Likewise. + * libgnat/s-stchop__limit.ads: Likewise. + * libgnat/s-stchop__vxworks.adb: Likewise. + * libgnat/s-stoele.adb: Likewise. + * libgnat/s-stoele.ads: Likewise. + * libgnat/s-stopoo.adb: Likewise. + * libgnat/s-stopoo.ads: Likewise. + * libgnat/s-stposu.adb: Likewise. + * libgnat/s-stposu.ads: Likewise. + * libgnat/s-stratt.adb: Likewise. + * libgnat/s-stratt.ads: Likewise. + * libgnat/s-strcom.adb: Likewise. + * libgnat/s-strcom.ads: Likewise. + * libgnat/s-strhas.adb: Likewise. + * libgnat/s-strhas.ads: Likewise. + * libgnat/s-string.adb: Likewise. + * libgnat/s-string.ads: Likewise. + * libgnat/s-ststop.adb: Likewise. + * libgnat/s-ststop.ads: Likewise. + * libgnat/s-tasloc.adb: Likewise. + * libgnat/s-tasloc.ads: Likewise. + * libgnat/s-traceb.adb: Likewise. + * libgnat/s-traceb.ads: Likewise. + * libgnat/s-traceb__hpux.adb: Likewise. + * libgnat/s-traceb__mastop.adb: Likewise. + * libgnat/s-traent.adb: Likewise. + * libgnat/s-traent.ads: Likewise. + * libgnat/s-trasym.adb: Likewise. + * libgnat/s-trasym.ads: Likewise. + * libgnat/s-trasym__dwarf.adb: Likewise. + * libgnat/s-tsmona.adb: Likewise. + * libgnat/s-tsmona__linux.adb: Likewise. + * libgnat/s-tsmona__mingw.adb: Likewise. + * libgnat/s-unstyp.ads: Likewise. + * libgnat/s-utf_32.adb: Likewise. + * libgnat/s-utf_32.ads: Likewise. + * libgnat/s-vade128.ads: Likewise. + * libgnat/s-vade32.ads: Likewise. + * libgnat/s-vade64.ads: Likewise. + * libgnat/s-vaen16.ads: Likewise. + * libgnat/s-vaen32.ads: Likewise. + * libgnat/s-vaenu8.ads: Likewise. + * libgnat/s-vafi128.ads: Likewise. + * libgnat/s-vafi32.ads: Likewise. + * libgnat/s-vafi64.ads: Likewise. + * libgnat/s-valboo.adb: Likewise. + * libgnat/s-valboo.ads: Likewise. + * libgnat/s-valcha.adb: Likewise. + * libgnat/s-valcha.ads: Likewise. + * libgnat/s-valflt.ads: Likewise. + * libgnat/s-valint.adb: Likewise. + * libgnat/s-valint.ads: Likewise. + * libgnat/s-vallfl.ads: Likewise. + * libgnat/s-valllf.ads: Likewise. + * libgnat/s-vallli.adb: Likewise. + * libgnat/s-vallli.ads: Likewise. + * libgnat/s-valllli.ads: Likewise. + * libgnat/s-vallllu.ads: Likewise. + * libgnat/s-valllu.adb: Likewise. + * libgnat/s-valllu.ads: Likewise. + * libgnat/s-valrea.adb: Likewise. + * libgnat/s-valrea.ads: Likewise. + * libgnat/s-valued.adb: Likewise. + * libgnat/s-valued.ads: Likewise. + * libgnat/s-valuef.adb: Likewise. + * libgnat/s-valuef.ads: Likewise. + * libgnat/s-valuei.adb: Likewise. + * libgnat/s-valuei.ads: Likewise. + * libgnat/s-valuen.adb: Likewise. + * libgnat/s-valuen.ads: Likewise. + * libgnat/s-valuer.adb: Likewise. + * libgnat/s-valuer.ads: Likewise. + * libgnat/s-valueu.adb: Likewise. + * libgnat/s-valueu.ads: Likewise. + * libgnat/s-valuns.adb: Likewise. + * libgnat/s-valuns.ads: Likewise. + * libgnat/s-valuti.adb: Likewise. + * libgnat/s-valuti.ads: Likewise. + * libgnat/s-valwch.adb: Likewise. + * libgnat/s-valwch.ads: Likewise. + * libgnat/s-veboop.adb: Likewise. + * libgnat/s-veboop.ads: Likewise. + * libgnat/s-vector.ads: Likewise. + * libgnat/s-vercon.adb: Likewise. + * libgnat/s-vercon.ads: Likewise. + * libgnat/s-wchcnv.adb: Likewise. + * libgnat/s-wchcnv.ads: Likewise. + * libgnat/s-wchcon.adb: Likewise. + * libgnat/s-wchcon.ads: Likewise. + * libgnat/s-wchjis.adb: Likewise. + * libgnat/s-wchjis.ads: Likewise. + * libgnat/s-wchstw.adb: Likewise. + * libgnat/s-wchstw.ads: Likewise. + * libgnat/s-wchwts.adb: Likewise. + * libgnat/s-wchwts.ads: Likewise. + * libgnat/s-widboo.adb: Likewise. + * libgnat/s-widboo.ads: Likewise. + * libgnat/s-widcha.adb: Likewise. + * libgnat/s-widcha.ads: Likewise. + * libgnat/s-widenu.adb: Likewise. + * libgnat/s-widenu.ads: Likewise. + * libgnat/s-widint.ads: Likewise. + * libgnat/s-widlli.adb: Likewise. + * libgnat/s-widlli.ads: Likewise. + * libgnat/s-widllli.ads: Likewise. + * libgnat/s-widlllu.ads: Likewise. + * libgnat/s-widllu.adb: Likewise. + * libgnat/s-widllu.ads: Likewise. + * libgnat/s-widthi.adb: Likewise. + * libgnat/s-widthi.ads: Likewise. + * libgnat/s-widthu.adb: Likewise. + * libgnat/s-widthu.ads: Likewise. + * libgnat/s-widuns.ads: Likewise. + * libgnat/s-widwch.adb: Likewise. + * libgnat/s-widwch.ads: Likewise. + * libgnat/s-win32.ads: Likewise. + * libgnat/s-winext.ads: Likewise. + * libgnat/s-wwdcha.adb: Likewise. + * libgnat/s-wwdcha.ads: Likewise. + * libgnat/s-wwdenu.adb: Likewise. + * libgnat/s-wwdenu.ads: Likewise. + * libgnat/s-wwdwch.adb: Likewise. + * libgnat/s-wwdwch.ads: Likewise. + * libgnat/system-aix.ads: Likewise. + * libgnat/system-darwin-arm.ads: Likewise. + * libgnat/system-darwin-ppc.ads: Likewise. + * libgnat/system-darwin-x86.ads: Likewise. + * libgnat/system-djgpp.ads: Likewise. + * libgnat/system-dragonfly-x86_64.ads: Likewise. + * libgnat/system-freebsd.ads: Likewise. + * libgnat/system-hpux-ia64.ads: Likewise. + * libgnat/system-hpux.ads: Likewise. + * libgnat/system-linux-alpha.ads: Likewise. + * libgnat/system-linux-arm.ads: Likewise. + * libgnat/system-linux-hppa.ads: Likewise. + * libgnat/system-linux-ia64.ads: Likewise. + * libgnat/system-linux-m68k.ads: Likewise. + * libgnat/system-linux-mips.ads: Likewise. + * libgnat/system-linux-ppc.ads: Likewise. + * libgnat/system-linux-riscv.ads: Likewise. + * libgnat/system-linux-s390.ads: Likewise. + * libgnat/system-linux-sh4.ads: Likewise. + * libgnat/system-linux-sparc.ads: Likewise. + * libgnat/system-linux-x86.ads: Likewise. + * libgnat/system-lynxos178-ppc.ads: Likewise. + * libgnat/system-lynxos178-x86.ads: Likewise. + * libgnat/system-mingw.ads: Likewise. + * libgnat/system-qnx-aarch64.ads: Likewise. + * libgnat/system-rtems.ads: Likewise. + * libgnat/system-solaris-sparc.ads: Likewise. + * libgnat/system-solaris-x86.ads: Likewise. + * libgnat/system-vxworks-arm-rtp-smp.ads: Likewise. + * libgnat/system-vxworks-arm-rtp.ads: Likewise. + * libgnat/system-vxworks-arm.ads: Likewise. + * libgnat/system-vxworks-e500-kernel.ads: Likewise. + * libgnat/system-vxworks-e500-rtp-smp.ads: Likewise. + * libgnat/system-vxworks-e500-rtp.ads: Likewise. + * libgnat/system-vxworks-ppc-kernel.ads: Likewise. + * libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise. + * libgnat/system-vxworks-ppc-rtp.ads: Likewise. + * libgnat/system-vxworks-x86-kernel.ads: Likewise. + * libgnat/system-vxworks-x86-rtp-smp.ads: Likewise. + * libgnat/system-vxworks-x86-rtp.ads: Likewise. + * libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-aarch64.ads: Likewise. + * libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-arm.ads: Likewise. + * libgnat/system-vxworks7-e500-kernel.ads: Likewise. + * libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-e500-rtp.ads: Likewise. + * libgnat/system-vxworks7-ppc-kernel.ads: Likewise. + * libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-ppc-rtp.ads: Likewise. + * libgnat/system-vxworks7-ppc64-kernel.ads: Likewise. + * libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-x86-kernel.ads: Likewise. + * libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise. + * libgnat/system-vxworks7-x86-rtp.ads: Likewise. + * libgnat/system-vxworks7-x86_64-kernel.ads: Likewise. + * libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise. + * link.c: Likewise. + * live.adb: Likewise. + * live.ads: Likewise. + * locales.c: Likewise. + * make.adb: Likewise. + * make.ads: Likewise. + * make_util.adb: Likewise. + * make_util.ads: Likewise. + * makeusg.adb: Likewise. + * makeusg.ads: Likewise. + * mdll-fil.adb: Likewise. + * mdll-fil.ads: Likewise. + * mdll-utl.adb: Likewise. + * mdll-utl.ads: Likewise. + * mdll.adb: Likewise. + * mdll.ads: Likewise. + * mingw32.h: Likewise. + * mkdir.c: Likewise. + * namet-sp.adb: Likewise. + * namet-sp.ads: Likewise. + * namet.adb: Likewise. + * namet.ads: Likewise. + * namet.h: Likewise. + * nlists.adb: Likewise. + * nlists.ads: Likewise. + * nlists.h: Likewise. + * opt.adb: Likewise. + * opt.ads: Likewise. + * osint-b.adb: Likewise. + * osint-b.ads: Likewise. + * osint-c.adb: Likewise. + * osint-c.ads: Likewise. + * osint-l.adb: Likewise. + * osint-l.ads: Likewise. + * osint-m.adb: Likewise. + * osint-m.ads: Likewise. + * osint.adb: Likewise. + * osint.ads: Likewise. + * output.adb: Likewise. + * output.ads: Likewise. + * par-ch10.adb: Likewise. + * par-ch11.adb: Likewise. + * par-ch12.adb: Likewise. + * par-ch13.adb: Likewise. + * par-ch2.adb: Likewise. + * par-ch3.adb: Likewise. + * par-ch4.adb: Likewise. + * par-ch5.adb: Likewise. + * par-ch6.adb: Likewise. + * par-ch7.adb: Likewise. + * par-ch8.adb: Likewise. + * par-ch9.adb: Likewise. + * par-endh.adb: Likewise. + * par-labl.adb: Likewise. + * par-load.adb: Likewise. + * par-prag.adb: Likewise. + * par-sync.adb: Likewise. + * par-tchk.adb: Likewise. + * par-util.adb: Likewise. + * par.adb: Likewise. + * par.ads: Likewise. + * par_sco.adb: Likewise. + * par_sco.ads: Likewise. + * pprint.adb: Likewise. + * pprint.ads: Likewise. + * prep.adb: Likewise. + * prep.ads: Likewise. + * prepcomp.adb: Likewise. + * prepcomp.ads: Likewise. + * put_scos.adb: Likewise. + * put_scos.ads: Likewise. + * raise-gcc.c: Likewise. + * raise.c: Likewise. + * raise.h: Likewise. + * repinfo-input.adb: Likewise. + * repinfo-input.ads: Likewise. + * repinfo.adb: Likewise. + * repinfo.ads: Likewise. + * repinfo.h: Likewise. + * restrict.adb: Likewise. + * restrict.ads: Likewise. + * rident.ads: Likewise. + * rtfinal.c: Likewise. + * rtinit.c: Likewise. + * rtsfind.adb: Likewise. + * rtsfind.ads: Likewise. + * runtime.h: Likewise. + * s-oscons-tmplt.c: Likewise. + * sa_messages.adb: Likewise. + * sa_messages.ads: Likewise. + * scans.adb: Likewise. + * scans.ads: Likewise. + * scil_ll.adb: Likewise. + * scil_ll.ads: Likewise. + * scn.adb: Likewise. + * scn.ads: Likewise. + * scng.adb: Likewise. + * scng.ads: Likewise. + * scos.adb: Likewise. + * scos.ads: Likewise. + * scos.h: Likewise. + * sdefault.ads: Likewise. + * seh_init.c: Likewise. + * sem.adb: Likewise. + * sem.ads: Likewise. + * sem_aggr.adb: Likewise. + * sem_aggr.ads: Likewise. + * sem_attr.adb: Likewise. + * sem_attr.ads: Likewise. + * sem_aux.adb: Likewise. + * sem_aux.ads: Likewise. + * sem_case.adb: Likewise. + * sem_case.ads: Likewise. + * sem_cat.adb: Likewise. + * sem_cat.ads: Likewise. + * sem_ch10.adb: Likewise. + * sem_ch10.ads: Likewise. + * sem_ch11.adb: Likewise. + * sem_ch11.ads: Likewise. + * sem_ch12.adb: Likewise. + * sem_ch12.ads: Likewise. + * sem_ch13.adb: Likewise. + * sem_ch13.ads: Likewise. + * sem_ch2.adb: Likewise. + * sem_ch2.ads: Likewise. + * sem_ch3.adb: Likewise. + * sem_ch3.ads: Likewise. + * sem_ch4.adb: Likewise. + * sem_ch4.ads: Likewise. + * sem_ch5.adb: Likewise. + * sem_ch5.ads: Likewise. + * sem_ch6.adb: Likewise. + * sem_ch6.ads: Likewise. + * sem_ch7.adb: Likewise. + * sem_ch7.ads: Likewise. + * sem_ch8.adb: Likewise. + * sem_ch8.ads: Likewise. + * sem_ch9.adb: Likewise. + * sem_ch9.ads: Likewise. + * sem_dim.adb: Likewise. + * sem_dim.ads: Likewise. + * sem_disp.adb: Likewise. + * sem_disp.ads: Likewise. + * sem_dist.adb: Likewise. + * sem_dist.ads: Likewise. + * sem_elab.adb: Likewise. + * sem_elab.ads: Likewise. + * sem_elim.adb: Likewise. + * sem_elim.ads: Likewise. + * sem_eval.adb: Likewise. + * sem_eval.ads: Likewise. + * sem_intr.adb: Likewise. + * sem_intr.ads: Likewise. + * sem_mech.adb: Likewise. + * sem_mech.ads: Likewise. + * sem_prag.adb: Likewise. + * sem_prag.ads: Likewise. + * sem_res.adb: Likewise. + * sem_res.ads: Likewise. + * sem_scil.adb: Likewise. + * sem_scil.ads: Likewise. + * sem_smem.adb: Likewise. + * sem_smem.ads: Likewise. + * sem_type.adb: Likewise. + * sem_type.ads: Likewise. + * sem_util.adb: Likewise. + * sem_util.ads: Likewise. + * sem_warn.adb: Likewise. + * sem_warn.ads: Likewise. + * set_targ.adb: Likewise. + * set_targ.ads: Likewise. + * sfn_scan.adb: Likewise. + * sfn_scan.ads: Likewise. + * sigtramp-armdroid.c: Likewise. + * sigtramp-ios.c: Likewise. + * sigtramp-qnx.c: Likewise. + * sigtramp-vxworks-target.h: Likewise. + * sigtramp-vxworks.c: Likewise. + * sigtramp.h: Likewise. + * sinfo-cn.adb: Likewise. + * sinfo-cn.ads: Likewise. + * sinfo-utils.adb: Likewise. + * sinfo-utils.ads: Likewise. + * sinfo.adb: Likewise. + * sinfo.ads: Likewise. + * sinput-c.adb: Likewise. + * sinput-c.ads: Likewise. + * sinput-d.adb: Likewise. + * sinput-d.ads: Likewise. + * sinput-l.adb: Likewise. + * sinput-l.ads: Likewise. + * sinput.adb: Likewise. + * sinput.ads: Likewise. + * socket.c: Likewise. + * spark_xrefs.adb: Likewise. + * spark_xrefs.ads: Likewise. + * sprint.adb: Likewise. + * sprint.ads: Likewise. + * stand.ads: Likewise. + * stringt.adb: Likewise. + * stringt.ads: Likewise. + * stringt.h: Likewise. + * strub.adb: Likewise. + * strub.ads: Likewise. + * style.adb: Likewise. + * style.ads: Likewise. + * styleg.adb: Likewise. + * styleg.ads: Likewise. + * stylesw.adb: Likewise. + * stylesw.ads: Likewise. + * switch-b.adb: Likewise. + * switch-b.ads: Likewise. + * switch-c.adb: Likewise. + * switch-c.ads: Likewise. + * switch-m.adb: Likewise. + * switch-m.ads: Likewise. + * switch.adb: Likewise. + * switch.ads: Likewise. + * sysdep.c: Likewise. + * table.adb: Likewise. + * table.ads: Likewise. + * targext.c: Likewise. + * targparm.adb: Likewise. + * targparm.ads: Likewise. + * tbuild.adb: Likewise. + * tbuild.ads: Likewise. + * tempdir.adb: Likewise. + * tempdir.ads: Likewise. + * terminals.c: Likewise. + * tracebak.c: Likewise. + * treepr.adb: Likewise. + * treepr.ads: Likewise. + * ttypes.ads: Likewise. + * types.adb: Likewise. + * types.ads: Likewise. + * types.h: Likewise. + * uintp.adb: Likewise. + * uintp.ads: Likewise. + * uintp.h: Likewise. + * uname.adb: Likewise. + * uname.ads: Likewise. + * urealp.adb: Likewise. + * urealp.ads: Likewise. + * urealp.h: Likewise. + * usage.adb: Likewise. + * usage.ads: Likewise. + * validsw.adb: Likewise. + * validsw.ads: Likewise. + * vast.adb: Likewise. + * vast.ads: Likewise. + * warnsw.adb: Likewise. + * warnsw.ads: Likewise. + * widechar.adb: Likewise. + * widechar.ads: Likewise. + * xoscons.adb: Likewise. + * xr_tabls.adb: Likewise. + * xr_tabls.ads: Likewise. + * xref_lib.adb: Likewise. + * xref_lib.ads: Likewise. + * xsnamest.adb: Likewise. + * xutil.adb: Likewise. + * xutil.ads: Likewise. + +2022-01-11 Richard Kenner <kenner@adacore.com> + + * debug.adb: Add documentation for new -gnatd_u and old -gnatd_R + flags used for GNAT LLVM and its CCG. + +2022-01-11 Piotr Trojanek <trojanek@adacore.com> + + * Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of + System.Atomic_Counters. + * libgnat/s-atocou__x86.adb: Remove. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (Identifier_to_gnu): Use correct subtype. + (elaborate_profile): New function. + (Call_to_gnu): Call it on the formals and the result type before + retrieving the translated result type from the subprogram type. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Fix + computation of boolean result in the unchecked union case. + (components_to_record): Rename MAYBE_UNUSED parameter to IN_VARIANT + and remove local variable of the same name. Pass NULL recursively + as P_GNU_REP_LIST for nested variants in the unchecked union case. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (lvalue_required_p) <N_Pragma>: New case. + <N_Pragma_Argument_Association>: Likewise. + (Pragma_to_gnu) <Pragma_Inspection_Point>: Fetch the corresponding + variable of a constant before marking it as addressable. + +2022-01-10 Arnaud Charlet <charlet@adacore.com> + + * gcc-interface/Make-lang.in (ADA_GENERATED_FILES): Remove + s-casuti.ad?, s-crtl.ad?, s-os_lib.ad?. Update list of object + files accordingly. + +2022-01-10 Piotr Trojanek <trojanek@adacore.com> + + * libgnat/s-atopri.ads (Atomic_Compare_Exchange): Replaces + deprecated Sync_Compare_And_Swap. + * libgnat/s-atopri.adb (Lock_Free_Try_Write): Switch from __sync + to __atomic builtins. + +2022-01-10 Piotr Trojanek <trojanek@adacore.com> + + * libgnat/s-exponn.adb, libgnat/s-expont.adb, + libgnat/s-exponu.adb, libgnat/s-widthi.adb, + libgnat/s-widthu.adb: Remove CodePeer annotations for pragma + Loop_Variant. + +2022-01-10 Piotr Trojanek <trojanek@adacore.com> + + * exp_prag.adb (Expand_Pragma_Loop_Variant): Disable expansion + in CodePeer mode. + +2022-01-10 Piotr Trojanek <trojanek@adacore.com> + + * sem_util.adb (Is_Child_Or_Sibling): Fix typo in comment. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + * exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply + the canonical adjustment to its alignment. + +2022-01-10 Piotr Trojanek <trojanek@adacore.com> + + * libgnat/s-atocou__builtin.adb (Decrement, Increment): Switch + from __sync to __atomic builtins; use 'Address to be consistent + with System.Atomic_Primitives. + +2022-01-10 Eric Botcazou <ebotcazou@adacore.com> + + * exp_pakd.adb (Install_PAT): Do not reset the alignment here. + * layout.adb (Layout_Type): Call Adjust_Esize_Alignment after having + copied the RM_Size onto the Esize when the latter is too small. + +2022-01-10 Justin Squirek <squirek@adacore.com> + + * sem_warn.adb (Check_References): Handle arrays of tasks + similar to task objects. + +2022-01-07 Patrick Bernardi <bernardi@adacore.com> + + * libgnat/a-direct.adb (Search_Data): Remove type. + (Directory_Vectors): New package instantiation. + (Search_State): New type. + (Fetch_Next_Entry): Remove. + (Close): Remove. + (Finalize): Rewritten. + (Full_Name): Ditto. + (Get_Next_Entry): Return next entry from Search results vector + rather than querying the directory directly using readdir. + (Kind): Rewritten. + (Modification_Time): Rewritten. + (More_Entries): Use Search state cursor to determine if more + entries are available for users to read. + (Simple_Name): Rewritten. + (Size): Rewritten. + (Start_Search_Internal): Rewritten to load the contents of the + directory that matches the pattern and filter into the search + object. + * libgnat/a-direct.ads (Search_Type): New type. + (Search_Ptr): Ditto. + (Directory_Entry_Type): Rewritten to support new Start_Search + procedure. + * libgnat/s-filatt.ads (File_Length_Attr): New function. + +2022-01-07 Etienne Servais <servais@adacore.com> + + * sem_attr.adb (Check_Reference): Fix condition. + +2022-01-07 Ghjuvan Lacambre <lacambre@adacore.com> + + * libgnarl/s-taprop__mingw.adb (Timed_Sleep): Remove "pragma + Unreferenced" for Result. + (Timed_Delay): Likewise. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * gen_il-gen.adb (Put_Make_Decls): Put pragma Inline in a + dedicated line, so that the current indentation is taken into + account. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_aggr.adb (Build_Array_Aggr_Code): Fix inconsistent style + in comments and code. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_aggr.adb (Gen_Assign): Remove explicit initialization for + components of access types. + (Get_Assoc_Expr): Enable initialization for components of all + types that require simple initialization. + +2022-01-07 Javier Miranda <miranda@adacore.com> + + * atree.ads (Traverse_Func_With_Parent): New generic subprogram. + (Traverse_Proc_With_Parent): Likewise. + * atree.adb (Parents_Stack): New table used to traverse trees + passing the parent field of each node. + (Internal_Traverse_With_Parent): New generic subprogram. + (Traverse_Func_With_Parent): Likewise. + (Traverse_Proc_With_Parent): Likewise. + * contracts.adb (Fix_Parents): New subprogram. + (Restore_Original_Selected_Component): Enhanced to fix the + parent field of restored nodes. + (Inherit_Condition): Adding assertions to check the parent field + of inherited conditions and to ensure that the built inherited + condition has no reference to the formals of the parent + subprogram. + * sem_util.ads, sem_util.adb (Check_Parents): New subprogram. + +2022-01-07 Etienne Servais <servais@adacore.com> + + * sem_attr.adb (Check_Placement_In_Test_Case): Fix typo. + +2022-01-07 Justin Squirek <squirek@adacore.com> + + * comperr.adb (Delete_SCIL_Files): Replace unnecessary + Unreferenced pragma with specific pragma Warnings. + * doc/gnat_rm/implementation_defined_pragmas.rst (Unreferenced): + Add documentation for new behavior. + * gnat_rm.texi: Regenerate. + * erroutc.adb (Set_At): Remove useless assignment. + * exp_ch2.adb (In_Assignment_Context): Deleted. + (Is_Object_Renaming_Name): Replace calls to Is_LHS with calls to + Known_To_Be_Assigned. + (Expand_Current_Value): Replace calls to May_Be_Lvalue with + calls to Known_To_Be_Assigned. + (Expand_Entry_Paramter): Replace calls to In_Assignment_Context + with calls to Known_To_Be_Assigned. + * exp_ch4.adb (Expand_N_Op_Rem): Remove unnecessary Unreferenced + pragma. + * exp_imgv.adb (Build_Enumeration_Image_Tables): Default + initialize S_N. + * ghost.adb (Check_Ghost_Policy): Replace call to May_Be_Lvalue + with call to Known_To_Be_Assigned. + * lib-xref.adb (Is_On_LHS): Deleted. + (OK_To_Set_Referenced): Rewrite subprogram to encompass the new + pragma Unreferenced behavior. + (Process_Deferred_References): Replace call to Is_LHS with call + to Known_To_Be_Assigned. + * libgnarl/s-taasde.adb, libgnarl/s-tasren.adb, + libgnarl/s-tpobop.adb, libgnat/a-calend.adb, + libgnat/a-calfor.adb, libgnat/a-cbdlli.adb, + libgnat/a-cbhama.adb, libgnat/a-cbhase.adb, + libgnat/a-cbmutr.adb, libgnat/a-cborma.adb, + libgnat/a-cborse.adb, libgnat/a-cdlili.adb, + libgnat/a-cfhama.adb, libgnat/a-cforse.adb, + libgnat/a-cidlli.adb, libgnat/a-cihama.adb, + libgnat/a-cihase.adb, libgnat/a-cimutr.adb, + libgnat/a-ciorma.adb, libgnat/a-ciormu.adb, + libgnat/a-ciorse.adb, libgnat/a-cohama.adb, + libgnat/a-cohase.adb, libgnat/a-comutr.adb, + libgnat/a-convec.adb, libgnat/a-coorma.adb, + libgnat/a-coormu.adb, libgnat/a-coorse.adb, + libgnat/a-crdlli.adb, libgnat/a-tigeau.adb, + libgnat/a-wtgeau.adb, libgnat/a-ztgeau.adb, + libgnat/g-calend.adb, libgnat/g-comlin.adb, + libgnat/g-expect.adb, libgnat/g-mbflra.adb, + libgnat/g-spipat.adb, libgnat/s-fatgen.adb, + libgnat/s-fileio.adb, libgnat/s-os_lib.adb, + libgnat/s-regpat.adb, libgnat/s-valued.adb, + libgnat/s-valuer.adb: Remove unnecessary Unreferenced pragmas + * sem_ch10.adb (Process_Spec_Clauses): Remove useless + assignments. + * sem_ch13.adb (Validate_Literal_Aspect): Default initialize I. + * sem_ch3.adb (Build_Derived_Concurrent_Type): Default + initialize Corr_Decl. + * sem_ch8.adb (Undefined): Replace calls to Is_LHS with calls to + Known_To_Be_Assigned. + (In_Abstract_View_Pragma): Likewise. + * sem_eval.adb (Eval_Selected_Component): Replace calls to + Is_LHS with calls to Known_To_Be_Assigned. + * sem_res.adb (Init_Component): Replace calls to May_Be_Lvalue + with calls to Known_To_Be_Assigned. + * sem_util.adb, sem_util.ads (End_Label_Loc): Default initialize + Owner. + (Explain_Limited_Type): Default initialize Expr_Func. + (Find_Actual): Modified to handle entry families. + (Is_LHS): Deleted. + (May_Be_Lvalue): Deleted. + (Known_To_Be_Assigned): Modified and improved to handle all + cases. + * sem_warn.adb (Traverse_Result): Replace calls to May_Be_Lvalue + with calls to Known_To_Be_Assigned. + (Check_Ref): Modify error on unreferenced out parameters to take + into account different warning flags. + +2022-01-07 Javier Miranda <miranda@adacore.com> + + * sem_ch3.adb (Reorder_Interfaces): When the conflicting + interface is identified we just replace the interface in the + list of interfaces of the tagged type (instead of adding a + duplicate to the list of interfaces). + +2022-01-07 Dmitriy Anisimkov <anisimko@adacore.com> + + * adaint.c (__gnat_kill): Terminate process only in case of + SIGKILL, SIGINT, SIGBREAK, SIGTERM, SIGABRT. Do not call + OpenProcess if not going to terminate process. + +2022-01-07 Eric Botcazou <ebotcazou@adacore.com> + + * exp_prag.adb (Expand_Pragma_Inspection_Point): Do a single pass + over the arguments of the pragma. Set the Address_Taken flag on + them and use the Has_Delayed_Freeze flag to spot those which have + their elaboration delayed. Reuse the location variable Loc. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * osint.adb (To_Lower): Clarify that only To_Lower function + causes bootstrap issues; fix style. + * treepr.adb (Print_Str_Mixed_Case): Reuse existing case + conversion routine. + (To_Mixed): Rename from Capitalize; reuse System.Case_Util + procedure and explain the bootstrap issue. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch7.adb (Process_Transients_In_Scope): Remove unnecessary + initialization of Must_Hook; change Detect_Subprogram_Call from + function to procedure; adapt caller. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch5.adb, exp_disp.adb, exp_util.adb, par-ch4.adb, + sem_ch13.adb: Remove extra space before THEN that occurs at the + end of a line. + +2022-01-07 Dmitriy Anisimkov <anisimko@adacore.com> + + * expect.c (__gnat_waitpid): Use macros WIFEXITED, WEXITSTATUS, + WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG to get exit status + or signal that caused the child process to terminate/stop. Do + not process exit status in case of error in waitpid call. + * adaint.c (__gnat_kill): Use of GenerateConsoleCtrlEvent is + removed in Windows variant as it actually is not working and was + terminating the calling process. Set signal number into exit + code parameter of TerminateProcess to work the same like in + Linux. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch5.adb (Expand_N_Case_Statement): Remove explicit + expansion. + +2022-01-07 Etienne Servais <servais@adacore.com> + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Update -gnatwr documentation. + * gnat_ugn.texi: Regenerate. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_unst.adb (Unnest_Subprogram): Sync comment with the + current code. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch4.adb (Raise_Accessibility_Error): Move exception name + to the message string; move << control characters to the end, + for consistency. + * sem_ch6.adb (Analyze_Function_Return): Likewise. + * sem_util.adb (Compile_Time_Constraint_Error): Likewise. + * gcc-interface/decl.c (gnat_to_gnu_entity): Remove quotes + around Storage_Error. + * gcc-interface/trans.c (gnat_to_gnu): Remove quotes around + Constraint_Error. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Error_Msg): Move warning suppression code from + Error_Msg_NLE + (Error_Msg_NLE): Warning suppression is now done by the internal + call to Error_Msg. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Expand_N_Object_Declaration): Remove unnecessary + guards. + * exp_ch4.adb (Expand_N_If_Expression): Likewise; clarify comment. + * exp_ch5.adb (Expand_N_If_Statement, + Expand_Iterator_Loop_Over_Container): Likewise. + * exp_ch9.adb (Expand_N_Task_Type_Declaration): Remove redundant + guard. + * freeze.adb (Freeze_All_Ent): Reduce scope of a local variable. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Build_Init_Procedure): Remove unnecessary guard. + * exp_disp.adb (Make_DT): Likewise. + * sem_ch12.adb (Analyze_Associations): Likewise. + +2022-01-07 Etienne Servais <servais@adacore.com> + + * sem_res.adb (Resolve_Op_Concat_Arg): Check range when + concatenating scalars. + +2022-01-07 Bob Duff <duff@adacore.com> + + * treepr.adb (Print_Node_Ref): Change "not Is_Array_Type" to + "Is_Discrete_Type". + +2022-01-07 Richard Kenner <kenner@adacore.com> + + * libgnat/g-spipat.ads (Boolean_Func, Natural_Func, + VString_Func): Mark as Favor_Top_Level. + * sem_ch13.adb (Validate_Unchecked_Conversion): Avoid using + internal representation if Unchecked_Conversion between + an access to subprogram and System.Address within the same unit. + +2022-01-07 Bob Duff <duff@adacore.com> + + * treepr.adb (Print_Node_Ref): Print the value if available. + +2022-01-07 Richard Kenner <kenner@adacore.com> + + * sem_util.ads, sem_util.adb (Get_Fullest_View): Add option to + not recurse and return the next-most-fullest view. + +2022-01-07 Bob Duff <duff@adacore.com> + + * sem_ch10.adb (Check_Redundant_Withs): Add a warning if a + library unit with's its own ancestor. Note that this warning is + not triggered for something like "with P.R;" in P.Q, because + there the "with P;" is considered implicit. + * fname-sf.adb, libgnarl/s-stusta.adb, libgnarl/s-tasdeb.ads, + libgnat/a-calfor.adb, libgnat/a-tiboio.adb, + libgnat/a-wwboio.adb, libgnat/a-zzboio.adb, libgnat/i-cobol.adb, + libgnat/s-bitops.adb, libgnat/s-bitops.ads, + libgnat/s-direio.adb, libgnat/s-dwalin.adb, + libgnat/s-geveop.adb, libgnat/s-mmosin__unix.adb, + libgnat/s-os_lib.adb, libgnat/s-os_lib.ads, + libgnat/s-pooglo.ads, libgnat/s-secsta.adb, + libgnat/s-shasto.adb, libgnat/s-stausa.ads, + libgnat/s-stratt.ads, libgnat/s-ststop.adb: Remove with of + parent. + * sinfo.ads: Minor comment fix. + +2022-01-07 Bob Duff <duff@adacore.com> + + * osint-m.adb: Remove with_clause and pragma. + +2022-01-06 Bob Duff <duff@adacore.com> + + * sem_res.adb (Resolve_Range): Warn on null range, unless we are + inside a generic unit or an instance thereof. + * sem_ch3.adb (Analyze_Subtype_Indication): Minor: avoid double + negative. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Adjust_Name_Case): Remove unnecessary declare + block. + +2022-01-06 Yannick Moy <moy@adacore.com> + + * libgnat/a-ngcoar.adb: Add pragma to ignore assertions in + instance. + * libgnat/a-ngrear.adb: Likewise. + * libgnat/s-gearop.adb: Prove implementation is free of runtime + errors. + * libgnat/s-gearop.ads: Add contracts to protect against runtime + errors in the generic part. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Remove_Warning_Messages): Use traversal procedure + instead of traversal function, since we discard status of each + step anyway. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch4.adb (Expand_Concatenate): There is no reason for using + declaring, raising and catching an exception; a simple return + statement is enough. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * sem_eval.adb (Eval_Arithmetic_Op): Add Loc parameter to all + calls to Apply_Compile_Time_Constraint_Error related to division + by zero. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Remove_Warning_Messages): Remove unnecessary guard. + * exp_util.adb (Kill_Dead_Code): Likewise. + * par_sco.adb (Traverse_Declarations_Or_Statements): Likewise. + * sem_ch3.adb (Build_Derived_Record_Type): Likewise. + * sem_ch4.adb (Traverse_Interfaces): Likewise. + * sem_eval.adb (Traverse_Interfaces): Likewise. + * sem_util.adb (Collect_Interfaces): Likewise. + (Has_Non_Null_Statements, Side_Effect_Free_Statements): + Likewise; turn into WHILE loops, for consistency. + +2022-01-06 Etienne Servais <servais@adacore.com> + + * sem_type.adb (Full_View_Covers): Fix typo. + +2022-01-06 Eric Botcazou <ebotcazou@adacore.com> + + * sem_ch12.adb (Insert_Freeze_Node_For_Instance): When going to + the outer level, do not jump over following instantiations in + the list. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * err_vars.ads (Warn_On_Instance): Remove; it was a relic from + the previous handling of warning in instances that was removed + decades ago. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * errout.adb (Error_Msg_Internal): Reorder words. + * erroutc.ads (Is_Warning_Msg): Add closing paren. + * sem_util.adb (Compile_Time_Constraint_Error): Fix casing. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * sem_res.adb (Resolve_String_Literal): Simplify pointer + arithmetic. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * sem_res.adb (Resolve_String_Literal): Avoid unnecessary + conversions inside "<" and ">" bodies. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * checks.adb (Null_Exclusion_Static_Checks, + Selected_Range_Checks): Fix style. + +2022-01-06 Eric Botcazou <ebotcazou@adacore.com> + + * sem_ch8.adb (Analyze_Package_Renaming): Do not check for Text_IO + special units when the name of the renaming is a generic instance, + which is the case for package instantiations in the GNAT model. + +2022-01-06 Steve Baird <baird@adacore.com> + + * sem_util.adb (Build_Discriminant_Reference): In the unexpected + case where we previously would fail an assertion, we instead + revert to the old behavior. + +2022-01-06 Steve Baird <baird@adacore.com> + + * sem_util.adb (Build_Actual_Subtype_Of_Component): Define a new + local function, Build_Discriminant_Reference, and call it in + each of the three cases where Make_Selected_Component was + previously being called to construct a discriminant reference (2 + in Build_Actual_Array_Constraint and 1 in + Build_Actual_Record_Constraint). Instead of unconditionally + using the passed-in object name as the prefix for the new + selected component node, this new function checks to see if + perhaps a prefix of that name should be used instead. + +2022-01-06 Etienne Servais <servais@adacore.com> + + * atree.adb: Fix typo. + * einfo.ads: Likewise. + * exp_aggr.adb: Likewise. + * exp_ch6.adb: Likewise. + * exp_ch7.adb: Likewise. + * exp_ch9.adb: Likewise. + * exp_prag.adb: Likewise. + * exp_unst.adb: Likewise. + * exp_unst.ads: Likewise. + * exp_util.adb: Likewise. + * par-endh.adb: Likewise. + * par.adb: Likewise. + * restrict.adb: Likewise. + * sem.ads: Likewise. + * sem_ch4.adb: Likewise. + * sem_ch5.adb: Likewise. + * sem_ch6.adb: Likewise. + * sem_ch8.adb: Likewise. + * sem_ch12.adb: Likewise. + * sem_ch13.adb: Likewise. + * sem_dim.adb: Likewise. + * sem_elab.adb: Likewise. + * sem_prag.adb: Likewise. + * sem_res.adb: Likewise. + * sem_util.adb: Likewise. + * sem_util.ads: Likewise. + * sinfo.ads: Likewise. + * sprint.adb: Likewise. + * urealp.adb: Likewise. + +2022-01-06 Justin Squirek <squirek@adacore.com> + + * exp_ch3.adb (Build_Assignment): Replace current instance of + type with Init_Proc formal. + * sem_attr.adb (OK_Self_Reference): Handle recognition of + Current_Instance to detect certain expansion. + * sem_ch4.adb (Analyze_One_Call): Set actual's type when the + actual in question is a current instance and its corresponding + formal is an incomplete type. + * sem_util.adb (Is_Current_Instance): Add check for incomplete + views and add comment. + +2022-01-06 Bob Duff <duff@adacore.com> + + * libgnat/s-rident.ads (No_Tagged_Type_Registration): New + restriction identifier. + * restrict.ads (Implementation_Restriction): Add restriction. + * exp_ch7.adb (Process_Declarations): Suppress + tagged-type-related finalization actions if the restriction is + active. Call RTE_Available last. + * exp_disp.adb (Make_DT): Likewise. + * exp_util.adb (Requires_Cleanup_Actions): Return False for a + tagged type declaration if No_Tagged_Type_Registration is + active. + * sem_attr.adb (Check_Stream_Attribute): Check restriction + No_Tagged_Type_Registration. + * libgnat/a-except.ads (Null_Occurrence): Minor: Initialize, to + avoid stopping at a warning in gdb. + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Document new restriction. + * gnat_rm.texi: Regenerate. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * par-ch4.adb (P_Simple_Expression): Reuse Null_String_Id. + * prep.adb (Parse_Def_File): Likewise; remove Empty_String. + +2022-01-06 Eric Botcazou <ebotcazou@adacore.com> + + * stand.ads (Any_Access): Delete. + (Universal_Access): New entity. + * einfo.ads: Remove obsolete reference to Any_Access. + * gen_il-gen-gen_entities.adb: Likewise. + * cstand.adb (Create_Standard): Do not create Any_Access and create + Universal_Access as a full type instead. + * errout.adb (Set_Msg_Insertion_Type_Reference): Do not deal with + Any_Access and deal with Universal_Access instead. + * sem_ch3.adb (Analyze_Object_Declaration): Replace Any_Access with + Universal_Access. + * sem_ch4.adb (Analyze_Null): Likewise. + (Find_Non_Universal_Interpretations): Likewise. + (Find_Equality_Types.Try_One_Interp): Likewise and avoid shadowing + by renaming a local variable of the same name. + * sem_res.adb (Make_Call_Into_Operato): Likewise. + (Resolve_Equality_Op): Likewise. + * sem_type.adb (Covers): Likewise. + (Specific_Type): Likewise. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * treepr.adb (Destroy): Prevent spurious check from CodePeer. + +2022-01-06 Yannick Moy <moy@adacore.com> + + * libgnat/s-exponu.adb (Exponu): Add annotation. + +2022-01-06 Justin Squirek <squirek@adacore.com> + + * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add comments + regarding special handling of components which depend on + discriminants. + * exp_dist.adb (Build_From_Any_Function): Add Real_Rep actual + for calls to Has_Stream_Attribute_Definition. + (Build_To_Any_Function): Likewise. + (Build_TypeCode_Function): Likewise. + * freeze.adb (Freeze_Entity): Add missing comment for Test_E. + * libgnat/s-utf_32.adb: Remove disabled warning comments and + temporarily inserted pragma warnings. Remove very old (2006 and + 2012) comments about bootstrapping older versions. + * par.adb (P_Identifier): Add new parameter Force_Msg. + * par-ch2.adb (P_Identifier): Restructure and clean up function. + * par-ch3.adb (P_Defining_Identifier): Remove code duplication + for parsing identifiers. + * sem_attr.adb (Stream_Attribute_Available): Add missing + comments and add Real_Rep actual for calls to + Has_Stream_Attribute_Definition. + * sem_cat.adb (Has_Read_Write_Attribute): Add Real_Rep actual + for calls to Has_Stream_Attribute_Definition. + (Has_Stream_Attribute_Definition): Remove local Real_Rep and fix + recursive calls. Add default value for Real_Rep. + * sem_cat.ads (Has_Stream_Attribute_Definition): Add new out + parameter "Real_Rep". + * sem_type.adb (Add_Entry): Add condition to avoid passing + non-function calls to Function_Interp_Has_Abstract_Op. + (Function_Interp_Has_Abstract_Op): Add missing comments and + remove check for Is_Overloadable. + * sem_util.adb (Derivation_Too_Early_To_Inherit): Remove + duplicated code. + +2022-01-06 Javier Miranda <miranda@adacore.com> + + * contracts.adb (Restore_Original_Selected_Component): New + subprogram that traverses a preanalyzed expression searching for + dispatching calls to functions whose original node was a + selected component, and replacing them with their original node. + This functionality is required because the preanalyis of + dispatching calls using the Object.Operation notation transforms + such calls, and we need the original condition to properly + inherit and extend the condition expression on tagged type + derivations. This functionality was previously provided by the + routine Install_Original_Selected_Component (as part of + inheriting conditions); now it is performed as part of the + preanalysis of the condition, thus avoiding repeatedly + installing and restoring such nodes. + (Install_Original_Selected_Component): Removed. + (Restore_Dispatching_Calls): Removed. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * treepr.adb (Visit_Node): Simplify repeated call to + Next_Entity. + +2022-01-06 Piotr Trojanek <trojanek@adacore.com> + + * treepr.ads (Treepr, Print_Tree_List, Print_Tree_Elist): Fix + style in comments. + * treepr.adb (Serial_Numbers): Hash table instance. + (Hash): Hashing routine. + (Print_Field): Fix style. + (Print_Init): Adapt to simple hash table. + (Print_Term): Likewise. + (Serial_Numbers): Likewise. + (Set_Serial_Number): Likewise. + +2022-01-06 Yannick Moy <moy@adacore.com> + + * libgnat/s-expmod.adb: Mark in SPARK. Add ghost code for proof. + * libgnat/s-expmod.ads: Mark in SPARK. Add ghost specifications. + +2022-01-06 Yannick Moy <moy@adacore.com> + + * libgnat/s-explllu.ads: Mark in SPARK. + * libgnat/s-expllu.ads: Mark in SPARK. + * libgnat/s-exponu.adb: Add loop invariants and needed + assertions. + * libgnat/s-exponu.ads: Add functional contract. + * libgnat/s-expuns.ads: Mark in SPARK. + +2022-01-05 Steve Baird <baird@adacore.com> + + * exp_ch5.adb (Finish_Binding_Object_Declaration): Fix a bug + that was introduced in the previous commit. The previous + version initialized a Boolean constant Declare_Copy before the + variable Decl had been initialized properly. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * sem_prag.adb (Adjust_External_Name_Case): Use membership test. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Make_Controlling_Function_Wrappers): For + GNATprove build the wrapper as an expression function. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.ads (Make_Controlling_Function_Wrappers): Move + declaration from body to spec, so it can be called by + SPARK-specific expansion. + * exp_ch3.adb (Make_Controlling_Function_Wrappers): Likewise. + * exp_spark.adb (SPARK_Freeze_Type): Enable expansion of + wrappers for function with controlling result types. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_dbug.adb, sem_dim.adb: Replace Add_Str_To_Name_Buffer with + Add_Char_To_Name_Buffer. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * gnatls.adb (Gnatls): Use Name_Find function. + * targparm.adb (Get_Target_Parameters): Likewise. + +2022-01-05 Bob Duff <duff@adacore.com> + + * repinfo.adb (List_Entities): The code was assuming that if we + encounter a package in the current scope, then it must be + a (physically) nested package. That was wrong, because it could + be a child package. Avoid recursing into child packages; they + have not been annotated with representation information, and + -gnatR2 queries that information. + +2022-01-05 Marc Poulhiès <poulhies@adacore.com> + + * libgnat/s-sopco3.ads, libgnat/s-sopco3.adb: Remove. + * libgnat/s-sopco4.ads, libgnat/s-sopco4.adb: Remove. + * libgnat/s-sopco5.ads, libgnat/s-sopco5.adb: Remove. + * libgnat/s-strops.ads, libgnat/s-strops.adb: Remove. + * Makefile.rtl (ADA_EXCLUDE_SRCS): Remove occurences of removed + units. + * gcc-interface/Make-lang.in (ada/sdefault.o): Remove + dependencies on removed units. + (GNATBIND_OBJS): Remove occurences of removed units. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Build_Dcheck_Function): Remove extra whitespace. + * libgnarl/s-taskin.adb (Initialize_ATCB): Likewise. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_attr.adb (Build_Array_VS_Func): Remove explicit "IN" in + spec of the generated array validation function; it was + redundant, just like it would be in a user-written code. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch4.adb (Expand_N_Op_Ne): Fix whitespace. + * sem_dim.adb (Expand_Put_Call_With_Symbol): Likewise. + (Reduce): Likewise. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_aggr.adb (Two_Pass_Aggregate_Expansion): Fix whitespace. + * libgnat/a-cofuve.ads (Add): Likewise. + * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Likewise. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Make_Eq_Body, Make_Neq_Body, + Make_Predefined_Primitive_Eq_Spec, + Make_Predefined_Primitive_Specs): Fix whitespace. + +2022-01-05 Etienne Servais <servais@adacore.com> + + * sem_ch3.adb (Analyze_Component_Declaration): Rework condition + to build subtypes. + (Analyze_Object_Declaration): Likewise. + (Should_Build_Subtype): New. + +2022-01-05 Yannick Moy <moy@adacore.com> + + * libgnat/s-arit128.adb: Mark in SPARK. + * libgnat/s-arit128.ads: Add functional contracts. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * sem_util.adb (String_From_Numeric_Literal): Simplify using + membership tests and ranges; fix whitespace. + +2022-01-05 Yannick Moy <moy@adacore.com> + + * libgnat/s-expint.ads: Mark in SPARK. Adapt to change to + package. + * libgnat/s-explli.ads: Likewise. + * libgnat/s-expllli.ads: Likewise. + * libgnat/s-expont.adb: Add lemmas and ghost code. + * libgnat/s-expont.ads: Add functional contract. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_disp.adb (Gen_Parameters_Profile): Remove redundant guard. + +2022-01-05 Claire Dross <dross@adacore.com> + + * libgnat/s-valuti.ads (Starts_As_Exponent_Format_Ghost): Ghost + function to determine if a string is recognized as something + which might be an exponent. + (Is_Opt_Exponent_Format_Ghost): Ghost function to determine if a + string has the correct format for an optional exponent. + (Scan_Exponent): Use ghost functions to factorize contracts. + +2022-01-05 Bob Duff <duff@adacore.com> + + * exp_util.ads (Get_Current_Value_Condition): Belt: Add a + postcondition that Val /= Var. + * sem_util.adb (Known_Null): Suspenders: Raise Program_Error if + Get_Current_Value_Condition returned the same value. This will + be enabled even without assertions, because infinite recursion + is a nuisance -- better to crash if this bug ever occurs. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Make_Null_Procedure_Specs): Simplify by reusing + Copy_Subprogram_Spec. + * sem_util.ads (Copy_Subprogram_Spec): Add New_Sloc parameter. + * sem_util.adb (Copy_Subprogram_Spec): Pass New_Sloc to + New_Copy_Tree. + +2022-01-05 Yannick Moy <moy@adacore.com> + + * libgnat/s-exnint.ads: Mark in SPARK. Adapt to change to + package. + * libgnat/s-exnlli.ads: Likewise. + * libgnat/s-exnllli.ads: Likewise. + * libgnat/s-exponn.adb: Add lemmas and ghost code. Secial case + value zero as Left or Right to simplify proof. + * libgnat/s-exponn.ads: Transform the generic function into a + generic package with a function inside. Add a functional + contract. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * sem_ch12.adb (Instantiate_Formal_Subprogram): Remove redundant + call to Set_Defining_Unit_Name; a similar call is done few lines + below. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * exp_ch3.adb (Make_Controlling_Function_Wrappers): Create + distinct copies of parameter lists for spec and body with + Copy_Parameter_List; cleanup. + (Make_Null_Procedure_Specs): Fix style in comments; remove a + potentially unnecessary initialization of a local variable. + +2022-01-05 Bob Duff <duff@adacore.com> + + * einfo-utils.ads, einfo-utils.adb (Renamed_Entity Alias): + Change Node_Id to Entity_Id. + +2022-01-05 Piotr Trojanek <trojanek@adacore.com> + + * sem_ch12.ads (Build_Function_Wrapper, Build_Operator_Wrapper): + Remove unreferenced spec. + * sem_ch12.adb (Build_Function_Wrapper, Build_Operator_Wrapper): + Remove dead bodies. + +2022-01-05 Yannick Moy <moy@adacore.com> + + * libgnat/s-aridou.adb: Apply replacement. + +2022-01-05 Yannick Moy <moy@adacore.com> + + * libgnat/s-aridou.adb (Lemma_Word_Commutation): Fix for + instances with other values of Single_Size. + +2022-01-05 Marc Poulhiès <poulhies@adacore.com> + + * doc/gnat_rm/implementation_defined_pragmas.rst (Compiler_Unit) + (Compiler_Unit_Warning): Remove. + * gnat-style.texi, gnat_rm.texi, gnat_ugn.texi: Regenerate. + * libgnat/g-dynhta.ads: Add comment indicating this unit is + built during stage1. + * libgnat/g-dyntab.ads: Likewise. + * libgnat/g-graphs.ads: Likewise. + * libgnat/g-lists.ads: Likewise. + * libgnat/g-sets.ads: Likewise. + * libgnat/gnat.ads: Likewise. + * libgnat/s-pehage.ads: Likewise. + * libgnat/s-resfil.ads: Likewise. + * libgnat/s-rident.ads: Likewise. + * libgnat/s-utf_32.ads: Likewise. + * errout.ads: Update comment. + * opt.ads (Opt): Remove Compiler_Unit. + * par-ch5.adb (All_Pragmas): Remove call to Check_Compiler_Unit. + * sem_prag.adb (Analyze_Pragma): Likewise. + * sem_ch4.adb (Non_Static_Choice_Error, Analyze_If_Expression) + (Analyze_Set_Membership, Record_Interp): Likewise. + * sem_ch11.adb (Analyze_Raise_Expression): Likewise. + * sem_ch6.adb: Remove Restric package reference. + (Analyze_Extended_Return_Statement): Remove call to + Check_Compiler_Unit. + * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): + Remove handling of Pragma_Compiler_Unit[_Warning}. + * restrict.adb (Check_Compiler_Unit): Remove both. + * restrict.ads: Likewise. + * snames.ads-tmpl (Pragma_Id): Remove + Pragma_Compiler_Unit[_Warning]. + * libgnat/a-assert.ads: Remove pragma Compiler_Unit_Warning. + * libgnat/a-chlat1.ads: Likewise. + * libgnat/a-elchha.adb: Likewise. + * libgnat/a-elchha.ads: Likewise. + * libgnat/a-ioexce.ads: Likewise. + * libgnat/a-strhas.ads: Likewise. + * libgnat/g-byorma.adb: Likewise. + * libgnat/g-byorma.ads: Likewise. + * libgnat/g-dyntab.adb: Likewise. + * libgnat/g-heasor.ads: Likewise. + * libgnat/g-hesora.adb: Likewise. + * libgnat/g-hesora.ads: Likewise. + * libgnat/g-htable.adb: Likewise. + * libgnat/g-htable.ads: Likewise. + * libgnat/g-spchge.adb: Likewise. + * libgnat/g-spchge.ads: Likewise. + * libgnat/g-speche.adb: Likewise. + * libgnat/g-speche.ads: Likewise. + * libgnat/g-table.ads: Likewise. + * libgnat/g-u3spch.adb: Likewise. + * libgnat/g-u3spch.ads: Likewise. + * libgnat/interfac.ads: Likewise. + * libgnat/s-addope.adb: Likewise. + * libgnat/s-addope.ads: Likewise. + * libgnat/s-assert.adb: Likewise. + * libgnat/s-assert.ads: Likewise. + * libgnat/s-bitops.adb: Likewise. + * libgnat/s-bitops.ads: Likewise. + * libgnat/s-carun8.adb: Likewise. + * libgnat/s-carun8.ads: Likewise. + * libgnat/s-casuti.adb: Likewise. + * libgnat/s-casuti.ads: Likewise. + * libgnat/s-conca2.adb: Likewise. + * libgnat/s-conca2.ads: Likewise. + * libgnat/s-conca3.adb: Likewise. + * libgnat/s-conca3.ads: Likewise. + * libgnat/s-conca4.adb: Likewise. + * libgnat/s-conca4.ads: Likewise. + * libgnat/s-conca5.adb: Likewise. + * libgnat/s-conca5.ads: Likewise. + * libgnat/s-conca6.adb: Likewise. + * libgnat/s-conca6.ads: Likewise. + * libgnat/s-conca7.adb: Likewise. + * libgnat/s-conca7.ads: Likewise. + * libgnat/s-conca8.adb: Likewise. + * libgnat/s-conca8.ads: Likewise. + * libgnat/s-conca9.adb: Likewise. + * libgnat/s-conca9.ads: Likewise. + * libgnat/s-crc32.adb: Likewise. + * libgnat/s-crc32.ads: Likewise. + * libgnat/s-crtl.ads: Likewise. + * libgnat/s-excdeb.adb: Likewise. + * libgnat/s-excdeb.ads: Likewise. + * libgnat/s-except.ads: Likewise. + * libgnat/s-exctab.adb: Likewise. + * libgnat/s-exctab.ads: Likewise. + * libgnat/s-finmas.ads: Likewise. + * libgnat/s-htable.adb: Likewise. + * libgnat/s-htable.ads: Likewise. + * libgnat/s-mastop.adb: Likewise. + * libgnat/s-mastop.ads: Likewise. + * libgnat/s-memory.adb: Likewise. + * libgnat/s-memory.ads: Likewise. + * libgnat/s-os_lib.ads: Likewise. + * libgnat/s-parame.adb: Likewise. + * libgnat/s-parame.ads: Likewise. + * libgnat/s-parame__posix2008.ads: Likewise. + * libgnat/s-purexc.ads: Likewise. + * libgnat/s-resfil.adb: Likewise. + * libgnat/s-restri.adb: Likewise. + * libgnat/s-restri.ads: Likewise. + * libgnat/s-secsta.adb: Likewise. + * libgnat/s-secsta.ads: Likewise. + * libgnat/s-soflin.adb: Likewise. + * libgnat/s-soflin.ads: Likewise. + * libgnat/s-sopco3.adb: Likewise. + * libgnat/s-sopco3.ads: Likewise. + * libgnat/s-sopco4.adb: Likewise. + * libgnat/s-sopco4.ads: Likewise. + * libgnat/s-sopco5.adb: Likewise. + * libgnat/s-sopco5.ads: Likewise. + * libgnat/s-spsufi.ads: Likewise. + * libgnat/s-stache.adb: Likewise. + * libgnat/s-stache.ads: Likewise. + * libgnat/s-stalib.adb: Likewise. + * libgnat/s-stalib.ads: Likewise. + * libgnat/s-stoele.adb: Likewise. + * libgnat/s-stoele.ads: Likewise. + * libgnat/s-strcom.adb: Likewise. + * libgnat/s-strcom.ads: Likewise. + * libgnat/s-strhas.adb: Likewise. + * libgnat/s-string.adb: Likewise. + * libgnat/s-string.ads: Likewise. + * libgnat/s-strops.adb: Likewise. + * libgnat/s-strops.ads: Likewise. + * libgnat/s-ststop.adb: Likewise. + * libgnat/s-ststop.ads: Likewise. + * libgnat/s-traceb.adb: Likewise. + * libgnat/s-traceb.ads: Likewise. + * libgnat/s-traent.adb: Likewise. + * libgnat/s-traent.ads: Likewise. + * libgnat/s-utf_32.adb: Likewise. + * libgnat/s-unstyp.ads: Likewise. + * libgnat/s-wchcnv.adb: Likewise. + * libgnat/s-wchcnv.ads: Likewise. + * libgnat/s-wchcon.adb: Likewise. + * libgnat/s-wchcon.ads: Likewise. + * libgnat/s-wchjis.adb: Likewise. + * libgnat/s-wchjis.ads: Likewise. + +2022-01-05 Arnaud Charlet <charlet@adacore.com> + + * osint.adb (File_Names_Equal): Declare To_Lower locally. + * osint.ads (Null_FD): New. + * fmap.adb, sinput-l.adb, targparm.adb: Adapt to changes above. + * switch-b.adb (Scan_Debug_Switches): Use Is_Regular_File to + simplify the bootstrap dependencies. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + Copyright (C) 2022 Free Software Foundation, Inc. diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl index c966c25..1b066ad 100644 --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -898,7 +898,7 @@ ATOMICS_BUILTINS_TARGET_PAIRS = \ X86_TARGET_PAIRS = \ a-nuauco.ads<libgnat/a-nuauco__x86.ads \ - s-atocou.adb<libgnat/s-atocou__x86.adb + s-atocou.adb<libgnat/s-atocou__builtin.adb X86_64_TARGET_PAIRS = \ a-nuauco.ads<libgnat/a-nuauco__x86.ads \ @@ -2906,8 +2906,7 @@ ADA_EXCLUDE_SRCS =\ g-intpri.ads g-regist.adb g-regist.ads g-sse.ads g-ssvety.ads \ i-vxinco.adb i-vxinco.ads i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \ s-linux.ads s-vxwext.adb s-vxwext.ads s-win32.ads s-winext.ads \ - s-sopco3.adb s-sopco3.ads s-sopco4.adb s-sopco4.ads \ - s-sopco5.adb s-sopco5.ads s-stchop.ads s-stchop.adb \ + s-stchop.ads s-stchop.adb \ s-strcom.adb s-strcom.ads s-thread.ads \ # ADA_EXCLUDE_SRCS without the sources used by the target diff --git a/gcc/ada/ada_get_targ.adb b/gcc/ada/ada_get_targ.adb index 6098478..8922c64 100644 --- a/gcc/ada/ada_get_targ.adb +++ b/gcc/ada/ada_get_targ.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/adabkend.adb b/gcc/ada/adabkend.adb index 118ca95..3adbfd0 100644 --- a/gcc/ada/adabkend.adb +++ b/gcc/ada/adabkend.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/adabkend.ads b/gcc/ada/adabkend.ads index 86b1bce..a5cecef 100644 --- a/gcc/ada/adabkend.ads +++ b/gcc/ada/adabkend.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/adadecode.c b/gcc/ada/adadecode.c index 1e8d306..d2270a2 100644 --- a/gcc/ada/adadecode.c +++ b/gcc/ada/adadecode.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2001-2021, Free Software Foundation, Inc. * + * Copyright (C) 2001-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/adadecode.h b/gcc/ada/adadecode.h index a2ac9d2..53b708c 100644 --- a/gcc/ada/adadecode.h +++ b/gcc/ada/adadecode.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2001-2021, Free Software Foundation, Inc. * + * Copyright (C) 2001-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 6781728..591d033 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -3559,23 +3559,21 @@ void __gnat_kill (int pid, int sig, int close ATTRIBUTE_UNUSED) { #if defined(_WIN32) - HANDLE h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid); - if (h == NULL) - return; - if (sig == 9) - { - TerminateProcess (h, 1); - } - else if (sig == SIGINT) - GenerateConsoleCtrlEvent (CTRL_C_EVENT, pid); - else if (sig == SIGBREAK) - GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, pid); - /* ??? The last two alternatives don't really work. SIGBREAK requires setting - up process groups at start time which we don't do; treating SIGINT is just - not possible apparently. So we really only support signal 9. Fortunately - that's all we use in GNAT.Expect */ + HANDLE h; + + switch (sig) { + case 9: // SIGKILL is not declared in Windows headers + case SIGINT: + case SIGBREAK: + case SIGTERM: + case SIGABRT: + h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid); + if (h != NULL) { + TerminateProcess (h, sig); + CloseHandle (h); + } + } - CloseHandle (h); #elif defined (__vxworks) /* Not implemented */ #else diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h index a63ceef..2631be5 100644 --- a/gcc/ada/adaint.h +++ b/gcc/ada/adaint.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/affinity.c b/gcc/ada/affinity.c index 6a3dbb2..5d4a224 100644 --- a/gcc/ada/affinity.c +++ b/gcc/ada/affinity.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2005-2021, Free Software Foundation, Inc. * + * Copyright (C) 2005-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/ali-util.adb b/gcc/ada/ali-util.adb index 6c567c3..bb1fc41 100644 --- a/gcc/ada/ali-util.adb +++ b/gcc/ada/ali-util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/ali-util.ads b/gcc/ada/ali-util.ads index e7e1c0d..7cc6b7a 100644 --- a/gcc/ada/ali-util.ads +++ b/gcc/ada/ali-util.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb index 88cc247..1c3b5cc 100644 --- a/gcc/ada/ali.adb +++ b/gcc/ada/ali.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads index 175aea9..8d6dd90 100644 --- a/gcc/ada/ali.ads +++ b/gcc/ada/ali.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/alloc.ads b/gcc/ada/alloc.ads index 85944c9..04fa8f5 100644 --- a/gcc/ada/alloc.ads +++ b/gcc/ada/alloc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/argv-lynxos178-raven-cert.c b/gcc/ada/argv-lynxos178-raven-cert.c index 21cead3..644c83b 100644 --- a/gcc/ada/argv-lynxos178-raven-cert.c +++ b/gcc/ada/argv-lynxos178-raven-cert.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/argv.c b/gcc/ada/argv.c index 4734415..82d5847 100644 --- a/gcc/ada/argv.c +++ b/gcc/ada/argv.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/aspects.adb b/gcc/ada/aspects.adb index bf661b9..62603d6 100644 --- a/gcc/ada/aspects.adb +++ b/gcc/ada/aspects.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads index 4bb28ce..658a859 100644 --- a/gcc/ada/aspects.ads +++ b/gcc/ada/aspects.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/atree.adb b/gcc/ada/atree.adb index 88d766a..e6dc419 100644 --- a/gcc/ada/atree.adb +++ b/gcc/ada/atree.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -88,12 +88,29 @@ package body Atree is Table_Increment => Alloc.Node_Offsets_Increment, Table_Name => "Orig_Nodes"); + ------------------ + -- Parent Stack -- + ------------------ + + -- A separate table is used to traverse trees. It passes the parent field + -- of each node to the called process subprogram. It is defined global to + -- avoid adding performance overhead if allocated each time the traversal + -- functions are invoked. + + package Parents_Stack is new Table.Table + (Table_Component_Type => Node_Id, + Table_Index_Type => Nat, + Table_Low_Bound => 1, + Table_Initial => 256, + Table_Increment => 100, + Table_Name => "Parents_Stack"); + -------------------------- -- Paren_Count Handling -- -------------------------- -- The Small_Paren_Count field has range 0 .. 3. If the Paren_Count is - -- in the range 0 .. 2, then it is stoed as Small_Paren_Count. Otherwise, + -- in the range 0 .. 2, then it is stored as Small_Paren_Count. Otherwise, -- Small_Paren_Count = 3, and the actual Paren_Count is stored in the -- Paren_Counts table. -- @@ -135,6 +152,20 @@ package body Atree is -- Fix up parent pointers for the children of Fix_Node after a copy, -- setting them to Fix_Node when they pointed to Ref_Node. + generic + with function Process + (Parent_Node : Node_Id; + Node : Node_Id) return Traverse_Result is <>; + function Internal_Traverse_With_Parent + (Node : Node_Id) return Traverse_Final_Result; + pragma Inline (Internal_Traverse_With_Parent); + -- Internal function that provides a functionality similar to Traverse_Func + -- but extended to pass the Parent node to the called Process subprogram; + -- delegates to Traverse_Func_With_Parent the initialization of the stack + -- data structure which stores the parent nodes (cf. Parents_Stack). + -- ??? Could we factorize the common code of Internal_Traverse_Func and + -- Traverse_Func? + procedure Mark_New_Ghost_Node (N : Node_Or_Entity_Id); -- Mark arbitrary node or entity N as Ghost when it is created within a -- Ghost region. @@ -2322,6 +2353,167 @@ package body Atree is return Size_In_Slots (N) - N_Head; end Size_In_Slots_Dynamic; + ----------------------------------- + -- Internal_Traverse_With_Parent -- + ----------------------------------- + + function Internal_Traverse_With_Parent + (Node : Node_Id) return Traverse_Final_Result + is + Tail_Recursion_Counter : Natural := 0; + + procedure Pop_Parents; + -- Pop enclosing nodes of tail recursion plus the current parent. + + function Traverse_Field (Fld : Union_Id) return Traverse_Final_Result; + -- Fld is one of the Traversed fields of Nod, which is necessarily a + -- Node_Id or List_Id. It is traversed, and the result is the result of + -- this traversal. + + ----------------- + -- Pop_Parents -- + ----------------- + + procedure Pop_Parents is + begin + -- Pop the enclosing nodes of the tail recursion + + for J in 1 .. Tail_Recursion_Counter loop + Parents_Stack.Decrement_Last; + end loop; + + -- Pop the current node + + pragma Assert (Parents_Stack.Table (Parents_Stack.Last) = Node); + Parents_Stack.Decrement_Last; + end Pop_Parents; + + -------------------- + -- Traverse_Field -- + -------------------- + + function Traverse_Field (Fld : Union_Id) return Traverse_Final_Result is + begin + if Fld /= Union_Id (Empty) then + + -- Descendant is a node + + if Fld in Node_Range then + return Internal_Traverse_With_Parent (Node_Id (Fld)); + + -- Descendant is a list + + elsif Fld in List_Range then + declare + Elmt : Node_Id := First (List_Id (Fld)); + begin + while Present (Elmt) loop + if Internal_Traverse_With_Parent (Elmt) = Abandon then + return Abandon; + end if; + + Next (Elmt); + end loop; + end; + + else + raise Program_Error; + end if; + end if; + + return OK; + end Traverse_Field; + + -- Local variables + + Parent_Node : Node_Id := Parents_Stack.Table (Parents_Stack.Last); + Cur_Node : Node_Id := Node; + + -- Start of processing for Internal_Traverse_With_Parent + + begin + -- If the last field is a node, we eliminate the tail recursion by + -- jumping back to this label. This is because concatenations are + -- sometimes deeply nested, as in X1&X2&...&Xn. Gen_IL ensures that the + -- Left_Opnd field of N_Op_Concat comes last in Traversed_Fields, so the + -- tail recursion is eliminated in that case. This trick prevents us + -- from running out of stack memory in that case. We don't bother + -- eliminating the tail recursion if the last field is a list. + + <<Tail_Recurse>> + + Parents_Stack.Append (Cur_Node); + + case Process (Parent_Node, Cur_Node) is + when Abandon => + Pop_Parents; + return Abandon; + + when Skip => + Pop_Parents; + return OK; + + when OK => + null; + + when OK_Orig => + Cur_Node := Original_Node (Cur_Node); + end case; + + -- Check for empty Traversed_Fields before entering loop below, so the + -- tail recursive step won't go past the end. + + declare + Cur_Field : Offset_Array_Index := Traversed_Offset_Array'First; + Offsets : Traversed_Offset_Array renames + Traversed_Fields (Nkind (Cur_Node)); + + begin + if Offsets (Traversed_Offset_Array'First) /= No_Field_Offset then + while Offsets (Cur_Field + 1) /= No_Field_Offset loop + declare + F : constant Union_Id := + Get_Node_Field_Union (Cur_Node, Offsets (Cur_Field)); + + begin + if Traverse_Field (F) = Abandon then + Pop_Parents; + return Abandon; + end if; + end; + + Cur_Field := Cur_Field + 1; + end loop; + + declare + F : constant Union_Id := + Get_Node_Field_Union (Cur_Node, Offsets (Cur_Field)); + + begin + if F not in Node_Range then + if Traverse_Field (F) = Abandon then + Pop_Parents; + return Abandon; + end if; + + elsif F /= Empty_List_Or_Node then + -- Here is the tail recursion step, we reset Cur_Node and + -- jump back to the start of the procedure, which has the + -- same semantic effect as a call. + + Tail_Recursion_Counter := Tail_Recursion_Counter + 1; + Parent_Node := Cur_Node; + Cur_Node := Node_Id (F); + goto Tail_Recurse; + end if; + end; + end if; + end; + + Pop_Parents; + return OK; + end Internal_Traverse_With_Parent; + ------------------- -- Traverse_Func -- ------------------- @@ -2454,6 +2646,32 @@ package body Atree is return OK; end Traverse_Func; + ------------------------------- + -- Traverse_Func_With_Parent -- + ------------------------------- + + function Traverse_Func_With_Parent + (Node : Node_Id) return Traverse_Final_Result + is + function Traverse is new Internal_Traverse_With_Parent (Process); + Result : Traverse_Final_Result; + begin + -- Ensure that the Parents stack is not currently in use; required since + -- it is global and hence a tree traversal with parents must be finished + -- before the next tree traversal with parents starts. + + pragma Assert (Parents_Stack.Last = 0); + Parents_Stack.Set_Last (0); + + Parents_Stack.Append (Parent (Node)); + Result := Traverse (Node); + Parents_Stack.Decrement_Last; + + pragma Assert (Parents_Stack.Last = 0); + + return Result; + end Traverse_Func_With_Parent; + ------------------- -- Traverse_Proc -- ------------------- @@ -2466,6 +2684,18 @@ package body Atree is Discard := Traverse (Node); end Traverse_Proc; + ------------------------------- + -- Traverse_Proc_With_Parent -- + ------------------------------- + + procedure Traverse_Proc_With_Parent (Node : Node_Id) is + function Traverse is new Traverse_Func_With_Parent (Process); + Discard : Traverse_Final_Result; + pragma Warnings (Off, Discard); + begin + Discard := Traverse (Node); + end Traverse_Proc_With_Parent; + ------------ -- Unlock -- ------------ diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads index c239507..417a7ab 100644 --- a/gcc/ada/atree.ads +++ b/gcc/ada/atree.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -410,12 +410,31 @@ package Atree is -- all calls to process returned either OK, OK_Orig, or Skip). generic + with function Process + (Parent_Node : Node_Id; + Node : Node_Id) return Traverse_Result is <>; + function Traverse_Func_With_Parent + (Node : Node_Id) return Traverse_Final_Result; + pragma Inline (Traverse_Func_With_Parent); + -- Same as Traverse_Func except that the called function Process receives + -- also the Parent_Node of Node. + + generic with function Process (N : Node_Id) return Traverse_Result is <>; procedure Traverse_Proc (Node : Node_Id); pragma Inline (Traverse_Proc); -- This is the same as Traverse_Func except that no result is returned, -- i.e. Traverse_Func is called and the result is simply discarded. + generic + with function Process + (Parent_Node : Node_Id; + Node : Node_Id) return Traverse_Result is <>; + procedure Traverse_Proc_With_Parent (Node : Node_Id); + pragma Inline (Traverse_Proc_With_Parent); + -- Same as Traverse_Proc except that the called function Process receives + -- also the Parent_Node of Node. + --------------------------- -- Node Access Functions -- --------------------------- diff --git a/gcc/ada/atree.h b/gcc/ada/atree.h index 7fb3bcb..3b736ca 100644 --- a/gcc/ada/atree.h +++ b/gcc/ada/atree.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/aux-io.c b/gcc/ada/aux-io.c index 9f6b45b..d842051 100644 --- a/gcc/ada/aux-io.c +++ b/gcc/ada/aux-io.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/back_end.adb b/gcc/ada/back_end.adb index abbd5ed..833d6b9 100644 --- a/gcc/ada/back_end.adb +++ b/gcc/ada/back_end.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/back_end.ads b/gcc/ada/back_end.ads index 32a0ea3..3febcf9 100644 --- a/gcc/ada/back_end.ads +++ b/gcc/ada/back_end.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/backend_utils.adb b/gcc/ada/backend_utils.adb index 6f492fd..011b8b2 100644 --- a/gcc/ada/backend_utils.adb +++ b/gcc/ada/backend_utils.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/backend_utils.ads b/gcc/ada/backend_utils.ads index 71321ef..11c9fc3 100644 --- a/gcc/ada/backend_utils.ads +++ b/gcc/ada/backend_utils.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bcheck.adb b/gcc/ada/bcheck.adb index 38bf2c2..f773778 100644 --- a/gcc/ada/bcheck.adb +++ b/gcc/ada/bcheck.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bcheck.ads b/gcc/ada/bcheck.ads index ee9a3f8..5475c19 100644 --- a/gcc/ada/bcheck.ads +++ b/gcc/ada/bcheck.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/binde.adb b/gcc/ada/binde.adb index 3df78bf..1569604 100644 --- a/gcc/ada/binde.adb +++ b/gcc/ada/binde.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/binde.ads b/gcc/ada/binde.ads index 9e0bbee..30bf0a8 100644 --- a/gcc/ada/binde.ads +++ b/gcc/ada/binde.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/binderr.adb b/gcc/ada/binderr.adb index 9433a16..71b98f5 100644 --- a/gcc/ada/binderr.adb +++ b/gcc/ada/binderr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/binderr.ads b/gcc/ada/binderr.ads index a40f805..57cbd64 100644 --- a/gcc/ada/binderr.ads +++ b/gcc/ada/binderr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb index 049038b..eec9dd5 100644 --- a/gcc/ada/bindgen.adb +++ b/gcc/ada/bindgen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindgen.ads b/gcc/ada/bindgen.ads index 926dd5e..65563ec 100644 --- a/gcc/ada/bindgen.ads +++ b/gcc/ada/bindgen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-augmentors.adb b/gcc/ada/bindo-augmentors.adb index dcbb8d8..d2f3c8a 100644 --- a/gcc/ada/bindo-augmentors.adb +++ b/gcc/ada/bindo-augmentors.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-augmentors.ads b/gcc/ada/bindo-augmentors.ads index 9a6f01d..da3c786 100644 --- a/gcc/ada/bindo-augmentors.ads +++ b/gcc/ada/bindo-augmentors.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-builders.adb b/gcc/ada/bindo-builders.adb index 0017d4b..3ef092a 100644 --- a/gcc/ada/bindo-builders.adb +++ b/gcc/ada/bindo-builders.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-builders.ads b/gcc/ada/bindo-builders.ads index c306d60..7259bb0 100644 --- a/gcc/ada/bindo-builders.ads +++ b/gcc/ada/bindo-builders.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-diagnostics.adb b/gcc/ada/bindo-diagnostics.adb index e5ee55d..657f049 100644 --- a/gcc/ada/bindo-diagnostics.adb +++ b/gcc/ada/bindo-diagnostics.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-diagnostics.ads b/gcc/ada/bindo-diagnostics.ads index 5be5f02..9f6a0ea 100644 --- a/gcc/ada/bindo-diagnostics.ads +++ b/gcc/ada/bindo-diagnostics.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-elaborators.adb b/gcc/ada/bindo-elaborators.adb index a5090e6..9220a7c 100644 --- a/gcc/ada/bindo-elaborators.adb +++ b/gcc/ada/bindo-elaborators.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-elaborators.ads b/gcc/ada/bindo-elaborators.ads index 8fdeda8..b13b373 100644 --- a/gcc/ada/bindo-elaborators.ads +++ b/gcc/ada/bindo-elaborators.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-graphs.adb b/gcc/ada/bindo-graphs.adb index 0989981..e33f2ce 100644 --- a/gcc/ada/bindo-graphs.adb +++ b/gcc/ada/bindo-graphs.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-graphs.ads b/gcc/ada/bindo-graphs.ads index 1f28818..9f2d469 100644 --- a/gcc/ada/bindo-graphs.ads +++ b/gcc/ada/bindo-graphs.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-units.adb b/gcc/ada/bindo-units.adb index 72f2866..d0df8b0 100644 --- a/gcc/ada/bindo-units.adb +++ b/gcc/ada/bindo-units.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-units.ads b/gcc/ada/bindo-units.ads index bb8c1ed..2817b26 100644 --- a/gcc/ada/bindo-units.ads +++ b/gcc/ada/bindo-units.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-validators.adb b/gcc/ada/bindo-validators.adb index 1a6188a..c913e3f 100644 --- a/gcc/ada/bindo-validators.adb +++ b/gcc/ada/bindo-validators.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-validators.ads b/gcc/ada/bindo-validators.ads index e1230c9..319fc85 100644 --- a/gcc/ada/bindo-validators.ads +++ b/gcc/ada/bindo-validators.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-writers.adb b/gcc/ada/bindo-writers.adb index b124a42..019cdeb 100644 --- a/gcc/ada/bindo-writers.adb +++ b/gcc/ada/bindo-writers.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo-writers.ads b/gcc/ada/bindo-writers.ads index edadd6c..1a91454 100644 --- a/gcc/ada/bindo-writers.ads +++ b/gcc/ada/bindo-writers.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo.adb b/gcc/ada/bindo.adb index df0884a..46aa6cc 100644 --- a/gcc/ada/bindo.adb +++ b/gcc/ada/bindo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindo.ads b/gcc/ada/bindo.ads index 07cbba8..c8bbaff 100644 --- a/gcc/ada/bindo.ads +++ b/gcc/ada/bindo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindusg.adb b/gcc/ada/bindusg.adb index 664da34..bfab985 100644 --- a/gcc/ada/bindusg.adb +++ b/gcc/ada/bindusg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/bindusg.ads b/gcc/ada/bindusg.ads index 985e068..e48bfd3 100644 --- a/gcc/ada/bindusg.ads +++ b/gcc/ada/bindusg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/butil.adb b/gcc/ada/butil.adb index dfbcc3c..d6e21df 100644 --- a/gcc/ada/butil.adb +++ b/gcc/ada/butil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/butil.ads b/gcc/ada/butil.ads index fed8a7a..47897267 100644 --- a/gcc/ada/butil.ads +++ b/gcc/ada/butil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/cal.c b/gcc/ada/cal.c index 4c01479..e1ab692 100644 --- a/gcc/ada/cal.c +++ b/gcc/ada/cal.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/casing.adb b/gcc/ada/casing.adb index 8abf11a..1df5877 100644 --- a/gcc/ada/casing.adb +++ b/gcc/ada/casing.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/casing.ads b/gcc/ada/casing.ads index 277b19f..24e3ef6 100644 --- a/gcc/ada/casing.ads +++ b/gcc/ada/casing.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb index 6fb33b4..e1a1b0c 100644 --- a/gcc/ada/checks.adb +++ b/gcc/ada/checks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -4455,8 +4455,8 @@ package body Checks is Discard_Node (Compile_Time_Constraint_Error - (N => N, - Msg => + (N => N, + Msg => "(Ada 2005) null-excluding component % of object % must " & "be initialized??", Ent => Defining_Identifier (Comp))); @@ -4467,8 +4467,8 @@ package body Checks is elsif Array_Comp then Discard_Node (Compile_Time_Constraint_Error - (N => N, - Msg => + (N => N, + Msg => "(Ada 2005) null-excluding array components must " & "be initialized??", Ent => Defining_Identifier (N))); @@ -10896,8 +10896,8 @@ package body Checks is Add_Check (Compile_Time_Constraint_Error ((if Present (Warn_Node) - then Warn_Node else Low_Bound (Expr)), - "static value does not equal lower bound of}??", + then Warn_Node else Low_Bound (Expr)), + "static value does not equal lower bound of}??", T_Typ)); Check_Added := True; end if; diff --git a/gcc/ada/checks.ads b/gcc/ada/checks.ads index 6df752f..48678cd 100644 --- a/gcc/ada/checks.ads +++ b/gcc/ada/checks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/cio.c b/gcc/ada/cio.c index 5a097ab..fa731ca 100644 --- a/gcc/ada/cio.c +++ b/gcc/ada/cio.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb index 830a994..50a4fb4 100644 --- a/gcc/ada/clean.adb +++ b/gcc/ada/clean.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/clean.ads b/gcc/ada/clean.ads index e2dbdb4..0383c4b 100644 --- a/gcc/ada/clean.ads +++ b/gcc/ada/clean.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/comperr.adb b/gcc/ada/comperr.adb index e009c58..90944ac 100644 --- a/gcc/ada/comperr.adb +++ b/gcc/ada/comperr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -424,7 +424,7 @@ package body Comperr is Unit_Name : Node_Id; Success : Boolean; - pragma Unreferenced (Success); + pragma Warnings (Off, "modified by call"); procedure Decode_Name_Buffer; -- Replace "__" by "." in Name_Buffer, and adjust Name_Len accordingly diff --git a/gcc/ada/comperr.ads b/gcc/ada/comperr.ads index 9e44237..d7b2dd1 100644 --- a/gcc/ada/comperr.ads +++ b/gcc/ada/comperr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb index 98f469b..3cda36a 100644 --- a/gcc/ada/contracts.adb +++ b/gcc/ada/contracts.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -4254,6 +4254,11 @@ package body Contracts is procedure Remove_Formals (Id : Entity_Id); -- Remove formals from homonym chains and make them not visible + procedure Restore_Original_Selected_Component; + -- Traverse Expr searching for dispatching calls to functions whose + -- original node was a selected component, and replace them with + -- their original node. + ---------------------------- -- Clear_Unset_References -- ---------------------------- @@ -4313,6 +4318,111 @@ package body Contracts is end loop; end Remove_Formals; + ----------------------------------------- + -- Restore_Original_Selected_Component -- + ----------------------------------------- + + procedure Restore_Original_Selected_Component is + Restored_Nodes_List : Elist_Id := No_Elist; + + procedure Fix_Parents (N : Node_Id); + -- Traverse the subtree of N fixing the Parent field of all the + -- nodes. + + function Restore_Node (N : Node_Id) return Traverse_Result; + -- Process dispatching calls to functions whose original node was + -- a selected component, and replace them with their original + -- node. Restored nodes are stored in the Restored_Nodes_List + -- to fix the parent fields of their subtrees in a separate + -- tree traversal. + + ----------------- + -- Fix_Parents -- + ----------------- + + procedure Fix_Parents (N : Node_Id) is + + function Fix_Parent + (Parent_Node : Node_Id; + Node : Node_Id) return Traverse_Result; + -- Process a single node + + ---------------- + -- Fix_Parent -- + ---------------- + + function Fix_Parent + (Parent_Node : Node_Id; + Node : Node_Id) return Traverse_Result + is + Par : constant Node_Id := Parent (Node); + + begin + if Par /= Parent_Node then + pragma Assert (not Is_List_Member (Node)); + Set_Parent (Node, Parent_Node); + end if; + + return OK; + end Fix_Parent; + + procedure Fix_Parents is + new Traverse_Proc_With_Parent (Fix_Parent); + + begin + Fix_Parents (N); + end Fix_Parents; + + ------------------ + -- Restore_Node -- + ------------------ + + function Restore_Node (N : Node_Id) return Traverse_Result is + begin + if Nkind (N) = N_Function_Call + and then Nkind (Original_Node (N)) = N_Selected_Component + and then Is_Dispatching_Operation (Entity (Name (N))) + then + Rewrite (N, Original_Node (N)); + Set_Original_Node (N, N); + + -- Save the restored node in the Restored_Nodes_List to fix + -- the parent fields of their subtrees in a separate tree + -- traversal. + + Append_New_Elmt (N, Restored_Nodes_List); + end if; + + return OK; + end Restore_Node; + + procedure Restore_Nodes is new Traverse_Proc (Restore_Node); + + -- Start of processing for Restore_Original_Selected_Component + + begin + Restore_Nodes (Expr); + + -- After restoring the original node we must fix the decoration + -- of the Parent attribute to ensure tree consistency; required + -- because when the class-wide condition is inherited, calls to + -- New_Copy_Tree will perform copies of this subtree, and formal + -- occurrences with wrong Parent field cannot be mapped to the + -- new formals. + + if Present (Restored_Nodes_List) then + declare + Elmt : Elmt_Id := First_Elmt (Restored_Nodes_List); + + begin + while Present (Elmt) loop + Fix_Parents (Node (Elmt)); + Next_Elmt (Elmt); + end loop; + end; + end if; + end Restore_Original_Selected_Component; + -- Start of processing for Preanalyze_Condition begin @@ -4329,6 +4439,16 @@ package body Contracts is Remove_Formals (Subp); Pop_Scope; + -- If this preanalyzed condition has occurrences of dispatching calls + -- using the Object.Operation notation, during preanalysis such calls + -- are rewritten as dispatching function calls; if at later stages + -- this condition is inherited we must have restored the original + -- selected-component node to ensure that the preanalysis of the + -- inherited condition rewrites these dispatching calls in the + -- correct context to avoid reporting spurious errors. + + Restore_Original_Selected_Component; + -- Traverse Expr and clear the Controlling_Argument of calls to -- nonabstract functions. Required since the preanalyzed condition -- is not yet installed on its definite context and will be cloned @@ -4373,105 +4493,60 @@ package body Contracts is (Par_Subp : Entity_Id; Subp : Entity_Id) return Node_Id is - Installed_Calls : constant Elist_Id := New_Elmt_List; - - procedure Install_Original_Selected_Component (Expr : Node_Id); - -- Traverse the given expression searching for dispatching calls - -- to functions whose original nodes was a selected component, - -- and replacing them temporarily by a copy of their original - -- node. Modified calls are stored in the list Installed_Calls - -- (to undo this work later). + function Check_Condition (Expr : Node_Id) return Boolean; + -- Used in assertion to check that Expr has no reference to the + -- formals of Par_Subp. - procedure Restore_Dispatching_Calls (Expr : Node_Id); - -- Undo the work done by Install_Original_Selected_Component. + --------------------- + -- Check_Condition -- + --------------------- - ----------------------------------------- - -- Install_Original_Selected_Component -- - ----------------------------------------- + function Check_Condition (Expr : Node_Id) return Boolean is + Par_Formal_Id : Entity_Id; - procedure Install_Original_Selected_Component (Expr : Node_Id) is - function Install_Node (N : Node_Id) return Traverse_Result; - -- Process a single node + function Check_Entity (N : Node_Id) return Traverse_Result; + -- Check occurrence of Par_Formal_Id ------------------ - -- Install_Node -- + -- Check_Entity -- ------------------ - function Install_Node (N : Node_Id) return Traverse_Result is - New_N : Node_Id; - Orig_Nod : Node_Id; - + function Check_Entity (N : Node_Id) return Traverse_Result is begin - if Nkind (N) = N_Function_Call - and then Nkind (Original_Node (N)) = N_Selected_Component - and then Is_Dispatching_Operation (Entity (Name (N))) + if Nkind (N) = N_Identifier + and then Present (Entity (N)) + and then Entity (N) = Par_Formal_Id then - Orig_Nod := Original_Node (N); - - -- Temporarily use the original node field to keep the - -- reference to this node (to undo this work later!). - - New_N := New_Copy (N); - Set_Original_Node (New_N, Orig_Nod); - Append_Elmt (New_N, Installed_Calls); - - Rewrite (N, Orig_Nod); - Set_Original_Node (N, New_N); + return Abandon; end if; return OK; - end Install_Node; + end Check_Entity; - procedure Install_Nodes is new Traverse_Proc (Install_Node); + function Check_Expression is new Traverse_Func (Check_Entity); - begin - Install_Nodes (Expr); - end Install_Original_Selected_Component; - - ------------------------------- - -- Restore_Dispatching_Calls -- - ------------------------------- + -- Start of processing for Check_Condition - procedure Restore_Dispatching_Calls (Expr : Node_Id) is - function Restore_Node (N : Node_Id) return Traverse_Result; - -- Process a single node - - ------------------ - -- Restore_Node -- - ------------------ - - function Restore_Node (N : Node_Id) return Traverse_Result is - Orig_Sel_N : Node_Id; + begin + Par_Formal_Id := First_Formal (Par_Subp); - begin - if Nkind (N) = N_Selected_Component - and then Nkind (Original_Node (N)) = N_Function_Call - and then Contains (Installed_Calls, Original_Node (N)) - then - Orig_Sel_N := Original_Node (Original_Node (N)); - pragma Assert (Nkind (Orig_Sel_N) = N_Selected_Component); - Rewrite (N, Original_Node (N)); - Set_Original_Node (N, Orig_Sel_N); + while Present (Par_Formal_Id) loop + if Check_Expression (Expr) = Abandon then + return False; end if; - return OK; - end Restore_Node; - - procedure Restore_Nodes is new Traverse_Proc (Restore_Node); + Next_Formal (Par_Formal_Id); + end loop; - begin - Restore_Nodes (Expr); - end Restore_Dispatching_Calls; + return True; + end Check_Condition; -- Local variables Assoc_List : constant Elist_Id := New_Elmt_List; Par_Formal_Id : Entity_Id := First_Formal (Par_Subp); Subp_Formal_Id : Entity_Id := First_Formal (Subp); - New_Expr : Node_Id; - Class_Cond : Node_Id; - - -- Start of processing for Inherit_Condition + New_Condition : Node_Id; begin while Present (Par_Formal_Id) loop @@ -4482,18 +4557,25 @@ package body Contracts is Next_Formal (Subp_Formal_Id); end loop; - -- In order to properly preanalyze an inherited preanalyzed - -- condition that has occurrences of the Object.Operation - -- notation we must restore the original node; otherwise we - -- would report spurious errors. + -- Check that Parent field of all the nodes have their correct + -- decoration; required because otherwise mapped nodes with + -- wrong Parent field are left unmodified in the copied tree + -- and cause reporting wrong errors at later stages. + + pragma Assert + (Check_Parents (Class_Condition (Kind, Par_Subp), Assoc_List)); + + New_Condition := + New_Copy_Tree + (Source => Class_Condition (Kind, Par_Subp), + Map => Assoc_List); - Class_Cond := Class_Condition (Kind, Par_Subp); + -- Ensure that the inherited condition has no reference to the + -- formals of the parent subprogram. - Install_Original_Selected_Component (Class_Cond); - New_Expr := New_Copy_Tree (Class_Cond); - Restore_Dispatching_Calls (Class_Cond); + pragma Assert (Check_Condition (New_Condition)); - return New_Copy_Tree (New_Expr, Map => Assoc_List); + return New_Condition; end Inherit_Condition; ---------------------- diff --git a/gcc/ada/contracts.ads b/gcc/ada/contracts.ads index eb26ebf..adbb0e6 100644 --- a/gcc/ada/contracts.ads +++ b/gcc/ada/contracts.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/csets.adb b/gcc/ada/csets.adb index 29a1592..d36b815 100644 --- a/gcc/ada/csets.adb +++ b/gcc/ada/csets.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/csets.ads b/gcc/ada/csets.ads index 1bdbca4..2affb56 100644 --- a/gcc/ada/csets.ads +++ b/gcc/ada/csets.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/cstand.adb b/gcc/ada/cstand.adb index 3822d93..b2e6ef9 100644 --- a/gcc/ada/cstand.adb +++ b/gcc/ada/cstand.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1191,15 +1191,6 @@ package body CStand is pragma Assert (not Known_Esize (Any_Id)); pragma Assert (not Known_Alignment (Any_Id)); - Any_Access := New_Standard_Entity ("an access type"); - Mutate_Ekind (Any_Access, E_Access_Type); - Set_Scope (Any_Access, Standard_Standard); - Set_Etype (Any_Access, Any_Access); - Init_Size (Any_Access, System_Address_Size); - Set_Elem_Alignment (Any_Access); - Set_Directly_Designated_Type - (Any_Access, Any_Type); - Any_Character := New_Standard_Entity ("a character type"); Mutate_Ekind (Any_Character, E_Enumeration_Type); Set_Scope (Any_Character, Standard_Standard); @@ -1416,6 +1407,16 @@ package body CStand is Set_Size_Known_At_Compile_Time (Universal_Fixed); + Universal_Access := New_Standard_Entity ("universal_access"); + Decl := New_Node (N_Full_Type_Declaration, Stloc); + Set_Defining_Identifier (Decl, Universal_Access); + Mutate_Ekind (Universal_Access, E_Access_Type); + Set_Etype (Universal_Access, Universal_Access); + Set_Scope (Universal_Access, Standard_Standard); + Init_Size (Universal_Access, System_Address_Size); + Set_Elem_Alignment (Universal_Access); + Set_Directly_Designated_Type (Universal_Access, Any_Type); + -- Create type declaration for Duration, using a 64-bit size. The -- delta and size values depend on the mode set in system.ads. diff --git a/gcc/ada/cstand.ads b/gcc/ada/cstand.ads index 78bddc6..9159f32 100644 --- a/gcc/ada/cstand.ads +++ b/gcc/ada/cstand.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/cstreams.c b/gcc/ada/cstreams.c index af794c7..e714162 100644 --- a/gcc/ada/cstreams.c +++ b/gcc/ada/cstreams.c @@ -6,7 +6,7 @@ * * * Auxiliary C functions for Interfaces.C.Streams * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/ctrl_c.c b/gcc/ada/ctrl_c.c index ebb74ca..eeec3e6 100644 --- a/gcc/ada/ctrl_c.c +++ b/gcc/ada/ctrl_c.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2002-2021, Free Software Foundation, Inc. * + * Copyright (C) 2002-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 8873000..8a0ba021 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -159,7 +159,7 @@ package body Debug is -- d_r -- d_s Stop elaboration checks on synchronous suspension -- d_t In LLVM-based CCG, dump LLVM IR after transformations are done - -- d_u + -- d_u In LLVM-based CCG, dump flows -- d_v Enable additional checks and debug printouts in Atree -- d_w -- d_x Disable inline expansion of Image attribute for enumeration types @@ -183,7 +183,7 @@ package body Debug is -- d_O -- d_P -- d_Q - -- d_R + -- d_R For LLVM, dump the representation of records -- d_S -- d_T Output trace information on invocation path recording -- d_U Disable prepending messages with "error:". @@ -1001,6 +1001,9 @@ package body Debug is -- after the pass that does transformations to the IR into a -- filename ending with .trans.ll. + -- d_u In the LLVM-based CCG, dump flows, both when originally created + -- and after transformations. + -- d_v Enable additional checks and debug printouts in Atree -- d_x The compiler does not expand in line the Image attribute for user- @@ -1024,6 +1027,9 @@ package body Debug is -- it is checked, and the progress of the recursive trace through -- elaboration calls at compile time. + -- d_R In the LLVM backend, output the internal representation of + -- each record + -- d_T The compiler outputs trace information to standard output whenever -- an invocation path is recorded. diff --git a/gcc/ada/debug.ads b/gcc/ada/debug.ads index c8f2c22..1a07ec6 100644 --- a/gcc/ada/debug.ads +++ b/gcc/ada/debug.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/debug_a.adb b/gcc/ada/debug_a.adb index 8a8ccc6..9ed1939 100644 --- a/gcc/ada/debug_a.adb +++ b/gcc/ada/debug_a.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/debug_a.ads b/gcc/ada/debug_a.ads index 1c165de..427d4a3 100644 --- a/gcc/ada/debug_a.ads +++ b/gcc/ada/debug_a.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index b0b9917..fbd60eb 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -1003,39 +1003,6 @@ Compile_Time_Warning resulted in a fatal error. Now the compiler always emits a warning. You can use :ref:`Compile_Time_Error` to force the generation of an error. -Pragma Compiler_Unit -==================== - -Syntax: - - -.. code-block:: ada - - pragma Compiler_Unit; - - -This pragma is obsolete. It is equivalent to Compiler_Unit_Warning. It is -retained so that old versions of the GNAT run-time that use this pragma can -be compiled with newer versions of the compiler. - -Pragma Compiler_Unit_Warning -============================ - -Syntax: - - -.. code-block:: ada - - pragma Compiler_Unit_Warning; - - -This pragma is intended only for internal use in the GNAT run-time library. -It indicates that the unit is used as part of the compiler build. The effect -is to generate warnings for the use of constructs (for example, conditional -expressions) that would cause trouble when bootstrapping using an older -version of GNAT. For the exact list of restrictions, see the compiler sources -and references to Check_Compiler_Unit. - Pragma Complete_Representation ============================== @@ -7170,7 +7137,9 @@ or not to be given individually for each accept statement. The left hand side of an assignment does not count as a reference for the purpose of this pragma. Thus it is fine to assign to an entity for which -pragma Unreferenced is given. +pragma Unreferenced is given. However, use of an entity as an actual for +an out parameter does count as a reference unless warnings for unread output +parameters are enabled via :switch:`-gnatw.o`. Note that if a warning is desired for all calls to a given subprogram, regardless of whether they occur in the same unit as the subprogram diff --git a/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst b/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst index 6d60e66..69efc00 100644 --- a/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst +++ b/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst @@ -656,6 +656,18 @@ To take maximum advantage of this space-saving optimization, any unit declaring a tagged type should be compiled with the restriction, though this is not required. +No_Tagged_Type_Registration +--------------------------- +.. index:: No_Tagged_Type_Registration + +[GNAT] If this restriction is active, then class-wide streaming +attributes are not supported. In addition, the subprograms in +Ada.Tags are not supported. +If this restriction is active, the generated code is simplified by +omitting the otherwise-required global registration of tagged types when they +are declared. This restriction may be necessary in order to also apply +the No_Elaboration_Code restriction. + No_Task_Allocators ------------------ .. index:: No_Task_Allocators @@ -1049,4 +1061,3 @@ follows:: or equivalently:: gnatprove -P project.gpr --mode=check_all - diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst index 48b7623..97fb3df 100644 --- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst +++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst @@ -3703,6 +3703,8 @@ of the pragma in the :title:`GNAT_Reference_manual`). * Comparison of an object or (unary or binary) operation of boolean type to an explicit True value. + * Import of parent package. + The default is that warnings for redundant constructs are not given. diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb index 763b646..31d261a 100644 --- a/gcc/ada/einfo-utils.adb +++ b/gcc/ada/einfo-utils.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -47,16 +47,16 @@ package body Einfo.Utils is -- Aliases/Renamings of Renamed_Or_Alias -- ------------------------------------------- - function Alias (N : Entity_Id) return Node_Id is + function Alias (N : Entity_Id) return Entity_Id is begin - return Val : constant Node_Id := Renamed_Or_Alias (N) do + return Val : constant Entity_Id := Renamed_Or_Alias (N) do pragma Assert (Is_Overloadable (N) or else Ekind (N) = E_Subprogram_Type); pragma Assert (Val in N_Entity_Id | N_Empty_Id); end return; end Alias; - procedure Set_Alias (N : Entity_Id; Val : Node_Id) is + procedure Set_Alias (N : Entity_Id; Val : Entity_Id) is begin pragma Assert (Is_Overloadable (N) or else Ekind (N) = E_Subprogram_Type); @@ -65,15 +65,15 @@ package body Einfo.Utils is Set_Renamed_Or_Alias (N, Val); end Set_Alias; - function Renamed_Entity (N : Entity_Id) return Node_Id is + function Renamed_Entity (N : Entity_Id) return Entity_Id is begin - return Val : constant Node_Id := Renamed_Or_Alias (N) do + return Val : constant Entity_Id := Renamed_Or_Alias (N) do pragma Assert (not Is_Object (N) or else Etype (N) = Any_Type); pragma Assert (Val in N_Entity_Id | N_Empty_Id); end return; end Renamed_Entity; - procedure Set_Renamed_Entity (N : Entity_Id; Val : Node_Id) is + procedure Set_Renamed_Entity (N : Entity_Id; Val : Entity_Id) is begin pragma Assert (not Is_Object (N)); pragma Assert (Val in N_Entity_Id); diff --git a/gcc/ada/einfo-utils.ads b/gcc/ada/einfo-utils.ads index c82b469..f914de7 100644 --- a/gcc/ada/einfo-utils.ads +++ b/gcc/ada/einfo-utils.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -42,10 +42,10 @@ package Einfo.Utils is -- expressions, but those use different mechanisms; the fields here are not -- used. - function Alias (N : Entity_Id) return Node_Id; - procedure Set_Alias (N : Entity_Id; Val : Node_Id); - function Renamed_Entity (N : Entity_Id) return Node_Id; - procedure Set_Renamed_Entity (N : Entity_Id; Val : Node_Id); + function Alias (N : Entity_Id) return Entity_Id; + procedure Set_Alias (N : Entity_Id; Val : Entity_Id); + function Renamed_Entity (N : Entity_Id) return Entity_Id; + procedure Set_Renamed_Entity (N : Entity_Id; Val : Entity_Id); function Renamed_Object (N : Entity_Id) return Node_Id; procedure Set_Renamed_Object (N : Entity_Id; Val : Node_Id); diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb index 3202f99..e7be24f 100644 --- a/gcc/ada/einfo.adb +++ b/gcc/ada/einfo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index ca2ba20..c709a1f 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -3745,7 +3745,7 @@ package Einfo is -- No_Dynamic_Predicate_On_Actual -- Defined in discrete types. Set for generic formal types that are used --- in loops and quantified expressions. The corresponing actual cannot +-- in loops and quantified expressions. The corresponding actual cannot -- have dynamic predicates. -- No_Pool_Assigned [root type only] @@ -4864,10 +4864,6 @@ package Einfo is -- associated with an access attribute. After resolution a specific access -- type will be established as determined by the context. --- Finally, the type Any_Access is used to label -null- during type --- resolution. Any_Access is also replaced by the context type after --- resolution. - -------------------------------------------------------- -- Description of Defined Attributes for Entity_Kinds -- -------------------------------------------------------- diff --git a/gcc/ada/elists.adb b/gcc/ada/elists.adb index 165adb0..f75c126 100644 --- a/gcc/ada/elists.adb +++ b/gcc/ada/elists.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/elists.ads b/gcc/ada/elists.ads index 2561d29..4b07f21 100644 --- a/gcc/ada/elists.ads +++ b/gcc/ada/elists.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/elists.h b/gcc/ada/elists.h index d7243fc..7f99b63 100644 --- a/gcc/ada/elists.h +++ b/gcc/ada/elists.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/env.c b/gcc/ada/env.c index f542dcd..7af436e 100644 --- a/gcc/ada/env.c +++ b/gcc/ada/env.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2005-2021, Free Software Foundation, Inc. * + * Copyright (C) 2005-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/env.h b/gcc/ada/env.h index b3f4767..5df7dc1 100644 --- a/gcc/ada/env.h +++ b/gcc/ada/env.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2009-2021, Free Software Foundation, Inc. * + * Copyright (C) 2009-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/err_vars.ads b/gcc/ada/err_vars.ads index 819d1ad..105f467 100644 --- a/gcc/ada/err_vars.ads +++ b/gcc/ada/err_vars.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -61,14 +61,6 @@ package Err_Vars is -- not get reset by any Error_Msg call, so the caller is responsible -- for resetting it. - Warn_On_Instance : Boolean := False; - -- Normally if a warning is generated in a generic template from the - -- analysis of the template, then the warning really belongs in the - -- template, and the default value of False for this Boolean achieves - -- that effect. If Warn_On_Instance is set True, then the warnings are - -- generated on the instantiation (referring to the template) rather - -- than on the template itself. - Raise_Exception_On_Error : Nat := 0; -- If this value is non-zero, then any attempt to generate an error -- message raises the exception Error_Msg_Exception, and the error diff --git a/gcc/ada/errno.c b/gcc/ada/errno.c index 303134b..d3062a4 100644 --- a/gcc/ada/errno.c +++ b/gcc/ada/errno.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index 76a8268..b862637 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -440,6 +440,28 @@ package body Errout is and then Warnings_Detected >= Maximum_Messages then return; + + -- Suppress warnings inside a loop that is known to be null or is + -- probably null (i.e. when loop executes only if invalid values + -- present). In either case warnings in the loop are likely to be junk. + + elsif Is_Warning_Msg and then Present (N) then + + declare + P : Node_Id; + + begin + P := Parent (N); + while Present (P) loop + if Nkind (P) = N_Loop_Statement + and then Suppress_Loop_Warnings (P) + then + return; + end if; + + P := Parent (P); + end loop; + end; end if; -- The idea at this stage is that we have two kinds of messages @@ -805,27 +827,14 @@ package body Errout is ------------------- procedure Error_Msg_CRT (Feature : String; N : Node_Id) is - CNRT : constant String := " not allowed in no run time mode"; - CCRT : constant String := " not supported by configuration>"; - - S : String (1 .. Feature'Length + 1 + CCRT'Length); - L : Natural; - begin - S (1) := '|'; - S (2 .. Feature'Length + 1) := Feature; - L := Feature'Length + 2; - if No_Run_Time_Mode then - S (L .. L + CNRT'Length - 1) := CNRT; - L := L + CNRT'Length - 1; + Error_Msg_N ('|' & Feature & " not allowed in no run time mode", N); else pragma Assert (Configurable_Run_Time_Mode); - S (L .. L + CCRT'Length - 1) := CCRT; - L := L + CCRT'Length - 1; + Error_Msg_N ('|' & Feature & " not supported by configuration>", N); end if; - Error_Msg_N (S (1 .. L), N); Configurable_Run_Time_Violations := Configurable_Run_Time_Violations + 1; end Error_Msg_CRT; @@ -1049,7 +1058,7 @@ package body Errout is elsif No (Cunit (Main_Unit)) then null; - -- If the flag location is not in the main extended source unit, then + -- If the flag location is not in the extended main source unit, then -- we want to eliminate the warning, unless it is in the extended -- main code unit and we want warnings on the instance. @@ -1202,6 +1211,7 @@ package body Errout is Check => Is_Check_Msg, Warn_Err => False, -- reset below Warn_Chr => Warning_Msg_Char, + Warn_Runtime_Raise => Is_Runtime_Raise, Style => Is_Style_Msg, Serious => Is_Serious_Error, Uncond => Is_Unconditional_Msg, @@ -1218,10 +1228,15 @@ package body Errout is or else Warning_Treated_As_Error (Get_Warning_Tag (Cur_Msg))); - -- Propagate Warn_Err to this message and preceding continuations + -- Propagate Warn_Err to this message and preceding continuations. + -- Likewise, propagate Is_Warning_Msg and Is_Runtime_Raise, because the + -- current continued message could have been escalated from warning to + -- error. for J in reverse 1 .. Errors.Last loop - Errors.Table (J).Warn_Err := Warn_Err; + Errors.Table (J).Warn_Err := Warn_Err; + Errors.Table (J).Warn := Is_Warning_Msg; + Errors.Table (J).Warn_Runtime_Raise := Is_Runtime_Raise; exit when not Errors.Table (J).Msg_Cont; end loop; @@ -1490,26 +1505,6 @@ package body Errout is Last_Killed := True; return; end if; - - -- Suppress if inside loop that is known to be null or is probably - -- null (case where loop executes only if invalid values present). - -- In either case warnings in the loop are likely to be junk. - - declare - P : Node_Id; - - begin - P := Parent (N); - while Present (P) loop - if Nkind (P) = N_Loop_Statement - and then Suppress_Loop_Warnings (P) - then - return; - end if; - - P := Parent (P); - end loop; - end; end if; -- Test for message to be output @@ -3254,7 +3249,7 @@ package body Errout is function Check_For_Warning (N : Node_Id) return Traverse_Result; -- This function checks one node for a possible warning message - function Check_All_Warnings is new Traverse_Func (Check_For_Warning); + procedure Check_All_Warnings is new Traverse_Proc (Check_For_Warning); -- This defines the traversal operation ----------------------- @@ -3285,13 +3280,17 @@ package body Errout is -- not remove style messages here. They are warning messages -- but not ones we want removed in this context. - and then Errors.Table (E).Warn + and then (Errors.Table (E).Warn + or else + Errors.Table (E).Warn_Runtime_Raise) -- Don't remove unconditional messages and then not Errors.Table (E).Uncond then - Warnings_Detected := Warnings_Detected - 1; + if Errors.Table (E).Warn then + Warnings_Detected := Warnings_Detected - 1; + end if; if Errors.Table (E).Info then Warning_Info_Messages := Warning_Info_Messages - 1; @@ -3341,50 +3340,34 @@ package body Errout is -- the current tree. Given that we are in unreachable code, this -- modification to the tree is harmless. - declare - Status : Traverse_Final_Result; - - begin - if Is_List_Member (N) then - Set_Condition (N, Original_Node (N)); - Status := Check_All_Warnings (Condition (N)); - else - Rewrite (N, Original_Node (N)); - Status := Check_All_Warnings (N); - end if; - - return Status; - end; - - else - return OK; + if Is_List_Member (N) then + Set_Condition (N, Original_Node (N)); + Check_All_Warnings (Condition (N)); + else + Rewrite (N, Original_Node (N)); + Check_All_Warnings (N); + end if; end if; + + return OK; end Check_For_Warning; -- Start of processing for Remove_Warning_Messages begin if Warnings_Detected /= 0 then - declare - Discard : Traverse_Final_Result; - pragma Warnings (Off, Discard); - - begin - Discard := Check_All_Warnings (N); - end; + Check_All_Warnings (N); end if; end Remove_Warning_Messages; procedure Remove_Warning_Messages (L : List_Id) is Stat : Node_Id; begin - if Is_Non_Empty_List (L) then - Stat := First (L); - while Present (Stat) loop - Remove_Warning_Messages (Stat); - Next (Stat); - end loop; - end if; + Stat := First (L); + while Present (Stat) loop + Remove_Warning_Messages (Stat); + Next (Stat); + end loop; end Remove_Warning_Messages; -------------------- @@ -3407,60 +3390,57 @@ package body Errout is (Buf : in out Bounded_String; Loc : Source_Ptr) is + Src_Ind : constant Source_File_Index := Get_Source_File_Index (Loc); + Sbuffer : Source_Buffer_Ptr; + Ref_Ptr : Integer; + Src_Ptr : Source_Ptr; + begin -- We have an all lower case name from Namet, and now we want to set -- the appropriate case. If possible we copy the actual casing from -- the source. If not we use standard identifier casing. - declare - Src_Ind : constant Source_File_Index := Get_Source_File_Index (Loc); - Sbuffer : Source_Buffer_Ptr; - Ref_Ptr : Integer; - Src_Ptr : Source_Ptr; + Ref_Ptr := 1; + Src_Ptr := Loc; - begin - Ref_Ptr := 1; - Src_Ptr := Loc; + -- For standard locations, always use mixed case - -- For standard locations, always use mixed case + if Loc <= No_Location then + Set_Casing (Buf, Mixed_Case); - if Loc <= No_Location then - Set_Casing (Buf, Mixed_Case); + else + -- Determine if the reference we are dealing with corresponds to text + -- at the point of the error reference. This will often be the case + -- for simple identifier references, and is the case where we can + -- copy the casing from the source. + + Sbuffer := Source_Text (Src_Ind); + + while Ref_Ptr <= Buf.Length loop + exit when + Fold_Lower (Sbuffer (Src_Ptr)) /= + Fold_Lower (Buf.Chars (Ref_Ptr)); + Ref_Ptr := Ref_Ptr + 1; + Src_Ptr := Src_Ptr + 1; + end loop; - else - -- Determine if the reference we are dealing with corresponds to - -- text at the point of the error reference. This will often be - -- the case for simple identifier references, and is the case - -- where we can copy the casing from the source. + -- If we get through the loop without a mismatch, then output the + -- name the way it is cased in the source program. - Sbuffer := Source_Text (Src_Ind); + if Ref_Ptr > Buf.Length then + Src_Ptr := Loc; - while Ref_Ptr <= Buf.Length loop - exit when - Fold_Lower (Sbuffer (Src_Ptr)) /= - Fold_Lower (Buf.Chars (Ref_Ptr)); - Ref_Ptr := Ref_Ptr + 1; + for J in 1 .. Buf.Length loop + Buf.Chars (J) := Sbuffer (Src_Ptr); Src_Ptr := Src_Ptr + 1; end loop; - -- If we get through the loop without a mismatch, then output the - -- name the way it is cased in the source program - - if Ref_Ptr > Buf.Length then - Src_Ptr := Loc; - - for J in 1 .. Buf.Length loop - Buf.Chars (J) := Sbuffer (Src_Ptr); - Src_Ptr := Src_Ptr + 1; - end loop; - - -- Otherwise set the casing using the default identifier casing + -- Otherwise set the casing using the default identifier casing - else - Set_Casing (Buf, Identifier_Casing (Src_Ind)); - end if; + else + Set_Casing (Buf, Identifier_Casing (Src_Ind)); end if; - end; + end if; end Adjust_Name_Case; --------------------------- @@ -3622,8 +3602,7 @@ package body Errout is Set_Msg_Str ("exception name"); return; - elsif Error_Msg_Node_1 = Any_Access - or else Error_Msg_Node_1 = Any_Array + elsif Error_Msg_Node_1 = Any_Array or else Error_Msg_Node_1 = Any_Boolean or else Error_Msg_Node_1 = Any_Character or else Error_Msg_Node_1 = Any_Composite @@ -3640,17 +3619,21 @@ package body Errout is Set_Msg_Name_Buffer; return; - elsif Error_Msg_Node_1 = Universal_Real then - Set_Msg_Str ("type universal real"); - return; - elsif Error_Msg_Node_1 = Universal_Integer then Set_Msg_Str ("type universal integer"); return; + elsif Error_Msg_Node_1 = Universal_Real then + Set_Msg_Str ("type universal real"); + return; + elsif Error_Msg_Node_1 = Universal_Fixed then Set_Msg_Str ("type universal fixed"); return; + + elsif Error_Msg_Node_1 = Universal_Access then + Set_Msg_Str ("type universal access"); + return; end if; -- Special case of anonymous array @@ -4083,7 +4066,8 @@ package body Errout is if Is_Warning_Msg and then Warning_Mode = Treat_Run_Time_Warnings_As_Errors then - Is_Warning_Msg := False; + Is_Warning_Msg := False; + Is_Runtime_Raise := True; end if; if Is_Warning_Msg then diff --git a/gcc/ada/errout.ads b/gcc/ada/errout.ads index d6b8910..950dd55 100644 --- a/gcc/ada/errout.ads +++ b/gcc/ada/errout.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -272,8 +272,7 @@ package Errout is -- avoided. This is currently used by the Compile_Time_Warning pragma -- to ensure the message for a with'ed unit is output, and for warnings -- on ineffective back-end inlining, which is detected in units that - -- contain subprograms to be inlined in the main program. It is also - -- used by the Compiler_Unit_Warning pragma for similar reasons. + -- contain subprograms to be inlined in the main program. -- Insertion character ? (Question: warning message -- OBSOLETE) -- The character ? appearing anywhere in a message makes the message diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb index 8225fd4..c18f418 100644 --- a/gcc/ada/erroutc.adb +++ b/gcc/ada/erroutc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -902,6 +902,7 @@ package body Erroutc is Is_Serious_Error := True; Is_Unconditional_Msg := False; Is_Warning_Msg := False; + Is_Runtime_Raise := False; -- Check style message @@ -1226,7 +1227,6 @@ package body Erroutc is else Set_At; Set_Msg_Str ("line "); - Int_File := False; Set_Msg_Int (Int (Get_Logical_Line_Number (Loc))); end if; diff --git a/gcc/ada/erroutc.ads b/gcc/ada/erroutc.ads index 0c194e8..d4d4443 100644 --- a/gcc/ada/erroutc.ads +++ b/gcc/ada/erroutc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -69,7 +69,12 @@ package Erroutc is Is_Warning_Msg : Boolean := False; -- Set True to indicate if current message is warning message (contains ? - -- or contains < and Error_Msg_Warn is True. + -- or contains < and Error_Msg_Warn is True). + + Is_Runtime_Raise : Boolean := False; + -- Set to True to indicate that the current message is a warning about a + -- constraint error that will be raised at runtime (contains [ and switch + -- -gnatwE was given). Is_Info_Msg : Boolean := False; -- Set True to indicate that the current message starts with the characters @@ -239,6 +244,10 @@ package Erroutc is -- True if this is a warning message which is to be treated as an error -- as a result of a match with a Warning_As_Error pragma. + Warn_Runtime_Raise : Boolean; + -- True if this a warning about a constraint error that will be raised + -- at runtime. + Warn_Chr : String (1 .. 2); -- See Warning_Msg_Char diff --git a/gcc/ada/errutil.adb b/gcc/ada/errutil.adb index 4e398d1..921de31 100644 --- a/gcc/ada/errutil.adb +++ b/gcc/ada/errutil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -217,6 +217,7 @@ package body Errutil is Info => Is_Info_Msg, Check => Is_Check_Msg, Warn_Err => Warning_Mode = Treat_As_Error, + Warn_Runtime_Raise => Is_Runtime_Raise, Warn_Chr => Warning_Msg_Char, Style => Is_Style_Msg, Serious => Is_Serious_Error, diff --git a/gcc/ada/errutil.ads b/gcc/ada/errutil.ads index 9f7c1c2..c5a69bc 100644 --- a/gcc/ada/errutil.ads +++ b/gcc/ada/errutil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/eval_fat.adb b/gcc/ada/eval_fat.adb index 68a25d1..5370ef6 100644 --- a/gcc/ada/eval_fat.adb +++ b/gcc/ada/eval_fat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/eval_fat.ads b/gcc/ada/eval_fat.ads index 4947d74..7264e80 100644 --- a/gcc/ada/eval_fat.ads +++ b/gcc/ada/eval_fat.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exit.c b/gcc/ada/exit.c index f107b17..bb902c7 100644 --- a/gcc/ada/exit.c +++ b/gcc/ada/exit.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index bdb483e..e360baa 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -169,9 +169,9 @@ package body Exp_Aggr is -- Subsidiary to the expansion of array and record aggregates. Generate -- part of the necessary code to finalize a transient component. Aggr is -- the related aggregate. Fin_Clear is the finalization call used to clean - -- up the transient component. Hook_Clear is the hook reset statment. Stmts - -- is the initialization statement list for the component. All generated - -- code is added to Stmts. + -- up the transient component. Hook_Clear is the hook reset statement. + -- Stmts is the initialization statement list for the component. All + -- generated code is added to Stmts. procedure Sort_Case_Table (Case_Table : in out Case_Table_Type); -- Sort the Case Table using the Lower Bound of each Choice as the key. @@ -1021,7 +1021,7 @@ package body Exp_Aggr is -- 2. If the aggregate contains positional elements we - -- (a) translate the positional elements in a series of assignments + -- (a) Translate the positional elements in a series of assignments -- (b) Generate a final loop to cover the others choice if any. -- Note that this final loop has to be a while loop since the case @@ -1032,7 +1032,7 @@ package body Exp_Aggr is -- cannot be handled by a for loop. Thus for the following - -- array (L .. H) := (.. positional elements.., others =>E); + -- array (L .. H) := (.. positional elements.., others => E); -- we always generate something like: @@ -1872,12 +1872,6 @@ package body Exp_Aggr is Set_Etype (Indexed_Comp, Ctype); Append_To (Stmts, Make_Invariant_Call (Indexed_Comp)); end if; - - elsif Is_Access_Type (Ctype) then - Append_To (Stmts, - Make_Assignment_Statement (Loc, - Name => New_Copy_Tree (Indexed_Comp), - Expression => Make_Null (Loc))); end if; if Needs_Finalization (Ctype) then @@ -2069,11 +2063,9 @@ package body Exp_Aggr is -- Construct "for L_J in Index_Base range L .. H" L_Iteration_Scheme := - Make_Iteration_Scheme - (Loc, + Make_Iteration_Scheme (Loc, Loop_Parameter_Specification => - Make_Loop_Parameter_Specification - (Loc, + Make_Loop_Parameter_Specification (Loc, Defining_Identifier => L_J, Discrete_Subtype_Definition => L_Range)); @@ -2212,15 +2204,10 @@ package body Exp_Aggr is begin if Box_Present (Assoc) then - if Is_Scalar_Type (Ctype) then - if Present (Default_Aspect_Component_Value (Typ)) then - return Default_Aspect_Component_Value (Typ); - elsif Present (Default_Aspect_Value (Ctype)) then - return Default_Aspect_Value (Ctype); - else - return Empty; - end if; - + if Present (Default_Aspect_Component_Value (Typ)) then + return Default_Aspect_Component_Value (Typ); + elsif Needs_Simple_Initialization (Ctype) then + return Get_Simple_Init_Val (Ctype, N); else return Empty; end if; @@ -6408,7 +6395,7 @@ package body Exp_Aggr is One_Loop := Make_Loop_Statement (Loc, Iteration_Scheme => Make_Iteration_Scheme (Loc, - Iterator_Specification => New_Copy_Tree (Iter)), + Iterator_Specification => New_Copy_Tree (Iter)), Statements => New_List (Incr)); Append (One_Loop, Size_Expr_Code); @@ -6540,7 +6527,7 @@ package body Exp_Aggr is One_Loop := Make_Loop_Statement (Loc, Iteration_Scheme => Make_Iteration_Scheme (Loc, - Iterator_Specification => Copy_Separate_Tree (Iter)), + Iterator_Specification => Copy_Separate_Tree (Iter)), Statements => New_List (New_Comp, Incr)); Append (One_Loop, Insertion_Code); @@ -6932,7 +6919,7 @@ package body Exp_Aggr is -- In the remaining cases the aggregate appears in the RHS of an -- assignment, which may be part of the expansion of an object - -- delaration. If the aggregate is an actual in a call, itself + -- declaration. If the aggregate is an actual in a call, itself -- possibly in a RHS, building it in the target is not possible. elsif Maybe_In_Place_OK @@ -7271,7 +7258,7 @@ package body Exp_Aggr is -- overestimate if a filter is present, but is a safe approximation. -- If bounds are dynamic the aggregate is created in two passes, and -- the first generates a loop for the sole purpose of computing the - -- number of elements that will be generated on the seocnd pass. + -- number of elements that will be generated on the second pass. procedure Expand_Iterated_Component (Comp : Node_Id); -- Handle iterated_component_association and iterated_Element @@ -7495,7 +7482,7 @@ package body Exp_Aggr is Iterator_Specification => Iterator_Specification (Comp)); else - -- Loop_Parameter_Specifcation is parsed with a choice list. + -- Loop_Parameter_Specification is parsed with a choice list. -- where the range is the first (and only) choice. L_Range := Relocate_Node (First (Discrete_Choices (Comp))); @@ -9388,7 +9375,7 @@ package body Exp_Aggr is ----------------------- function Get_Component_Val (N : Node_Id) return Uint is - Val : Uint; + Val : Uint; begin -- We have to analyze the expression here before doing any further diff --git a/gcc/ada/exp_aggr.ads b/gcc/ada/exp_aggr.ads index 2e0fde1..b105175 100644 --- a/gcc/ada/exp_aggr.ads +++ b/gcc/ada/exp_aggr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_atag.adb b/gcc/ada/exp_atag.adb index bae98a6..d2de2c9 100644 --- a/gcc/ada/exp_atag.adb +++ b/gcc/ada/exp_atag.adb @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_atag.ads b/gcc/ada/exp_atag.ads index e756080..cfdde34 100644 --- a/gcc/ada/exp_atag.ads +++ b/gcc/ada/exp_atag.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 33ac8bd..5374dd4 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -404,8 +404,6 @@ package body Exp_Attr is Parameter_Specifications => New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Obj_Id, - In_Present => True, - Out_Present => False, Parameter_Type => New_Occurrence_Of (Formal_Typ, Loc))), Result_Definition => New_Occurrence_Of (Standard_Boolean, Loc)), @@ -3786,7 +3784,7 @@ package body Exp_Attr is -------------- when Attribute_From_Any => From_Any : declare - Decls : constant List_Id := New_List; + Decls : constant List_Id := New_List; begin Rewrite (N, diff --git a/gcc/ada/exp_attr.ads b/gcc/ada/exp_attr.ads index 6bbfeff..855247e 100644 --- a/gcc/ada/exp_attr.ads +++ b/gcc/ada/exp_attr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_cg.adb b/gcc/ada/exp_cg.adb index 116dc64..2285e79 100644 --- a/gcc/ada/exp_cg.adb +++ b/gcc/ada/exp_cg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_cg.ads b/gcc/ada/exp_cg.ads index a26bb5e..d82d354 100644 --- a/gcc/ada/exp_cg.ads +++ b/gcc/ada/exp_cg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch10.ads b/gcc/ada/exp_ch10.ads index 2193d02..c9ff1db 100644 --- a/gcc/ada/exp_ch10.ads +++ b/gcc/ada/exp_ch10.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index b8a9a8d..b2eff31 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1089,7 +1089,7 @@ package body Exp_Ch11 is -- (protecting test only needed if not at library level) -- exceptF : aliased System.Atomic_Operations.Test_And_Set. - -- .Test_And_Set_Flag := 0; -- static data + -- .Test_And_Set_Flag; -- static data -- if not Atomic_Test_And_Set (exceptF) then -- Register_Exception (except'Unrestricted_Access); -- end if; @@ -1321,9 +1321,7 @@ package body Exp_Ch11 is Defining_Identifier => Flag_Id, Aliased_Present => True, Object_Definition => - New_Occurrence_Of (RTE (RE_Test_And_Set_Flag), Loc), - Expression => - Make_Integer_Literal (Loc, 0)); + New_Occurrence_Of (RTE (RE_Test_And_Set_Flag), Loc)); else Flag_Decl := Make_Object_Declaration (Loc, diff --git a/gcc/ada/exp_ch11.ads b/gcc/ada/exp_ch11.ads index 057919b..e9d9a10 100644 --- a/gcc/ada/exp_ch11.ads +++ b/gcc/ada/exp_ch11.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch12.adb b/gcc/ada/exp_ch12.adb index 3a73a8e..6a38109 100644 --- a/gcc/ada/exp_ch12.adb +++ b/gcc/ada/exp_ch12.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch12.ads b/gcc/ada/exp_ch12.ads index 69fb86e..1e76518 100644 --- a/gcc/ada/exp_ch12.ads +++ b/gcc/ada/exp_ch12.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch13.adb b/gcc/ada/exp_ch13.adb index 6665daa..d3765e2 100644 --- a/gcc/ada/exp_ch13.adb +++ b/gcc/ada/exp_ch13.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch13.ads b/gcc/ada/exp_ch13.ads index f5dcfe0..b20934d 100644 --- a/gcc/ada/exp_ch13.ads +++ b/gcc/ada/exp_ch13.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch2.adb b/gcc/ada/exp_ch2.adb index a8b20aa..921a8b7 100644 --- a/gcc/ada/exp_ch2.adb +++ b/gcc/ada/exp_ch2.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -144,7 +144,7 @@ package body Exp_Ch2 is -- Do not replace lvalues - and then not May_Be_Lvalue (N) + and then not Known_To_Be_Assigned (N) -- Check that entity is suitable for replacement @@ -423,7 +423,7 @@ package body Exp_Ch2 is and then Is_Scalar_Type (Etype (N)) and then (Is_Assignable (E) or else Is_Constant_Object (E)) and then Comes_From_Source (N) - and then Is_LHS (N) = No + and then not Known_To_Be_Assigned (N) and then not Is_Actual_Out_Parameter (N) and then (Nkind (Parent (N)) /= N_Attribute_Reference or else Attribute_Name (Parent (N)) /= Name_Valid) @@ -541,51 +541,6 @@ package body Exp_Ch2 is Addr_Ent : constant Entity_Id := Node (Last_Elmt (Acc_Stack)); P_Comp_Ref : Entity_Id; - function In_Assignment_Context (N : Node_Id) return Boolean; - -- Check whether this is a context in which the entry formal may be - -- assigned to. - - --------------------------- - -- In_Assignment_Context -- - --------------------------- - - function In_Assignment_Context (N : Node_Id) return Boolean is - begin - -- Case of use in a call - - -- ??? passing a formal as actual for a mode IN formal is - -- considered as an assignment? - - if Nkind (Parent (N)) in - N_Procedure_Call_Statement | N_Entry_Call_Statement - or else (Nkind (Parent (N)) = N_Assignment_Statement - and then N = Name (Parent (N))) - then - return True; - - -- Case of a parameter association: climb up to enclosing call - - elsif Nkind (Parent (N)) = N_Parameter_Association then - return In_Assignment_Context (Parent (N)); - - -- Case of a selected component, indexed component or slice prefix: - -- climb up the tree, unless the prefix is of an access type (in - -- which case there is an implicit dereference, and the formal itself - -- is not being assigned to). - - elsif Nkind (Parent (N)) in - N_Selected_Component | N_Indexed_Component | N_Slice - and then N = Prefix (Parent (N)) - and then not Is_Access_Type (Etype (N)) - and then In_Assignment_Context (Parent (N)) - then - return True; - - else - return False; - end if; - end In_Assignment_Context; - -- Start of processing for Expand_Entry_Parameter begin @@ -604,7 +559,7 @@ package body Exp_Ch2 is -- done during semantic processing so it is called in -gnatc mode??? if Ekind (Entity (N)) /= E_In_Parameter - and then In_Assignment_Context (N) + and then Known_To_Be_Assigned (N) then Note_Possible_Modification (N, Sure => True); end if; diff --git a/gcc/ada/exp_ch2.ads b/gcc/ada/exp_ch2.ads index c84ccef..8845aa7 100644 --- a/gcc/ada/exp_ch2.ads +++ b/gcc/ada/exp_ch2.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index 828f5a5..50f46fb 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -294,17 +294,6 @@ package body Exp_Ch3 is -- inherited. If the result is false, the init_proc and the discriminant -- checking functions of the parent can be reused by a derived type. - procedure Make_Controlling_Function_Wrappers - (Tag_Typ : Entity_Id; - Decl_List : out List_Id; - Body_List : out List_Id); - -- Ada 2005 (AI-391): Makes specs and bodies for the wrapper functions - -- associated with inherited functions with controlling results which - -- are not overridden. The body of each wrapper function consists solely - -- of a return statement whose expression is an extension aggregate - -- invoking the inherited subprogram's parent subprogram and extended - -- with a null association list. - function Make_Null_Procedure_Specs (Tag_Typ : Entity_Id) return List_Id; -- Ada 2005 (AI-251): Makes specs for null procedures associated with any -- null procedures inherited from an interface type that have not been @@ -1045,10 +1034,10 @@ package body Exp_Ch3 is (Case_Id : Entity_Id; Variant : Node_Id) return Entity_Id is - Body_Node : Node_Id; - Func_Id : Entity_Id; - Parameter_List : List_Id; - Spec_Node : Node_Id; + Body_Node : Node_Id; + Func_Id : Entity_Id; + Parameter_List : List_Id; + Spec_Node : Node_Id; begin Body_Node := New_Node (N_Subprogram_Body, Loc); @@ -2033,6 +2022,25 @@ package body Exp_Ch3 is Elmt2 => Defining_Identifier (First (Parameter_Specifications (Parent (Proc_Id))))); + + -- If the type has an incomplete view, a current instance + -- may have an incomplete type. In that case, it must also be + -- replaced by the formal of the Init_Proc. + + if Nkind (Parent (Rec_Type)) = N_Full_Type_Declaration + and then Present (Incomplete_View (Parent (Rec_Type))) + then + Append_Elmt ( + N => Defining_Identifier + (Incomplete_View (Parent (Rec_Type))), + To => Map); + Append_Elmt ( + N => Defining_Identifier + (First + (Parameter_Specifications + (Parent (Proc_Id)))), + To => Map); + end if; end if; Exp := New_Copy_Tree (Exp, New_Scope => Proc_Id, Map => Map); @@ -2877,9 +2885,7 @@ package body Exp_Ch3 is Fixed_Comps => False, Variable_Comps => True); - if Is_Non_Empty_List (Init_Tags_List) then - Append_List_To (Body_Stmts, Init_Tags_List); - end if; + Append_List_To (Body_Stmts, Init_Tags_List); end if; end if; @@ -4133,7 +4139,7 @@ package body Exp_Ch3 is Set_Static_Initialization (Proc_Id, Agg); declare - Comp : Node_Id; + Comp : Node_Id; begin Comp := First (Component_Associations (Agg)); while Present (Comp) loop @@ -6902,9 +6908,7 @@ package body Exp_Ch3 is New_Nodes := Make_DT (Base_Typ, N); end if; - if not Is_Empty_List (New_Nodes) then - Insert_List_Before (N, New_Nodes); - end if; + Insert_List_Before (N, New_Nodes); end; end if; @@ -9591,18 +9595,40 @@ package body Exp_Ch3 is Decl_List : out List_Id; Body_List : out List_Id) is - Loc : constant Source_Ptr := Sloc (Tag_Typ); + Loc : constant Source_Ptr := Sloc (Tag_Typ); + + function Make_Wrapper_Specification (Subp : Entity_Id) return Node_Id; + -- Returns a function specification with the same profile as Subp + + -------------------------------- + -- Make_Wrapper_Specification -- + -------------------------------- + + function Make_Wrapper_Specification (Subp : Entity_Id) return Node_Id is + begin + return + Make_Function_Specification (Loc, + Defining_Unit_Name => + Make_Defining_Identifier (Loc, + Chars => Chars (Subp)), + Parameter_Specifications => + Copy_Parameter_List (Subp), + Result_Definition => + New_Occurrence_Of (Etype (Subp), Loc)); + end Make_Wrapper_Specification; + Prim_Elmt : Elmt_Id; Subp : Entity_Id; Actual_List : List_Id; - Formal_List : List_Id; Formal : Entity_Id; Par_Formal : Entity_Id; + Ext_Aggr : Node_Id; Formal_Node : Node_Id; Func_Body : Node_Id; Func_Decl : Node_Id; - Func_Spec : Node_Id; - Return_Stmt : Node_Id; + Func_Id : Entity_Id; + + -- Start of processing for Make_Controlling_Function_Wrappers begin Decl_List := New_List; @@ -9674,43 +9700,10 @@ package body Exp_Ch3 is end; end if; - Formal_List := No_List; - Formal := First_Formal (Subp); - - if Present (Formal) then - Formal_List := New_List; - - while Present (Formal) loop - Append - (Make_Parameter_Specification - (Loc, - Defining_Identifier => - Make_Defining_Identifier (Sloc (Formal), - Chars => Chars (Formal)), - In_Present => In_Present (Parent (Formal)), - Out_Present => Out_Present (Parent (Formal)), - Null_Exclusion_Present => - Null_Exclusion_Present (Parent (Formal)), - Parameter_Type => - New_Occurrence_Of (Etype (Formal), Loc), - Expression => - New_Copy_Tree (Expression (Parent (Formal)))), - Formal_List); - - Next_Formal (Formal); - end loop; - end if; - - Func_Spec := - Make_Function_Specification (Loc, - Defining_Unit_Name => - Make_Defining_Identifier (Loc, - Chars => Chars (Subp)), - Parameter_Specifications => Formal_List, - Result_Definition => - New_Occurrence_Of (Etype (Subp), Loc)); + Func_Decl := + Make_Subprogram_Declaration (Loc, + Specification => Make_Wrapper_Specification (Subp)); - Func_Decl := Make_Subprogram_Declaration (Loc, Func_Spec); Append_To (Decl_List, Func_Decl); -- Build a wrapper body that calls the parent function. The body @@ -9723,57 +9716,68 @@ package body Exp_Ch3 is Formal := First_Formal (Subp); Par_Formal := First_Formal (Alias (Subp)); - Formal_Node := First (Formal_List); + Formal_Node := + First (Parameter_Specifications (Specification (Func_Decl))); if Present (Formal) then Actual_List := New_List; - else - Actual_List := No_List; - end if; - while Present (Formal) loop - if Is_Controlling_Formal (Formal) then - Append_To (Actual_List, - Make_Type_Conversion (Loc, - Subtype_Mark => - New_Occurrence_Of (Etype (Par_Formal), Loc), - Expression => + while Present (Formal) loop + if Is_Controlling_Formal (Formal) then + Append_To (Actual_List, + Make_Type_Conversion (Loc, + Subtype_Mark => + New_Occurrence_Of (Etype (Par_Formal), Loc), + Expression => + New_Occurrence_Of + (Defining_Identifier (Formal_Node), Loc))); + else + Append_To + (Actual_List, New_Occurrence_Of - (Defining_Identifier (Formal_Node), Loc))); - else - Append_To - (Actual_List, - New_Occurrence_Of - (Defining_Identifier (Formal_Node), Loc)); - end if; + (Defining_Identifier (Formal_Node), Loc)); + end if; - Next_Formal (Formal); - Next_Formal (Par_Formal); - Next (Formal_Node); - end loop; + Next_Formal (Formal); + Next_Formal (Par_Formal); + Next (Formal_Node); + end loop; + else + Actual_List := No_List; + end if; - Return_Stmt := - Make_Simple_Return_Statement (Loc, - Expression => - Make_Extension_Aggregate (Loc, - Ancestor_Part => - Make_Function_Call (Loc, - Name => - New_Occurrence_Of (Alias (Subp), Loc), - Parameter_Associations => Actual_List), - Null_Record_Present => True)); - - Func_Body := - Make_Subprogram_Body (Loc, - Specification => New_Copy_Tree (Func_Spec), - Declarations => Empty_List, - Handled_Statement_Sequence => - Make_Handled_Sequence_Of_Statements (Loc, - Statements => New_List (Return_Stmt))); - - Set_Defining_Unit_Name - (Specification (Func_Body), - Make_Defining_Identifier (Loc, Chars (Subp))); + Ext_Aggr := + Make_Extension_Aggregate (Loc, + Ancestor_Part => + Make_Function_Call (Loc, + Name => + New_Occurrence_Of (Alias (Subp), Loc), + Parameter_Associations => Actual_List), + Null_Record_Present => True); + + -- GNATprove will use expression of an expression function as an + -- implicit postcondition. GNAT will not benefit from expression + -- function (and would struggle if we add an expression function + -- to freezing actions). + + if GNATprove_Mode then + Func_Body := + Make_Expression_Function (Loc, + Specification => + Make_Wrapper_Specification (Subp), + Expression => Ext_Aggr); + else + Func_Body := + Make_Subprogram_Body (Loc, + Specification => + Make_Wrapper_Specification (Subp), + Declarations => Empty_List, + Handled_Statement_Sequence => + Make_Handled_Sequence_Of_Statements (Loc, + Statements => New_List ( + Make_Simple_Return_Statement (Loc, + Expression => Ext_Aggr)))); + end if; Append_To (Body_List, Func_Body); @@ -9781,11 +9785,12 @@ package body Exp_Ch3 is -- primitive operations list. We add the minimum decoration needed -- to override interface primitives. - Mutate_Ekind (Defining_Unit_Name (Func_Spec), E_Function); - Set_Is_Wrapper (Defining_Unit_Name (Func_Spec)); + Func_Id := Defining_Unit_Name (Specification (Func_Decl)); + + Mutate_Ekind (Func_Id, E_Function); + Set_Is_Wrapper (Func_Id); - Override_Dispatching_Operation - (Tag_Typ, Subp, New_Op => Defining_Unit_Name (Func_Spec)); + Override_Dispatching_Operation (Tag_Typ, Subp, New_Op => Func_Id); end if; <<Next_Prim>> @@ -9812,9 +9817,9 @@ package body Exp_Ch3 is begin Decl := Predef_Spec_Or_Body (Loc, - Tag_Typ => Typ, - Name => Eq_Name, - Profile => New_List ( + Tag_Typ => Typ, + Name => Eq_Name, + Profile => New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Name_X), @@ -10205,9 +10210,9 @@ package body Exp_Ch3 is Decl := Predef_Spec_Or_Body (Loc, - Tag_Typ => Tag_Typ, - Name => Chars (Renaming_Prim), - Profile => New_List ( + Tag_Typ => Tag_Typ, + Name => Chars (Renaming_Prim), + Profile => New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Chars (Left_Op)), @@ -10277,8 +10282,8 @@ package body Exp_Ch3 is Decl_List : constant List_Id := New_List; Loc : constant Source_Ptr := Sloc (Tag_Typ); Formal : Entity_Id; - Formal_List : List_Id; New_Param_Spec : Node_Id; + New_Spec : Node_Id; Parent_Subp : Entity_Id; Prim_Elmt : Elmt_Id; Subp : Entity_Id; @@ -10297,58 +10302,47 @@ package body Exp_Ch3 is if Present (Parent_Subp) and then Is_Null_Interface_Primitive (Parent_Subp) then - Formal_List := No_List; - Formal := First_Formal (Subp); + -- The null procedure spec is copied from the inherited procedure, + -- except for the IS NULL (which must be added) and the overriding + -- indicators (which must be removed, if present). - if Present (Formal) then - Formal_List := New_List; - - while Present (Formal) loop + New_Spec := + Copy_Subprogram_Spec (Subprogram_Specification (Subp), Loc); - -- Copy the parameter spec including default expressions + Set_Null_Present (New_Spec, True); + Set_Must_Override (New_Spec, False); + Set_Must_Not_Override (New_Spec, False); - New_Param_Spec := - New_Copy_Tree (Parent (Formal), New_Sloc => Loc); - - -- Generate a new defining identifier for the new formal. - -- required because New_Copy_Tree does not duplicate - -- semantic fields (except itypes). + Formal := First_Formal (Subp); + New_Param_Spec := First (Parameter_Specifications (New_Spec)); - Set_Defining_Identifier (New_Param_Spec, - Make_Defining_Identifier (Sloc (Formal), - Chars => Chars (Formal))); + while Present (Formal) loop - -- For controlling arguments we must change their - -- parameter type to reference the tagged type (instead - -- of the interface type) + -- For controlling arguments we must change their parameter + -- type to reference the tagged type (instead of the interface + -- type). - if Is_Controlling_Formal (Formal) then - if Nkind (Parameter_Type (Parent (Formal))) = N_Identifier - then - Set_Parameter_Type (New_Param_Spec, - New_Occurrence_Of (Tag_Typ, Loc)); - - else pragma Assert - (Nkind (Parameter_Type (Parent (Formal))) = - N_Access_Definition); - Set_Subtype_Mark (Parameter_Type (New_Param_Spec), - New_Occurrence_Of (Tag_Typ, Loc)); - end if; + if Is_Controlling_Formal (Formal) then + if Nkind (Parameter_Type (Parent (Formal))) = N_Identifier + then + Set_Parameter_Type (New_Param_Spec, + New_Occurrence_Of (Tag_Typ, Loc)); + + else pragma Assert + (Nkind (Parameter_Type (Parent (Formal))) = + N_Access_Definition); + Set_Subtype_Mark (Parameter_Type (New_Param_Spec), + New_Occurrence_Of (Tag_Typ, Loc)); end if; + end if; - Append (New_Param_Spec, Formal_List); - - Next_Formal (Formal); - end loop; - end if; + Next_Formal (Formal); + Next (New_Param_Spec); + end loop; Append_To (Decl_List, Make_Subprogram_Declaration (Loc, - Make_Procedure_Specification (Loc, - Defining_Unit_Name => - Make_Defining_Identifier (Loc, Chars (Subp)), - Parameter_Specifications => Formal_List, - Null_Present => True))); + Specification => New_Spec)); end if; Next_Elmt (Prim_Elmt); @@ -10473,9 +10467,9 @@ package body Exp_Ch3 is if Eq_Needed then Eq_Spec := Predef_Spec_Or_Body (Loc, - Tag_Typ => Tag_Typ, - Name => Eq_Name, - Profile => New_List ( + Tag_Typ => Tag_Typ, + Name => Eq_Name, + Profile => New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Name_X), @@ -10485,7 +10479,7 @@ package body Exp_Ch3 is Defining_Identifier => Make_Defining_Identifier (Loc, Name_Y), Parameter_Type => New_Occurrence_Of (Tag_Typ, Loc))), - Ret_Type => Standard_Boolean); + Ret_Type => Standard_Boolean); Append_To (Predef_List, Eq_Spec); if Has_Predef_Eq_Renaming then @@ -10537,9 +10531,9 @@ package body Exp_Ch3 is -- Spec of _Size Append_To (Res, Predef_Spec_Or_Body (Loc, - Tag_Typ => Tag_Typ, - Name => Name_uSize, - Profile => New_List ( + Tag_Typ => Tag_Typ, + Name => Name_uSize, + Profile => New_List ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Defining_Identifier (Loc, Name_X), Parameter_Type => New_Occurrence_Of (Tag_Typ, Loc))), diff --git a/gcc/ada/exp_ch3.ads b/gcc/ada/exp_ch3.ads index c7648e6..8b2c306 100644 --- a/gcc/ada/exp_ch3.ads +++ b/gcc/ada/exp_ch3.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -158,6 +158,17 @@ package Exp_Ch3 is -- initialized; if Variable_Comps is True then tags components located at -- variable positions of Target are initialized. + procedure Make_Controlling_Function_Wrappers + (Tag_Typ : Entity_Id; + Decl_List : out List_Id; + Body_List : out List_Id); + -- Ada 2005 (AI-391): Makes specs and bodies for the wrapper functions + -- associated with inherited functions with controlling results which + -- are not overridden. The body of each wrapper function consists solely + -- of a return statement whose expression is an extension aggregate + -- invoking the inherited subprogram's parent subprogram and extended + -- with a null association list. + procedure Make_Predefined_Primitive_Eq_Spec (Tag_Typ : Entity_Id; Predef_List : List_Id; diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 05124dc..c31f5bb 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2695,9 +2695,6 @@ package body Exp_Ch4 is -- lengths of operands. The choice of this type is a little subtle and -- is discussed in a separate section at the start of the body code. - Concatenation_Error : exception; - -- Raised if concatenation is sure to raise a CE - Result_May_Be_Null : Boolean := True; -- Reset to False if at least one operand is encountered which is known -- at compile time to be non-null. Used for handling the special case @@ -3460,7 +3457,16 @@ package body Exp_Ch4 is -- Catch the static out of range case now if Raises_Constraint_Error (High_Bound) then - raise Concatenation_Error; + -- Kill warning generated for the declaration of the static out of + -- range high bound, and instead generate a Constraint_Error with + -- an appropriate specific message. + + Kill_Dead_Code (Declaration_Node (Entity (High_Bound))); + Apply_Compile_Time_Constraint_Error + (N => Cnode, + Msg => "concatenation result upper bound out of range??", + Reason => CE_Range_Check_Failed); + return; end if; -- Now we will generate the assignments to do the actual concatenation @@ -3629,19 +3635,6 @@ package body Exp_Ch4 is pragma Assert (Present (Result)); Rewrite (Cnode, Result); Analyze_And_Resolve (Cnode, Atyp); - - exception - when Concatenation_Error => - - -- Kill warning generated for the declaration of the static out of - -- range high bound, and instead generate a Constraint_Error with - -- an appropriate specific message. - - Kill_Dead_Code (Declaration_Node (Entity (High_Bound))); - Apply_Compile_Time_Constraint_Error - (N => Cnode, - Msg => "concatenation result upper bound out of range??", - Reason => CE_Range_Check_Failed); end Expand_Concatenate; --------------------------------------------------- @@ -4352,116 +4345,110 @@ package body Exp_Ch4 is ------------------------------ function Size_In_Storage_Elements (E : Entity_Id) return Node_Id is + Idx : Node_Id := First_Index (E); + Len : Node_Id; + Res : Node_Id := Empty; + begin -- Logically this just returns E'Max_Size_In_Storage_Elements. - -- However, the reason for the existence of this function is - -- to construct a test for sizes too large, which means near the - -- 32-bit limit on a 32-bit machine, and precisely the trouble - -- is that we get overflows when sizes are greater than 2**31. + -- However, the reason for the existence of this function is to + -- construct a test for sizes too large, which means near the 32-bit + -- limit on a 32-bit machine, and precisely the trouble is that we + -- get overflows when sizes are greater than 2**31. -- So what we end up doing for array types is to use the expression: -- number-of-elements * component_type'Max_Size_In_Storage_Elements -- which avoids this problem. All this is a bit bogus, but it does - -- mean we catch common cases of trying to allocate arrays that - -- are too large, and which in the absence of a check results in + -- mean we catch common cases of trying to allocate arrays that are + -- too large, and which in the absence of a check results in -- undetected chaos ??? - declare - Idx : Node_Id := First_Index (E); - Len : Node_Id; - Res : Node_Id := Empty; + for J in 1 .. Number_Dimensions (E) loop - begin - for J in 1 .. Number_Dimensions (E) loop + if not Is_Modular_Integer_Type (Etype (Idx)) then + Len := + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (E, Loc), + Attribute_Name => Name_Length, + Expressions => New_List (Make_Integer_Literal (Loc, J))); - if not Is_Modular_Integer_Type (Etype (Idx)) then - Len := - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (E, Loc), - Attribute_Name => Name_Length, - Expressions => New_List - (Make_Integer_Literal (Loc, J))); + -- For indexes that are modular types we cannot generate code to + -- compute 'Length since for large arrays 'Last -'First + 1 causes + -- overflow; therefore we compute 'Last - 'First (which is not the + -- exact number of components but it is valid for the purpose of + -- this runtime check on 32-bit targets). - -- For indexes that are modular types we cannot generate code - -- to compute 'Length since for large arrays 'Last -'First + 1 - -- causes overflow; therefore we compute 'Last - 'First (which - -- is not the exact number of components but it is valid for - -- the purpose of this runtime check on 32-bit targets). + else + declare + Len_Minus_1_Expr : Node_Id; + Test_Gt : Node_Id; - else - declare - Len_Minus_1_Expr : Node_Id; - Test_Gt : Node_Id; + begin + Test_Gt := + Make_Op_Gt (Loc, + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (E, Loc), + Attribute_Name => Name_Last, + Expressions => + New_List (Make_Integer_Literal (Loc, J))), + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (E, Loc), + Attribute_Name => Name_First, + Expressions => + New_List (Make_Integer_Literal (Loc, J)))); - begin - Test_Gt := - Make_Op_Gt (Loc, - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (E, Loc), - Attribute_Name => Name_Last, - Expressions => - New_List (Make_Integer_Literal (Loc, J))), - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (E, Loc), - Attribute_Name => Name_First, - Expressions => - New_List (Make_Integer_Literal (Loc, J)))); - - Len_Minus_1_Expr := - Convert_To (Standard_Unsigned, - Make_Op_Subtract (Loc, - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (E, Loc), - Attribute_Name => Name_Last, - Expressions => - New_List - (Make_Integer_Literal (Loc, J))), - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (E, Loc), - Attribute_Name => Name_First, - Expressions => - New_List - (Make_Integer_Literal (Loc, J))))); - - -- Handle superflat arrays, i.e. arrays with such bounds - -- as 4 .. 2, to ensure that the result is correct. - - -- Generate: - -- (if X'Last > X'First then X'Last - X'First else 0) - - Len := - Make_If_Expression (Loc, - Expressions => New_List ( - Test_Gt, - Len_Minus_1_Expr, - Make_Integer_Literal (Loc, Uint_0))); - end; - end if; + Len_Minus_1_Expr := + Convert_To (Standard_Unsigned, + Make_Op_Subtract (Loc, + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (E, Loc), + Attribute_Name => Name_Last, + Expressions => + New_List (Make_Integer_Literal (Loc, J))), + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (E, Loc), + Attribute_Name => Name_First, + Expressions => + New_List (Make_Integer_Literal (Loc, J))))); - if J = 1 then - Res := Len; + -- Handle superflat arrays, i.e. arrays with such bounds as + -- 4 .. 2, to ensure that the result is correct. - else - pragma Assert (Present (Res)); - Res := - Make_Op_Multiply (Loc, - Left_Opnd => Res, - Right_Opnd => Len); - end if; + -- Generate: + -- (if X'Last > X'First then X'Last - X'First else 0) - Next_Index (Idx); - end loop; + Len := + Make_If_Expression (Loc, + Expressions => New_List ( + Test_Gt, + Len_Minus_1_Expr, + Make_Integer_Literal (Loc, Uint_0))); + end; + end if; - return - Make_Op_Multiply (Loc, - Left_Opnd => Len, - Right_Opnd => - Make_Attribute_Reference (Loc, - Prefix => New_Occurrence_Of (Component_Type (E), Loc), - Attribute_Name => Name_Max_Size_In_Storage_Elements)); - end; + if J = 1 then + Res := Len; + + else + pragma Assert (Present (Res)); + Res := + Make_Op_Multiply (Loc, + Left_Opnd => Res, + Right_Opnd => Len); + end if; + + Next_Index (Idx); + end loop; + + return + Make_Op_Multiply (Loc, + Left_Opnd => Len, + Right_Opnd => + Make_Attribute_Reference (Loc, + Prefix => New_Occurrence_Of (Component_Type (E), Loc), + Attribute_Name => Name_Max_Size_In_Storage_Elements)); end Size_In_Storage_Elements; -- Local variables @@ -5710,7 +5697,7 @@ package body Exp_Ch4 is -- Do not evaluate the expression when there are no actions because the -- expression_with_actions node will be replaced by the expression. - elsif No (Acts) or else Is_Empty_List (Acts) then + elsif Is_Empty_List (Acts) then null; -- Force the evaluation of the expression by capturing its value in a @@ -6205,18 +6192,10 @@ package body Exp_Ch4 is Set_Sloc (Parent (N), Loc); end if; - -- Make sure Then_Actions and Else_Actions are appropriately moved - -- to the new if statement. + -- Move Then_Actions and Else_Actions, if any, to the new if statement - if Present (Then_Actions (N)) then - Insert_List_Before - (First (Then_Statements (New_If)), Then_Actions (N)); - end if; - - if Present (Else_Actions (N)) then - Insert_List_Before - (First (Else_Statements (New_If)), Else_Actions (N)); - end if; + Insert_List_Before (First (Then_Statements (New_If)), Then_Actions (N)); + Insert_List_Before (First (Else_Statements (New_If)), Else_Actions (N)); Insert_Action (N, Decl); Insert_Action (N, New_If); @@ -10067,7 +10046,7 @@ package body Exp_Ch4 is Make_Op_Not (Loc, Right_Opnd => Make_Op_Eq (Loc, - Left_Opnd => Left_Opnd (N), + Left_Opnd => Left_Opnd (N), Right_Opnd => Right_Opnd (N))); -- The level of parentheses is useless in GNATprove mode, and @@ -10428,8 +10407,6 @@ package body Exp_Ch4 is Rneg : Boolean; -- Set if corresponding operand can be negative - pragma Unreferenced (Hi); - begin Binary_Op_Validity_Checks (N); @@ -11900,8 +11877,8 @@ package body Exp_Ch4 is Reason => PE_Accessibility_Check_Failed)); Set_Etype (N, Target_Type); - Error_Msg_N ("<<accessibility check failure", N); - Error_Msg_NE ("\<<& [", N, Standard_Program_Error); + Error_Msg_N ("accessibility check failure<<", N); + Error_Msg_N ("\Program_Error [<<", N); end Raise_Accessibility_Error; ---------------------- diff --git a/gcc/ada/exp_ch4.ads b/gcc/ada/exp_ch4.ads index b723adc..eb9b506 100644 --- a/gcc/ada/exp_ch4.ads +++ b/gcc/ada/exp_ch4.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index 42cffd5..b38e3f5 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -39,7 +39,6 @@ with Exp_Dbug; use Exp_Dbug; with Exp_Pakd; use Exp_Pakd; with Exp_Tss; use Exp_Tss; with Exp_Util; use Exp_Util; -with Expander; use Expander; with Inline; use Inline; with Namet; use Namet; with Nlists; use Nlists; @@ -2665,7 +2664,7 @@ package body Exp_Ch5 is Rewrite (Lhs, OK_Convert_To (Base_Type (Typ), Lhs)); Apply_Discriminant_Check (Rhs, Typ, Lhs); - elsif Is_Array_Type (Typ) and then Is_Constrained (Typ) then + elsif Is_Array_Type (Typ) and then Is_Constrained (Typ) then Rewrite (Rhs, OK_Convert_To (Base_Type (Typ), Rhs)); Rewrite (Lhs, OK_Convert_To (Base_Type (Typ), Lhs)); Apply_Length_Check (Rhs, Typ); @@ -3392,12 +3391,12 @@ package body Exp_Ch5 is Decl : Node_Id := First (Declarations (Block_Stmt)); Def_Id : Node_Id := Empty; + function Declare_Copy (Decl : Node_Id) return Boolean is + (Nkind (Decl) = N_Object_Declaration); -- Declare_Copy indicates which of the two approaches -- was chosen during analysis: declare (and initialize) -- a new variable, or use access values to declare a renaming -- of the appropriate subcomponent of the selector value. - Declare_Copy : constant Boolean := - Nkind (Decl) = N_Object_Declaration; function Make_Conditional (Stmt : Node_Id) return Node_Id; -- If there is only one choice for this alternative, then @@ -3443,7 +3442,7 @@ package body Exp_Ch5 is end loop; -- For a binding object, we sometimes make a copy and - -- sometimes introduce a renaming. That decision is made + -- sometimes introduce a renaming. That decision is made -- elsewhere. The renaming case involves dereferencing an -- access value because of the possibility of multiple -- choices (with multiple binding definitions) for a single @@ -3452,7 +3451,7 @@ package body Exp_Ch5 is -- renaming case, we initialize (again, maybe conditionally) -- the access value. - if Declare_Copy then + if Declare_Copy (Decl) then declare Assign_Value : constant Node_Id := Make_Assignment_Statement (Loc, @@ -3876,7 +3875,6 @@ package body Exp_Ch5 is if Extensions_Allowed and then not Is_Discrete_Type (Etype (Expr)) then Rewrite (N, Expand_General_Case_Statement); Analyze (N); - Expand (N); return; end if; @@ -4477,9 +4475,7 @@ package body Exp_Ch5 is -- entire if statement by the sequence of else statements. if No (Elsif_Parts (N)) then - if No (Else_Statements (N)) - or else Is_Empty_List (Else_Statements (N)) - then + if Is_Empty_List (Else_Statements (N)) then Rewrite (N, Make_Null_Statement (Sloc (N))); else @@ -4559,9 +4555,7 @@ package body Exp_Ch5 is Set_Else_Statements (N, New_List (New_If)); - if Present (Condition_Actions (E)) then - Insert_List_Before (New_If, Condition_Actions (E)); - end if; + Insert_List_Before (New_If, Condition_Actions (E)); Remove (E); @@ -5455,9 +5449,7 @@ package body Exp_Ch5 is -- Condition_Actions of the iterator. Insert them now at the head of -- the loop. - if Present (Condition_Actions (Isc)) then - Insert_List_Before (N, Condition_Actions (Isc)); - end if; + Insert_List_Before (N, Condition_Actions (Isc)); Rewrite (N, New_Loop); Analyze (N); diff --git a/gcc/ada/exp_ch5.ads b/gcc/ada/exp_ch5.ads index 75dd2cc..b9df80f 100644 --- a/gcc/ada/exp_ch5.ads +++ b/gcc/ada/exp_ch5.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index f433fa7..2447619 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1899,7 +1899,7 @@ package body Exp_Ch6 is Reset_Packed_Prefix; - Temp := Make_Temporary (Loc, 'T', Actual); + Temp := Make_Temporary (Loc, 'T', Actual); Incod := Relocate_Node (Actual); Outcod := New_Copy_Tree (Incod); @@ -1921,7 +1921,10 @@ package body Exp_Ch6 is elsif Inside_Init_Proc then - -- Could use a comment here to match comment below ??? + -- Skip using the actual as the expression in Decl if we are in + -- an init proc and it is not a component which depends on a + -- discriminant, because, in this case, we need to use the actual + -- type of the component instead. if Nkind (Actual) /= N_Selected_Component or else @@ -1930,8 +1933,9 @@ package body Exp_Ch6 is then Incod := Empty; - -- Otherwise, keep the component in order to generate the proper - -- actual subtype, that depends on enclosing discriminants. + -- Otherwise, keep the component so we can generate the proper + -- actual subtype - since the subtype depends on enclosing + -- discriminants. else null; @@ -2813,7 +2817,7 @@ package body Exp_Ch6 is procedure Check_Subprogram_Variant; -- Emit a call to the internally generated procedure with checks for - -- aspect Subprogrgram_Variant, if present and enabled. + -- aspect Subprogram_Variant, if present and enabled. function Inherited_From_Formal (S : Entity_Id) return Entity_Id; -- Within an instance, a type derived from an untagged formal derived diff --git a/gcc/ada/exp_ch6.ads b/gcc/ada/exp_ch6.ads index 196f7e6..f886eda 100644 --- a/gcc/ada/exp_ch6.ads +++ b/gcc/ada/exp_ch6.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb index 68d1da9..d7863c3 100644 --- a/gcc/ada/exp_ch7.adb +++ b/gcc/ada/exp_ch7.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2222,7 +2222,10 @@ package body Exp_Ch7 is Last_Top_Level_Ctrl_Construct := Decl; end if; - else + -- Unregister tagged type, unless No_Tagged_Type_Registration + -- is active. + + elsif not Restriction_Active (No_Tagged_Type_Registration) then Process_Tagged_Type_Declaration (Decl); end if; @@ -2246,7 +2249,7 @@ package body Exp_Ch7 is -- Start of processing for Process_Declarations begin - if No (Decls) or else Is_Empty_List (Decls) then + if Is_Empty_List (Decls) then return; end if; @@ -2286,9 +2289,10 @@ package body Exp_Ch7 is and then Is_Library_Level_Entity (Typ) and then Convention (Typ) = Convention_Ada and then Present (Access_Disp_Table (Typ)) - and then RTE_Available (RE_Register_Tag) and then not Is_Abstract_Type (Typ) and then not No_Run_Time_Mode + and then not Restriction_Active (No_Tagged_Type_Registration) + and then RTE_Available (RE_Register_Tag) then Processing_Actions; end if; @@ -4055,7 +4059,7 @@ package body Exp_Ch7 is end if; -- Call _postconditions when no general finalization exceptions have - -- occured taking care to enable the postconditions and save any + -- occurred taking care to enable the postconditions and save any -- exception occurrences. -- Generate: @@ -4698,7 +4702,7 @@ package body Exp_Ch7 is (N : Node_Id; Ref : Node_Id) return Node_Id is - Loc : constant Source_Ptr := Sloc (N); + Loc : constant Source_Ptr := Sloc (N); begin -- For restricted run-time libraries (Ravenscar), tasks are @@ -4733,8 +4737,7 @@ package body Exp_Ch7 is procedure Set_Block_Elab_Proc is begin if No (Block_Elab_Proc) then - Block_Elab_Proc := - Make_Defining_Identifier (Loc, Chars => New_Internal_Name ('I')); + Block_Elab_Proc := Make_Temporary (Loc, 'I'); end if; end Set_Block_Elab_Proc; @@ -6184,15 +6187,15 @@ package body Exp_Ch7 is Last_Object : Node_Id; Related_Node : Node_Id) is - Must_Hook : Boolean := False; + Must_Hook : Boolean; -- Flag denoting whether the context requires transient object -- export to the outer finalizer. function Is_Subprogram_Call (N : Node_Id) return Traverse_Result; - -- Determine whether an arbitrary node denotes a subprogram call + -- Return Abandon if arbitrary node denotes a subprogram call - procedure Detect_Subprogram_Call is - new Traverse_Proc (Is_Subprogram_Call); + function Has_Subprogram_Call is + new Traverse_Func (Is_Subprogram_Call); procedure Process_Transient_In_Scope (Obj_Decl : Node_Id; @@ -6212,7 +6215,6 @@ package body Exp_Ch7 is -- A regular procedure or function call if Nkind (N) in N_Subprogram_Call then - Must_Hook := True; return Abandon; -- Special cases @@ -6222,20 +6224,13 @@ package body Exp_Ch7 is -- of the call. elsif Is_Rewrite_Substitution (N) then - Detect_Subprogram_Call (Original_Node (N)); - - if Must_Hook then - return Abandon; - else - return OK; - end if; + return Has_Subprogram_Call (Original_Node (N)); -- Generalized indexing always involves a function call elsif Nkind (N) = N_Indexed_Component and then Present (Generalized_Indexing (N)) then - Must_Hook := True; return Abandon; -- Keep searching @@ -6472,8 +6467,8 @@ package body Exp_Ch7 is -- due to the possibility of abnormal call termination. else - Detect_Subprogram_Call (N); - Blk_Ins := Last_Object; + Must_Hook := Has_Subprogram_Call (N) = Abandon; + Blk_Ins := Last_Object; end if; if Clean then @@ -9968,9 +9963,7 @@ package body Exp_Ch7 is Local_Scop := Entity (Identifier (Decl)); Ent := First_Entity (Local_Scop); - Local_Proc := - Make_Defining_Identifier (Loc, - Chars => New_Internal_Name ('P')); + Local_Proc := Make_Temporary (Loc, 'P'); Local_Body := Make_Subprogram_Body (Loc, @@ -10118,9 +10111,7 @@ package body Exp_Ch7 is Local_Scop := Entity (Identifier (Loop_Stmt)); Ent := First_Entity (Local_Scop); - Local_Proc := - Make_Defining_Identifier (Loc, - Chars => New_Internal_Name ('P')); + Local_Proc := Make_Temporary (Loc, 'P'); Local_Body := Make_Subprogram_Body (Loc, @@ -10174,9 +10165,7 @@ package body Exp_Ch7 is New_Stmts : constant List_Id := Empty_List; begin - Local_Proc := - Make_Defining_Identifier (Loc, - Chars => New_Internal_Name ('P')); + Local_Proc := Make_Temporary (Loc, 'P'); Local_Body := Make_Subprogram_Body (Loc, diff --git a/gcc/ada/exp_ch7.ads b/gcc/ada/exp_ch7.ads index ef1bf67..3dbac21 100644 --- a/gcc/ada/exp_ch7.ads +++ b/gcc/ada/exp_ch7.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch8.adb b/gcc/ada/exp_ch8.adb index ff3c0eb..a63ddfa 100644 --- a/gcc/ada/exp_ch8.adb +++ b/gcc/ada/exp_ch8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch8.ads b/gcc/ada/exp_ch8.ads index 64ffae1..918ddc0 100644 --- a/gcc/ada/exp_ch8.ads +++ b/gcc/ada/exp_ch8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 694cf90..81f4d7c 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2937,7 +2937,7 @@ package body Exp_Ch9 is -- Desired_Comp : Comp_Type := Expected_Comp; -- Comp : Comp_Type renames Desired_Comp; -- - -- <original delarations after the object renaming declaration + -- <original declarations after the object renaming declaration -- of Comp> -- -- begin @@ -2977,7 +2977,7 @@ package body Exp_Ch9 is -- (_Object.Comp'Address)); -- Comp : Comp_Type renames Expected_Comp; -- - -- <original delarations after the object renaming declaration of + -- <original declarations after the object renaming declaration of -- Comp> -- -- begin @@ -4394,7 +4394,7 @@ package body Exp_Ch9 is -- It would be better to encapsulate this as a routine in Exp_Dbug ??? if Append_Char /= ' ' then - if Append_Char = 'P' or Append_Char = 'N' then + if Append_Char in 'P' | 'N' then Add_Char_To_Name_Buffer (Append_Char); return Name_Find; else @@ -12516,13 +12516,7 @@ package body Exp_Ch9 is -- procedure for this corresponding record type and we won't get it -- in time if we don't freeze now. - declare - L : constant List_Id := Freeze_Entity (Rec_Ent, N); - begin - if Is_Non_Empty_List (L) then - Insert_List_After (Body_Decl, L); - end if; - end; + Insert_List_After (Body_Decl, List => Freeze_Entity (Rec_Ent, N)); end if; -- Complete the expansion of access types to the current task type, if diff --git a/gcc/ada/exp_ch9.ads b/gcc/ada/exp_ch9.ads index ae3054d..32f5fb1 100644 --- a/gcc/ada/exp_ch9.ads +++ b/gcc/ada/exp_ch9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_code.adb b/gcc/ada/exp_code.adb index 50d45bc..11fbc5f 100644 --- a/gcc/ada/exp_code.adb +++ b/gcc/ada/exp_code.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_code.ads b/gcc/ada/exp_code.ads index 474eafc..5897587 100644 --- a/gcc/ada/exp_code.ads +++ b/gcc/ada/exp_code.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_dbug.adb b/gcc/ada/exp_dbug.adb index 19d546e..2231b9c 100644 --- a/gcc/ada/exp_dbug.adb +++ b/gcc/ada/exp_dbug.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -172,7 +172,7 @@ package body Exp_Dbug is procedure Add_Real_To_Buffer (U : Ureal) is begin Add_Uint_To_Buffer (Norm_Num (U)); - Add_Str_To_Name_Buffer ("_"); + Add_Char_To_Name_Buffer ('_'); Add_Uint_To_Buffer (Norm_Den (U)); end Add_Real_To_Buffer; @@ -671,7 +671,7 @@ package body Exp_Dbug is Add_Real_To_Buffer (Delta_Value (E)); if Small_Value (E) /= Delta_Value (E) then - Add_Str_To_Name_Buffer ("_"); + Add_Char_To_Name_Buffer ('_'); Add_Real_To_Buffer (Small_Value (E)); end if; @@ -710,7 +710,7 @@ package body Exp_Dbug is if Lo_Encode or Hi_Encode then if Biased then - Add_Str_To_Name_Buffer ("_"); + Add_Char_To_Name_Buffer ('_'); else if Lo_Encode then if Hi_Encode then @@ -1535,7 +1535,7 @@ package body Exp_Dbug is begin Set_Entity_Name (Var); - Add_Str_To_Name_Buffer ("L"); + Add_Char_To_Name_Buffer ('L'); Set_Chars (Var, Name_Enter); end; @@ -1544,7 +1544,7 @@ package body Exp_Dbug is and then Ekind (Scope (Homonym (Ent))) = E_Block then Set_Entity_Name (Ent); - Add_Str_To_Name_Buffer ("B"); + Add_Char_To_Name_Buffer ('B'); Set_Chars (Ent, Name_Enter); end if; end if; diff --git a/gcc/ada/exp_dbug.ads b/gcc/ada/exp_dbug.ads index 09921f0..0c0dd1a 100644 --- a/gcc/ada/exp_dbug.ads +++ b/gcc/ada/exp_dbug.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index de2ba7a..f2d20af 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -4615,7 +4615,7 @@ package body Exp_Disp is -- case concerning the need for this check, and this topic may -- go back to the ARG. - if not Is_Abstract_Subprogram (Prim) then + if not Is_Abstract_Subprogram (Prim) then Formal := First_Formal (Prim); while Present (Formal) loop Check_Premature_Freezing (Prim, Typ, Etype (Formal)); @@ -4988,9 +4988,12 @@ package body Exp_Disp is Set_Is_Statically_Allocated (Exname); Set_Is_True_Constant (Exname); - -- Declare the object used by Ada.Tags.Register_Tag + -- Declare the object used by Ada.Tags.Register_Tag, unless + -- No_Tagged_Type_Registration is active. - if RTE_Available (RE_Register_Tag) then + if not Restriction_Active (No_Tagged_Type_Registration) + and then RTE_Available (RE_Register_Tag) + then Append_To (Result, Make_Object_Declaration (Loc, Defining_Identifier => HT_Link, @@ -5260,7 +5263,9 @@ package body Exp_Disp is -- HT_Link - if RTE_Available (RE_Register_Tag) then + if not Restriction_Active (No_Tagged_Type_Registration) + and then RTE_Available (RE_Register_Tag) + then Append_To (TSD_Aggr_List, Unchecked_Convert_To (RTE (RE_Tag_Ptr), Make_Attribute_Reference (Loc, @@ -6329,13 +6334,14 @@ package body Exp_Disp is -- up the RE_Check_TSD entity and call it in No_Run_Time mode. -- We cannot perform this check if the generation of its expanded name - -- was discarded. + -- was discarded or if No_Tagged_Type_Registration is active. if not No_Run_Time_Mode and then not Discard_Names and then Ada_Version >= Ada_2005 - and then RTE_Available (RE_Check_TSD) and then not Duplicated_Tag_Checks_Suppressed (Typ) + and then not Restriction_Active (No_Tagged_Type_Registration) + and then RTE_Available (RE_Check_TSD) then Append_To (Elab_Code, Make_Procedure_Call_Statement (Loc, @@ -6358,9 +6364,11 @@ package body Exp_Disp is -- 3) if Typ is not defined at the library level (this is required -- to avoid adding concurrency control to the hash table used -- by the run-time to register the tags). + -- 4) No_Tagged_Type_Registration is active. if not No_Run_Time_Mode and then Is_Library_Level_Entity (Typ) + and then not Restriction_Active (No_Tagged_Type_Registration) and then RTE_Available (RE_Register_Tag) then Append_To (Elab_Code, @@ -6371,9 +6379,7 @@ package body Exp_Disp is New_List (New_Occurrence_Of (DT_Ptr, Loc)))); end if; - if not Is_Empty_List (Elab_Code) then - Append_List_To (Result, Elab_Code); - end if; + Append_List_To (Result, Elab_Code); -- Populate the two auxiliary tables used for dispatching asynchronous, -- conditional and timed selects for synchronized types that implement @@ -8065,19 +8071,17 @@ package body Exp_Disp is Out_Present => True, Parameter_Type => New_Occurrence_Of (Typ, Loc))); - if Present (Parameter_Specifications (Parent (E))) then - P := First (Parameter_Specifications (Parent (E))); - while Present (P) loop - Append_To (Parms, - Make_Parameter_Specification (Loc, - Defining_Identifier => - Make_Defining_Identifier (Loc, - Chars => Chars (Defining_Identifier (P))), - Parameter_Type => New_Copy_Tree (Parameter_Type (P)), - Expression => New_Copy_Tree (Expression (P)))); - Next (P); - end loop; - end if; + P := First (Parameter_Specifications (Parent (E))); + while Present (P) loop + Append_To (Parms, + Make_Parameter_Specification (Loc, + Defining_Identifier => + Make_Defining_Identifier (Loc, + Chars => Chars (Defining_Identifier (P))), + Parameter_Type => New_Copy_Tree (Parameter_Type (P)), + Expression => New_Copy_Tree (Expression (P)))); + Next (P); + end loop; return Parms; end Gen_Parameters_Profile; diff --git a/gcc/ada/exp_disp.ads b/gcc/ada/exp_disp.ads index f286763..cbb5ba6 100644 --- a/gcc/ada/exp_disp.ads +++ b/gcc/ada/exp_disp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb index 41c0aea..e1df9d2 100644 --- a/gcc/ada/exp_dist.adb +++ b/gcc/ada/exp_dist.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2908,7 +2908,7 @@ package body Exp_Dist is --------------------------------- procedure Expand_Calling_Stubs_Bodies (Unit_Node : Node_Id) is - Spec : constant Node_Id := Specification (Unit_Node); + Spec : constant Node_Id := Specification (Unit_Node); begin Add_Calling_Stubs_To_Declarations (Spec); end Expand_Calling_Stubs_Bodies; @@ -8600,6 +8600,8 @@ package body Exp_Dist is Use_Opaque_Representation : Boolean; + Real_Rep : Node_Id; + begin -- For a derived type, we can't go past the base type (to the -- parent type) here, because that would cause the attribute's @@ -8634,10 +8636,10 @@ package body Exp_Dist is Use_Opaque_Representation := False; if Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Output, At_Any_Place => True) + (Typ, TSS_Stream_Output, Real_Rep, At_Any_Place => True) or else Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Write, At_Any_Place => True) + (Typ, TSS_Stream_Write, Real_Rep, At_Any_Place => True) then -- If user-defined stream attributes are specified for this -- type, use them and transmit data as an opaque sequence of @@ -9438,6 +9440,8 @@ package body Exp_Dist is -- When True, use stream attributes and represent type as an -- opaque sequence of bytes. + Real_Rep : Node_Id; + begin -- For a derived type, we can't go past the base type (to the -- parent type) here, because that would cause the attribute's @@ -9492,10 +9496,10 @@ package body Exp_Dist is Use_Opaque_Representation := False; if Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Output, At_Any_Place => True) + (Typ, TSS_Stream_Output, Real_Rep, At_Any_Place => True) or else Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Write, At_Any_Place => True) + (Typ, TSS_Stream_Write, Real_Rep, At_Any_Place => True) then -- If user-defined stream attributes are specified for this -- type, use them and transmit data as an opaque sequence of @@ -10624,6 +10628,8 @@ package body Exp_Dist is Type_Name_Str : String_Id; Type_Repo_Id_Str : String_Id; + Real_Rep : Node_Id; + -- Start of processing for Build_TypeCode_Function begin @@ -10657,10 +10663,10 @@ package body Exp_Dist is (Type_Name_Str, Type_Repo_Id_Str, Parameters); if Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Output, At_Any_Place => True) + (Typ, TSS_Stream_Output, Real_Rep, At_Any_Place => True) or else Has_Stream_Attribute_Definition - (Typ, TSS_Stream_Write, At_Any_Place => True) + (Typ, TSS_Stream_Write, Real_Rep, At_Any_Place => True) then -- If user-defined stream attributes are specified for this -- type, use them and transmit data as an opaque sequence of diff --git a/gcc/ada/exp_dist.ads b/gcc/ada/exp_dist.ads index 8b0d6e3..28d3351 100644 --- a/gcc/ada/exp_dist.ads +++ b/gcc/ada/exp_dist.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_fixd.adb b/gcc/ada/exp_fixd.adb index 94a61df..c1e1669 100644 --- a/gcc/ada/exp_fixd.adb +++ b/gcc/ada/exp_fixd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_fixd.ads b/gcc/ada/exp_fixd.ads index 9a3b205..1188cd1 100644 --- a/gcc/ada/exp_fixd.ads +++ b/gcc/ada/exp_fixd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb index f2c5129..6ab717c 100644 --- a/gcc/ada/exp_imgv.adb +++ b/gcc/ada/exp_imgv.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -90,7 +90,7 @@ package body Exp_Imgv is Lit : Entity_Id; Nlit : Nat; S_Id : Entity_Id; - S_N : Nat; + S_N : Nat := 0; Str : String_Id; package SPHG renames System.Perfect_Hash_Generators; diff --git a/gcc/ada/exp_imgv.ads b/gcc/ada/exp_imgv.ads index f6ce172..248f7f0 100644 --- a/gcc/ada/exp_imgv.ads +++ b/gcc/ada/exp_imgv.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_intr.adb b/gcc/ada/exp_intr.adb index c139bb4..bd987f0 100644 --- a/gcc/ada/exp_intr.adb +++ b/gcc/ada/exp_intr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_intr.ads b/gcc/ada/exp_intr.ads index 5fae2c7..6162ebc 100644 --- a/gcc/ada/exp_intr.ads +++ b/gcc/ada/exp_intr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb index 779dbb3..b39b2a7 100644 --- a/gcc/ada/exp_pakd.adb +++ b/gcc/ada/exp_pakd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -573,11 +573,23 @@ package body Exp_Pakd is end if; end if; + -- In the case of a modular type, make sure the alignment is + -- consistent with the Esize. + + if Is_Scalar_Type (PAT) then + while Alignment (PAT) * System_Storage_Unit < Esize (PAT) + and then Alignment (PAT) < Maximum_Alignment + loop + Set_Alignment (PAT, 2 * Alignment (PAT)); + end loop; + end if; + + -- Then, in all cases, make sure the opposite is also true + Adjust_Esize_Alignment (PAT); -- Set remaining fields of packed array type - Reinit_Alignment (PAT); Set_Parent (PAT, Empty); Set_Associated_Node_For_Itype (PAT, Typ); Set_Original_Array_Type (PAT, Typ); diff --git a/gcc/ada/exp_pakd.ads b/gcc/ada/exp_pakd.ads index 8c34753..f61ae08 100644 --- a/gcc/ada/exp_pakd.ads +++ b/gcc/ada/exp_pakd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_prag.adb b/gcc/ada/exp_prag.adb index f0b4b0b..f434823 100644 --- a/gcc/ada/exp_prag.adb +++ b/gcc/ada/exp_prag.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -125,7 +125,7 @@ package body Exp_Prag is begin -- Suppress the expansion of an ignored assertion pragma. Such a pragma - -- should not be transformed into a null statment because: + -- should not be transformed into a null statement because: -- -- * The pragma may be part of the rep item chain of a type, in which -- case rewriting it will destroy the chain. @@ -2354,12 +2354,13 @@ package body Exp_Prag is procedure Expand_Pragma_Inspection_Point (N : Node_Id) is Loc : constant Source_Ptr := Sloc (N); + A : List_Id; Assoc : Node_Id; - S : Entity_Id; E : Entity_Id; + Rip : Boolean; + S : Entity_Id; - Remove_Inspection_Point : Boolean := False; begin if No (Pragma_Argument_Associations (N)) then A := New_List; @@ -2389,45 +2390,47 @@ package body Exp_Prag is Set_Pragma_Argument_Associations (N, A); end if; - -- Expand the arguments of the pragma. Expanding an entity reference - -- is a noop, except in a protected operation, where a reference may - -- have to be transformed into a reference to the corresponding prival. - -- Are there other pragmas that may require this ??? + -- Process the arguments of the pragma and expand them. Expanding an + -- entity reference is a noop, except in a protected operation, where + -- a reference may have to be transformed into a reference to the + -- corresponding prival. Are there other pragmas that require this ??? + Rip := False; Assoc := First (Pragma_Argument_Associations (N)); while Present (Assoc) loop - Expand (Expression (Assoc)); - Next (Assoc); - end loop; + -- The back end may need to take the address of the object - -- If any of the references have a freeze node, it must appear before - -- pragma Inspection_Point, otherwise the entity won't be available when - -- Gigi processes Inspection_Point. - -- When this requirement isn't met, turn the pragma into a no-op. + Set_Address_Taken (Entity (Expression (Assoc))); - Assoc := First (Pragma_Argument_Associations (N)); - while Present (Assoc) loop + Expand (Expression (Assoc)); + + -- If any of the objects have a freeze node, it must appear before + -- pragma Inspection_Point, otherwise the entity won't be elaborated + -- when Gigi processes the pragma. - if Present (Freeze_Node (Entity (Expression (Assoc)))) and then - not Is_Frozen (Entity (Expression (Assoc))) + if Has_Delayed_Freeze (Entity (Expression (Assoc))) + and then not Is_Frozen (Entity (Expression (Assoc))) then - Error_Msg_NE ("??inspection point references unfrozen object &", - Assoc, - Entity (Expression (Assoc))); - Remove_Inspection_Point := True; + Error_Msg_NE + ("??inspection point references unfrozen object &", + Assoc, + Entity (Expression (Assoc))); + Rip := True; end if; Next (Assoc); end loop; - if Remove_Inspection_Point then + -- When the above requirement isn't met, turn the pragma into a no-op + + if Rip then Error_Msg_N ("\pragma will be ignored", N); -- We can't just remove the pragma from the tree as it might be -- iterated over by the caller. Turn it into a null statement -- instead. - Rewrite (N, Make_Null_Statement (Sloc (N))); + Rewrite (N, Make_Null_Statement (Loc)); end if; end Expand_Pragma_Inspection_Point; @@ -2689,8 +2692,11 @@ package body Exp_Prag is begin -- If pragma is not enabled, rewrite as Null statement. If pragma is -- disabled, it has already been rewritten as a Null statement. + -- + -- Likewise, do this in CodePeer mode, because the expanded code is too + -- complicated for CodePeer to analyse. - if Is_Ignored (N) then + if Is_Ignored (N) or else CodePeer_Mode then Rewrite (N, Make_Null_Statement (Loc)); Analyze (N); return; diff --git a/gcc/ada/exp_prag.ads b/gcc/ada/exp_prag.ads index a418192..ec3c5e5 100644 --- a/gcc/ada/exp_prag.ads +++ b/gcc/ada/exp_prag.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_put_image.adb b/gcc/ada/exp_put_image.adb index 90a542d..50e0569 100644 --- a/gcc/ada/exp_put_image.adb +++ b/gcc/ada/exp_put_image.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1072,7 +1072,7 @@ package body Exp_Put_Image is Loc : constant Source_Ptr := Sloc (N); U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N))); Sink_Entity : constant Entity_Id := - Make_Defining_Identifier (Loc, Chars => New_Internal_Name ('S')); + Make_Temporary (Loc, 'S'); Sink_Decl : constant Node_Id := Make_Object_Declaration (Loc, Defining_Identifier => Sink_Entity, @@ -1090,7 +1090,7 @@ package body Exp_Put_Image is New_Occurrence_Of (Sink_Entity, Loc), Image_Prefix)); Result_Entity : constant Entity_Id := - Make_Defining_Identifier (Loc, Chars => New_Internal_Name ('R')); + Make_Temporary (Loc, 'R'); Result_Decl : constant Node_Id := Make_Object_Declaration (Loc, Defining_Identifier => Result_Entity, diff --git a/gcc/ada/exp_put_image.ads b/gcc/ada/exp_put_image.ads index 4f049f1..b2b65aa 100644 --- a/gcc/ada/exp_put_image.ads +++ b/gcc/ada/exp_put_image.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_sel.adb b/gcc/ada/exp_sel.adb index 7140015..af83a26 100644 --- a/gcc/ada/exp_sel.adb +++ b/gcc/ada/exp_sel.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_sel.ads b/gcc/ada/exp_sel.ads index 69c2efa..152ca53 100644 --- a/gcc/ada/exp_sel.ads +++ b/gcc/ada/exp_sel.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_smem.adb b/gcc/ada/exp_smem.adb index 216065f5..713adae 100644 --- a/gcc/ada/exp_smem.adb +++ b/gcc/ada/exp_smem.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_smem.ads b/gcc/ada/exp_smem.ads index 68eb58e..7918ea9 100644 --- a/gcc/ada/exp_smem.ads +++ b/gcc/ada/exp_smem.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_spark.adb b/gcc/ada/exp_spark.adb index 84927f8..00e0fcc 100644 --- a/gcc/ada/exp_spark.adb +++ b/gcc/ada/exp_spark.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -903,6 +903,9 @@ package body Exp_SPARK is Eq_Spec : Node_Id := Empty; Predef_List : List_Id; + Wrapper_Decl_List : List_Id; + Wrapper_Body_List : List_Id := No_List; + Saved_GM : constant Ghost_Mode_Type := Ghost_Mode; Saved_IGR : constant Node_Id := Ignored_Ghost_Region; -- Save the Ghost-related attributes to restore on exit @@ -961,6 +964,35 @@ package body Exp_SPARK is end if; end if; + if Ekind (Typ) = E_Record_Type + and then Is_Tagged_Type (Typ) + and then not Is_CPP_Class (Typ) + then + -- Ada 2005 (AI-391): For a nonabstract null extension, create + -- wrapper functions for each nonoverridden inherited function + -- with a controlling result of the type. The wrapper for such + -- a function returns an extension aggregate that invokes the + -- parent function. + + if Ada_Version >= Ada_2005 + and then not Is_Abstract_Type (Typ) + and then Is_Null_Extension (Typ) + then + Exp_Ch3.Make_Controlling_Function_Wrappers + (Typ, Wrapper_Decl_List, Wrapper_Body_List); + Insert_List_Before_And_Analyze (N, Wrapper_Decl_List); + end if; + + -- Ada 2005 (AI-391): If any wrappers were created for nonoverridden + -- inherited functions, then add their bodies to the AST, so they + -- will be processed like ordinary subprogram bodies (even though the + -- compiler adds them into the freezing action). + + if not Is_Interface (Typ) then + Insert_List_Before_And_Analyze (N, Wrapper_Body_List); + end if; + end if; + Restore_Ghost_Region (Saved_GM, Saved_IGR); end SPARK_Freeze_Type; diff --git a/gcc/ada/exp_spark.ads b/gcc/ada/exp_spark.ads index d7d8f77..30b1d81 100644 --- a/gcc/ada/exp_spark.ads +++ b/gcc/ada/exp_spark.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_strm.adb b/gcc/ada/exp_strm.adb index 8983dab1c..6eaef4e 100644 --- a/gcc/ada/exp_strm.adb +++ b/gcc/ada/exp_strm.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_strm.ads b/gcc/ada/exp_strm.ads index 7243f08..9c88b9e 100644 --- a/gcc/ada/exp_strm.ads +++ b/gcc/ada/exp_strm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_tss.adb b/gcc/ada/exp_tss.adb index 6bb41de..a5d9460 100644 --- a/gcc/ada/exp_tss.adb +++ b/gcc/ada/exp_tss.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_tss.ads b/gcc/ada/exp_tss.ads index 060f33e..cf5d988 100644 --- a/gcc/ada/exp_tss.ads +++ b/gcc/ada/exp_tss.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb index be06580..90a626f 100644 --- a/gcc/ada/exp_unst.adb +++ b/gcc/ada/exp_unst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1755,7 +1755,7 @@ package body Exp_Unst is procedure Add_Form_To_Spec (F : Entity_Id; S : Node_Id); -- S is an N_Function/Procedure_Specification node, and F - -- is the new entity to add to this subprogramn spec as + -- is the new entity to add to this subprogram spec as -- the last Extra_Formal. ---------------------- @@ -2093,7 +2093,8 @@ package body Exp_Unst is -- Build and insert the assignment: -- ARECn.nam := nam'Address - -- or else 'Access for unconstrained array + -- or else 'Unchecked_Access for + -- unconstrained array. if Needs_Fat_Pointer (Ent) then Attr := Name_Unchecked_Access; @@ -2206,7 +2207,7 @@ package body Exp_Unst is begin -- Ignore type references, these are implicit references that do - -- not need rewriting (e.g. the appearence in a conversion). + -- not need rewriting (e.g. the appearance in a conversion). -- Also ignore if no reference was specified or if the rewriting -- has already been done (this can happen if the N_Identifier -- occurs more than one time in the tree). Also ignore references diff --git a/gcc/ada/exp_unst.ads b/gcc/ada/exp_unst.ads index 9355380..d9b1604 100644 --- a/gcc/ada/exp_unst.ads +++ b/gcc/ada/exp_unst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -636,7 +636,7 @@ package Exp_Unst is -- the subprogram is declared but not actually referenced. We remove -- such subprograms from the tree, which simplifies our task, because -- we don't have to worry about e.g. uplevel references from such an - -- unreferenced subpogram, which might require (useless) activation + -- unreferenced subprogram, which might require (useless) activation -- records to be created. This is computed by setting the outer level -- subprogram (Subp itself) as reachable, and then doing a transitive -- closure following all calls. @@ -669,7 +669,7 @@ package Exp_Unst is -- uplevel referenced. It contains both objects (which will be put in -- the corresponding AREC activation record), and types. The types are -- not put in the AREC activation record, but referenced bounds (i.e. - -- generated _FIRST and _LAST entites, and formal parameters) will be + -- generated _FIRST and _LAST entities, and formal parameters) will be -- in the list in their own right. Last : SI_Type; diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 0aa7937..64324bf 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1422,7 +1422,7 @@ package body Exp_Util is -- Add a runtime check to verify assertion expression DIC_Expr of -- inherited pragma DIC_Prag. This routine applies class-wide pre- -- and postcondition-like runtime semantics to the check. Expr is - -- the assertion expression after substitition has been performed + -- the assertion expression after substitution has been performed -- (via Replace_References). All generated code is added to list Stmts. procedure Add_Inherited_DICs @@ -3752,7 +3752,7 @@ package body Exp_Util is -- Anonymous arrays in object declarations have no explicit declaration -- so use the related object declaration as the insertion point. - elsif Is_Itype (Work_Typ) and then Is_Array_Type (Work_Typ) then + elsif Is_Itype (Work_Typ) and then Is_Array_Type (Work_Typ) then Typ_Decl := Associated_Node_For_Itype (Work_Typ); -- Derived types with the full view as parent do not have a partial @@ -7172,7 +7172,7 @@ package body Exp_Util is Wrapped_Node : Node_Id := Empty; begin - if No (Ins_Actions) or else Is_Empty_List (Ins_Actions) then + if Is_Empty_List (Ins_Actions) then return; end if; @@ -7916,43 +7916,6 @@ package body Exp_Util is end if; end Insert_Actions_After; - ------------------------ - -- Insert_Declaration -- - ------------------------ - - procedure Insert_Declaration (N : Node_Id; Decl : Node_Id) is - P : Node_Id; - - begin - pragma Assert (Nkind (N) in N_Subexpr); - - -- Climb until we find a procedure or a package - - P := N; - loop - pragma Assert (Present (Parent (P))); - P := Parent (P); - - if Is_List_Member (P) then - exit when Nkind (Parent (P)) in - N_Package_Specification | N_Subprogram_Body; - - -- Special handling for handled sequence of statements, we must - -- insert in the statements not the exception handlers! - - if Nkind (Parent (P)) = N_Handled_Sequence_Of_Statements then - P := First (Statements (Parent (P))); - exit; - end if; - end if; - end loop; - - -- Now do the insertion - - Insert_Before (P, Decl); - Analyze (Decl); - end Insert_Declaration; - --------------------------------- -- Insert_Library_Level_Action -- --------------------------------- @@ -8780,7 +8743,7 @@ package body Exp_Util is ---------------------------------- function Is_Possibly_Unaligned_Object (N : Node_Id) return Boolean is - T : constant Entity_Id := Etype (N); + T : constant Entity_Id := Etype (N); begin -- If renamed object, apply test to underlying object @@ -9495,14 +9458,12 @@ package body Exp_Util is begin W := Warn; - if Is_Non_Empty_List (L) then - N := First (L); - while Present (N) loop - Kill_Dead_Code (N, W); - W := False; - Next (N); - end loop; - end if; + N := First (L); + while Present (N) loop + Kill_Dead_Code (N, W); + W := False; + Next (N); + end loop; end Kill_Dead_Code; ----------------------------- @@ -9965,7 +9926,7 @@ package body Exp_Util is -- Nothing to do when the pragma lacks arguments, in which case it -- is illegal. - elsif No (Args) or else Is_Empty_List (Args) then + elsif Is_Empty_List (Args) then return False; end if; @@ -12676,10 +12637,6 @@ package body Exp_Util is Typ : Entity_Id; begin - if No (L) or else Is_Empty_List (L) then - return False; - end if; - Decl := First (L); while Present (Decl) loop @@ -12698,9 +12655,10 @@ package body Exp_Util is and then Is_Library_Level_Entity (Typ) and then Convention (Typ) = Convention_Ada and then Present (Access_Disp_Table (Typ)) - and then RTE_Available (RE_Unregister_Tag) and then not Is_Abstract_Type (Typ) and then not No_Run_Time_Mode + and then not Restriction_Active (No_Tagged_Type_Registration) + and then RTE_Available (RE_Unregister_Tag) then return True; end if; diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads index 2b61132..0233e56 100644 --- a/gcc/ada/exp_util.ads +++ b/gcc/ada/exp_util.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -164,18 +164,6 @@ package Exp_Util is -- generalize to expressions if there is a need but this is tricky to -- implement because of short-circuits (among other things). - procedure Insert_Declaration (N : Node_Id; Decl : Node_Id); - -- N must be a subexpression (Nkind in N_Subexpr). This is similar to - -- Insert_Action (N, Decl), but inserts Decl outside the expression in - -- which N appears. This is called Insert_Declaration because the intended - -- use is for declarations that have no associated code. We can't go - -- moving other kinds of things out of the current expression, since they - -- could be executed conditionally (e.g. right operand of short circuit, - -- or THEN/ELSE of if expression). This is currently used only in - -- Modify_Tree_For_C mode, where it is needed because in C we have no - -- way of having declarations within an expression (a really annoying - -- limitation). - procedure Insert_Library_Level_Action (N : Node_Id); -- This procedure inserts and analyzes the node N as an action at the -- library level for the current unit (i.e. it is attached to the @@ -703,7 +691,7 @@ package Exp_Util is procedure Get_Current_Value_Condition (Var : Node_Id; Op : out Node_Kind; - Val : out Node_Id); + Val : out Node_Id) with Post => Val /= Var; -- This routine processes the Current_Value field of the variable Var. If -- the Current_Value field is null or if it represents a known value, then -- on return Cond is set to N_Empty, and Val is set to Empty. diff --git a/gcc/ada/expander.adb b/gcc/ada/expander.adb index 75c0edb..13ec869 100644 --- a/gcc/ada/expander.adb +++ b/gcc/ada/expander.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/expander.ads b/gcc/ada/expander.ads index 12e7398..ca2023e 100644 --- a/gcc/ada/expander.ads +++ b/gcc/ada/expander.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/expect.c b/gcc/ada/expect.c index a92c465..b1889fe 100644 --- a/gcc/ada/expect.c +++ b/gcc/ada/expect.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2001-2021, AdaCore * + * Copyright (C) 2001-2022, AdaCore * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -345,8 +345,17 @@ __gnat_waitpid (int pid) { int status = 0; - waitpid (pid, &status, 0); - status = WEXITSTATUS (status); + if (waitpid (pid, &status, 0) == -1) { + return -1; + } + + if WIFEXITED (status) { + status = WEXITSTATUS (status); + } else if WIFSIGNALED (status) { + status = WTERMSIG (status); + } else if WIFSTOPPED (status) { + status = WSTOPSIG (status); + } return status; } diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h index 67cc218..33be99e 100644 --- a/gcc/ada/fe.h +++ b/gcc/ada/fe.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/final.c b/gcc/ada/final.c index 58038d5..d2cbf4d 100644 --- a/gcc/ada/final.c +++ b/gcc/ada/final.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/fmap.adb b/gcc/ada/fmap.adb index 7a8e082..afa9ee4 100644 --- a/gcc/ada/fmap.adb +++ b/gcc/ada/fmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -301,7 +301,7 @@ package body Fmap is Read_Source_File (Name_Enter (File_Name), 1, Hi, Src, FD, Config); if Null_Source_Buffer_Ptr (Src) then - if FD = Null_FD then + if FD = Osint.Null_FD then Write_Str ("warning: could not locate mapping file """); else Write_Str ("warning: no read access for mapping file """); diff --git a/gcc/ada/fmap.ads b/gcc/ada/fmap.ads index b3294dd..cadcd10 100644 --- a/gcc/ada/fmap.ads +++ b/gcc/ada/fmap.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/fname-sf.adb b/gcc/ada/fname-sf.adb index 8feb150..39ce267 100644 --- a/gcc/ada/fname-sf.adb +++ b/gcc/ada/fname-sf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -24,7 +24,6 @@ ------------------------------------------------------------------------------ with Casing; use Casing; -with Fname; use Fname; with Fname.UF; use Fname.UF; with SFN_Scan; use SFN_Scan; with Osint; use Osint; diff --git a/gcc/ada/fname-sf.ads b/gcc/ada/fname-sf.ads index dd8e4bf..d78a368 100644 --- a/gcc/ada/fname-sf.ads +++ b/gcc/ada/fname-sf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/fname-uf.adb b/gcc/ada/fname-uf.adb index cfaf7c4..f21b0f1 100644 --- a/gcc/ada/fname-uf.adb +++ b/gcc/ada/fname-uf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/fname-uf.ads b/gcc/ada/fname-uf.ads index 465e8ed..5881fdb 100644 --- a/gcc/ada/fname-uf.ads +++ b/gcc/ada/fname-uf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/fname.adb b/gcc/ada/fname.adb index ae121c6..8fa78d5 100644 --- a/gcc/ada/fname.adb +++ b/gcc/ada/fname.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/fname.ads b/gcc/ada/fname.ads index 6a908a5..5145076 100644 --- a/gcc/ada/fname.ads +++ b/gcc/ada/fname.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index bd03ffa..7ed44f5 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2124,7 +2124,7 @@ package body Freeze is ---------------------------- procedure Check_Strict_Alignment (E : Entity_Id) is - Comp : Entity_Id; + Comp : Entity_Id; begin -- Bit-packed array types do not require strict alignment, even if they @@ -2354,7 +2354,6 @@ package body Freeze is procedure Freeze_All_Ent (From : Entity_Id; After : in out Node_Id) is E : Entity_Id; Flist : List_Id; - Lastn : Node_Id; procedure Process_Flist; -- If freeze nodes are present, insert and analyze, and reset cursor @@ -2365,6 +2364,7 @@ package body Freeze is ------------------- procedure Process_Flist is + Lastn : Node_Id; begin if Is_Non_Empty_List (Flist) then Lastn := Next (After); @@ -2711,7 +2711,11 @@ package body Freeze is -- List of freezing actions, left at No_List if none Test_E : Entity_Id := E; - -- This could use a comment ??? + -- A local temporary used to test if freezing is necessary for E, since + -- its value can be set to something other than E in certain cases. For + -- example, E cannot be used directly in cases such as when it is an + -- Itype defined within a record - since it is the location of record + -- which matters. procedure Add_To_Result (Fnod : Node_Id); -- Add freeze action Fnod to list Result diff --git a/gcc/ada/freeze.ads b/gcc/ada/freeze.ads index 0174756..749fb79 100644 --- a/gcc/ada/freeze.ads +++ b/gcc/ada/freeze.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/frontend.adb b/gcc/ada/frontend.adb index b78fc9c..c60234d 100644 --- a/gcc/ada/frontend.adb +++ b/gcc/ada/frontend.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -539,7 +539,7 @@ begin -- Initialize_Scalars, but others should be checked: as well??? declare - Item : Node_Id; + Item : Node_Id; begin Item := First (Context_Items (Cunit (Main_Unit))); diff --git a/gcc/ada/frontend.ads b/gcc/ada/frontend.ads index 9dcd30d..d90f4e5 100644 --- a/gcc/ada/frontend.ads +++ b/gcc/ada/frontend.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index 911deb7..40e7a9f 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -271,8 +271,7 @@ GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(LDFLAGS) # Languages-specific object files for Ada. # Object files from C sources that are used by gnat1 -# Most of the non-gigi files are needed because of s-crtl.o and s-os_lib.o -# But adadecode.o should not be needed with sufficiently recent compilers +# adadecode.o should not be needed with sufficiently recent compilers GNAT1_C_OBJS = \ ada/cuintp.o \ ada/decl.o \ @@ -281,15 +280,9 @@ GNAT1_C_OBJS = \ ada/utils2.o \ ada/trans.o \ ada/targtyps.o \ - ada/adadecode.o \ - ada/adaint.o \ - ada/argv.o \ - ada/cio.o \ - ada/cstreams.o \ - ada/env.o \ - ada/errno.o \ + ada/version.o \ ada/targext.o \ - ada/version.o + ada/adadecode.o # Object files from Ada sources that are used by gnat1 GNAT_ADA_OBJS = \ @@ -465,14 +458,17 @@ GNAT_ADA_OBJS = \ ada/g-graphs.o \ ada/g-lists.o \ ada/g-sets.o \ - ada/s-casuti.o \ - ada/s-crtl.o \ - ada/s-os_lib.o \ ada/s-pehage.o \ ada/s-utf_32.o ifeq ($(STAGE1),False) GNAT1_C_OBJS+= \ + ada/adaint.o \ + ada/argv.o \ + ada/cio.o \ + ada/cstreams.o \ + ada/env.o \ + ada/errno.o \ ada/init.o \ ada/initialize.o \ ada/raise.o \ @@ -504,6 +500,8 @@ GNAT_ADA_OBJS+= \ ada/libgnat/s-assert.o \ ada/libgnat/s-bitops.o \ ada/libgnat/s-carun8.o \ + ada/libgnat/s-casuti.o \ + ada/libgnat/s-crtl.o \ ada/libgnat/s-conca2.o \ ada/libgnat/s-conca3.o \ ada/libgnat/s-conca4.o \ @@ -521,22 +519,19 @@ GNAT_ADA_OBJS+= \ ada/libgnat/s-imgint.o \ ada/libgnat/s-mastop.o \ ada/libgnat/s-memory.o \ + ada/libgnat/s-os_lib.o \ ada/libgnat/s-parame.o \ ada/libgnat/s-purexc.o \ ada/libgnat/s-restri.o \ ada/libgnat/s-secsta.o \ ada/libgnat/s-soflin.o \ ada/libgnat/s-soliin.o \ - ada/libgnat/s-sopco3.o \ - ada/libgnat/s-sopco4.o \ - ada/libgnat/s-sopco5.o \ ada/libgnat/s-stache.o \ ada/libgnat/s-stalib.o \ ada/libgnat/s-stoele.o \ ada/libgnat/s-strcom.o \ ada/libgnat/s-strhas.o \ ada/libgnat/s-string.o \ - ada/libgnat/s-strops.o \ ada/libgnat/s-traceb.o \ ada/libgnat/s-traent.o \ ada/libgnat/s-trasym.o \ @@ -625,6 +620,7 @@ GNATBIND_OBJS = \ ada/switch-b.o \ ada/switch.o \ ada/table.o \ + ada/targext.o \ ada/targparm.o \ ada/types.o \ ada/uintp.o \ @@ -636,18 +632,9 @@ GNATBIND_OBJS = \ ada/g-lists.o \ ada/g-graphs.o \ ada/g-sets.o \ - ada/s-casuti.o \ - ada/s-os_lib.o \ ada/s-resfil.o \ - ada/s-utf_32.o \ - ada/adaint.o \ - ada/argv.o \ - ada/cio.o \ - ada/cstreams.o \ - ada/env.o \ - ada/errno.o \ - ada/targext.o \ - ada/version.o + ada/version.o \ + ada/s-utf_32.o ifeq ($(STAGE1),False) GNATBIND_OBJS += \ @@ -670,6 +657,7 @@ GNATBIND_OBJS += \ ada/libgnat/s-addope.o \ ada/libgnat/s-assert.o \ ada/libgnat/s-carun8.o \ + ada/libgnat/s-casuti.o \ ada/libgnat/s-conca2.o \ ada/libgnat/s-conca3.o \ ada/libgnat/s-conca4.o \ @@ -687,27 +675,30 @@ GNATBIND_OBJS += \ ada/libgnat/s-imgint.o \ ada/libgnat/s-mastop.o \ ada/libgnat/s-memory.o \ + ada/libgnat/s-os_lib.o \ ada/libgnat/s-parame.o \ ada/libgnat/s-restri.o \ ada/libgnat/s-secsta.o \ ada/libgnat/s-soflin.o \ ada/libgnat/s-soliin.o \ - ada/libgnat/s-sopco3.o \ - ada/libgnat/s-sopco4.o \ - ada/libgnat/s-sopco5.o \ ada/libgnat/s-stache.o \ ada/libgnat/s-stalib.o \ ada/libgnat/s-stoele.o \ ada/libgnat/s-strhas.o \ ada/libgnat/s-string.o \ - ada/libgnat/s-strops.o \ ada/libgnat/s-traent.o \ ada/libgnat/s-traceb.o \ ada/libgnat/s-unstyp.o \ ada/libgnat/s-wchcnv.o \ ada/libgnat/s-wchcon.o \ ada/libgnat/s-wchjis.o \ - ada/libgnat/s-wchstw.o + ada/libgnat/s-wchstw.o \ + ada/adaint.o \ + ada/argv.o \ + ada/cio.o \ + ada/cstreams.o \ + ada/env.o \ + ada/errno.o endif # Language-independent object files. @@ -1122,8 +1113,7 @@ ada/sdefault.o : ada/libgnat/ada.ads ada/libgnat/a-except.ads ada/libgnat/a-uncc ada/libgnat/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads ada/namet.ads \ ada/opt.ads ada/osint.ads ada/output.ads ada/sdefault.ads ada/sdefault.adb \ ada/libgnat/s-exctab.ads ada/libgnat/s-memory.ads ada/libgnat/s-os_lib.ads ada/libgnat/s-parame.ads \ - ada/libgnat/s-stalib.ads ada/libgnat/s-strops.ads ada/libgnat/s-sopco3.ads ada/libgnat/s-sopco4.ads \ - ada/libgnat/s-sopco5.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \ + ada/libgnat/s-stalib.ads ada/libgnat/s-string.ads ada/libgnat/s-traent.ads ada/libgnat/s-unstyp.ads \ ada/libgnat/s-wchcon.ads ada/table.adb ada/table.ads \ ada/types.ads ada/libgnat/unchdeal.ads ada/libgnat/unchconv.ads \ ada/gcc-interface/system.ads @@ -1195,10 +1185,8 @@ ADA_GENERATED_FILES = \ ada/gnat.ads ada/g-dynhta.ads ada/g-dynhta.adb \ ada/g-dyntab.ads ada/g-dyntab.adb ada/g-graphs.ads ada/g-graphs.adb \ ada/g-lists.ads ada/g-lists.adb ada/g-sets.ads ada/g-sets.adb \ - ada/s-casuti.ads ada/s-casuti.adb \ - ada/s-crtl.ads ada/s-rident.ads ada/s-pehage.ads ada/s-pehage.adb \ - ada/s-os_lib.ads ada/s-os_lib.adb ada/s-resfil.ads ada/s-resfil.adb \ - ada/s-utf_32.ads ada/s-utf_32.adb + ada/s-rident.ads ada/s-pehage.ads ada/s-pehage.adb \ + ada/s-resfil.ads ada/s-resfil.adb ada/s-utf_32.ads ada/s-utf_32.adb # Only used to manually trigger the creation of the generated files. .PHONY: diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index af6b6bd..39a9092 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -1400,7 +1400,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST && !valid_constant_size_p (TYPE_SIZE_UNIT (gnu_alloc_type))) - post_error ("??`Storage_Error` will be raised at run time!", + post_error ("??Storage_Error will be raised at run time!", gnat_entity); gnu_expr @@ -3059,7 +3059,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) Present (gnat_field); gnat_field = Next_Entity (gnat_field)) if ((Ekind (gnat_field) == E_Component - || Ekind (gnat_field) == E_Discriminant) + || (Ekind (gnat_field) == E_Discriminant + && !is_unchecked_union)) && No (Component_Clause (gnat_field))) { all_rep = false; @@ -7874,8 +7875,7 @@ typedef struct vinfo DEBUG_INFO is true if we need to write debug information about the type. - MAYBE_UNUSED is true if this type may be unused in the end; this doesn't - mean that its contents may be unused as well, only the container itself. + IN_VARIANT is true if the componennt list is that of a variant. FIRST_FREE_POS, if nonzero, is the first (lowest) free field position in the outer record type down to this variant level. It is nonzero only if @@ -7890,7 +7890,7 @@ components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type, tree gnu_field_list, tree gnu_record_type, int packed, bool definition, bool cancel_alignment, bool all_rep, bool unchecked_union, bool artificial, bool debug_info, - bool maybe_unused, tree first_free_pos, + bool in_variant, tree first_free_pos, tree *p_gnu_rep_list) { const bool needs_xv_encodings @@ -8075,15 +8075,21 @@ components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type, = TYPE_SIZE_UNIT (gnu_record_type); } - /* Add the fields into the record type for the variant. Note that - we aren't sure to really use it at this point, see below. */ + /* Add the fields into the record type for the variant but note that + we aren't sure to really use it at this point, see below. In the + case of an unchecked union, we force the fields with a rep clause + present in a nested variant to be moved to the outermost variant, + so as to flatten the rep-ed layout as much as possible, the reason + being that we cannot do any flattening when a subtype statically + selects a variant later on, for example for an aggregate. */ has_rep = components_to_record (Component_List (variant), gnat_record_type, NULL_TREE, gnu_variant_type, packed, definition, !all_rep_and_size, all_rep, unchecked_union, true, needs_xv_encodings, true, this_first_free_pos, - all_rep || this_first_free_pos + (all_rep || this_first_free_pos) + && !(in_variant && unchecked_union) ? NULL : &gnu_rep_list); /* Translate the qualifier and annotate the GNAT node. */ @@ -8206,9 +8212,9 @@ components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type, finish_record_type (gnu_union_type, nreverse (gnu_variant_list), all_rep_and_size ? 1 : 0, needs_xv_encodings); - /* If GNU_UNION_TYPE is our record type, it means we must have an - Unchecked_Union with no fields. Verify that and, if so, just - return. */ + /* If GNU_UNION_TYPE is our record type, this means that we must have + an Unchecked_Union whose fields are all in the variant part. Now + verify that and, if so, just return. */ if (gnu_union_type == gnu_record_type) { gcc_assert (unchecked_union @@ -8275,7 +8281,6 @@ components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type, = (Convention (gnat_record_type) == Convention_Ada && Warn_On_Questionable_Layout && !(No_Reordering (gnat_record_type) && GNAT_Mode)); - const bool in_variant = (p_gnu_rep_list != NULL); tree gnu_zero_list = NULL_TREE; tree gnu_self_list = NULL_TREE; tree gnu_var_list = NULL_TREE; @@ -8640,7 +8645,7 @@ components_to_record (Node_Id gnat_component_list, Entity_Id gnat_record_type, TYPE_ARTIFICIAL (gnu_record_type) = artificial; finish_record_type (gnu_record_type, gnu_field_list, layout_with_rep ? 1 : 0, - debug_info && !maybe_unused); + debug_info && !in_variant); /* Chain the fields with zero size at the beginning of the field list. */ if (gnu_zero_list) diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 3d0820f..39059cb 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -865,6 +865,20 @@ lvalue_required_p (Node_Id gnat_node, tree gnu_type, bool constant, || must_pass_by_ref (gnu_type) || default_pass_by_ref (gnu_type)); + case N_Pragma_Argument_Association: + return lvalue_required_p (gnat_parent, gnu_type, constant, + address_of_constant); + + case N_Pragma: + if (Is_Pragma_Name (Chars (Pragma_Identifier (gnat_parent)))) + { + const unsigned char id + = Get_Pragma_Id (Chars (Pragma_Identifier (gnat_parent))); + return id == Pragma_Inspection_Point; + } + else + return 0; + case N_Indexed_Component: /* Only the array expression can require an lvalue. */ if (Prefix (gnat_parent) != gnat_node) @@ -1157,7 +1171,7 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p) specific circumstances only, so evaluated lazily. < 0 means unknown, > 0 means known true, 0 means known false. */ int require_lvalue = -1; - Node_Id gnat_result_type; + Entity_Id gnat_result_type; tree gnu_result, gnu_result_type; /* If the Etype of this node is not the same as that of the Entity, then @@ -1387,6 +1401,9 @@ Pragma_to_gnu (Node_Id gnat_node) char *comment; #endif gnu_expr = maybe_unconstrained_array (gnu_expr); + if (TREE_CODE (gnu_expr) == CONST_DECL + && DECL_CONST_CORRESPONDING_VAR (gnu_expr)) + gnu_expr = DECL_CONST_CORRESPONDING_VAR (gnu_expr); gnat_mark_addressable (gnu_expr); #ifdef ASM_COMMENT_START @@ -4440,6 +4457,22 @@ return_slot_opt_for_pure_call_p (tree target, tree call) return !bitmap_bit_p (decls, DECL_UID (target)); } +/* Elaborate types referenced in the profile (FIRST_FORMAL, RESULT_TYPE). */ + +static void +elaborate_profile (Entity_Id first_formal, Entity_Id result_type) +{ + Entity_Id formal; + + for (formal = first_formal; + Present (formal); + formal = Next_Formal_With_Extras (formal)) + (void) gnat_to_gnu_type (Etype (formal)); + + if (Present (result_type) && Ekind (result_type) != E_Void) + (void) gnat_to_gnu_type (result_type); +} + /* Subroutine of gnat_to_gnu to translate gnat_node, either an N_Function_Call or an N_Procedure_Call_Statement, to a GCC tree, which is returned. GNU_RESULT_TYPE_P is a pointer to where we should place the result type. @@ -4464,7 +4497,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, /* The FUNCTION_TYPE node giving the GCC type of the subprogram. */ tree gnu_subprog_type = TREE_TYPE (gnu_subprog); /* The return type of the FUNCTION_TYPE. */ - tree gnu_result_type = TREE_TYPE (gnu_subprog_type); + tree gnu_result_type;; const bool frontend_builtin = (TREE_CODE (gnu_subprog) == FUNCTION_DECL && DECL_BUILT_IN_CLASS (gnu_subprog) == BUILT_IN_FRONTEND); @@ -4479,6 +4512,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, bool variadic; bool by_descriptor; Entity_Id gnat_formal; + Entity_Id gnat_result_type; Node_Id gnat_actual; atomic_acces_t aa_type; bool aa_sync; @@ -4493,6 +4527,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, = Underlying_Type (Etype (Prefix (gnat_subprog))); gnat_formal = First_Formal_With_Extras (Etype (gnat_subprog)); + gnat_result_type = Etype (Etype (gnat_subprog)); variadic = IN (Convention (gnat_prefix_type), Convention_C_Variadic); /* If the access type doesn't require foreign-compatible representation, @@ -4506,6 +4541,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, { /* Assume here that this must be 'Elab_Body or 'Elab_Spec. */ gnat_formal = Empty; + gnat_result_type = Empty; variadic = false; by_descriptor = false; } @@ -4515,6 +4551,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, gcc_checking_assert (Is_Entity_Name (gnat_subprog)); gnat_formal = First_Formal_With_Extras (Entity (gnat_subprog)); + gnat_result_type = Etype (Entity_Id (gnat_subprog)); variadic = IN (Convention (Entity (gnat_subprog)), Convention_C_Variadic); by_descriptor = false; @@ -4532,6 +4569,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, if (returning_value) { + gnu_result_type = TREE_TYPE (gnu_subprog_type); *gnu_result_type_p = gnu_result_type; return build1 (NULL_EXPR, gnu_result_type, call_expr); } @@ -4540,7 +4578,13 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target, } } + /* We must elaborate the entire profile now because, if it references types + that were initially incomplete,, their elaboration changes the contents + of GNU_SUBPROG_TYPE and, in particular, may change the result type. */ + elaborate_profile (gnat_formal, gnat_result_type); + gcc_assert (FUNC_OR_METHOD_TYPE_P (gnu_subprog_type)); + gnu_result_type = TREE_TYPE (gnu_subprog_type); if (TREE_CODE (gnu_subprog) == FUNCTION_DECL) { @@ -8300,7 +8344,7 @@ gnat_to_gnu (Node_Id gnat_node) /* If the result is a constant that overflowed, raise Constraint_Error. */ if (TREE_CODE (gnu_result) == INTEGER_CST && TREE_OVERFLOW (gnu_result)) { - post_error ("??`Constraint_Error` will be raised at run time", gnat_node); + post_error ("??Constraint_Error will be raised at run time", gnat_node); gnu_result = build1 (NULL_EXPR, gnu_result_type, build_call_raise (CE_Overflow_Check_Failed, gnat_node, diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c index 06d8203..b651d48 100644 --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -1118,7 +1118,7 @@ build_binary_op (enum tree_code op_code, tree result_type, return result; } - /* Otherwise, the base types must be the same, unless they are both fat + /* Otherwise, the base types must be the same, unless they are both (fat) pointer types or record types. In the latter case, use the best type and convert both operands to that type. */ if (left_base_type != right_base_type) @@ -1131,6 +1131,18 @@ build_binary_op (enum tree_code op_code, tree result_type, best_type = left_base_type; } + else if (POINTER_TYPE_P (left_base_type) + && POINTER_TYPE_P (right_base_type)) + { + /* Anonymous access types in Ada 2005 can point to different + members of a tagged type hierarchy. */ + gcc_assert (TYPE_MAIN_VARIANT (TREE_TYPE (left_base_type)) + == TYPE_MAIN_VARIANT (TREE_TYPE (right_base_type)) + || (TYPE_ALIGN_OK (TREE_TYPE (left_base_type)) + && TYPE_ALIGN_OK (TREE_TYPE (right_base_type)))); + best_type = left_base_type; + } + else if (TREE_CODE (left_base_type) == RECORD_TYPE && TREE_CODE (right_base_type) == RECORD_TYPE) { @@ -1153,13 +1165,6 @@ build_binary_op (enum tree_code op_code, tree result_type, gcc_unreachable (); } - else if (POINTER_TYPE_P (left_base_type) - && POINTER_TYPE_P (right_base_type)) - { - gcc_assert (TREE_TYPE (left_base_type) - == TREE_TYPE (right_base_type)); - best_type = left_base_type; - } else gcc_unreachable (); diff --git a/gcc/ada/gen_il-fields.ads b/gcc/ada/gen_il-fields.ads index ca3439e..6a3e7b2 100644 --- a/gcc/ada/gen_il-fields.ads +++ b/gcc/ada/gen_il-fields.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-gen-gen_entities.adb b/gcc/ada/gen_il-gen-gen_entities.adb index d91faaa..2631045 100644 --- a/gcc/ada/gen_il-gen-gen_entities.adb +++ b/gcc/ada/gen_il-gen-gen_entities.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -652,10 +652,7 @@ begin -- Gen_IL.Gen.Gen_Entities Cc (E_Access_Type, Access_Kind); -- An access type created by an access type declaration with no all - -- keyword present. Note that the predefined type Any_Access, which - -- has E_Access_Type Ekind, is used to label NULL in the upwards pass - -- of type analysis, to be replaced by the true access type in the - -- downwards resolution pass. + -- keyword present. Cc (E_Access_Subtype, Access_Kind); -- An access subtype created by a subtype declaration for any access diff --git a/gcc/ada/gen_il-gen-gen_nodes.adb b/gcc/ada/gen_il-gen-gen_nodes.adb index 9f9fef9..755f3cc 100644 --- a/gcc/ada/gen_il-gen-gen_nodes.adb +++ b/gcc/ada/gen_il-gen-gen_nodes.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-gen.adb b/gcc/ada/gen_il-gen.adb index 2e81149..adf363b 100644 --- a/gcc/ada/gen_il-gen.adb +++ b/gcc/ada/gen_il-gen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2472,7 +2472,8 @@ package body Gen_IL.Gen is for T in First_Concrete (Root) .. Last_Concrete (Root) loop if T not in N_Unused_At_Start | N_Unused_At_End then Put_Make_Spec (S, Root, T); - Put (S, ";" & LF & "pragma " & Inline & " (Make_" & + Put (S, ";" & LF); + Put (S, "pragma " & Inline & " (Make_" & Image_Sans_N (T) & ");" & LF & LF); end if; end loop; diff --git a/gcc/ada/gen_il-gen.ads b/gcc/ada/gen_il-gen.ads index 56b0606..4233ce8 100644 --- a/gcc/ada/gen_il-gen.ads +++ b/gcc/ada/gen_il-gen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-internals.adb b/gcc/ada/gen_il-internals.adb index a1a8062..cec5b94 100644 --- a/gcc/ada/gen_il-internals.adb +++ b/gcc/ada/gen_il-internals.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-internals.ads b/gcc/ada/gen_il-internals.ads index 3febf7f..532630c 100644 --- a/gcc/ada/gen_il-internals.ads +++ b/gcc/ada/gen_il-internals.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-main.adb b/gcc/ada/gen_il-main.adb index d624406..59c6074 100644 --- a/gcc/ada/gen_il-main.adb +++ b/gcc/ada/gen_il-main.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il-types.ads b/gcc/ada/gen_il-types.ads index 9395e00..ca85ecf 100644 --- a/gcc/ada/gen_il-types.ads +++ b/gcc/ada/gen_il-types.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -577,8 +577,7 @@ package Gen_IL.Types is | N_Defining_Operator_Symbol; subtype Opt_Abstract_Type is Opt_Type_Enum with - Predicate => Opt_Abstract_Type = No_Type or - Opt_Abstract_Type in Abstract_Type; + Predicate => Opt_Abstract_Type in No_Type | Abstract_Type; subtype Type_Boundaries is Type_Enum with Predicate => Type_Boundaries in diff --git a/gcc/ada/gen_il.adb b/gcc/ada/gen_il.adb index 23619b6..6ba74c1 100644 --- a/gcc/ada/gen_il.adb +++ b/gcc/ada/gen_il.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gen_il.ads b/gcc/ada/gen_il.ads index 5f307fe..a4c09a6 100644 --- a/gcc/ada/gen_il.ads +++ b/gcc/ada/gen_il.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/get_scos.adb b/gcc/ada/get_scos.adb index eb9efaa..782df7a 100644 --- a/gcc/ada/get_scos.adb +++ b/gcc/ada/get_scos.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/get_scos.ads b/gcc/ada/get_scos.ads index 1388c52..3ddaa19 100644 --- a/gcc/ada/get_scos.ads +++ b/gcc/ada/get_scos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/get_targ.adb b/gcc/ada/get_targ.adb index cd2aed2..60d6698 100644 --- a/gcc/ada/get_targ.adb +++ b/gcc/ada/get_targ.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/get_targ.ads b/gcc/ada/get_targ.ads index 1928273..9043225 100644 --- a/gcc/ada/get_targ.ads +++ b/gcc/ada/get_targ.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/ghost.adb b/gcc/ada/ghost.adb index 1720fe0..1f21c33 100644 --- a/gcc/ada/ghost.adb +++ b/gcc/ada/ghost.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -530,7 +530,7 @@ package body Ghost is if Is_Checked_Ghost_Entity (Id) and then Policy = Name_Ignore - and then May_Be_Lvalue (Ref) + and then Known_To_Be_Assigned (Ref) then Error_Msg_Sloc := Sloc (Ref); diff --git a/gcc/ada/ghost.ads b/gcc/ada/ghost.ads index 2b241f4..21126a7 100644 --- a/gcc/ada/ghost.ads +++ b/gcc/ada/ghost.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnat-style.texi b/gcc/ada/gnat-style.texi index 1e77dd1..cbc11ac 100644 --- a/gcc/ada/gnat-style.texi +++ b/gcc/ada/gnat-style.texi @@ -3,7 +3,7 @@ @setfilename gnat-style.info @documentencoding UTF-8 @ifinfo -@*Generated by Sphinx 4.3.0.@* +@*Generated by Sphinx 4.3.1.@* @end ifinfo @settitle GNAT Coding Style A Guide for GNAT Developers @defindex ge @@ -21,11 +21,11 @@ @copying @quotation -GNAT Coding Style: A Guide for GNAT Developers , Nov 30, 2021 +GNAT Coding Style: A Guide for GNAT Developers , Jan 03, 2022 AdaCore -Copyright @copyright{} 2008-2021, Free Software Foundation +Copyright @copyright{} 2008-2022, Free Software Foundation @end quotation @end copying diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 12ec98b..25c5823 100644 --- a/gcc/ada/gnat1drv.adb +++ b/gcc/ada/gnat1drv.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnat1drv.ads b/gcc/ada/gnat1drv.ads index 94432b4..13382c5 100644 --- a/gcc/ada/gnat1drv.ads +++ b/gcc/ada/gnat1drv.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnat_cuda.adb b/gcc/ada/gnat_cuda.adb index a1739be..dc4261a 100644 --- a/gcc/ada/gnat_cuda.adb +++ b/gcc/ada/gnat_cuda.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnat_cuda.ads b/gcc/ada/gnat_cuda.ads index 390f5de..b5fcf8f 100644 --- a/gcc/ada/gnat_cuda.ads +++ b/gcc/ada/gnat_cuda.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 3a501ec..687e2e4 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -3,7 +3,7 @@ @setfilename gnat_rm.info @documentencoding UTF-8 @ifinfo -@*Generated by Sphinx 4.3.0.@* +@*Generated by Sphinx 4.3.1.@* @end ifinfo @settitle GNAT Reference Manual @defindex ge @@ -21,7 +21,7 @@ @copying @quotation -GNAT Reference Manual , Nov 30, 2021 +GNAT Reference Manual , Jan 03, 2022 AdaCore @@ -124,8 +124,6 @@ Implementation Defined Pragmas * Pragma Common_Object:: * Pragma Compile_Time_Error:: * Pragma Compile_Time_Warning:: -* Pragma Compiler_Unit:: -* Pragma Compiler_Unit_Warning:: * Pragma Complete_Representation:: * Pragma Complex_Representation:: * Pragma Component_Alignment:: @@ -511,6 +509,7 @@ Partition-Wide Restrictions * No_Standard_Storage_Pools:: * No_Stream_Optimizations:: * No_Streams:: +* No_Tagged_Type_Registration:: * No_Task_Allocators:: * No_Task_At_Interrupt_Priority:: * No_Task_Attributes_Package:: @@ -1215,8 +1214,6 @@ consideration, the use of these pragmas should be minimized. * Pragma Common_Object:: * Pragma Compile_Time_Error:: * Pragma Compile_Time_Warning:: -* Pragma Compiler_Unit:: -* Pragma Compiler_Unit_Warning:: * Pragma Complete_Representation:: * Pragma Complex_Representation:: * Pragma Component_Alignment:: @@ -2365,7 +2362,7 @@ If these conditions are not met, an error message is generated using the value given as the second argument. This string value may contain embedded ASCII.LF characters to break the message into multiple lines. -@node Pragma Compile_Time_Warning,Pragma Compiler_Unit,Pragma Compile_Time_Error,Implementation Defined Pragmas +@node Pragma Compile_Time_Warning,Pragma Complete_Representation,Pragma Compile_Time_Error,Implementation Defined Pragmas @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3c} @section Pragma Compile_Time_Warning @@ -2396,41 +2393,8 @@ Compile_Time_Warning resulted in a fatal error. Now the compiler always emits a warning. You can use @ref{3a,,Pragma Compile_Time_Error} to force the generation of an error. -@node Pragma Compiler_Unit,Pragma Compiler_Unit_Warning,Pragma Compile_Time_Warning,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit}@anchor{3d} -@section Pragma Compiler_Unit - - -Syntax: - -@example -pragma Compiler_Unit; -@end example - -This pragma is obsolete. It is equivalent to Compiler_Unit_Warning. It is -retained so that old versions of the GNAT run-time that use this pragma can -be compiled with newer versions of the compiler. - -@node Pragma Compiler_Unit_Warning,Pragma Complete_Representation,Pragma Compiler_Unit,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-compiler-unit-warning}@anchor{3e} -@section Pragma Compiler_Unit_Warning - - -Syntax: - -@example -pragma Compiler_Unit_Warning; -@end example - -This pragma is intended only for internal use in the GNAT run-time library. -It indicates that the unit is used as part of the compiler build. The effect -is to generate warnings for the use of constructs (for example, conditional -expressions) that would cause trouble when bootstrapping using an older -version of GNAT. For the exact list of restrictions, see the compiler sources -and references to Check_Compiler_Unit. - -@node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compiler_Unit_Warning,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{3f} +@node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compile_Time_Warning,Implementation Defined Pragmas +@anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{3d} @section Pragma Complete_Representation @@ -2449,7 +2413,7 @@ complete, and that this invariant is maintained if fields are added to the record in the future. @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{40} +@anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{3e} @section Pragma Complex_Representation @@ -2471,7 +2435,7 @@ records by pointer, and the use of this pragma may result in passing this type in floating-point registers. @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{41} +@anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{3f} @section Pragma Component_Alignment @@ -2562,7 +2526,7 @@ pragma @code{Pack}, pragma @code{Component_Alignment}, or a record rep clause), the GNAT uses the default alignment as described previously. @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{42}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{43} +@anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{40}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{41} @section Pragma Constant_After_Elaboration @@ -2576,7 +2540,7 @@ For the semantics of this pragma, see the entry for aspect @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1. @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{44}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{45} +@anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{42}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{43} @section Pragma Contract_Cases @@ -2661,7 +2625,7 @@ and that the consequence for this case should hold when the subprogram returns. @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{46} +@anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{44} @section Pragma Convention_Identifier @@ -2697,7 +2661,7 @@ define a convention identifier @code{Library} and use a single would be used system-wide. @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{47} +@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{45} @section Pragma CPP_Class @@ -2722,14 +2686,14 @@ functions (see pragma @code{CPP_Constructor}). Such types are implicitly limited if not explicitly declared as limited or derived from a limited type, and an error is issued in that case. -See @ref{48,,Interfacing to C++} for related information. +See @ref{46,,Interfacing to C++} for related information. Note: Pragma @code{CPP_Class} is currently obsolete. It is supported for backward compatibility but its functionality is available using pragma @code{Import} with @code{Convention} = @code{CPP}. @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{49} +@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{47} @section Pragma CPP_Constructor @@ -2780,7 +2744,7 @@ on the Ada side and the type is implicitly declared abstract. Pragma @code{CPP_Constructor} is intended primarily for automatic generation using an automatic binding generator tool (such as the @code{-fdump-ada-spec} GCC switch). -See @ref{48,,Interfacing to C++} for more related information. +See @ref{46,,Interfacing to C++} for more related information. Note: The use of functions returning class-wide types for constructors is currently obsolete. They are supported for backward compatibility. The @@ -2789,7 +2753,7 @@ because the imported C++ constructors always return an object of type T; that is, they never return an object whose type is a descendant of type T. @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{48} @section Pragma CPP_Virtual @@ -2802,10 +2766,10 @@ purposes. It used to be required to ensure compoatibility with C++, but is no longer required for that purpose because GNAT generates the same object layout as the G++ compiler by default. -See @ref{48,,Interfacing to C++} for related information. +See @ref{46,,Interfacing to C++} for related information. @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{49} @section Pragma CPP_Vtable @@ -2817,10 +2781,10 @@ It used to be required to ensure compatibility with C++, but is no longer required for that purpose because GNAT generates the same object layout as the G++ compiler by default. -See @ref{48,,Interfacing to C++} for related information. +See @ref{46,,Interfacing to C++} for related information. @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4a} @section Pragma CPU @@ -2835,7 +2799,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Deadline_Floor,Pragma Default_Initial_Condition,Pragma CPU,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4b} @section Pragma Deadline_Floor @@ -2850,7 +2814,7 @@ deadline inherited by a task when the task enters a protected object. It is effective only when the EDF scheduling policy is used. @node Pragma Default_Initial_Condition,Pragma Debug,Pragma Deadline_Floor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4e}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4f} +@anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4c}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4d} @section Pragma Default_Initial_Condition @@ -2864,7 +2828,7 @@ For the semantics of this pragma, see the entry for aspect @code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3. @node Pragma Debug,Pragma Debug_Policy,Pragma Default_Initial_Condition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{50} +@anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{4e} @section Pragma Debug @@ -2892,7 +2856,7 @@ or by use of the pragma @code{Check_Policy} with a first argument of @code{Debug}. @node Pragma Debug_Policy,Pragma Default_Scalar_Storage_Order,Pragma Debug,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{51} +@anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{4f} @section Pragma Debug_Policy @@ -2907,7 +2871,7 @@ with a first argument of @code{Debug}. It is retained for historical compatibility reasons. @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Debug_Policy,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{52} +@anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{50} @section Pragma Default_Scalar_Storage_Order @@ -2980,7 +2944,7 @@ it may significantly degrade the run-time performance of the software, instead the default scalar storage order ought to be changed only on a local basis. @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{53} +@anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{51} @section Pragma Default_Storage_Pool @@ -2997,7 +2961,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{54}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{55} +@anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{52}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{53} @section Pragma Depends @@ -3030,7 +2994,7 @@ For the semantics of this pragma, see the entry for aspect @code{Depends} in the SPARK 2014 Reference Manual, section 6.1.5. @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{56} +@anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{54} @section Pragma Detect_Blocking @@ -3048,7 +3012,7 @@ blocking operations within a protected operation, and to raise Program_Error if that happens. @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{57} +@anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{55} @section Pragma Disable_Atomic_Synchronization @@ -3074,7 +3038,7 @@ till the end of the scope. If an @code{Entity} argument is present, the action applies only to that entity. @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{58} +@anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{56} @section Pragma Dispatching_Domain @@ -3089,7 +3053,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{59}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5a} +@anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{57}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{58} @section Pragma Effective_Reads @@ -3103,7 +3067,7 @@ For the semantics of this pragma, see the entry for aspect @code{Effective_Reads the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5b}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5c} +@anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{59}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5a} @section Pragma Effective_Writes @@ -3117,7 +3081,7 @@ For the semantics of this pragma, see the entry for aspect @code{Effective_Write in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5b} @section Pragma Elaboration_Checks @@ -3154,7 +3118,7 @@ effect. If the pragma argument is @code{Static}, then the static elaboration mod is in effect. @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5c} @section Pragma Eliminate @@ -3314,7 +3278,7 @@ pragma Eliminate (Q, Proc, @end quotation @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5f} +@anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5d} @section Pragma Enable_Atomic_Synchronization @@ -3342,7 +3306,7 @@ till the end of the scope. If an @code{Entity} argument is present, the action applies only to that entity. @node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{60} +@anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{5e} @section Pragma Export_Function @@ -3414,7 +3378,7 @@ string. In this case, no external name is generated. This form still allows the specification of parameter mechanisms. @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{61} +@anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{5f} @section Pragma Export_Object @@ -3439,7 +3403,7 @@ of portability), but it is not required. @code{Size} is syntax checked, but otherwise ignored by GNAT. @node Pragma Export_Procedure,Pragma Export_Valued_Procedure,Pragma Export_Object,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{62} +@anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{60} @section Pragma Export_Procedure @@ -3492,7 +3456,7 @@ string. In this case, no external name is generated. This form still allows the specification of parameter mechanisms. @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Procedure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{63} +@anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{61} @section Pragma Export_Valued_Procedure @@ -3550,7 +3514,7 @@ string. In this case, no external name is generated. This form still allows the specification of parameter mechanisms. @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{64} +@anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{62} @section Pragma Extend_System @@ -3601,7 +3565,7 @@ for compiling System units, as explained in the GNAT User’s Guide. @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{65} +@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{63} @section Pragma Extensions_Allowed @@ -3881,7 +3845,7 @@ end Stacks; @end itemize @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{66}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{67} +@anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{64}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{65} @section Pragma Extensions_Visible @@ -3895,7 +3859,7 @@ For the semantics of this pragma, see the entry for aspect @code{Extensions_Visi in the SPARK 2014 Reference Manual, section 6.1.7. @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{68} +@anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{66} @section Pragma External @@ -3916,7 +3880,7 @@ used this pragma for exactly the same purposes as pragma @code{Export} before the latter was standardized. @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{69} +@anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{67} @section Pragma External_Name_Casing @@ -4005,7 +3969,7 @@ pragma External_Name_Casing (Uppercase, Uppercase); to enforce the upper casing of all external symbols. @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{6a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{68} @section Pragma Fast_Math @@ -4034,7 +3998,7 @@ under control of the pragma, rather than use the preinstantiated versions. @end table @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6b}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6c} +@anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{69}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6a} @section Pragma Favor_Top_Level @@ -4053,7 +4017,7 @@ When this pragma is used, dynamically generated trampolines may be used on some targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}. @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6b} @section Pragma Finalize_Storage_Only @@ -4073,7 +4037,7 @@ name. Note that this pragma does not suppress Finalize calls for library-level heap-allocated objects (see pragma @code{No_Heap_Finalization}). @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6c} @section Pragma Float_Representation @@ -4108,7 +4072,7 @@ No other value of digits is permitted. @end itemize @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6f}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{70} +@anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6d}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6e} @section Pragma Ghost @@ -4122,7 +4086,7 @@ For the semantics of this pragma, see the entry for aspect @code{Ghost} in the S 2014 Reference Manual, section 6.9. @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{71}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{72} +@anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{6f}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{70} @section Pragma Global @@ -4147,7 +4111,7 @@ For the semantics of this pragma, see the entry for aspect @code{Global} in the SPARK 2014 Reference Manual, section 6.1.4. @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{73} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{71} @section Pragma Ident @@ -4161,7 +4125,7 @@ This pragma is identical in effect to pragma @code{Comment}. It is provided for compatibility with other Ada compilers providing this pragma. @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{74} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{72} @section Pragma Ignore_Pragma @@ -4181,7 +4145,7 @@ pragma allows such pragmas to be ignored, which may be useful in CodePeer mode, or during porting of legacy code. @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{75} +@anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{73} @section Pragma Implementation_Defined @@ -4208,7 +4172,7 @@ for the purpose of implementing the No_Implementation_Identifiers restriction. @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{76} +@anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{74} @section Pragma Implemented @@ -4254,7 +4218,7 @@ By_Any shares the behavior of By_Entry and By_Protected_Procedure depending on the target’s overriding subprogram kind. @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{77} +@anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{75} @section Pragma Implicit_Packing @@ -4308,7 +4272,7 @@ sufficient. The use of pragma Implicit_Packing allows this record declaration to compile without an explicit pragma Pack. @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{78} +@anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{76} @section Pragma Import_Function @@ -4373,7 +4337,7 @@ notation. If the mechanism is not specified, the default mechanism is used. @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{79} +@anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{77} @section Pragma Import_Object @@ -4399,7 +4363,7 @@ point of view). @code{size} is syntax checked, but otherwise ignored by GNAT. @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{7a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{78} @section Pragma Import_Procedure @@ -4439,7 +4403,7 @@ applies to a procedure rather than a function and the parameters @code{Result_Type} and @code{Result_Mechanism} are not permitted. @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{79} @section Pragma Import_Valued_Procedure @@ -4492,7 +4456,7 @@ pragma Import that specifies the desired convention, since otherwise the default convention is Ada, which is almost certainly not what is required. @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7a} @section Pragma Independent @@ -4514,7 +4478,7 @@ constraints on the representation of the object (for instance prohibiting tight packing). @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7b} @section Pragma Independent_Components @@ -4535,7 +4499,7 @@ constraints on the representation of the object (for instance prohibiting tight packing). @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7e}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7f} +@anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7c}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7d} @section Pragma Initial_Condition @@ -4549,7 +4513,7 @@ For the semantics of this pragma, see the entry for aspect @code{Initial_Conditi in the SPARK 2014 Reference Manual, section 7.1.6. @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{80} +@anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{7e} @section Pragma Initialize_Scalars @@ -4658,7 +4622,7 @@ good idea to turn on stack checking (see description of stack checking in the GNAT User’s Guide) when using this pragma. @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{82} +@anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{7f}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{80} @section Pragma Initializes @@ -4685,7 +4649,7 @@ For the semantics of this pragma, see the entry for aspect @code{Initializes} in SPARK 2014 Reference Manual, section 7.1.5. @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{83}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{84} +@anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{82} @section Pragma Inline_Always @@ -4704,7 +4668,7 @@ apply this pragma to a primitive operation of a tagged type. Thanks to such restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}. @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{85} +@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{83} @section Pragma Inline_Generic @@ -4722,7 +4686,7 @@ than to check that the given names are all names of generic units or generic instances. @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{86} +@anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{84} @section Pragma Interface @@ -4749,7 +4713,7 @@ maintaining Ada 83/Ada 95 compatibility and is compatible with other Ada 83 compilers. @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{87} +@anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{85} @section Pragma Interface_Name @@ -4768,7 +4732,7 @@ for an interfaced subprogram, and is provided for compatibility with Ada least one of @code{External_Name} or @code{Link_Name}. @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{88} +@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{86} @section Pragma Interrupt_Handler @@ -4782,7 +4746,7 @@ This program unit pragma is supported for parameterless protected procedures as described in Annex C of the Ada Reference Manual. @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{89} +@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{87} @section Pragma Interrupt_State @@ -4868,7 +4832,7 @@ with an application’s runtime behavior in the cases of the synchronous signals and in the case of the signal used to implement the @code{abort} statement. @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{8a}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8b} +@anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{88}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{89} @section Pragma Invariant @@ -4907,7 +4871,7 @@ For further details on the use of this pragma, see the Ada 2012 documentation of the Type_Invariant aspect. @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8a} @section Pragma Keep_Names @@ -4927,7 +4891,7 @@ use a @code{Discard_Names} pragma in the @code{gnat.adc} file, but you want to retain the names for specific enumeration types. @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8b} @section Pragma License @@ -5022,7 +4986,7 @@ GPL, but no warning for @code{GNAT.Sockets} which is part of the GNAT run time, and is therefore licensed under the modified GPL. @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{8e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{8c} @section Pragma Link_With @@ -5046,7 +5010,7 @@ separate arguments to the linker. In addition pragma Link_With allows multiple arguments, with the same effect as successive pragmas. @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{8f} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{8d} @section Pragma Linker_Alias @@ -5087,7 +5051,7 @@ end p; @end example @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{90} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{8e} @section Pragma Linker_Constructor @@ -5117,7 +5081,7 @@ listed above. Where possible, the use of Stand Alone Libraries is preferable to the use of this pragma. @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{91} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{8f} @section Pragma Linker_Destructor @@ -5140,7 +5104,7 @@ See @code{pragma Linker_Constructor} for the set of restrictions that apply because of these specific contexts. @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{92}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{93} +@anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{90}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{91} @section Pragma Linker_Section @@ -5214,7 +5178,7 @@ end IO_Card; @end example @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{94}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{95} +@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{92}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{93} @section Pragma Lock_Free @@ -5266,7 +5230,7 @@ Function calls and attribute references must be static @end itemize @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{96} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{94} @section Pragma Loop_Invariant @@ -5299,7 +5263,7 @@ attribute can only be used within the expression of a @code{Loop_Invariant} pragma. For full details, see documentation of attribute @code{Loop_Entry}. @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{97} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{95} @section Pragma Loop_Optimize @@ -5361,7 +5325,7 @@ compiler in order to enable the relevant optimizations, that is to say vectorization. @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{98} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{96} @section Pragma Loop_Variant @@ -5408,7 +5372,7 @@ The @code{Loop_Entry} attribute may be used within the expressions of the @code{Loop_Variant} pragma to refer to values on entry to the loop. @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{99} +@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{97} @section Pragma Machine_Attribute @@ -5434,7 +5398,7 @@ which may make this pragma unusable for some attributes. For further information see @cite{GNU Compiler Collection (GCC) Internals}. @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{98} @section Pragma Main @@ -5454,7 +5418,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has no effect in GNAT, other than being syntax checked. @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{99} @section Pragma Main_Storage @@ -5473,7 +5437,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has no effect in GNAT, other than being syntax checked. @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9c}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9d} +@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9a}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9b} @section Pragma Max_Queue_Length @@ -5491,7 +5455,7 @@ entry. A value of -1 represents no additional restriction on queue length. @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9c} @section Pragma No_Body @@ -5514,7 +5478,7 @@ dummy body with a No_Body pragma ensures that there is no interference from earlier versions of the package body. @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9f}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a0} +@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9d}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{9e} @section Pragma No_Caching @@ -5528,7 +5492,7 @@ For the semantics of this pragma, see the entry for aspect @code{No_Caching} in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{9f} @section Pragma No_Component_Reordering @@ -5547,7 +5511,7 @@ declared in units to which the pragma applies and there is a requirement that this pragma be used consistently within a partition. @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a2}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a3} +@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a0}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a1} @section Pragma No_Elaboration_Code_All @@ -5566,7 +5530,7 @@ current unit, it must also have the No_Elaboration_Code_All aspect set. It may be applied to package or subprogram specs or their generic versions. @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a4} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a2} @section Pragma No_Heap_Finalization @@ -5598,7 +5562,7 @@ lose its @code{No_Heap_Finalization} pragma when the corresponding instance does appear at the library level. @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a6} +@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a3}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a4} @section Pragma No_Inline @@ -5616,7 +5580,7 @@ in particular it is not subject to the use of option @emph{-gnatn} or pragma @code{Inline_Always} for the same @code{NAME}. @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a7} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a5} @section Pragma No_Return @@ -5643,7 +5607,7 @@ available in all earlier versions of Ada as an implementation-defined pragma. @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a6} @section Pragma No_Strict_Aliasing @@ -5665,7 +5629,7 @@ in the @cite{GNAT User’s Guide}. This pragma currently has no effects on access to unconstrained array types. @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a9}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{aa} +@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a7}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{a8} @section Pragma No_Tagged_Streams @@ -5704,7 +5668,7 @@ with empty strings. This is useful to avoid exposing entity names at binary level but has a negative impact on the debuggability of tagged types. @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{ab} +@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{a9} @section Pragma Normalize_Scalars @@ -5786,7 +5750,7 @@ will always generate an invalid value if one exists. @end table @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ac}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{ad} +@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{aa}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{ab} @section Pragma Obsolescent @@ -5882,7 +5846,7 @@ So if you specify @code{Entity =>} for the @code{Entity} argument, and a @code{M argument is present, it must be preceded by @code{Message =>}. @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{ae} +@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{ac} @section Pragma Optimize_Alignment @@ -5968,7 +5932,7 @@ latter are compiled by default in pragma Optimize_Alignment (Off) mode if no pragma appears at the start of the file. @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{af} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{ad} @section Pragma Ordered @@ -6060,7 +6024,7 @@ For additional information please refer to the description of the @emph{-gnatw.u} switch in the GNAT User’s Guide. @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{ae} @section Pragma Overflow_Mode @@ -6099,7 +6063,7 @@ The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables) overflow checking, but does not affect the overflow mode. @node Pragma Overriding_Renamings,Pragma Partition_Elaboration_Policy,Pragma Overflow_Mode,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{af} @section Pragma Overriding_Renamings @@ -6134,7 +6098,7 @@ RM 8.3 (15) stipulates that an overridden operation is not visible within the declaration of the overriding operation. @node Pragma Partition_Elaboration_Policy,Pragma Part_Of,Pragma Overriding_Renamings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b2} +@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b0} @section Pragma Partition_Elaboration_Policy @@ -6151,7 +6115,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Part_Of,Pragma Passive,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b3}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b4} +@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b1}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b2} @section Pragma Part_Of @@ -6167,7 +6131,7 @@ For the semantics of this pragma, see the entry for aspect @code{Part_Of} in the SPARK 2014 Reference Manual, section 7.2.6. @node Pragma Passive,Pragma Persistent_BSS,Pragma Part_Of,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b3} @section Pragma Passive @@ -6191,7 +6155,7 @@ For more information on the subject of passive tasks, see the section ‘Passive Task Optimization’ in the GNAT Users Guide. @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b6}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b7} +@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b4}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b5} @section Pragma Persistent_BSS @@ -6222,7 +6186,7 @@ If this pragma is used on a target where this feature is not supported, then the pragma will be ignored. See also @code{pragma Linker_Section}. @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b6} @section Pragma Post @@ -6247,7 +6211,7 @@ appear at the start of the declarations in a subprogram body (preceded only by other pragmas). @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{b9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{b7} @section Pragma Postcondition @@ -6412,7 +6376,7 @@ Ada 2012, and has been retained in its original form for compatibility purposes. @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{ba} +@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{b8} @section Pragma Post_Class @@ -6447,7 +6411,7 @@ policy that controls this pragma is @code{Post'Class}, not @code{Post_Class}. @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{bb} +@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{b9} @section Pragma Pre @@ -6472,7 +6436,7 @@ appear at the start of the declarations in a subprogram body (preceded only by other pragmas). @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{bc} +@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{ba} @section Pragma Precondition @@ -6531,7 +6495,7 @@ Ada 2012, and has been retained in its original form for compatibility purposes. @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{bd}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{be} +@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{bb}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{bc} @section Pragma Predicate @@ -6585,7 +6549,7 @@ defined for subtype B). When following this approach, the use of predicates should be avoided. @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{bf} +@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{bd} @section Pragma Predicate_Failure @@ -6602,7 +6566,7 @@ the language-defined @code{Predicate_Failure} aspect, and shares its restrictions and semantics. @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{be} @section Pragma Preelaborable_Initialization @@ -6617,7 +6581,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{bf} @section Pragma Prefix_Exception_Messages @@ -6648,7 +6612,7 @@ prefixing in this case, you can always call @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually. @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c2} +@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c0} @section Pragma Pre_Class @@ -6683,7 +6647,7 @@ policy that controls this pragma is @code{Pre'Class}, not @code{Pre_Class}. @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c3} +@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c1} @section Pragma Priority_Specific_Dispatching @@ -6707,7 +6671,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c4} +@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c2} @section Pragma Profile @@ -6986,7 +6950,7 @@ conforming Ada constructs. The profile enables the following three pragmas: @end itemize @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{c5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{c3} @section Pragma Profile_Warnings @@ -7004,7 +6968,7 @@ violations of the profile generate warning messages instead of error messages. @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{c6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{c4} @section Pragma Propagate_Exceptions @@ -7023,7 +6987,7 @@ purposes. It used to be used in connection with optimization of a now-obsolete mechanism for implementation of exceptions. @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{c7} +@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{c5} @section Pragma Provide_Shift_Operators @@ -7043,7 +7007,7 @@ including the function declarations for these five operators, together with the pragma Import (Intrinsic, …) statements. @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{c8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{c6} @section Pragma Psect_Object @@ -7063,7 +7027,7 @@ EXTERNAL_SYMBOL ::= This pragma is identical in effect to pragma @code{Common_Object}. @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{c9}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{ca} +@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{c7}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{c8} @section Pragma Pure_Function @@ -7125,7 +7089,7 @@ unit is not a Pure unit in the categorization sense. So for example, a function thus marked is free to @code{with} non-pure units. @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{cb} +@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{c9} @section Pragma Rational @@ -7143,7 +7107,7 @@ pragma Profile (Rational); @end example @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{cc} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{ca} @section Pragma Ravenscar @@ -7163,7 +7127,7 @@ pragma Profile (Ravenscar); which is the preferred method of setting the @code{Ravenscar} profile. @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cd}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{ce} +@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cb}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{cc} @section Pragma Refined_Depends @@ -7196,7 +7160,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Depends the SPARK 2014 Reference Manual, section 6.1.5. @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{cf}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d0} +@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{cd}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{ce} @section Pragma Refined_Global @@ -7221,7 +7185,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Global} the SPARK 2014 Reference Manual, section 6.1.4. @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d1}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d2} +@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{cf}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d0} @section Pragma Refined_Post @@ -7235,7 +7199,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Post} i the SPARK 2014 Reference Manual, section 7.2.7. @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d3}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d4} +@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d1}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d2} @section Pragma Refined_State @@ -7261,7 +7225,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_State} the SPARK 2014 Reference Manual, section 7.2.2. @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{d5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{d3} @section Pragma Relative_Deadline @@ -7276,7 +7240,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d6}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d7} +@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d5} @section Pragma Remote_Access_Type @@ -7302,7 +7266,7 @@ pertaining to remote access to class-wide types. At instantiation, the actual type must be a remote access to class-wide type. @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{d8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{d6} @section Pragma Rename_Pragma @@ -7341,7 +7305,7 @@ Pragma Inline_Only will not necessarily mean the same thing as the other Ada compiler; it’s up to you to make sure the semantics are close enough. @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d7} @section Pragma Restricted_Run_Time @@ -7362,7 +7326,7 @@ which is the preferred method of setting the restricted run time profile. @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{da} +@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{d8} @section Pragma Restriction_Warnings @@ -7400,7 +7364,7 @@ generating a warning, but any other use of implementation defined pragmas will cause a warning to be generated. @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{db} +@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{d9} @section Pragma Reviewable @@ -7504,7 +7468,7 @@ comprehensive messages identifying possible problems based on this information. @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{dd} +@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{da}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{db} @section Pragma Secondary_Stack_Size @@ -7540,7 +7504,7 @@ Note the pragma cannot appear when the restriction @code{No_Secondary_Stack} is in effect. @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{de} +@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{dc} @section Pragma Share_Generic @@ -7558,7 +7522,7 @@ than to check that the given names are all names of generic units or generic instances. @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{df}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e0} +@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{dd}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{de} @section Pragma Shared @@ -7566,7 +7530,7 @@ This pragma is provided for compatibility with Ada 83. The syntax and semantics are identical to pragma Atomic. @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{df} @section Pragma Short_Circuit_And_Or @@ -7585,7 +7549,7 @@ within the file being compiled, it applies only to the file being compiled. There is no requirement that all units in a partition use this option. @node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e2} +@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e0} @section Pragma Short_Descriptors @@ -7599,7 +7563,7 @@ This pragma is provided for compatibility with other Ada implementations. It is recognized but ignored by all current versions of GNAT. @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e3}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e4} +@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e2} @section Pragma Simple_Storage_Pool_Type @@ -7653,7 +7617,7 @@ storage-management discipline). An object of a simple storage pool type can be associated with an access type by specifying the attribute -@ref{e5,,Simple_Storage_Pool}. For example: +@ref{e3,,Simple_Storage_Pool}. For example: @example My_Pool : My_Simple_Storage_Pool_Type; @@ -7663,11 +7627,11 @@ type Acc is access My_Data_Type; for Acc'Simple_Storage_Pool use My_Pool; @end example -See attribute @ref{e5,,Simple_Storage_Pool} +See attribute @ref{e3,,Simple_Storage_Pool} for further details. @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e6}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e7} +@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e5} @section Pragma Source_File_Name @@ -7759,20 +7723,20 @@ aware of these pragmas, and so other tools that use the projet file would not be aware of the intended naming conventions. If you are using project files, file naming is controlled by Source_File_Name_Project pragmas, which are usually supplied automatically by the project manager. A pragma -Source_File_Name cannot appear after a @ref{e8,,Pragma Source_File_Name_Project}. +Source_File_Name cannot appear after a @ref{e6,,Pragma Source_File_Name_Project}. For more details on the use of the @code{Source_File_Name} pragma, see the sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes} in the @cite{GNAT User’s Guide}. @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{e8} +@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e7}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{e6} @section Pragma Source_File_Name_Project This pragma has the same syntax and semantics as pragma Source_File_Name. It is only allowed as a stand-alone configuration pragma. -It cannot appear after a @ref{e7,,Pragma Source_File_Name}, and +It cannot appear after a @ref{e5,,Pragma Source_File_Name}, and most importantly, once pragma Source_File_Name_Project appears, no further Source_File_Name pragmas are allowed. @@ -7784,7 +7748,7 @@ Source_File_Name or Source_File_Name_Project pragmas (which would not be known to the project manager). @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{ea} +@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{e8} @section Pragma Source_Reference @@ -7808,7 +7772,7 @@ string expression other than a string literal. This is because its value is needed for error messages issued by all phases of the compiler. @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{eb}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{ec} +@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{ea} @section Pragma SPARK_Mode @@ -7890,7 +7854,7 @@ SPARK_Mode (@code{Off}), then that pragma will need to be repeated in the package body. @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{ed} +@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{eb} @section Pragma Static_Elaboration_Desired @@ -7914,7 +7878,7 @@ construction of larger aggregates with static components that include an others choice.) @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{ee} +@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{ec} @section Pragma Stream_Convert @@ -7991,7 +7955,7 @@ the pragma is silently ignored, and the default implementation of the stream attributes is used instead. @node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{ef} +@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{ed} @section Pragma Style_Checks @@ -8064,7 +8028,7 @@ Rf2 : Integer := ARG; -- OK, no error @end example @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{ee} @section Pragma Subtitle @@ -8078,7 +8042,7 @@ This pragma is recognized for compatibility with other Ada compilers but is ignored by GNAT. @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{ef} @section Pragma Suppress @@ -8151,7 +8115,7 @@ Of course, run-time checks are omitted whenever the compiler can prove that they will not fail, whether or not checks are suppressed. @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f2} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f0} @section Pragma Suppress_All @@ -8170,7 +8134,7 @@ The use of the standard Ada pragma @code{Suppress (All_Checks)} as a normal configuration pragma is the preferred usage in GNAT. @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f3}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f4} +@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f1}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f2} @section Pragma Suppress_Debug_Info @@ -8185,7 +8149,7 @@ for the specified entity. It is intended primarily for use in debugging the debugger, and navigating around debugger problems. @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f3} @section Pragma Suppress_Exception_Locations @@ -8208,7 +8172,7 @@ a partition, so it is fine to have some units within a partition compiled with this pragma and others compiled in normal mode without it. @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f6}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f7} +@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f4}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f5} @section Pragma Suppress_Initialization @@ -8253,7 +8217,7 @@ is suppressed, just as though its subtype had been given in a pragma Suppress_Initialization, as described above. @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{f8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{f6} @section Pragma Task_Name @@ -8309,7 +8273,7 @@ end; @end example @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{f9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{f7} @section Pragma Task_Storage @@ -8329,7 +8293,7 @@ created, depending on the target. This pragma can appear anywhere a type. @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{fb} +@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f8}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{f9} @section Pragma Test_Case @@ -8385,7 +8349,7 @@ postcondition. Mode @code{Robustness} indicates that the precondition and postcondition of the subprogram should be ignored for this test case. @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fc}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{fd} +@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{fb} @section Pragma Thread_Local_Storage @@ -8423,7 +8387,7 @@ If this pragma is used on a system where @code{TLS} is not supported, then an error message will be generated and the program will be rejected. @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{fe} +@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{fc} @section Pragma Time_Slice @@ -8439,7 +8403,7 @@ It is ignored if it is used in a system that does not allow this control, or if it appears in other than the main program unit. @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{ff} +@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{fd} @section Pragma Title @@ -8464,7 +8428,7 @@ notation is used, and named and positional notation can be mixed following the normal rules for procedure calls in Ada. @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{100} +@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{fe} @section Pragma Type_Invariant @@ -8485,7 +8449,7 @@ controlled by the assertion identifier @code{Type_Invariant} rather than @code{Invariant}. @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{101}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{102} +@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{100} @section Pragma Type_Invariant_Class @@ -8512,7 +8476,7 @@ policy that controls this pragma is @code{Type_Invariant'Class}, not @code{Type_Invariant_Class}. @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{103} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{101} @section Pragma Unchecked_Union @@ -8532,7 +8496,7 @@ version in all language modes (Ada 83, Ada 95, and Ada 2005). For full details, consult the Ada 2012 Reference Manual, section B.3.3. @node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{104} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{102} @section Pragma Unevaluated_Use_Of_Old @@ -8587,7 +8551,7 @@ uses up to the end of the corresponding statement sequence or sequence of package declarations. @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{105} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{103} @section Pragma Unimplemented_Unit @@ -8607,7 +8571,7 @@ The abort only happens if code is being generated. Thus you can use specs of unimplemented packages in syntax or semantic checking mode. @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{107} +@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{104}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{105} @section Pragma Universal_Aliasing @@ -8626,7 +8590,7 @@ situations in which it must be suppressed, see the section on @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}. @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{109} +@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{107} @section Pragma Unmodified @@ -8660,7 +8624,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such variables, though it is harmless to do so. @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{10b} +@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{109} @section Pragma Unreferenced @@ -8698,13 +8662,15 @@ or not to be given individually for each accept statement. The left hand side of an assignment does not count as a reference for the purpose of this pragma. Thus it is fine to assign to an entity for which -pragma Unreferenced is given. +pragma Unreferenced is given. However, use of an entity as an actual for +an out parameter does count as a reference unless warnings for unread output +parameters are enabled via @code{-gnatw.o}. Note that if a warning is desired for all calls to a given subprogram, regardless of whether they occur in the same unit as the subprogram declaration, then this pragma should not be used (calls from another unit would not be flagged); pragma Obsolescent can be used instead -for this purpose, see @ref{ad,,Pragma Obsolescent}. +for this purpose, see @ref{ab,,Pragma Obsolescent}. The second form of pragma @code{Unreferenced} is used within a context clause. In this case the arguments must be unit names of units previously @@ -8720,7 +8686,7 @@ Thus it is never necessary to use @code{pragma Unreferenced} for such variables, though it is harmless to do so. @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{10d} +@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{10b} @section Pragma Unreferenced_Objects @@ -8745,7 +8711,7 @@ compiler will automatically suppress unwanted warnings about these variables not being referenced. @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{10e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{10c} @section Pragma Unreserve_All_Interrupts @@ -8781,7 +8747,7 @@ handled, see pragma @code{Interrupt_State}, which subsumes the functionality of the @code{Unreserve_All_Interrupts} pragma. @node Pragma Unsuppress,Pragma Use_VADS_Size,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{10f} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{10d} @section Pragma Unsuppress @@ -8817,7 +8783,7 @@ number of implementation-defined check names. See the description of pragma @code{Suppress} for full details. @node Pragma Use_VADS_Size,Pragma Unused,Pragma Unsuppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{110} +@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{10e} @section Pragma Use_VADS_Size @@ -8841,7 +8807,7 @@ as implemented in the VADS compiler. See description of the VADS_Size attribute for further details. @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{112} +@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{110} @section Pragma Unused @@ -8875,7 +8841,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such variables, though it is harmless to do so. @node Pragma Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{113} +@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{111} @section Pragma Validity_Checks @@ -8931,7 +8897,7 @@ A := C; -- C will be validity checked @end example @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{114}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{115} +@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{113} @section Pragma Volatile @@ -8949,7 +8915,7 @@ implementation of pragma Volatile is upwards compatible with the implementation in DEC Ada 83. @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{117} +@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{114}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{115} @section Pragma Volatile_Full_Access @@ -8975,7 +8941,7 @@ is not to the whole object; the compiler is allowed (and generally will) access only part of the object in this case. @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{118}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{119} +@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{117} @section Pragma Volatile_Function @@ -8989,7 +8955,7 @@ For the semantics of this pragma, see the entry for aspect @code{Volatile_Functi in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{11a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{118} @section Pragma Warning_As_Error @@ -9029,7 +8995,7 @@ you can use multiple pragma Warning_As_Error. The above use of patterns to match the message applies only to warning messages generated by the front end. This pragma can also be applied to -warnings provided by the back end and mentioned in @ref{11b,,Pragma Warnings}. +warnings provided by the back end and mentioned in @ref{119,,Pragma Warnings}. By using a single full @emph{-Wxxx} switch in the pragma, such warnings can also be treated as errors. @@ -9079,7 +9045,7 @@ the tag is changed from “warning:” to “error:” and the string “[warning-as-error]” is appended to the end of the message. @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11c}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{11b} +@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{119} @section Pragma Warnings @@ -9235,7 +9201,7 @@ selectively for each tool, and as a consequence to detect useless pragma Warnings with switch @code{-gnatw.w}. @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{11d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{11b} @section Pragma Weak_External @@ -9286,7 +9252,7 @@ end External_Module; @end example @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{11e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{11c} @section Pragma Wide_Character_Encoding @@ -9317,7 +9283,7 @@ encoding within that file, and does not affect withed units, specs, or subunits. @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top -@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11f}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{120}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{121} +@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11d}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{11e}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{11f} @chapter Implementation Defined Aspects @@ -9437,7 +9403,7 @@ or attribute definition clause. @end menu @node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{122} +@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{120} @section Aspect Abstract_State @@ -9446,7 +9412,7 @@ or attribute definition clause. This aspect is equivalent to @ref{1e,,pragma Abstract_State}. @node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{123} +@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{121} @section Aspect Annotate @@ -9473,7 +9439,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} @end table @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{124} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{122} @section Aspect Async_Readers @@ -9482,7 +9448,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} This boolean aspect is equivalent to @ref{2f,,pragma Async_Readers}. @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{125} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{123} @section Aspect Async_Writers @@ -9491,45 +9457,45 @@ This boolean aspect is equivalent to @ref{2f,,pragma Async_Readers}. This boolean aspect is equivalent to @ref{31,,pragma Async_Writers}. @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{126} +@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{124} @section Aspect Constant_After_Elaboration @geindex Constant_After_Elaboration -This aspect is equivalent to @ref{43,,pragma Constant_After_Elaboration}. +This aspect is equivalent to @ref{41,,pragma Constant_After_Elaboration}. @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{127} +@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{125} @section Aspect Contract_Cases @geindex Contract_Cases -This aspect is equivalent to @ref{45,,pragma Contract_Cases}, the sequence +This aspect is equivalent to @ref{43,,pragma Contract_Cases}, the sequence of clauses being enclosed in parentheses so that syntactically it is an aggregate. @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{128} +@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{126} @section Aspect Depends @geindex Depends -This aspect is equivalent to @ref{55,,pragma Depends}. +This aspect is equivalent to @ref{53,,pragma Depends}. @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{129} +@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{127} @section Aspect Default_Initial_Condition @geindex Default_Initial_Condition -This aspect is equivalent to @ref{4f,,pragma Default_Initial_Condition}. +This aspect is equivalent to @ref{4d,,pragma Default_Initial_Condition}. @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{12a} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{128} @section Aspect Dimension @@ -9565,7 +9531,7 @@ Note that when the dimensioned type is an integer type, then any dimension value must be an integer literal. @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{12b} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{129} @section Aspect Dimension_System @@ -9625,7 +9591,7 @@ See section ‘Performing Dimensionality Analysis in GNAT’ in the GNAT Users Guide for detailed examples of use of the dimension system. @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{12c} +@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{12a} @section Aspect Disable_Controlled @@ -9638,110 +9604,110 @@ where for example you might want a record to be controlled or not depending on whether some run-time check is enabled or suppressed. @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{12d} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{12b} @section Aspect Effective_Reads @geindex Effective_Reads -This aspect is equivalent to @ref{5a,,pragma Effective_Reads}. +This aspect is equivalent to @ref{58,,pragma Effective_Reads}. @node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{12e} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{12c} @section Aspect Effective_Writes @geindex Effective_Writes -This aspect is equivalent to @ref{5c,,pragma Effective_Writes}. +This aspect is equivalent to @ref{5a,,pragma Effective_Writes}. @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{12f} +@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{12d} @section Aspect Extensions_Visible @geindex Extensions_Visible -This aspect is equivalent to @ref{67,,pragma Extensions_Visible}. +This aspect is equivalent to @ref{65,,pragma Extensions_Visible}. @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{130} +@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{12e} @section Aspect Favor_Top_Level @geindex Favor_Top_Level -This boolean aspect is equivalent to @ref{6c,,pragma Favor_Top_Level}. +This boolean aspect is equivalent to @ref{6a,,pragma Favor_Top_Level}. @node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{131} +@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{12f} @section Aspect Ghost @geindex Ghost -This aspect is equivalent to @ref{70,,pragma Ghost}. +This aspect is equivalent to @ref{6e,,pragma Ghost}. @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{132} +@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{130} @section Aspect Global @geindex Global -This aspect is equivalent to @ref{72,,pragma Global}. +This aspect is equivalent to @ref{70,,pragma Global}. @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{133} +@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{131} @section Aspect Initial_Condition @geindex Initial_Condition -This aspect is equivalent to @ref{7f,,pragma Initial_Condition}. +This aspect is equivalent to @ref{7d,,pragma Initial_Condition}. @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{134} +@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{132} @section Aspect Initializes @geindex Initializes -This aspect is equivalent to @ref{82,,pragma Initializes}. +This aspect is equivalent to @ref{80,,pragma Initializes}. @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{135} +@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{133} @section Aspect Inline_Always @geindex Inline_Always -This boolean aspect is equivalent to @ref{84,,pragma Inline_Always}. +This boolean aspect is equivalent to @ref{82,,pragma Inline_Always}. @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{136} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{134} @section Aspect Invariant @geindex Invariant -This aspect is equivalent to @ref{8b,,pragma Invariant}. It is a +This aspect is equivalent to @ref{89,,pragma Invariant}. It is a synonym for the language defined aspect @code{Type_Invariant} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{137} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{135} @section Aspect Invariant’Class @geindex Invariant'Class -This aspect is equivalent to @ref{102,,pragma Type_Invariant_Class}. It is a +This aspect is equivalent to @ref{100,,pragma Type_Invariant_Class}. It is a synonym for the language defined aspect @code{Type_Invariant'Class} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{138} +@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{136} @section Aspect Iterable @@ -9821,73 +9787,73 @@ function Get_Element (Cont : Container; Position : Cursor) return Element_Type; This aspect is used in the GNAT-defined formal container packages. @node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{139} +@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{137} @section Aspect Linker_Section @geindex Linker_Section -This aspect is equivalent to @ref{93,,pragma Linker_Section}. +This aspect is equivalent to @ref{91,,pragma Linker_Section}. @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{13a} +@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{138} @section Aspect Lock_Free @geindex Lock_Free -This boolean aspect is equivalent to @ref{95,,pragma Lock_Free}. +This boolean aspect is equivalent to @ref{93,,pragma Lock_Free}. @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{13b} +@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{139} @section Aspect Max_Queue_Length @geindex Max_Queue_Length -This aspect is equivalent to @ref{9d,,pragma Max_Queue_Length}. +This aspect is equivalent to @ref{9b,,pragma Max_Queue_Length}. @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{13c} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{13a} @section Aspect No_Caching @geindex No_Caching -This boolean aspect is equivalent to @ref{a0,,pragma No_Caching}. +This boolean aspect is equivalent to @ref{9e,,pragma No_Caching}. @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{13d} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{13b} @section Aspect No_Elaboration_Code_All @geindex No_Elaboration_Code_All -This aspect is equivalent to @ref{a3,,pragma No_Elaboration_Code_All} +This aspect is equivalent to @ref{a1,,pragma No_Elaboration_Code_All} for a program unit. @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{13e} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{13c} @section Aspect No_Inline @geindex No_Inline -This boolean aspect is equivalent to @ref{a6,,pragma No_Inline}. +This boolean aspect is equivalent to @ref{a4,,pragma No_Inline}. @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Inline,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{13f} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{13d} @section Aspect No_Tagged_Streams @geindex No_Tagged_Streams -This aspect is equivalent to @ref{aa,,pragma No_Tagged_Streams} with an +This aspect is equivalent to @ref{a8,,pragma No_Tagged_Streams} with an argument specifying a root tagged type (thus this aspect can only be applied to such a type). @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{140} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{13e} @section Aspect No_Task_Parts @@ -9903,51 +9869,51 @@ away certain tasking-related code that would otherwise be needed for T’Class, because descendants of T might contain tasks. @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{141} +@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{13f} @section Aspect Object_Size @geindex Object_Size -This aspect is equivalent to @ref{142,,attribute Object_Size}. +This aspect is equivalent to @ref{140,,attribute Object_Size}. @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{143} +@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{141} @section Aspect Obsolescent @geindex Obsolsecent -This aspect is equivalent to @ref{ad,,pragma Obsolescent}. Note that the +This aspect is equivalent to @ref{ab,,pragma Obsolescent}. Note that the evaluation of this aspect happens at the point of occurrence, it is not delayed until the freeze point. @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{144} +@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{142} @section Aspect Part_Of @geindex Part_Of -This aspect is equivalent to @ref{b4,,pragma Part_Of}. +This aspect is equivalent to @ref{b2,,pragma Part_Of}. @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{145} +@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{143} @section Aspect Persistent_BSS @geindex Persistent_BSS -This boolean aspect is equivalent to @ref{b7,,pragma Persistent_BSS}. +This boolean aspect is equivalent to @ref{b5,,pragma Persistent_BSS}. @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{146} +@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{144} @section Aspect Predicate @geindex Predicate -This aspect is equivalent to @ref{be,,pragma Predicate}. It is thus +This aspect is equivalent to @ref{bc,,pragma Predicate}. It is thus similar to the language defined aspects @code{Dynamic_Predicate} and @code{Static_Predicate} except that whether the resulting predicate is static or dynamic is controlled by the form of the @@ -9955,52 +9921,52 @@ expression. It is also separately controllable using pragma @code{Assertion_Policy}. @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{147} +@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{145} @section Aspect Pure_Function @geindex Pure_Function -This boolean aspect is equivalent to @ref{ca,,pragma Pure_Function}. +This boolean aspect is equivalent to @ref{c8,,pragma Pure_Function}. @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{148} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{146} @section Aspect Refined_Depends @geindex Refined_Depends -This aspect is equivalent to @ref{ce,,pragma Refined_Depends}. +This aspect is equivalent to @ref{cc,,pragma Refined_Depends}. @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{149} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{147} @section Aspect Refined_Global @geindex Refined_Global -This aspect is equivalent to @ref{d0,,pragma Refined_Global}. +This aspect is equivalent to @ref{ce,,pragma Refined_Global}. @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{14a} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{148} @section Aspect Refined_Post @geindex Refined_Post -This aspect is equivalent to @ref{d2,,pragma Refined_Post}. +This aspect is equivalent to @ref{d0,,pragma Refined_Post}. @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{14b} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{149} @section Aspect Refined_State @geindex Refined_State -This aspect is equivalent to @ref{d4,,pragma Refined_State}. +This aspect is equivalent to @ref{d2,,pragma Refined_State}. @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{14c} +@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{14a} @section Aspect Relaxed_Initialization @@ -10010,187 +9976,187 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.10. @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Relaxed_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{14d} +@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{14b} @section Aspect Remote_Access_Type @geindex Remote_Access_Type -This aspect is equivalent to @ref{d7,,pragma Remote_Access_Type}. +This aspect is equivalent to @ref{d5,,pragma Remote_Access_Type}. @node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{14e} +@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{14c} @section Aspect Secondary_Stack_Size @geindex Secondary_Stack_Size -This aspect is equivalent to @ref{dd,,pragma Secondary_Stack_Size}. +This aspect is equivalent to @ref{db,,pragma Secondary_Stack_Size}. @node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{14f} +@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{14d} @section Aspect Scalar_Storage_Order @geindex Scalar_Storage_Order -This aspect is equivalent to a @ref{150,,attribute Scalar_Storage_Order}. +This aspect is equivalent to a @ref{14e,,attribute Scalar_Storage_Order}. @node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{151} +@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{14f} @section Aspect Shared @geindex Shared -This boolean aspect is equivalent to @ref{e0,,pragma Shared} +This boolean aspect is equivalent to @ref{de,,pragma Shared} and is thus a synonym for aspect @code{Atomic}. @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{152} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{150} @section Aspect Simple_Storage_Pool @geindex Simple_Storage_Pool -This aspect is equivalent to @ref{e5,,attribute Simple_Storage_Pool}. +This aspect is equivalent to @ref{e3,,attribute Simple_Storage_Pool}. @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{153} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{151} @section Aspect Simple_Storage_Pool_Type @geindex Simple_Storage_Pool_Type -This boolean aspect is equivalent to @ref{e4,,pragma Simple_Storage_Pool_Type}. +This boolean aspect is equivalent to @ref{e2,,pragma Simple_Storage_Pool_Type}. @node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{154} +@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{152} @section Aspect SPARK_Mode @geindex SPARK_Mode -This aspect is equivalent to @ref{ec,,pragma SPARK_Mode} and +This aspect is equivalent to @ref{ea,,pragma SPARK_Mode} and may be specified for either or both of the specification and body of a subprogram or package. @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{155} +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{153} @section Aspect Suppress_Debug_Info @geindex Suppress_Debug_Info -This boolean aspect is equivalent to @ref{f4,,pragma Suppress_Debug_Info}. +This boolean aspect is equivalent to @ref{f2,,pragma Suppress_Debug_Info}. @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{156} +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{154} @section Aspect Suppress_Initialization @geindex Suppress_Initialization -This boolean aspect is equivalent to @ref{f7,,pragma Suppress_Initialization}. +This boolean aspect is equivalent to @ref{f5,,pragma Suppress_Initialization}. @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{157} +@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{155} @section Aspect Test_Case @geindex Test_Case -This aspect is equivalent to @ref{fb,,pragma Test_Case}. +This aspect is equivalent to @ref{f9,,pragma Test_Case}. @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{158} +@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{156} @section Aspect Thread_Local_Storage @geindex Thread_Local_Storage -This boolean aspect is equivalent to @ref{fd,,pragma Thread_Local_Storage}. +This boolean aspect is equivalent to @ref{fb,,pragma Thread_Local_Storage}. @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{159} +@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{157} @section Aspect Universal_Aliasing @geindex Universal_Aliasing -This boolean aspect is equivalent to @ref{107,,pragma Universal_Aliasing}. +This boolean aspect is equivalent to @ref{105,,pragma Universal_Aliasing}. @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{15a} +@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{158} @section Aspect Unmodified @geindex Unmodified -This boolean aspect is equivalent to @ref{109,,pragma Unmodified}. +This boolean aspect is equivalent to @ref{107,,pragma Unmodified}. @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{15b} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{159} @section Aspect Unreferenced @geindex Unreferenced -This boolean aspect is equivalent to @ref{10b,,pragma Unreferenced}. +This boolean aspect is equivalent to @ref{109,,pragma Unreferenced}. When using the @code{-gnat2022} switch, this aspect is also supported on formal parameters, which is in particular the only form possible for expression functions. @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{15c} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{15a} @section Aspect Unreferenced_Objects @geindex Unreferenced_Objects -This boolean aspect is equivalent to @ref{10d,,pragma Unreferenced_Objects}. +This boolean aspect is equivalent to @ref{10b,,pragma Unreferenced_Objects}. @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{15d} +@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{15b} @section Aspect Value_Size @geindex Value_Size -This aspect is equivalent to @ref{15e,,attribute Value_Size}. +This aspect is equivalent to @ref{15c,,attribute Value_Size}. @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{15f} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{15d} @section Aspect Volatile_Full_Access @geindex Volatile_Full_Access -This boolean aspect is equivalent to @ref{117,,pragma Volatile_Full_Access}. +This boolean aspect is equivalent to @ref{115,,pragma Volatile_Full_Access}. @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{160} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{15e} @section Aspect Volatile_Function @geindex Volatile_Function -This boolean aspect is equivalent to @ref{119,,pragma Volatile_Function}. +This boolean aspect is equivalent to @ref{117,,pragma Volatile_Function}. @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{161} +@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{15f} @section Aspect Warnings @geindex Warnings -This aspect is equivalent to the two argument form of @ref{11b,,pragma Warnings}, +This aspect is equivalent to the two argument form of @ref{119,,pragma Warnings}, where the first argument is @code{ON} or @code{OFF} and the second argument is the entity. @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top -@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{162}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{163}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} +@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{160}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{161}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} @chapter Implementation Defined Attributes @@ -10297,7 +10263,7 @@ consideration, you should minimize the use of these attributes. @end menu @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{164} +@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{162} @section Attribute Abort_Signal @@ -10311,7 +10277,7 @@ completely outside the normal semantics of Ada, for a user program to intercept the abort exception). @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{165} +@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{163} @section Attribute Address_Size @@ -10327,7 +10293,7 @@ reference to System.Address’Size is nonstatic because Address is a private type. @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{166} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{164} @section Attribute Asm_Input @@ -10341,10 +10307,10 @@ to be a static expression, and is the constraint for the parameter, value to be used as the input argument. The possible values for the constant are the same as those used in the RTL, and are dependent on the configuration file used to built the GCC back end. -@ref{167,,Machine Code Insertions} +@ref{165,,Machine Code Insertions} @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{168} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{166} @section Attribute Asm_Output @@ -10360,10 +10326,10 @@ result. The possible values for constraint are the same as those used in the RTL, and are dependent on the configuration file used to build the GCC back end. If there are no output operands, then this argument may either be omitted, or explicitly given as @code{No_Output_Operands}. -@ref{167,,Machine Code Insertions} +@ref{165,,Machine Code Insertions} @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{169} +@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{167} @section Attribute Atomic_Always_Lock_Free @@ -10375,7 +10341,7 @@ and False otherwise. The result indicate whether atomic operations are supported by the target for the given type. @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{16a} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{168} @section Attribute Bit @@ -10406,7 +10372,7 @@ This attribute is designed to be compatible with the DEC Ada 83 definition and implementation of the @code{Bit} attribute. @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{16b} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{169} @section Attribute Bit_Position @@ -10421,7 +10387,7 @@ type @emph{universal_integer}. The value depends only on the field the containing record @code{R}. @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{16c} +@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{16a} @section Attribute Code_Address @@ -10464,7 +10430,7 @@ the same value as is returned by the corresponding @code{'Address} attribute. @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16d} +@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16b} @section Attribute Compiler_Version @@ -10475,7 +10441,7 @@ prefix) yields a static string identifying the version of the compiler being used to compile the unit containing the attribute reference. @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{16e} +@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{16c} @section Attribute Constrained @@ -10490,7 +10456,7 @@ record type without discriminants is always @code{True}. This usage is compatible with older Ada compilers, including notably DEC Ada. @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{16f} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{16d} @section Attribute Default_Bit_Order @@ -10507,7 +10473,7 @@ as a @code{Pos} value (0 for @code{High_Order_First}, 1 for @code{Default_Bit_Order} in package @code{System}. @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{170} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{16e} @section Attribute Default_Scalar_Storage_Order @@ -10524,7 +10490,7 @@ equal to @code{Default_Bit_Order} if unspecified) as a @code{System.Bit_Order} value. This is a static attribute. @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{171} +@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{16f} @section Attribute Deref @@ -10537,7 +10503,7 @@ a named access-to-@cite{typ} type, except that it yields a variable, so it can b used on the left side of an assignment. @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{172} +@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{170} @section Attribute Descriptor_Size @@ -10566,7 +10532,7 @@ since @code{Positive} has an alignment of 4, the size of the descriptor is which yields a size of 32 bits, i.e. including 16 bits of padding. @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{173} +@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{171} @section Attribute Elaborated @@ -10581,7 +10547,7 @@ units has been completed. An exception is for units which need no elaboration, the value is always False for such units. @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{174} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{172} @section Attribute Elab_Body @@ -10597,7 +10563,7 @@ e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{175} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{173} @section Attribute Elab_Spec @@ -10613,7 +10579,7 @@ Ada code, e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{176} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{174} @section Attribute Elab_Subp_Body @@ -10627,7 +10593,7 @@ elaboration procedure by the binder in CodePeer mode only and is unrecognized otherwise. @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{177} +@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{175} @section Attribute Emax @@ -10640,7 +10606,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{178} +@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{176} @section Attribute Enabled @@ -10664,7 +10630,7 @@ a @code{pragma Suppress} or @code{pragma Unsuppress} before instantiating the package or subprogram, controlling whether the check will be present. @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{179} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{177} @section Attribute Enum_Rep @@ -10704,7 +10670,7 @@ integer calculation is done at run time, then the call to @code{Enum_Rep} may raise @code{Constraint_Error}. @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{17a} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{178} @section Attribute Enum_Val @@ -10730,7 +10696,7 @@ absence of an enumeration representation clause. This is a static attribute (i.e., the result is static if the argument is static). @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{17b} +@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{179} @section Attribute Epsilon @@ -10743,7 +10709,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{17c} +@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{17a} @section Attribute Fast_Math @@ -10754,7 +10720,7 @@ prefix) yields a static Boolean value that is True if pragma @code{Fast_Math} is active, and False otherwise. @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{17d} +@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{17b} @section Attribute Finalization_Size @@ -10772,7 +10738,7 @@ class-wide type whose tag denotes a type with no controlled parts. Note that only heap-allocated objects contain finalization data. @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{17e} +@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{17c} @section Attribute Fixed_Value @@ -10799,7 +10765,7 @@ This attribute is primarily intended for use in implementation of the input-output functions for fixed-point values. @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{17f} +@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{17d} @section Attribute From_Any @@ -10809,7 +10775,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{180} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{17e} @section Attribute Has_Access_Values @@ -10827,7 +10793,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{181} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{17f} @section Attribute Has_Discriminants @@ -10843,7 +10809,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has discriminants. @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{182} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{180} @section Attribute Has_Tagged_Values @@ -10860,7 +10826,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{183} +@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{181} @section Attribute Img @@ -10890,7 +10856,7 @@ that returns the appropriate string when called. This means that in an instantiation as a function parameter. @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{184} +@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{182} @section Attribute Initialized @@ -10900,7 +10866,7 @@ For the syntax and semantics of this attribute, see the SPARK 2014 Reference Manual, section 6.10. @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{185} +@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{183} @section Attribute Integer_Value @@ -10928,7 +10894,7 @@ This attribute is primarily intended for use in implementation of the standard input-output functions for fixed-point values. @node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{186} +@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{184} @section Attribute Invalid_Value @@ -10942,7 +10908,7 @@ including the ability to modify the value with the binder -Sxx flag and relevant environment variables at run time. @node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{187} +@anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{185} @section Attribute Iterable @@ -10951,7 +10917,7 @@ relevant environment variables at run time. Equivalent to Aspect Iterable. @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{188} +@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{186} @section Attribute Large @@ -10964,7 +10930,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Library_Level,Attribute Lock_Free,Attribute Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{189} +@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{187} @section Attribute Library_Level @@ -10990,7 +10956,7 @@ end Gen; @end example @node Attribute Lock_Free,Attribute Loop_Entry,Attribute Library_Level,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{18a} +@anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{188} @section Attribute Lock_Free @@ -11000,7 +10966,7 @@ end Gen; pragma @code{Lock_Free} applies to P. @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Lock_Free,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{18b} +@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{189} @section Attribute Loop_Entry @@ -11030,7 +10996,7 @@ entry. This copy is not performed if the loop is not entered, or if the corresponding pragmas are ignored or disabled. @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{18c} +@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{18a} @section Attribute Machine_Size @@ -11040,7 +11006,7 @@ This attribute is identical to the @code{Object_Size} attribute. It is provided for compatibility with the DEC Ada 83 attribute of this name. @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{18d} +@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{18b} @section Attribute Mantissa @@ -11053,7 +11019,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{18e}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{18f} +@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{18c}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{18d} @section Attribute Maximum_Alignment @@ -11069,7 +11035,7 @@ for an object, guaranteeing that it is properly aligned in all cases. @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{190} +@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{18e} @section Attribute Max_Integer_Size @@ -11080,7 +11046,7 @@ prefix) provides the size of the largest supported integer type for the target. The result is a static constant. @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{191} +@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{18f} @section Attribute Mechanism_Code @@ -11111,7 +11077,7 @@ by reference @end table @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{192} +@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{190} @section Attribute Null_Parameter @@ -11136,7 +11102,7 @@ There is no way of indicating this without the @code{Null_Parameter} attribute. @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{142}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{193} +@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{140}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{191} @section Attribute Object_Size @@ -11206,7 +11172,7 @@ Similar additional checks are performed in other contexts requiring statically matching subtypes. @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{194} +@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{192} @section Attribute Old @@ -11221,7 +11187,7 @@ definition are allowed under control of implementation defined pragma @code{Unevaluated_Use_Of_Old}. @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{195} +@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{193} @section Attribute Passed_By_Reference @@ -11237,7 +11203,7 @@ passed by copy in calls. For scalar types, the result is always @code{False} and is static. For non-scalar types, the result is nonstatic. @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{196} +@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{194} @section Attribute Pool_Address @@ -11259,7 +11225,7 @@ For an object created by @code{new}, @code{Ptr.all'Pool_Address} is what is passed to @code{Allocate} and returned from @code{Deallocate}. @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{197} +@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{195} @section Attribute Range_Length @@ -11272,7 +11238,7 @@ applied to the index subtype of a one dimensional array always gives the same result as @code{Length} applied to the array itself. @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{198} +@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{196} @section Attribute Restriction_Set @@ -11342,7 +11308,7 @@ Restrictions pragma, they are not analyzed semantically, so they do not have a type. @node Attribute Result,Attribute Safe_Emax,Attribute Restriction_Set,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{199} +@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{197} @section Attribute Result @@ -11355,7 +11321,7 @@ For a further discussion of the use of this attribute and examples of its use, see the description of pragma Postcondition. @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Result,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{19a} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{198} @section Attribute Safe_Emax @@ -11368,7 +11334,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{19b} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{199} @section Attribute Safe_Large @@ -11381,7 +11347,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{19c} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{19a} @section Attribute Safe_Small @@ -11394,7 +11360,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{150}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19d} +@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{14e}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19b} @section Attribute Scalar_Storage_Order @@ -11557,7 +11523,7 @@ Note that debuggers may be unable to display the correct value of scalar components of a type for which the opposite storage order is specified. @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{e5}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{19e} +@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{e3}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{19c} @section Attribute Simple_Storage_Pool @@ -11620,7 +11586,7 @@ as defined in section 13.11.2 of the Ada Reference Manual, except that the term @emph{simple storage pool} is substituted for @emph{storage pool}. @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{19f} +@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{19d} @section Attribute Small @@ -11636,7 +11602,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute when applied to floating-point types. @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1a0} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{19e} @section Attribute Small_Denominator @@ -11649,7 +11615,7 @@ denominator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1a1} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{19f} @section Attribute Small_Numerator @@ -11662,7 +11628,7 @@ numerator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1a2} +@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1a0} @section Attribute Storage_Unit @@ -11672,7 +11638,7 @@ with coprime factors (i.e. as an irreducible fraction). prefix) provides the same value as @code{System.Storage_Unit}. @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1a3} +@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1a1} @section Attribute Stub_Type @@ -11696,7 +11662,7 @@ unit @code{System.Partition_Interface}. Use of this attribute will create an implicit dependency on this unit. @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1a4} +@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1a2} @section Attribute System_Allocator_Alignment @@ -11713,7 +11679,7 @@ with alignment too large or to enable a realignment circuitry if the alignment request is larger than this value. @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1a5} +@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1a3} @section Attribute Target_Name @@ -11726,7 +11692,7 @@ standard gcc target name without the terminating slash (for example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”). @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1a6} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1a4} @section Attribute To_Address @@ -11749,7 +11715,7 @@ modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on a 32 bits machine). @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1a7} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1a5} @section Attribute To_Any @@ -11759,7 +11725,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1a8} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1a6} @section Attribute Type_Class @@ -11789,7 +11755,7 @@ applies to all concurrent types. This attribute is designed to be compatible with the DEC Ada 83 attribute of the same name. @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1a9} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1a7} @section Attribute Type_Key @@ -11801,7 +11767,7 @@ about the type or subtype. This provides improved compatibility with other implementations that support this attribute. @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1aa} +@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1a8} @section Attribute TypeCode @@ -11811,7 +11777,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1ab} +@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1a9} @section Attribute Unconstrained_Array @@ -11825,7 +11791,7 @@ still static, and yields the result of applying this test to the generic actual. @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1ac} +@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1aa} @section Attribute Universal_Literal_String @@ -11853,7 +11819,7 @@ end; @end example @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ad} +@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ab} @section Attribute Unrestricted_Access @@ -12040,7 +12006,7 @@ In general this is a risky approach. It may appear to “work” but such uses o of GNAT to another, so are best avoided if possible. @node Attribute Update,Attribute Valid_Image,Attribute Unrestricted_Access,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ae} +@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ac} @section Attribute Update @@ -12121,7 +12087,7 @@ A := A'Update ((1, 2) => 20, (3, 4) => 30); which changes element (1,2) to 20 and (3,4) to 30. @node Attribute Valid_Image,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-image}@anchor{1af} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-image}@anchor{1ad} @section Attribute Valid_Image @@ -12133,7 +12099,7 @@ a String, and returns Boolean. @code{T'Valid_Image (S)} returns True if and only if @code{T'Value (S)} would not raise Constraint_Error. @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Image,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1b0} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1ae} @section Attribute Valid_Scalars @@ -12167,7 +12133,7 @@ write a function with a single use of the attribute, and then call that function from multiple places. @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1b1} +@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1af} @section Attribute VADS_Size @@ -12187,7 +12153,7 @@ gives the result that would be obtained by applying the attribute to the corresponding type. @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{15e}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b2} +@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{15c}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b0} @section Attribute Value_Size @@ -12201,7 +12167,7 @@ a value of the given subtype. It is the same as @code{type'Size}, but, unlike @code{Size}, may be set for non-first subtypes. @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1b3} +@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1b1} @section Attribute Wchar_T_Size @@ -12213,7 +12179,7 @@ primarily for constructing the definition of this type in package @code{Interfaces.C}. The result is a static constant. @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1b4} +@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1b2} @section Attribute Word_Size @@ -12224,7 +12190,7 @@ prefix) provides the value @code{System.Word_Size}. The result is a static constant. @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top -@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1b3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1b4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} @chapter Standard and Implementation Defined Restrictions @@ -12253,7 +12219,7 @@ language defined or GNAT-specific, are listed in the following. @end menu @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b7}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1b5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1b6} @section Partition-Wide Restrictions @@ -12323,6 +12289,7 @@ then all compilation units in the partition must obey the restriction). * No_Standard_Storage_Pools:: * No_Stream_Optimizations:: * No_Streams:: +* No_Tagged_Type_Registration:: * No_Task_Allocators:: * No_Task_At_Interrupt_Priority:: * No_Task_Attributes_Package:: @@ -12342,7 +12309,7 @@ then all compilation units in the partition must obey the restriction). @end menu @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1b7} @subsection Immediate_Reclamation @@ -12354,7 +12321,7 @@ deallocation, any storage reserved at run time for an object is immediately reclaimed when the object no longer exists. @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1ba} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1b8} @subsection Max_Asynchronous_Select_Nesting @@ -12366,7 +12333,7 @@ detected at compile time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1bb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1b9} @subsection Max_Entry_Queue_Length @@ -12387,7 +12354,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1bc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1ba} @subsection Max_Protected_Entries @@ -12398,7 +12365,7 @@ bounds of every entry family of a protected unit shall be static, or shall be defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1bd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1bb} @subsection Max_Select_Alternatives @@ -12407,7 +12374,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. [RM D.7] Specifies the maximum number of alternatives in a selective accept. @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1be} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1bc} @subsection Max_Storage_At_Blocking @@ -12418,7 +12385,7 @@ Storage_Size that can be retained by a blocked task. A violation of this restriction causes Storage_Error to be raised. @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1bf} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1bd} @subsection Max_Task_Entries @@ -12431,7 +12398,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1c0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1be} @subsection Max_Tasks @@ -12444,7 +12411,7 @@ time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1c1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1bf} @subsection No_Abort_Statements @@ -12454,7 +12421,7 @@ Storage_Error to be raised. no calls to Task_Identification.Abort_Task. @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1c2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1c0} @subsection No_Access_Parameter_Allocators @@ -12465,7 +12432,7 @@ occurrences of an allocator as the actual parameter to an access parameter. @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1c3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1c1} @subsection No_Access_Subprograms @@ -12475,7 +12442,7 @@ parameter. declarations of access-to-subprogram types. @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1c4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1c2} @subsection No_Allocators @@ -12485,7 +12452,7 @@ declarations of access-to-subprogram types. occurrences of an allocator. @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1c5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1c3} @subsection No_Anonymous_Allocators @@ -12495,7 +12462,7 @@ occurrences of an allocator. occurrences of an allocator of anonymous access type. @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1c6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1c4} @subsection No_Asynchronous_Control @@ -12505,7 +12472,7 @@ occurrences of an allocator of anonymous access type. dependences on the predefined package Asynchronous_Task_Control. @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1c7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1c5} @subsection No_Calendar @@ -12515,7 +12482,7 @@ dependences on the predefined package Asynchronous_Task_Control. dependences on package Calendar. @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1c8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1c6} @subsection No_Coextensions @@ -12525,7 +12492,7 @@ dependences on package Calendar. coextensions. See 3.10.2. @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1c9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1c7} @subsection No_Default_Initialization @@ -12542,7 +12509,7 @@ is to prohibit all cases of variables declared without a specific initializer (including the case of OUT scalar parameters). @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1ca} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1c8} @subsection No_Delay @@ -12552,7 +12519,7 @@ initializer (including the case of OUT scalar parameters). delay statements and no semantic dependences on package Calendar. @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1cb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1c9} @subsection No_Dependence @@ -12562,7 +12529,7 @@ delay statements and no semantic dependences on package Calendar. dependences on a library unit. @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1cc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1ca} @subsection No_Direct_Boolean_Operators @@ -12575,7 +12542,7 @@ protocol requires the use of short-circuit (and then, or else) forms for all composite boolean operations. @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1cd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1cb} @subsection No_Dispatch @@ -12585,7 +12552,7 @@ composite boolean operations. occurrences of @code{T'Class}, for any (tagged) subtype @code{T}. @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1ce} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1cc} @subsection No_Dispatching_Calls @@ -12646,7 +12613,7 @@ end Example; @end example @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1cf} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1cd} @subsection No_Dynamic_Attachment @@ -12665,7 +12632,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1d0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1ce} @subsection No_Dynamic_Priorities @@ -12674,7 +12641,7 @@ warnings on obsolescent features are activated). [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities. @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1d1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1cf} @subsection No_Entry_Calls_In_Elaboration_Code @@ -12686,7 +12653,7 @@ restriction, the compiler can assume that no code past an accept statement in a task can be executed at elaboration time. @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1d2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1d0} @subsection No_Enumeration_Maps @@ -12697,7 +12664,7 @@ enumeration maps are used (that is Image and Value attributes applied to enumeration types). @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1d3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1d1} @subsection No_Exception_Handlers @@ -12722,7 +12689,7 @@ statement generated by the compiler). The Line parameter when nonzero represents the line number in the source program where the raise occurs. @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1d4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1d2} @subsection No_Exception_Propagation @@ -12739,7 +12706,7 @@ the package GNAT.Current_Exception is not permitted, and reraise statements (raise with no operand) are not permitted. @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1d5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1d3} @subsection No_Exception_Registration @@ -12753,7 +12720,7 @@ code is simplified by omitting the otherwise-required global registration of exceptions when they are declared. @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1d6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1d4} @subsection No_Exceptions @@ -12764,7 +12731,7 @@ raise statements and no exception handlers and also suppresses the generation of language-defined run-time checks. @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1d7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1d5} @subsection No_Finalization @@ -12805,7 +12772,7 @@ object or a nested component, either declared on the stack or on the heap. The deallocation of a controlled object no longer finalizes its contents. @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1d8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1d6} @subsection No_Fixed_Point @@ -12815,7 +12782,7 @@ deallocation of a controlled object no longer finalizes its contents. occurrences of fixed point types and operations. @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1d9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1d7} @subsection No_Floating_Point @@ -12825,7 +12792,7 @@ occurrences of fixed point types and operations. occurrences of floating point types and operations. @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1da} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1d8} @subsection No_Implicit_Conditionals @@ -12841,7 +12808,7 @@ normal manner. Constructs generating implicit conditionals include comparisons of composite objects and the Max/Min attributes. @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1db} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1d9} @subsection No_Implicit_Dynamic_Code @@ -12871,7 +12838,7 @@ foreign-language convention; primitive operations of nested tagged types. @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1dc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1da} @subsection No_Implicit_Heap_Allocations @@ -12880,7 +12847,7 @@ types. [RM D.7] No constructs are allowed to cause implicit heap allocation. @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1dd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1db} @subsection No_Implicit_Protected_Object_Allocations @@ -12890,7 +12857,7 @@ types. protected object. @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1de} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1dc} @subsection No_Implicit_Task_Allocations @@ -12899,7 +12866,7 @@ protected object. [GNAT] No constructs are allowed to cause implicit heap allocation of a task. @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1df} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1dd} @subsection No_Initialize_Scalars @@ -12911,7 +12878,7 @@ code, and in particular eliminates dummy null initialization routines that are otherwise generated for some record and array types. @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1e0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1de} @subsection No_IO @@ -12922,7 +12889,7 @@ dependences on any of the library units Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO. @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1e1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1df} @subsection No_Local_Allocators @@ -12933,7 +12900,7 @@ occurrences of an allocator in subprograms, generic subprograms, tasks, and entry bodies. @node No_Local_Protected_Objects,No_Local_Timing_Events,No_Local_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e0} @subsection No_Local_Protected_Objects @@ -12943,7 +12910,7 @@ and entry bodies. only declared at the library level. @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Protected_Objects,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e1} @subsection No_Local_Timing_Events @@ -12953,7 +12920,7 @@ only declared at the library level. declared at the library level. @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e2} @subsection No_Long_Long_Integers @@ -12965,7 +12932,7 @@ implicit base type is Long_Long_Integer, and modular types whose size exceeds Long_Integer’Size. @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e3} @subsection No_Multiple_Elaboration @@ -12981,7 +12948,7 @@ possible, including non-Ada main programs and Stand Alone libraries, are not permitted and will be diagnosed by the binder. @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e4} @subsection No_Nested_Finalization @@ -12990,7 +12957,7 @@ permitted and will be diagnosed by the binder. [RM D.7] All objects requiring finalization are declared at the library level. @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e5} @subsection No_Protected_Type_Allocators @@ -13000,7 +12967,7 @@ permitted and will be diagnosed by the binder. expressions that attempt to allocate protected objects. @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e6} @subsection No_Protected_Types @@ -13010,7 +12977,7 @@ expressions that attempt to allocate protected objects. declarations of protected types or protected objects. @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e7} @subsection No_Recursion @@ -13020,7 +12987,7 @@ declarations of protected types or protected objects. part of its execution. @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1ea} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1e8} @subsection No_Reentrancy @@ -13030,7 +12997,7 @@ part of its execution. two tasks at the same time. @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1eb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1e9} @subsection No_Relative_Delay @@ -13041,7 +13008,7 @@ relative statements and prevents expressions such as @code{delay 1.23;} from appearing in source code. @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1ec} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1ea} @subsection No_Requeue_Statements @@ -13059,7 +13026,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on oNobsolescent features are activated). @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1ed} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1eb} @subsection No_Secondary_Stack @@ -13072,7 +13039,7 @@ stack is used to implement functions returning unconstrained objects secondary stacks for tasks (excluding the environment task) at run time. @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ee} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ec} @subsection No_Select_Statements @@ -13082,7 +13049,7 @@ secondary stacks for tasks (excluding the environment task) at run time. kind are permitted, that is the keyword @code{select} may not appear. @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ef} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ed} @subsection No_Specific_Termination_Handlers @@ -13092,7 +13059,7 @@ kind are permitted, that is the keyword @code{select} may not appear. or to Ada.Task_Termination.Specific_Handler. @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1f0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1ee} @subsection No_Specification_of_Aspect @@ -13103,7 +13070,7 @@ specification, attribute definition clause, or pragma is given for a given aspect. @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1f1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1ef} @subsection No_Standard_Allocators_After_Elaboration @@ -13115,7 +13082,7 @@ library items of the partition has completed. Otherwise, Storage_Error is raised. @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f0} @subsection No_Standard_Storage_Pools @@ -13127,7 +13094,7 @@ have an explicit Storage_Pool attribute defined specifying a user-defined storage pool. @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f1} @subsection No_Stream_Optimizations @@ -13139,8 +13106,8 @@ compiler uses block reads and writes when manipulating @code{String} objects due to their superior performance. When this restriction is in effect, the compiler performs all IO operations on a per-character basis. -@node No_Streams,No_Task_Allocators,No_Stream_Optimizations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f4} +@node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f2} @subsection No_Streams @@ -13160,8 +13127,23 @@ To take maximum advantage of this space-saving optimization, any unit declaring a tagged type should be compiled with the restriction, though this is not required. -@node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Streams,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f5} +@node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{1f3} +@subsection No_Tagged_Type_Registration + + +@geindex No_Tagged_Type_Registration + +[GNAT] If this restriction is active, then class-wide streaming +attributes are not supported. In addition, the subprograms in +Ada.Tags are not supported. +If this restriction is active, the generated code is simplified by +omitting the otherwise-required global registration of tagged types when they +are declared. This restriction may be necessary in order to also apply +the No_Elaboration_Code restriction. + +@node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f4} @subsection No_Task_Allocators @@ -13171,7 +13153,7 @@ though this is not required. or types containing task subcomponents. @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f5} @subsection No_Task_At_Interrupt_Priority @@ -13183,7 +13165,7 @@ a consequence, the tasks are always created with a priority below that an interrupt priority. @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f6} @subsection No_Task_Attributes_Package @@ -13200,7 +13182,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f7} @subsection No_Task_Hierarchy @@ -13210,7 +13192,7 @@ warnings on obsolescent features are activated). directly on the environment task of the partition. @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f8} @subsection No_Task_Termination @@ -13219,7 +13201,7 @@ directly on the environment task of the partition. [RM D.7] Tasks that terminate are erroneous. @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1fa} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1f9} @subsection No_Tasking @@ -13232,7 +13214,7 @@ and cause an error message to be output either by the compiler or binder. @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fa} @subsection No_Terminate_Alternatives @@ -13241,7 +13223,7 @@ binder. [RM D.7] There are no selective accepts with terminate alternatives. @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fb} @subsection No_Unchecked_Access @@ -13251,7 +13233,7 @@ binder. occurrences of the Unchecked_Access attribute. @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fc} @subsection No_Unchecked_Conversion @@ -13261,7 +13243,7 @@ occurrences of the Unchecked_Access attribute. dependences on the predefined generic function Unchecked_Conversion. @node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fe} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fd} @subsection No_Unchecked_Deallocation @@ -13271,7 +13253,7 @@ dependences on the predefined generic function Unchecked_Conversion. dependences on the predefined generic procedure Unchecked_Deallocation. @node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1ff} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1fe} @subsection No_Use_Of_Entity @@ -13291,7 +13273,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line @end example @node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{200} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{1ff} @subsection Pure_Barriers @@ -13342,7 +13324,7 @@ but still ensures absence of side effects, exceptions, and recursion during the evaluation of the barriers. @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{201} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{200} @subsection Simple_Barriers @@ -13361,7 +13343,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{202} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{201} @subsection Static_Priorities @@ -13372,7 +13354,7 @@ are static, and that there are no dependences on the package @code{Ada.Dynamic_Priorities}. @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{203} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{202} @subsection Static_Storage_Size @@ -13382,7 +13364,7 @@ are static, and that there are no dependences on the package in a Storage_Size pragma or attribute definition clause is static. @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{204}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{205} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{203}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{204} @section Program Unit Level Restrictions @@ -13413,7 +13395,7 @@ other compilation units in the partition. @end menu @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{206} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{205} @subsection No_Elaboration_Code @@ -13469,7 +13451,7 @@ associated with the unit. This counter is typically used to check for access before elaboration and to control multiple elaboration attempts. @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{207} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{206} @subsection No_Dynamic_Accessibility_Checks @@ -13518,7 +13500,7 @@ In all other cases, the level of T is as defined by the existing rules of Ada. @end itemize @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{208} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{207} @subsection No_Dynamic_Sized_Objects @@ -13536,7 +13518,7 @@ access discriminants. It is often a good idea to combine this restriction with No_Secondary_Stack. @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{209} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{208} @subsection No_Entry_Queue @@ -13549,7 +13531,7 @@ checked at compile time. A program execution is erroneous if an attempt is made to queue a second task on such an entry. @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{20a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{209} @subsection No_Implementation_Aspect_Specifications @@ -13560,7 +13542,7 @@ GNAT-defined aspects are present. With this restriction, the only aspects that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{20b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{20a} @subsection No_Implementation_Attributes @@ -13572,7 +13554,7 @@ attributes that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20b} @subsection No_Implementation_Identifiers @@ -13583,7 +13565,7 @@ implementation-defined identifiers (marked with pragma Implementation_Defined) occur within language-defined packages. @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20c} @subsection No_Implementation_Pragmas @@ -13594,7 +13576,7 @@ GNAT-defined pragmas are present. With this restriction, the only pragmas that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20d} @subsection No_Implementation_Restrictions @@ -13606,7 +13588,7 @@ are present. With this restriction, the only other restriction identifiers that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20e} @subsection No_Implementation_Units @@ -13617,7 +13599,7 @@ mention in the context clause of any implementation-defined descendants of packages Ada, Interfaces, or System. @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{210} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{20f} @subsection No_Implicit_Aliasing @@ -13632,7 +13614,7 @@ to be aliased, and in such cases, it can always be replaced by the standard attribute Unchecked_Access which is preferable. @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{211} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{210} @subsection No_Implicit_Loops @@ -13649,7 +13631,7 @@ arrays larger than about 5000 scalar components. Note that if this restriction is set in the spec of a package, it will not apply to its body. @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{212} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{211} @subsection No_Obsolescent_Features @@ -13659,7 +13641,7 @@ is set in the spec of a package, it will not apply to its body. features are used, as defined in Annex J of the Ada Reference Manual. @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{213} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{212} @subsection No_Wide_Characters @@ -13673,7 +13655,7 @@ appear in the program (that is literals representing characters not in type @code{Character}). @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{214} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{213} @subsection Static_Dispatch_Tables @@ -13683,7 +13665,7 @@ type @code{Character}). associated with dispatch tables can be placed in read-only memory. @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{215} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{214} @subsection SPARK_05 @@ -13706,7 +13688,7 @@ gnatprove -P project.gpr --mode=check_all @end example @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top -@anchor{gnat_rm/implementation_advice doc}@anchor{216}@anchor{gnat_rm/implementation_advice id1}@anchor{217}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} +@anchor{gnat_rm/implementation_advice doc}@anchor{215}@anchor{gnat_rm/implementation_advice id1}@anchor{216}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} @chapter Implementation Advice @@ -13804,7 +13786,7 @@ case the text describes what GNAT does and why. @end menu @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{218} +@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{217} @section RM 1.1.3(20): Error Detection @@ -13821,7 +13803,7 @@ or diagnosed at compile time. @geindex Child Units @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{219} +@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{218} @section RM 1.1.3(31): Child Units @@ -13837,7 +13819,7 @@ Followed. @geindex Bounded errors @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{21a} +@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{219} @section RM 1.1.5(12): Bounded Errors @@ -13854,7 +13836,7 @@ runtime. @geindex Pragmas @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice -@anchor{gnat_rm/implementation_advice id2}@anchor{21b}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21c} +@anchor{gnat_rm/implementation_advice id2}@anchor{21a}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21b} @section RM 2.8(16): Pragmas @@ -13967,7 +13949,7 @@ that this advice not be followed. For details see @ref{7,,Implementation Defined Pragmas}. @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21d} +@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21c} @section RM 2.8(17-19): Pragmas @@ -13988,14 +13970,14 @@ replacing @code{library_items}.” @end itemize @end quotation -See @ref{21c,,RM 2.8(16); Pragmas}. +See @ref{21b,,RM 2.8(16); Pragmas}. @geindex Character Sets @geindex Alternative Character Sets @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21e} +@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21d} @section RM 3.5.2(5): Alternative Character Sets @@ -14023,7 +14005,7 @@ there is no such restriction. @geindex Integer types @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21f} +@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21e} @section RM 3.5.4(28): Integer Types @@ -14042,7 +14024,7 @@ are supported for convenient interface to C, and so that all hardware types of the machine are easily available. @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{220} +@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{21f} @section RM 3.5.4(29): Integer Types @@ -14058,7 +14040,7 @@ Followed. @geindex Enumeration values @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{221} +@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{220} @section RM 3.5.5(8): Enumeration Values @@ -14078,7 +14060,7 @@ Followed. @geindex Float types @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{222} +@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{221} @section RM 3.5.7(17): Float Types @@ -14108,7 +14090,7 @@ is a software rather than a hardware format. @geindex multidimensional @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{223} +@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{222} @section RM 3.6.2(11): Multidimensional Arrays @@ -14126,7 +14108,7 @@ Followed. @geindex Duration'Small @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{224} +@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{223} @section RM 9.6(30-31): Duration’Small @@ -14147,7 +14129,7 @@ it need not be the same time base as used for @code{Calendar.Clock}.” Followed. @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{225} +@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{224} @section RM 10.2.1(12): Consistent Representation @@ -14169,7 +14151,7 @@ advice without severely impacting efficiency of execution. @geindex Exception information @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{226} +@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{225} @section RM 11.4.1(19): Exception Information @@ -14200,7 +14182,7 @@ Pragma @code{Discard_Names}. @geindex suppression of @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{227} +@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{226} @section RM 11.5(28): Suppression of Checks @@ -14215,7 +14197,7 @@ Followed. @geindex Representation clauses @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{228} +@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{227} @section RM 13.1 (21-24): Representation Clauses @@ -14264,7 +14246,7 @@ Followed. @geindex Packed types @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{229} +@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{228} @section RM 13.2(6-8): Packed Types @@ -14303,7 +14285,7 @@ Followed. @geindex Address clauses @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{22a} +@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{229} @section RM 13.3(14-19): Address Clauses @@ -14356,7 +14338,7 @@ Followed. @geindex Alignment clauses @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{22b} +@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{22a} @section RM 13.3(29-35): Alignment Clauses @@ -14413,7 +14395,7 @@ Followed. @geindex Size clauses @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22c} +@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22b} @section RM 13.3(42-43): Size Clauses @@ -14431,7 +14413,7 @@ object’s @code{Alignment} (if the @code{Alignment} is nonzero).” Followed. @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22d} +@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22c} @section RM 13.3(50-56): Size Clauses @@ -14482,7 +14464,7 @@ Followed. @geindex Component_Size clauses @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22e} +@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22d} @section RM 13.3(71-73): Component Size Clauses @@ -14516,7 +14498,7 @@ Followed. @geindex enumeration @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22f} +@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22e} @section RM 13.4(9-10): Enumeration Representation Clauses @@ -14538,7 +14520,7 @@ Followed. @geindex records @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{230} +@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{22f} @section RM 13.5.1(17-22): Record Representation Clauses @@ -14598,7 +14580,7 @@ and all mentioned features are implemented. @geindex Storage place attributes @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{231} +@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{230} @section RM 13.5.2(5): Storage Place Attributes @@ -14618,7 +14600,7 @@ Followed. There are no such components in GNAT. @geindex Bit ordering @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{232} +@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{231} @section RM 13.5.3(7-8): Bit Ordering @@ -14638,7 +14620,7 @@ Thus non-default bit ordering is not supported. @geindex as private type @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{233} +@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{232} @section RM 13.7(37): Address as Private @@ -14656,7 +14638,7 @@ Followed. @geindex operations of @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{234} +@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{233} @section RM 13.7.1(16): Address Operations @@ -14674,7 +14656,7 @@ operation raises @code{Program_Error}, since all operations make sense. @geindex Unchecked conversion @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{235} +@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{234} @section RM 13.9(14-17): Unchecked Conversion @@ -14718,7 +14700,7 @@ Followed. @geindex implicit @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{236} +@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{235} @section RM 13.11(23-25): Implicit Heap Usage @@ -14769,7 +14751,7 @@ Followed. @geindex Unchecked deallocation @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{237} +@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{236} @section RM 13.11.2(17): Unchecked Deallocation @@ -14784,7 +14766,7 @@ Followed. @geindex Stream oriented attributes @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{238} +@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{237} @section RM 13.13.2(1.6): Stream Oriented Attributes @@ -14815,7 +14797,7 @@ scalar types. This XDR alternative can be enabled via the binder switch -xdr. @geindex Stream oriented attributes @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{239} +@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{238} @section RM A.1(52): Names of Predefined Numeric Types @@ -14833,7 +14815,7 @@ Followed. @geindex Ada.Characters.Handling @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{23a} +@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{239} @section RM A.3.2(49): @code{Ada.Characters.Handling} @@ -14850,7 +14832,7 @@ Followed. GNAT provides no such localized definitions. @geindex Bounded-length strings @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{23b} +@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{23a} @section RM A.4.4(106): Bounded-Length String Handling @@ -14865,7 +14847,7 @@ Followed. No implicit pointers or dynamic allocation are used. @geindex Random number generation @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23c} +@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23b} @section RM A.5.2(46-47): Random Number Generation @@ -14894,7 +14876,7 @@ condition here to hold true. @geindex Get_Immediate @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23d} +@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23c} @section RM A.10.7(23): @code{Get_Immediate} @@ -14918,7 +14900,7 @@ this functionality. @geindex Containers @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{23e} +@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{23d} @section RM A.18: @code{Containers} @@ -14939,7 +14921,7 @@ follow the implementation advice. @geindex Export @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23f} +@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23e} @section RM B.1(39-41): Pragma @code{Export} @@ -14987,7 +14969,7 @@ Followed. @geindex Interfaces @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{240} +@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{23f} @section RM B.2(12-13): Package @code{Interfaces} @@ -15017,7 +14999,7 @@ Followed. GNAT provides all the packages described in this section. @geindex interfacing with @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{241} +@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{240} @section RM B.3(63-71): Interfacing with C @@ -15105,7 +15087,7 @@ Followed. @geindex interfacing with @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{242} +@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{241} @section RM B.4(95-98): Interfacing with COBOL @@ -15146,7 +15128,7 @@ Followed. @geindex interfacing with @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{243} +@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{242} @section RM B.5(22-26): Interfacing with Fortran @@ -15197,7 +15179,7 @@ Followed. @geindex Machine operations @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{244} +@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{243} @section RM C.1(3-5): Access to Machine Operations @@ -15232,7 +15214,7 @@ object that is specified as exported.” Followed. @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{245} +@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{244} @section RM C.1(10-16): Access to Machine Operations @@ -15293,7 +15275,7 @@ Followed on any target supporting such operations. @geindex Interrupt support @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{246} +@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{245} @section RM C.3(28): Interrupt Support @@ -15311,7 +15293,7 @@ of interrupt blocking. @geindex Protected procedure handlers @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{247} +@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{246} @section RM C.3.1(20-21): Protected Procedure Handlers @@ -15337,7 +15319,7 @@ Followed. Compile time warnings are given when possible. @geindex Interrupts @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{248} +@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{247} @section RM C.3.2(25): Package @code{Interrupts} @@ -15355,7 +15337,7 @@ Followed. @geindex Pre-elaboration requirements @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{249} +@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{248} @section RM C.4(14): Pre-elaboration Requirements @@ -15371,7 +15353,7 @@ Followed. Executable code is generated in some cases, e.g., loops to initialize large arrays. @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{24a} +@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{249} @section RM C.5(8): Pragma @code{Discard_Names} @@ -15389,7 +15371,7 @@ Followed. @geindex Task_Attributes @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{24b} +@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{24a} @section RM C.7.2(30): The Package Task_Attributes @@ -15410,7 +15392,7 @@ Not followed. This implementation is not targeted to such a domain. @geindex Locking Policies @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{24c} +@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{24b} @section RM D.3(17): Locking Policies @@ -15427,7 +15409,7 @@ whose names (@code{Inheritance_Locking} and @geindex Entry queuing policies @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24d} +@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24c} @section RM D.4(16): Entry Queuing Policies @@ -15442,7 +15424,7 @@ Followed. No such implementation-defined queuing policies exist. @geindex Preemptive abort @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24e} +@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24d} @section RM D.6(9-10): Preemptive Abort @@ -15468,7 +15450,7 @@ Followed. @geindex Tasking restrictions @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24f} +@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24e} @section RM D.7(21): Tasking Restrictions @@ -15487,7 +15469,7 @@ pragma @code{Profile (Restricted)} for more details. @geindex monotonic @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{250} +@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{24f} @section RM D.8(47-49): Monotonic Time @@ -15522,7 +15504,7 @@ Followed. @geindex PCS @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{251} +@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{250} @section RM E.5(28-29): Partition Communication Subsystem @@ -15550,7 +15532,7 @@ GNAT. @geindex COBOL support @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{252} +@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{251} @section RM F(7): COBOL Support @@ -15570,7 +15552,7 @@ Followed. @geindex Decimal radix support @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{253} +@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{252} @section RM F.1(2): Decimal Radix Support @@ -15586,7 +15568,7 @@ representations. @geindex Numerics @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{254} +@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{253} @section RM G: Numerics @@ -15606,7 +15588,7 @@ Followed. @geindex Complex types @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{255} +@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{254} @section RM G.1.1(56-58): Complex Types @@ -15668,7 +15650,7 @@ Followed. @geindex Complex elementary functions @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{256} +@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{255} @section RM G.1.2(49): Complex Elementary Functions @@ -15690,7 +15672,7 @@ Followed. @geindex Accuracy requirements @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{257} +@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{256} @section RM G.2.4(19): Accuracy Requirements @@ -15714,7 +15696,7 @@ Followed. @geindex complex arithmetic @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{258} +@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{257} @section RM G.2.6(15): Complex Arithmetic Accuracy @@ -15732,7 +15714,7 @@ Followed. @geindex Sequential elaboration policy @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{259} +@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{258} @section RM H.6(15/2): Pragma Partition_Elaboration_Policy @@ -15747,7 +15729,7 @@ immediately terminated.” Not followed. @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top -@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{25a}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{25b}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} +@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{259}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{25a}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} @chapter Implementation Defined Characteristics @@ -16616,7 +16598,7 @@ See separate section on data representations. such aspects and the legality rules for such aspects. See 13.1.1(38).” @end itemize -See @ref{121,,Implementation Defined Aspects}. +See @ref{11f,,Implementation Defined Aspects}. @itemize * @@ -17077,7 +17059,7 @@ When the @code{Pattern} parameter is not the null string, it is interpreted according to the syntax of regular expressions as defined in the @code{GNAT.Regexp} package. -See @ref{25c,,GNAT.Regexp (g-regexp.ads)}. +See @ref{25b,,GNAT.Regexp (g-regexp.ads)}. @itemize * @@ -18215,7 +18197,7 @@ Information on those subjects is not yet available. Execution is erroneous in that case. @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top -@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} +@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} @chapter Intrinsic Subprograms @@ -18253,7 +18235,7 @@ Ada standard does not require Ada compilers to implement this feature. @end menu @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25f}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{260} +@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25f} @section Intrinsic Operators @@ -18284,7 +18266,7 @@ It is also possible to specify such operators for private types, if the full views are appropriate arithmetic types. @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{261}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{262} +@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{260}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{261} @section Compilation_ISO_Date @@ -18298,7 +18280,7 @@ application program should simply call the function the current compilation (in local time format YYYY-MM-DD). @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{263}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{264} +@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{262}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{263} @section Compilation_Date @@ -18308,7 +18290,7 @@ Same as Compilation_ISO_Date, except the string is in the form MMM DD YYYY. @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{265}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{266} +@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{265} @section Compilation_Time @@ -18322,7 +18304,7 @@ application program should simply call the function the current compilation (in local time format HH:MM:SS). @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{267}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{268} +@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{267} @section Enclosing_Entity @@ -18336,7 +18318,7 @@ application program should simply call the function the current subprogram, package, task, entry, or protected subprogram. @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{269}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{26a} +@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{268}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{269} @section Exception_Information @@ -18350,7 +18332,7 @@ so an application program should simply call the function the exception information associated with the current exception. @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{26b}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26c} +@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{26a}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26b} @section Exception_Message @@ -18364,7 +18346,7 @@ so an application program should simply call the function the message associated with the current exception. @node Exception_Name,File,Exception_Message,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26d}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26e} +@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26c}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26d} @section Exception_Name @@ -18378,7 +18360,7 @@ so an application program should simply call the function the name of the current exception. @node File,Line,Exception_Name,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{270} +@anchor{gnat_rm/intrinsic_subprograms file}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26f} @section File @@ -18392,7 +18374,7 @@ application program should simply call the function file. @node Line,Shifts and Rotates,File,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{272} +@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{271} @section Line @@ -18406,7 +18388,7 @@ application program should simply call the function source line. @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{273}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{274} +@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{273} @section Shifts and Rotates @@ -18449,7 +18431,7 @@ corresponding operator for modular type. In particular, shifting a negative number may change its sign bit to positive. @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{275}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{276} +@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{275} @section Source_Location @@ -18463,7 +18445,7 @@ application program should simply call the function source file location. @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top -@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} +@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} @chapter Representation Clauses and Pragmas @@ -18509,7 +18491,7 @@ and this section describes the additional capabilities provided. @end menu @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{279}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{27a} +@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{279} @section Alignment Clauses @@ -18531,7 +18513,7 @@ For elementary types, the alignment is the minimum of the actual size of objects of the type divided by @code{Storage_Unit}, and the maximum alignment supported by the target. (This maximum alignment is given by the GNAT-specific attribute -@code{Standard'Maximum_Alignment}; see @ref{18e,,Attribute Maximum_Alignment}.) +@code{Standard'Maximum_Alignment}; see @ref{18c,,Attribute Maximum_Alignment}.) @geindex Maximum_Alignment attribute @@ -18640,7 +18622,7 @@ assumption is non-portable, and other compilers may choose different alignments for the subtype @code{RS}. @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{27b}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27c} +@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{27a}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27b} @section Size Clauses @@ -18717,7 +18699,7 @@ if it is known that a Size value can be accommodated in an object of type Integer. @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27d}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27e} +@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27c}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27d} @section Storage_Size Clauses @@ -18790,7 +18772,7 @@ Of course in practice, there will not be any explicit allocators in the case of such an access declaration. @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27f}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{280} +@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27e}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27f} @section Size of Variant Record Objects @@ -18900,7 +18882,7 @@ the maximum size, regardless of the current variant value, the variant value. @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{281}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{282} +@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{280}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{281} @section Biased Representation @@ -18938,7 +18920,7 @@ biased representation can be used for all discrete types except for enumeration types for which a representation clause is given. @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{283}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{284} +@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{282}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{283} @section Value_Size and Object_Size Clauses @@ -19254,7 +19236,7 @@ definition clause forces biased representation. This warning can be turned off using @code{-gnatw.B}. @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{285}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{286} +@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{284}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{285} @section Component_Size Clauses @@ -19302,7 +19284,7 @@ and a pragma Pack for the same array type. if such duplicate clauses are given, the pragma Pack will be ignored. @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{287}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{288} +@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{286}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{287} @section Bit_Order Clauses @@ -19408,7 +19390,7 @@ if desired. The following section contains additional details regarding the issue of byte ordering. @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{28a} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{289} @section Effect of Bit_Order on Byte Ordering @@ -19665,7 +19647,7 @@ to set the boolean constant @code{Master_Byte_First} in an appropriate manner. @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{28c} +@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{28b} @section Pragma Pack for Arrays @@ -19785,7 +19767,7 @@ Here 31-bit packing is achieved as required, and no warning is generated, since in this case the programmer intention is clear. @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28d}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28e} +@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28d} @section Pragma Pack for Records @@ -19869,7 +19851,7 @@ array that is longer than 64 bits, so it is itself non-packable on boundary, and takes an integral number of bytes, i.e., 72 bits. @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28f}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{290} +@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28f} @section Record Representation Clauses @@ -19948,7 +19930,7 @@ end record; @end example @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{291}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{292} +@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{291} @section Handling of Records with Holes @@ -20024,7 +20006,7 @@ for Hrec'Size use 64; @end example @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{293}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{294} +@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{293} @section Enumeration Clauses @@ -20067,7 +20049,7 @@ the overhead of converting representation values to the corresponding positional values, (i.e., the value delivered by the @code{Pos} attribute). @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{296} +@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{295} @section Address Clauses @@ -20396,7 +20378,7 @@ then the program compiles without the warning and when run will generate the output @code{X was not clobbered}. @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{298} +@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{297} @section Use of Address Clauses for Memory-Mapped I/O @@ -20454,7 +20436,7 @@ provides the pragma @code{Volatile_Full_Access} which can be used in lieu of pragma @code{Atomic} and will give the additional guarantee. @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{29a} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{299} @section Effect of Convention on Representation @@ -20532,7 +20514,7 @@ when one of these values is read, any nonzero value is treated as True. @end itemize @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29c} +@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29b} @section Conventions and Anonymous Access Types @@ -20608,7 +20590,7 @@ package ConvComp is @end example @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29d}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29e} +@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29d} @section Determining the Representations chosen by GNAT @@ -20760,7 +20742,7 @@ generated by the compiler into the original source to fix and guarantee the actual representation to be used. @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top -@anchor{gnat_rm/standard_library_routines doc}@anchor{29f}@anchor{gnat_rm/standard_library_routines id1}@anchor{2a0}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} +@anchor{gnat_rm/standard_library_routines doc}@anchor{29e}@anchor{gnat_rm/standard_library_routines id1}@anchor{29f}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} @chapter Standard Library Routines @@ -21584,7 +21566,7 @@ For packages in Interfaces and System, all the RM defined packages are available in GNAT, see the Ada 2012 RM for full details. @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top -@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} +@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} @chapter The Implementation of Standard I/O @@ -21636,7 +21618,7 @@ these additional facilities are also described in this chapter. @end menu @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a3}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a3} @section Standard I/O Packages @@ -21707,7 +21689,7 @@ flush the common I/O streams and in particular Standard_Output before elaborating the Ada code. @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a5}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a6} +@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a5} @section FORM Strings @@ -21733,7 +21715,7 @@ unrecognized keyword appears in a form string, it is silently ignored and not considered invalid. @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a7}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a8} +@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a7} @section Direct_IO @@ -21753,7 +21735,7 @@ There is no limit on the size of Direct_IO files, they are expanded as necessary to accommodate whatever records are written to the file. @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a9}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2aa} +@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2a9} @section Sequential_IO @@ -21800,7 +21782,7 @@ using Stream_IO, and this is the preferred mechanism. In particular, the above program fragment rewritten to use Stream_IO will work correctly. @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2ab}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ac} +@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ab} @section Text_IO @@ -21883,7 +21865,7 @@ the file. @end menu @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ad}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ae} +@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ad} @subsection Stream Pointer Positioning @@ -21919,7 +21901,7 @@ between two Ada files, then the difference may be observable in some situations. @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2af}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2b0} +@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2af} @subsection Reading and Writing Non-Regular Files @@ -21970,7 +21952,7 @@ to read data past that end of file indication, until another end of file indication is entered. @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2b1}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b2} +@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b1} @subsection Get_Immediate @@ -21988,7 +21970,7 @@ possible), it is undefined whether the FF character will be treated as a page mark. @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b3} @subsection Treating Text_IO Files as Streams @@ -22004,7 +21986,7 @@ skipped and the effect is similar to that described above for @code{Get_Immediate}. @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b5} @subsection Text_IO Extensions @@ -22032,7 +22014,7 @@ the string is to be read. @end itemize @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b8} +@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b7} @subsection Text_IO Facilities for Unbounded Strings @@ -22080,7 +22062,7 @@ files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings. @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2ba} +@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2b9} @section Wide_Text_IO @@ -22327,12 +22309,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2bc} +@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2bb} @subsection Stream Pointer Positioning @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2ac,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2ab,,Text_IO}). There is one additional case: If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22351,7 +22333,7 @@ to a normal program using @code{Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2be} +@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2bd} @subsection Reading and Writing Non-Regular Files @@ -22362,7 +22344,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2c0} +@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2bf} @section Wide_Wide_Text_IO @@ -22531,12 +22513,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2c2} +@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2c1} @subsection Stream Pointer Positioning @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2ac,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2ab,,Text_IO}). There is one additional case: If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22555,7 +22537,7 @@ to a normal program using @code{Wide_Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c3} @subsection Reading and Writing Non-Regular Files @@ -22566,7 +22548,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c5} @section Stream_IO @@ -22588,7 +22570,7 @@ manner described for stream attributes. @end itemize @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c8} +@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c7} @section Text Translation @@ -22622,7 +22604,7 @@ mode. (corresponds to_O_U16TEXT). @end itemize @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2ca} +@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c9} @section Shared Files @@ -22685,7 +22667,7 @@ heterogeneous input-output. Although this approach will work in GNAT if for this purpose (using the stream attributes) @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2cc} +@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2cb} @section Filenames encoding @@ -22725,7 +22707,7 @@ platform. On the other Operating Systems the run-time is supporting UTF-8 natively. @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2ce} +@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cd} @section File content encoding @@ -22758,7 +22740,7 @@ Unicode 8-bit encoding This encoding is only supported on the Windows platform. @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2d0} +@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2cf} @section Open Modes @@ -22861,7 +22843,7 @@ subsequently requires switching from reading to writing or vice-versa, then the file is reopened in @code{r+} mode to permit the required operation. @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2d2} +@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2d1} @section Operations on C Streams @@ -23021,7 +23003,7 @@ end Interfaces.C_Streams; @end example @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d3} @section Interfacing to C Streams @@ -23114,7 +23096,7 @@ imported from a C program, allowing an Ada file to operate on an existing C file. @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top -@anchor{gnat_rm/the_gnat_library doc}@anchor{2d5}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d6}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} +@anchor{gnat_rm/the_gnat_library doc}@anchor{2d4}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d5}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} @chapter The GNAT Library @@ -23308,7 +23290,7 @@ of GNAT, and will generate a warning message. @end menu @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d7}@anchor{gnat_rm/the_gnat_library id2}@anchor{2d8} +@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d6}@anchor{gnat_rm/the_gnat_library id2}@anchor{2d7} @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads}) @@ -23325,7 +23307,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d9}@anchor{gnat_rm/the_gnat_library id3}@anchor{2da} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d8}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d9} @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads}) @@ -23342,7 +23324,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2db}@anchor{gnat_rm/the_gnat_library id4}@anchor{2dc} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2da}@anchor{gnat_rm/the_gnat_library id4}@anchor{2db} @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila1.ads}) @@ -23359,7 +23341,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2dd}@anchor{gnat_rm/the_gnat_library id5}@anchor{2de} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2dc}@anchor{gnat_rm/the_gnat_library id5}@anchor{2dd} @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads}) @@ -23376,7 +23358,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2df}@anchor{gnat_rm/the_gnat_library id6}@anchor{2e0} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2de}@anchor{gnat_rm/the_gnat_library id6}@anchor{2df} @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads}) @@ -23393,7 +23375,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2e1}@anchor{gnat_rm/the_gnat_library id7}@anchor{2e2} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2e0}@anchor{gnat_rm/the_gnat_library id7}@anchor{2e1} @section @code{Ada.Containers.Formal_Doubly_Linked_Lists} (@code{a-cfdlli.ads}) @@ -23412,7 +23394,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e3}@anchor{gnat_rm/the_gnat_library id8}@anchor{2e4} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e2}@anchor{gnat_rm/the_gnat_library id8}@anchor{2e3} @section @code{Ada.Containers.Formal_Hashed_Maps} (@code{a-cfhama.ads}) @@ -23431,7 +23413,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e5}@anchor{gnat_rm/the_gnat_library id9}@anchor{2e6} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e4}@anchor{gnat_rm/the_gnat_library id9}@anchor{2e5} @section @code{Ada.Containers.Formal_Hashed_Sets} (@code{a-cfhase.ads}) @@ -23450,7 +23432,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e7}@anchor{gnat_rm/the_gnat_library id10}@anchor{2e8} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id10}@anchor{2e7} @section @code{Ada.Containers.Formal_Ordered_Maps} (@code{a-cforma.ads}) @@ -23469,7 +23451,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Ordered_Maps a-cforma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e9}@anchor{gnat_rm/the_gnat_library id11}@anchor{2ea} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e9} @section @code{Ada.Containers.Formal_Ordered_Sets} (@code{a-cforse.ads}) @@ -23488,7 +23470,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Formal_Ordered_Sets a-cforse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2eb}@anchor{gnat_rm/the_gnat_library id12}@anchor{2ec} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id12}@anchor{2eb} @section @code{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads}) @@ -23507,7 +23489,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2ed}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ee} +@anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ed} @section @code{Ada.Containers.Formal_Indefinite_Vectors} (@code{a-cfinve.ads}) @@ -23526,7 +23508,7 @@ efficient version than the one defined in the standard. In particular it does not have the complex overhead required to detect cursor tampering. @node Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Functional_Sets a-cofuse ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ef}@anchor{gnat_rm/the_gnat_library id14}@anchor{2f0} +@anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id14}@anchor{2ef} @section @code{Ada.Containers.Functional_Vectors} (@code{a-cofuve.ads}) @@ -23548,7 +23530,7 @@ and annotations, so that they can be removed from the final executable. The specification of this unit is compatible with SPARK 2014. @node Ada Containers Functional_Sets a-cofuse ads,Ada Containers Functional_Maps a-cofuma ads,Ada Containers Functional_Vectors a-cofuve ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2f1}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f2} +@anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f1} @section @code{Ada.Containers.Functional_Sets} (@code{a-cofuse.ads}) @@ -23570,7 +23552,7 @@ and annotations, so that they can be removed from the final executable. The specification of this unit is compatible with SPARK 2014. @node Ada Containers Functional_Maps a-cofuma ads,Ada Containers Bounded_Holders a-coboho ads,Ada Containers Functional_Sets a-cofuse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id16}@anchor{2f4} +@anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id16}@anchor{2f3} @section @code{Ada.Containers.Functional_Maps} (@code{a-cofuma.ads}) @@ -23592,7 +23574,7 @@ and annotations, so that they can be removed from the final executable. The specification of this unit is compatible with SPARK 2014. @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Functional_Maps a-cofuma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f6} +@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f5} @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads}) @@ -23604,7 +23586,7 @@ This child of @code{Ada.Containers} defines a modified version of Indefinite_Holders that avoids heap allocation. @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f7}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f8} +@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f7} @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads}) @@ -23617,7 +23599,7 @@ provides a mechanism for obtaining environment values on systems where this concept makes sense. @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f9}@anchor{gnat_rm/the_gnat_library id19}@anchor{2fa} +@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id19}@anchor{2f9} @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads}) @@ -23635,7 +23617,7 @@ to further calls on the subprograms in @code{Ada.Command_Line} will not see the removed argument. @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fb}@anchor{gnat_rm/the_gnat_library id20}@anchor{2fc} +@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id20}@anchor{2fb} @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads}) @@ -23655,7 +23637,7 @@ Using a response file allow passing a set of arguments to an executable longer than the maximum allowed by the system on the command line. @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fd}@anchor{gnat_rm/the_gnat_library id21}@anchor{2fe} +@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id21}@anchor{2fd} @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads}) @@ -23670,7 +23652,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2ff}@anchor{gnat_rm/the_gnat_library id22}@anchor{300} +@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id22}@anchor{2ff} @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads}) @@ -23684,7 +23666,7 @@ exception occurrence (@code{Null_Occurrence}) without raising an exception. @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id23}@anchor{302} +@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id23}@anchor{301} @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads}) @@ -23698,7 +23680,7 @@ exceptions (hence the name last chance), and perform clean ups before terminating the program. Note that this subprogram never returns. @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id24}@anchor{304} +@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id24}@anchor{303} @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads}) @@ -23711,7 +23693,7 @@ give a traceback array of addresses based on an exception occurrence. @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{305}@anchor{gnat_rm/the_gnat_library id25}@anchor{306} +@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id25}@anchor{305} @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads}) @@ -23726,7 +23708,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id26}@anchor{308} +@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id26}@anchor{307} @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads}) @@ -23741,7 +23723,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{309}@anchor{gnat_rm/the_gnat_library id27}@anchor{30a} +@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id27}@anchor{309} @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads}) @@ -23758,7 +23740,7 @@ strings, avoiding the necessity for an intermediate operation with ordinary strings. @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30b}@anchor{gnat_rm/the_gnat_library id28}@anchor{30c} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id28}@anchor{30b} @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads}) @@ -23775,7 +23757,7 @@ wide strings, avoiding the necessity for an intermediate operation with ordinary wide strings. @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id29}@anchor{30e} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id29}@anchor{30d} @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads}) @@ -23792,7 +23774,7 @@ wide wide strings, avoiding the necessity for an intermediate operation with ordinary wide wide strings. @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id30}@anchor{310} +@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id30}@anchor{30f} @section @code{Ada.Task_Initialization} (@code{a-tasini.ads}) @@ -23804,7 +23786,7 @@ parameterless procedures. Note that such a handler is only invoked for those tasks activated after the handler is set. @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{311}@anchor{gnat_rm/the_gnat_library id31}@anchor{312} +@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id31}@anchor{311} @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads}) @@ -23819,7 +23801,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id32}@anchor{314} +@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id32}@anchor{313} @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads}) @@ -23834,7 +23816,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id33}@anchor{316} +@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id33}@anchor{315} @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads}) @@ -23847,7 +23829,7 @@ This package provides subprograms that allow categorization of Wide_Character values according to Unicode categories. @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{317}@anchor{gnat_rm/the_gnat_library id34}@anchor{318} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id34}@anchor{317} @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads}) @@ -23862,7 +23844,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{319}@anchor{gnat_rm/the_gnat_library id35}@anchor{31a} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id35}@anchor{319} @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads}) @@ -23877,7 +23859,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31b}@anchor{gnat_rm/the_gnat_library id36}@anchor{31c} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id36}@anchor{31b} @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads}) @@ -23890,7 +23872,7 @@ This package provides subprograms that allow categorization of Wide_Wide_Character values according to Unicode categories. @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id37}@anchor{31e} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id37}@anchor{31d} @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads}) @@ -23905,7 +23887,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id38}@anchor{320} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id38}@anchor{31f} @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads}) @@ -23920,7 +23902,7 @@ change during execution (for example a standard input file may be redefined to be interactive). @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id39}@anchor{322} +@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id39}@anchor{321} @section @code{GNAT.Altivec} (@code{g-altive.ads}) @@ -23933,7 +23915,7 @@ definitions of constants and types common to all the versions of the binding. @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id40}@anchor{324} +@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id40}@anchor{323} @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads}) @@ -23944,7 +23926,7 @@ binding. This package provides the Vector/View conversion routines. @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id41}@anchor{326} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id41}@anchor{325} @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads}) @@ -23958,7 +23940,7 @@ library. The hard binding is provided as a separate package. This unit is common to both bindings. @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id42}@anchor{328} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id42}@anchor{327} @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads}) @@ -23970,7 +23952,7 @@ This package exposes the various vector types part of the Ada binding to AltiVec facilities. @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{329}@anchor{gnat_rm/the_gnat_library id43}@anchor{32a} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id43}@anchor{329} @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads}) @@ -23985,7 +23967,7 @@ vector elements and provides a simple way to initialize vector objects. @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id44}@anchor{32c} +@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id44}@anchor{32b} @section @code{GNAT.Array_Split} (@code{g-arrspl.ads}) @@ -23998,7 +23980,7 @@ an array wherever the separators appear, and provide direct access to the resulting slices. @node GNAT AWK g-awk ads,GNAT Bind_Environment g-binenv ads,GNAT Array_Split g-arrspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32d}@anchor{gnat_rm/the_gnat_library id45}@anchor{32e} +@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id45}@anchor{32d} @section @code{GNAT.AWK} (@code{g-awk.ads}) @@ -24013,7 +23995,7 @@ or more files containing formatted data. The file is viewed as a database where each record is a line and a field is a data element in this line. @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT AWK g-awk ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32f}@anchor{gnat_rm/the_gnat_library id46}@anchor{330} +@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id46}@anchor{32f} @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads}) @@ -24026,7 +24008,7 @@ These associations can be specified using the @code{-V} binder command line switch. @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id47}@anchor{332} +@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id47}@anchor{331} @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads}) @@ -24037,7 +24019,7 @@ line switch. Provides routines giving hints to the branch predictor of the code generator. @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id48}@anchor{334} +@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id48}@anchor{333} @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads}) @@ -24052,7 +24034,7 @@ useful directly or as parts of the implementations of other abstractions, such as mailboxes. @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{335}@anchor{gnat_rm/the_gnat_library id49}@anchor{336} +@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id49}@anchor{335} @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads}) @@ -24065,7 +24047,7 @@ such as mailboxes. Provides a thread-safe asynchronous intertask mailbox communication facility. @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id50}@anchor{338} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id50}@anchor{337} @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads}) @@ -24080,7 +24062,7 @@ data items. Exchange and comparison procedures are provided by passing access-to-procedure values. @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id51}@anchor{33a} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id51}@anchor{339} @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads}) @@ -24096,7 +24078,7 @@ access-to-procedure values. This is an older version, retained for compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable. @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id52}@anchor{33c} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id52}@anchor{33b} @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads}) @@ -24112,7 +24094,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33d}@anchor{gnat_rm/the_gnat_library id53}@anchor{33e} +@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id53}@anchor{33d} @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads}) @@ -24128,7 +24110,7 @@ the encoding of the string. The routine includes detection of special XML sequences for various UCS input formats. @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33f}@anchor{gnat_rm/the_gnat_library id54}@anchor{340} +@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id54}@anchor{33f} @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads}) @@ -24142,7 +24124,7 @@ General routines for swapping the bytes in 2-, 4-, and 8-byte quantities. Machine-specific implementations are available in some cases. @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{341}@anchor{gnat_rm/the_gnat_library id55}@anchor{342} +@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id55}@anchor{341} @section @code{GNAT.Calendar} (@code{g-calend.ads}) @@ -24156,7 +24138,7 @@ Also provides conversion of @code{Ada.Calendar.Time} values to and from the C @code{timeval} format. @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{343}@anchor{gnat_rm/the_gnat_library id56}@anchor{344} +@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id56}@anchor{343} @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads}) @@ -24167,7 +24149,7 @@ C @code{timeval} format. @geindex GNAT.Calendar.Time_IO (g-catiio.ads) @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{345}@anchor{gnat_rm/the_gnat_library id57}@anchor{346} +@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id57}@anchor{345} @section @code{GNAT.CRC32} (@code{g-crc32.ads}) @@ -24184,7 +24166,7 @@ of this algorithm see Aug. 1988. Sarwate, D.V. @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id58}@anchor{348} +@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id58}@anchor{347} @section @code{GNAT.Case_Util} (@code{g-casuti.ads}) @@ -24199,7 +24181,7 @@ without the overhead of the full casing tables in @code{Ada.Characters.Handling}. @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id59}@anchor{34a} +@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id59}@anchor{349} @section @code{GNAT.CGI} (@code{g-cgi.ads}) @@ -24214,7 +24196,7 @@ builds a table whose index is the key and provides some services to deal with this table. @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34b}@anchor{gnat_rm/the_gnat_library id60}@anchor{34c} +@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id60}@anchor{34b} @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads}) @@ -24229,7 +24211,7 @@ Common Gateway Interface (CGI). It exports services to deal with Web cookies (piece of information kept in the Web client software). @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id61}@anchor{34e} +@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id61}@anchor{34d} @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads}) @@ -24241,7 +24223,7 @@ This is a package to help debugging CGI (Common Gateway Interface) programs written in Ada. @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id62}@anchor{350} +@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id62}@anchor{34f} @section @code{GNAT.Command_Line} (@code{g-comlin.ads}) @@ -24254,7 +24236,7 @@ including the ability to scan for named switches with optional parameters and expand file names using wildcard notations. @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{351}@anchor{gnat_rm/the_gnat_library id63}@anchor{352} +@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id63}@anchor{351} @section @code{GNAT.Compiler_Version} (@code{g-comver.ads}) @@ -24272,7 +24254,7 @@ of the compiler if a consistent tool set is used to compile all units of a partition). @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id64}@anchor{354} +@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id64}@anchor{353} @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads}) @@ -24283,7 +24265,7 @@ of a partition). Provides a simple interface to handle Ctrl-C keyboard events. @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id65}@anchor{356} +@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id65}@anchor{355} @section @code{GNAT.Current_Exception} (@code{g-curexc.ads}) @@ -24300,7 +24282,7 @@ This is particularly useful in simulating typical facilities for obtaining information about exceptions provided by Ada 83 compilers. @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{357}@anchor{gnat_rm/the_gnat_library id66}@anchor{358} +@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id66}@anchor{357} @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads}) @@ -24317,7 +24299,7 @@ problems. See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}. @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id67}@anchor{35a} +@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id67}@anchor{359} @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads}) @@ -24330,7 +24312,7 @@ to and from string images of address values. Supports both C and Ada formats for hexadecimal literals. @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35b}@anchor{gnat_rm/the_gnat_library id68}@anchor{35c} +@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id68}@anchor{35b} @section @code{GNAT.Decode_String} (@code{g-decstr.ads}) @@ -24354,7 +24336,7 @@ Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35d}@anchor{gnat_rm/the_gnat_library id69}@anchor{35e} +@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id69}@anchor{35d} @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads}) @@ -24375,7 +24357,7 @@ preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding. @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35f}@anchor{gnat_rm/the_gnat_library id70}@anchor{360} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id70}@anchor{35f} @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads}) @@ -24388,7 +24370,7 @@ the current directory, making new directories, and scanning the files in a directory. @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id71}@anchor{362} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id71}@anchor{361} @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads}) @@ -24400,7 +24382,7 @@ A child unit of GNAT.Directory_Operations providing additional operations for iterating through directories. @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{363}@anchor{gnat_rm/the_gnat_library id72}@anchor{364} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id72}@anchor{363} @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads}) @@ -24418,7 +24400,7 @@ dynamic instances of the hash table, while an instantiation of @code{GNAT.HTable} creates a single instance of the hash table. @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id73}@anchor{366} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id73}@anchor{365} @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads}) @@ -24438,7 +24420,7 @@ dynamic instances of the table, while an instantiation of @code{GNAT.Table} creates a single instance of the table type. @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id74}@anchor{368} +@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id74}@anchor{367} @section @code{GNAT.Encode_String} (@code{g-encstr.ads}) @@ -24460,7 +24442,7 @@ encoding method. Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id75}@anchor{36a} +@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id75}@anchor{369} @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads}) @@ -24481,7 +24463,7 @@ Note there is a preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding. @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36b}@anchor{gnat_rm/the_gnat_library id76}@anchor{36c} +@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id76}@anchor{36b} @section @code{GNAT.Exception_Actions} (@code{g-excact.ads}) @@ -24494,7 +24476,7 @@ for specific exceptions, or when any exception is raised. This can be used for instance to force a core dump to ease debugging. @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36d}@anchor{gnat_rm/the_gnat_library id77}@anchor{36e} +@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id77}@anchor{36d} @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads}) @@ -24508,7 +24490,7 @@ Provides an interface allowing to control automatic output upon exception occurrences. @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36f}@anchor{gnat_rm/the_gnat_library id78}@anchor{370} +@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id78}@anchor{36f} @section @code{GNAT.Exceptions} (@code{g-except.ads}) @@ -24529,7 +24511,7 @@ predefined exceptions, and for example allow raising @code{Constraint_Error} with a message from a pure subprogram. @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{371}@anchor{gnat_rm/the_gnat_library id79}@anchor{372} +@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id79}@anchor{371} @section @code{GNAT.Expect} (@code{g-expect.ads}) @@ -24545,7 +24527,7 @@ It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{373}@anchor{gnat_rm/the_gnat_library id80}@anchor{374} +@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id80}@anchor{373} @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads}) @@ -24557,7 +24539,7 @@ ports. It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id81}@anchor{376} +@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id81}@anchor{375} @section @code{GNAT.Float_Control} (@code{g-flocon.ads}) @@ -24571,7 +24553,7 @@ library calls may cause this mode to be modified, and the Reset procedure in this package can be used to reestablish the required mode. @node GNAT Formatted_String g-forstr ads,GNAT Heap_Sort g-heasor ads,GNAT Float_Control g-flocon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{377}@anchor{gnat_rm/the_gnat_library id82}@anchor{378} +@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id82}@anchor{377} @section @code{GNAT.Formatted_String} (@code{g-forstr.ads}) @@ -24586,7 +24568,7 @@ derived from Integer, Float or enumerations as values for the formatted string. @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Formatted_String g-forstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{379}@anchor{gnat_rm/the_gnat_library id83}@anchor{37a} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id83}@anchor{379} @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads}) @@ -24600,7 +24582,7 @@ access-to-procedure values. The algorithm used is a modified heap sort that performs approximately N*log(N) comparisons in the worst case. @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37b}@anchor{gnat_rm/the_gnat_library id84}@anchor{37c} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id84}@anchor{37b} @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads}) @@ -24616,7 +24598,7 @@ This differs from @code{GNAT.Heap_Sort} in having a less convenient interface, but may be slightly more efficient. @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37d}@anchor{gnat_rm/the_gnat_library id85}@anchor{37e} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id85}@anchor{37d} @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads}) @@ -24630,7 +24612,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37f}@anchor{gnat_rm/the_gnat_library id86}@anchor{380} +@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id86}@anchor{37f} @section @code{GNAT.HTable} (@code{g-htable.ads}) @@ -24643,7 +24625,7 @@ data. Provides two approaches, one a simple static approach, and the other allowing arbitrary dynamic hash tables. @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{381}@anchor{gnat_rm/the_gnat_library id87}@anchor{382} +@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id87}@anchor{381} @section @code{GNAT.IO} (@code{g-io.ads}) @@ -24659,7 +24641,7 @@ Standard_Input, and writing characters, strings and integers to either Standard_Output or Standard_Error. @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{383}@anchor{gnat_rm/the_gnat_library id88}@anchor{384} +@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id88}@anchor{383} @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads}) @@ -24673,7 +24655,7 @@ Provides some auxiliary functions for use with Text_IO, including a test for whether a file exists, and functions for reading a line of text. @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{385}@anchor{gnat_rm/the_gnat_library id89}@anchor{386} +@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id89}@anchor{385} @section @code{GNAT.Lock_Files} (@code{g-locfil.ads}) @@ -24687,7 +24669,7 @@ Provides a general interface for using files as locks. Can be used for providing program level synchronization. @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{387}@anchor{gnat_rm/the_gnat_library id90}@anchor{388} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id90}@anchor{387} @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads}) @@ -24699,7 +24681,7 @@ The original implementation of @code{Ada.Numerics.Discrete_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{389}@anchor{gnat_rm/the_gnat_library id91}@anchor{38a} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id91}@anchor{389} @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads}) @@ -24711,7 +24693,7 @@ The original implementation of @code{Ada.Numerics.Float_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38b}@anchor{gnat_rm/the_gnat_library id92}@anchor{38c} +@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id92}@anchor{38b} @section @code{GNAT.MD5} (@code{g-md5.ads}) @@ -24724,7 +24706,7 @@ the HMAC-MD5 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38d}@anchor{gnat_rm/the_gnat_library id93}@anchor{38e} +@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id93}@anchor{38d} @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads}) @@ -24737,7 +24719,7 @@ standard output or standard error files. Uses GNAT.IO for actual output. @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{38f}@anchor{gnat_rm/the_gnat_library id94}@anchor{390} +@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id94}@anchor{38f} @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads}) @@ -24751,7 +24733,7 @@ various logging purposes, including duplicating functionality of some Ada 83 implementation dependent extensions. @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{391}@anchor{gnat_rm/the_gnat_library id95}@anchor{392} +@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id95}@anchor{391} @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads}) @@ -24767,7 +24749,7 @@ including a portable spawn procedure, and access to environment variables and error return codes. @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{393}@anchor{gnat_rm/the_gnat_library id96}@anchor{394} +@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id96}@anchor{393} @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads}) @@ -24785,7 +24767,7 @@ hashcode are in the same order. These hashing functions are very convenient for use with realtime applications. @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{395}@anchor{gnat_rm/the_gnat_library id97}@anchor{396} +@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id97}@anchor{395} @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads}) @@ -24797,7 +24779,7 @@ Provides random number capabilities which extend those available in the standard Ada library and are more convenient to use. @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25c}@anchor{gnat_rm/the_gnat_library id98}@anchor{397} +@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25b}@anchor{gnat_rm/the_gnat_library id98}@anchor{396} @section @code{GNAT.Regexp} (@code{g-regexp.ads}) @@ -24813,7 +24795,7 @@ simplest of the three pattern matching packages provided, and is particularly suitable for ‘file globbing’ applications. @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id99}@anchor{399} +@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{397}@anchor{gnat_rm/the_gnat_library id99}@anchor{398} @section @code{GNAT.Registry} (@code{g-regist.ads}) @@ -24827,7 +24809,7 @@ registry API, but at a lower level of abstraction, refer to the Win32.Winreg package provided with the Win32Ada binding @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id100}@anchor{39b} +@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id100}@anchor{39a} @section @code{GNAT.Regpat} (@code{g-regpat.ads}) @@ -24842,7 +24824,7 @@ from the original V7 style regular expression library written in C by Henry Spencer (and binary compatible with this C library). @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id101}@anchor{39d} +@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id101}@anchor{39c} @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads}) @@ -24856,7 +24838,7 @@ full content to be processed is not loaded into memory all at once. This makes this interface usable for large files or socket streams. @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id102}@anchor{39f} +@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id102}@anchor{39e} @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads}) @@ -24868,7 +24850,7 @@ Provide the capability to query the high water mark of the current task’s secondary stack. @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id103}@anchor{3a1} +@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id103}@anchor{3a0} @section @code{GNAT.Semaphores} (@code{g-semaph.ads}) @@ -24879,7 +24861,7 @@ secondary stack. Provides classic counting and binary semaphores using protected types. @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a3} +@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a2} @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads}) @@ -24891,7 +24873,7 @@ Provides a simple interface to send and receive data over a serial port. This is only supported on GNU/Linux and Windows. @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a5} +@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a4} @section @code{GNAT.SHA1} (@code{g-sha1.ads}) @@ -24904,7 +24886,7 @@ and RFC 3174, and the HMAC-SHA1 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a7} +@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a6} @section @code{GNAT.SHA224} (@code{g-sha224.ads}) @@ -24917,7 +24899,7 @@ and the HMAC-SHA224 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a9} +@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a8} @section @code{GNAT.SHA256} (@code{g-sha256.ads}) @@ -24930,7 +24912,7 @@ and the HMAC-SHA256 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id108}@anchor{3ab} +@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id108}@anchor{3aa} @section @code{GNAT.SHA384} (@code{g-sha384.ads}) @@ -24943,7 +24925,7 @@ and the HMAC-SHA384 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ad} +@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ac} @section @code{GNAT.SHA512} (@code{g-sha512.ads}) @@ -24956,7 +24938,7 @@ and the HMAC-SHA512 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id110}@anchor{3af} +@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ae} @section @code{GNAT.Signals} (@code{g-signal.ads}) @@ -24968,7 +24950,7 @@ Provides the ability to manipulate the blocked status of signals on supported targets. @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id111}@anchor{3b1} +@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id111}@anchor{3b0} @section @code{GNAT.Sockets} (@code{g-socket.ads}) @@ -24983,7 +24965,7 @@ on all native GNAT ports and on VxWorks cross prots. It is not implemented for the LynxOS cross port. @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id112}@anchor{3b3} +@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id112}@anchor{3b2} @section @code{GNAT.Source_Info} (@code{g-souinf.ads}) @@ -24997,7 +24979,7 @@ subprograms yielding the date and time of the current compilation (like the C macros @code{__DATE__} and @code{__TIME__}) @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b5} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b4} @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads}) @@ -25009,7 +24991,7 @@ Provides a function for determining whether one string is a plausible near misspelling of another string. @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b7} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b6} @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads}) @@ -25022,7 +25004,7 @@ determining whether one string is a plausible near misspelling of another string. @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b8}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b9} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b8} @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads}) @@ -25038,7 +25020,7 @@ the SNOBOL4 dynamic pattern construction and matching capabilities, using the efficient algorithm developed by Robert Dewar for the SPITBOL system. @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id116}@anchor{3bb} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id116}@anchor{3ba} @section @code{GNAT.Spitbol} (@code{g-spitbo.ads}) @@ -25053,7 +25035,7 @@ useful for constructing arbitrary mappings from strings in the style of the SNOBOL4 TABLE function. @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bc}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bd} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bc} @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads}) @@ -25068,7 +25050,7 @@ for type @code{Standard.Boolean}, giving an implementation of sets of string values. @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3be}@anchor{gnat_rm/the_gnat_library id118}@anchor{3bf} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id118}@anchor{3be} @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads}) @@ -25085,7 +25067,7 @@ for type @code{Standard.Integer}, giving an implementation of maps from string to integer values. @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id119}@anchor{3c1} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id119}@anchor{3c0} @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads}) @@ -25102,7 +25084,7 @@ a variable length string type, giving an implementation of general maps from strings to strings. @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c3} +@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c2} @section @code{GNAT.SSE} (@code{g-sse.ads}) @@ -25114,7 +25096,7 @@ targets. It exposes vector component types together with a general introduction to the binding contents and use. @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c5} +@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c4} @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads}) @@ -25123,7 +25105,7 @@ introduction to the binding contents and use. SSE vector types for use with SSE related intrinsics. @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c7} +@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c6} @section @code{GNAT.String_Hash} (@code{g-strhas.ads}) @@ -25135,7 +25117,7 @@ Provides a generic hash function working on arrays of scalars. Both the scalar type and the hash result type are parameters. @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c8}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c9} +@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c8} @section @code{GNAT.Strings} (@code{g-string.ads}) @@ -25145,7 +25127,7 @@ Common String access types and related subprograms. Basically it defines a string access and an array of string access types. @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id124}@anchor{3cb} +@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id124}@anchor{3ca} @section @code{GNAT.String_Split} (@code{g-strspl.ads}) @@ -25159,7 +25141,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id125}@anchor{3cd} +@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id125}@anchor{3cc} @section @code{GNAT.Table} (@code{g-table.ads}) @@ -25179,7 +25161,7 @@ while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be used to define dynamic instances of the table. @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id126}@anchor{3cf} +@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id126}@anchor{3ce} @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads}) @@ -25196,7 +25178,7 @@ single global task lock. Appropriate for use in situations where contention between tasks is very rarely expected. @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id127}@anchor{3d1} +@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id127}@anchor{3d0} @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads}) @@ -25211,7 +25193,7 @@ represents the current date and time in ISO 8601 format. This is a very simple routine with minimal code and there are no dependencies on any other unit. @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id128}@anchor{3d3} +@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id128}@anchor{3d2} @section @code{GNAT.Threads} (@code{g-thread.ads}) @@ -25228,7 +25210,7 @@ further details if your program has threads that are created by a non-Ada environment which then accesses Ada code. @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d4}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d5} +@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d4} @section @code{GNAT.Traceback} (@code{g-traceb.ads}) @@ -25240,7 +25222,7 @@ Provides a facility for obtaining non-symbolic traceback information, useful in various debugging situations. @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-table ads,GNAT Traceback g-traceb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d6}@anchor{gnat_rm/the_gnat_library id130}@anchor{3d7} +@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id130}@anchor{3d6} @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads}) @@ -25249,7 +25231,7 @@ in various debugging situations. @geindex Trace back facilities @node GNAT UTF_32 g-table ads,GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d9} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d8} @section @code{GNAT.UTF_32} (@code{g-table.ads}) @@ -25268,7 +25250,7 @@ lower case to upper case fold routine corresponding to the Ada 2005 rules for identifier equivalence. @node GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-table ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3da}@anchor{gnat_rm/the_gnat_library id132}@anchor{3db} +@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id132}@anchor{3da} @section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads}) @@ -25281,7 +25263,7 @@ near misspelling of another wide wide string, where the strings are represented using the UTF_32_String type defined in System.Wch_Cnv. @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Spelling_Checker g-u3spch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id133}@anchor{3dd} +@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id133}@anchor{3dc} @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads}) @@ -25293,7 +25275,7 @@ Provides a function for determining whether one wide string is a plausible near misspelling of another wide string. @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3de}@anchor{gnat_rm/the_gnat_library id134}@anchor{3df} +@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id134}@anchor{3de} @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads}) @@ -25307,7 +25289,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e0}@anchor{gnat_rm/the_gnat_library id135}@anchor{3e1} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id135}@anchor{3e0} @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads}) @@ -25319,7 +25301,7 @@ Provides a function for determining whether one wide wide string is a plausible near misspelling of another wide wide string. @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e3} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e2} @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads}) @@ -25333,7 +25315,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id137}@anchor{3e4}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e5} +@anchor{gnat_rm/the_gnat_library id137}@anchor{3e3}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e4} @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads}) @@ -25344,7 +25326,7 @@ for use with either manually or automatically generated bindings to C libraries. @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id138}@anchor{3e6}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e7} +@anchor{gnat_rm/the_gnat_library id138}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e6} @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads}) @@ -25357,7 +25339,7 @@ This package is a binding for the most commonly used operations on C streams. @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id139}@anchor{3e8}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e9} +@anchor{gnat_rm/the_gnat_library id139}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e8} @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads}) @@ -25372,7 +25354,7 @@ from a packed decimal format compatible with that used on IBM mainframes. @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id140}@anchor{3ea}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3eb} +@anchor{gnat_rm/the_gnat_library id140}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ea} @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads}) @@ -25388,7 +25370,7 @@ In particular, it interfaces with the VxWorks hardware interrupt facilities. @node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id141}@anchor{3ec}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3ed} +@anchor{gnat_rm/the_gnat_library id141}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3ec} @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads}) @@ -25404,7 +25386,7 @@ intConnect() with a custom routine for installing interrupt handlers. @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id142}@anchor{3ee}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ef} +@anchor{gnat_rm/the_gnat_library id142}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ee} @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads}) @@ -25427,7 +25409,7 @@ function codes. A particular use of this package is to enable the use of Get_Immediate under VxWorks. @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id143}@anchor{3f0}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f1} +@anchor{gnat_rm/the_gnat_library id143}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f0} @section @code{System.Address_Image} (@code{s-addima.ads}) @@ -25443,7 +25425,7 @@ function that gives an (implementation dependent) string which identifies an address. @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id144}@anchor{3f2}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f3} +@anchor{gnat_rm/the_gnat_library id144}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f2} @section @code{System.Assertions} (@code{s-assert.ads}) @@ -25459,7 +25441,7 @@ by an run-time assertion failure, as well as the routine that is used internally to raise this assertion. @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id145}@anchor{3f4}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f5} +@anchor{gnat_rm/the_gnat_library id145}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f4} @section @code{System.Atomic_Counters} (@code{s-atocou.ads}) @@ -25473,7 +25455,7 @@ on most targets, including all Alpha, AARCH64, ARM, ia64, PowerPC, SPARC V9, x86, and x86_64 platforms. @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id146}@anchor{3f6}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f7} +@anchor{gnat_rm/the_gnat_library id146}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f6} @section @code{System.Memory} (@code{s-memory.ads}) @@ -25491,7 +25473,7 @@ calls to this unit may be made for low level allocation uses (for example see the body of @code{GNAT.Tables}). @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id147}@anchor{3f8}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f9} +@anchor{gnat_rm/the_gnat_library id147}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f8} @section @code{System.Multiprocessors} (@code{s-multip.ads}) @@ -25504,7 +25486,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id148}@anchor{3fa}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fb} +@anchor{gnat_rm/the_gnat_library id148}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fa} @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads}) @@ -25517,7 +25499,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id149}@anchor{3fc}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fd} +@anchor{gnat_rm/the_gnat_library id149}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fc} @section @code{System.Partition_Interface} (@code{s-parint.ads}) @@ -25530,7 +25512,7 @@ is used primarily in a distribution context when using Annex E with @code{GLADE}. @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id150}@anchor{3fe}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3ff} +@anchor{gnat_rm/the_gnat_library id150}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fe} @section @code{System.Pool_Global} (@code{s-pooglo.ads}) @@ -25547,7 +25529,7 @@ declared. It uses malloc/free to allocate/free and does not attempt to do any automatic reclamation. @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id151}@anchor{400}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{401} +@anchor{gnat_rm/the_gnat_library id151}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{400} @section @code{System.Pool_Local} (@code{s-pooloc.ads}) @@ -25564,7 +25546,7 @@ a list of allocated blocks, so that all storage allocated for the pool can be freed automatically when the pool is finalized. @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id152}@anchor{402}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{403} +@anchor{gnat_rm/the_gnat_library id152}@anchor{401}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{402} @section @code{System.Restrictions} (@code{s-restri.ads}) @@ -25580,7 +25562,7 @@ compiler determined information on which restrictions are violated by one or more packages in the partition. @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id153}@anchor{404}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{405} +@anchor{gnat_rm/the_gnat_library id153}@anchor{403}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{404} @section @code{System.Rident} (@code{s-rident.ads}) @@ -25596,7 +25578,7 @@ since the necessary instantiation is included in package System.Restrictions. @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id154}@anchor{406}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{407} +@anchor{gnat_rm/the_gnat_library id154}@anchor{405}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{406} @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads}) @@ -25612,7 +25594,7 @@ stream attributes are applied to string types, but the subprograms in this package can be used directly by application programs. @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id155}@anchor{408}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{409} +@anchor{gnat_rm/the_gnat_library id155}@anchor{407}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{408} @section @code{System.Unsigned_Types} (@code{s-unstyp.ads}) @@ -25625,7 +25607,7 @@ also contains some related definitions for other specialized types used by the compiler in connection with packed array types. @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id156}@anchor{40a}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40b} +@anchor{gnat_rm/the_gnat_library id156}@anchor{409}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40a} @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads}) @@ -25646,7 +25628,7 @@ encoding method. It uses definitions in package @code{System.Wch_Con}. @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id157}@anchor{40c}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40d} +@anchor{gnat_rm/the_gnat_library id157}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40c} @section @code{System.Wch_Con} (@code{s-wchcon.ads}) @@ -25658,7 +25640,7 @@ in ordinary strings. These definitions are used by the package @code{System.Wch_Cnv}. @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top -@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} +@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} @chapter Interfacing to Other Languages @@ -25676,7 +25658,7 @@ provided. @end menu @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{411} +@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{410} @section Interfacing to C @@ -25816,7 +25798,7 @@ of the length corresponding to the @code{type'Size} value in Ada. @end itemize @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{48}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{412} +@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{46}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{411} @section Interfacing to C++ @@ -25873,7 +25855,7 @@ The @code{External_Name} is the name of the C++ RTTI symbol. You can then cover a specific C++ exception in an exception handler. @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{413}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{414} +@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{413} @section Interfacing to COBOL @@ -25881,7 +25863,7 @@ Interfacing to COBOL is achieved as described in section B.4 of the Ada Reference Manual. @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{415}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{416} +@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{415} @section Interfacing to Fortran @@ -25891,7 +25873,7 @@ multi-dimensional array causes the array to be stored in column-major order as required for convenient interface to Fortran. @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{417}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{418} +@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{417} @section Interfacing to non-GNAT Ada code @@ -25915,7 +25897,7 @@ values or simple record types without variants, or simple array types with fixed bounds. @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top -@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{41a}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} +@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{418}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} @chapter Specialized Needs Annexes @@ -25956,7 +25938,7 @@ in Ada 2005) is fully implemented. @end table @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top -@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} +@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} @chapter Implementation of Specific Ada Features @@ -25975,7 +25957,7 @@ facilities. @end menu @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{167} +@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{165} @section Machine Code Insertions @@ -26143,7 +26125,7 @@ according to normal visibility rules. In particular if there is no qualification is required. @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41f} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41e} @section GNAT Implementation of Tasking @@ -26159,7 +26141,7 @@ to compliance with the Real-Time Systems Annex. @end menu @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{421} +@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{420} @subsection Mapping Ada Tasks onto the Underlying Kernel Threads @@ -26228,7 +26210,7 @@ support this functionality when the parent contains more than one task. @geindex Forking a new process @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{422}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{423} +@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{422} @subsection Ensuring Compliance with the Real-Time Annex @@ -26279,7 +26261,7 @@ placed at the end. @c Support_for_Locking_Policies @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{424} +@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{423} @subsection Support for Locking Policies @@ -26313,7 +26295,7 @@ then ceiling locking is used. Otherwise, the @code{Ceiling_Locking} policy is ignored. @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{425}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{426} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{425} @section GNAT Implementation of Shared Passive Packages @@ -26411,7 +26393,7 @@ This is used to provide the required locking semantics for proper protected object synchronization. @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{427}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{428} +@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{427} @section Code Generation for Array Aggregates @@ -26442,7 +26424,7 @@ component values and static subtypes also lead to simpler code. @end menu @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{42a} +@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{429} @subsection Static constant aggregates with static bounds @@ -26489,7 +26471,7 @@ Zero2: constant two_dim := (others => (others => 0)); @end example @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42c} +@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42b} @subsection Constant aggregates with unconstrained nominal types @@ -26504,7 +26486,7 @@ Cr_Unc : constant One_Unc := (12,24,36); @end example @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42e} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42d} @subsection Aggregates with static bounds @@ -26532,7 +26514,7 @@ end loop; @end example @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{430} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42f} @subsection Aggregates with nonstatic bounds @@ -26543,7 +26525,7 @@ have to be applied to sub-arrays individually, if they do not have statically compatible subtypes. @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{431}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{432} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{431} @subsection Aggregates in assignment statements @@ -26585,7 +26567,7 @@ a temporary (created either by the front-end or the code generator) and then that temporary will be copied onto the target. @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{433}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{434} +@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{433} @section The Size of Discriminated Records with Default Discriminants @@ -26665,7 +26647,7 @@ say) must be consistent, so it is imperative that the object, once created, remain invariant. @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{435}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{436} +@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{435} @section Image Values For Nonscalar Types @@ -26685,7 +26667,7 @@ control of image text is required for some type T, then T’Put_Image should be explicitly specified. @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{437}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{438} +@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{437} @section Strict Conformance to the Ada Reference Manual @@ -26712,7 +26694,7 @@ behavior (although at the cost of a significant performance penalty), so infinite and NaN values are properly generated. @node Implementation of Ada 2012 Features,Security Hardening Features,Implementation of Specific Ada Features,Top -@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{43a}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} +@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{438}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} @chapter Implementation of Ada 2012 Features @@ -28878,7 +28860,7 @@ RM References: H.04 (8/1) @end itemize @node Security Hardening Features,Obsolescent Features,Implementation of Ada 2012 Features,Top -@anchor{gnat_rm/security_hardening_features doc}@anchor{43b}@anchor{gnat_rm/security_hardening_features id1}@anchor{43c}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} +@anchor{gnat_rm/security_hardening_features doc}@anchor{43a}@anchor{gnat_rm/security_hardening_features id1}@anchor{43b}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} @chapter Security Hardening Features @@ -28895,7 +28877,7 @@ are provided by GNAT. @end menu @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features -@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{43d} +@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{43c} @section Register Scrubbing @@ -28923,7 +28905,7 @@ For usage and more details on the command line option, and on the @c Stack Scrubbing: @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{43e} +@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{43d} @section Stack Scrubbing @@ -29006,7 +28988,7 @@ Bar_Callable_Ptr. @c Hardened Conditionals: @node Hardened Conditionals,,Stack Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{43f} +@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{43e} @section Hardened Conditionals @@ -29046,7 +29028,7 @@ They are separate options, however, because of the significantly different performance impact of the hardening transformations. @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top -@anchor{gnat_rm/obsolescent_features doc}@anchor{440}@anchor{gnat_rm/obsolescent_features id1}@anchor{441}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} +@anchor{gnat_rm/obsolescent_features doc}@anchor{43f}@anchor{gnat_rm/obsolescent_features id1}@anchor{440}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} @chapter Obsolescent Features @@ -29065,7 +29047,7 @@ compatibility purposes. @end menu @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id2}@anchor{442}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{443} +@anchor{gnat_rm/obsolescent_features id2}@anchor{441}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{442} @section pragma No_Run_Time @@ -29078,7 +29060,7 @@ preferred usage is to use an appropriately configured run-time that includes just those features that are to be made accessible. @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id3}@anchor{444}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{445} +@anchor{gnat_rm/obsolescent_features id3}@anchor{443}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{444} @section pragma Ravenscar @@ -29087,7 +29069,7 @@ The pragma @code{Ravenscar} has exactly the same effect as pragma is part of the new Ada 2005 standard. @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id4}@anchor{446}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{447} +@anchor{gnat_rm/obsolescent_features id4}@anchor{445}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{446} @section pragma Restricted_Run_Time @@ -29097,7 +29079,7 @@ preferred since the Ada 2005 pragma @code{Profile} is intended for this kind of implementation dependent addition. @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id5}@anchor{448}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{449} +@anchor{gnat_rm/obsolescent_features id5}@anchor{447}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{448} @section pragma Task_Info @@ -29123,7 +29105,7 @@ in the spec of package System.Task_Info in the runtime library. @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features -@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{44a}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{44b} +@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{449}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{44a} @section package System.Task_Info (@code{s-tasinf.ads}) @@ -29133,7 +29115,7 @@ to support the @code{Task_Info} pragma. The predefined Ada package standard replacement for GNAT’s @code{Task_Info} functionality. @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top -@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{44d} +@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{44b}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{44c} @chapter Compatibility and Porting Guide @@ -29155,7 +29137,7 @@ applications developed in other Ada environments. @end menu @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{44e}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{44f} +@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{44d}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{44e} @section Writing Portable Fixed-Point Declarations @@ -29277,7 +29259,7 @@ If you follow this scheme you will be guaranteed that your fixed-point types will be portable. @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{451} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{44f}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{450} @section Compatibility with Ada 83 @@ -29305,7 +29287,7 @@ following subsections treat the most likely issues to be encountered. @end menu @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{452}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{453} +@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{451}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{452} @subsection Legal Ada 83 programs that are illegal in Ada 95 @@ -29405,7 +29387,7 @@ the fix is usually simply to add the @code{(<>)} to the generic declaration. @end itemize @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{454}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{455} +@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{453}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{454} @subsection More deterministic semantics @@ -29433,7 +29415,7 @@ which open select branches are executed. @end itemize @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{456}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{457} +@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{455}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{456} @subsection Changed semantics @@ -29475,7 +29457,7 @@ covers only the restricted range. @end itemize @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{458}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{459} +@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{457}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{458} @subsection Other language compatibility issues @@ -29508,7 +29490,7 @@ include @code{pragma Interface} and the floating point type attributes @end itemize @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{45a}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{45b} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{459}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{45a} @section Compatibility between Ada 95 and Ada 2005 @@ -29580,7 +29562,7 @@ can declare a function returning a value from an anonymous access type. @end itemize @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{45c}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{45d} +@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{45b}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{45c} @section Implementation-dependent characteristics @@ -29603,7 +29585,7 @@ transition from certain Ada 83 compilers. @end menu @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{45e}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{45f} +@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{45e} @subsection Implementation-defined pragmas @@ -29625,7 +29607,7 @@ avoiding compiler rejection of units that contain such pragmas; they are not relevant in a GNAT context and hence are not otherwise implemented. @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{460}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{461} +@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{45f}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{460} @subsection Implementation-defined attributes @@ -29639,7 +29621,7 @@ Ada 83, GNAT supplies the attributes @code{Bit}, @code{Machine_Size} and @code{Type_Class}. @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{462}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{463} +@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{461}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{462} @subsection Libraries @@ -29668,7 +29650,7 @@ be preferable to retrofit the application using modular types. @end itemize @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{464}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{465} +@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{463}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{464} @subsection Elaboration order @@ -29704,7 +29686,7 @@ pragmas either globally (as an effect of the @emph{-gnatE} switch) or locally @end itemize @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{466}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{467} +@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{465}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{466} @subsection Target-specific aspects @@ -29717,10 +29699,10 @@ on the robustness of the original design. Moreover, Ada 95 (and thus Ada 2005 and Ada 2012) are sometimes incompatible with typical Ada 83 compiler practices regarding implicit packing, the meaning of the Size attribute, and the size of access values. -GNAT’s approach to these issues is described in @ref{468,,Representation Clauses}. +GNAT’s approach to these issues is described in @ref{467,,Representation Clauses}. @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{469}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{46a} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{468}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{469} @section Compatibility with Other Ada Systems @@ -29763,7 +29745,7 @@ far beyond this minimal set, as described in the next section. @end itemize @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{46b}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{468} +@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{46a}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{467} @section Representation Clauses @@ -29856,7 +29838,7 @@ with thin pointers. @end itemize @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{46c}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{46d} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{46b}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{46c} @section Compatibility with HP Ada 83 @@ -29886,7 +29868,7 @@ extension of package System. @end itemize @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top -@anchor{share/gnu_free_documentation_license doc}@anchor{46e}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{46f} +@anchor{share/gnu_free_documentation_license doc}@anchor{46d}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{46e} @chapter GNU Free Documentation License diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 5b324c85..b9e57c2 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -3,7 +3,7 @@ @setfilename gnat_ugn.info @documentencoding UTF-8 @ifinfo -@*Generated by Sphinx 4.3.0.@* +@*Generated by Sphinx 4.3.1.@* @end ifinfo @settitle GNAT User's Guide for Native Platforms @defindex ge @@ -21,7 +21,7 @@ @copying @quotation -GNAT User's Guide for Native Platforms , Nov 30, 2021 +GNAT User's Guide for Native Platforms , Jan 03, 2022 AdaCore @@ -11974,6 +11974,9 @@ to be non-negative @item Comparison of an object or (unary or binary) operation of boolean type to an explicit True value. + +@item +Import of parent package. @end itemize The default is that warnings for redundant constructs are not given. diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb index 90d8af4..4c50e61 100644 --- a/gcc/ada/gnatbind.adb +++ b/gcc/ada/gnatbind.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatbind.ads b/gcc/ada/gnatbind.ads index e38f13d..cb72628 100644 --- a/gcc/ada/gnatbind.ads +++ b/gcc/ada/gnatbind.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatchop.adb b/gcc/ada/gnatchop.adb index 8f3048c..0199971 100644 --- a/gcc/ada/gnatchop.adb +++ b/gcc/ada/gnatchop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatclean.adb b/gcc/ada/gnatclean.adb index 83b7afb..a5c5e73 100644 --- a/gcc/ada/gnatclean.adb +++ b/gcc/ada/gnatclean.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb index 94da878..0062736 100644 --- a/gcc/ada/gnatcmd.adb +++ b/gcc/ada/gnatcmd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatcmd.ads b/gcc/ada/gnatcmd.ads index 17683a5..35b13bc 100644 --- a/gcc/ada/gnatcmd.ads +++ b/gcc/ada/gnatcmd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatdll.adb b/gcc/ada/gnatdll.adb index ce90cc2..ecc3101 100644 --- a/gcc/ada/gnatdll.adb +++ b/gcc/ada/gnatdll.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatfind.adb b/gcc/ada/gnatfind.adb index 83bafff..5df6a98 100644 --- a/gcc/ada/gnatfind.adb +++ b/gcc/ada/gnatfind.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatkr.adb b/gcc/ada/gnatkr.adb index 45b2856..b59e792 100644 --- a/gcc/ada/gnatkr.adb +++ b/gcc/ada/gnatkr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatkr.ads b/gcc/ada/gnatkr.ads index d3a5a8d..52112aa 100644 --- a/gcc/ada/gnatkr.ads +++ b/gcc/ada/gnatkr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb index a321bf3..613a6b2 100644 --- a/gcc/ada/gnatlink.adb +++ b/gcc/ada/gnatlink.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatlink.ads b/gcc/ada/gnatlink.ads index e0cadc7..cb38aa2 100644 --- a/gcc/ada/gnatlink.ads +++ b/gcc/ada/gnatlink.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatls.adb b/gcc/ada/gnatls.adb index b20cda4..4b6ba03 100644 --- a/gcc/ada/gnatls.adb +++ b/gcc/ada/gnatls.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2092,10 +2092,7 @@ begin Hi : Source_Ptr; begin - Name_Buffer (1 .. 10) := "system.ads"; - Name_Len := 10; - - Read_Source_File (Name_Find, 0, Hi, Text, FD); + Read_Source_File (Name_Find ("system.ads"), 0, Hi, Text, FD); if Null_Source_Buffer_Ptr (Text) then No_Runtime := True; diff --git a/gcc/ada/gnatls.ads b/gcc/ada/gnatls.ads index 9148638..400d5fe 100644 --- a/gcc/ada/gnatls.ads +++ b/gcc/ada/gnatls.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatmake.adb b/gcc/ada/gnatmake.adb index 105ab56..f48c41a 100644 --- a/gcc/ada/gnatmake.adb +++ b/gcc/ada/gnatmake.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatmake.ads b/gcc/ada/gnatmake.ads index f6ac952..d19db7c 100644 --- a/gcc/ada/gnatmake.ads +++ b/gcc/ada/gnatmake.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatname.adb b/gcc/ada/gnatname.adb index e1c3419..6099292 100644 --- a/gcc/ada/gnatname.adb +++ b/gcc/ada/gnatname.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatname.ads b/gcc/ada/gnatname.ads index cc74eae..94a0c0f 100644 --- a/gcc/ada/gnatname.ads +++ b/gcc/ada/gnatname.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatprep.adb b/gcc/ada/gnatprep.adb index e2efbb9..10e0fd6 100644 --- a/gcc/ada/gnatprep.adb +++ b/gcc/ada/gnatprep.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatprep.ads b/gcc/ada/gnatprep.ads index eff7a9e..ae46f64 100644 --- a/gcc/ada/gnatprep.ads +++ b/gcc/ada/gnatprep.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatvsn.adb b/gcc/ada/gnatvsn.adb index d585c64..f0ad8baf 100644 --- a/gcc/ada/gnatvsn.adb +++ b/gcc/ada/gnatvsn.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gnatvsn.ads b/gcc/ada/gnatvsn.ads index d3678eb..47a06b9 100644 --- a/gcc/ada/gnatvsn.ads +++ b/gcc/ada/gnatvsn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -39,7 +39,7 @@ package Gnatvsn is -- Note: Makefile.in uses the library version string to construct the -- soname value. - Current_Year : constant String := "2021"; + Current_Year : constant String := "2022"; -- Used in printing copyright messages Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version; diff --git a/gcc/ada/gnatxref.adb b/gcc/ada/gnatxref.adb index 3737f66..c9f234c 100644 --- a/gcc/ada/gnatxref.adb +++ b/gcc/ada/gnatxref.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb index 094756b..c6e40ff 100644 --- a/gcc/ada/gprep.adb +++ b/gcc/ada/gprep.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gprep.ads b/gcc/ada/gprep.ads index 7cc0a51..f506678 100644 --- a/gcc/ada/gprep.ads +++ b/gcc/ada/gprep.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h index a987594..e7284a1 100644 --- a/gcc/ada/gsocket.h +++ b/gcc/ada/gsocket.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2004-2021, Free Software Foundation, Inc. * + * Copyright (C) 2004-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/hostparm.ads b/gcc/ada/hostparm.ads index 4d128cc..71f2d1c 100644 --- a/gcc/ada/hostparm.ads +++ b/gcc/ada/hostparm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/impunit.adb b/gcc/ada/impunit.adb index 5fe1353..5e7df1c 100644 --- a/gcc/ada/impunit.adb +++ b/gcc/ada/impunit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/impunit.ads b/gcc/ada/impunit.ads index 7caa1ba..ffdb6f4 100644 --- a/gcc/ada/impunit.ads +++ b/gcc/ada/impunit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/indepsw-aix.adb b/gcc/ada/indepsw-aix.adb index 078097a..5252b33a 100644 --- a/gcc/ada/indepsw-aix.adb +++ b/gcc/ada/indepsw-aix.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (AIX version) -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/indepsw-darwin.adb b/gcc/ada/indepsw-darwin.adb index daa9c95..92681d0 100644 --- a/gcc/ada/indepsw-darwin.adb +++ b/gcc/ada/indepsw-darwin.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Darwin version) -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/indepsw-gnu.adb b/gcc/ada/indepsw-gnu.adb index f624417..a838f1b 100644 --- a/gcc/ada/indepsw-gnu.adb +++ b/gcc/ada/indepsw-gnu.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (GNU version) -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/indepsw.adb b/gcc/ada/indepsw.adb index ad2bf5e..0f19afa 100644 --- a/gcc/ada/indepsw.adb +++ b/gcc/ada/indepsw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/indepsw.ads b/gcc/ada/indepsw.ads index 8485df0..e0405ab 100644 --- a/gcc/ada/indepsw.ads +++ b/gcc/ada/indepsw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 6c260fe..9b15a16 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c index 6bed668..a37602a 100644 --- a/gcc/ada/initialize.c +++ b/gcc/ada/initialize.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index 11a5523..da67fd2 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2189,7 +2189,7 @@ package body Inline is -- conflicts when the non-inlined body N is analyzed. Set_Defining_Unit_Name (Specification (Body_To_Inline), - Make_Defining_Identifier (Sloc (N), New_Internal_Name ('P'))); + Make_Temporary (Sloc (N), 'P')); Set_Corresponding_Spec (Body_To_Inline, Empty); end Generate_Subprogram_Body; @@ -2377,7 +2377,7 @@ package body Inline is ------------------------ function Copy_Return_Object (Obj_Decl : Node_Id) return Node_Id is - Obj_Id : constant Entity_Id := Defining_Entity (Obj_Decl); + Obj_Id : constant Entity_Id := Defining_Entity (Obj_Decl); begin -- The use of New_Copy_Tree ensures that global references are @@ -3264,7 +3264,7 @@ package body Inline is ------------------ function Process_Loop (N : Node_Id) return Traverse_Result is - Id : Entity_Id; + Id : Entity_Id; begin if Nkind (N) = N_Loop_Statement @@ -3676,7 +3676,7 @@ package body Inline is ---------------------------- procedure Rewrite_Procedure_Call (N : Node_Id; Blk : Node_Id) is - HSS : constant Node_Id := Handled_Statement_Sequence (Blk); + HSS : constant Node_Id := Handled_Statement_Sequence (Blk); begin Make_Loop_Labels_Unique (HSS); diff --git a/gcc/ada/inline.ads b/gcc/ada/inline.ads index ad08e38..a5422aa 100644 --- a/gcc/ada/inline.ads +++ b/gcc/ada/inline.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/itypes.adb b/gcc/ada/itypes.adb index ffaa4fe..f7e8dd6 100644 --- a/gcc/ada/itypes.adb +++ b/gcc/ada/itypes.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -89,7 +89,7 @@ package body Itypes is Related_Nod : Node_Id; Scope_Id : Entity_Id := Current_Scope) return Entity_Id is - I_Typ : Entity_Id; + I_Typ : Entity_Id; begin pragma Assert (Is_Access_Type (T)); diff --git a/gcc/ada/itypes.ads b/gcc/ada/itypes.ads index 91d8e6d..3e64bc9 100644 --- a/gcc/ada/itypes.ads +++ b/gcc/ada/itypes.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/krunch.adb b/gcc/ada/krunch.adb index f698d88..d09006d 100644 --- a/gcc/ada/krunch.adb +++ b/gcc/ada/krunch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/krunch.ads b/gcc/ada/krunch.ads index f58b997..62cd37f 100644 --- a/gcc/ada/krunch.ads +++ b/gcc/ada/krunch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb index 092f2f5..b6cdee0 100644 --- a/gcc/ada/layout.adb +++ b/gcc/ada/layout.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -616,7 +616,7 @@ package body Layout is Size : constant Uint := RM_Size (E); begin - Set_Esize (E, RM_Size (E)); + Set_Esize (E, Size); -- For scalar types, increase Object_Size to power of 2, but -- not less than a storage unit in any case (i.e., normally @@ -641,6 +641,11 @@ package body Layout is loop Set_Alignment (E, 2 * Alignment (E)); end loop; + + -- For the other types, apply standard adjustments + + else + Adjust_Esize_Alignment (E); end if; end; end if; diff --git a/gcc/ada/layout.ads b/gcc/ada/layout.ads index 89ee5bd..335b7c8 100644 --- a/gcc/ada/layout.ads +++ b/gcc/ada/layout.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-list.adb b/gcc/ada/lib-list.adb index e4c2832..da6edfe 100644 --- a/gcc/ada/lib-list.adb +++ b/gcc/ada/lib-list.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb index 737762c..cab72c0 100644 --- a/gcc/ada/lib-load.adb +++ b/gcc/ada/lib-load.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -958,7 +958,7 @@ package body Lib.Load is -- code will have to be generated for it. procedure Make_Instance_Unit (N : Node_Id; In_Main : Boolean) is - Sind : constant Source_File_Index := Source_Index (Main_Unit); + Sind : constant Source_File_Index := Source_Index (Main_Unit); begin Units.Increment_Last; diff --git a/gcc/ada/lib-load.ads b/gcc/ada/lib-load.ads index 98b418c..7a54e9a 100644 --- a/gcc/ada/lib-load.ads +++ b/gcc/ada/lib-load.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-sort.adb b/gcc/ada/lib-sort.adb index 1a8ba8b..369c949 100644 --- a/gcc/ada/lib-sort.adb +++ b/gcc/ada/lib-sort.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-util.adb b/gcc/ada/lib-util.adb index 2706e52..15d70d5 100644 --- a/gcc/ada/lib-util.adb +++ b/gcc/ada/lib-util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-util.ads b/gcc/ada/lib-util.ads index 8b0fbd3..edd2a3a 100644 --- a/gcc/ada/lib-util.ads +++ b/gcc/ada/lib-util.ads @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index 738a91e..05571f2 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads index ce5398b..5eb11e0 100644 --- a/gcc/ada/lib-writ.ads +++ b/gcc/ada/lib-writ.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-xref-spark_specific.adb b/gcc/ada/lib-xref-spark_specific.adb index 1905f23..f7ac449 100644 --- a/gcc/ada/lib-xref-spark_specific.adb +++ b/gcc/ada/lib-xref-spark_specific.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb index 2c3c372..359e006 100644 --- a/gcc/ada/lib-xref.adb +++ b/gcc/ada/lib-xref.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -415,22 +415,6 @@ package body Lib.Xref is -- Get the enclosing entity through renamings, which may come from -- source or from the translation of generic instantiations. - function Is_On_LHS (Node : Node_Id) return Boolean; - -- Used to check if a node is on the left hand side of an assignment. - -- The following cases are handled: - -- - -- Variable Node is a direct descendant of left hand side of an - -- assignment statement. - -- - -- Prefix Of an indexed or selected component that is present in - -- a subtree rooted by an assignment statement. There is - -- no restriction of nesting of components, thus cases - -- such as A.B (C).D are handled properly. However a prefix - -- of a dereference (either implicit or explicit) is never - -- considered as on a LHS. - -- - -- Out param Same as above cases, but OUT parameter - function OK_To_Set_Referenced return Boolean; -- Returns True if the Referenced flag can be set. There are a few -- exceptions where we do not want to set this flag, see body for @@ -499,85 +483,6 @@ package body Lib.Xref is end case; end Get_Through_Renamings; - --------------- - -- Is_On_LHS -- - --------------- - - -- ??? There are several routines here and there that perform a similar - -- (but subtly different) computation, which should be factored: - - -- Sem_Util.Is_LHS - -- Sem_Util.May_Be_Lvalue - -- Sem_Util.Known_To_Be_Assigned - -- Exp_Ch2.Expand_Entry_Parameter.In_Assignment_Context - -- Exp_Smem.Is_Out_Actual - - function Is_On_LHS (Node : Node_Id) return Boolean is - N : Node_Id; - P : Node_Id; - K : Node_Kind; - - begin - -- Only identifiers are considered, is this necessary??? - - if Nkind (Node) /= N_Identifier then - return False; - end if; - - -- Immediate return if appeared as OUT parameter - - if Kind = E_Out_Parameter then - return True; - end if; - - -- Search for assignment statement subtree root - - N := Node; - loop - P := Parent (N); - K := Nkind (P); - - if K = N_Assignment_Statement then - return Name (P) = N; - - -- Check whether the parent is a component and the current node is - -- its prefix, but return False if the current node has an access - -- type, as in that case the selected or indexed component is an - -- implicit dereference, and the LHS is the designated object, not - -- the access object. - - -- ??? case of a slice assignment? - - elsif (K = N_Selected_Component or else K = N_Indexed_Component) - and then Prefix (P) = N - then - -- Check for access type. First a special test, In some cases - -- this is called too early (see comments in Find_Direct_Name), - -- at a point where the tree is not fully typed yet. In that - -- case we may lack an Etype for N, and we can't check the - -- Etype. For now, we always return False in such a case, - -- but this is clearly not right in all cases ??? - - if No (Etype (N)) then - return False; - - elsif Is_Access_Type (Etype (N)) then - return False; - - -- Access type case dealt with, keep going - - else - N := P; - end if; - - -- All other cases, definitely not on left side - - else - return False; - end if; - end loop; - end Is_On_LHS; - --------------------------- -- OK_To_Set_Referenced -- --------------------------- @@ -822,46 +727,32 @@ package body Lib.Xref is if Set_Ref then - -- Assignable object appearing on left side of assignment or as - -- an out parameter. + -- When E itself is an IN OUT parameter mark it referenced if Is_Assignable (E) - and then Is_On_LHS (N) - and then Ekind (E) /= E_In_Out_Parameter + and then Ekind (E) = E_In_Out_Parameter + and then Known_To_Be_Assigned (N) then - -- For objects that are renamings, just set as simply referenced - -- we do not try to do assignment type tracking in this case. - - if Present (Renamed_Object (E)) then - Set_Referenced (E); - - -- Out parameter case - - elsif Kind = E_Out_Parameter then - - -- If warning mode for all out parameters is set, or this is - -- the only warning parameter, then we want to mark this for - -- later warning logic by setting Referenced_As_Out_Parameter + Set_Referenced (E); - if Warn_On_Modified_As_Out_Parameter (Formal) then - Set_Referenced_As_Out_Parameter (E, True); - Set_Referenced_As_LHS (E, False); + -- For the case where the entity is on the left hand side of an + -- assignment statment, we do nothing here. - -- For OUT parameter not covered by the above cases, we simply - -- regard it as a normal reference (in this case we do not - -- want any of the warning machinery for out parameters). + -- The processing for Analyze_Assignment_Statement will set the + -- Referenced_As_LHS flag. - else - Set_Referenced (E); - end if; + elsif Is_Assignable (E) + and then Known_To_Be_Assigned (N, Only_LHS => True) + then + null; - -- For the left hand of an assignment case, we do nothing here. - -- The processing for Analyze_Assignment will set the - -- Referenced_As_LHS flag. + -- For objects that are renamings, just set as simply referenced. + -- We do not try to do assignment type tracking in this case. - else - null; - end if; + elsif Is_Assignable (E) + and then Present (Renamed_Object (E)) + then + Set_Referenced (E); -- Check for a reference in a pragma that should not count as a -- making the variable referenced for warning purposes. @@ -901,58 +792,75 @@ package body Lib.Xref is then null; - -- All other cases + -- Out parameter case - else - -- Special processing for IN OUT parameters, where we have an - -- implicit assignment to a simple variable. + elsif Kind = E_Out_Parameter + and then Is_Assignable (E) + then + -- If warning mode for all out parameters is set, or this is + -- the only warning parameter, then we want to mark this for + -- later warning logic by setting Referenced_As_Out_Parameter - if Kind = E_In_Out_Parameter - and then Is_Assignable (E) - then - -- For sure this counts as a normal read reference + if Warn_On_Modified_As_Out_Parameter (Formal) then + Set_Referenced_As_Out_Parameter (E, True); + Set_Referenced_As_LHS (E, False); + + -- For OUT parameter not covered by the above cases, we simply + -- regard it as a non-reference. + else + Set_Referenced_As_Out_Parameter (E); Set_Referenced (E); - Set_Last_Assignment (E, Empty); + end if; - -- We count it as being referenced as an out parameter if the - -- option is set to warn on all out parameters, except that we - -- have a special exclusion for an intrinsic subprogram, which - -- is most likely an instantiation of Unchecked_Deallocation - -- which we do not want to consider as an assignment since it - -- generates false positives. We also exclude the case of an - -- IN OUT parameter if the name of the procedure is Free, - -- since we suspect similar semantics. - - if Warn_On_All_Unread_Out_Parameters - and then Is_Entity_Name (Name (Call)) - and then not Is_Intrinsic_Subprogram (Entity (Name (Call))) - and then Chars (Name (Call)) /= Name_Free - then - Set_Referenced_As_Out_Parameter (E, True); - Set_Referenced_As_LHS (E, False); - end if; + -- Special processing for IN OUT parameters, where we have an + -- implicit assignment to a simple variable. - -- Don't count a recursive reference within a subprogram as a - -- reference (that allows detection of a recursive subprogram - -- whose only references are recursive calls as unreferenced). + elsif Kind = E_In_Out_Parameter + and then Is_Assignable (E) + then + -- For sure this counts as a normal read reference - elsif Is_Subprogram (E) - and then E = Nearest_Dynamic_Scope (Current_Scope) + Set_Referenced (E); + Set_Last_Assignment (E, Empty); + + -- We count it as being referenced as an out parameter if the + -- option is set to warn on all out parameters, except that we + -- have a special exclusion for an intrinsic subprogram, which + -- is most likely an instantiation of Unchecked_Deallocation + -- which we do not want to consider as an assignment since it + -- generates false positives. We also exclude the case of an + -- IN OUT parameter if the name of the procedure is Free, + -- since we suspect similar semantics. + + if Warn_On_All_Unread_Out_Parameters + and then Is_Entity_Name (Name (Call)) + and then not Is_Intrinsic_Subprogram (Entity (Name (Call))) + and then Chars (Name (Call)) /= Name_Free then - null; + Set_Referenced_As_Out_Parameter (E, True); + Set_Referenced_As_LHS (E, False); + end if; - -- Any other occurrence counts as referencing the entity + -- Don't count a recursive reference within a subprogram as a + -- reference (that allows detection of a recursive subprogram + -- whose only references are recursive calls as unreferenced). - elsif OK_To_Set_Referenced then - Set_Referenced (E); + elsif Is_Subprogram (E) + and then E = Nearest_Dynamic_Scope (Current_Scope) + then + null; - -- If variable, this is an OK reference after an assignment - -- so we can clear the Last_Assignment indication. + -- Any other occurrence counts as referencing the entity - if Is_Assignable (E) then - Set_Last_Assignment (E, Empty); - end if; + elsif OK_To_Set_Referenced then + Set_Referenced (E); + + -- If variable, this is an OK reference after an assignment + -- so we can clear the Last_Assignment indication. + + if Is_Assignable (E) then + Set_Last_Assignment (E, Empty); end if; end if; @@ -965,7 +873,7 @@ package body Lib.Xref is and then In_Same_Extended_Unit (E, N) then -- A reference as a named parameter in a call does not count as a - -- violation of pragma Unreferenced for this purpose... + -- violation of pragma Unreferenced for this purpose. if Nkind (N) = N_Identifier and then Nkind (Parent (N)) = N_Parameter_Association @@ -973,10 +881,24 @@ package body Lib.Xref is then null; - -- ... Neither does a reference to a variable on the left side of - -- an assignment. - - elsif Is_On_LHS (N) then + -- Neither does a reference to a variable on the left side of + -- an assignment or use of an out parameter with warnings for + -- unread out parameters specified (via -gnatw.o). + + -- The reason for treating unread out parameters in a special + -- way is so that when pragma Unreferenced is specified on such + -- an out parameter we do not want to issue a warning about the + -- pragma being unnecessary - because the purpose of the flag + -- is to warn about them not being read (e.g. unreferenced) + -- after use. + + elsif (Known_To_Be_Assigned (N, Only_LHS => True) + or else (Present (Formal) + and then Ekind (Formal) = E_Out_Parameter + and then Warn_On_All_Unread_Out_Parameters)) + and then not (Ekind (E) = E_In_Out_Parameter + and then Known_To_Be_Assigned (N)) + then null; -- Do not consider F'Result as a violation of pragma Unreferenced @@ -1755,7 +1677,7 @@ package body Lib.Xref is -- declared in the main unit. Handle_Prim_Ops : declare - Ent : Entity_Id; + Ent : Entity_Id; begin for J in 1 .. Xrefs.Last loop @@ -2841,18 +2763,13 @@ package body Lib.Xref is D : Deferred_Reference_Entry renames Deferred_References.Table (J); begin - case Is_LHS (D.N) is - when Yes => + case Known_To_Be_Assigned (D.N) is + when True => Generate_Reference (D.E, D.N, 'm'); - when No => + when False => Generate_Reference (D.E, D.N, 'r'); - -- Not clear if Unknown can occur at this stage, but if it - -- does we will treat it as a normal reference. - - when Unknown => - Generate_Reference (D.E, D.N, 'r'); end case; end; end loop; diff --git a/gcc/ada/lib-xref.ads b/gcc/ada/lib-xref.ads index 55a9251..729acd3 100644 --- a/gcc/ada/lib-xref.ads +++ b/gcc/ada/lib-xref.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib.adb b/gcc/ada/lib.adb index 44a4af0..6c51cc7 100644 --- a/gcc/ada/lib.adb +++ b/gcc/ada/lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads index f2c6ef3..4a79913 100644 --- a/gcc/ada/lib.ads +++ b/gcc/ada/lib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-astaco.adb b/gcc/ada/libgnarl/a-astaco.adb index 176eefe..b3ed9ba 100644 --- a/gcc/ada/libgnarl/a-astaco.adb +++ b/gcc/ada/libgnarl/a-astaco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-dispat.adb b/gcc/ada/libgnarl/a-dispat.adb index 052f4c5..35e26d4 100644 --- a/gcc/ada/libgnarl/a-dispat.adb +++ b/gcc/ada/libgnarl/a-dispat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-dynpri.adb b/gcc/ada/libgnarl/a-dynpri.adb index 04d5801..2200238 100644 --- a/gcc/ada/libgnarl/a-dynpri.adb +++ b/gcc/ada/libgnarl/a-dynpri.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-etgrbu.ads b/gcc/ada/libgnarl/a-etgrbu.ads index e391961..e24d062 100644 --- a/gcc/ada/libgnarl/a-etgrbu.ads +++ b/gcc/ada/libgnarl/a-etgrbu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-exetim__darwin.adb b/gcc/ada/libgnarl/a-exetim__darwin.adb index 1c75ee7..17b1dac 100644 --- a/gcc/ada/libgnarl/a-exetim__darwin.adb +++ b/gcc/ada/libgnarl/a-exetim__darwin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-exetim__default.ads b/gcc/ada/libgnarl/a-exetim__default.ads index c699e4c..86c8bb7 100644 --- a/gcc/ada/libgnarl/a-exetim__default.ads +++ b/gcc/ada/libgnarl/a-exetim__default.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-exetim__mingw.adb b/gcc/ada/libgnarl/a-exetim__mingw.adb index bcf2424..25cbd26 100644 --- a/gcc/ada/libgnarl/a-exetim__mingw.adb +++ b/gcc/ada/libgnarl/a-exetim__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-exetim__mingw.ads b/gcc/ada/libgnarl/a-exetim__mingw.ads index 01d5009..dfe72a8 100644 --- a/gcc/ada/libgnarl/a-exetim__mingw.ads +++ b/gcc/ada/libgnarl/a-exetim__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-exetim__posix.adb b/gcc/ada/libgnarl/a-exetim__posix.adb index bf9f9cf..d0cc52c 100644 --- a/gcc/ada/libgnarl/a-exetim__posix.adb +++ b/gcc/ada/libgnarl/a-exetim__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-interr.adb b/gcc/ada/libgnarl/a-interr.adb index 28a9d55..38da7a5 100644 --- a/gcc/ada/libgnarl/a-interr.adb +++ b/gcc/ada/libgnarl/a-interr.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-interr.ads b/gcc/ada/libgnarl/a-interr.ads index e64f2e7..bdf42df 100644 --- a/gcc/ada/libgnarl/a-interr.ads +++ b/gcc/ada/libgnarl/a-interr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-intnam.ads b/gcc/ada/libgnarl/a-intnam.ads index 6f20488..951c4b4 100644 --- a/gcc/ada/libgnarl/a-intnam.ads +++ b/gcc/ada/libgnarl/a-intnam.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__aix.ads b/gcc/ada/libgnarl/a-intnam__aix.ads index f599b53..4c8b302 100644 --- a/gcc/ada/libgnarl/a-intnam__aix.ads +++ b/gcc/ada/libgnarl/a-intnam__aix.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__darwin.ads b/gcc/ada/libgnarl/a-intnam__darwin.ads index 26e85ba..e3790ea 100644 --- a/gcc/ada/libgnarl/a-intnam__darwin.ads +++ b/gcc/ada/libgnarl/a-intnam__darwin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__dragonfly.ads b/gcc/ada/libgnarl/a-intnam__dragonfly.ads index 8f73419..d8de405 100644 --- a/gcc/ada/libgnarl/a-intnam__dragonfly.ads +++ b/gcc/ada/libgnarl/a-intnam__dragonfly.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__dummy.ads b/gcc/ada/libgnarl/a-intnam__dummy.ads index ffc3167..a9d2c43 100644 --- a/gcc/ada/libgnarl/a-intnam__dummy.ads +++ b/gcc/ada/libgnarl/a-intnam__dummy.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (No Tasking Version) -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__freebsd.ads b/gcc/ada/libgnarl/a-intnam__freebsd.ads index 976d67e..08f4d2c 100644 --- a/gcc/ada/libgnarl/a-intnam__freebsd.ads +++ b/gcc/ada/libgnarl/a-intnam__freebsd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__hpux.ads b/gcc/ada/libgnarl/a-intnam__hpux.ads index 931f4c1..730fe2b 100644 --- a/gcc/ada/libgnarl/a-intnam__hpux.ads +++ b/gcc/ada/libgnarl/a-intnam__hpux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__linux.ads b/gcc/ada/libgnarl/a-intnam__linux.ads index 6908238..68ecca2 100644 --- a/gcc/ada/libgnarl/a-intnam__linux.ads +++ b/gcc/ada/libgnarl/a-intnam__linux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__lynxos.ads b/gcc/ada/libgnarl/a-intnam__lynxos.ads index bc2ed1e..67befdf 100644 --- a/gcc/ada/libgnarl/a-intnam__lynxos.ads +++ b/gcc/ada/libgnarl/a-intnam__lynxos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__mingw.ads b/gcc/ada/libgnarl/a-intnam__mingw.ads index 7d1c016..1a6471c 100644 --- a/gcc/ada/libgnarl/a-intnam__mingw.ads +++ b/gcc/ada/libgnarl/a-intnam__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__qnx.ads b/gcc/ada/libgnarl/a-intnam__qnx.ads index e97c73e..4d22c4e 100644 --- a/gcc/ada/libgnarl/a-intnam__qnx.ads +++ b/gcc/ada/libgnarl/a-intnam__qnx.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__rtems.ads b/gcc/ada/libgnarl/a-intnam__rtems.ads index 4654f00..7ae5bf5 100644 --- a/gcc/ada/libgnarl/a-intnam__rtems.ads +++ b/gcc/ada/libgnarl/a-intnam__rtems.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__solaris.ads b/gcc/ada/libgnarl/a-intnam__solaris.ads index 0aa6507..b3af262 100644 --- a/gcc/ada/libgnarl/a-intnam__solaris.ads +++ b/gcc/ada/libgnarl/a-intnam__solaris.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-intnam__vxworks.ads b/gcc/ada/libgnarl/a-intnam__vxworks.ads index a74f289..31e5a77 100644 --- a/gcc/ada/libgnarl/a-intnam__vxworks.ads +++ b/gcc/ada/libgnarl/a-intnam__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-reatim.adb b/gcc/ada/libgnarl/a-reatim.adb index 2fda415..6bb5ae5 100644 --- a/gcc/ada/libgnarl/a-reatim.adb +++ b/gcc/ada/libgnarl/a-reatim.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-reatim.ads b/gcc/ada/libgnarl/a-reatim.ads index e47ada9..4b8f7aa 100644 --- a/gcc/ada/libgnarl/a-reatim.ads +++ b/gcc/ada/libgnarl/a-reatim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-retide.adb b/gcc/ada/libgnarl/a-retide.adb index b903294..d78ddd0 100644 --- a/gcc/ada/libgnarl/a-retide.adb +++ b/gcc/ada/libgnarl/a-retide.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-retide.ads b/gcc/ada/libgnarl/a-retide.ads index f0ea80a..4d1eefd 100644 --- a/gcc/ada/libgnarl/a-retide.ads +++ b/gcc/ada/libgnarl/a-retide.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-rttiev.adb b/gcc/ada/libgnarl/a-rttiev.adb index 5527e2f..14014d9 100644 --- a/gcc/ada/libgnarl/a-rttiev.adb +++ b/gcc/ada/libgnarl/a-rttiev.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-rttiev.ads b/gcc/ada/libgnarl/a-rttiev.ads index 5074575..8d2955a 100644 --- a/gcc/ada/libgnarl/a-rttiev.ads +++ b/gcc/ada/libgnarl/a-rttiev.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-synbar.adb b/gcc/ada/libgnarl/a-synbar.adb index e7d82d3..7157338 100644 --- a/gcc/ada/libgnarl/a-synbar.adb +++ b/gcc/ada/libgnarl/a-synbar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-synbar.ads b/gcc/ada/libgnarl/a-synbar.ads index db97265..6a8fd9d 100644 --- a/gcc/ada/libgnarl/a-synbar.ads +++ b/gcc/ada/libgnarl/a-synbar.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-synbar__posix.adb b/gcc/ada/libgnarl/a-synbar__posix.adb index 9148977..3d14c27 100644 --- a/gcc/ada/libgnarl/a-synbar__posix.adb +++ b/gcc/ada/libgnarl/a-synbar__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-synbar__posix.ads b/gcc/ada/libgnarl/a-synbar__posix.ads index 5789902..126a689 100644 --- a/gcc/ada/libgnarl/a-synbar__posix.ads +++ b/gcc/ada/libgnarl/a-synbar__posix.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-sytaco.adb b/gcc/ada/libgnarl/a-sytaco.adb index 7bdbec0..fede71ba 100644 --- a/gcc/ada/libgnarl/a-sytaco.adb +++ b/gcc/ada/libgnarl/a-sytaco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-sytaco.ads b/gcc/ada/libgnarl/a-sytaco.ads index 05e73c2..3db5d35 100644 --- a/gcc/ada/libgnarl/a-sytaco.ads +++ b/gcc/ada/libgnarl/a-sytaco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-tasatt.adb b/gcc/ada/libgnarl/a-tasatt.adb index cf51f61..fc5d68c 100644 --- a/gcc/ada/libgnarl/a-tasatt.adb +++ b/gcc/ada/libgnarl/a-tasatt.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-tasatt.ads b/gcc/ada/libgnarl/a-tasatt.ads index 6403185..91bd128 100644 --- a/gcc/ada/libgnarl/a-tasatt.ads +++ b/gcc/ada/libgnarl/a-tasatt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-taside.adb b/gcc/ada/libgnarl/a-taside.adb index c513455..30fcb4c 100644 --- a/gcc/ada/libgnarl/a-taside.adb +++ b/gcc/ada/libgnarl/a-taside.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-taside.ads b/gcc/ada/libgnarl/a-taside.ads index 1e78626..cd0699b 100644 --- a/gcc/ada/libgnarl/a-taside.ads +++ b/gcc/ada/libgnarl/a-taside.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnarl/a-tasini.adb b/gcc/ada/libgnarl/a-tasini.adb index a8981d6..555c9c9 100644 --- a/gcc/ada/libgnarl/a-tasini.adb +++ b/gcc/ada/libgnarl/a-tasini.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-tasini.ads b/gcc/ada/libgnarl/a-tasini.ads index a754c06..55a94b7 100644 --- a/gcc/ada/libgnarl/a-tasini.ads +++ b/gcc/ada/libgnarl/a-tasini.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/a-taster.adb b/gcc/ada/libgnarl/a-taster.adb index 224fa86..310f24d 100644 --- a/gcc/ada/libgnarl/a-taster.adb +++ b/gcc/ada/libgnarl/a-taster.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-boubuf.adb b/gcc/ada/libgnarl/g-boubuf.adb index 0f5f4fa..e31e2da 100644 --- a/gcc/ada/libgnarl/g-boubuf.adb +++ b/gcc/ada/libgnarl/g-boubuf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-boubuf.ads b/gcc/ada/libgnarl/g-boubuf.ads index f03af19..3c46d7c 100644 --- a/gcc/ada/libgnarl/g-boubuf.ads +++ b/gcc/ada/libgnarl/g-boubuf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-boumai.ads b/gcc/ada/libgnarl/g-boumai.ads index 016770b..0f36e1f 100644 --- a/gcc/ada/libgnarl/g-boumai.ads +++ b/gcc/ada/libgnarl/g-boumai.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-semaph.adb b/gcc/ada/libgnarl/g-semaph.adb index 2276baf..b407cda 100644 --- a/gcc/ada/libgnarl/g-semaph.adb +++ b/gcc/ada/libgnarl/g-semaph.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-semaph.ads b/gcc/ada/libgnarl/g-semaph.ads index 13aa346..8015500 100644 --- a/gcc/ada/libgnarl/g-semaph.ads +++ b/gcc/ada/libgnarl/g-semaph.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-signal.adb b/gcc/ada/libgnarl/g-signal.adb index e50d1a1..d615030 100644 --- a/gcc/ada/libgnarl/g-signal.adb +++ b/gcc/ada/libgnarl/g-signal.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-signal.ads b/gcc/ada/libgnarl/g-signal.ads index ad5b536..1744ac9 100644 --- a/gcc/ada/libgnarl/g-signal.ads +++ b/gcc/ada/libgnarl/g-signal.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-tastus.ads b/gcc/ada/libgnarl/g-tastus.ads index ecdaaf4..959c940 100644 --- a/gcc/ada/libgnarl/g-tastus.ads +++ b/gcc/ada/libgnarl/g-tastus.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-thread.adb b/gcc/ada/libgnarl/g-thread.adb index 452a939..114cfc9 100644 --- a/gcc/ada/libgnarl/g-thread.adb +++ b/gcc/ada/libgnarl/g-thread.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/g-thread.ads b/gcc/ada/libgnarl/g-thread.ads index 1b5534f..02e005f 100644 --- a/gcc/ada/libgnarl/g-thread.ads +++ b/gcc/ada/libgnarl/g-thread.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/i-vxinco.adb b/gcc/ada/libgnarl/i-vxinco.adb index f9be306..46fbf66 100644 --- a/gcc/ada/libgnarl/i-vxinco.adb +++ b/gcc/ada/libgnarl/i-vxinco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, AdaCore -- +-- Copyright (C) 2016-2022, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/i-vxinco.ads b/gcc/ada/libgnarl/i-vxinco.ads index f0f6f71..6cd6149 100644 --- a/gcc/ada/libgnarl/i-vxinco.ads +++ b/gcc/ada/libgnarl/i-vxinco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, AdaCore -- +-- Copyright (C) 2016-2022, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-inmaop.ads b/gcc/ada/libgnarl/s-inmaop.ads index 06d5f1f..fdf5907 100644 --- a/gcc/ada/libgnarl/s-inmaop.ads +++ b/gcc/ada/libgnarl/s-inmaop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-inmaop__dummy.adb b/gcc/ada/libgnarl/s-inmaop__dummy.adb index 6a31dc7..d17b550 100644 --- a/gcc/ada/libgnarl/s-inmaop__dummy.adb +++ b/gcc/ada/libgnarl/s-inmaop__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-inmaop__hwint.adb b/gcc/ada/libgnarl/s-inmaop__hwint.adb index 52a92ac..c8f325c 100644 --- a/gcc/ada/libgnarl/s-inmaop__hwint.adb +++ b/gcc/ada/libgnarl/s-inmaop__hwint.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-inmaop__posix.adb b/gcc/ada/libgnarl/s-inmaop__posix.adb index 60f6207..7db7fdb 100644 --- a/gcc/ada/libgnarl/s-inmaop__posix.adb +++ b/gcc/ada/libgnarl/s-inmaop__posix.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr.adb b/gcc/ada/libgnarl/s-interr.adb index dc1ed17..a3d28d6 100644 --- a/gcc/ada/libgnarl/s-interr.adb +++ b/gcc/ada/libgnarl/s-interr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr.ads b/gcc/ada/libgnarl/s-interr.ads index 3252851..40fb347 100644 --- a/gcc/ada/libgnarl/s-interr.ads +++ b/gcc/ada/libgnarl/s-interr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr__dummy.adb b/gcc/ada/libgnarl/s-interr__dummy.adb index 475a54e..ba21836 100644 --- a/gcc/ada/libgnarl/s-interr__dummy.adb +++ b/gcc/ada/libgnarl/s-interr__dummy.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr__hwint.adb b/gcc/ada/libgnarl/s-interr__hwint.adb index 5f80174..f2237f6 100644 --- a/gcc/ada/libgnarl/s-interr__hwint.adb +++ b/gcc/ada/libgnarl/s-interr__hwint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr__sigaction.adb b/gcc/ada/libgnarl/s-interr__sigaction.adb index a2bde29..c6c0c3c 100644 --- a/gcc/ada/libgnarl/s-interr__sigaction.adb +++ b/gcc/ada/libgnarl/s-interr__sigaction.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-interr__vxworks.adb b/gcc/ada/libgnarl/s-interr__vxworks.adb index db2ca95..c12afcd 100644 --- a/gcc/ada/libgnarl/s-interr__vxworks.adb +++ b/gcc/ada/libgnarl/s-interr__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman.ads b/gcc/ada/libgnarl/s-intman.ads index 663aed9..aef5a77 100644 --- a/gcc/ada/libgnarl/s-intman.ads +++ b/gcc/ada/libgnarl/s-intman.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__android.adb b/gcc/ada/libgnarl/s-intman__android.adb index be9c50e..2071c43 100644 --- a/gcc/ada/libgnarl/s-intman__android.adb +++ b/gcc/ada/libgnarl/s-intman__android.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__dummy.adb b/gcc/ada/libgnarl/s-intman__dummy.adb index 91f17b0..96dd942 100644 --- a/gcc/ada/libgnarl/s-intman__dummy.adb +++ b/gcc/ada/libgnarl/s-intman__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__lynxos.adb b/gcc/ada/libgnarl/s-intman__lynxos.adb index 2a1f9c8..f76f937 100644 --- a/gcc/ada/libgnarl/s-intman__lynxos.adb +++ b/gcc/ada/libgnarl/s-intman__lynxos.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__mingw.adb b/gcc/ada/libgnarl/s-intman__mingw.adb index 252fc2a..8627546 100644 --- a/gcc/ada/libgnarl/s-intman__mingw.adb +++ b/gcc/ada/libgnarl/s-intman__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__posix.adb b/gcc/ada/libgnarl/s-intman__posix.adb index f0f65cd..b405d43 100644 --- a/gcc/ada/libgnarl/s-intman__posix.adb +++ b/gcc/ada/libgnarl/s-intman__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__qnx.adb b/gcc/ada/libgnarl/s-intman__qnx.adb index 8934bdf..358ef37 100644 --- a/gcc/ada/libgnarl/s-intman__qnx.adb +++ b/gcc/ada/libgnarl/s-intman__qnx.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__rtems.adb b/gcc/ada/libgnarl/s-intman__rtems.adb index dedc67c..b637347 100644 --- a/gcc/ada/libgnarl/s-intman__rtems.adb +++ b/gcc/ada/libgnarl/s-intman__rtems.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__rtems.ads b/gcc/ada/libgnarl/s-intman__rtems.ads index f3d53ec..fe0d4d8 100644 --- a/gcc/ada/libgnarl/s-intman__rtems.ads +++ b/gcc/ada/libgnarl/s-intman__rtems.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__solaris.adb b/gcc/ada/libgnarl/s-intman__solaris.adb index 76002a7..cadca3e 100644 --- a/gcc/ada/libgnarl/s-intman__solaris.adb +++ b/gcc/ada/libgnarl/s-intman__solaris.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__susv3.adb b/gcc/ada/libgnarl/s-intman__susv3.adb index f2870cb..0c0782d 100644 --- a/gcc/ada/libgnarl/s-intman__susv3.adb +++ b/gcc/ada/libgnarl/s-intman__susv3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__vxworks.adb b/gcc/ada/libgnarl/s-intman__vxworks.adb index e9b5636..ea354f5 100644 --- a/gcc/ada/libgnarl/s-intman__vxworks.adb +++ b/gcc/ada/libgnarl/s-intman__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-intman__vxworks.ads b/gcc/ada/libgnarl/s-intman__vxworks.ads index 6ff7c41..fe36463 100644 --- a/gcc/ada/libgnarl/s-intman__vxworks.ads +++ b/gcc/ada/libgnarl/s-intman__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux.ads b/gcc/ada/libgnarl/s-linux.ads index 2251f2d..6a46fbf 100644 --- a/gcc/ada/libgnarl/s-linux.ads +++ b/gcc/ada/libgnarl/s-linux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__alpha.ads b/gcc/ada/libgnarl/s-linux__alpha.ads index 06b12f2..b63d4cc 100644 --- a/gcc/ada/libgnarl/s-linux__alpha.ads +++ b/gcc/ada/libgnarl/s-linux__alpha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__android.ads b/gcc/ada/libgnarl/s-linux__android.ads index d2b689e..8a3f2d2 100644 --- a/gcc/ada/libgnarl/s-linux__android.ads +++ b/gcc/ada/libgnarl/s-linux__android.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__hppa.ads b/gcc/ada/libgnarl/s-linux__hppa.ads index 03869df..755f14e 100644 --- a/gcc/ada/libgnarl/s-linux__hppa.ads +++ b/gcc/ada/libgnarl/s-linux__hppa.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__mips.ads b/gcc/ada/libgnarl/s-linux__mips.ads index 3660ee9..db6e5de 100644 --- a/gcc/ada/libgnarl/s-linux__mips.ads +++ b/gcc/ada/libgnarl/s-linux__mips.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__riscv.ads b/gcc/ada/libgnarl/s-linux__riscv.ads index e3f7cc3..ec434f6 100644 --- a/gcc/ada/libgnarl/s-linux__riscv.ads +++ b/gcc/ada/libgnarl/s-linux__riscv.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__sparc.ads b/gcc/ada/libgnarl/s-linux__sparc.ads index 102e9ff..4047978 100644 --- a/gcc/ada/libgnarl/s-linux__sparc.ads +++ b/gcc/ada/libgnarl/s-linux__sparc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-linux__x32.ads b/gcc/ada/libgnarl/s-linux__x32.ads index 3281235..1981499 100644 --- a/gcc/ada/libgnarl/s-linux__x32.ads +++ b/gcc/ada/libgnarl/s-linux__x32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- diff --git a/gcc/ada/libgnarl/s-mudido.adb b/gcc/ada/libgnarl/s-mudido.adb index eb5d742..579f8d2 100644 --- a/gcc/ada/libgnarl/s-mudido.adb +++ b/gcc/ada/libgnarl/s-mudido.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-mudido__affinity.adb b/gcc/ada/libgnarl/s-mudido__affinity.adb index 7118a1d..9f5202f 100644 --- a/gcc/ada/libgnarl/s-mudido__affinity.adb +++ b/gcc/ada/libgnarl/s-mudido__affinity.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__aix.adb b/gcc/ada/libgnarl/s-osinte__aix.adb index 43cede7..56cbde9 100644 --- a/gcc/ada/libgnarl/s-osinte__aix.adb +++ b/gcc/ada/libgnarl/s-osinte__aix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__aix.ads b/gcc/ada/libgnarl/s-osinte__aix.ads index bab03d0..5cb19c3 100644 --- a/gcc/ada/libgnarl/s-osinte__aix.ads +++ b/gcc/ada/libgnarl/s-osinte__aix.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__android.adb b/gcc/ada/libgnarl/s-osinte__android.adb index 7a1d63a..d2bc2de 100644 --- a/gcc/ada/libgnarl/s-osinte__android.adb +++ b/gcc/ada/libgnarl/s-osinte__android.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__android.ads b/gcc/ada/libgnarl/s-osinte__android.ads index 27f7d9d..f4434f6 100644 --- a/gcc/ada/libgnarl/s-osinte__android.ads +++ b/gcc/ada/libgnarl/s-osinte__android.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__darwin.adb b/gcc/ada/libgnarl/s-osinte__darwin.adb index f2c4ee1..7e33f95 100644 --- a/gcc/ada/libgnarl/s-osinte__darwin.adb +++ b/gcc/ada/libgnarl/s-osinte__darwin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__darwin.ads b/gcc/ada/libgnarl/s-osinte__darwin.ads index ac41d528..1856ce9 100644 --- a/gcc/ada/libgnarl/s-osinte__darwin.ads +++ b/gcc/ada/libgnarl/s-osinte__darwin.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__dragonfly.adb b/gcc/ada/libgnarl/s-osinte__dragonfly.adb index 895164e..31869cb 100644 --- a/gcc/ada/libgnarl/s-osinte__dragonfly.adb +++ b/gcc/ada/libgnarl/s-osinte__dragonfly.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__dragonfly.ads b/gcc/ada/libgnarl/s-osinte__dragonfly.ads index 515e1b3..0371616 100644 --- a/gcc/ada/libgnarl/s-osinte__dragonfly.ads +++ b/gcc/ada/libgnarl/s-osinte__dragonfly.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__dummy.ads b/gcc/ada/libgnarl/s-osinte__dummy.ads index 28942e9..7b4119c 100644 --- a/gcc/ada/libgnarl/s-osinte__dummy.ads +++ b/gcc/ada/libgnarl/s-osinte__dummy.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__freebsd.adb b/gcc/ada/libgnarl/s-osinte__freebsd.adb index 036c616..0b55b77 100644 --- a/gcc/ada/libgnarl/s-osinte__freebsd.adb +++ b/gcc/ada/libgnarl/s-osinte__freebsd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__freebsd.ads b/gcc/ada/libgnarl/s-osinte__freebsd.ads index 0dae1fb..8c115c1 100644 --- a/gcc/ada/libgnarl/s-osinte__freebsd.ads +++ b/gcc/ada/libgnarl/s-osinte__freebsd.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__gnu.adb b/gcc/ada/libgnarl/s-osinte__gnu.adb index ba21cf4..f7185e7 100644 --- a/gcc/ada/libgnarl/s-osinte__gnu.adb +++ b/gcc/ada/libgnarl/s-osinte__gnu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__gnu.ads b/gcc/ada/libgnarl/s-osinte__gnu.ads index 98eef86..e763fc9 100644 --- a/gcc/ada/libgnarl/s-osinte__gnu.ads +++ b/gcc/ada/libgnarl/s-osinte__gnu.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__hpux-dce.adb b/gcc/ada/libgnarl/s-osinte__hpux-dce.adb index 4c0c5a9..779219a 100644 --- a/gcc/ada/libgnarl/s-osinte__hpux-dce.adb +++ b/gcc/ada/libgnarl/s-osinte__hpux-dce.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__hpux-dce.ads b/gcc/ada/libgnarl/s-osinte__hpux-dce.ads index ce8c5ab..c12edb4 100644 --- a/gcc/ada/libgnarl/s-osinte__hpux-dce.ads +++ b/gcc/ada/libgnarl/s-osinte__hpux-dce.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__hpux.ads b/gcc/ada/libgnarl/s-osinte__hpux.ads index c94b84c..feaedcc 100644 --- a/gcc/ada/libgnarl/s-osinte__hpux.ads +++ b/gcc/ada/libgnarl/s-osinte__hpux.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads b/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads index de91ee8..c8d94e3 100644 --- a/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +++ b/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__linux.ads b/gcc/ada/libgnarl/s-osinte__linux.ads index 4f682e0..7c9e7ca 100644 --- a/gcc/ada/libgnarl/s-osinte__linux.ads +++ b/gcc/ada/libgnarl/s-osinte__linux.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__lynxos178.adb b/gcc/ada/libgnarl/s-osinte__lynxos178.adb index 25d9b23..e1e6f9e 100644 --- a/gcc/ada/libgnarl/s-osinte__lynxos178.adb +++ b/gcc/ada/libgnarl/s-osinte__lynxos178.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__lynxos178e.ads b/gcc/ada/libgnarl/s-osinte__lynxos178e.ads index 4f38a53..c3a58cd 100644 --- a/gcc/ada/libgnarl/s-osinte__lynxos178e.ads +++ b/gcc/ada/libgnarl/s-osinte__lynxos178e.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__mingw.ads b/gcc/ada/libgnarl/s-osinte__mingw.ads index affff6c..8b05f41 100644 --- a/gcc/ada/libgnarl/s-osinte__mingw.ads +++ b/gcc/ada/libgnarl/s-osinte__mingw.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__posix.adb b/gcc/ada/libgnarl/s-osinte__posix.adb index 182366f..ec00363 100644 --- a/gcc/ada/libgnarl/s-osinte__posix.adb +++ b/gcc/ada/libgnarl/s-osinte__posix.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__qnx.adb b/gcc/ada/libgnarl/s-osinte__qnx.adb index 6612684..f446ac8cb 100644 --- a/gcc/ada/libgnarl/s-osinte__qnx.adb +++ b/gcc/ada/libgnarl/s-osinte__qnx.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__qnx.ads b/gcc/ada/libgnarl/s-osinte__qnx.ads index 28abfbe..c7a887a 100644 --- a/gcc/ada/libgnarl/s-osinte__qnx.ads +++ b/gcc/ada/libgnarl/s-osinte__qnx.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__rtems.adb b/gcc/ada/libgnarl/s-osinte__rtems.adb index 96883af..532b970 100644 --- a/gcc/ada/libgnarl/s-osinte__rtems.adb +++ b/gcc/ada/libgnarl/s-osinte__rtems.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__rtems.ads b/gcc/ada/libgnarl/s-osinte__rtems.ads index 9a0561f..c4a80d6 100644 --- a/gcc/ada/libgnarl/s-osinte__rtems.ads +++ b/gcc/ada/libgnarl/s-osinte__rtems.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__solaris.adb b/gcc/ada/libgnarl/s-osinte__solaris.adb index 65bd784..ecdb8cd 100644 --- a/gcc/ada/libgnarl/s-osinte__solaris.adb +++ b/gcc/ada/libgnarl/s-osinte__solaris.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__solaris.ads b/gcc/ada/libgnarl/s-osinte__solaris.ads index 29e1026..1719d59 100644 --- a/gcc/ada/libgnarl/s-osinte__solaris.ads +++ b/gcc/ada/libgnarl/s-osinte__solaris.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__vxworks.adb b/gcc/ada/libgnarl/s-osinte__vxworks.adb index fbc8367..664bc88 100644 --- a/gcc/ada/libgnarl/s-osinte__vxworks.adb +++ b/gcc/ada/libgnarl/s-osinte__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__vxworks.ads b/gcc/ada/libgnarl/s-osinte__vxworks.ads index e851645..0f9ed91 100644 --- a/gcc/ada/libgnarl/s-osinte__vxworks.ads +++ b/gcc/ada/libgnarl/s-osinte__vxworks.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-osinte__x32.adb b/gcc/ada/libgnarl/s-osinte__x32.adb index 58f5b2d..97c78e4 100644 --- a/gcc/ada/libgnarl/s-osinte__x32.adb +++ b/gcc/ada/libgnarl/s-osinte__x32.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-proinf.adb b/gcc/ada/libgnarl/s-proinf.adb index b1fa4c2..590ce50 100644 --- a/gcc/ada/libgnarl/s-proinf.adb +++ b/gcc/ada/libgnarl/s-proinf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-proinf.ads b/gcc/ada/libgnarl/s-proinf.ads index a8d9673..208a4da 100644 --- a/gcc/ada/libgnarl/s-proinf.ads +++ b/gcc/ada/libgnarl/s-proinf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-putaim.adb b/gcc/ada/libgnarl/s-putaim.adb index 687ac0e..531740e 100644 --- a/gcc/ada/libgnarl/s-putaim.adb +++ b/gcc/ada/libgnarl/s-putaim.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-putaim.ads b/gcc/ada/libgnarl/s-putaim.ads index ff0c344..9b91037 100644 --- a/gcc/ada/libgnarl/s-putaim.ads +++ b/gcc/ada/libgnarl/s-putaim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-qnx.ads b/gcc/ada/libgnarl/s-qnx.ads index 811c41c..b1acdea 100644 --- a/gcc/ada/libgnarl/s-qnx.ads +++ b/gcc/ada/libgnarl/s-qnx.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2017-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2017-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-solita.adb b/gcc/ada/libgnarl/s-solita.adb index b1da6d8..5bd6656 100644 --- a/gcc/ada/libgnarl/s-solita.adb +++ b/gcc/ada/libgnarl/s-solita.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-solita.ads b/gcc/ada/libgnarl/s-solita.ads index 92582a2..923aaad 100644 --- a/gcc/ada/libgnarl/s-solita.ads +++ b/gcc/ada/libgnarl/s-solita.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-stusta.adb b/gcc/ada/libgnarl/s-stusta.adb index 959930b..cd08301 100644 --- a/gcc/ada/libgnarl/s-stusta.adb +++ b/gcc/ada/libgnarl/s-stusta.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with System.Stack_Usage; - -- This is why this package is part of GNARL: with System.Tasking.Debug; diff --git a/gcc/ada/libgnarl/s-stusta.ads b/gcc/ada/libgnarl/s-stusta.ads index 6ca8068..6cc69b0 100644 --- a/gcc/ada/libgnarl/s-stusta.ads +++ b/gcc/ada/libgnarl/s-stusta.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taasde.adb b/gcc/ada/libgnarl/s-taasde.adb index 67cd4a9..539325f 100644 --- a/gcc/ada/libgnarl/s-taasde.adb +++ b/gcc/ada/libgnarl/s-taasde.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -264,8 +264,6 @@ package body System.Tasking.Async_Delays is Dequeued : Delay_Block_Access; Dequeued_Task : Task_Id; - pragma Unreferenced (Timedout, Yielded); - begin pragma Assert (Timer_Server_ID = STPO.Self); diff --git a/gcc/ada/libgnarl/s-taasde.ads b/gcc/ada/libgnarl/s-taasde.ads index c1b93e0..f2ea6aa 100644 --- a/gcc/ada/libgnarl/s-taasde.ads +++ b/gcc/ada/libgnarl/s-taasde.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tadeca.adb b/gcc/ada/libgnarl/s-tadeca.adb index 7badae8..a76ddb6 100644 --- a/gcc/ada/libgnarl/s-tadeca.adb +++ b/gcc/ada/libgnarl/s-tadeca.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tadeca.ads b/gcc/ada/libgnarl/s-tadeca.ads index 22a9e08..b90e937 100644 --- a/gcc/ada/libgnarl/s-tadeca.ads +++ b/gcc/ada/libgnarl/s-tadeca.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tadert.adb b/gcc/ada/libgnarl/s-tadert.adb index 49460fa..5899fed 100644 --- a/gcc/ada/libgnarl/s-tadert.adb +++ b/gcc/ada/libgnarl/s-tadert.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tadert.ads b/gcc/ada/libgnarl/s-tadert.ads index 5fa7a51..0e90042 100644 --- a/gcc/ada/libgnarl/s-tadert.ads +++ b/gcc/ada/libgnarl/s-tadert.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taenca.adb b/gcc/ada/libgnarl/s-taenca.adb index cd7a397..d4ad285 100644 --- a/gcc/ada/libgnarl/s-taenca.adb +++ b/gcc/ada/libgnarl/s-taenca.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taenca.ads b/gcc/ada/libgnarl/s-taenca.ads index 72ad012..0fc28b5 100644 --- a/gcc/ada/libgnarl/s-taenca.ads +++ b/gcc/ada/libgnarl/s-taenca.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprob.adb b/gcc/ada/libgnarl/s-taprob.adb index 1f304d9..8dd1b9d 100644 --- a/gcc/ada/libgnarl/s-taprob.adb +++ b/gcc/ada/libgnarl/s-taprob.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprob.ads b/gcc/ada/libgnarl/s-taprob.ads index 5dce1e8..8713b9e 100644 --- a/gcc/ada/libgnarl/s-taprob.ads +++ b/gcc/ada/libgnarl/s-taprob.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop.ads b/gcc/ada/libgnarl/s-taprop.ads index 50d4708..33ad136 100644 --- a/gcc/ada/libgnarl/s-taprop.ads +++ b/gcc/ada/libgnarl/s-taprop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__dummy.adb b/gcc/ada/libgnarl/s-taprop__dummy.adb index 8a28ff7..5ab41b1 100644 --- a/gcc/ada/libgnarl/s-taprop__dummy.adb +++ b/gcc/ada/libgnarl/s-taprop__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__hpux-dce.adb b/gcc/ada/libgnarl/s-taprop__hpux-dce.adb index 9bded3a..d61ca90 100644 --- a/gcc/ada/libgnarl/s-taprop__hpux-dce.adb +++ b/gcc/ada/libgnarl/s-taprop__hpux-dce.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__linux.adb b/gcc/ada/libgnarl/s-taprop__linux.adb index 2738934..4ff784f 100644 --- a/gcc/ada/libgnarl/s-taprop__linux.adb +++ b/gcc/ada/libgnarl/s-taprop__linux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__mingw.adb b/gcc/ada/libgnarl/s-taprop__mingw.adb index 33d5977..fefc531 100644 --- a/gcc/ada/libgnarl/s-taprop__mingw.adb +++ b/gcc/ada/libgnarl/s-taprop__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -559,7 +559,6 @@ package body System.Task_Primitives.Operations is Abs_Time : Duration; Result : Integer; - pragma Unreferenced (Result); Local_Timedout : Boolean; @@ -615,7 +614,6 @@ package body System.Task_Primitives.Operations is Timedout : Boolean; Result : Integer; - pragma Unreferenced (Timedout, Result); begin Write_Lock (Self_ID); diff --git a/gcc/ada/libgnarl/s-taprop__posix.adb b/gcc/ada/libgnarl/s-taprop__posix.adb index c0766a0..a4f653c 100644 --- a/gcc/ada/libgnarl/s-taprop__posix.adb +++ b/gcc/ada/libgnarl/s-taprop__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__qnx.adb b/gcc/ada/libgnarl/s-taprop__qnx.adb index e7faf08..3c1f957 100644 --- a/gcc/ada/libgnarl/s-taprop__qnx.adb +++ b/gcc/ada/libgnarl/s-taprop__qnx.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__rtems.adb b/gcc/ada/libgnarl/s-taprop__rtems.adb index 9153032..1321a6e 100644 --- a/gcc/ada/libgnarl/s-taprop__rtems.adb +++ b/gcc/ada/libgnarl/s-taprop__rtems.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__solaris.adb b/gcc/ada/libgnarl/s-taprop__solaris.adb index faaaeea..457cf74 100644 --- a/gcc/ada/libgnarl/s-taprop__solaris.adb +++ b/gcc/ada/libgnarl/s-taprop__solaris.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taprop__vxworks.adb b/gcc/ada/libgnarl/s-taprop__vxworks.adb index ff21410..2f28e9e 100644 --- a/gcc/ada/libgnarl/s-taprop__vxworks.adb +++ b/gcc/ada/libgnarl/s-taprop__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tarest.adb b/gcc/ada/libgnarl/s-tarest.adb index 23c2cf7..0848eb1 100644 --- a/gcc/ada/libgnarl/s-tarest.adb +++ b/gcc/ada/libgnarl/s-tarest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tarest.ads b/gcc/ada/libgnarl/s-tarest.ads index 265a26d..0274235 100644 --- a/gcc/ada/libgnarl/s-tarest.ads +++ b/gcc/ada/libgnarl/s-tarest.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasdeb.adb b/gcc/ada/libgnarl/s-tasdeb.adb index edb2503..6fe4196 100644 --- a/gcc/ada/libgnarl/s-tasdeb.adb +++ b/gcc/ada/libgnarl/s-tasdeb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasdeb.ads b/gcc/ada/libgnarl/s-tasdeb.ads index 8d75a5e..17ff8e5 100644 --- a/gcc/ada/libgnarl/s-tasdeb.ads +++ b/gcc/ada/libgnarl/s-tasdeb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,7 +32,6 @@ -- This package encapsulates all direct interfaces to task debugging services -- that are needed by gdb with gnat mode. -with System.Tasking; with System.OS_Interface; package System.Tasking.Debug is diff --git a/gcc/ada/libgnarl/s-tasinf.adb b/gcc/ada/libgnarl/s-tasinf.adb index 12cefa7..ae49dd2 100644 --- a/gcc/ada/libgnarl/s-tasinf.adb +++ b/gcc/ada/libgnarl/s-tasinf.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Compiler Interface) -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf.ads b/gcc/ada/libgnarl/s-tasinf.ads index 39609c8..15fd5eb 100644 --- a/gcc/ada/libgnarl/s-tasinf.ads +++ b/gcc/ada/libgnarl/s-tasinf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__linux.adb b/gcc/ada/libgnarl/s-tasinf__linux.adb index a2938e2..c1fbdc1 100644 --- a/gcc/ada/libgnarl/s-tasinf__linux.adb +++ b/gcc/ada/libgnarl/s-tasinf__linux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__linux.ads b/gcc/ada/libgnarl/s-tasinf__linux.ads index f2877e6..7b5ef3d 100644 --- a/gcc/ada/libgnarl/s-tasinf__linux.ads +++ b/gcc/ada/libgnarl/s-tasinf__linux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__mingw.adb b/gcc/ada/libgnarl/s-tasinf__mingw.adb index c67ea33..4deaa63 100644 --- a/gcc/ada/libgnarl/s-tasinf__mingw.adb +++ b/gcc/ada/libgnarl/s-tasinf__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__mingw.ads b/gcc/ada/libgnarl/s-tasinf__mingw.ads index 184be2f..9178ab3 100644 --- a/gcc/ada/libgnarl/s-tasinf__mingw.ads +++ b/gcc/ada/libgnarl/s-tasinf__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.adb b/gcc/ada/libgnarl/s-tasinf__solaris.adb index e4e0765..6f08942 100644 --- a/gcc/ada/libgnarl/s-tasinf__solaris.adb +++ b/gcc/ada/libgnarl/s-tasinf__solaris.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.ads b/gcc/ada/libgnarl/s-tasinf__solaris.ads index eed76c6..18577a7 100644 --- a/gcc/ada/libgnarl/s-tasinf__solaris.ads +++ b/gcc/ada/libgnarl/s-tasinf__solaris.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasinf__vxworks.ads b/gcc/ada/libgnarl/s-tasinf__vxworks.ads index cb648be..b96fd1b 100644 --- a/gcc/ada/libgnarl/s-tasinf__vxworks.ads +++ b/gcc/ada/libgnarl/s-tasinf__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasini.adb b/gcc/ada/libgnarl/s-tasini.adb index 8d242ee..9afb3c4 100644 --- a/gcc/ada/libgnarl/s-tasini.adb +++ b/gcc/ada/libgnarl/s-tasini.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasini.ads b/gcc/ada/libgnarl/s-tasini.ads index a551d24..e477050 100644 --- a/gcc/ada/libgnarl/s-tasini.ads +++ b/gcc/ada/libgnarl/s-tasini.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taskin.adb b/gcc/ada/libgnarl/s-taskin.adb index 478809c..ed2199a 100644 --- a/gcc/ada/libgnarl/s-taskin.adb +++ b/gcc/ada/libgnarl/s-taskin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -82,18 +82,18 @@ package body System.Tasking is --------------------- procedure Initialize_ATCB - (Self_ID : Task_Id; - Task_Entry_Point : Task_Procedure_Access; - Task_Arg : System.Address; - Parent : Task_Id; - Elaborated : Access_Boolean; - Base_Priority : System.Any_Priority; - Base_CPU : System.Multiprocessors.CPU_Range; - Domain : Dispatching_Domain_Access; - Task_Info : System.Task_Info.Task_Info_Type; - Stack_Size : System.Parameters.Size_Type; - T : Task_Id; - Success : out Boolean) + (Self_ID : Task_Id; + Task_Entry_Point : Task_Procedure_Access; + Task_Arg : System.Address; + Parent : Task_Id; + Elaborated : Access_Boolean; + Base_Priority : System.Any_Priority; + Base_CPU : System.Multiprocessors.CPU_Range; + Domain : Dispatching_Domain_Access; + Task_Info : System.Task_Info.Task_Info_Type; + Stack_Size : System.Parameters.Size_Type; + T : Task_Id; + Success : out Boolean) is begin T.Common.State := Unactivated; @@ -228,18 +228,18 @@ package body System.Tasking is T := STPO.New_ATCB (0); Initialize_ATCB - (Self_ID => null, - Task_Entry_Point => null, - Task_Arg => Null_Address, - Parent => Null_Task, - Elaborated => null, - Base_Priority => Base_Priority, - Base_CPU => Base_CPU, - Domain => System_Domain, - Task_Info => Task_Info.Unspecified_Task_Info, - Stack_Size => 0, - T => T, - Success => Success); + (Self_ID => null, + Task_Entry_Point => null, + Task_Arg => Null_Address, + Parent => Null_Task, + Elaborated => null, + Base_Priority => Base_Priority, + Base_CPU => Base_CPU, + Domain => System_Domain, + Task_Info => Task_Info.Unspecified_Task_Info, + Stack_Size => 0, + T => T, + Success => Success); pragma Assert (Success); STPO.Initialize (T); diff --git a/gcc/ada/libgnarl/s-taskin.ads b/gcc/ada/libgnarl/s-taskin.ads index 0073c19..2e6a0bb 100644 --- a/gcc/ada/libgnarl/s-taskin.ads +++ b/gcc/ada/libgnarl/s-taskin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__dummy.ads b/gcc/ada/libgnarl/s-taspri__dummy.ads index d26d93c..219d7a5 100644 --- a/gcc/ada/libgnarl/s-taspri__dummy.ads +++ b/gcc/ada/libgnarl/s-taspri__dummy.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__hpux-dce.ads b/gcc/ada/libgnarl/s-taspri__hpux-dce.ads index 31c608e..afa1b13 100644 --- a/gcc/ada/libgnarl/s-taspri__hpux-dce.ads +++ b/gcc/ada/libgnarl/s-taspri__hpux-dce.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__lynxos.ads b/gcc/ada/libgnarl/s-taspri__lynxos.ads index 466bdda..56d0a43 100644 --- a/gcc/ada/libgnarl/s-taspri__lynxos.ads +++ b/gcc/ada/libgnarl/s-taspri__lynxos.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__mingw.ads b/gcc/ada/libgnarl/s-taspri__mingw.ads index dfb40fd..cb74627 100644 --- a/gcc/ada/libgnarl/s-taspri__mingw.ads +++ b/gcc/ada/libgnarl/s-taspri__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1991-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1991-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads b/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads index 7fdae10..72c693d 100644 --- a/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads +++ b/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__posix.ads b/gcc/ada/libgnarl/s-taspri__posix.ads index 8859c5c..4f30562 100644 --- a/gcc/ada/libgnarl/s-taspri__posix.ads +++ b/gcc/ada/libgnarl/s-taspri__posix.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__solaris.ads b/gcc/ada/libgnarl/s-taspri__solaris.ads index e390973..5ed4e2f 100644 --- a/gcc/ada/libgnarl/s-taspri__solaris.ads +++ b/gcc/ada/libgnarl/s-taspri__solaris.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-taspri__vxworks.ads b/gcc/ada/libgnarl/s-taspri__vxworks.ads index 157361a..c6a9967 100644 --- a/gcc/ada/libgnarl/s-taspri__vxworks.ads +++ b/gcc/ada/libgnarl/s-taspri__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasque.adb b/gcc/ada/libgnarl/s-tasque.adb index 79382c4..0b38459 100644 --- a/gcc/ada/libgnarl/s-tasque.adb +++ b/gcc/ada/libgnarl/s-tasque.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasque.ads b/gcc/ada/libgnarl/s-tasque.ads index bb2f421..3b2d8ad 100644 --- a/gcc/ada/libgnarl/s-tasque.ads +++ b/gcc/ada/libgnarl/s-tasque.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasren.adb b/gcc/ada/libgnarl/s-tasren.adb index 7b11d39..c4a6abd 100644 --- a/gcc/ada/libgnarl/s-tasren.adb +++ b/gcc/ada/libgnarl/s-tasren.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -305,7 +305,6 @@ package body System.Tasking.Rendezvous is Uninterpreted_Data : System.Address) is Rendezvous_Successful : Boolean; - pragma Unreferenced (Rendezvous_Successful); begin -- If pragma Detect_Blocking is active then Program_Error must be @@ -1438,7 +1437,6 @@ package body System.Tasking.Rendezvous is Entry_Call : Entry_Call_Link; Yielded : Boolean; - pragma Unreferenced (Yielded); begin -- If pragma Detect_Blocking is active then Program_Error must be diff --git a/gcc/ada/libgnarl/s-tasren.ads b/gcc/ada/libgnarl/s-tasren.ads index 0b1054d..42d81e1 100644 --- a/gcc/ada/libgnarl/s-tasren.ads +++ b/gcc/ada/libgnarl/s-tasren.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasres.ads b/gcc/ada/libgnarl/s-tasres.ads index 57acd5d..e6c4703 100644 --- a/gcc/ada/libgnarl/s-tasres.ads +++ b/gcc/ada/libgnarl/s-tasres.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tassta.adb b/gcc/ada/libgnarl/s-tassta.adb index 245145cf..d6ed99c 100644 --- a/gcc/ada/libgnarl/s-tassta.adb +++ b/gcc/ada/libgnarl/s-tassta.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tassta.ads b/gcc/ada/libgnarl/s-tassta.ads index 9883b0c..02443f5 100644 --- a/gcc/ada/libgnarl/s-tassta.ads +++ b/gcc/ada/libgnarl/s-tassta.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasuti.adb b/gcc/ada/libgnarl/s-tasuti.adb index 312ab0e..431e05e 100644 --- a/gcc/ada/libgnarl/s-tasuti.adb +++ b/gcc/ada/libgnarl/s-tasuti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tasuti.ads b/gcc/ada/libgnarl/s-tasuti.ads index 1162569..5cb0e4e 100644 --- a/gcc/ada/libgnarl/s-tasuti.ads +++ b/gcc/ada/libgnarl/s-tasuti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tataat.adb b/gcc/ada/libgnarl/s-tataat.adb index ebc16e9..1466d80 100644 --- a/gcc/ada/libgnarl/s-tataat.adb +++ b/gcc/ada/libgnarl/s-tataat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tataat.ads b/gcc/ada/libgnarl/s-tataat.ads index 590f770..f8f3e2a 100644 --- a/gcc/ada/libgnarl/s-tataat.ads +++ b/gcc/ada/libgnarl/s-tataat.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpinop.adb b/gcc/ada/libgnarl/s-tpinop.adb index 1704691..6262c5f 100644 --- a/gcc/ada/libgnarl/s-tpinop.adb +++ b/gcc/ada/libgnarl/s-tpinop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpinop.ads b/gcc/ada/libgnarl/s-tpinop.ads index b996d8f..fd3db1a 100644 --- a/gcc/ada/libgnarl/s-tpinop.ads +++ b/gcc/ada/libgnarl/s-tpinop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpoaal.adb b/gcc/ada/libgnarl/s-tpoaal.adb index cf611ba..17f2170 100644 --- a/gcc/ada/libgnarl/s-tpoaal.adb +++ b/gcc/ada/libgnarl/s-tpoaal.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpoben.adb b/gcc/ada/libgnarl/s-tpoben.adb index 0cb3677..e9240b6 100644 --- a/gcc/ada/libgnarl/s-tpoben.adb +++ b/gcc/ada/libgnarl/s-tpoben.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpoben.ads b/gcc/ada/libgnarl/s-tpoben.ads index eb8bf79..2fd91ac 100644 --- a/gcc/ada/libgnarl/s-tpoben.ads +++ b/gcc/ada/libgnarl/s-tpoben.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpobmu.adb b/gcc/ada/libgnarl/s-tpobmu.adb index 2c60dba..cea4140 100644 --- a/gcc/ada/libgnarl/s-tpobmu.adb +++ b/gcc/ada/libgnarl/s-tpobmu.adb @@ -6,7 +6,7 @@ -- M U L T I P R O C E S S O R S -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, AdaCore -- +-- Copyright (C) 2010-2022, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpobmu.ads b/gcc/ada/libgnarl/s-tpobmu.ads index 0b263a0..f80bb46 100644 --- a/gcc/ada/libgnarl/s-tpobmu.ads +++ b/gcc/ada/libgnarl/s-tpobmu.ads @@ -6,7 +6,7 @@ -- M U L T I P R O C E S S O R S -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, AdaCore -- +-- Copyright (C) 2010-2022, AdaCore -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpobop.adb b/gcc/ada/libgnarl/s-tpobop.adb index 90e45e9..7bbd2fb 100644 --- a/gcc/ada/libgnarl/s-tpobop.adb +++ b/gcc/ada/libgnarl/s-tpobop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -857,7 +857,6 @@ package body System.Tasking.Protected_Objects.Operations is Ceiling_Violation : Boolean; Yielded : Boolean; - pragma Unreferenced (Yielded); begin if Self_Id.ATC_Nesting_Level = ATC_Level'Last then diff --git a/gcc/ada/libgnarl/s-tpobop.ads b/gcc/ada/libgnarl/s-tpobop.ads index 2eea2f9..15b990b 100644 --- a/gcc/ada/libgnarl/s-tpobop.ads +++ b/gcc/ada/libgnarl/s-tpobop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopmo.adb b/gcc/ada/libgnarl/s-tpopmo.adb index 393c2a6..4e56d87 100644 --- a/gcc/ada/libgnarl/s-tpopmo.adb +++ b/gcc/ada/libgnarl/s-tpopmo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb b/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb index 119040b..cb389a4 100644 --- a/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb +++ b/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__posix.adb b/gcc/ada/libgnarl/s-tpopsp__posix.adb index 6db716d..3e53ba6 100644 --- a/gcc/ada/libgnarl/s-tpopsp__posix.adb +++ b/gcc/ada/libgnarl/s-tpopsp__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__solaris.adb b/gcc/ada/libgnarl/s-tpopsp__solaris.adb index 4e5cd5b..fb85727 100644 --- a/gcc/ada/libgnarl/s-tpopsp__solaris.adb +++ b/gcc/ada/libgnarl/s-tpopsp__solaris.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__tls.adb b/gcc/ada/libgnarl/s-tpopsp__tls.adb index 59ea2bc..bc7120d 100644 --- a/gcc/ada/libgnarl/s-tpopsp__tls.adb +++ b/gcc/ada/libgnarl/s-tpopsp__tls.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb index 1343f6b..0dff281 100644 --- a/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb +++ b/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb index 5fe71d2..ef5c222 100644 --- a/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb +++ b/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb index 9dc5d8b..41d7fed 100644 --- a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb +++ b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tporft.adb b/gcc/ada/libgnarl/s-tporft.adb index b8ef156..60dbc78 100644 --- a/gcc/ada/libgnarl/s-tporft.adb +++ b/gcc/ada/libgnarl/s-tporft.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tposen.adb b/gcc/ada/libgnarl/s-tposen.adb index a1ecbe2..88c94a4 100644 --- a/gcc/ada/libgnarl/s-tposen.adb +++ b/gcc/ada/libgnarl/s-tposen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-tposen.ads b/gcc/ada/libgnarl/s-tposen.ads index f56906f..43a022d 100644 --- a/gcc/ada/libgnarl/s-tposen.ads +++ b/gcc/ada/libgnarl/s-tposen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext.adb b/gcc/ada/libgnarl/s-vxwext.adb index d50d93d..9c7db55 100644 --- a/gcc/ada/libgnarl/s-vxwext.adb +++ b/gcc/ada/libgnarl/s-vxwext.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext.ads b/gcc/ada/libgnarl/s-vxwext.ads index ab73415..5d18c5c 100644 --- a/gcc/ada/libgnarl/s-vxwext.ads +++ b/gcc/ada/libgnarl/s-vxwext.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb b/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb index b78e078..1aabcbf 100644 --- a/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb +++ b/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__kernel.adb b/gcc/ada/libgnarl/s-vxwext__kernel.adb index 2f00059..9653fac 100644 --- a/gcc/ada/libgnarl/s-vxwext__kernel.adb +++ b/gcc/ada/libgnarl/s-vxwext__kernel.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__kernel.ads b/gcc/ada/libgnarl/s-vxwext__kernel.ads index 7b299b9..76e71e3 100644 --- a/gcc/ada/libgnarl/s-vxwext__kernel.ads +++ b/gcc/ada/libgnarl/s-vxwext__kernel.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb b/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb index 5bf6ae5..2d8e0bc 100644 --- a/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb +++ b/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__rtp.adb b/gcc/ada/libgnarl/s-vxwext__rtp.adb index 543f152..d640f7a 100644 --- a/gcc/ada/libgnarl/s-vxwext__rtp.adb +++ b/gcc/ada/libgnarl/s-vxwext__rtp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwext__rtp.ads b/gcc/ada/libgnarl/s-vxwext__rtp.ads index 995d098..6097b8f 100644 --- a/gcc/ada/libgnarl/s-vxwext__rtp.ads +++ b/gcc/ada/libgnarl/s-vxwext__rtp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwork__aarch64.ads b/gcc/ada/libgnarl/s-vxwork__aarch64.ads index bf9d774..56dd2a7 100644 --- a/gcc/ada/libgnarl/s-vxwork__aarch64.ads +++ b/gcc/ada/libgnarl/s-vxwork__aarch64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwork__arm.ads b/gcc/ada/libgnarl/s-vxwork__arm.ads index 9e712dc..d9c94ac 100644 --- a/gcc/ada/libgnarl/s-vxwork__arm.ads +++ b/gcc/ada/libgnarl/s-vxwork__arm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwork__ppc.ads b/gcc/ada/libgnarl/s-vxwork__ppc.ads index 4fe277b..e3065f7 100644 --- a/gcc/ada/libgnarl/s-vxwork__ppc.ads +++ b/gcc/ada/libgnarl/s-vxwork__ppc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/s-vxwork__x86.ads b/gcc/ada/libgnarl/s-vxwork__x86.ads index df1ccda..c4dd602 100644 --- a/gcc/ada/libgnarl/s-vxwork__x86.ads +++ b/gcc/ada/libgnarl/s-vxwork__x86.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnarl/thread.c b/gcc/ada/libgnarl/thread.c index bf23742..d21bea3 100644 --- a/gcc/ada/libgnarl/thread.c +++ b/gcc/ada/libgnarl/thread.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2011-2021, Free Software Foundation, Inc. * + * Copyright (C) 2011-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/libgnat/a-assert.adb b/gcc/ada/libgnat/a-assert.adb index cbb97ac..6cce053 100644 --- a/gcc/ada/libgnat/a-assert.adb +++ b/gcc/ada/libgnat/a-assert.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-assert.ads b/gcc/ada/libgnat/a-assert.ads index 0a590d6..5bd8907 100644 --- a/gcc/ada/libgnat/a-assert.ads +++ b/gcc/ada/libgnat/a-assert.ads @@ -4,7 +4,7 @@ -- -- -- A D A . A S S E R T I O N S -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- S p e c -- -- -- @@ -39,8 +39,6 @@ pragma Assertion_Policy (Pre => Ignore); -pragma Compiler_Unit_Warning; - package Ada.Assertions with SPARK_Mode, Pure is diff --git a/gcc/ada/libgnat/a-btgbso.adb b/gcc/ada/libgnat/a-btgbso.adb index 0620a87..9df8743 100644 --- a/gcc/ada/libgnat/a-btgbso.adb +++ b/gcc/ada/libgnat/a-btgbso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-btgbso.ads b/gcc/ada/libgnat/a-btgbso.ads index da47c49..259e0d4 100644 --- a/gcc/ada/libgnat/a-btgbso.ads +++ b/gcc/ada/libgnat/a-btgbso.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-calari.adb b/gcc/ada/libgnat/a-calari.adb index 31b9c74..bb31a6f 100644 --- a/gcc/ada/libgnat/a-calari.adb +++ b/gcc/ada/libgnat/a-calari.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-calari.ads b/gcc/ada/libgnat/a-calari.ads index ad1fff4..498684a 100644 --- a/gcc/ada/libgnat/a-calari.ads +++ b/gcc/ada/libgnat/a-calari.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. In accordance with the copyright of that document, you can freely -- diff --git a/gcc/ada/libgnat/a-calcon.adb b/gcc/ada/libgnat/a-calcon.adb index 6a017a9..56b6b06 100644 --- a/gcc/ada/libgnat/a-calcon.adb +++ b/gcc/ada/libgnat/a-calcon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-calcon.ads b/gcc/ada/libgnat/a-calcon.ads index 5a8a19a..11bb350 100644 --- a/gcc/ada/libgnat/a-calcon.ads +++ b/gcc/ada/libgnat/a-calcon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-caldel.adb b/gcc/ada/libgnat/a-caldel.adb index 70877d0..3b91e31 100644 --- a/gcc/ada/libgnat/a-caldel.adb +++ b/gcc/ada/libgnat/a-caldel.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1991-2017, Florida State University -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-caldel.ads b/gcc/ada/libgnat/a-caldel.ads index eba238e..a15d531 100644 --- a/gcc/ada/libgnat/a-caldel.ads +++ b/gcc/ada/libgnat/a-caldel.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-calend.adb b/gcc/ada/libgnat/a-calend.adb index 3d7ae90..5e738b6 100644 --- a/gcc/ada/libgnat/a-calend.adb +++ b/gcc/ada/libgnat/a-calend.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -490,7 +490,6 @@ is Y : Year_Number; M : Month_Number; S : Day_Duration; - pragma Unreferenced (Y, M, S); begin Split (Date, Y, M, D, S); return D; @@ -537,7 +536,6 @@ is M : Month_Number; D : Day_Number; S : Day_Duration; - pragma Unreferenced (Y, D, S); begin Split (Date, Y, M, D, S); return M; @@ -552,7 +550,6 @@ is M : Month_Number; D : Day_Number; S : Day_Duration; - pragma Unreferenced (Y, M, D); begin Split (Date, Y, M, D, S); return S; @@ -575,8 +572,6 @@ is Ss : Duration; Le : Boolean; - pragma Unreferenced (H, M, Se, Ss, Le); - begin -- Even though the input time zone is UTC (0), the flag Use_TZ will -- ensure that Split picks up the local time zone. @@ -769,7 +764,6 @@ is M : Month_Number; D : Day_Number; S : Day_Duration; - pragma Unreferenced (M, D, S); begin Split (Date, Y, M, D, S); return Y; diff --git a/gcc/ada/libgnat/a-calend.ads b/gcc/ada/libgnat/a-calend.ads index caca8da..a01bbd6 100644 --- a/gcc/ada/libgnat/a-calend.ads +++ b/gcc/ada/libgnat/a-calend.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-calfor.adb b/gcc/ada/libgnat/a-calfor.adb index cb6c179..4b122ae 100644 --- a/gcc/ada/libgnat/a-calfor.adb +++ b/gcc/ada/libgnat/a-calfor.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with Ada.Calendar; use Ada.Calendar; with Ada.Calendar.Time_Zones; use Ada.Calendar.Time_Zones; package body Ada.Calendar.Formatting is @@ -100,8 +99,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, Mo, H, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone); return D; @@ -133,8 +130,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, Mo, D, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone); return H; @@ -291,8 +286,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, Mo, D, H); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone); return Mi; @@ -315,8 +308,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, D, H, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone); return Mo; @@ -336,8 +327,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, Mo, D, H, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le); return Se; @@ -584,8 +573,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Y, Mo, D, H, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le); return Ss; @@ -898,8 +885,6 @@ package body Ada.Calendar.Formatting is Ss : Second_Duration; Le : Boolean; - pragma Unreferenced (Mo, D, H, Mi); - begin Split (Date, Y, Mo, D, H, Mi, Se, Ss, Le, Time_Zone); return Y; diff --git a/gcc/ada/libgnat/a-calfor.ads b/gcc/ada/libgnat/a-calfor.ads index 2bc030b..b3f98d6 100644 --- a/gcc/ada/libgnat/a-calfor.ads +++ b/gcc/ada/libgnat/a-calfor.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. In accordance with the copyright of that document, you can freely -- diff --git a/gcc/ada/libgnat/a-catizo.adb b/gcc/ada/libgnat/a-catizo.adb index ec70122..5bd04be 100644 --- a/gcc/ada/libgnat/a-catizo.adb +++ b/gcc/ada/libgnat/a-catizo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cbdlli.adb b/gcc/ada/libgnat/a-cbdlli.adb index 3752ca9..540fc93 100644 --- a/gcc/ada/libgnat/a-cbdlli.adb +++ b/gcc/ada/libgnat/a-cbdlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -995,7 +995,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, Before, New_Item, Position, Count); end Insert; diff --git a/gcc/ada/libgnat/a-cbdlli.ads b/gcc/ada/libgnat/a-cbdlli.ads index 950bada..10be7ab 100644 --- a/gcc/ada/libgnat/a-cbdlli.ads +++ b/gcc/ada/libgnat/a-cbdlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cbhama.adb b/gcc/ada/libgnat/a-cbhama.adb index 26c01f5..59c4c7e 100644 --- a/gcc/ada/libgnat/a-cbhama.adb +++ b/gcc/ada/libgnat/a-cbhama.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -697,8 +697,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cbhama.ads b/gcc/ada/libgnat/a-cbhama.ads index cdd4135..6891a2f 100644 --- a/gcc/ada/libgnat/a-cbhama.ads +++ b/gcc/ada/libgnat/a-cbhama.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cbhase.adb b/gcc/ada/libgnat/a-cbhase.adb index 0c20341..3c1c7b4 100644 --- a/gcc/ada/libgnat/a-cbhase.adb +++ b/gcc/ada/libgnat/a-cbhase.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -736,8 +736,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cbhase.ads b/gcc/ada/libgnat/a-cbhase.ads index 78b31cf..c30a364 100644 --- a/gcc/ada/libgnat/a-cbhase.ads +++ b/gcc/ada/libgnat/a-cbhase.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cbmutr.adb b/gcc/ada/libgnat/a-cbmutr.adb index e80eb5c..405cbc1 100644 --- a/gcc/ada/libgnat/a-cbmutr.adb +++ b/gcc/ada/libgnat/a-cbmutr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1490,7 +1490,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert_Child (Container, Parent, Before, New_Item, Position, Count); diff --git a/gcc/ada/libgnat/a-cbmutr.ads b/gcc/ada/libgnat/a-cbmutr.ads index 3712039..2448eac 100644 --- a/gcc/ada/libgnat/a-cbmutr.ads +++ b/gcc/ada/libgnat/a-cbmutr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cborma.adb b/gcc/ada/libgnat/a-cborma.adb index f26a1e3..7ebc816 100644 --- a/gcc/ada/libgnat/a-cborma.adb +++ b/gcc/ada/libgnat/a-cborma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -824,8 +824,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cborma.ads b/gcc/ada/libgnat/a-cborma.ads index 9d40a51..5b0ed73 100644 --- a/gcc/ada/libgnat/a-cborma.ads +++ b/gcc/ada/libgnat/a-cborma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cborse.adb b/gcc/ada/libgnat/a-cborse.adb index 0328b16..55eca40 100644 --- a/gcc/ada/libgnat/a-cborse.adb +++ b/gcc/ada/libgnat/a-cborse.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1099,8 +1099,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin @@ -1180,7 +1178,6 @@ is Dst_Node : out Count_Type) is Success : Boolean; - pragma Unreferenced (Success); procedure Set_Element (Node : in out Node_Type); pragma Inline (Set_Element); @@ -1987,6 +1984,7 @@ is function To_Set (New_Item : Element_Type) return Set is Node : Count_Type; Inserted : Boolean; + begin return S : Set (1) do Insert_Sans_Hint (S, New_Item, Node, Inserted); diff --git a/gcc/ada/libgnat/a-cborse.ads b/gcc/ada/libgnat/a-cborse.ads index 31b8b91..ceaf885 100644 --- a/gcc/ada/libgnat/a-cborse.ads +++ b/gcc/ada/libgnat/a-cborse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cbprqu.adb b/gcc/ada/libgnat/a-cbprqu.adb index 1d04579..08f03a9 100644 --- a/gcc/ada/libgnat/a-cbprqu.adb +++ b/gcc/ada/libgnat/a-cbprqu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cbprqu.ads b/gcc/ada/libgnat/a-cbprqu.ads index ec08aea..d50ac7f 100644 --- a/gcc/ada/libgnat/a-cbprqu.ads +++ b/gcc/ada/libgnat/a-cbprqu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cbsyqu.adb b/gcc/ada/libgnat/a-cbsyqu.adb index e4e6725..095b4b3 100644 --- a/gcc/ada/libgnat/a-cbsyqu.adb +++ b/gcc/ada/libgnat/a-cbsyqu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cbsyqu.ads b/gcc/ada/libgnat/a-cbsyqu.ads index 8c8d5a6..ab1a11e 100644 --- a/gcc/ada/libgnat/a-cbsyqu.ads +++ b/gcc/ada/libgnat/a-cbsyqu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cdlili.adb b/gcc/ada/libgnat/a-cdlili.adb index 1d48ed9..5828607 100644 --- a/gcc/ada/libgnat/a-cdlili.adb +++ b/gcc/ada/libgnat/a-cdlili.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -810,7 +810,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, Before, New_Item, Position, Count); end Insert; diff --git a/gcc/ada/libgnat/a-cdlili.ads b/gcc/ada/libgnat/a-cdlili.ads index 66368b5..abfd011 100644 --- a/gcc/ada/libgnat/a-cdlili.ads +++ b/gcc/ada/libgnat/a-cdlili.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cfdlli.adb b/gcc/ada/libgnat/a-cfdlli.adb index c9897c7..14f0304 100644 --- a/gcc/ada/libgnat/a-cfdlli.adb +++ b/gcc/ada/libgnat/a-cfdlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cfdlli.ads b/gcc/ada/libgnat/a-cfdlli.ads index ded496b..521f4bf 100644 --- a/gcc/ada/libgnat/a-cfdlli.ads +++ b/gcc/ada/libgnat/a-cfdlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cfhama.adb b/gcc/ada/libgnat/a-cfhama.adb index 179b400..48950de 100644 --- a/gcc/ada/libgnat/a-cfhama.adb +++ b/gcc/ada/libgnat/a-cfhama.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -670,8 +670,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cfhama.ads b/gcc/ada/libgnat/a-cfhama.ads index 59e295d..37024f0 100644 --- a/gcc/ada/libgnat/a-cfhama.ads +++ b/gcc/ada/libgnat/a-cfhama.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cfhase.adb b/gcc/ada/libgnat/a-cfhase.adb index cdb8a98..6e289e4 100644 --- a/gcc/ada/libgnat/a-cfhase.adb +++ b/gcc/ada/libgnat/a-cfhase.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -949,7 +949,7 @@ is (Vet (Container, Position), "bad cursor in function Key"); declare - N : Node_Type renames Container.Content.Nodes (Position.Node); + N : Node_Type renames Container.Content.Nodes (Position.Node); begin return Key (N.Element); end; diff --git a/gcc/ada/libgnat/a-cfhase.ads b/gcc/ada/libgnat/a-cfhase.ads index 23b3b6d..425824d 100644 --- a/gcc/ada/libgnat/a-cfhase.ads +++ b/gcc/ada/libgnat/a-cfhase.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cfinve.adb b/gcc/ada/libgnat/a-cfinve.adb index 4770608..17b57cb 100644 --- a/gcc/ada/libgnat/a-cfinve.adb +++ b/gcc/ada/libgnat/a-cfinve.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cfinve.ads b/gcc/ada/libgnat/a-cfinve.ads index bd0c334..ec6af99 100644 --- a/gcc/ada/libgnat/a-cfinve.ads +++ b/gcc/ada/libgnat/a-cfinve.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cforma.adb b/gcc/ada/libgnat/a-cforma.adb index 45f9be7..79f25f8 100644 --- a/gcc/ada/libgnat/a-cforma.adb +++ b/gcc/ada/libgnat/a-cforma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cforma.ads b/gcc/ada/libgnat/a-cforma.ads index 048e7cb..1e3c57b 100644 --- a/gcc/ada/libgnat/a-cforma.ads +++ b/gcc/ada/libgnat/a-cforma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cforse.adb b/gcc/ada/libgnat/a-cforse.adb index 7c45e4f..3b64511 100644 --- a/gcc/ada/libgnat/a-cforse.adb +++ b/gcc/ada/libgnat/a-cforse.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -429,7 +429,7 @@ is ------------------ procedure Delete_First (Container : in out Set) is - X : constant Count_Type := Container.Content.First; + X : constant Count_Type := Container.Content.First; begin if X /= 0 then Tree_Operations.Delete_Node_Sans_Free (Container.Content, X); @@ -442,7 +442,7 @@ is ----------------- procedure Delete_Last (Container : in out Set) is - X : constant Count_Type := Container.Content.Last; + X : constant Count_Type := Container.Content.Last; begin if X /= 0 then Tree_Operations.Delete_Node_Sans_Free (Container.Content, X); @@ -1420,7 +1420,6 @@ is Dst_Node : out Count_Type) is Success : Boolean; - pragma Unreferenced (Success); procedure Set_Element (Node : in out Node_Type); @@ -1742,7 +1741,7 @@ is -------------- function New_Node return Count_Type is - N : Node_Type renames NN (Node); + N : Node_Type renames NN (Node); begin N.Element := Item; N.Color := Red; @@ -1900,6 +1899,7 @@ is function To_Set (New_Item : Element_Type) return Set is Node : Count_Type; Inserted : Boolean; + begin return S : Set (Capacity => 1) do Insert_Sans_Hint (S.Content, New_Item, Node, Inserted); diff --git a/gcc/ada/libgnat/a-cforse.ads b/gcc/ada/libgnat/a-cforse.ads index db7c586..a736b48 100644 --- a/gcc/ada/libgnat/a-cforse.ads +++ b/gcc/ada/libgnat/a-cforse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cgaaso.adb b/gcc/ada/libgnat/a-cgaaso.adb index ec4952c..39cfefb 100644 --- a/gcc/ada/libgnat/a-cgaaso.adb +++ b/gcc/ada/libgnat/a-cgaaso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cgaaso.ads b/gcc/ada/libgnat/a-cgaaso.ads index cfa858a..30f92b8 100644 --- a/gcc/ada/libgnat/a-cgaaso.ads +++ b/gcc/ada/libgnat/a-cgaaso.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cgarso.adb b/gcc/ada/libgnat/a-cgarso.adb index 18a20e7..8ba2536 100644 --- a/gcc/ada/libgnat/a-cgarso.adb +++ b/gcc/ada/libgnat/a-cgarso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cgcaso.adb b/gcc/ada/libgnat/a-cgcaso.adb index ca4f14a..e0d066d 100644 --- a/gcc/ada/libgnat/a-cgcaso.adb +++ b/gcc/ada/libgnat/a-cgcaso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chacon.adb b/gcc/ada/libgnat/a-chacon.adb index dbb1b0e..7cc0399 100644 --- a/gcc/ada/libgnat/a-chacon.adb +++ b/gcc/ada/libgnat/a-chacon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chacon.ads b/gcc/ada/libgnat/a-chacon.ads index 6f611f5..79df94d 100644 --- a/gcc/ada/libgnat/a-chacon.ads +++ b/gcc/ada/libgnat/a-chacon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-chahan.adb b/gcc/ada/libgnat/a-chahan.adb index 387af42..97fc313 100644 --- a/gcc/ada/libgnat/a-chahan.adb +++ b/gcc/ada/libgnat/a-chahan.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chahan.ads b/gcc/ada/libgnat/a-chahan.ads index 093237d..e98cda3 100644 --- a/gcc/ada/libgnat/a-chahan.ads +++ b/gcc/ada/libgnat/a-chahan.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-chlat1.ads b/gcc/ada/libgnat/a-chlat1.ads index 2e20d92..f0a9006 100644 --- a/gcc/ada/libgnat/a-chlat1.ads +++ b/gcc/ada/libgnat/a-chlat1.ads @@ -13,8 +13,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package Ada.Characters.Latin_1 is pragma Pure; diff --git a/gcc/ada/libgnat/a-chlat9.ads b/gcc/ada/libgnat/a-chlat9.ads index 53ce457..ede5793 100644 --- a/gcc/ada/libgnat/a-chlat9.ads +++ b/gcc/ada/libgnat/a-chlat9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-chtgbk.adb b/gcc/ada/libgnat/a-chtgbk.adb index 148b92d..bbc1969 100644 --- a/gcc/ada/libgnat/a-chtgbk.adb +++ b/gcc/ada/libgnat/a-chtgbk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgbk.ads b/gcc/ada/libgnat/a-chtgbk.ads index edeca72..55a4a6b 100644 --- a/gcc/ada/libgnat/a-chtgbk.ads +++ b/gcc/ada/libgnat/a-chtgbk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgbo.adb b/gcc/ada/libgnat/a-chtgbo.adb index e6db47f..2ffc923 100644 --- a/gcc/ada/libgnat/a-chtgbo.adb +++ b/gcc/ada/libgnat/a-chtgbo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -439,7 +439,7 @@ package body Ada.Containers.Hash_Tables.Generic_Bounded_Operations is (Stream : not null access Root_Stream_Type'Class; HT : out Hash_Table_Type'Class) is - N : Count_Type'Base; + N : Count_Type'Base; begin Clear (HT); diff --git a/gcc/ada/libgnat/a-chtgbo.ads b/gcc/ada/libgnat/a-chtgbo.ads index 1779c79..cd27739 100644 --- a/gcc/ada/libgnat/a-chtgbo.ads +++ b/gcc/ada/libgnat/a-chtgbo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgke.adb b/gcc/ada/libgnat/a-chtgke.adb index 76c7e1b..bb9dd428 100644 --- a/gcc/ada/libgnat/a-chtgke.adb +++ b/gcc/ada/libgnat/a-chtgke.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgke.ads b/gcc/ada/libgnat/a-chtgke.ads index 1445369..940e534 100644 --- a/gcc/ada/libgnat/a-chtgke.ads +++ b/gcc/ada/libgnat/a-chtgke.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgop.adb b/gcc/ada/libgnat/a-chtgop.adb index 7250488..658b24b 100644 --- a/gcc/ada/libgnat/a-chtgop.adb +++ b/gcc/ada/libgnat/a-chtgop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chtgop.ads b/gcc/ada/libgnat/a-chtgop.ads index a2081dd..b921495 100644 --- a/gcc/ada/libgnat/a-chtgop.ads +++ b/gcc/ada/libgnat/a-chtgop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chzla1.ads b/gcc/ada/libgnat/a-chzla1.ads index 3d27eba..67d7269 100644 --- a/gcc/ada/libgnat/a-chzla1.ads +++ b/gcc/ada/libgnat/a-chzla1.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-chzla9.ads b/gcc/ada/libgnat/a-chzla9.ads index 0359309..a1bb09f 100644 --- a/gcc/ada/libgnat/a-chzla9.ads +++ b/gcc/ada/libgnat/a-chzla9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cidlli.adb b/gcc/ada/libgnat/a-cidlli.adb index 1cf9401..9a11f4c 100644 --- a/gcc/ada/libgnat/a-cidlli.adb +++ b/gcc/ada/libgnat/a-cidlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -902,7 +902,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, Before, New_Item, Position, Count); end Insert; diff --git a/gcc/ada/libgnat/a-cidlli.ads b/gcc/ada/libgnat/a-cidlli.ads index c8794a3..35ca010 100644 --- a/gcc/ada/libgnat/a-cidlli.ads +++ b/gcc/ada/libgnat/a-cidlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cihama.adb b/gcc/ada/libgnat/a-cihama.adb index 2fbf65e..4734e64 100644 --- a/gcc/ada/libgnat/a-cihama.adb +++ b/gcc/ada/libgnat/a-cihama.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -758,8 +758,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cihama.ads b/gcc/ada/libgnat/a-cihama.ads index 056f338..8a5f180 100644 --- a/gcc/ada/libgnat/a-cihama.ads +++ b/gcc/ada/libgnat/a-cihama.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cihase.adb b/gcc/ada/libgnat/a-cihase.adb index 79a1fe6..cb55bbb 100644 --- a/gcc/ada/libgnat/a-cihase.adb +++ b/gcc/ada/libgnat/a-cihase.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -854,8 +854,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin @@ -1728,7 +1726,6 @@ is HT : Hash_Table_Type; Node : Node_Access; Inserted : Boolean; - pragma Unreferenced (Node, Inserted); begin Insert (HT, New_Item, Node, Inserted); return Set'(Controlled with HT); @@ -1776,7 +1773,6 @@ is Tgt_Node : Node_Access; Success : Boolean; - pragma Unreferenced (Tgt_Node, Success); -- Start of processing for Process diff --git a/gcc/ada/libgnat/a-cihase.ads b/gcc/ada/libgnat/a-cihase.ads index a73e898..cff713d 100644 --- a/gcc/ada/libgnat/a-cihase.ads +++ b/gcc/ada/libgnat/a-cihase.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cimutr.adb b/gcc/ada/libgnat/a-cimutr.adb index aa7efac..5a066fb 100644 --- a/gcc/ada/libgnat/a-cimutr.adb +++ b/gcc/ada/libgnat/a-cimutr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1175,7 +1175,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert_Child (Container, Parent, Before, New_Item, Position, Count); diff --git a/gcc/ada/libgnat/a-cimutr.ads b/gcc/ada/libgnat/a-cimutr.ads index 014d1fe..2bb1208 100644 --- a/gcc/ada/libgnat/a-cimutr.ads +++ b/gcc/ada/libgnat/a-cimutr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ciorma.adb b/gcc/ada/libgnat/a-ciorma.adb index a569156..a39a2f1 100644 --- a/gcc/ada/libgnat/a-ciorma.adb +++ b/gcc/ada/libgnat/a-ciorma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -866,8 +866,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-ciorma.ads b/gcc/ada/libgnat/a-ciorma.ads index 157714d..e4fd90d 100644 --- a/gcc/ada/libgnat/a-ciorma.ads +++ b/gcc/ada/libgnat/a-ciorma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ciormu.adb b/gcc/ada/libgnat/a-ciormu.adb index f1b9021..2ff512b 100644 --- a/gcc/ada/libgnat/a-ciormu.adb +++ b/gcc/ada/libgnat/a-ciormu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1120,7 +1120,6 @@ is procedure Insert (Container : in out Set; New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, New_Item, Position); end Insert; @@ -1975,7 +1974,6 @@ is function To_Set (New_Item : Element_Type) return Set is Tree : Tree_Type; Node : Node_Access; - pragma Unreferenced (Node); begin Insert_Sans_Hint (Tree, New_Item, Node); return Set'(Controlled with Tree); diff --git a/gcc/ada/libgnat/a-ciormu.ads b/gcc/ada/libgnat/a-ciormu.ads index cf8ea0d..9a5dd98 100644 --- a/gcc/ada/libgnat/a-ciormu.ads +++ b/gcc/ada/libgnat/a-ciormu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ciorse.adb b/gcc/ada/libgnat/a-ciorse.adb index 4af4f89..b23b252 100644 --- a/gcc/ada/libgnat/a-ciorse.adb +++ b/gcc/ada/libgnat/a-ciorse.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1160,8 +1160,6 @@ is procedure Insert (Container : in out Set; New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin @@ -1239,7 +1237,6 @@ is Dst_Node : out Node_Access) is Success : Boolean; - pragma Unreferenced (Success); function New_Node return Node_Access; @@ -2120,7 +2117,6 @@ is Tree : Tree_Type; Node : Node_Access; Inserted : Boolean; - pragma Unreferenced (Node, Inserted); begin Insert_Sans_Hint (Tree, New_Item, Node, Inserted); return Set'(Controlled with Tree); diff --git a/gcc/ada/libgnat/a-ciorse.ads b/gcc/ada/libgnat/a-ciorse.ads index 1a9d82c..13272e2 100644 --- a/gcc/ada/libgnat/a-ciorse.ads +++ b/gcc/ada/libgnat/a-ciorse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-clrefi.adb b/gcc/ada/libgnat/a-clrefi.adb index 1bcb370..cdeeedd 100644 --- a/gcc/ada/libgnat/a-clrefi.adb +++ b/gcc/ada/libgnat/a-clrefi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-clrefi.ads b/gcc/ada/libgnat/a-clrefi.ads index bb31bee..f9d7ae0 100644 --- a/gcc/ada/libgnat/a-clrefi.ads +++ b/gcc/ada/libgnat/a-clrefi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coboho.adb b/gcc/ada/libgnat/a-coboho.adb index 21b9f54..db885b4 100644 --- a/gcc/ada/libgnat/a-coboho.adb +++ b/gcc/ada/libgnat/a-coboho.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coboho.ads b/gcc/ada/libgnat/a-coboho.ads index 44269f0..f0a8e52 100644 --- a/gcc/ada/libgnat/a-coboho.ads +++ b/gcc/ada/libgnat/a-coboho.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cobove.adb b/gcc/ada/libgnat/a-cobove.adb index f340f23..70483f5 100644 --- a/gcc/ada/libgnat/a-cobove.adb +++ b/gcc/ada/libgnat/a-cobove.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cobove.ads b/gcc/ada/libgnat/a-cobove.ads index 5f3e1a7..8e0f80f 100644 --- a/gcc/ada/libgnat/a-cobove.ads +++ b/gcc/ada/libgnat/a-cobove.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofove.adb b/gcc/ada/libgnat/a-cofove.adb index 4031e99..5f10f57 100644 --- a/gcc/ada/libgnat/a-cofove.adb +++ b/gcc/ada/libgnat/a-cofove.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cofove.ads b/gcc/ada/libgnat/a-cofove.ads index 6d3f486..edf9532 100644 --- a/gcc/ada/libgnat/a-cofove.ads +++ b/gcc/ada/libgnat/a-cofove.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuba.adb b/gcc/ada/libgnat/a-cofuba.adb index b290c74..77c0301 100644 --- a/gcc/ada/libgnat/a-cofuba.adb +++ b/gcc/ada/libgnat/a-cofuba.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuba.ads b/gcc/ada/libgnat/a-cofuba.ads index 1640b03..eacf845 100644 --- a/gcc/ada/libgnat/a-cofuba.ads +++ b/gcc/ada/libgnat/a-cofuba.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuma.adb b/gcc/ada/libgnat/a-cofuma.adb index 2b21b0c..080229d 100644 --- a/gcc/ada/libgnat/a-cofuma.adb +++ b/gcc/ada/libgnat/a-cofuma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuma.ads b/gcc/ada/libgnat/a-cofuma.ads index a1dd764..3f61b63 100644 --- a/gcc/ada/libgnat/a-cofuma.ads +++ b/gcc/ada/libgnat/a-cofuma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuse.adb b/gcc/ada/libgnat/a-cofuse.adb index 1c5f25b..0157988 100644 --- a/gcc/ada/libgnat/a-cofuse.adb +++ b/gcc/ada/libgnat/a-cofuse.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuse.ads b/gcc/ada/libgnat/a-cofuse.ads index d0acba7..db88b9a 100644 --- a/gcc/ada/libgnat/a-cofuse.ads +++ b/gcc/ada/libgnat/a-cofuse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuve.adb b/gcc/ada/libgnat/a-cofuve.adb index b4f972c..06075b1 100644 --- a/gcc/ada/libgnat/a-cofuve.adb +++ b/gcc/ada/libgnat/a-cofuve.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cofuve.ads b/gcc/ada/libgnat/a-cofuve.ads index ee52730..ce3a3a4 100644 --- a/gcc/ada/libgnat/a-cofuve.ads +++ b/gcc/ada/libgnat/a-cofuve.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2016-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -303,7 +303,7 @@ package Ada.Containers.Functional_Vectors with SPARK_Mode is and then Get (Add'Result, Position) = New_Item and then Range_Equal (Left => Container, - Right => Add'Result, + Right => Add'Result, Fst => Index_Type'First, Lst => Index_Type'Pred (Position)) and then Range_Shifted diff --git a/gcc/ada/libgnat/a-cogeso.adb b/gcc/ada/libgnat/a-cogeso.adb index ebbc118..e589b5b 100644 --- a/gcc/ada/libgnat/a-cogeso.adb +++ b/gcc/ada/libgnat/a-cogeso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cogeso.ads b/gcc/ada/libgnat/a-cogeso.ads index 810b93b..2193df2 100644 --- a/gcc/ada/libgnat/a-cogeso.ads +++ b/gcc/ada/libgnat/a-cogeso.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cohama.adb b/gcc/ada/libgnat/a-cohama.adb index e6d6e4d..2fcf4c8 100644 --- a/gcc/ada/libgnat/a-cohama.adb +++ b/gcc/ada/libgnat/a-cohama.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -698,8 +698,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-cohama.ads b/gcc/ada/libgnat/a-cohama.ads index 3f172bd..96ac164 100644 --- a/gcc/ada/libgnat/a-cohama.ads +++ b/gcc/ada/libgnat/a-cohama.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cohase.adb b/gcc/ada/libgnat/a-cohase.adb index 6a4c121..e9662cc 100644 --- a/gcc/ada/libgnat/a-cohase.adb +++ b/gcc/ada/libgnat/a-cohase.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -785,8 +785,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin @@ -1562,7 +1560,6 @@ is Node : Node_Access; Inserted : Boolean; - pragma Unreferenced (Node, Inserted); begin Insert (HT, New_Item, Node, Inserted); @@ -1606,7 +1603,6 @@ is Tgt_Node : Node_Access; Success : Boolean; - pragma Unreferenced (Tgt_Node, Success); -- Start of processing for Process diff --git a/gcc/ada/libgnat/a-cohase.ads b/gcc/ada/libgnat/a-cohase.ads index 2356ba7..ada212c 100644 --- a/gcc/ada/libgnat/a-cohase.ads +++ b/gcc/ada/libgnat/a-cohase.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cohata.ads b/gcc/ada/libgnat/a-cohata.ads index a52f542..2c56321 100644 --- a/gcc/ada/libgnat/a-cohata.ads +++ b/gcc/ada/libgnat/a-cohata.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coinho.adb b/gcc/ada/libgnat/a-coinho.adb index ca6882a..fddc16b 100644 --- a/gcc/ada/libgnat/a-coinho.adb +++ b/gcc/ada/libgnat/a-coinho.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coinho.ads b/gcc/ada/libgnat/a-coinho.ads index d09f7cf..e574914 100644 --- a/gcc/ada/libgnat/a-coinho.ads +++ b/gcc/ada/libgnat/a-coinho.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-coinho__shared.adb b/gcc/ada/libgnat/a-coinho__shared.adb index 0340af0..d540612 100644 --- a/gcc/ada/libgnat/a-coinho__shared.adb +++ b/gcc/ada/libgnat/a-coinho__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coinho__shared.ads b/gcc/ada/libgnat/a-coinho__shared.ads index 27a0ca8..0fcbef9 100644 --- a/gcc/ada/libgnat/a-coinho__shared.ads +++ b/gcc/ada/libgnat/a-coinho__shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-coinve.adb b/gcc/ada/libgnat/a-coinve.adb index 7ed88a5..c84175a 100644 --- a/gcc/ada/libgnat/a-coinve.adb +++ b/gcc/ada/libgnat/a-coinve.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coinve.ads b/gcc/ada/libgnat/a-coinve.ads index 828ed29..840ef5a 100644 --- a/gcc/ada/libgnat/a-coinve.ads +++ b/gcc/ada/libgnat/a-coinve.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-colien.adb b/gcc/ada/libgnat/a-colien.adb index b189505..122f665 100644 --- a/gcc/ada/libgnat/a-colien.adb +++ b/gcc/ada/libgnat/a-colien.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-colien.ads b/gcc/ada/libgnat/a-colien.ads index 0c20486..e8fee69 100644 --- a/gcc/ada/libgnat/a-colien.ads +++ b/gcc/ada/libgnat/a-colien.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-colire.adb b/gcc/ada/libgnat/a-colire.adb index e39d002..cd083b9 100644 --- a/gcc/ada/libgnat/a-colire.adb +++ b/gcc/ada/libgnat/a-colire.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-colire.ads b/gcc/ada/libgnat/a-colire.ads index c1d79b8..8ba18ea 100644 --- a/gcc/ada/libgnat/a-colire.ads +++ b/gcc/ada/libgnat/a-colire.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-comlin.adb b/gcc/ada/libgnat/a-comlin.adb index 171b061..b750ad9 100644 --- a/gcc/ada/libgnat/a-comlin.adb +++ b/gcc/ada/libgnat/a-comlin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-comlin.ads b/gcc/ada/libgnat/a-comlin.ads index d8149cf..5eddbfc 100644 --- a/gcc/ada/libgnat/a-comlin.ads +++ b/gcc/ada/libgnat/a-comlin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-comutr.adb b/gcc/ada/libgnat/a-comutr.adb index 617d248..ddc2f36 100644 --- a/gcc/ada/libgnat/a-comutr.adb +++ b/gcc/ada/libgnat/a-comutr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1130,7 +1130,6 @@ is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert_Child (Container, Parent, Before, New_Item, Position, Count); diff --git a/gcc/ada/libgnat/a-comutr.ads b/gcc/ada/libgnat/a-comutr.ads index 8e88b14..9b04a4b 100644 --- a/gcc/ada/libgnat/a-comutr.ads +++ b/gcc/ada/libgnat/a-comutr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-conhel.adb b/gcc/ada/libgnat/a-conhel.adb index 316c866..b24be67 100644 --- a/gcc/ada/libgnat/a-conhel.adb +++ b/gcc/ada/libgnat/a-conhel.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-conhel.ads b/gcc/ada/libgnat/a-conhel.ads index 47cb2ce..47811f5 100644 --- a/gcc/ada/libgnat/a-conhel.ads +++ b/gcc/ada/libgnat/a-conhel.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-convec.adb b/gcc/ada/libgnat/a-convec.adb index 6f39ceb..3a2adae 100644 --- a/gcc/ada/libgnat/a-convec.adb +++ b/gcc/ada/libgnat/a-convec.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1264,6 +1264,7 @@ is declare SA : Elements_Array renames Container.Elements.EA; -- source DA : Elements_Array renames Dst.EA; -- destination + pragma Unreferenced (DA); begin DA (Index_Type'First .. Before - 1) := @@ -1918,6 +1919,7 @@ is declare SA : Elements_Array renames Container.Elements.EA; -- source DA : Elements_Array renames Dst.EA; -- destination + pragma Unreferenced (DA); begin DA (Index_Type'First .. Before - 1) := diff --git a/gcc/ada/libgnat/a-convec.ads b/gcc/ada/libgnat/a-convec.ads index 41eafbc..c024ce5 100644 --- a/gcc/ada/libgnat/a-convec.ads +++ b/gcc/ada/libgnat/a-convec.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-coorma.adb b/gcc/ada/libgnat/a-coorma.adb index 65adf4c..434e87a 100644 --- a/gcc/ada/libgnat/a-coorma.adb +++ b/gcc/ada/libgnat/a-coorma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -752,8 +752,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin diff --git a/gcc/ada/libgnat/a-coorma.ads b/gcc/ada/libgnat/a-coorma.ads index 5de65c1..7922e7b 100644 --- a/gcc/ada/libgnat/a-coorma.ads +++ b/gcc/ada/libgnat/a-coorma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-coormu.adb b/gcc/ada/libgnat/a-coormu.adb index 9b11d29..8008acf 100644 --- a/gcc/ada/libgnat/a-coormu.adb +++ b/gcc/ada/libgnat/a-coormu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1053,7 +1053,6 @@ is procedure Insert (Container : in out Set; New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, New_Item, Position); end Insert; @@ -1858,7 +1857,6 @@ is function To_Set (New_Item : Element_Type) return Set is Tree : Tree_Type; Node : Node_Access; - pragma Unreferenced (Node); begin Insert_Sans_Hint (Tree, New_Item, Node); return Set'(Controlled with Tree); diff --git a/gcc/ada/libgnat/a-coormu.ads b/gcc/ada/libgnat/a-coormu.ads index 51b94eb..2fc91ee 100644 --- a/gcc/ada/libgnat/a-coormu.ads +++ b/gcc/ada/libgnat/a-coormu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coorse.adb b/gcc/ada/libgnat/a-coorse.adb index 0cb85c5..7998ee8 100644 --- a/gcc/ada/libgnat/a-coorse.adb +++ b/gcc/ada/libgnat/a-coorse.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1057,8 +1057,6 @@ is New_Item : Element_Type) is Position : Cursor; - pragma Unreferenced (Position); - Inserted : Boolean; begin @@ -1123,7 +1121,6 @@ is Dst_Node : out Node_Access) is Success : Boolean; - pragma Unreferenced (Success); function New_Node return Node_Access; pragma Inline (New_Node); @@ -1935,7 +1932,6 @@ is Tree : Tree_Type; Node : Node_Access; Inserted : Boolean; - pragma Unreferenced (Node, Inserted); begin Insert_Sans_Hint (Tree, New_Item, Node, Inserted); return Set'(Controlled with Tree); diff --git a/gcc/ada/libgnat/a-coorse.ads b/gcc/ada/libgnat/a-coorse.ads index 6d24e03..1833336 100644 --- a/gcc/ada/libgnat/a-coorse.ads +++ b/gcc/ada/libgnat/a-coorse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-coprnu.adb b/gcc/ada/libgnat/a-coprnu.adb index 20837d4..972e4c0 100644 --- a/gcc/ada/libgnat/a-coprnu.adb +++ b/gcc/ada/libgnat/a-coprnu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-coprnu.ads b/gcc/ada/libgnat/a-coprnu.ads index 8a267fb..3b7eb65 100644 --- a/gcc/ada/libgnat/a-coprnu.ads +++ b/gcc/ada/libgnat/a-coprnu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-costso.adb b/gcc/ada/libgnat/a-costso.adb index e14ecbb..44436d6 100644 --- a/gcc/ada/libgnat/a-costso.adb +++ b/gcc/ada/libgnat/a-costso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-costso.ads b/gcc/ada/libgnat/a-costso.ads index db0be24..9e2178c 100644 --- a/gcc/ada/libgnat/a-costso.ads +++ b/gcc/ada/libgnat/a-costso.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crbltr.ads b/gcc/ada/libgnat/a-crbltr.ads index 7f5028d..10dd935 100644 --- a/gcc/ada/libgnat/a-crbltr.ads +++ b/gcc/ada/libgnat/a-crbltr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crbtgk.adb b/gcc/ada/libgnat/a-crbtgk.adb index 8af0923..79641f1 100644 --- a/gcc/ada/libgnat/a-crbtgk.adb +++ b/gcc/ada/libgnat/a-crbtgk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crbtgk.ads b/gcc/ada/libgnat/a-crbtgk.ads index a7c597c..00ab08a 100644 --- a/gcc/ada/libgnat/a-crbtgk.ads +++ b/gcc/ada/libgnat/a-crbtgk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crbtgo.adb b/gcc/ada/libgnat/a-crbtgo.adb index 467b1b7..7757aad 100644 --- a/gcc/ada/libgnat/a-crbtgo.adb +++ b/gcc/ada/libgnat/a-crbtgo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crbtgo.ads b/gcc/ada/libgnat/a-crbtgo.ads index 00e5a6d..fde9c45 100644 --- a/gcc/ada/libgnat/a-crbtgo.ads +++ b/gcc/ada/libgnat/a-crbtgo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-crdlli.adb b/gcc/ada/libgnat/a-crdlli.adb index 48cdb0c..a5fe431 100644 --- a/gcc/ada/libgnat/a-crdlli.adb +++ b/gcc/ada/libgnat/a-crdlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -630,7 +630,6 @@ package body Ada.Containers.Restricted_Doubly_Linked_Lists is Count : Count_Type := 1) is Position : Cursor; - pragma Unreferenced (Position); begin Insert (Container, Before, New_Item, Position, Count); end Insert; @@ -1317,7 +1316,7 @@ package body Ada.Containers.Restricted_Doubly_Linked_Lists is pragma Assert (Vet (Position), "bad cursor in Update_Element"); declare - N : Node_Type renames Container.Nodes (Position.Node); + N : Node_Type renames Container.Nodes (Position.Node); begin Process (N.Element); diff --git a/gcc/ada/libgnat/a-crdlli.ads b/gcc/ada/libgnat/a-crdlli.ads index ea693c3..8faef33 100644 --- a/gcc/ada/libgnat/a-crdlli.ads +++ b/gcc/ada/libgnat/a-crdlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-csquin.ads b/gcc/ada/libgnat/a-csquin.ads index 95e334e..414fbaa 100644 --- a/gcc/ada/libgnat/a-csquin.ads +++ b/gcc/ada/libgnat/a-csquin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cuprqu.adb b/gcc/ada/libgnat/a-cuprqu.adb index d0a4e64..d4684f8 100644 --- a/gcc/ada/libgnat/a-cuprqu.adb +++ b/gcc/ada/libgnat/a-cuprqu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cuprqu.ads b/gcc/ada/libgnat/a-cuprqu.ads index 4367fe6..aec7e28 100644 --- a/gcc/ada/libgnat/a-cuprqu.ads +++ b/gcc/ada/libgnat/a-cuprqu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cusyqu.adb b/gcc/ada/libgnat/a-cusyqu.adb index 85a0747..5aabd57 100644 --- a/gcc/ada/libgnat/a-cusyqu.adb +++ b/gcc/ada/libgnat/a-cusyqu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cusyqu.ads b/gcc/ada/libgnat/a-cusyqu.ads index 407359d..645ecd9 100644 --- a/gcc/ada/libgnat/a-cusyqu.ads +++ b/gcc/ada/libgnat/a-cusyqu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-cwila1.ads b/gcc/ada/libgnat/a-cwila1.ads index 830fb47..b356ede 100644 --- a/gcc/ada/libgnat/a-cwila1.ads +++ b/gcc/ada/libgnat/a-cwila1.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-cwila9.ads b/gcc/ada/libgnat/a-cwila9.ads index 5545c14..ca9b7ab 100644 --- a/gcc/ada/libgnat/a-cwila9.ads +++ b/gcc/ada/libgnat/a-cwila9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-decima.adb b/gcc/ada/libgnat/a-decima.adb index 9afe287..c16222f 100644 --- a/gcc/ada/libgnat/a-decima.adb +++ b/gcc/ada/libgnat/a-decima.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-decima.ads b/gcc/ada/libgnat/a-decima.ads index 7ccd9f0..e0abe92 100644 --- a/gcc/ada/libgnat/a-decima.ads +++ b/gcc/ada/libgnat/a-decima.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-decima__128.ads b/gcc/ada/libgnat/a-decima__128.ads index aa87ccf..f988f77 100644 --- a/gcc/ada/libgnat/a-decima__128.ads +++ b/gcc/ada/libgnat/a-decima__128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-dhfina.adb b/gcc/ada/libgnat/a-dhfina.adb index 4f0f033..3b7a358 100644 --- a/gcc/ada/libgnat/a-dhfina.adb +++ b/gcc/ada/libgnat/a-dhfina.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-dhfina.ads b/gcc/ada/libgnat/a-dhfina.ads index d760251..4ef73d0 100644 --- a/gcc/ada/libgnat/a-dhfina.ads +++ b/gcc/ada/libgnat/a-dhfina.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-diocst.adb b/gcc/ada/libgnat/a-diocst.adb index f3e08fe..72fb279 100644 --- a/gcc/ada/libgnat/a-diocst.adb +++ b/gcc/ada/libgnat/a-diocst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-diocst.ads b/gcc/ada/libgnat/a-diocst.ads index 6454c91..9d0d90b 100644 --- a/gcc/ada/libgnat/a-diocst.ads +++ b/gcc/ada/libgnat/a-diocst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-direct.adb b/gcc/ada/libgnat/a-direct.adb index 41dca3c..4d7288e 100644 --- a/gcc/ada/libgnat/a-direct.adb +++ b/gcc/ada/libgnat/a-direct.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,12 +31,14 @@ with Ada.Calendar; use Ada.Calendar; with Ada.Characters.Handling; use Ada.Characters.Handling; +with Ada.Containers.Vectors; with Ada.Directories.Validity; use Ada.Directories.Validity; with Ada.Directories.Hierarchical_File_Names; -use Ada.Directories.Hierarchical_File_Names; +use Ada.Directories.Hierarchical_File_Names; with Ada.Strings.Fixed; with Ada.Strings.Maps; use Ada.Strings.Maps; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; +with Ada.Unchecked_Conversion; with Ada.Unchecked_Deallocation; with Interfaces.C; @@ -78,40 +80,56 @@ package body Ada.Directories is -- Result returned from C_Modification_Time call when routine unable to get -- file modification time. - type Search_Data is record - Is_Valid : Boolean := False; - Name : Unbounded_String; - Pattern : Regexp; - Filter : Filter_Type; - Dir : Dir_Type_Value := No_Dir; - Entry_Fetched : Boolean := False; - Dir_Entry : Directory_Entry_Type; - end record; - -- The current state of a search - Empty_String : constant String := ""; -- Empty string, returned by function Extension when there is no extension - procedure Free is new Ada.Unchecked_Deallocation (Search_Data, Search_Ptr); + ---------------------------- + -- Directory Search Types -- + ---------------------------- + + package Directory_Vectors is new + Ada.Containers.Vectors + (Index_Type => Natural, + Element_Type => Directory_Entry_Type); + use Directory_Vectors; + -- Used to store the results of the directory search + + type Dir_Contents_Ptr is access Directory_Vectors.Vector; + + procedure Free is new Ada.Unchecked_Deallocation + (Directory_Vectors.Vector, Dir_Contents_Ptr); + -- Directory_Vectors.Vector deallocation routine + + type Search_State is new Ada.Finalization.Controlled with record + Dir_Contents : Dir_Contents_Ptr; + Next_Entry : Cursor; + end record; + -- The Search_State consists of a vector of directory items that match the + -- search pattern and filter, and a cursor pointing to the next item of the + -- vector to be returned to the user. + + procedure Free is new Ada.Unchecked_Deallocation (Search_State, Search_Ptr); + -- Search_State deallocation routine + + Dir_Vector_Initial_Size : constant := 100; + -- Initial size for the Dir_Contents vector, sized to ensure the vector + -- does not need to be reallocated for reasonably sized directory searches. - procedure Close (Dir : Dir_Type_Value); + ------------------------ + -- Helper Subprograms -- + ------------------------ function File_Exists (Name : String) return Boolean; -- Returns True if the named file exists - procedure Fetch_Next_Entry (Search : Search_Type); - -- Get the next entry in a directory, setting Entry_Fetched if successful - -- or resetting Is_Valid if not. - procedure Start_Search_Internal - (Search : in out Search_Type; - Directory : String; - Pattern : String; - Filter : Filter_Type := [others => True]; - Force_Case_Insensitive : Boolean); - -- Similar to Start_Search except we can force a search to be - -- case-insensitive, which is important for detecting the name-case - -- equivalence for a given directory. + (Search : in out Search_Type; + Directory : String; + Pattern : String; + Filter : Filter_Type := [others => True]; + Case_Insensitive : Boolean); + -- Similar to Start_Search except we can specify a case-insensitive search. + -- This enables detecting the name-case equivalence for a given directory. --------------- -- Base_Name -- @@ -137,21 +155,6 @@ package body Ada.Directories is return Simple; end Base_Name; - ----------- - -- Close -- - ----------- - - procedure Close (Dir : Dir_Type_Value) is - Discard : Integer; - pragma Warnings (Off, Discard); - - function closedir (directory : DIRs) return Integer; - pragma Import (C, closedir, "__gnat_closedir"); - - begin - Discard := closedir (DIRs (Dir)); - end Close; - ------------- -- Compose -- ------------- @@ -378,7 +381,7 @@ package body Ada.Directories is (New_Directory : String; Form : String := "") is - C_Dir_Name : constant String := New_Directory & ASCII.NUL; + Dir_Name_C : constant String := New_Directory & ASCII.NUL; begin -- First, the invalid case @@ -411,7 +414,7 @@ package body Ada.Directories is raise Use_Error with "invalid Form"; end if; - if CRTL.mkdir (C_Dir_Name, Encoding) /= 0 then + if CRTL.mkdir (Dir_Name_C, Encoding) /= 0 then raise Use_Error with "creation of new directory """ & New_Directory & """ failed"; end if; @@ -553,9 +556,9 @@ package body Ada.Directories is else declare - C_Dir_Name : constant String := Directory & ASCII.NUL; + Dir_Name_C : constant String := Directory & ASCII.NUL; begin - if rmdir (C_Dir_Name) /= 0 then + if rmdir (Dir_Name_C) /= 0 then raise Use_Error with "deletion of directory """ & Directory & """ failed"; end if; @@ -640,10 +643,10 @@ package body Ada.Directories is End_Search (Search); declare - C_Dir_Name : constant String := Directory & ASCII.NUL; + Dir_Name_C : constant String := Directory & ASCII.NUL; begin - if rmdir (C_Dir_Name) /= 0 then + if rmdir (Dir_Name_C) /= 0 then raise Use_Error with "directory tree rooted at """ & Directory & """ could not be deleted"; @@ -710,141 +713,6 @@ package body Ada.Directories is end if; end Extension; - ---------------------- - -- Fetch_Next_Entry -- - ---------------------- - - procedure Fetch_Next_Entry (Search : Search_Type) is - Name : String (1 .. NAME_MAX); - Last : Natural; - - Kind : File_Kind := Ordinary_File; - -- Initialized to avoid a compilation warning - - Filename_Addr : Address; - Filename_Len : aliased Integer; - - Buffer : array (1 .. SIZEOF_struct_dirent_alloc) of Character; - - function readdir_gnat - (Directory : Address; - Buffer : Address; - Last : not null access Integer) return Address; - pragma Import (C, readdir_gnat, "__gnat_readdir"); - - begin - -- Search.Value.Is_Valid is always True when Fetch_Next_Entry is called - - loop - Filename_Addr := - readdir_gnat - (Address (Search.Value.Dir), - Buffer'Address, - Filename_Len'Access); - - -- If no matching entry is found, set Is_Valid to False - - if Filename_Addr = Null_Address then - Search.Value.Is_Valid := False; - exit; - end if; - - if Filename_Len > Name'Length then - raise Use_Error with "file name too long"; - end if; - - declare - subtype Name_String is String (1 .. Filename_Len); - Dent_Name : Name_String; - for Dent_Name'Address use Filename_Addr; - pragma Import (Ada, Dent_Name); - - begin - Last := Filename_Len; - Name (1 .. Last) := Dent_Name; - end; - - -- Check if the entry matches the pattern - - if Match (Name (1 .. Last), Search.Value.Pattern) then - declare - C_Full_Name : constant String := - Compose (To_String (Search.Value.Name), - Name (1 .. Last)) & ASCII.NUL; - Full_Name : String renames - C_Full_Name - (C_Full_Name'First .. C_Full_Name'Last - 1); - Found : Boolean := False; - Attr : aliased File_Attributes; - Exists : Integer; - Error : Integer; - - begin - Reset_Attributes (Attr'Access); - Exists := File_Exists_Attr (C_Full_Name'Address, Attr'Access); - Error := Error_Attributes (Attr'Access); - - if Error /= 0 then - raise Use_Error - with Full_Name & ": " & Errno_Message (Err => Error); - end if; - - if Exists = 1 then - -- Ignore special directories "." and ".." - - if (Full_Name'Length > 1 - and then - Full_Name - (Full_Name'Last - 1 .. Full_Name'Last) = "\.") - or else - (Full_Name'Length > 2 - and then - Full_Name - (Full_Name'Last - 2 .. Full_Name'Last) = "\..") - then - Exists := 0; - end if; - - -- Now check if the file kind matches the filter - - if Is_Regular_File_Attr - (C_Full_Name'Address, Attr'Access) = 1 - then - if Search.Value.Filter (Ordinary_File) then - Kind := Ordinary_File; - Found := True; - end if; - - elsif Is_Directory_Attr - (C_Full_Name'Address, Attr'Access) = 1 - then - if Search.Value.Filter (Directory) then - Kind := Directory; - Found := True; - end if; - - elsif Search.Value.Filter (Special_File) then - Kind := Special_File; - Found := True; - end if; - - -- If it does, update Search and return - - if Found then - Search.Value.Entry_Fetched := True; - Search.Value.Dir_Entry := - (Is_Valid => True, - Simple => To_Unbounded_String (Name (1 .. Last)), - Full => To_Unbounded_String (Full_Name), - Kind => Kind); - exit; - end if; - end if; - end; - end if; - end loop; - end Fetch_Next_Entry; - ----------------- -- File_Exists -- ----------------- @@ -867,15 +735,9 @@ package body Ada.Directories is procedure Finalize (Search : in out Search_Type) is begin - if Search.Value /= null then - - -- Close the directory, if one is open - - if Search.Value.Dir /= No_Dir then - Close (Search.Value.Dir); - end if; - - Free (Search.Value); + if Search.State /= null then + Free (Search.State.Dir_Contents); + Free (Search.State); end if; end Finalize; @@ -910,15 +772,13 @@ package body Ada.Directories is function Full_Name (Directory_Entry : Directory_Entry_Type) return String is begin - -- First, the invalid case + -- If the Directory_Entry is valid return the full name contained in the + -- entry record. - if not Directory_Entry.Is_Valid then + if not Directory_Entry.Valid then raise Status_Error with "invalid directory entry"; - else - -- The value to return has already been computed - - return To_String (Directory_Entry.Full); + return To_String (Directory_Entry.Full_Name); end if; end Full_Name; @@ -931,28 +791,34 @@ package body Ada.Directories is Directory_Entry : out Directory_Entry_Type) is begin - -- First, the invalid case + -- A Search with no state implies the user has not called Start_Search - if Search.Value = null or else not Search.Value.Is_Valid then - raise Status_Error with "invalid search"; + if Search.State = null then + raise Status_Error with "search not started"; end if; - -- Fetch the next entry, if needed + -- If the next entry is No_Element it means the search is finished and + -- there are no more entries to return. - if not Search.Value.Entry_Fetched then - Fetch_Next_Entry (Search); + if Search.State.Next_Entry = No_Element then + raise Status_Error with "no more entries"; end if; - -- It is an error if no valid entry is found + -- Populate Directory_Entry with the next entry and update the search + -- state. - if not Search.Value.Is_Valid then - raise Status_Error with "no next entry"; + Directory_Entry := Element (Search.State.Next_Entry); + Next (Search.State.Next_Entry); - else - -- Reset Entry_Fetched and return the entry + -- If Start_Search received a non-zero error code when trying to read + -- the file attributes of this entry, raise an Use_Error so the user + -- is aware that it was not possible to retrieve the attributes of this + -- entry. - Search.Value.Entry_Fetched := False; - Directory_Entry := Search.Value.Dir_Entry; + if Directory_Entry.Attr_Error_Code /= 0 then + raise Use_Error + with To_String (Directory_Entry.Full_Name) & ": " & + Errno_Message (Err => Directory_Entry.Attr_Error_Code); end if; end Get_Next_Entry; @@ -982,14 +848,9 @@ package body Ada.Directories is function Kind (Directory_Entry : Directory_Entry_Type) return File_Kind is begin - -- First, the invalid case - - if not Directory_Entry.Is_Valid then + if not Directory_Entry.Valid then raise Status_Error with "invalid directory entry"; - else - -- The value to return has already be computed - return Directory_Entry.Kind; end if; end Kind; @@ -1025,15 +886,15 @@ package body Ada.Directories is (Directory_Entry : Directory_Entry_Type) return Ada.Calendar.Time is begin - -- First, the invalid case + -- If the Directory_Entry is valid return the modification time + -- contained in the entry record. The modification time is recorded in + -- the entry since its cheap to query all the file the attributes in + -- one read when the directory is searched. - if not Directory_Entry.Is_Valid then + if not Directory_Entry.Valid then raise Status_Error with "invalid directory entry"; - else - -- The value to return has already be computed - - return Modification_Time (To_String (Directory_Entry.Full)); + return Directory_Entry.Modification_Time; end if; end Modification_Time; @@ -1043,19 +904,17 @@ package body Ada.Directories is function More_Entries (Search : Search_Type) return Boolean is begin - if Search.Value = null then - return False; - - elsif Search.Value.Is_Valid then + -- If the vector cursor Search.State.Next_Entry points to an element in + -- Search.State.Dir_Contents then there is another entry to return. + -- Otherwise, we return False. - -- Fetch the next entry, if needed - - if not Search.Value.Entry_Fetched then - Fetch_Next_Entry (Search); - end if; + if Search.State = null then + return False; + elsif Search.State.Next_Entry = No_Element then + return False; + else + return True; end if; - - return Search.Value.Is_Valid; end More_Entries; --------------------------- @@ -1115,7 +974,7 @@ package body Ada.Directories is Directory => To_String (Dir_Path), Pattern => Simple_Name (Test_File), Filter => [Directory => False, others => True], - Force_Case_Insensitive => True); + Case_Insensitive => True); -- We will find at least one match due to the search hitting our test -- file. @@ -1237,7 +1096,7 @@ package body Ada.Directories is ------------------- procedure Set_Directory (Directory : String) is - C_Dir_Name : constant String := Directory & ASCII.NUL; + Dir_Name_C : constant String := Directory & ASCII.NUL; begin if not Is_Valid_Path_Name (Directory) then raise Name_Error with @@ -1247,7 +1106,7 @@ package body Ada.Directories is raise Name_Error with "directory """ & Directory & """ does not exist"; - elsif chdir (C_Dir_Name) /= 0 then + elsif chdir (Dir_Name_C) /= 0 then raise Name_Error with "could not set to designated directory """ & Directory & '"'; end if; @@ -1344,15 +1203,13 @@ package body Ada.Directories is function Simple_Name (Directory_Entry : Directory_Entry_Type) return String is begin - -- First, the invalid case + -- If the Directory_Entry is valid return the simple name contained in + -- the entry record. - if not Directory_Entry.Is_Valid then + if not Directory_Entry.Valid then raise Status_Error with "invalid directory entry"; - else - -- The value to return has already be computed - - return To_String (Directory_Entry.Simple); + return To_String (Directory_Entry.Name); end if; end Simple_Name; @@ -1381,15 +1238,15 @@ package body Ada.Directories is function Size (Directory_Entry : Directory_Entry_Type) return File_Size is begin - -- First, the invalid case + -- If the Directory_Entry is valid return the size contained in the + -- entry record. The size is recorded in the entry since it is cheap to + -- query all the file the attributes in one read when the directory is + -- searched. - if not Directory_Entry.Is_Valid then + if not Directory_Entry.Valid then raise Status_Error with "invalid directory entry"; - else - -- The value to return has already be computed - - return Size (To_String (Directory_Entry.Full)); + return Directory_Entry.Size; end if; end Size; @@ -1412,69 +1269,206 @@ package body Ada.Directories is --------------------------- procedure Start_Search_Internal - (Search : in out Search_Type; - Directory : String; - Pattern : String; - Filter : Filter_Type := [others => True]; - Force_Case_Insensitive : Boolean) + (Search : in out Search_Type; + Directory : String; + Pattern : String; + Filter : Filter_Type := [others => True]; + Case_Insensitive : Boolean) is - function opendir (file_name : String) return DIRs; - pragma Import (C, opendir, "__gnat_opendir"); + function closedir (Directory : DIRs) return Integer + with Import, External_Name => "__gnat_closedir", Convention => C; + -- C lib function to close Directory + + function opendir (Directory : String) return DIRs + with Import, External_Name => "__gnat_opendir", Convention => C; + -- C lib function to open Directory + + function readdir_gnat + (Directory : Address; + Buffer : Address; + Last : not null access Integer) return Address + with Import, External_Name => "__gnat_readdir", Convention => C; + -- Read the next item in Directory - C_File_Name : constant String := Directory & ASCII.NUL; - Pat : Regexp; - Dir : Dir_Type_Value; + Dir_Name_C : constant String := Directory & ASCII.NUL; + Dir_Entry_Buffer : array (1 .. SIZEOF_struct_dirent_alloc) of Character; + Dir_Pointer : Dir_Type_Value; + File_Name_Addr : Address; + File_Name_Len : aliased Integer; + Pattern_Regex : Regexp; + + Call_Result : Integer; + pragma Warnings (Off, Call_Result); + -- Result of calling a C function that returns a status begin - -- First, the invalid case Name_Error + -- Check that Directory is a valid directory if not Is_Directory (Directory) then raise Name_Error with "unknown directory """ & Simple_Name (Directory) & '"'; end if; - -- Check the pattern + -- Check and compile the pattern declare Case_Sensitive : Boolean := Is_Path_Name_Case_Sensitive; begin - if Force_Case_Insensitive then + if Case_Insensitive then Case_Sensitive := False; end if; - Pat := - Compile - (Pattern, - Glob => True, - Case_Sensitive => Case_Sensitive); + Pattern_Regex := + Compile (Pattern, Glob => True, Case_Sensitive => Case_Sensitive); exception when Error_In_Regexp => - Free (Search.Value); raise Name_Error with "invalid pattern """ & Pattern & '"'; end; - Dir := Dir_Type_Value (opendir (C_File_Name)); + -- Open Directory + + Dir_Pointer := Dir_Type_Value (opendir (Dir_Name_C)); - if Dir = No_Dir then + if Dir_Pointer = No_Dir then raise Use_Error with "unreadable directory """ & Simple_Name (Directory) & '"'; end if; - -- If needed, finalize Search + -- If needed, finalize Search. Note: we should probably raise an + -- exception here if Search belongs to an existing search rather than + -- quietly end it. However, we first need to check that it won't break + -- existing software. Finalize (Search); - -- Allocate the default data + -- Allocate and initialize the search state + + Search.State := new Search_State' + (Ada.Finalization.Controlled with + Dir_Contents => new Vector, + Next_Entry => No_Element); + + -- Increase the size of the Dir_Contents vector so it does not need to + -- grow for most reasonable directory searches. + + Search.State.Dir_Contents.Reserve_Capacity (Dir_Vector_Initial_Size); + + -- Read the contents of Directory into Search.State + + loop + -- Get next item in the directory + + File_Name_Addr := + readdir_gnat + (Address (Dir_Pointer), + Dir_Entry_Buffer'Address, + File_Name_Len'Access); + + exit when File_Name_Addr = Null_Address; + + -- If the file name matches the Pattern and the file type matches + -- the Filter add it to our search vector. + + declare + subtype File_Name_String is String (1 .. File_Name_Len); + + File_Name : constant File_Name_String + with Import, Address => File_Name_Addr; + + begin + if Match (File_Name, Pattern_Regex) then + declare + Path_C : constant String := + Compose (Directory, File_Name) & ASCII.NUL; + Path : String renames + Path_C (Path_C'First .. Path_C'Last - 1); + Found : Boolean := False; + Attr : aliased File_Attributes; + Exists : Integer; + Error : Integer; + Kind : File_Kind; + Size : File_Size; + + begin + -- Get the file attributes for the directory item + + Reset_Attributes (Attr'Access); + Exists := File_Exists_Attr (Path_C'Address, Attr'Access); + Error := Error_Attributes (Attr'Access); + + -- If there was an error when trying to read the attributes + -- of a Directory entry, record the error so it can be + -- propagated to the user when they interate through the + -- directory results. + + if Error /= 0 then + Search.State.Dir_Contents.Append + (Directory_Entry_Type' + [Valid => True, + Name => To_Unbounded_String (File_Name), + Full_Name => To_Unbounded_String (Path), + Attr_Error_Code => Error, + others => <>]); + + -- Otherwise, if the file exists and matches the file kind + -- Filter, add the file to the search results. We capture + -- the size and modification time here as we have already + -- the entry's attributes above. + + elsif Exists = 1 then + if Is_Regular_File_Attr (Path_C'Address, Attr'Access) = 1 + and then Filter (Ordinary_File) + then + Found := True; + Kind := Ordinary_File; + Size := + File_Size + (File_Length_Attr + (-1, Path_C'Address, Attr'Access)); + + elsif Is_Directory_Attr (Path_C'Address, Attr'Access) = 1 + and then Filter (File_Kind'First) + then + Found := True; + Kind := File_Kind'First; + -- File_Kind'First is used instead of Directory due + -- to a name overload issue with the procedure + -- parameter Directory. + Size := 0; + + elsif Filter (Special_File) then + Found := True; + Kind := Special_File; + Size := 0; + end if; + + if Found then + Search.State.Dir_Contents.Append + (Directory_Entry_Type' + [Valid => True, + Name => + To_Unbounded_String (File_Name), + Full_Name => To_Unbounded_String (Path), + Attr_Error_Code => 0, + Kind => Kind, + Modification_Time => Modification_Time (Path), + Size => Size]); + end if; + end if; + end; + end if; + end; + end loop; + + -- Set the first entry to be returned to the user to be the first + -- element of the Dir_Contents vector. If no items were found, First + -- will return No_Element, which signals + Search.State.Next_Entry := Search.State.Dir_Contents.First; - Search.Value := new Search_Data; + -- Search is finished, close Directory - -- Initialize some Search components + Call_Result := closedir (DIRs (Dir_Pointer)); - Search.Value.Filter := Filter; - Search.Value.Name := To_Unbounded_String (Full_Name (Directory)); - Search.Value.Pattern := Pat; - Search.Value.Dir := Dir; - Search.Value.Is_Valid := True; end Start_Search_Internal; end Ada.Directories; diff --git a/gcc/ada/libgnat/a-direct.ads b/gcc/ada/libgnat/a-direct.ads index a88cd01..cb8012d 100644 --- a/gcc/ada/libgnat/a-direct.ads +++ b/gcc/ada/libgnat/a-direct.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived for use with GNAT from AI-00248, which is -- -- expected to be a part of a future expected revised Ada Reference Manual. -- @@ -372,14 +372,17 @@ package Ada.Directories is -- matching pattern. If Pattern is null, all items in the directory are -- matched; otherwise, the interpretation of Pattern is implementation- -- defined. Only items which match Filter will be returned. After a - -- successful call on Start_Search, the object Search may have entries - -- available, but it may have no entries available if no files or - -- directories match Pattern and Filter. The exception Name_Error is - -- propagated if the string given by Directory does not identify an - -- existing directory, or if Pattern does not allow the identification of - -- any possible external file or directory. The exception Use_Error is - -- propagated if the external environment does not support the searching - -- of the directory with the given name (in the absence of Name_Error). + -- successful call on Start_Search, the object Search will be populated + -- with the items of the directory that match the Pattern and Filter, if + -- any. Any subsequent change to the directory after the call to + -- Start_Search will not be reflected in the Search object. + -- + -- The exception Name_Error is propagated if the string given by Directory + -- does not identify an existing directory, or if Pattern does not allow + -- the identification of any possible external file or directory. The + -- exception Use_Error is propagated if the external environment does not + -- support the searching of the directory with the given name (in the + -- absence of Name_Error). procedure End_Search (Search : in out Search_Type); -- Ends the search represented by Search. After a successful call on @@ -397,12 +400,12 @@ package Ada.Directories is Directory_Entry : out Directory_Entry_Type); -- Returns the next Directory_Entry for the search described by Search that -- matches the pattern and filter. If no further matches are available, - -- Status_Error is raised. It is implementation-defined as to whether the - -- results returned by this routine are altered if the contents of the - -- directory are altered while the Search object is valid (for example, by - -- another program). The exception Use_Error is propagated if the external - -- environment does not support continued searching of the directory - -- represented by Search. + -- Status_Error is raised. The results returned by this routine reflect the + -- contents of the directory at the time of the Start_Search call. + -- Consequently, changes to the contents of the directory, by this or + -- another program, will not be reflected in the Search object. The + -- exception Use_Error is propagated if the external environment does not + -- support continued searching of the directory represented by Search. procedure Search (Directory : String; @@ -472,30 +475,49 @@ package Ada.Directories is Device_Error : exception renames Ada.IO_Exceptions.Device_Error; private - type Directory_Entry_Type is record - Is_Valid : Boolean := False; - Simple : Ada.Strings.Unbounded.Unbounded_String; - Full : Ada.Strings.Unbounded.Unbounded_String; - Kind : File_Kind := Ordinary_File; + type Search_State; + type Search_Ptr is access Search_State; + -- To simplify the setup of a new search and its subsequent teardown, the + -- state of Search_Type is implemented in a seperate record type that can + -- be allocated when a new search is started and deallocated when the + -- search is ended. The type is defined in the body as it is not required + -- by child packages. + + type Search_Type is new Ada.Finalization.Controlled with record + State : Search_Ptr; end record; - -- The type Search_Data is defined in the body, so that the spec does not - -- depend on packages of the GNAT hierarchy. + type Directory_Entry_Type is record + Valid : Boolean := False; + -- Indicates if the record has been populated by the Get_Next_Entry + -- procedure. The default initialization ensures objects created through + -- declarations or allocators are identified as not valid for use with + -- the Directory_Entry_Type routines until Get_Next_Entry is called. - type Search_Data; - type Search_Ptr is access Search_Data; + Name : Ada.Strings.Unbounded.Unbounded_String; + -- The name of the item in the directory - -- Search_Type need to be a controlled type, because it includes component - -- of type Dir_Type (in GNAT.Directory_Operations) that need to be closed - -- (if opened) during finalization. The component need to be an access - -- value, because Search_Data is not fully defined in the spec. + Full_Name : Ada.Strings.Unbounded.Unbounded_String; + -- The full path to the item - type Search_Type is new Ada.Finalization.Controlled with record - Value : Search_Ptr; + Attr_Error_Code : Integer; + -- The error code returned when querying the item's file attributes + -- during Start_Search. Allows Get_Next_Entry to raise an exception when + -- the error code is non-zero. + + Kind : File_Kind; + -- The type of item + + Modification_Time : Ada.Calendar.Time; + -- The modification time of the item at the time of Start_Search + + Size : File_Size; + -- The size of an ordinary file at the time of Start_Search. For special + -- files and directories, Size is always zero. end record; procedure Finalize (Search : in out Search_Type); - -- Close the directory, if opened, and deallocate Value + -- Deallocate the data structures used for the search procedure End_Search (Search : in out Search_Type) renames Finalize; diff --git a/gcc/ada/libgnat/a-direio.adb b/gcc/ada/libgnat/a-direio.adb index 1258bee..ac84af8 100644 --- a/gcc/ada/libgnat/a-direio.adb +++ b/gcc/ada/libgnat/a-direio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-direio.ads b/gcc/ada/libgnat/a-direio.ads index 0a91174..5a71253 100644 --- a/gcc/ada/libgnat/a-direio.ads +++ b/gcc/ada/libgnat/a-direio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-dirval.adb b/gcc/ada/libgnat/a-dirval.adb index bdb8faf..412a9e7 100644 --- a/gcc/ada/libgnat/a-dirval.adb +++ b/gcc/ada/libgnat/a-dirval.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (POSIX Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-dirval.ads b/gcc/ada/libgnat/a-dirval.ads index 8c6cd0a..b1b2feb 100644 --- a/gcc/ada/libgnat/a-dirval.ads +++ b/gcc/ada/libgnat/a-dirval.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-dirval__mingw.adb b/gcc/ada/libgnat/a-dirval__mingw.adb index 51827a5..9e76fb8 100644 --- a/gcc/ada/libgnat/a-dirval__mingw.adb +++ b/gcc/ada/libgnat/a-dirval__mingw.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Windows Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-einuoc.adb b/gcc/ada/libgnat/a-einuoc.adb index 1c409da..4abf390 100644 --- a/gcc/ada/libgnat/a-einuoc.adb +++ b/gcc/ada/libgnat/a-einuoc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-einuoc.ads b/gcc/ada/libgnat/a-einuoc.ads index cb70ab1..e6f4b4d 100644 --- a/gcc/ada/libgnat/a-einuoc.ads +++ b/gcc/ada/libgnat/a-einuoc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-elchha.adb b/gcc/ada/libgnat/a-elchha.adb index d54aa65..aa31782 100644 --- a/gcc/ada/libgnat/a-elchha.adb +++ b/gcc/ada/libgnat/a-elchha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,6 @@ -- Default version for most targets -pragma Compiler_Unit_Warning; - with System.Standard_Library; use System.Standard_Library; with System.Soft_Links; use System; diff --git a/gcc/ada/libgnat/a-elchha.ads b/gcc/ada/libgnat/a-elchha.ads index 15696bf..e886e7d 100644 --- a/gcc/ada/libgnat/a-elchha.ads +++ b/gcc/ada/libgnat/a-elchha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,6 @@ -- Last chance handler. Unhandled exceptions are passed to this routine -pragma Compiler_Unit_Warning; - procedure Ada.Exceptions.Last_Chance_Handler (Except : Exception_Occurrence); pragma Export (C, diff --git a/gcc/ada/libgnat/a-envvar.adb b/gcc/ada/libgnat/a-envvar.adb index cf11887..30c0494 100644 --- a/gcc/ada/libgnat/a-envvar.adb +++ b/gcc/ada/libgnat/a-envvar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-excach.adb b/gcc/ada/libgnat/a-excach.adb index a8e6a58..0fa91d7 100644 --- a/gcc/ada/libgnat/a-excach.adb +++ b/gcc/ada/libgnat/a-excach.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-except.adb b/gcc/ada/libgnat/a-except.adb index 631c35a..3cf7712 100644 --- a/gcc/ada/libgnat/a-except.adb +++ b/gcc/ada/libgnat/a-except.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1110,7 +1110,7 @@ package body Ada.Exceptions is else declare - New_Msg : constant String := Prefix & Exception_Name (X); + New_Msg : constant String := Prefix & Exception_Name (X); begin -- No message present, just provide our own diff --git a/gcc/ada/libgnat/a-except.ads b/gcc/ada/libgnat/a-except.ads index b6c8bb5..af87d66 100644 --- a/gcc/ada/libgnat/a-except.ads +++ b/gcc/ada/libgnat/a-except.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -286,8 +286,10 @@ private pragma Stream_Convert (Exception_Occurrence, String_To_EO, EO_To_String); -- Functions for implementing Exception_Occurrence stream attributes - pragma Warnings (Off, "aggregate not fully initialized"); - Null_Occurrence : constant Exception_Occurrence := (others => <>); - pragma Warnings (On, "aggregate not fully initialized"); + Null_Occurrence : constant Exception_Occurrence := + (Machine_Occurrence => System.Null_Address, + Msg => (others => '*'), + Tracebacks => (others => System.Traceback_Entries.Null_TB_Entry), + others => <>); end Ada.Exceptions; diff --git a/gcc/ada/libgnat/a-exctra.adb b/gcc/ada/libgnat/a-exctra.adb index 67c85ae..b5dbc1d 100644 --- a/gcc/ada/libgnat/a-exctra.adb +++ b/gcc/ada/libgnat/a-exctra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-exctra.ads b/gcc/ada/libgnat/a-exctra.ads index 84c2f20..f46ad43 100644 --- a/gcc/ada/libgnat/a-exctra.ads +++ b/gcc/ada/libgnat/a-exctra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-exexda.adb b/gcc/ada/libgnat/a-exexda.adb index f5cb37e..13855ac 100644 --- a/gcc/ada/libgnat/a-exexda.adb +++ b/gcc/ada/libgnat/a-exexda.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-exexpr.adb b/gcc/ada/libgnat/a-exexpr.adb index ff85bc5..ab7c98e 100644 --- a/gcc/ada/libgnat/a-exexpr.adb +++ b/gcc/ada/libgnat/a-exexpr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-exextr.adb b/gcc/ada/libgnat/a-exextr.adb index 9ef7e86..06558a8 100644 --- a/gcc/ada/libgnat/a-exextr.adb +++ b/gcc/ada/libgnat/a-exextr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-exstat.adb b/gcc/ada/libgnat/a-exstat.adb index adb199a..a3f808e 100644 --- a/gcc/ada/libgnat/a-exstat.adb +++ b/gcc/ada/libgnat/a-exstat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-finali.adb b/gcc/ada/libgnat/a-finali.adb index 4bba140..b36a637 100644 --- a/gcc/ada/libgnat/a-finali.adb +++ b/gcc/ada/libgnat/a-finali.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-finali.ads b/gcc/ada/libgnat/a-finali.ads index ce124e3..7a8f6c1 100644 --- a/gcc/ada/libgnat/a-finali.ads +++ b/gcc/ada/libgnat/a-finali.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ioexce.ads b/gcc/ada/libgnat/a-ioexce.ads index 7fec393..43239dd 100644 --- a/gcc/ada/libgnat/a-ioexce.ads +++ b/gcc/ada/libgnat/a-ioexce.ads @@ -13,8 +13,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package Ada.IO_Exceptions is pragma Pure; diff --git a/gcc/ada/libgnat/a-locale.adb b/gcc/ada/libgnat/a-locale.adb index 71e8557..65d673a 100644 --- a/gcc/ada/libgnat/a-locale.adb +++ b/gcc/ada/libgnat/a-locale.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-locale.ads b/gcc/ada/libgnat/a-locale.ads index 334e1f1..866f259 100644 --- a/gcc/ada/libgnat/a-locale.ads +++ b/gcc/ada/libgnat/a-locale.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. In accordance with the copyright of that document, you can freely -- diff --git a/gcc/ada/libgnat/a-nagefl.ads b/gcc/ada/libgnat/a-nagefl.ads index 25875fa..ad2e5e3 100644 --- a/gcc/ada/libgnat/a-nagefl.ads +++ b/gcc/ada/libgnat/a-nagefl.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Generic Wrapper) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-naliop.ads b/gcc/ada/libgnat/a-naliop.ads index d5f2ecb..50a283b 100644 --- a/gcc/ada/libgnat/a-naliop.ads +++ b/gcc/ada/libgnat/a-naliop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-naliop__nolibm.ads b/gcc/ada/libgnat/a-naliop__nolibm.ads index 6482e88..75dcfd9 100644 --- a/gcc/ada/libgnat/a-naliop__nolibm.ads +++ b/gcc/ada/libgnat/a-naliop__nolibm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nallfl.ads b/gcc/ada/libgnat/a-nallfl.ads index ef52992..db849da 100644 --- a/gcc/ada/libgnat/a-nallfl.ads +++ b/gcc/ada/libgnat/a-nallfl.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (C Math Library Version, Long Long Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nallfl__wraplf.ads b/gcc/ada/libgnat/a-nallfl__wraplf.ads index 582821e..364d1a5 100644 --- a/gcc/ada/libgnat/a-nallfl__wraplf.ads +++ b/gcc/ada/libgnat/a-nallfl__wraplf.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Long Long Float Wrapper in terms of Long Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nalofl.ads b/gcc/ada/libgnat/a-nalofl.ads index 519bf1c..e4e440b 100644 --- a/gcc/ada/libgnat/a-nalofl.ads +++ b/gcc/ada/libgnat/a-nalofl.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (C Math Library Version, Long Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nashfl.ads b/gcc/ada/libgnat/a-nashfl.ads index 6bb660d..17e0c5f 100644 --- a/gcc/ada/libgnat/a-nashfl.ads +++ b/gcc/ada/libgnat/a-nashfl.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Short Float Wrapper in terms of Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nashfl__wraplf.ads b/gcc/ada/libgnat/a-nashfl__wraplf.ads index a6ffe3d..c336b43 100644 --- a/gcc/ada/libgnat/a-nashfl__wraplf.ads +++ b/gcc/ada/libgnat/a-nashfl__wraplf.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Short Float Wrapper in terms of Long Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nbnbig.adb b/gcc/ada/libgnat/a-nbnbig.adb index d04d2a4..fe47a6c 100644 --- a/gcc/ada/libgnat/a-nbnbig.adb +++ b/gcc/ada/libgnat/a-nbnbig.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nbnbin.adb b/gcc/ada/libgnat/a-nbnbin.adb index fe41cf1..6171d99 100644 --- a/gcc/ada/libgnat/a-nbnbin.adb +++ b/gcc/ada/libgnat/a-nbnbin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nbnbin__gmp.adb b/gcc/ada/libgnat/a-nbnbin__gmp.adb index 1516f49..494844e 100644 --- a/gcc/ada/libgnat/a-nbnbin__gmp.adb +++ b/gcc/ada/libgnat/a-nbnbin__gmp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nbnbre.adb b/gcc/ada/libgnat/a-nbnbre.adb index d1820f4..9cdc0f5 100644 --- a/gcc/ada/libgnat/a-nbnbre.adb +++ b/gcc/ada/libgnat/a-nbnbre.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ngcefu.adb b/gcc/ada/libgnat/a-ngcefu.adb index 50abfb2..eccb560 100644 --- a/gcc/ada/libgnat/a-ngcefu.adb +++ b/gcc/ada/libgnat/a-ngcefu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ngcoar.adb b/gcc/ada/libgnat/a-ngcoar.adb index ed9be6a..8dfbc3b 100644 --- a/gcc/ada/libgnat/a-ngcoar.adb +++ b/gcc/ada/libgnat/a-ngcoar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,6 +29,17 @@ -- -- ------------------------------------------------------------------------------ +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Generic_Array_Operations; use System.Generic_Array_Operations; package body Ada.Numerics.Generic_Complex_Arrays is diff --git a/gcc/ada/libgnat/a-ngcoty.adb b/gcc/ada/libgnat/a-ngcoty.adb index d9a88e8..a4647ca 100644 --- a/gcc/ada/libgnat/a-ngcoty.adb +++ b/gcc/ada/libgnat/a-ngcoty.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ngcoty.ads b/gcc/ada/libgnat/a-ngcoty.ads index 71a6123..4bce58e 100644 --- a/gcc/ada/libgnat/a-ngcoty.ads +++ b/gcc/ada/libgnat/a-ngcoty.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ngelfu.adb b/gcc/ada/libgnat/a-ngelfu.adb index d9de09c..ed2b544 100644 --- a/gcc/ada/libgnat/a-ngelfu.adb +++ b/gcc/ada/libgnat/a-ngelfu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ngelfu.ads b/gcc/ada/libgnat/a-ngelfu.ads index 523e64f..c8a31bb 100644 --- a/gcc/ada/libgnat/a-ngelfu.ads +++ b/gcc/ada/libgnat/a-ngelfu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ngrear.adb b/gcc/ada/libgnat/a-ngrear.adb index 5095db8..9cfd956 100644 --- a/gcc/ada/libgnat/a-ngrear.adb +++ b/gcc/ada/libgnat/a-ngrear.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,6 +36,17 @@ -- BLAS/LAPACK implementation. Finally, on some platforms there are more -- floating point types than supported by BLAS/LAPACK. +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with Ada.Containers.Generic_Anonymous_Array_Sort; use Ada.Containers; with System; use System; diff --git a/gcc/ada/libgnat/a-ngrear.ads b/gcc/ada/libgnat/a-ngrear.ads index 6e3f854..b2923ff 100644 --- a/gcc/ada/libgnat/a-ngrear.ads +++ b/gcc/ada/libgnat/a-ngrear.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-nuauco.ads b/gcc/ada/libgnat/a-nuauco.ads index 164d4b8..3c5e4d5 100644 --- a/gcc/ada/libgnat/a-nuauco.ads +++ b/gcc/ada/libgnat/a-nuauco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nuauco__x86.ads b/gcc/ada/libgnat/a-nuauco__x86.ads index 7901782..380e6f2 100644 --- a/gcc/ada/libgnat/a-nuauco__x86.ads +++ b/gcc/ada/libgnat/a-nuauco__x86.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nuaufl.ads b/gcc/ada/libgnat/a-nuaufl.ads index 1c19912..e38ebb5 100644 --- a/gcc/ada/libgnat/a-nuaufl.ads +++ b/gcc/ada/libgnat/a-nuaufl.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (C Math Library Version, Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nuaufl__wraplf.ads b/gcc/ada/libgnat/a-nuaufl__wraplf.ads index 3318a10..ca4bdb9 100644 --- a/gcc/ada/libgnat/a-nuaufl__wraplf.ads +++ b/gcc/ada/libgnat/a-nuaufl__wraplf.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Double-based Version, Float) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nudira.adb b/gcc/ada/libgnat/a-nudira.adb index dff1013..4ff4e19 100644 --- a/gcc/ada/libgnat/a-nudira.adb +++ b/gcc/ada/libgnat/a-nudira.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nudira.ads b/gcc/ada/libgnat/a-nudira.ads index 9496043..1855877 100644 --- a/gcc/ada/libgnat/a-nudira.ads +++ b/gcc/ada/libgnat/a-nudira.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-nuflra.adb b/gcc/ada/libgnat/a-nuflra.adb index 1ec38ac..9a217fa 100644 --- a/gcc/ada/libgnat/a-nuflra.adb +++ b/gcc/ada/libgnat/a-nuflra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-nuflra.ads b/gcc/ada/libgnat/a-nuflra.ads index 350faeb..6cd64af 100644 --- a/gcc/ada/libgnat/a-nuflra.ads +++ b/gcc/ada/libgnat/a-nuflra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-numaux.ads b/gcc/ada/libgnat/a-numaux.ads index de952a8..9e95f64 100644 --- a/gcc/ada/libgnat/a-numaux.ads +++ b/gcc/ada/libgnat/a-numaux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgbk.adb b/gcc/ada/libgnat/a-rbtgbk.adb index 1c0d5d8..68fe7f0 100644 --- a/gcc/ada/libgnat/a-rbtgbk.adb +++ b/gcc/ada/libgnat/a-rbtgbk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgbk.ads b/gcc/ada/libgnat/a-rbtgbk.ads index cd18fdc..c7a742d 100644 --- a/gcc/ada/libgnat/a-rbtgbk.ads +++ b/gcc/ada/libgnat/a-rbtgbk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgbo.adb b/gcc/ada/libgnat/a-rbtgbo.adb index f92191e..c077788 100644 --- a/gcc/ada/libgnat/a-rbtgbo.adb +++ b/gcc/ada/libgnat/a-rbtgbo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgbo.ads b/gcc/ada/libgnat/a-rbtgbo.ads index 4d2c655..97c0ee0 100644 --- a/gcc/ada/libgnat/a-rbtgbo.ads +++ b/gcc/ada/libgnat/a-rbtgbo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgso.adb b/gcc/ada/libgnat/a-rbtgso.adb index 22f5603..cbf18dd 100644 --- a/gcc/ada/libgnat/a-rbtgso.adb +++ b/gcc/ada/libgnat/a-rbtgso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-rbtgso.ads b/gcc/ada/libgnat/a-rbtgso.ads index 1e80ed5..970e7a6 100644 --- a/gcc/ada/libgnat/a-rbtgso.ads +++ b/gcc/ada/libgnat/a-rbtgso.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sbecin.adb b/gcc/ada/libgnat/a-sbecin.adb index ebbdc7f..06b6865 100644 --- a/gcc/ada/libgnat/a-sbecin.adb +++ b/gcc/ada/libgnat/a-sbecin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sbecin.ads b/gcc/ada/libgnat/a-sbecin.ads index 6061e9e..d17247d 100644 --- a/gcc/ada/libgnat/a-sbecin.ads +++ b/gcc/ada/libgnat/a-sbecin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sbhcin.adb b/gcc/ada/libgnat/a-sbhcin.adb index f2994f9..22478e7 100644 --- a/gcc/ada/libgnat/a-sbhcin.adb +++ b/gcc/ada/libgnat/a-sbhcin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sbhcin.ads b/gcc/ada/libgnat/a-sbhcin.ads index d067b61..2f55e46 100644 --- a/gcc/ada/libgnat/a-sbhcin.ads +++ b/gcc/ada/libgnat/a-sbhcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sblcin.adb b/gcc/ada/libgnat/a-sblcin.adb index 14b3b4c..e568085 100644 --- a/gcc/ada/libgnat/a-sblcin.adb +++ b/gcc/ada/libgnat/a-sblcin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sblcin.ads b/gcc/ada/libgnat/a-sblcin.ads index e9f5f20..c87b962 100644 --- a/gcc/ada/libgnat/a-sblcin.ads +++ b/gcc/ada/libgnat/a-sblcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-secain.adb b/gcc/ada/libgnat/a-secain.adb index bf80383..30f236a 100644 --- a/gcc/ada/libgnat/a-secain.adb +++ b/gcc/ada/libgnat/a-secain.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-secain.ads b/gcc/ada/libgnat/a-secain.ads index e376660..4146435 100644 --- a/gcc/ada/libgnat/a-secain.ads +++ b/gcc/ada/libgnat/a-secain.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sequio.adb b/gcc/ada/libgnat/a-sequio.adb index 99e5e59..2de0125 100644 --- a/gcc/ada/libgnat/a-sequio.adb +++ b/gcc/ada/libgnat/a-sequio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sequio.ads b/gcc/ada/libgnat/a-sequio.ads index 34d3b25..f232874 100644 --- a/gcc/ada/libgnat/a-sequio.ads +++ b/gcc/ada/libgnat/a-sequio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sfecin.ads b/gcc/ada/libgnat/a-sfecin.ads index c476d78..69c30c1 100644 --- a/gcc/ada/libgnat/a-sfecin.ads +++ b/gcc/ada/libgnat/a-sfecin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sfhcin.ads b/gcc/ada/libgnat/a-sfhcin.ads index 0d253a0..e132478 100644 --- a/gcc/ada/libgnat/a-sfhcin.ads +++ b/gcc/ada/libgnat/a-sfhcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sflcin.ads b/gcc/ada/libgnat/a-sflcin.ads index 712ed2f..2cb42f2 100644 --- a/gcc/ada/libgnat/a-sflcin.ads +++ b/gcc/ada/libgnat/a-sflcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-shcain.adb b/gcc/ada/libgnat/a-shcain.adb index 9432a07..19a0f92 100644 --- a/gcc/ada/libgnat/a-shcain.adb +++ b/gcc/ada/libgnat/a-shcain.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-shcain.ads b/gcc/ada/libgnat/a-shcain.ads index 8ba2551..a62d3c6 100644 --- a/gcc/ada/libgnat/a-shcain.ads +++ b/gcc/ada/libgnat/a-shcain.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-siocst.adb b/gcc/ada/libgnat/a-siocst.adb index e830621..0859fe4 100644 --- a/gcc/ada/libgnat/a-siocst.adb +++ b/gcc/ada/libgnat/a-siocst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-siocst.ads b/gcc/ada/libgnat/a-siocst.ads index 88713b9..0bd87f7 100644 --- a/gcc/ada/libgnat/a-siocst.ads +++ b/gcc/ada/libgnat/a-siocst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-slcain.adb b/gcc/ada/libgnat/a-slcain.adb index 141757b..e8634ca 100644 --- a/gcc/ada/libgnat/a-slcain.adb +++ b/gcc/ada/libgnat/a-slcain.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-slcain.ads b/gcc/ada/libgnat/a-slcain.ads index a015993..7620319 100644 --- a/gcc/ada/libgnat/a-slcain.ads +++ b/gcc/ada/libgnat/a-slcain.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ssicst.adb b/gcc/ada/libgnat/a-ssicst.adb index 03da997..748fe7c 100644 --- a/gcc/ada/libgnat/a-ssicst.adb +++ b/gcc/ada/libgnat/a-ssicst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ssicst.ads b/gcc/ada/libgnat/a-ssicst.ads index 9233fb7..9cb03c3 100644 --- a/gcc/ada/libgnat/a-ssicst.ads +++ b/gcc/ada/libgnat/a-ssicst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stboha.adb b/gcc/ada/libgnat/a-stboha.adb index b551587..ce2963c 100644 --- a/gcc/ada/libgnat/a-stboha.adb +++ b/gcc/ada/libgnat/a-stboha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbubo.adb b/gcc/ada/libgnat/a-stbubo.adb index 6e729ed..c1c73da 100644 --- a/gcc/ada/libgnat/a-stbubo.adb +++ b/gcc/ada/libgnat/a-stbubo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbubo.ads b/gcc/ada/libgnat/a-stbubo.ads index aef7ccf..8975e73 100644 --- a/gcc/ada/libgnat/a-stbubo.ads +++ b/gcc/ada/libgnat/a-stbubo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. In accordance with the copyright of that document, you can freely -- diff --git a/gcc/ada/libgnat/a-stbufi.adb b/gcc/ada/libgnat/a-stbufi.adb index 656e7bd..6e9402a 100644 --- a/gcc/ada/libgnat/a-stbufi.adb +++ b/gcc/ada/libgnat/a-stbufi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbufi.ads b/gcc/ada/libgnat/a-stbufi.ads index b9444ab..ac2591b 100644 --- a/gcc/ada/libgnat/a-stbufi.ads +++ b/gcc/ada/libgnat/a-stbufi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbufo.adb b/gcc/ada/libgnat/a-stbufo.adb index 7cf7a34..72732b9 100644 --- a/gcc/ada/libgnat/a-stbufo.adb +++ b/gcc/ada/libgnat/a-stbufo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbufo.ads b/gcc/ada/libgnat/a-stbufo.ads index 8c0d476..ead3a13 100644 --- a/gcc/ada/libgnat/a-stbufo.ads +++ b/gcc/ada/libgnat/a-stbufo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbuun.adb b/gcc/ada/libgnat/a-stbuun.adb index b97ec02..e9ea528 100644 --- a/gcc/ada/libgnat/a-stbuun.adb +++ b/gcc/ada/libgnat/a-stbuun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbuut.adb b/gcc/ada/libgnat/a-stbuut.adb index 2d7d371..1fb260b 100644 --- a/gcc/ada/libgnat/a-stbuut.adb +++ b/gcc/ada/libgnat/a-stbuut.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stbuut.ads b/gcc/ada/libgnat/a-stbuut.ads index d76b8cf..4fa3eb4 100644 --- a/gcc/ada/libgnat/a-stbuut.ads +++ b/gcc/ada/libgnat/a-stbuut.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stmaco.ads b/gcc/ada/libgnat/a-stmaco.ads index 8d2f6f7..5cda7acc 100644 --- a/gcc/ada/libgnat/a-stmaco.ads +++ b/gcc/ada/libgnat/a-stmaco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-storio.adb b/gcc/ada/libgnat/a-storio.adb index 424526d..4d6f90c 100644 --- a/gcc/ada/libgnat/a-storio.adb +++ b/gcc/ada/libgnat/a-storio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strbou.adb b/gcc/ada/libgnat/a-strbou.adb index 01a2002..4adc7d9 100644 --- a/gcc/ada/libgnat/a-strbou.adb +++ b/gcc/ada/libgnat/a-strbou.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strbou.ads b/gcc/ada/libgnat/a-strbou.ads index 6efdebc..a9ee3b2 100644 --- a/gcc/ada/libgnat/a-strbou.ads +++ b/gcc/ada/libgnat/a-strbou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stream.adb b/gcc/ada/libgnat/a-stream.adb index a7ef308..ec4d718 100644 --- a/gcc/ada/libgnat/a-stream.adb +++ b/gcc/ada/libgnat/a-stream.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stream.ads b/gcc/ada/libgnat/a-stream.ads index a88d44f..46e46f6 100644 --- a/gcc/ada/libgnat/a-stream.ads +++ b/gcc/ada/libgnat/a-stream.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-strfix.adb b/gcc/ada/libgnat/a-strfix.adb index 31dea6c..7475254 100644 --- a/gcc/ada/libgnat/a-strfix.adb +++ b/gcc/ada/libgnat/a-strfix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -370,7 +370,7 @@ package body Ada.Strings.Fixed with SPARK_Mode is Before : Positive; New_Item : String) return String is - Front : constant Integer := Before - Source'First; + Front : constant Integer := Before - Source'First; begin if Before - 1 not in Source'First - 1 .. Source'Last then @@ -384,6 +384,10 @@ package body Ada.Strings.Fixed with SPARK_Mode is Source (Source'First .. Before - 1); Result (Front + 1 .. Front + New_Item'Length) := New_Item; + + pragma Assert + (Result (1 .. Before - Source'First) + = Source (Source'First .. Before - 1)); pragma Assert (Result (Before - Source'First + 1 @@ -558,15 +562,21 @@ package body Ada.Strings.Fixed with SPARK_Mode is if Position <= Source'Last - New_Item'Length then Result (Front + New_Item'Length + 1 .. Result'Last) := Source (Position + New_Item'Length .. Source'Last); + + pragma Assert + (Result + (Position - Source'First + New_Item'Length + 1 + .. Result'Last) + = Source (Position + New_Item'Length .. Source'Last)); end if; pragma Assert (if Position <= Source'Last - New_Item'Length then Result - (Position - Source'First + New_Item'Length + 1 - .. Result'Last) - = Source (Position + New_Item'Length .. Source'Last)); + (Position - Source'First + New_Item'Length + 1 + .. Result'Last) + = Source (Position + New_Item'Length .. Source'Last)); end return; end; end Overwrite; diff --git a/gcc/ada/libgnat/a-strhas.adb b/gcc/ada/libgnat/a-strhas.adb index 1732941..624d912 100644 --- a/gcc/ada/libgnat/a-strhas.adb +++ b/gcc/ada/libgnat/a-strhas.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strhas.ads b/gcc/ada/libgnat/a-strhas.ads index 2411a52..0a6d671 100644 --- a/gcc/ada/libgnat/a-strhas.ads +++ b/gcc/ada/libgnat/a-strhas.ads @@ -13,8 +13,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Containers; function Ada.Strings.Hash (Key : String) return Containers.Hash_Type; diff --git a/gcc/ada/libgnat/a-strmap.adb b/gcc/ada/libgnat/a-strmap.adb index d6b05d2..77780f9 100644 --- a/gcc/ada/libgnat/a-strmap.adb +++ b/gcc/ada/libgnat/a-strmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strmap.ads b/gcc/ada/libgnat/a-strmap.ads index 320564e..476f772 100644 --- a/gcc/ada/libgnat/a-strmap.ads +++ b/gcc/ada/libgnat/a-strmap.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-strsea.adb b/gcc/ada/libgnat/a-strsea.adb index 243c92c..71a415f 100644 --- a/gcc/ada/libgnat/a-strsea.adb +++ b/gcc/ada/libgnat/a-strsea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strsea.ads b/gcc/ada/libgnat/a-strsea.ads index f4e7d36..157c6f3 100644 --- a/gcc/ada/libgnat/a-strsea.ads +++ b/gcc/ada/libgnat/a-strsea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strsto.ads b/gcc/ada/libgnat/a-strsto.ads index 2c6fa7d..7c7ad99 100644 --- a/gcc/ada/libgnat/a-strsto.ads +++ b/gcc/ada/libgnat/a-strsto.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-strsup.adb b/gcc/ada/libgnat/a-strsup.adb index b9d3669..2c1b459 100644 --- a/gcc/ada/libgnat/a-strsup.adb +++ b/gcc/ada/libgnat/a-strsup.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strsup.ads b/gcc/ada/libgnat/a-strsup.ads index 5e582c7..19e333c 100644 --- a/gcc/ada/libgnat/a-strsup.ads +++ b/gcc/ada/libgnat/a-strsup.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strunb.adb b/gcc/ada/libgnat/a-strunb.adb index b0e455b..e97ee3d 100644 --- a/gcc/ada/libgnat/a-strunb.adb +++ b/gcc/ada/libgnat/a-strunb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strunb.ads b/gcc/ada/libgnat/a-strunb.ads index 2f5bd94..37c9466 100644 --- a/gcc/ada/libgnat/a-strunb.ads +++ b/gcc/ada/libgnat/a-strunb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-strunb__shared.adb b/gcc/ada/libgnat/a-strunb__shared.adb index 506b614..8e1fce4 100644 --- a/gcc/ada/libgnat/a-strunb__shared.adb +++ b/gcc/ada/libgnat/a-strunb__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-strunb__shared.ads b/gcc/ada/libgnat/a-strunb__shared.ads index 34430a7..8d00d0b 100644 --- a/gcc/ada/libgnat/a-strunb__shared.ads +++ b/gcc/ada/libgnat/a-strunb__shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ststbo.adb b/gcc/ada/libgnat/a-ststbo.adb index 59dec1c..b561ba8 100644 --- a/gcc/ada/libgnat/a-ststbo.adb +++ b/gcc/ada/libgnat/a-ststbo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ststbo.ads b/gcc/ada/libgnat/a-ststbo.ads index 0cece80..828da42 100644 --- a/gcc/ada/libgnat/a-ststbo.ads +++ b/gcc/ada/libgnat/a-ststbo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ststio.adb b/gcc/ada/libgnat/a-ststio.adb index 176dabf..88cee6a 100644 --- a/gcc/ada/libgnat/a-ststio.adb +++ b/gcc/ada/libgnat/a-ststio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ststio.ads b/gcc/ada/libgnat/a-ststio.ads index 22f37f9..4742845 100644 --- a/gcc/ada/libgnat/a-ststio.ads +++ b/gcc/ada/libgnat/a-ststio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ststun.adb b/gcc/ada/libgnat/a-ststun.adb index 9b4cc61..eca1d4f 100644 --- a/gcc/ada/libgnat/a-ststun.adb +++ b/gcc/ada/libgnat/a-ststun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ststun.ads b/gcc/ada/libgnat/a-ststun.ads index 3d00e7f..9a0541e 100644 --- a/gcc/ada/libgnat/a-ststun.ads +++ b/gcc/ada/libgnat/a-ststun.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sttebu.adb b/gcc/ada/libgnat/a-sttebu.adb index f86a969..d992fee 100644 --- a/gcc/ada/libgnat/a-sttebu.adb +++ b/gcc/ada/libgnat/a-sttebu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stunau.adb b/gcc/ada/libgnat/a-stunau.adb index 28aee55..0250baf 100644 --- a/gcc/ada/libgnat/a-stunau.adb +++ b/gcc/ada/libgnat/a-stunau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stunau.ads b/gcc/ada/libgnat/a-stunau.ads index f313187..e58b6b2 100644 --- a/gcc/ada/libgnat/a-stunau.ads +++ b/gcc/ada/libgnat/a-stunau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stunau__shared.adb b/gcc/ada/libgnat/a-stunau__shared.adb index 3160e14..78e4f75 100644 --- a/gcc/ada/libgnat/a-stunau__shared.adb +++ b/gcc/ada/libgnat/a-stunau__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stunha.adb b/gcc/ada/libgnat/a-stunha.adb index 32f4e6d..ff8834a 100644 --- a/gcc/ada/libgnat/a-stunha.adb +++ b/gcc/ada/libgnat/a-stunha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stuten.adb b/gcc/ada/libgnat/a-stuten.adb index 04321a6..fd7882c 100644 --- a/gcc/ada/libgnat/a-stuten.adb +++ b/gcc/ada/libgnat/a-stuten.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwibo.adb b/gcc/ada/libgnat/a-stwibo.adb index f045a3c..5b4053b 100644 --- a/gcc/ada/libgnat/a-stwibo.adb +++ b/gcc/ada/libgnat/a-stwibo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwibo.ads b/gcc/ada/libgnat/a-stwibo.ads index 1ddb83a..90c0090 100644 --- a/gcc/ada/libgnat/a-stwibo.ads +++ b/gcc/ada/libgnat/a-stwibo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stwifi.adb b/gcc/ada/libgnat/a-stwifi.adb index 456e907..e325501 100644 --- a/gcc/ada/libgnat/a-stwifi.adb +++ b/gcc/ada/libgnat/a-stwifi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwiha.adb b/gcc/ada/libgnat/a-stwiha.adb index d02b641..37bba84 100644 --- a/gcc/ada/libgnat/a-stwiha.adb +++ b/gcc/ada/libgnat/a-stwiha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwima.adb b/gcc/ada/libgnat/a-stwima.adb index 09b192f..d7c6d0f 100644 --- a/gcc/ada/libgnat/a-stwima.adb +++ b/gcc/ada/libgnat/a-stwima.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwima.ads b/gcc/ada/libgnat/a-stwima.ads index 6b5765f..3393253 100644 --- a/gcc/ada/libgnat/a-stwima.ads +++ b/gcc/ada/libgnat/a-stwima.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stwise.adb b/gcc/ada/libgnat/a-stwise.adb index e9ce76c..99bb61b 100644 --- a/gcc/ada/libgnat/a-stwise.adb +++ b/gcc/ada/libgnat/a-stwise.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwise.ads b/gcc/ada/libgnat/a-stwise.ads index 3d3ef63..45aa98b 100644 --- a/gcc/ada/libgnat/a-stwise.ads +++ b/gcc/ada/libgnat/a-stwise.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwisu.adb b/gcc/ada/libgnat/a-stwisu.adb index 302bf0f..a615ff3 100644 --- a/gcc/ada/libgnat/a-stwisu.adb +++ b/gcc/ada/libgnat/a-stwisu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwisu.ads b/gcc/ada/libgnat/a-stwisu.ads index 9761bcc..c22c2a2 100644 --- a/gcc/ada/libgnat/a-stwisu.ads +++ b/gcc/ada/libgnat/a-stwisu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwiun.adb b/gcc/ada/libgnat/a-stwiun.adb index 269c8c9..76fc2ea 100644 --- a/gcc/ada/libgnat/a-stwiun.adb +++ b/gcc/ada/libgnat/a-stwiun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwiun.ads b/gcc/ada/libgnat/a-stwiun.ads index 40f2796..b72decd 100644 --- a/gcc/ada/libgnat/a-stwiun.ads +++ b/gcc/ada/libgnat/a-stwiun.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stwiun__shared.adb b/gcc/ada/libgnat/a-stwiun__shared.adb index 1d0521c..39808a7 100644 --- a/gcc/ada/libgnat/a-stwiun__shared.adb +++ b/gcc/ada/libgnat/a-stwiun__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stwiun__shared.ads b/gcc/ada/libgnat/a-stwiun__shared.ads index a88c4ec..8d77fb0 100644 --- a/gcc/ada/libgnat/a-stwiun__shared.ads +++ b/gcc/ada/libgnat/a-stwiun__shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stzbou.adb b/gcc/ada/libgnat/a-stzbou.adb index cbf3f5e..932a231 100644 --- a/gcc/ada/libgnat/a-stzbou.adb +++ b/gcc/ada/libgnat/a-stzbou.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzbou.ads b/gcc/ada/libgnat/a-stzbou.ads index ae45e7c..73d52dd 100644 --- a/gcc/ada/libgnat/a-stzbou.ads +++ b/gcc/ada/libgnat/a-stzbou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stzfix.adb b/gcc/ada/libgnat/a-stzfix.adb index 55599ea..26c3a37 100644 --- a/gcc/ada/libgnat/a-stzfix.adb +++ b/gcc/ada/libgnat/a-stzfix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzhas.adb b/gcc/ada/libgnat/a-stzhas.adb index 091bdfe..95320f8 100644 --- a/gcc/ada/libgnat/a-stzhas.adb +++ b/gcc/ada/libgnat/a-stzhas.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzmap.adb b/gcc/ada/libgnat/a-stzmap.adb index b2c9ee5..0a8c501 100644 --- a/gcc/ada/libgnat/a-stzmap.adb +++ b/gcc/ada/libgnat/a-stzmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzmap.ads b/gcc/ada/libgnat/a-stzmap.ads index 86ee971..4192ca1 100644 --- a/gcc/ada/libgnat/a-stzmap.ads +++ b/gcc/ada/libgnat/a-stzmap.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stzsea.adb b/gcc/ada/libgnat/a-stzsea.adb index 3d990c9..2ea0699 100644 --- a/gcc/ada/libgnat/a-stzsea.adb +++ b/gcc/ada/libgnat/a-stzsea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzsea.ads b/gcc/ada/libgnat/a-stzsea.ads index 1eb7ad4..ced5470 100644 --- a/gcc/ada/libgnat/a-stzsea.ads +++ b/gcc/ada/libgnat/a-stzsea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzsup.adb b/gcc/ada/libgnat/a-stzsup.adb index 6799797..d973993 100644 --- a/gcc/ada/libgnat/a-stzsup.adb +++ b/gcc/ada/libgnat/a-stzsup.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzsup.ads b/gcc/ada/libgnat/a-stzsup.ads index 24ab18c..148b972 100644 --- a/gcc/ada/libgnat/a-stzsup.ads +++ b/gcc/ada/libgnat/a-stzsup.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzunb.adb b/gcc/ada/libgnat/a-stzunb.adb index 5bd5408..34cbc32 100644 --- a/gcc/ada/libgnat/a-stzunb.adb +++ b/gcc/ada/libgnat/a-stzunb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzunb.ads b/gcc/ada/libgnat/a-stzunb.ads index 8ef5cb6..83aa1f6 100644 --- a/gcc/ada/libgnat/a-stzunb.ads +++ b/gcc/ada/libgnat/a-stzunb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-stzunb__shared.adb b/gcc/ada/libgnat/a-stzunb__shared.adb index 99a545e..1b6ebc6 100644 --- a/gcc/ada/libgnat/a-stzunb__shared.adb +++ b/gcc/ada/libgnat/a-stzunb__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-stzunb__shared.ads b/gcc/ada/libgnat/a-stzunb__shared.ads index 8a7fd5c..66f1703 100644 --- a/gcc/ada/libgnat/a-stzunb__shared.ads +++ b/gcc/ada/libgnat/a-stzunb__shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-suecin.adb b/gcc/ada/libgnat/a-suecin.adb index c64dcb1..086332a 100644 --- a/gcc/ada/libgnat/a-suecin.adb +++ b/gcc/ada/libgnat/a-suecin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suecin.ads b/gcc/ada/libgnat/a-suecin.ads index 7aaccb7..58a686a 100644 --- a/gcc/ada/libgnat/a-suecin.ads +++ b/gcc/ada/libgnat/a-suecin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-suenco.adb b/gcc/ada/libgnat/a-suenco.adb index c135358..6494ebf 100644 --- a/gcc/ada/libgnat/a-suenco.adb +++ b/gcc/ada/libgnat/a-suenco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suenst.adb b/gcc/ada/libgnat/a-suenst.adb index 8ac078c..26ec0ab 100644 --- a/gcc/ada/libgnat/a-suenst.adb +++ b/gcc/ada/libgnat/a-suenst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suewst.adb b/gcc/ada/libgnat/a-suewst.adb index 7acabb4..c37d4e8 100644 --- a/gcc/ada/libgnat/a-suewst.adb +++ b/gcc/ada/libgnat/a-suewst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suezst.adb b/gcc/ada/libgnat/a-suezst.adb index 389709e..1ba91bf 100644 --- a/gcc/ada/libgnat/a-suezst.adb +++ b/gcc/ada/libgnat/a-suezst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suhcin.adb b/gcc/ada/libgnat/a-suhcin.adb index 7af768b..2fe1ab4 100644 --- a/gcc/ada/libgnat/a-suhcin.adb +++ b/gcc/ada/libgnat/a-suhcin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suhcin.ads b/gcc/ada/libgnat/a-suhcin.ads index d8d8495..482752f 100644 --- a/gcc/ada/libgnat/a-suhcin.ads +++ b/gcc/ada/libgnat/a-suhcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-sulcin.adb b/gcc/ada/libgnat/a-sulcin.adb index b201ad4..b862cc4 100644 --- a/gcc/ada/libgnat/a-sulcin.adb +++ b/gcc/ada/libgnat/a-sulcin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-sulcin.ads b/gcc/ada/libgnat/a-sulcin.ads index e77faa3..8f29c6a 100644 --- a/gcc/ada/libgnat/a-sulcin.ads +++ b/gcc/ada/libgnat/a-sulcin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-suteio.adb b/gcc/ada/libgnat/a-suteio.adb index 7c7b735..66941da 100644 --- a/gcc/ada/libgnat/a-suteio.adb +++ b/gcc/ada/libgnat/a-suteio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suteio.ads b/gcc/ada/libgnat/a-suteio.ads index 34b8016..a892f0d 100644 --- a/gcc/ada/libgnat/a-suteio.ads +++ b/gcc/ada/libgnat/a-suteio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-suteio__shared.adb b/gcc/ada/libgnat/a-suteio__shared.adb index 6bb8e03..6b4d1e7 100644 --- a/gcc/ada/libgnat/a-suteio__shared.adb +++ b/gcc/ada/libgnat/a-suteio__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swbwha.adb b/gcc/ada/libgnat/a-swbwha.adb index 6c9a5bf..3fd1fa9 100644 --- a/gcc/ada/libgnat/a-swbwha.adb +++ b/gcc/ada/libgnat/a-swbwha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swmwco.ads b/gcc/ada/libgnat/a-swmwco.ads index 2e2ab44..f58424a 100644 --- a/gcc/ada/libgnat/a-swmwco.ads +++ b/gcc/ada/libgnat/a-swmwco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-swunau.adb b/gcc/ada/libgnat/a-swunau.adb index e6e9ed9..68bd192 100644 --- a/gcc/ada/libgnat/a-swunau.adb +++ b/gcc/ada/libgnat/a-swunau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swunau.ads b/gcc/ada/libgnat/a-swunau.ads index de76b79..22cda4c 100644 --- a/gcc/ada/libgnat/a-swunau.ads +++ b/gcc/ada/libgnat/a-swunau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swunau__shared.adb b/gcc/ada/libgnat/a-swunau__shared.adb index 87eb9f0..e152116 100644 --- a/gcc/ada/libgnat/a-swunau__shared.adb +++ b/gcc/ada/libgnat/a-swunau__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swuwha.adb b/gcc/ada/libgnat/a-swuwha.adb index 9276942..0590f3c 100644 --- a/gcc/ada/libgnat/a-swuwha.adb +++ b/gcc/ada/libgnat/a-swuwha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swuwti.adb b/gcc/ada/libgnat/a-swuwti.adb index 8149ba6..8d736fa 100644 --- a/gcc/ada/libgnat/a-swuwti.adb +++ b/gcc/ada/libgnat/a-swuwti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swuwti.ads b/gcc/ada/libgnat/a-swuwti.ads index 0dd04c4..b5918d6 100644 --- a/gcc/ada/libgnat/a-swuwti.ads +++ b/gcc/ada/libgnat/a-swuwti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-swuwti__shared.adb b/gcc/ada/libgnat/a-swuwti__shared.adb index 165c97e..8da24a3 100644 --- a/gcc/ada/libgnat/a-swuwti__shared.adb +++ b/gcc/ada/libgnat/a-swuwti__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szbzha.adb b/gcc/ada/libgnat/a-szbzha.adb index 292e566..1689e5b 100644 --- a/gcc/ada/libgnat/a-szbzha.adb +++ b/gcc/ada/libgnat/a-szbzha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szmzco.ads b/gcc/ada/libgnat/a-szmzco.ads index a5b8afc..4d6eece 100644 --- a/gcc/ada/libgnat/a-szmzco.ads +++ b/gcc/ada/libgnat/a-szmzco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-szunau.adb b/gcc/ada/libgnat/a-szunau.adb index 744190e..56c4fad3 100644 --- a/gcc/ada/libgnat/a-szunau.adb +++ b/gcc/ada/libgnat/a-szunau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szunau.ads b/gcc/ada/libgnat/a-szunau.ads index 8a8ed81..1f17705 100644 --- a/gcc/ada/libgnat/a-szunau.ads +++ b/gcc/ada/libgnat/a-szunau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szunau__shared.adb b/gcc/ada/libgnat/a-szunau__shared.adb index 980fb8b..2601497 100644 --- a/gcc/ada/libgnat/a-szunau__shared.adb +++ b/gcc/ada/libgnat/a-szunau__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szuzha.adb b/gcc/ada/libgnat/a-szuzha.adb index 8958154..a552fb6 100644 --- a/gcc/ada/libgnat/a-szuzha.adb +++ b/gcc/ada/libgnat/a-szuzha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szuzti.adb b/gcc/ada/libgnat/a-szuzti.adb index bccaf09..c8e5595 100644 --- a/gcc/ada/libgnat/a-szuzti.adb +++ b/gcc/ada/libgnat/a-szuzti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szuzti.ads b/gcc/ada/libgnat/a-szuzti.ads index 53297ef..cfe0e56 100644 --- a/gcc/ada/libgnat/a-szuzti.ads +++ b/gcc/ada/libgnat/a-szuzti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-szuzti__shared.adb b/gcc/ada/libgnat/a-szuzti__shared.adb index c506a3c..09673c4 100644 --- a/gcc/ada/libgnat/a-szuzti__shared.adb +++ b/gcc/ada/libgnat/a-szuzti__shared.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tags.adb b/gcc/ada/libgnat/a-tags.adb index 170d16a..d663a41 100644 --- a/gcc/ada/libgnat/a-tags.adb +++ b/gcc/ada/libgnat/a-tags.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tags.ads b/gcc/ada/libgnat/a-tags.ads index 0c9afff..dbac36a 100644 --- a/gcc/ada/libgnat/a-tags.ads +++ b/gcc/ada/libgnat/a-tags.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-teioed.adb b/gcc/ada/libgnat/a-teioed.adb index 36c73b8..6d1115f 100644 --- a/gcc/ada/libgnat/a-teioed.adb +++ b/gcc/ada/libgnat/a-teioed.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-teioed.ads b/gcc/ada/libgnat/a-teioed.ads index 110b613..ecc1f81 100644 --- a/gcc/ada/libgnat/a-teioed.ads +++ b/gcc/ada/libgnat/a-teioed.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-textio.adb b/gcc/ada/libgnat/a-textio.adb index 1bdab6e..bd76caa 100644 --- a/gcc/ada/libgnat/a-textio.adb +++ b/gcc/ada/libgnat/a-textio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -403,7 +403,7 @@ is ----------------- function End_Of_Page (File : File_Type) return Boolean is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -598,7 +598,7 @@ is (File : File_Type; Item : out Character) is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); diff --git a/gcc/ada/libgnat/a-textio.ads b/gcc/ada/libgnat/a-textio.ads index f94c92d..7c2ec10 100644 --- a/gcc/ada/libgnat/a-textio.ads +++ b/gcc/ada/libgnat/a-textio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-tiboio.adb b/gcc/ada/libgnat/a-tiboio.adb index 340199c..e8e602d 100644 --- a/gcc/ada/libgnat/a-tiboio.adb +++ b/gcc/ada/libgnat/a-tiboio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with Ada.Text_IO; use Ada.Text_IO; with Ada.Unchecked_Deallocation; package body Ada.Text_IO.Bounded_IO is diff --git a/gcc/ada/libgnat/a-ticoau.adb b/gcc/ada/libgnat/a-ticoau.adb index 1fa9364..b9b0359 100644 --- a/gcc/ada/libgnat/a-ticoau.adb +++ b/gcc/ada/libgnat/a-ticoau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ticoau.ads b/gcc/ada/libgnat/a-ticoau.ads index 2b5ea66..611b495 100644 --- a/gcc/ada/libgnat/a-ticoau.ads +++ b/gcc/ada/libgnat/a-ticoau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ticoio.adb b/gcc/ada/libgnat/a-ticoio.adb index a94c826..64e0cf3 100644 --- a/gcc/ada/libgnat/a-ticoio.adb +++ b/gcc/ada/libgnat/a-ticoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ticoio.ads b/gcc/ada/libgnat/a-ticoio.ads index 1463478..a8fa9c2 100644 --- a/gcc/ada/libgnat/a-ticoio.ads +++ b/gcc/ada/libgnat/a-ticoio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-tideau.adb b/gcc/ada/libgnat/a-tideau.adb index 9be119d..eeb4bff 100644 --- a/gcc/ada/libgnat/a-tideau.adb +++ b/gcc/ada/libgnat/a-tideau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tideau.ads b/gcc/ada/libgnat/a-tideau.ads index 469e7c9..f6bf963 100644 --- a/gcc/ada/libgnat/a-tideau.ads +++ b/gcc/ada/libgnat/a-tideau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tideio.adb b/gcc/ada/libgnat/a-tideio.adb index 5987d71..abc131d 100644 --- a/gcc/ada/libgnat/a-tideio.adb +++ b/gcc/ada/libgnat/a-tideio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tideio.ads b/gcc/ada/libgnat/a-tideio.ads index 3d9a4f2..c5be496 100644 --- a/gcc/ada/libgnat/a-tideio.ads +++ b/gcc/ada/libgnat/a-tideio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-tideio__128.adb b/gcc/ada/libgnat/a-tideio__128.adb index 76c69e2..ddc37e4 100644 --- a/gcc/ada/libgnat/a-tideio__128.adb +++ b/gcc/ada/libgnat/a-tideio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tienau.adb b/gcc/ada/libgnat/a-tienau.adb index af30fef..2e3fbcc 100644 --- a/gcc/ada/libgnat/a-tienau.adb +++ b/gcc/ada/libgnat/a-tienau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -213,7 +213,7 @@ package body Ada.Text_IO.Enumeration_Aux is Start : out Natural; Stop : out Natural) is - C : Character; + C : Character; -- Processing for Scan_Enum_Lit diff --git a/gcc/ada/libgnat/a-tienau.ads b/gcc/ada/libgnat/a-tienau.ads index f1a8ea7..2a914ec 100644 --- a/gcc/ada/libgnat/a-tienau.ads +++ b/gcc/ada/libgnat/a-tienau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tienio.adb b/gcc/ada/libgnat/a-tienio.adb index c64d713..0ab0a6c 100644 --- a/gcc/ada/libgnat/a-tienio.adb +++ b/gcc/ada/libgnat/a-tienio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tifiau.adb b/gcc/ada/libgnat/a-tifiau.adb index baec136..6992049 100644 --- a/gcc/ada/libgnat/a-tifiau.adb +++ b/gcc/ada/libgnat/a-tifiau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tifiau.ads b/gcc/ada/libgnat/a-tifiau.ads index 6ce8b2c..27b7b1a 100644 --- a/gcc/ada/libgnat/a-tifiau.ads +++ b/gcc/ada/libgnat/a-tifiau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tifiio.adb b/gcc/ada/libgnat/a-tifiio.adb index d51abb4..a474841 100644 --- a/gcc/ada/libgnat/a-tifiio.adb +++ b/gcc/ada/libgnat/a-tifiio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tifiio__128.adb b/gcc/ada/libgnat/a-tifiio__128.adb index b161e89..af5ae46 100644 --- a/gcc/ada/libgnat/a-tifiio__128.adb +++ b/gcc/ada/libgnat/a-tifiio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiflau.adb b/gcc/ada/libgnat/a-tiflau.adb index fa10f3f..dafd464 100644 --- a/gcc/ada/libgnat/a-tiflau.adb +++ b/gcc/ada/libgnat/a-tiflau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiflau.ads b/gcc/ada/libgnat/a-tiflau.ads index a095846..b95f6d2 100644 --- a/gcc/ada/libgnat/a-tiflau.ads +++ b/gcc/ada/libgnat/a-tiflau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiflio.adb b/gcc/ada/libgnat/a-tiflio.adb index 1df3590..59ce2e3 100644 --- a/gcc/ada/libgnat/a-tiflio.adb +++ b/gcc/ada/libgnat/a-tiflio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiflio.ads b/gcc/ada/libgnat/a-tiflio.ads index 9aab165..2760b0f 100644 --- a/gcc/ada/libgnat/a-tiflio.ads +++ b/gcc/ada/libgnat/a-tiflio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-tigeau.adb b/gcc/ada/libgnat/a-tigeau.adb index ef86ae0..0ca5a03 100644 --- a/gcc/ada/libgnat/a-tigeau.adb +++ b/gcc/ada/libgnat/a-tigeau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -317,7 +317,6 @@ package body Ada.Text_IO.Generic_Aux is Ptr : in out Integer) is Junk : Boolean; - pragma Unreferenced (Junk); begin Load_Extended_Digits (File, Buf, Ptr, Junk); end Load_Extended_Digits; @@ -385,7 +384,7 @@ package body Ada.Text_IO.Generic_Aux is Buf : out String; Ptr : in out Natural) is - Loaded : Boolean; + Loaded : Boolean; begin -- Skip initial blanks, and load possible sign diff --git a/gcc/ada/libgnat/a-tigeau.ads b/gcc/ada/libgnat/a-tigeau.ads index 40753e7..7e42161 100644 --- a/gcc/ada/libgnat/a-tigeau.ads +++ b/gcc/ada/libgnat/a-tigeau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tigeli.adb b/gcc/ada/libgnat/a-tigeli.adb index 9cd328c..15b4997 100644 --- a/gcc/ada/libgnat/a-tigeli.adb +++ b/gcc/ada/libgnat/a-tigeli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiinau.adb b/gcc/ada/libgnat/a-tiinau.adb index 4aaa93d..100c5c4 100644 --- a/gcc/ada/libgnat/a-tiinau.adb +++ b/gcc/ada/libgnat/a-tiinau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -54,7 +54,7 @@ package body Ada.Text_IO.Integer_Aux is Load_Integer (File, Buf, Stop); end if; - Item := Scan (Buf, Ptr'Access, Stop); + Scan (Buf, Ptr'Access, Stop, Item); Check_End_Of_Field (Buf, Stop, Ptr, Width); end Get; @@ -71,7 +71,7 @@ package body Ada.Text_IO.Integer_Aux is begin String_Skip (From, Pos); - Item := Scan (From, Pos'Access, From'Last); + Scan (From, Pos'Access, From'Last, Item); Last := Pos - 1; exception diff --git a/gcc/ada/libgnat/a-tiinau.ads b/gcc/ada/libgnat/a-tiinau.ads index 611849f..75eb915 100644 --- a/gcc/ada/libgnat/a-tiinau.ads +++ b/gcc/ada/libgnat/a-tiinau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,8 +38,11 @@ private generic type Num is (<>); - with function Scan - (Str : String; Ptr : not null access Integer; Max : Integer) return Num; + with procedure Scan + (Str : String; + Ptr : not null access Integer; + Max : Integer; + Res : out Num); with procedure Set_Image (V : Num; S : in out String; P : in out Natural); with procedure Set_Image_Width diff --git a/gcc/ada/libgnat/a-tiinio.adb b/gcc/ada/libgnat/a-tiinio.adb index 495c652..c92e6c96 100644 --- a/gcc/ada/libgnat/a-tiinio.adb +++ b/gcc/ada/libgnat/a-tiinio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiinio.ads b/gcc/ada/libgnat/a-tiinio.ads index 833136c..77efd46 100644 --- a/gcc/ada/libgnat/a-tiinio.ads +++ b/gcc/ada/libgnat/a-tiinio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-tiinio__128.adb b/gcc/ada/libgnat/a-tiinio__128.adb index 4c42818..136b68d 100644 --- a/gcc/ada/libgnat/a-tiinio__128.adb +++ b/gcc/ada/libgnat/a-tiinio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-timoio.adb b/gcc/ada/libgnat/a-timoio.adb index 3843d7b..510363c 100644 --- a/gcc/ada/libgnat/a-timoio.adb +++ b/gcc/ada/libgnat/a-timoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-timoio.ads b/gcc/ada/libgnat/a-timoio.ads index 55c536b..8c28a0a 100644 --- a/gcc/ada/libgnat/a-timoio.ads +++ b/gcc/ada/libgnat/a-timoio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1993-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1993-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-timoio__128.adb b/gcc/ada/libgnat/a-timoio__128.adb index d475ce5..0780c9c 100644 --- a/gcc/ada/libgnat/a-timoio__128.adb +++ b/gcc/ada/libgnat/a-timoio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiocst.adb b/gcc/ada/libgnat/a-tiocst.adb index b870878..401fdf7 100644 --- a/gcc/ada/libgnat/a-tiocst.adb +++ b/gcc/ada/libgnat/a-tiocst.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tiocst.ads b/gcc/ada/libgnat/a-tiocst.ads index c2a05f0..50c76c6 100644 --- a/gcc/ada/libgnat/a-tiocst.ads +++ b/gcc/ada/libgnat/a-tiocst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tirsfi.adb b/gcc/ada/libgnat/a-tirsfi.adb index 5c00c77..33f9d7f 100644 --- a/gcc/ada/libgnat/a-tirsfi.adb +++ b/gcc/ada/libgnat/a-tirsfi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-tirsfi.ads b/gcc/ada/libgnat/a-tirsfi.ads index 7aed7ba..f10fa90 100644 --- a/gcc/ada/libgnat/a-tirsfi.ads +++ b/gcc/ada/libgnat/a-tirsfi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-titest.adb b/gcc/ada/libgnat/a-titest.adb index db51b9e..451857f 100644 --- a/gcc/ada/libgnat/a-titest.adb +++ b/gcc/ada/libgnat/a-titest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-undesu.adb b/gcc/ada/libgnat/a-undesu.adb index 4728048..d041b5d 100644 --- a/gcc/ada/libgnat/a-undesu.adb +++ b/gcc/ada/libgnat/a-undesu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wichha.adb b/gcc/ada/libgnat/a-wichha.adb index da8e39f..b0e49da 100644 --- a/gcc/ada/libgnat/a-wichha.adb +++ b/gcc/ada/libgnat/a-wichha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wichun.adb b/gcc/ada/libgnat/a-wichun.adb index 9bfb589..b967c03 100644 --- a/gcc/ada/libgnat/a-wichun.adb +++ b/gcc/ada/libgnat/a-wichun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wichun.ads b/gcc/ada/libgnat/a-wichun.ads index 27ce111..e352388 100644 --- a/gcc/ada/libgnat/a-wichun.ads +++ b/gcc/ada/libgnat/a-wichun.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-witeio.adb b/gcc/ada/libgnat/a-witeio.adb index dbc0f2a..39203db 100644 --- a/gcc/ada/libgnat/a-witeio.adb +++ b/gcc/ada/libgnat/a-witeio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -274,7 +274,7 @@ package body Ada.Wide_Text_IO is ----------------- function End_Of_File (File : File_Type) return Boolean is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -368,7 +368,7 @@ package body Ada.Wide_Text_IO is ----------------- function End_Of_Page (File : File_Type) return Boolean is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -444,7 +444,7 @@ package body Ada.Wide_Text_IO is (File : File_Type; Item : out Wide_Character) is - C : Character; + C : Character; begin FIO.Check_Read_Status (AP (File)); diff --git a/gcc/ada/libgnat/a-witeio.ads b/gcc/ada/libgnat/a-witeio.ads index 910154d..b9e569d 100644 --- a/gcc/ada/libgnat/a-witeio.ads +++ b/gcc/ada/libgnat/a-witeio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-wrstfi.adb b/gcc/ada/libgnat/a-wrstfi.adb index ce8ce44..0d15ca5 100644 --- a/gcc/ada/libgnat/a-wrstfi.adb +++ b/gcc/ada/libgnat/a-wrstfi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wrstfi.ads b/gcc/ada/libgnat/a-wrstfi.ads index b389bc7..805d940 100644 --- a/gcc/ada/libgnat/a-wrstfi.ads +++ b/gcc/ada/libgnat/a-wrstfi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtcoau.adb b/gcc/ada/libgnat/a-wtcoau.adb index d8dd79f..5e17e44 100644 --- a/gcc/ada/libgnat/a-wtcoau.adb +++ b/gcc/ada/libgnat/a-wtcoau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtcoau.ads b/gcc/ada/libgnat/a-wtcoau.ads index 5541983..202fa61 100644 --- a/gcc/ada/libgnat/a-wtcoau.ads +++ b/gcc/ada/libgnat/a-wtcoau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtcoio.adb b/gcc/ada/libgnat/a-wtcoio.adb index fcca1bb..d55309b 100644 --- a/gcc/ada/libgnat/a-wtcoio.adb +++ b/gcc/ada/libgnat/a-wtcoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtcstr.adb b/gcc/ada/libgnat/a-wtcstr.adb index acb6cc5..e00031c 100644 --- a/gcc/ada/libgnat/a-wtcstr.adb +++ b/gcc/ada/libgnat/a-wtcstr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtcstr.ads b/gcc/ada/libgnat/a-wtcstr.ads index e062d09..6f1c5a7 100644 --- a/gcc/ada/libgnat/a-wtcstr.ads +++ b/gcc/ada/libgnat/a-wtcstr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtdeau.adb b/gcc/ada/libgnat/a-wtdeau.adb index f1a65e0..df7c4e2 100644 --- a/gcc/ada/libgnat/a-wtdeau.adb +++ b/gcc/ada/libgnat/a-wtdeau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtdeau.ads b/gcc/ada/libgnat/a-wtdeau.ads index 00fbca59..7efcc05 100644 --- a/gcc/ada/libgnat/a-wtdeau.ads +++ b/gcc/ada/libgnat/a-wtdeau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtdeio.adb b/gcc/ada/libgnat/a-wtdeio.adb index f8c91d1..283fefb 100644 --- a/gcc/ada/libgnat/a-wtdeio.adb +++ b/gcc/ada/libgnat/a-wtdeio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtdeio__128.adb b/gcc/ada/libgnat/a-wtdeio__128.adb index 6a483e2..880e160 100644 --- a/gcc/ada/libgnat/a-wtdeio__128.adb +++ b/gcc/ada/libgnat/a-wtdeio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtedit.adb b/gcc/ada/libgnat/a-wtedit.adb index e4e7bb0..64bb989 100644 --- a/gcc/ada/libgnat/a-wtedit.adb +++ b/gcc/ada/libgnat/a-wtedit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtedit.ads b/gcc/ada/libgnat/a-wtedit.ads index 1736a15..ff2f53a 100644 --- a/gcc/ada/libgnat/a-wtedit.ads +++ b/gcc/ada/libgnat/a-wtedit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-wtenau.adb b/gcc/ada/libgnat/a-wtenau.adb index 8a4dde9..5c102bc 100644 --- a/gcc/ada/libgnat/a-wtenau.adb +++ b/gcc/ada/libgnat/a-wtenau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -227,7 +227,7 @@ package body Ada.Wide_Text_IO.Enumeration_Aux is Start : out Natural; Stop : out Natural) is - WC : Wide_Character; + WC : Wide_Character; -- Processing for Scan_Enum_Lit diff --git a/gcc/ada/libgnat/a-wtenau.ads b/gcc/ada/libgnat/a-wtenau.ads index b26bc8a..2ba0438 100644 --- a/gcc/ada/libgnat/a-wtenau.ads +++ b/gcc/ada/libgnat/a-wtenau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtenio.adb b/gcc/ada/libgnat/a-wtenio.adb index 5a406f8..924e039 100644 --- a/gcc/ada/libgnat/a-wtenio.adb +++ b/gcc/ada/libgnat/a-wtenio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtfiau.adb b/gcc/ada/libgnat/a-wtfiau.adb index 66376b7..889beef 100644 --- a/gcc/ada/libgnat/a-wtfiau.adb +++ b/gcc/ada/libgnat/a-wtfiau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtfiau.ads b/gcc/ada/libgnat/a-wtfiau.ads index e557283..9af6ec1 100644 --- a/gcc/ada/libgnat/a-wtfiau.ads +++ b/gcc/ada/libgnat/a-wtfiau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtfiio.adb b/gcc/ada/libgnat/a-wtfiio.adb index 954ab95..b568335 100644 --- a/gcc/ada/libgnat/a-wtfiio.adb +++ b/gcc/ada/libgnat/a-wtfiio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtfiio__128.adb b/gcc/ada/libgnat/a-wtfiio__128.adb index d74902e..92cbf44 100644 --- a/gcc/ada/libgnat/a-wtfiio__128.adb +++ b/gcc/ada/libgnat/a-wtfiio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtflau.adb b/gcc/ada/libgnat/a-wtflau.adb index 6f486b7..bcaca62 100644 --- a/gcc/ada/libgnat/a-wtflau.adb +++ b/gcc/ada/libgnat/a-wtflau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtflau.ads b/gcc/ada/libgnat/a-wtflau.ads index 0303b63..70d036c 100644 --- a/gcc/ada/libgnat/a-wtflau.ads +++ b/gcc/ada/libgnat/a-wtflau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtflio.adb b/gcc/ada/libgnat/a-wtflio.adb index acbe1f5..34a6ddd 100644 --- a/gcc/ada/libgnat/a-wtflio.adb +++ b/gcc/ada/libgnat/a-wtflio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtgeau.adb b/gcc/ada/libgnat/a-wtgeau.adb index ed823f1..0831c3a 100644 --- a/gcc/ada/libgnat/a-wtgeau.adb +++ b/gcc/ada/libgnat/a-wtgeau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -343,7 +343,6 @@ package body Ada.Wide_Text_IO.Generic_Aux is Ptr : in out Integer) is Junk : Boolean; - pragma Unreferenced (Junk); begin Load_Extended_Digits (File, Buf, Ptr, Junk); end Load_Extended_Digits; @@ -411,7 +410,7 @@ package body Ada.Wide_Text_IO.Generic_Aux is Buf : out String; Ptr : in out Natural) is - Loaded : Boolean; + Loaded : Boolean; begin -- Skip initial blanks and load possible sign diff --git a/gcc/ada/libgnat/a-wtgeau.ads b/gcc/ada/libgnat/a-wtgeau.ads index b3c1fa4..822ee83 100644 --- a/gcc/ada/libgnat/a-wtgeau.ads +++ b/gcc/ada/libgnat/a-wtgeau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtinau.adb b/gcc/ada/libgnat/a-wtinau.adb index 1630428..0628cc6 100644 --- a/gcc/ada/libgnat/a-wtinau.adb +++ b/gcc/ada/libgnat/a-wtinau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -54,7 +54,7 @@ package body Ada.Wide_Text_IO.Integer_Aux is Load_Integer (File, Buf, Stop); end if; - Item := Scan (Buf, Ptr'Access, Stop); + Scan (Buf, Ptr'Access, Stop, Item); Check_End_Of_Field (Buf, Stop, Ptr, Width); end Get; @@ -71,7 +71,7 @@ package body Ada.Wide_Text_IO.Integer_Aux is begin String_Skip (From, Pos); - Item := Scan (From, Pos'Access, From'Last); + Scan (From, Pos'Access, From'Last, Item); Last := Pos - 1; exception diff --git a/gcc/ada/libgnat/a-wtinau.ads b/gcc/ada/libgnat/a-wtinau.ads index 661f25e..37ac2d1 100644 --- a/gcc/ada/libgnat/a-wtinau.ads +++ b/gcc/ada/libgnat/a-wtinau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,8 +38,11 @@ private generic type Num is (<>); - with function Scan - (Str : String; Ptr : not null access Integer; Max : Integer) return Num; + with procedure Scan + (Str : String; + Ptr : not null access Integer; + Max : Integer; + Res : out Num); with procedure Set_Image (V : Num; S : in out String; P : in out Natural); with procedure Set_Image_Width diff --git a/gcc/ada/libgnat/a-wtinio.adb b/gcc/ada/libgnat/a-wtinio.adb index 336b591..27191fe 100644 --- a/gcc/ada/libgnat/a-wtinio.adb +++ b/gcc/ada/libgnat/a-wtinio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtinio__128.adb b/gcc/ada/libgnat/a-wtinio__128.adb index 8c0191d..6a364c8 100644 --- a/gcc/ada/libgnat/a-wtinio__128.adb +++ b/gcc/ada/libgnat/a-wtinio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtmoio.adb b/gcc/ada/libgnat/a-wtmoio.adb index ffefa13..446df8a 100644 --- a/gcc/ada/libgnat/a-wtmoio.adb +++ b/gcc/ada/libgnat/a-wtmoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wtmoio.ads b/gcc/ada/libgnat/a-wtmoio.ads index d772c41..d95c2a3 100644 --- a/gcc/ada/libgnat/a-wtmoio.ads +++ b/gcc/ada/libgnat/a-wtmoio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. In accordance with the copyright of that document, you can freely -- diff --git a/gcc/ada/libgnat/a-wtmoio__128.adb b/gcc/ada/libgnat/a-wtmoio__128.adb index 155f312..ac83e09 100644 --- a/gcc/ada/libgnat/a-wtmoio__128.adb +++ b/gcc/ada/libgnat/a-wtmoio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wttest.adb b/gcc/ada/libgnat/a-wttest.adb index 69eb6be..885b8d5 100644 --- a/gcc/ada/libgnat/a-wttest.adb +++ b/gcc/ada/libgnat/a-wttest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-wwboio.adb b/gcc/ada/libgnat/a-wwboio.adb index a5c85a1..c7e333d 100644 --- a/gcc/ada/libgnat/a-wwboio.adb +++ b/gcc/ada/libgnat/a-wwboio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with Ada.Wide_Text_IO; use Ada.Wide_Text_IO; with Ada.Unchecked_Deallocation; package body Ada.Wide_Text_IO.Wide_Bounded_IO is diff --git a/gcc/ada/libgnat/a-zchhan.adb b/gcc/ada/libgnat/a-zchhan.adb index 61405f7..99007db 100644 --- a/gcc/ada/libgnat/a-zchhan.adb +++ b/gcc/ada/libgnat/a-zchhan.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zchuni.adb b/gcc/ada/libgnat/a-zchuni.adb index 3c6e720..dea8a13 100644 --- a/gcc/ada/libgnat/a-zchuni.adb +++ b/gcc/ada/libgnat/a-zchuni.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zchuni.ads b/gcc/ada/libgnat/a-zchuni.ads index 0030fd1..9d8764a 100644 --- a/gcc/ada/libgnat/a-zchuni.ads +++ b/gcc/ada/libgnat/a-zchuni.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zrstfi.adb b/gcc/ada/libgnat/a-zrstfi.adb index ba07af8..d81bff4 100644 --- a/gcc/ada/libgnat/a-zrstfi.adb +++ b/gcc/ada/libgnat/a-zrstfi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zrstfi.ads b/gcc/ada/libgnat/a-zrstfi.ads index 56d3ef4..6e06b60 100644 --- a/gcc/ada/libgnat/a-zrstfi.ads +++ b/gcc/ada/libgnat/a-zrstfi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztcoau.adb b/gcc/ada/libgnat/a-ztcoau.adb index a367827..2f62810 100644 --- a/gcc/ada/libgnat/a-ztcoau.adb +++ b/gcc/ada/libgnat/a-ztcoau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztcoio.adb b/gcc/ada/libgnat/a-ztcoio.adb index 9ec590a..5c1bcfb 100644 --- a/gcc/ada/libgnat/a-ztcoio.adb +++ b/gcc/ada/libgnat/a-ztcoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztcstr.adb b/gcc/ada/libgnat/a-ztcstr.adb index e4aa3c1..bed7026 100644 --- a/gcc/ada/libgnat/a-ztcstr.adb +++ b/gcc/ada/libgnat/a-ztcstr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztcstr.ads b/gcc/ada/libgnat/a-ztcstr.ads index 86c65d79..a9eb40c 100644 --- a/gcc/ada/libgnat/a-ztcstr.ads +++ b/gcc/ada/libgnat/a-ztcstr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztdeau.adb b/gcc/ada/libgnat/a-ztdeau.adb index 71e214c1..744bb61 100644 --- a/gcc/ada/libgnat/a-ztdeau.adb +++ b/gcc/ada/libgnat/a-ztdeau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztdeau.ads b/gcc/ada/libgnat/a-ztdeau.ads index b70fb21..dc13d33 100644 --- a/gcc/ada/libgnat/a-ztdeau.ads +++ b/gcc/ada/libgnat/a-ztdeau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztdeio.adb b/gcc/ada/libgnat/a-ztdeio.adb index c8bf59f..544a6fd 100644 --- a/gcc/ada/libgnat/a-ztdeio.adb +++ b/gcc/ada/libgnat/a-ztdeio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztdeio__128.adb b/gcc/ada/libgnat/a-ztdeio__128.adb index 11cbb01..51045f6 100644 --- a/gcc/ada/libgnat/a-ztdeio__128.adb +++ b/gcc/ada/libgnat/a-ztdeio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztedit.adb b/gcc/ada/libgnat/a-ztedit.adb index 41668de..459e7e7 100644 --- a/gcc/ada/libgnat/a-ztedit.adb +++ b/gcc/ada/libgnat/a-ztedit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztedit.ads b/gcc/ada/libgnat/a-ztedit.ads index d846432..ef2ed90 100644 --- a/gcc/ada/libgnat/a-ztedit.ads +++ b/gcc/ada/libgnat/a-ztedit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ztenau.adb b/gcc/ada/libgnat/a-ztenau.adb index f4bffec..b03ad8f 100644 --- a/gcc/ada/libgnat/a-ztenau.adb +++ b/gcc/ada/libgnat/a-ztenau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -229,7 +229,7 @@ package body Ada.Wide_Wide_Text_IO.Enumeration_Aux is Start : out Natural; Stop : out Natural) is - WC : Wide_Wide_Character; + WC : Wide_Wide_Character; -- Processing for Scan_Enum_Lit diff --git a/gcc/ada/libgnat/a-ztenau.ads b/gcc/ada/libgnat/a-ztenau.ads index 263072f..8dd4f3b 100644 --- a/gcc/ada/libgnat/a-ztenau.ads +++ b/gcc/ada/libgnat/a-ztenau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztenio.adb b/gcc/ada/libgnat/a-ztenio.adb index 998632b..bb383d5 100644 --- a/gcc/ada/libgnat/a-ztenio.adb +++ b/gcc/ada/libgnat/a-ztenio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztexio.adb b/gcc/ada/libgnat/a-ztexio.adb index b72a1d4..db0017e 100644 --- a/gcc/ada/libgnat/a-ztexio.adb +++ b/gcc/ada/libgnat/a-ztexio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -274,7 +274,7 @@ package body Ada.Wide_Wide_Text_IO is ----------------- function End_Of_File (File : File_Type) return Boolean is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -368,7 +368,7 @@ package body Ada.Wide_Wide_Text_IO is ----------------- function End_Of_Page (File : File_Type) return Boolean is - ch : int; + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -444,7 +444,7 @@ package body Ada.Wide_Wide_Text_IO is (File : File_Type; Item : out Wide_Wide_Character) is - C : Character; + C : Character; begin FIO.Check_Read_Status (AP (File)); diff --git a/gcc/ada/libgnat/a-ztexio.ads b/gcc/ada/libgnat/a-ztexio.ads index 5983e0e..2986149 100644 --- a/gcc/ada/libgnat/a-ztexio.ads +++ b/gcc/ada/libgnat/a-ztexio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/a-ztfiau.adb b/gcc/ada/libgnat/a-ztfiau.adb index 340b90a..06c7cb9 100644 --- a/gcc/ada/libgnat/a-ztfiau.adb +++ b/gcc/ada/libgnat/a-ztfiau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztfiau.ads b/gcc/ada/libgnat/a-ztfiau.ads index 23a7ee9..6291926 100644 --- a/gcc/ada/libgnat/a-ztfiau.ads +++ b/gcc/ada/libgnat/a-ztfiau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztfiio.adb b/gcc/ada/libgnat/a-ztfiio.adb index 5c12e2a..2f2664e 100644 --- a/gcc/ada/libgnat/a-ztfiio.adb +++ b/gcc/ada/libgnat/a-ztfiio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztfiio__128.adb b/gcc/ada/libgnat/a-ztfiio__128.adb index f089fd6..72cd17f 100644 --- a/gcc/ada/libgnat/a-ztfiio__128.adb +++ b/gcc/ada/libgnat/a-ztfiio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztflau.adb b/gcc/ada/libgnat/a-ztflau.adb index d7dd9e2..74a01c1 100644 --- a/gcc/ada/libgnat/a-ztflau.adb +++ b/gcc/ada/libgnat/a-ztflau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztflau.ads b/gcc/ada/libgnat/a-ztflau.ads index 769e20e..76ce423 100644 --- a/gcc/ada/libgnat/a-ztflau.ads +++ b/gcc/ada/libgnat/a-ztflau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztflio.adb b/gcc/ada/libgnat/a-ztflio.adb index 7550695..69f5f01 100644 --- a/gcc/ada/libgnat/a-ztflio.adb +++ b/gcc/ada/libgnat/a-ztflio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztgeau.adb b/gcc/ada/libgnat/a-ztgeau.adb index 9a4fdb0..42e4daf 100644 --- a/gcc/ada/libgnat/a-ztgeau.adb +++ b/gcc/ada/libgnat/a-ztgeau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -343,7 +343,6 @@ package body Ada.Wide_Wide_Text_IO.Generic_Aux is Ptr : in out Integer) is Junk : Boolean; - pragma Unreferenced (Junk); begin Load_Extended_Digits (File, Buf, Ptr, Junk); end Load_Extended_Digits; @@ -411,7 +410,7 @@ package body Ada.Wide_Wide_Text_IO.Generic_Aux is Buf : out String; Ptr : in out Natural) is - Loaded : Boolean; + Loaded : Boolean; begin -- Skip initial blanks and load possible sign diff --git a/gcc/ada/libgnat/a-ztgeau.ads b/gcc/ada/libgnat/a-ztgeau.ads index c885028..aa8ade4 100644 --- a/gcc/ada/libgnat/a-ztgeau.ads +++ b/gcc/ada/libgnat/a-ztgeau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztinau.adb b/gcc/ada/libgnat/a-ztinau.adb index 8693557..d7df8ef 100644 --- a/gcc/ada/libgnat/a-ztinau.adb +++ b/gcc/ada/libgnat/a-ztinau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -54,7 +54,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_Aux is Load_Integer (File, Buf, Stop); end if; - Item := Scan (Buf, Ptr'Access, Stop); + Scan (Buf, Ptr'Access, Stop, Item); Check_End_Of_Field (Buf, Stop, Ptr, Width); end Get; @@ -71,7 +71,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_Aux is begin String_Skip (From, Pos); - Item := Scan (From, Pos'Access, From'Last); + Scan (From, Pos'Access, From'Last, Item); Last := Pos - 1; exception diff --git a/gcc/ada/libgnat/a-ztinau.ads b/gcc/ada/libgnat/a-ztinau.ads index dc40c7e..c1871af 100644 --- a/gcc/ada/libgnat/a-ztinau.ads +++ b/gcc/ada/libgnat/a-ztinau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,8 +38,11 @@ private generic type Num is (<>); - with function Scan - (Str : String; Ptr : not null access Integer; Max : Integer) return Num; + with procedure Scan + (Str : String; + Ptr : not null access Integer; + Max : Integer; + Res : out Num); with procedure Set_Image (V : Num; S : in out String; P : in out Natural); with procedure Set_Image_Width diff --git a/gcc/ada/libgnat/a-ztinio.adb b/gcc/ada/libgnat/a-ztinio.adb index 5050188..442323d 100644 --- a/gcc/ada/libgnat/a-ztinio.adb +++ b/gcc/ada/libgnat/a-ztinio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztinio__128.adb b/gcc/ada/libgnat/a-ztinio__128.adb index 942df64..5ebfc8a 100644 --- a/gcc/ada/libgnat/a-ztinio__128.adb +++ b/gcc/ada/libgnat/a-ztinio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztmoio.adb b/gcc/ada/libgnat/a-ztmoio.adb index a312091..dfdcd2d 100644 --- a/gcc/ada/libgnat/a-ztmoio.adb +++ b/gcc/ada/libgnat/a-ztmoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-ztmoio__128.adb b/gcc/ada/libgnat/a-ztmoio__128.adb index 41991c2..4e37863 100644 --- a/gcc/ada/libgnat/a-ztmoio__128.adb +++ b/gcc/ada/libgnat/a-ztmoio__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zttest.adb b/gcc/ada/libgnat/a-zttest.adb index d4c1ef0..9e31cb8 100644 --- a/gcc/ada/libgnat/a-zttest.adb +++ b/gcc/ada/libgnat/a-zttest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/a-zzboio.adb b/gcc/ada/libgnat/a-zzboio.adb index 8cdc027..d04aed6 100644 --- a/gcc/ada/libgnat/a-zzboio.adb +++ b/gcc/ada/libgnat/a-zzboio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with Ada.Wide_Wide_Text_IO; use Ada.Wide_Wide_Text_IO; with Ada.Unchecked_Deallocation; package body Ada.Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is diff --git a/gcc/ada/libgnat/g-allein.ads b/gcc/ada/libgnat/g-allein.ads index 9b381d3..b0a4884 100644 --- a/gcc/ada/libgnat/g-allein.ads +++ b/gcc/ada/libgnat/g-allein.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alleve.adb b/gcc/ada/libgnat/g-alleve.adb index 5dc7230..0dba029 100644 --- a/gcc/ada/libgnat/g-alleve.adb +++ b/gcc/ada/libgnat/g-alleve.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Soft Binding Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alleve.ads b/gcc/ada/libgnat/g-alleve.ads index cf0028a..4811096 100644 --- a/gcc/ada/libgnat/g-alleve.ads +++ b/gcc/ada/libgnat/g-alleve.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Soft Binding Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alleve__hard.adb b/gcc/ada/libgnat/g-alleve__hard.adb index f2f8ac2..3de5f79 100644 --- a/gcc/ada/libgnat/g-alleve__hard.adb +++ b/gcc/ada/libgnat/g-alleve__hard.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Hard Binding Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alleve__hard.ads b/gcc/ada/libgnat/g-alleve__hard.ads index b8a3281..b230a5a 100644 --- a/gcc/ada/libgnat/g-alleve__hard.ads +++ b/gcc/ada/libgnat/g-alleve__hard.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Hard Binding Version) -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-altcon.adb b/gcc/ada/libgnat/g-altcon.adb index 58975f4..0421767 100644 --- a/gcc/ada/libgnat/g-altcon.adb +++ b/gcc/ada/libgnat/g-altcon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-altcon.ads b/gcc/ada/libgnat/g-altcon.ads index ad84a80..f3935e8 100644 --- a/gcc/ada/libgnat/g-altcon.ads +++ b/gcc/ada/libgnat/g-altcon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-altive.ads b/gcc/ada/libgnat/g-altive.ads index 32e603a..86cb2f0 100644 --- a/gcc/ada/libgnat/g-altive.ads +++ b/gcc/ada/libgnat/g-altive.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alveop.adb b/gcc/ada/libgnat/g-alveop.adb index 65a1115..5160e57 100644 --- a/gcc/ada/libgnat/g-alveop.adb +++ b/gcc/ada/libgnat/g-alveop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alveop.ads b/gcc/ada/libgnat/g-alveop.ads index 3250fdf..5323137 100644 --- a/gcc/ada/libgnat/g-alveop.ads +++ b/gcc/ada/libgnat/g-alveop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alvety.ads b/gcc/ada/libgnat/g-alvety.ads index 3fec714..03b84ec 100644 --- a/gcc/ada/libgnat/g-alvety.ads +++ b/gcc/ada/libgnat/g-alvety.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-alvevi.ads b/gcc/ada/libgnat/g-alvevi.ads index 8c10959..27ac8c7 100644 --- a/gcc/ada/libgnat/g-alvevi.ads +++ b/gcc/ada/libgnat/g-alvevi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-arrspl.adb b/gcc/ada/libgnat/g-arrspl.adb index 3c1f59a..38a3245 100644 --- a/gcc/ada/libgnat/g-arrspl.adb +++ b/gcc/ada/libgnat/g-arrspl.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-arrspl.ads b/gcc/ada/libgnat/g-arrspl.ads index 3d943c0..625c13b 100644 --- a/gcc/ada/libgnat/g-arrspl.ads +++ b/gcc/ada/libgnat/g-arrspl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-awk.adb b/gcc/ada/libgnat/g-awk.adb index c48d7ef..1c88785 100644 --- a/gcc/ada/libgnat/g-awk.adb +++ b/gcc/ada/libgnat/g-awk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-awk.ads b/gcc/ada/libgnat/g-awk.ads index b499101..906af51 100644 --- a/gcc/ada/libgnat/g-awk.ads +++ b/gcc/ada/libgnat/g-awk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-binenv.adb b/gcc/ada/libgnat/g-binenv.adb index 4bf39cd..00d9809 100644 --- a/gcc/ada/libgnat/g-binenv.adb +++ b/gcc/ada/libgnat/g-binenv.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-binenv.ads b/gcc/ada/libgnat/g-binenv.ads index ba9a9b1..6bd7cbb 100644 --- a/gcc/ada/libgnat/g-binenv.ads +++ b/gcc/ada/libgnat/g-binenv.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-brapre.ads b/gcc/ada/libgnat/g-brapre.ads index 21ae351..a106f55 100644 --- a/gcc/ada/libgnat/g-brapre.ads +++ b/gcc/ada/libgnat/g-brapre.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, AdaCore -- +-- Copyright (C) 2019-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-bubsor.adb b/gcc/ada/libgnat/g-bubsor.adb index 70d50fc..16ea7bf 100644 --- a/gcc/ada/libgnat/g-bubsor.adb +++ b/gcc/ada/libgnat/g-bubsor.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-bubsor.ads b/gcc/ada/libgnat/g-bubsor.ads index acf47ed..f29f128 100644 --- a/gcc/ada/libgnat/g-bubsor.ads +++ b/gcc/ada/libgnat/g-bubsor.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-busora.adb b/gcc/ada/libgnat/g-busora.adb index 08317e7..973fc12 100644 --- a/gcc/ada/libgnat/g-busora.adb +++ b/gcc/ada/libgnat/g-busora.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-busora.ads b/gcc/ada/libgnat/g-busora.ads index 670e7b6..479f1ea 100644 --- a/gcc/ada/libgnat/g-busora.ads +++ b/gcc/ada/libgnat/g-busora.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-busorg.adb b/gcc/ada/libgnat/g-busorg.adb index 0f74f59..e5d747d 100644 --- a/gcc/ada/libgnat/g-busorg.adb +++ b/gcc/ada/libgnat/g-busorg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-busorg.ads b/gcc/ada/libgnat/g-busorg.ads index 64d6d03..0139c20 100644 --- a/gcc/ada/libgnat/g-busorg.ads +++ b/gcc/ada/libgnat/g-busorg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-byorma.adb b/gcc/ada/libgnat/g-byorma.adb index 451549d..6887baf 100644 --- a/gcc/ada/libgnat/g-byorma.adb +++ b/gcc/ada/libgnat/g-byorma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, AdaCore -- +-- Copyright (C) 2006-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body GNAT.Byte_Order_Mark is -------------- diff --git a/gcc/ada/libgnat/g-byorma.ads b/gcc/ada/libgnat/g-byorma.ads index e7b6275..1b18169 100644 --- a/gcc/ada/libgnat/g-byorma.ads +++ b/gcc/ada/libgnat/g-byorma.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, AdaCore -- +-- Copyright (C) 2006-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -61,8 +61,6 @@ -- cases depend on the first character of the XML file being < so that the -- encoding of this character can be recognized. -pragma Compiler_Unit_Warning; - package GNAT.Byte_Order_Mark is type BOM_Kind is diff --git a/gcc/ada/libgnat/g-bytswa.adb b/gcc/ada/libgnat/g-bytswa.adb index c37073e..6a0260f 100644 --- a/gcc/ada/libgnat/g-bytswa.adb +++ b/gcc/ada/libgnat/g-bytswa.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, AdaCore -- +-- Copyright (C) 2006-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-bytswa.ads b/gcc/ada/libgnat/g-bytswa.ads index d8bbb00..4742693 100644 --- a/gcc/ada/libgnat/g-bytswa.ads +++ b/gcc/ada/libgnat/g-bytswa.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, AdaCore -- +-- Copyright (C) 2006-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-calend.adb b/gcc/ada/libgnat/g-calend.adb index 8200b60..61294aa 100644 --- a/gcc/ada/libgnat/g-calend.adb +++ b/gcc/ada/libgnat/g-calend.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,7 +44,6 @@ package body GNAT.Calendar is Month : Month_Number; Day : Day_Number; Day_Secs : Day_Duration; - pragma Unreferenced (Day_Secs); begin Split (Date, Year, Month, Day, Day_Secs); return Julian_Day (Year, Month, Day) - Julian_Day (Year, 1, 1) + 1; @@ -59,7 +58,6 @@ package body GNAT.Calendar is Month : Month_Number; Day : Day_Number; Day_Secs : Day_Duration; - pragma Unreferenced (Day_Secs); begin Split (Date, Year, Month, Day, Day_Secs); return Day_Name'Val ((Julian_Day (Year, Month, Day)) mod 7); @@ -77,7 +75,6 @@ package body GNAT.Calendar is Minute : Minute_Number; Second : Second_Number; Sub_Second : Second_Duration; - pragma Unreferenced (Year, Month, Day, Minute, Second, Sub_Second); begin Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second); return Hour; @@ -137,7 +134,6 @@ package body GNAT.Calendar is Minute : Minute_Number; Second : Second_Number; Sub_Second : Second_Duration; - pragma Unreferenced (Year, Month, Day, Hour, Second, Sub_Second); begin Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second); return Minute; @@ -155,7 +151,6 @@ package body GNAT.Calendar is Minute : Minute_Number; Second : Second_Number; Sub_Second : Second_Duration; - pragma Unreferenced (Year, Month, Day, Hour, Minute, Sub_Second); begin Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second); return Second; @@ -222,8 +217,6 @@ package body GNAT.Calendar is Ds : Day_Duration; Le : Boolean; - pragma Unreferenced (Ds, Le); - begin -- Even though the input time zone is UTC (0), the flag Use_TZ will -- ensure that Split picks up the local time zone. ???But Use_TZ is @@ -257,7 +250,6 @@ package body GNAT.Calendar is Minute : Minute_Number; Second : Second_Number; Sub_Second : Second_Duration; - pragma Unreferenced (Year, Month, Day, Hour, Minute, Second); begin Split (Date, Year, Month, Day, Hour, Minute, Second, Sub_Second); return Sub_Second; @@ -398,7 +390,6 @@ package body GNAT.Calendar is function Week_In_Year (Date : Time) return Week_In_Year_Number is Year : Year_Number; Week : Week_In_Year_Number; - pragma Unreferenced (Year); begin Year_Week_In_Year (Date, Year, Week); return Week; @@ -423,8 +414,6 @@ package body GNAT.Calendar is Shift : Week_In_Year_Number; Start_Week : Week_In_Year_Number; - pragma Unreferenced (Hour, Minute, Second, Sub_Second); - function Is_Leap (Year : Year_Number) return Boolean; -- Return True if Year denotes a leap year. Leap centennial years are -- properly handled. diff --git a/gcc/ada/libgnat/g-calend.ads b/gcc/ada/libgnat/g-calend.ads index 29f055f..efa295f 100644 --- a/gcc/ada/libgnat/g-calend.ads +++ b/gcc/ada/libgnat/g-calend.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-casuti.adb b/gcc/ada/libgnat/g-casuti.adb index d18f452..5b5af16 100644 --- a/gcc/ada/libgnat/g-casuti.adb +++ b/gcc/ada/libgnat/g-casuti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-casuti.ads b/gcc/ada/libgnat/g-casuti.ads index f711711..3f8079b 100644 --- a/gcc/ada/libgnat/g-casuti.ads +++ b/gcc/ada/libgnat/g-casuti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-catiio.adb b/gcc/ada/libgnat/g-catiio.adb index 1fdf151..5e5a7d8 100644 --- a/gcc/ada/libgnat/g-catiio.adb +++ b/gcc/ada/libgnat/g-catiio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-catiio.ads b/gcc/ada/libgnat/g-catiio.ads index 3c2cef9..3930ae1 100644 --- a/gcc/ada/libgnat/g-catiio.ads +++ b/gcc/ada/libgnat/g-catiio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgi.adb b/gcc/ada/libgnat/g-cgi.adb index 0c3b6a4..007b466 100644 --- a/gcc/ada/libgnat/g-cgi.adb +++ b/gcc/ada/libgnat/g-cgi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgi.ads b/gcc/ada/libgnat/g-cgi.ads index 2108cda..ec805e1 100644 --- a/gcc/ada/libgnat/g-cgi.ads +++ b/gcc/ada/libgnat/g-cgi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgicoo.adb b/gcc/ada/libgnat/g-cgicoo.adb index 4f5f120..be060bc 100644 --- a/gcc/ada/libgnat/g-cgicoo.adb +++ b/gcc/ada/libgnat/g-cgicoo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgicoo.ads b/gcc/ada/libgnat/g-cgicoo.ads index 4e59abc..09f5634 100644 --- a/gcc/ada/libgnat/g-cgicoo.ads +++ b/gcc/ada/libgnat/g-cgicoo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgideb.adb b/gcc/ada/libgnat/g-cgideb.adb index 2527c9b..118abfa 100644 --- a/gcc/ada/libgnat/g-cgideb.adb +++ b/gcc/ada/libgnat/g-cgideb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cgideb.ads b/gcc/ada/libgnat/g-cgideb.ads index bb9a0f3..153ab43 100644 --- a/gcc/ada/libgnat/g-cgideb.ads +++ b/gcc/ada/libgnat/g-cgideb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-comlin.adb b/gcc/ada/libgnat/g-comlin.adb index 4cbfd57..e583c27 100644 --- a/gcc/ada/libgnat/g-comlin.adb +++ b/gcc/ada/libgnat/g-comlin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -465,8 +465,8 @@ package body GNAT.Command_Line is if Do_Expansion then declare - Arg : constant String := - Argument (Parser, Parser.Current_Argument - 1); + Arg : constant String := + Argument (Parser, Parser.Current_Argument - 1); begin for Index in Arg'Range loop if Arg (Index) in '*' | '?' | '[' then @@ -1257,7 +1257,7 @@ package body GNAT.Command_Line is Expanded : String; Section : String := "") is - Def : Alias_Definition; + Def : Alias_Definition; begin if Config = null then @@ -2235,7 +2235,6 @@ package body GNAT.Command_Line is Add_Before : Boolean := False) is Success : Boolean; - pragma Unreferenced (Success); begin Add_Switch (Cmd, Switch, Parameter, Separator, Section, Add_Before, Success); @@ -2453,7 +2452,6 @@ package body GNAT.Command_Line is Section : String := "") is Success : Boolean; - pragma Unreferenced (Success); begin Remove_Switch (Cmd, Switch, Remove_All, Has_Parameter, Section, Success); end Remove_Switch; diff --git a/gcc/ada/libgnat/g-comlin.ads b/gcc/ada/libgnat/g-comlin.ads index 3738432..a2d9071 100644 --- a/gcc/ada/libgnat/g-comlin.ads +++ b/gcc/ada/libgnat/g-comlin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-comver.adb b/gcc/ada/libgnat/g-comver.adb index 575caac..70ae5c7 100644 --- a/gcc/ada/libgnat/g-comver.adb +++ b/gcc/ada/libgnat/g-comver.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-comver.ads b/gcc/ada/libgnat/g-comver.ads index 7de2811..7768bf9 100644 --- a/gcc/ada/libgnat/g-comver.ads +++ b/gcc/ada/libgnat/g-comver.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cppexc.adb b/gcc/ada/libgnat/g-cppexc.adb index f20eb7e..d805e68 100644 --- a/gcc/ada/libgnat/g-cppexc.adb +++ b/gcc/ada/libgnat/g-cppexc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, AdaCore -- +-- Copyright (C) 2013-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-cppexc.ads b/gcc/ada/libgnat/g-cppexc.ads index ddfa02c..8791437 100644 --- a/gcc/ada/libgnat/g-cppexc.ads +++ b/gcc/ada/libgnat/g-cppexc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, AdaCore -- +-- Copyright (C) 2013-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-crc32.adb b/gcc/ada/libgnat/g-crc32.adb index 16beef1..6d0d3c3 100644 --- a/gcc/ada/libgnat/g-crc32.adb +++ b/gcc/ada/libgnat/g-crc32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-crc32.ads b/gcc/ada/libgnat/g-crc32.ads index 3b59c3c..65f20dc 100644 --- a/gcc/ada/libgnat/g-crc32.ads +++ b/gcc/ada/libgnat/g-crc32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, AdaCore -- +-- Copyright (C) 2004-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-ctrl_c.adb b/gcc/ada/libgnat/g-ctrl_c.adb index d238781..752a5ae 100644 --- a/gcc/ada/libgnat/g-ctrl_c.adb +++ b/gcc/ada/libgnat/g-ctrl_c.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-ctrl_c.ads b/gcc/ada/libgnat/g-ctrl_c.ads index d46e4e7..77c45ac 100644 --- a/gcc/ada/libgnat/g-ctrl_c.ads +++ b/gcc/ada/libgnat/g-ctrl_c.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-curexc.ads b/gcc/ada/libgnat/g-curexc.ads index 82d1cd6..c589d61 100644 --- a/gcc/ada/libgnat/g-curexc.ads +++ b/gcc/ada/libgnat/g-curexc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, AdaCore -- +-- Copyright (C) 1996-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-debpoo.adb b/gcc/ada/libgnat/g-debpoo.adb index 5d707ca..ecab282 100644 --- a/gcc/ada/libgnat/g-debpoo.adb +++ b/gcc/ada/libgnat/g-debpoo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -777,7 +777,7 @@ package body GNAT.Debug_Pools is function Is_Valid_Or_Handled (Storage : System.Address; Valid : Boolean) return Boolean is - Int_Storage : constant Integer_Address := To_Integer (Storage); + Int_Storage : constant Integer_Address := To_Integer (Storage); begin -- The pool only returns addresses aligned on Storage_Alignment so diff --git a/gcc/ada/libgnat/g-debpoo.ads b/gcc/ada/libgnat/g-debpoo.ads index fce04c4..bf21369 100644 --- a/gcc/ada/libgnat/g-debpoo.ads +++ b/gcc/ada/libgnat/g-debpoo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-debuti.adb b/gcc/ada/libgnat/g-debuti.adb index d064401..70290ff 100644 --- a/gcc/ada/libgnat/g-debuti.adb +++ b/gcc/ada/libgnat/g-debuti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-debuti.ads b/gcc/ada/libgnat/g-debuti.ads index 109f56a..4782bb2 100644 --- a/gcc/ada/libgnat/g-debuti.ads +++ b/gcc/ada/libgnat/g-debuti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-decstr.adb b/gcc/ada/libgnat/g-decstr.adb index 89824095..7cac94d 100644 --- a/gcc/ada/libgnat/g-decstr.adb +++ b/gcc/ada/libgnat/g-decstr.adb @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-decstr.ads b/gcc/ada/libgnat/g-decstr.ads index cf6f5c3..76afa9a 100644 --- a/gcc/ada/libgnat/g-decstr.ads +++ b/gcc/ada/libgnat/g-decstr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-deutst.ads b/gcc/ada/libgnat/g-deutst.ads index f8f9087..309f5fd 100644 --- a/gcc/ada/libgnat/g-deutst.ads +++ b/gcc/ada/libgnat/g-deutst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-diopit.adb b/gcc/ada/libgnat/g-diopit.adb index 3090bee..a785264 100644 --- a/gcc/ada/libgnat/g-diopit.adb +++ b/gcc/ada/libgnat/g-diopit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-diopit.ads b/gcc/ada/libgnat/g-diopit.ads index 9eec0f6..3f51b5c 100644 --- a/gcc/ada/libgnat/g-diopit.ads +++ b/gcc/ada/libgnat/g-diopit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-dirope.adb b/gcc/ada/libgnat/g-dirope.adb index ba68626..36e5f01 100644 --- a/gcc/ada/libgnat/g-dirope.adb +++ b/gcc/ada/libgnat/g-dirope.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-dirope.ads b/gcc/ada/libgnat/g-dirope.ads index 3568f77..f0c5543 100644 --- a/gcc/ada/libgnat/g-dirope.ads +++ b/gcc/ada/libgnat/g-dirope.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-dynhta.adb b/gcc/ada/libgnat/g-dynhta.adb index 75d1e61..cb45ec3 100644 --- a/gcc/ada/libgnat/g-dynhta.adb +++ b/gcc/ada/libgnat/g-dynhta.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-dynhta.ads b/gcc/ada/libgnat/g-dynhta.ads index 27ea715..742d4cc 100644 --- a/gcc/ada/libgnat/g-dynhta.ads +++ b/gcc/ada/libgnat/g-dynhta.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,7 +46,8 @@ -- GNAT.HTable to keep as much coherency as possible between these two -- related units. -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. package GNAT.Dynamic_HTables is diff --git a/gcc/ada/libgnat/g-dyntab.adb b/gcc/ada/libgnat/g-dyntab.adb index 9f14b68..edc0a9d 100644 --- a/gcc/ada/libgnat/g-dyntab.adb +++ b/gcc/ada/libgnat/g-dyntab.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with GNAT.Heap_Sort_G; with Ada.Unchecked_Deallocation; diff --git a/gcc/ada/libgnat/g-dyntab.ads b/gcc/ada/libgnat/g-dyntab.ads index 1cb26b4..7cad735 100644 --- a/gcc/ada/libgnat/g-dyntab.ads +++ b/gcc/ada/libgnat/g-dyntab.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -45,7 +45,8 @@ -- GNAT.Table -- Table (the compiler unit) -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. with Ada.Unchecked_Conversion; diff --git a/gcc/ada/libgnat/g-eacodu.adb b/gcc/ada/libgnat/g-eacodu.adb index c9e62ab..6d6fb4c 100644 --- a/gcc/ada/libgnat/g-eacodu.adb +++ b/gcc/ada/libgnat/g-eacodu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-encstr.adb b/gcc/ada/libgnat/g-encstr.adb index e701bc6..422b1d0 100644 --- a/gcc/ada/libgnat/g-encstr.adb +++ b/gcc/ada/libgnat/g-encstr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-encstr.ads b/gcc/ada/libgnat/g-encstr.ads index fc1e97d..86128de 100644 --- a/gcc/ada/libgnat/g-encstr.ads +++ b/gcc/ada/libgnat/g-encstr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-enutst.ads b/gcc/ada/libgnat/g-enutst.ads index 06a1a99..711bcbe 100644 --- a/gcc/ada/libgnat/g-enutst.ads +++ b/gcc/ada/libgnat/g-enutst.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-excact.adb b/gcc/ada/libgnat/g-excact.adb index 7184559..70161f6 100644 --- a/gcc/ada/libgnat/g-excact.adb +++ b/gcc/ada/libgnat/g-excact.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-excact.ads b/gcc/ada/libgnat/g-excact.ads index d4bda84..1101546 100644 --- a/gcc/ada/libgnat/g-excact.ads +++ b/gcc/ada/libgnat/g-excact.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-except.ads b/gcc/ada/libgnat/g-except.ads index 8e33a4e..9002146 100644 --- a/gcc/ada/libgnat/g-except.ads +++ b/gcc/ada/libgnat/g-except.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-exctra.adb b/gcc/ada/libgnat/g-exctra.adb index 819e204..f578c68 100644 --- a/gcc/ada/libgnat/g-exctra.adb +++ b/gcc/ada/libgnat/g-exctra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-exctra.ads b/gcc/ada/libgnat/g-exctra.ads index 1cfe661..f6b928c 100644 --- a/gcc/ada/libgnat/g-exctra.ads +++ b/gcc/ada/libgnat/g-exctra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-expect.adb b/gcc/ada/libgnat/g-expect.adb index 89ede30..e43ef4f 100644 --- a/gcc/ada/libgnat/g-expect.adb +++ b/gcc/ada/libgnat/g-expect.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -193,7 +193,7 @@ package body GNAT.Expect is Str : String; Filter_On : Filter_Type) is - Current_Filter : Filter_List; + Current_Filter : Filter_List; begin if Pid.Filters_Lock = 0 then @@ -264,7 +264,6 @@ package body GNAT.Expect is procedure Close (Descriptor : in out Process_Descriptor) is Status : Integer; - pragma Unreferenced (Status); begin Close (Descriptor, Status); end Close; @@ -976,7 +975,6 @@ package body GNAT.Expect is declare Result : Expect_Match; - pragma Unreferenced (Result); begin -- This loop runs until the call to Expect raises Process_Died @@ -1439,7 +1437,7 @@ package body GNAT.Expect is Pipe3 : not null access Pipe_Type) is Status : Boolean; - pragma Unreferenced (Status); + pragma Warnings (Off, "modified by call, but value overwritten"); begin -- Create the pipes diff --git a/gcc/ada/libgnat/g-expect.ads b/gcc/ada/libgnat/g-expect.ads index 985e73d..6358946 100644 --- a/gcc/ada/libgnat/g-expect.ads +++ b/gcc/ada/libgnat/g-expect.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-exptty.adb b/gcc/ada/libgnat/g-exptty.adb index d5ad5bb..20f3a1a 100644 --- a/gcc/ada/libgnat/g-exptty.adb +++ b/gcc/ada/libgnat/g-exptty.adb @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-exptty.ads b/gcc/ada/libgnat/g-exptty.ads index 7c7a7c7..ca24f8c 100644 --- a/gcc/ada/libgnat/g-exptty.ads +++ b/gcc/ada/libgnat/g-exptty.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-flocon.ads b/gcc/ada/libgnat/g-flocon.ads index cc8859b..5e7da54 100644 --- a/gcc/ada/libgnat/g-flocon.ads +++ b/gcc/ada/libgnat/g-flocon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-forstr.adb b/gcc/ada/libgnat/g-forstr.adb index 51858ed..8ce8d1c 100644 --- a/gcc/ada/libgnat/g-forstr.adb +++ b/gcc/ada/libgnat/g-forstr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-forstr.ads b/gcc/ada/libgnat/g-forstr.ads index 7ef5f7d..c0f3aa6 100644 --- a/gcc/ada/libgnat/g-forstr.ads +++ b/gcc/ada/libgnat/g-forstr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-graphs.adb b/gcc/ada/libgnat/g-graphs.adb index 2565204..fb2356a 100644 --- a/gcc/ada/libgnat/g-graphs.adb +++ b/gcc/ada/libgnat/g-graphs.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-graphs.ads b/gcc/ada/libgnat/g-graphs.ads index d593f9f..68298ed 100644 --- a/gcc/ada/libgnat/g-graphs.ads +++ b/gcc/ada/libgnat/g-graphs.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,8 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. with GNAT.Dynamic_HTables; use GNAT.Dynamic_HTables; with GNAT.Lists; use GNAT.Lists; diff --git a/gcc/ada/libgnat/g-heasor.adb b/gcc/ada/libgnat/g-heasor.adb index 4984a35..464b5d6 100644 --- a/gcc/ada/libgnat/g-heasor.adb +++ b/gcc/ada/libgnat/g-heasor.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-heasor.ads b/gcc/ada/libgnat/g-heasor.ads index 6bc026f..6e14fc7 100644 --- a/gcc/ada/libgnat/g-heasor.ads +++ b/gcc/ada/libgnat/g-heasor.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,8 +46,6 @@ -- Note: GNAT.Heap_Sort replaces and obsoletes GNAT.Heap_Sort_A, which is -- retained in the GNAT library for backwards compatibility. -pragma Compiler_Unit_Warning; - package GNAT.Heap_Sort is pragma Pure; diff --git a/gcc/ada/libgnat/g-hesora.adb b/gcc/ada/libgnat/g-hesora.adb index 28926dd..d969561 100644 --- a/gcc/ada/libgnat/g-hesora.adb +++ b/gcc/ada/libgnat/g-hesora.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body GNAT.Heap_Sort_A is ---------- diff --git a/gcc/ada/libgnat/g-hesora.ads b/gcc/ada/libgnat/g-hesora.ads index 62dd10b..e8a04a4 100644 --- a/gcc/ada/libgnat/g-hesora.ads +++ b/gcc/ada/libgnat/g-hesora.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,8 +40,6 @@ -- worst case and is in place with no additional storage required. See -- the body for exact details of the algorithm used. -pragma Compiler_Unit_Warning; - package GNAT.Heap_Sort_A is pragma Preelaborate; diff --git a/gcc/ada/libgnat/g-hesorg.adb b/gcc/ada/libgnat/g-hesorg.adb index 0575af2..13f5a62 100644 --- a/gcc/ada/libgnat/g-hesorg.adb +++ b/gcc/ada/libgnat/g-hesorg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-hesorg.ads b/gcc/ada/libgnat/g-hesorg.ads index e24e82d..76a7086 100644 --- a/gcc/ada/libgnat/g-hesorg.ads +++ b/gcc/ada/libgnat/g-hesorg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-htable.adb b/gcc/ada/libgnat/g-htable.adb index 4aeeb1d..0680474 100644 --- a/gcc/ada/libgnat/g-htable.adb +++ b/gcc/ada/libgnat/g-htable.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,7 +34,5 @@ -- supply a dummy body, the old incorrect body is picked up during the -- bootstrap process). -pragma Compiler_Unit_Warning; - package body GNAT.HTable is end GNAT.HTable; diff --git a/gcc/ada/libgnat/g-htable.ads b/gcc/ada/libgnat/g-htable.ads index 373b2e9..599ed1c 100644 --- a/gcc/ada/libgnat/g-htable.ads +++ b/gcc/ada/libgnat/g-htable.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -39,8 +39,6 @@ -- See file s-htable.ads for full documentation of the interface -pragma Compiler_Unit_Warning; - with System.HTable; package GNAT.HTable is diff --git a/gcc/ada/libgnat/g-io.adb b/gcc/ada/libgnat/g-io.adb index 24b041f..4009428 100644 --- a/gcc/ada/libgnat/g-io.adb +++ b/gcc/ada/libgnat/g-io.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-io.ads b/gcc/ada/libgnat/g-io.ads index 4700347..1143014 100644 --- a/gcc/ada/libgnat/g-io.ads +++ b/gcc/ada/libgnat/g-io.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-io_aux.adb b/gcc/ada/libgnat/g-io_aux.adb index e904f37..db40abb 100644 --- a/gcc/ada/libgnat/g-io_aux.adb +++ b/gcc/ada/libgnat/g-io_aux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-io_aux.ads b/gcc/ada/libgnat/g-io_aux.ads index a78a168..636acb9 100644 --- a/gcc/ada/libgnat/g-io_aux.ads +++ b/gcc/ada/libgnat/g-io_aux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-lists.adb b/gcc/ada/libgnat/g-lists.adb index 99414f6..4d85907 100644 --- a/gcc/ada/libgnat/g-lists.adb +++ b/gcc/ada/libgnat/g-lists.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-lists.ads b/gcc/ada/libgnat/g-lists.ads index 3525877b..be5f6cf 100644 --- a/gcc/ada/libgnat/g-lists.ads +++ b/gcc/ada/libgnat/g-lists.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,8 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. package GNAT.Lists is diff --git a/gcc/ada/libgnat/g-locfil.adb b/gcc/ada/libgnat/g-locfil.adb index 75a7d8a..5b90823 100644 --- a/gcc/ada/libgnat/g-locfil.adb +++ b/gcc/ada/libgnat/g-locfil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-locfil.ads b/gcc/ada/libgnat/g-locfil.ads index 5005ded..c05e134 100644 --- a/gcc/ada/libgnat/g-locfil.ads +++ b/gcc/ada/libgnat/g-locfil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-mbdira.adb b/gcc/ada/libgnat/g-mbdira.adb index cb7ecd2..75af0f7 100644 --- a/gcc/ada/libgnat/g-mbdira.adb +++ b/gcc/ada/libgnat/g-mbdira.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-mbdira.ads b/gcc/ada/libgnat/g-mbdira.ads index 28b66fb..18fb28d 100644 --- a/gcc/ada/libgnat/g-mbdira.ads +++ b/gcc/ada/libgnat/g-mbdira.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/g-mbflra.adb b/gcc/ada/libgnat/g-mbflra.adb index a35787b..60f345b 100644 --- a/gcc/ada/libgnat/g-mbflra.adb +++ b/gcc/ada/libgnat/g-mbflra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -118,7 +118,6 @@ package body GNAT.MBBS_Float_Random is function Euclid (P, Q : Int) return Int is X, Y, GCD : Int; - pragma Unreferenced (Y, GCD); begin Euclid (P, Q, X, Y, GCD); return X; diff --git a/gcc/ada/libgnat/g-mbflra.ads b/gcc/ada/libgnat/g-mbflra.ads index d761e18..a53e4e3 100644 --- a/gcc/ada/libgnat/g-mbflra.ads +++ b/gcc/ada/libgnat/g-mbflra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/g-md5.adb b/gcc/ada/libgnat/g-md5.adb index b977af0..8b70d561 100644 --- a/gcc/ada/libgnat/g-md5.adb +++ b/gcc/ada/libgnat/g-md5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-md5.ads b/gcc/ada/libgnat/g-md5.ads index 62131e3..3564036 100644 --- a/gcc/ada/libgnat/g-md5.ads +++ b/gcc/ada/libgnat/g-md5.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-memdum.adb b/gcc/ada/libgnat/g-memdum.adb index 310923f..880f4c0 100644 --- a/gcc/ada/libgnat/g-memdum.adb +++ b/gcc/ada/libgnat/g-memdum.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-memdum.ads b/gcc/ada/libgnat/g-memdum.ads index be74588..44a0070 100644 --- a/gcc/ada/libgnat/g-memdum.ads +++ b/gcc/ada/libgnat/g-memdum.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, AdaCore -- +-- Copyright (C) 2003-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-moreex.adb b/gcc/ada/libgnat/g-moreex.adb index f61cd94..0f9153d 100644 --- a/gcc/ada/libgnat/g-moreex.adb +++ b/gcc/ada/libgnat/g-moreex.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-moreex.ads b/gcc/ada/libgnat/g-moreex.ads index 7b0b87d..becea8c 100644 --- a/gcc/ada/libgnat/g-moreex.ads +++ b/gcc/ada/libgnat/g-moreex.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-os_lib.adb b/gcc/ada/libgnat/g-os_lib.adb index 0bb7aec..a3bf57b 100644 --- a/gcc/ada/libgnat/g-os_lib.adb +++ b/gcc/ada/libgnat/g-os_lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-os_lib.ads b/gcc/ada/libgnat/g-os_lib.ads index 56ce37b..82a04e4 100644 --- a/gcc/ada/libgnat/g-os_lib.ads +++ b/gcc/ada/libgnat/g-os_lib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-pehage.adb b/gcc/ada/libgnat/g-pehage.adb index 606656b..534b39f 100644 --- a/gcc/ada/libgnat/g-pehage.adb +++ b/gcc/ada/libgnat/g-pehage.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-pehage.ads b/gcc/ada/libgnat/g-pehage.ads index 41913cb..d7647a4 100644 --- a/gcc/ada/libgnat/g-pehage.ads +++ b/gcc/ada/libgnat/g-pehage.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-rannum.adb b/gcc/ada/libgnat/g-rannum.adb index 7688781..40f25c1 100644 --- a/gcc/ada/libgnat/g-rannum.adb +++ b/gcc/ada/libgnat/g-rannum.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-rannum.ads b/gcc/ada/libgnat/g-rannum.ads index 462e3a2..e3aaed1 100644 --- a/gcc/ada/libgnat/g-rannum.ads +++ b/gcc/ada/libgnat/g-rannum.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regexp.adb b/gcc/ada/libgnat/g-regexp.adb index 3652af1..3f6ee7a 100644 --- a/gcc/ada/libgnat/g-regexp.adb +++ b/gcc/ada/libgnat/g-regexp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regexp.ads b/gcc/ada/libgnat/g-regexp.ads index c94a3fe..94a78bc 100644 --- a/gcc/ada/libgnat/g-regexp.ads +++ b/gcc/ada/libgnat/g-regexp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regist.adb b/gcc/ada/libgnat/g-regist.adb index 6bd636f..22c5ec3 100644 --- a/gcc/ada/libgnat/g-regist.adb +++ b/gcc/ada/libgnat/g-regist.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regist.ads b/gcc/ada/libgnat/g-regist.ads index 0a8c9d0..2d74ef9 100644 --- a/gcc/ada/libgnat/g-regist.ads +++ b/gcc/ada/libgnat/g-regist.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regpat.adb b/gcc/ada/libgnat/g-regpat.adb index 95ecb60..6b21193 100644 --- a/gcc/ada/libgnat/g-regpat.adb +++ b/gcc/ada/libgnat/g-regpat.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1986 by University of Toronto. -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-regpat.ads b/gcc/ada/libgnat/g-regpat.ads index f80c72d..d818393 100644 --- a/gcc/ada/libgnat/g-regpat.ads +++ b/gcc/ada/libgnat/g-regpat.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1986 by University of Toronto. -- --- Copyright (C) 1996-2021, AdaCore -- +-- Copyright (C) 1996-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-rewdat.adb b/gcc/ada/libgnat/g-rewdat.adb index 3b4a0d0..44cbc81 100644 --- a/gcc/ada/libgnat/g-rewdat.adb +++ b/gcc/ada/libgnat/g-rewdat.adb @@ -5,7 +5,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-rewdat.ads b/gcc/ada/libgnat/g-rewdat.ads index 8149565..0b38030 100644 --- a/gcc/ada/libgnat/g-rewdat.ads +++ b/gcc/ada/libgnat/g-rewdat.ads @@ -5,7 +5,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sechas.adb b/gcc/ada/libgnat/g-sechas.adb index 70911c0..2ae9cca 100644 --- a/gcc/ada/libgnat/g-sechas.adb +++ b/gcc/ada/libgnat/g-sechas.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sechas.ads b/gcc/ada/libgnat/g-sechas.ads index 79f86bc..c9d1e71 100644 --- a/gcc/ada/libgnat/g-sechas.ads +++ b/gcc/ada/libgnat/g-sechas.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sehamd.adb b/gcc/ada/libgnat/g-sehamd.adb index b59740a..8ba0938 100644 --- a/gcc/ada/libgnat/g-sehamd.adb +++ b/gcc/ada/libgnat/g-sehamd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sehamd.ads b/gcc/ada/libgnat/g-sehamd.ads index ca9fbfd..2c787fb 100644 --- a/gcc/ada/libgnat/g-sehamd.ads +++ b/gcc/ada/libgnat/g-sehamd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sehash.adb b/gcc/ada/libgnat/g-sehash.adb index 920ba59..20a53a7 100644 --- a/gcc/ada/libgnat/g-sehash.adb +++ b/gcc/ada/libgnat/g-sehash.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sehash.ads b/gcc/ada/libgnat/g-sehash.ads index 3a24088..597ffae 100644 --- a/gcc/ada/libgnat/g-sehash.ads +++ b/gcc/ada/libgnat/g-sehash.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sercom.adb b/gcc/ada/libgnat/g-sercom.adb index 20628fb..1cdcae5 100644 --- a/gcc/ada/libgnat/g-sercom.adb +++ b/gcc/ada/libgnat/g-sercom.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sercom.ads b/gcc/ada/libgnat/g-sercom.ads index c05e00e..e704103 100644 --- a/gcc/ada/libgnat/g-sercom.ads +++ b/gcc/ada/libgnat/g-sercom.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sercom__linux.adb b/gcc/ada/libgnat/g-sercom__linux.adb index 3d62b61..a2a64b1 100644 --- a/gcc/ada/libgnat/g-sercom__linux.adb +++ b/gcc/ada/libgnat/g-sercom__linux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sercom__mingw.adb b/gcc/ada/libgnat/g-sercom__mingw.adb index d278bfa..aea78ae 100644 --- a/gcc/ada/libgnat/g-sercom__mingw.adb +++ b/gcc/ada/libgnat/g-sercom__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sestin.ads b/gcc/ada/libgnat/g-sestin.ads index 8b69d90..a11fb78c 100644 --- a/gcc/ada/libgnat/g-sestin.ads +++ b/gcc/ada/libgnat/g-sestin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, AdaCore -- +-- Copyright (C) 2004-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sets.adb b/gcc/ada/libgnat/g-sets.adb index 2a7efc5..fb0fe18 100644 --- a/gcc/ada/libgnat/g-sets.adb +++ b/gcc/ada/libgnat/g-sets.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2018-2021, AdaCore -- +-- Copyright (C) 2018-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sets.ads b/gcc/ada/libgnat/g-sets.ads index 4bd4e92..660e868 100644 --- a/gcc/ada/libgnat/g-sets.ads +++ b/gcc/ada/libgnat/g-sets.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, AdaCore -- +-- Copyright (C) 2018-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,8 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. with GNAT.Dynamic_HTables; use GNAT.Dynamic_HTables; diff --git a/gcc/ada/libgnat/g-sha1.adb b/gcc/ada/libgnat/g-sha1.adb index 8f4dbfc..4c50322 100644 --- a/gcc/ada/libgnat/g-sha1.adb +++ b/gcc/ada/libgnat/g-sha1.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sha1.ads b/gcc/ada/libgnat/g-sha1.ads index 5b8bf91..fb90b9c 100644 --- a/gcc/ada/libgnat/g-sha1.ads +++ b/gcc/ada/libgnat/g-sha1.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sha224.ads b/gcc/ada/libgnat/g-sha224.ads index ea2337d..821cf30 100644 --- a/gcc/ada/libgnat/g-sha224.ads +++ b/gcc/ada/libgnat/g-sha224.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sha256.ads b/gcc/ada/libgnat/g-sha256.ads index 90af358..4439090 100644 --- a/gcc/ada/libgnat/g-sha256.ads +++ b/gcc/ada/libgnat/g-sha256.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sha384.ads b/gcc/ada/libgnat/g-sha384.ads index 89e3fd8..2ac9c49 100644 --- a/gcc/ada/libgnat/g-sha384.ads +++ b/gcc/ada/libgnat/g-sha384.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sha512.ads b/gcc/ada/libgnat/g-sha512.ads index 4f50899..3793b6c 100644 --- a/gcc/ada/libgnat/g-sha512.ads +++ b/gcc/ada/libgnat/g-sha512.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shsh32.adb b/gcc/ada/libgnat/g-shsh32.adb index a332e12..7b8afd8 100644 --- a/gcc/ada/libgnat/g-shsh32.adb +++ b/gcc/ada/libgnat/g-shsh32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shsh32.ads b/gcc/ada/libgnat/g-shsh32.ads index de51e72..80d7819 100644 --- a/gcc/ada/libgnat/g-shsh32.ads +++ b/gcc/ada/libgnat/g-shsh32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shsh64.adb b/gcc/ada/libgnat/g-shsh64.adb index c756b9d..c2b9002 100644 --- a/gcc/ada/libgnat/g-shsh64.adb +++ b/gcc/ada/libgnat/g-shsh64.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shsh64.ads b/gcc/ada/libgnat/g-shsh64.ads index 8440e5d..eed0ec9 100644 --- a/gcc/ada/libgnat/g-shsh64.ads +++ b/gcc/ada/libgnat/g-shsh64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shshco.adb b/gcc/ada/libgnat/g-shshco.adb index f5ebf5d..2df5d86 100644 --- a/gcc/ada/libgnat/g-shshco.adb +++ b/gcc/ada/libgnat/g-shshco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-shshco.ads b/gcc/ada/libgnat/g-shshco.ads index 7df8682..0a540d0 100644 --- a/gcc/ada/libgnat/g-shshco.ads +++ b/gcc/ada/libgnat/g-shshco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soccon.ads b/gcc/ada/libgnat/g-soccon.ads index b352a37..c18d796 100644 --- a/gcc/ada/libgnat/g-soccon.ads +++ b/gcc/ada/libgnat/g-soccon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socket.adb b/gcc/ada/libgnat/g-socket.adb index c603a2d..12abb68 100644 --- a/gcc/ada/libgnat/g-socket.adb +++ b/gcc/ada/libgnat/g-socket.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socket.ads b/gcc/ada/libgnat/g-socket.ads index 443b61c..41ede44 100644 --- a/gcc/ada/libgnat/g-socket.ads +++ b/gcc/ada/libgnat/g-socket.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socket__dummy.adb b/gcc/ada/libgnat/g-socket__dummy.adb index a15ff5f..4c8f53e 100644 --- a/gcc/ada/libgnat/g-socket__dummy.adb +++ b/gcc/ada/libgnat/g-socket__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socket__dummy.ads b/gcc/ada/libgnat/g-socket__dummy.ads index 617c14f..b27327f 100644 --- a/gcc/ada/libgnat/g-socket__dummy.ads +++ b/gcc/ada/libgnat/g-socket__dummy.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socpol.adb b/gcc/ada/libgnat/g-socpol.adb index 1592594..fd27211 100644 --- a/gcc/ada/libgnat/g-socpol.adb +++ b/gcc/ada/libgnat/g-socpol.adb @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socpol.ads b/gcc/ada/libgnat/g-socpol.ads index 348cc6f..c84c4de 100644 --- a/gcc/ada/libgnat/g-socpol.ads +++ b/gcc/ada/libgnat/g-socpol.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socpol__dummy.adb b/gcc/ada/libgnat/g-socpol__dummy.adb index bc78268..55849d5 100644 --- a/gcc/ada/libgnat/g-socpol__dummy.adb +++ b/gcc/ada/libgnat/g-socpol__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socpol__dummy.ads b/gcc/ada/libgnat/g-socpol__dummy.ads index 2d7ae3c..bfd68a4 100644 --- a/gcc/ada/libgnat/g-socpol__dummy.ads +++ b/gcc/ada/libgnat/g-socpol__dummy.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi.adb b/gcc/ada/libgnat/g-socthi.adb index 7f7568e..e70b85b 100644 --- a/gcc/ada/libgnat/g-socthi.adb +++ b/gcc/ada/libgnat/g-socthi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi.ads b/gcc/ada/libgnat/g-socthi.ads index f1b0e2e..834167c 100644 --- a/gcc/ada/libgnat/g-socthi.ads +++ b/gcc/ada/libgnat/g-socthi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__dummy.adb b/gcc/ada/libgnat/g-socthi__dummy.adb index c054207..7e38645 100644 --- a/gcc/ada/libgnat/g-socthi__dummy.adb +++ b/gcc/ada/libgnat/g-socthi__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__dummy.ads b/gcc/ada/libgnat/g-socthi__dummy.ads index 687ad34..276d0f6 100644 --- a/gcc/ada/libgnat/g-socthi__dummy.ads +++ b/gcc/ada/libgnat/g-socthi__dummy.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__mingw.adb b/gcc/ada/libgnat/g-socthi__mingw.adb index aa9305d..6bbdd0b 100644 --- a/gcc/ada/libgnat/g-socthi__mingw.adb +++ b/gcc/ada/libgnat/g-socthi__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__mingw.ads b/gcc/ada/libgnat/g-socthi__mingw.ads index 6fb921a..e292907 100644 --- a/gcc/ada/libgnat/g-socthi__mingw.ads +++ b/gcc/ada/libgnat/g-socthi__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__vxworks.adb b/gcc/ada/libgnat/g-socthi__vxworks.adb index f2a7185..aeae52d 100644 --- a/gcc/ada/libgnat/g-socthi__vxworks.adb +++ b/gcc/ada/libgnat/g-socthi__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-socthi__vxworks.ads b/gcc/ada/libgnat/g-socthi__vxworks.ads index 5f85fd1..d031ab8 100644 --- a/gcc/ada/libgnat/g-socthi__vxworks.ads +++ b/gcc/ada/libgnat/g-socthi__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soliop.ads b/gcc/ada/libgnat/g-soliop.ads index 0c07900..8917e7d 100644 --- a/gcc/ada/libgnat/g-soliop.ads +++ b/gcc/ada/libgnat/g-soliop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soliop__lynxos.ads b/gcc/ada/libgnat/g-soliop__lynxos.ads index 4310ead..0deebaa 100644 --- a/gcc/ada/libgnat/g-soliop__lynxos.ads +++ b/gcc/ada/libgnat/g-soliop__lynxos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soliop__mingw.ads b/gcc/ada/libgnat/g-soliop__mingw.ads index 422dbba..8df7b74 100644 --- a/gcc/ada/libgnat/g-soliop__mingw.ads +++ b/gcc/ada/libgnat/g-soliop__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soliop__qnx.ads b/gcc/ada/libgnat/g-soliop__qnx.ads index 916bc43..e536837 100644 --- a/gcc/ada/libgnat/g-soliop__qnx.ads +++ b/gcc/ada/libgnat/g-soliop__qnx.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-soliop__solaris.ads b/gcc/ada/libgnat/g-soliop__solaris.ads index aaef320..d795e93 100644 --- a/gcc/ada/libgnat/g-soliop__solaris.ads +++ b/gcc/ada/libgnat/g-soliop__solaris.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sopowa.adb b/gcc/ada/libgnat/g-sopowa.adb index dae6f7d..74cd263 100644 --- a/gcc/ada/libgnat/g-sopowa.adb +++ b/gcc/ada/libgnat/g-sopowa.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sopowa__mingw.adb b/gcc/ada/libgnat/g-sopowa__mingw.adb index 7fb9f53..26c7da4 100644 --- a/gcc/ada/libgnat/g-sopowa__mingw.adb +++ b/gcc/ada/libgnat/g-sopowa__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sopowa__posix.adb b/gcc/ada/libgnat/g-sopowa__posix.adb index 3bb24f5..6332530 100644 --- a/gcc/ada/libgnat/g-sopowa__posix.adb +++ b/gcc/ada/libgnat/g-sopowa__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sothco.adb b/gcc/ada/libgnat/g-sothco.adb index aa27101..328fe4b 100644 --- a/gcc/ada/libgnat/g-sothco.adb +++ b/gcc/ada/libgnat/g-sothco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, AdaCore -- +-- Copyright (C) 2008-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sothco.ads b/gcc/ada/libgnat/g-sothco.ads index 761bcb1..d46625b 100644 --- a/gcc/ada/libgnat/g-sothco.ads +++ b/gcc/ada/libgnat/g-sothco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, AdaCore -- +-- Copyright (C) 2008-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sothco__dummy.adb b/gcc/ada/libgnat/g-sothco__dummy.adb index 87b710e..6e9eae2 100644 --- a/gcc/ada/libgnat/g-sothco__dummy.adb +++ b/gcc/ada/libgnat/g-sothco__dummy.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sothco__dummy.ads b/gcc/ada/libgnat/g-sothco__dummy.ads index 6aadd8a..d1225e4 100644 --- a/gcc/ada/libgnat/g-sothco__dummy.ads +++ b/gcc/ada/libgnat/g-sothco__dummy.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, AdaCore -- +-- Copyright (C) 2008-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-souinf.ads b/gcc/ada/libgnat/g-souinf.ads index bf362c4..700f518 100644 --- a/gcc/ada/libgnat/g-souinf.ads +++ b/gcc/ada/libgnat/g-souinf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-spchge.adb b/gcc/ada/libgnat/g-spchge.adb index f790171..3ee4ef8 100644 --- a/gcc/ada/libgnat/g-spchge.adb +++ b/gcc/ada/libgnat/g-spchge.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body GNAT.Spelling_Checker_Generic is ------------------------ diff --git a/gcc/ada/libgnat/g-spchge.ads b/gcc/ada/libgnat/g-spchge.ads index 88bf264..1e39d1b 100644 --- a/gcc/ada/libgnat/g-spchge.ads +++ b/gcc/ada/libgnat/g-spchge.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,8 +37,6 @@ -- codes for ASCII characters in the range 16#20#..16#7F# have their normal -- expected encoding values (e.g. the Pos value 16#31# must be digit 1). -pragma Compiler_Unit_Warning; - package GNAT.Spelling_Checker_Generic is pragma Pure; diff --git a/gcc/ada/libgnat/g-speche.adb b/gcc/ada/libgnat/g-speche.adb index cccb3d8..7181bfc 100644 --- a/gcc/ada/libgnat/g-speche.adb +++ b/gcc/ada/libgnat/g-speche.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with GNAT.Spelling_Checker_Generic; package body GNAT.Spelling_Checker is diff --git a/gcc/ada/libgnat/g-speche.ads b/gcc/ada/libgnat/g-speche.ads index 43a434e..aad3e2a 100644 --- a/gcc/ada/libgnat/g-speche.ads +++ b/gcc/ada/libgnat/g-speche.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,8 +34,6 @@ -- This package provides a utility routine for checking for bad spellings -- for the case of String arguments. -pragma Compiler_Unit_Warning; - package GNAT.Spelling_Checker is pragma Pure; diff --git a/gcc/ada/libgnat/g-spipat.adb b/gcc/ada/libgnat/g-spipat.adb index 353a92d..6ecbd1b 100644 --- a/gcc/ada/libgnat/g-spipat.adb +++ b/gcc/ada/libgnat/g-spipat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2836,7 +2836,6 @@ package body GNAT.Spitbol.Patterns is L : Natural; Start : Natural; Stop : Natural; - pragma Unreferenced (Stop); begin Get_String (Subject, S, L); @@ -2855,7 +2854,6 @@ package body GNAT.Spitbol.Patterns is Pat : Pattern) return Boolean is Start, Stop : Natural; - pragma Unreferenced (Stop); subtype String1 is String (1 .. Subject'Length); @@ -2935,7 +2933,6 @@ package body GNAT.Spitbol.Patterns is Start : Natural; Stop : Natural; - pragma Unreferenced (Start, Stop); begin Get_String (Subject, S, L); @@ -2952,7 +2949,6 @@ package body GNAT.Spitbol.Patterns is Pat : Pattern) is Start, Stop : Natural; - pragma Unreferenced (Start, Stop); subtype String1 is String (1 .. Subject'Length); @@ -3135,7 +3131,6 @@ package body GNAT.Spitbol.Patterns is Start : Natural; Stop : Natural; - pragma Unreferenced (Start, Stop); begin Get_String (Subject, S, L); @@ -3152,7 +3147,6 @@ package body GNAT.Spitbol.Patterns is Pat : PString) is Start, Stop : Natural; - pragma Unreferenced (Start, Stop); subtype String1 is String (1 .. Subject'Length); diff --git a/gcc/ada/libgnat/g-spipat.ads b/gcc/ada/libgnat/g-spipat.ads index 13d1e93..8179d56 100644 --- a/gcc/ada/libgnat/g-spipat.ads +++ b/gcc/ada/libgnat/g-spipat.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -654,19 +654,19 @@ package GNAT.Spitbol.Patterns is -- operations for constructing patterns that can be used in the pattern -- matching operations provided. - type Boolean_Func is access function return Boolean; + type Boolean_Func is access function return Boolean with Favor_Top_Level; -- General Boolean function type. When this type is used as a formal -- parameter type in this package, it indicates a deferred predicate -- pattern. The function will be called when the pattern element is -- matched and failure signalled if False is returned. - type Natural_Func is access function return Natural; + type Natural_Func is access function return Natural with Favor_Top_Level; -- General Natural function type. When this type is used as a formal -- parameter type in this package, it indicates a deferred pattern. -- The function will be called when the pattern element is matched -- to obtain the currently referenced Natural value. - type VString_Func is access function return VString; + type VString_Func is access function return VString with Favor_Top_Level; -- General VString function type. When this type is used as a formal -- parameter type in this package, it indicates a deferred pattern. -- The function will be called when the pattern element is matched diff --git a/gcc/ada/libgnat/g-spitbo.adb b/gcc/ada/libgnat/g-spitbo.adb index dee969b..af979a7 100644 --- a/gcc/ada/libgnat/g-spitbo.adb +++ b/gcc/ada/libgnat/g-spitbo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-spitbo.ads b/gcc/ada/libgnat/g-spitbo.ads index 447daeb..ba3910c 100644 --- a/gcc/ada/libgnat/g-spitbo.ads +++ b/gcc/ada/libgnat/g-spitbo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-spogwa.adb b/gcc/ada/libgnat/g-spogwa.adb index af7fcfc..2e1486f 100644 --- a/gcc/ada/libgnat/g-spogwa.adb +++ b/gcc/ada/libgnat/g-spogwa.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-spogwa.ads b/gcc/ada/libgnat/g-spogwa.ads index ad9cecd..c25c95e 100644 --- a/gcc/ada/libgnat/g-spogwa.ads +++ b/gcc/ada/libgnat/g-spogwa.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, AdaCore -- +-- Copyright (C) 2020-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sptabo.ads b/gcc/ada/libgnat/g-sptabo.ads index 4f479f7..3a48fce 100644 --- a/gcc/ada/libgnat/g-sptabo.ads +++ b/gcc/ada/libgnat/g-sptabo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sptain.ads b/gcc/ada/libgnat/g-sptain.ads index be4ebc3..d1c195e 100644 --- a/gcc/ada/libgnat/g-sptain.ads +++ b/gcc/ada/libgnat/g-sptain.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sptavs.ads b/gcc/ada/libgnat/g-sptavs.ads index 9923025..03fc62d 100644 --- a/gcc/ada/libgnat/g-sptavs.ads +++ b/gcc/ada/libgnat/g-sptavs.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sse.ads b/gcc/ada/libgnat/g-sse.ads index c56d071..3b6265d 100644 --- a/gcc/ada/libgnat/g-sse.ads +++ b/gcc/ada/libgnat/g-sse.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-ssvety.ads b/gcc/ada/libgnat/g-ssvety.ads index c09f040..ea937ec 100644 --- a/gcc/ada/libgnat/g-ssvety.ads +++ b/gcc/ada/libgnat/g-ssvety.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-sthcso.adb b/gcc/ada/libgnat/g-sthcso.adb index bf80f9b..f045c02 100644 --- a/gcc/ada/libgnat/g-sthcso.adb +++ b/gcc/ada/libgnat/g-sthcso.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-stheme.adb b/gcc/ada/libgnat/g-stheme.adb index 3782972..ca00628 100644 --- a/gcc/ada/libgnat/g-stheme.adb +++ b/gcc/ada/libgnat/g-stheme.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-strhas.ads b/gcc/ada/libgnat/g-strhas.ads index 19330ab..af93203 100644 --- a/gcc/ada/libgnat/g-strhas.ads +++ b/gcc/ada/libgnat/g-strhas.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-string.adb b/gcc/ada/libgnat/g-string.adb index f8cd5ee..2730e55 100644 --- a/gcc/ada/libgnat/g-string.adb +++ b/gcc/ada/libgnat/g-string.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-string.ads b/gcc/ada/libgnat/g-string.ads index a8f2574..d9bcd4f 100644 --- a/gcc/ada/libgnat/g-string.ads +++ b/gcc/ada/libgnat/g-string.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-strspl.ads b/gcc/ada/libgnat/g-strspl.ads index 14c143e..31b78e9 100644 --- a/gcc/ada/libgnat/g-strspl.ads +++ b/gcc/ada/libgnat/g-strspl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-stseme.adb b/gcc/ada/libgnat/g-stseme.adb index 5d8f91e..389c91e 100644 --- a/gcc/ada/libgnat/g-stseme.adb +++ b/gcc/ada/libgnat/g-stseme.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-stsifd__sockets.adb b/gcc/ada/libgnat/g-stsifd__sockets.adb index 20a97fa..02b81bb 100644 --- a/gcc/ada/libgnat/g-stsifd__sockets.adb +++ b/gcc/ada/libgnat/g-stsifd__sockets.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-table.adb b/gcc/ada/libgnat/g-table.adb index 8991e68..608cb32 100644 --- a/gcc/ada/libgnat/g-table.adb +++ b/gcc/ada/libgnat/g-table.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-table.ads b/gcc/ada/libgnat/g-table.ads index 7d3ef58..4aed42c 100644 --- a/gcc/ada/libgnat/g-table.ads +++ b/gcc/ada/libgnat/g-table.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,8 +41,6 @@ -- GNAT.Table -- Table (the compiler unit) -pragma Compiler_Unit_Warning; - with GNAT.Dynamic_Tables; generic diff --git a/gcc/ada/libgnat/g-tasloc.adb b/gcc/ada/libgnat/g-tasloc.adb index 2461035..38f5d3e 100644 --- a/gcc/ada/libgnat/g-tasloc.adb +++ b/gcc/ada/libgnat/g-tasloc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-tasloc.ads b/gcc/ada/libgnat/g-tasloc.ads index 8296994..6227afa 100644 --- a/gcc/ada/libgnat/g-tasloc.ads +++ b/gcc/ada/libgnat/g-tasloc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-timsta.adb b/gcc/ada/libgnat/g-timsta.adb index 4eeed30..74463df 100644 --- a/gcc/ada/libgnat/g-timsta.adb +++ b/gcc/ada/libgnat/g-timsta.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-timsta.ads b/gcc/ada/libgnat/g-timsta.ads index 76c1a79..5aa4ed2 100644 --- a/gcc/ada/libgnat/g-timsta.ads +++ b/gcc/ada/libgnat/g-timsta.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-traceb.adb b/gcc/ada/libgnat/g-traceb.adb index d832570..ec4dff7 100644 --- a/gcc/ada/libgnat/g-traceb.adb +++ b/gcc/ada/libgnat/g-traceb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-traceb.ads b/gcc/ada/libgnat/g-traceb.ads index 15db799..074b7a6 100644 --- a/gcc/ada/libgnat/g-traceb.ads +++ b/gcc/ada/libgnat/g-traceb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-trasym.adb b/gcc/ada/libgnat/g-trasym.adb index 07509ee..358c79d 100644 --- a/gcc/ada/libgnat/g-trasym.adb +++ b/gcc/ada/libgnat/g-trasym.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-trasym.ads b/gcc/ada/libgnat/g-trasym.ads index c861968..afcc47e 100644 --- a/gcc/ada/libgnat/g-trasym.ads +++ b/gcc/ada/libgnat/g-trasym.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-tty.adb b/gcc/ada/libgnat/g-tty.adb index f54cc46..eae68e5 100644 --- a/gcc/ada/libgnat/g-tty.adb +++ b/gcc/ada/libgnat/g-tty.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-tty.ads b/gcc/ada/libgnat/g-tty.ads index 90e3237..c61d6bc 100644 --- a/gcc/ada/libgnat/g-tty.ads +++ b/gcc/ada/libgnat/g-tty.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-u3spch.adb b/gcc/ada/libgnat/g-u3spch.adb index 1a27143..a062887 100644 --- a/gcc/ada/libgnat/g-u3spch.adb +++ b/gcc/ada/libgnat/g-u3spch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with GNAT.Spelling_Checker_Generic; package body GNAT.UTF_32_Spelling_Checker is diff --git a/gcc/ada/libgnat/g-u3spch.ads b/gcc/ada/libgnat/g-u3spch.ads index 56356f1..ab2fa8e 100644 --- a/gcc/ada/libgnat/g-u3spch.ads +++ b/gcc/ada/libgnat/g-u3spch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,8 +34,6 @@ -- This package provides a utility routine for checking for bad spellings -- for the case of System.WCh_Cnv.UTF_32_String arguments. -pragma Compiler_Unit_Warning; - with System.WCh_Cnv; package GNAT.UTF_32_Spelling_Checker is diff --git a/gcc/ada/libgnat/g-utf_32.adb b/gcc/ada/libgnat/g-utf_32.adb index 432d77d..7ff9051 100644 --- a/gcc/ada/libgnat/g-utf_32.adb +++ b/gcc/ada/libgnat/g-utf_32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-utf_32.ads b/gcc/ada/libgnat/g-utf_32.ads index 3cd2729..b1abd7d 100644 --- a/gcc/ada/libgnat/g-utf_32.ads +++ b/gcc/ada/libgnat/g-utf_32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-wispch.adb b/gcc/ada/libgnat/g-wispch.adb index 3f776b2..aa2b746 100644 --- a/gcc/ada/libgnat/g-wispch.adb +++ b/gcc/ada/libgnat/g-wispch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-wispch.ads b/gcc/ada/libgnat/g-wispch.ads index de4697b..2f44752 100644 --- a/gcc/ada/libgnat/g-wispch.ads +++ b/gcc/ada/libgnat/g-wispch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-wistsp.ads b/gcc/ada/libgnat/g-wistsp.ads index b6ba727..9b4aebf 100644 --- a/gcc/ada/libgnat/g-wistsp.ads +++ b/gcc/ada/libgnat/g-wistsp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-zspche.adb b/gcc/ada/libgnat/g-zspche.adb index ca7b84a..f8cb7cb 100644 --- a/gcc/ada/libgnat/g-zspche.adb +++ b/gcc/ada/libgnat/g-zspche.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-zspche.ads b/gcc/ada/libgnat/g-zspche.ads index 43ae4ed..da486cc 100644 --- a/gcc/ada/libgnat/g-zspche.ads +++ b/gcc/ada/libgnat/g-zspche.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/g-zstspl.ads b/gcc/ada/libgnat/g-zstspl.ads index 377d1dd..2988987 100644 --- a/gcc/ada/libgnat/g-zstspl.ads +++ b/gcc/ada/libgnat/g-zstspl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/gnat.ads b/gcc/ada/libgnat/gnat.ads index 612a6c8..1471c50 100644 --- a/gcc/ada/libgnat/gnat.ads +++ b/gcc/ada/libgnat/gnat.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, AdaCore -- +-- Copyright (C) 1992-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,6 +31,9 @@ -- This is the parent package for a library of useful units provided with GNAT +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. + package GNAT is pragma Pure; diff --git a/gcc/ada/libgnat/i-c.adb b/gcc/ada/libgnat/i-c.adb index 4ec920f..4b50d18 100644 --- a/gcc/ada/libgnat/i-c.adb +++ b/gcc/ada/libgnat/i-c.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cexten.ads b/gcc/ada/libgnat/i-cexten.ads index 70d2621..b2b4d08 100644 --- a/gcc/ada/libgnat/i-cexten.ads +++ b/gcc/ada/libgnat/i-cexten.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cexten__128.ads b/gcc/ada/libgnat/i-cexten__128.ads index c07c5ab..d70df6e 100644 --- a/gcc/ada/libgnat/i-cexten__128.ads +++ b/gcc/ada/libgnat/i-cexten__128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cobol.adb b/gcc/ada/libgnat/i-cobol.adb index b4b62ee..b42efd8 100644 --- a/gcc/ada/libgnat/i-cobol.adb +++ b/gcc/ada/libgnat/i-cobol.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,8 +34,7 @@ -- particular COBOL format is completely contained in the private part of -- the spec. -with Interfaces; use Interfaces; -with System; use System; +with System; use System; with Ada.Unchecked_Conversion; package body Interfaces.COBOL is diff --git a/gcc/ada/libgnat/i-cobol.ads b/gcc/ada/libgnat/i-cobol.ads index 33fa1ae..49f122e 100644 --- a/gcc/ada/libgnat/i-cobol.ads +++ b/gcc/ada/libgnat/i-cobol.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (ASCII Version) -- -- -- --- Copyright (C) 1993-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1993-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/i-cpoint.adb b/gcc/ada/libgnat/i-cpoint.adb index 4c39274..3bab800 100644 --- a/gcc/ada/libgnat/i-cpoint.adb +++ b/gcc/ada/libgnat/i-cpoint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cpoint.ads b/gcc/ada/libgnat/i-cpoint.ads index 08b89ba..59c3dd7 100644 --- a/gcc/ada/libgnat/i-cpoint.ads +++ b/gcc/ada/libgnat/i-cpoint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1993-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1993-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/i-cstrea.adb b/gcc/ada/libgnat/i-cstrea.adb index 40113f2..e0b1b62 100644 --- a/gcc/ada/libgnat/i-cstrea.adb +++ b/gcc/ada/libgnat/i-cstrea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cstrea.ads b/gcc/ada/libgnat/i-cstrea.ads index 48f2125..9f344c8 100644 --- a/gcc/ada/libgnat/i-cstrea.ads +++ b/gcc/ada/libgnat/i-cstrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cstrin.adb b/gcc/ada/libgnat/i-cstrin.adb index eba95d4..e2f0f21 100644 --- a/gcc/ada/libgnat/i-cstrin.adb +++ b/gcc/ada/libgnat/i-cstrin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-cstrin.ads b/gcc/ada/libgnat/i-cstrin.ads index 2b27f9f..5c1b259 100644 --- a/gcc/ada/libgnat/i-cstrin.ads +++ b/gcc/ada/libgnat/i-cstrin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1993-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1993-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/i-fortra.adb b/gcc/ada/libgnat/i-fortra.adb index eba61c2..e7970a9 100644 --- a/gcc/ada/libgnat/i-fortra.adb +++ b/gcc/ada/libgnat/i-fortra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-pacdec.adb b/gcc/ada/libgnat/i-pacdec.adb index 4364888..b5b3bf6 100644 --- a/gcc/ada/libgnat/i-pacdec.adb +++ b/gcc/ada/libgnat/i-pacdec.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Version for IBM Mainframe Packed Decimal Format) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-pacdec.ads b/gcc/ada/libgnat/i-pacdec.ads index bcfa1b7..d6f57a1 100644 --- a/gcc/ada/libgnat/i-pacdec.ads +++ b/gcc/ada/libgnat/i-pacdec.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Version for IBM Mainframe Packed Decimal Format) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-vxwoio.adb b/gcc/ada/libgnat/i-vxwoio.adb index f1e449f..aa43f3a 100644 --- a/gcc/ada/libgnat/i-vxwoio.adb +++ b/gcc/ada/libgnat/i-vxwoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-vxwoio.ads b/gcc/ada/libgnat/i-vxwoio.ads index e1743ad..745210e 100644 --- a/gcc/ada/libgnat/i-vxwoio.ads +++ b/gcc/ada/libgnat/i-vxwoio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-vxwork.ads b/gcc/ada/libgnat/i-vxwork.ads index 0ba1e6e..e544180 100644 --- a/gcc/ada/libgnat/i-vxwork.ads +++ b/gcc/ada/libgnat/i-vxwork.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/i-vxwork__x86.ads b/gcc/ada/libgnat/i-vxwork__x86.ads index 659167f..474da0f 100644 --- a/gcc/ada/libgnat/i-vxwork__x86.ads +++ b/gcc/ada/libgnat/i-vxwork__x86.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/interfac.ads b/gcc/ada/libgnat/interfac.ads index 186cb84..b12ced8 100644 --- a/gcc/ada/libgnat/interfac.ads +++ b/gcc/ada/libgnat/interfac.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,8 +35,6 @@ -- This is the compiler version of this unit -pragma Compiler_Unit_Warning; - package Interfaces is pragma No_Elaboration_Code_All; pragma Pure; diff --git a/gcc/ada/libgnat/interfac__2020.ads b/gcc/ada/libgnat/interfac__2020.ads index a353604..579e8b4 100644 --- a/gcc/ada/libgnat/interfac__2020.ads +++ b/gcc/ada/libgnat/interfac__2020.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/memtrack.adb b/gcc/ada/libgnat/memtrack.adb index b34ac04..80e9cbb 100644 --- a/gcc/ada/libgnat/memtrack.adb +++ b/gcc/ada/libgnat/memtrack.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-addima.adb b/gcc/ada/libgnat/s-addima.adb index af8d67f..61566c9 100644 --- a/gcc/ada/libgnat/s-addima.adb +++ b/gcc/ada/libgnat/s-addima.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-addima.ads b/gcc/ada/libgnat/s-addima.ads index 4eae027..6c7a376 100644 --- a/gcc/ada/libgnat/s-addima.ads +++ b/gcc/ada/libgnat/s-addima.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-addope.adb b/gcc/ada/libgnat/s-addope.adb index 0e02178..ce9bb5c 100644 --- a/gcc/ada/libgnat/s-addope.adb +++ b/gcc/ada/libgnat/s-addope.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Conversion; package body System.Address_Operations is diff --git a/gcc/ada/libgnat/s-addope.ads b/gcc/ada/libgnat/s-addope.ads index d1c3cb5..f904fb6 100644 --- a/gcc/ada/libgnat/s-addope.ads +++ b/gcc/ada/libgnat/s-addope.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,8 +40,6 @@ -- inappropriate use by applications programs). In addition, the logical -- operations may not be available if type Address is a signed integer. -pragma Compiler_Unit_Warning; - package System.Address_Operations is pragma Pure; diff --git a/gcc/ada/libgnat/s-aoinar.adb b/gcc/ada/libgnat/s-aoinar.adb index 41d0cda..5432572 100644 --- a/gcc/ada/libgnat/s-aoinar.adb +++ b/gcc/ada/libgnat/s-aoinar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-aoinar.ads b/gcc/ada/libgnat/s-aoinar.ads index 8d80bb1..8ed9bfe 100644 --- a/gcc/ada/libgnat/s-aoinar.ads +++ b/gcc/ada/libgnat/s-aoinar.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-aomoar.adb b/gcc/ada/libgnat/s-aomoar.adb index 617a5b3..f96d252 100644 --- a/gcc/ada/libgnat/s-aomoar.adb +++ b/gcc/ada/libgnat/s-aomoar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-aomoar.ads b/gcc/ada/libgnat/s-aomoar.ads index 7e19d7f..a70af35 100644 --- a/gcc/ada/libgnat/s-aomoar.ads +++ b/gcc/ada/libgnat/s-aomoar.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-aotase.adb b/gcc/ada/libgnat/s-aotase.adb index 94b28df..36911e9f 100644 --- a/gcc/ada/libgnat/s-aotase.adb +++ b/gcc/ada/libgnat/s-aotase.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-aotase.ads b/gcc/ada/libgnat/s-aotase.ads index 77f343e..2b0b911 100644 --- a/gcc/ada/libgnat/s-aotase.ads +++ b/gcc/ada/libgnat/s-aotase.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-aridou.adb b/gcc/ada/libgnat/s-aridou.adb index 0a75f08..0fefb6b 100644 --- a/gcc/ada/libgnat/s-aridou.adb +++ b/gcc/ada/libgnat/s-aridou.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -64,10 +64,7 @@ is when others => raise Program_Error) with Ghost; - -- Power-of-two constants. Use the names Big_2xx32, Big_2xx63 and Big_2xx64 - -- even if Single_Size might not be 32 and Double_Size might not be 64, as - -- this facilitates code and proof understanding, compared to more generic - -- names. + -- Power-of-two constants pragma Warnings (Off, "non-preelaborable call not allowed in preelaborated unit", @@ -78,13 +75,13 @@ is Big_0 : constant Big_Integer := Big (Double_Uns'(0)) with Ghost; - Big_2xx32 : constant Big_Integer := + Big_2xxSingle : constant Big_Integer := Big (Double_Int'(2 ** Single_Size)) with Ghost; - Big_2xx63 : constant Big_Integer := + Big_2xxDouble_Minus_1 : constant Big_Integer := Big (Double_Uns'(2 ** (Double_Size - 1))) with Ghost; - Big_2xx64 : constant Big_Integer := + Big_2xxDouble : constant Big_Integer := Big (Double_Uns'(2 ** Double_Size - 1)) + 1 with Ghost; pragma Warnings @@ -137,8 +134,9 @@ is -- 2**N as a big integer function Big3 (X1, X2, X3 : Single_Uns) return Big_Integer is - (Big_2xx32 * Big_2xx32 * Big (Double_Uns (X1)) - + Big_2xx32 * Big (Double_Uns (X2)) + Big (Double_Uns (X3))) + (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (X1)) + + Big_2xxSingle * Big (Double_Uns (X2)) + + Big (Double_Uns (X3))) with Ghost; -- X1&X2&X3 as a big integer @@ -353,8 +351,8 @@ is with Ghost, Pre => Xhi = Hi (Xu) and Xlo = Lo (Xu), - Post => - Big (Xu) = Big_2xx32 * Big (Double_Uns (Xhi)) + Big (Double_Uns (Xlo)); + Post => Big (Xu) = + Big_2xxSingle * Big (Double_Uns (Xhi)) + Big (Double_Uns (Xlo)); procedure Lemma_Hi_Lo_3 (Xu : Double_Uns; Xhi, Xlo : Single_Uns) with @@ -365,7 +363,7 @@ is procedure Lemma_Lo_Is_Ident (X : Double_Uns) with Ghost, - Pre => Big (X) < Big_2xx32, + Pre => Big (X) < Big_2xxSingle, Post => Double_Uns (Lo (X)) = X; procedure Lemma_Lt_Commutation (A, B : Double_Uns) @@ -396,7 +394,7 @@ is procedure Lemma_Mult_Commutation (X, Y, Z : Double_Uns) with Ghost, - Pre => Big (X) * Big (Y) < Big_2xx64 and then Z = X * Y, + Pre => Big (X) * Big (Y) < Big_2xxDouble and then Z = X * Y, Post => Big (X) * Big (Y) = Big (Z); procedure Lemma_Mult_Decomposition @@ -411,9 +409,9 @@ is and then Yhi = Hi (Yu) and then Ylo = Lo (Yu), Post => Mult = - Big_2xx32 * Big_2xx32 * (Big (Double_Uns'(Xhi * Yhi))) - + Big_2xx32 * (Big (Double_Uns'(Xhi * Ylo))) - + Big_2xx32 * (Big (Double_Uns'(Xlo * Yhi))) + Big_2xxSingle * Big_2xxSingle * (Big (Double_Uns'(Xhi * Yhi))) + + Big_2xxSingle * (Big (Double_Uns'(Xhi * Ylo))) + + Big_2xxSingle * (Big (Double_Uns'(Xlo * Yhi))) + (Big (Double_Uns'(Xlo * Ylo))); procedure Lemma_Mult_Distribution (X, Y, Z : Big_Integer) @@ -435,8 +433,8 @@ is procedure Lemma_Not_In_Range_Big2xx64 with - Post => not In_Double_Int_Range (Big_2xx64) - and then not In_Double_Int_Range (-Big_2xx64); + Post => not In_Double_Int_Range (Big_2xxDouble) + and then not In_Double_Int_Range (-Big_2xxDouble); procedure Lemma_Powers_Of_2 (M, N : Natural) with @@ -446,7 +444,7 @@ is and then M + N <= Double_Size, Post => Big_2xx (M) * Big_2xx (N) = - (if M + N = Double_Size then Big_2xx64 else Big_2xx (M + N)); + (if M + N = Double_Size then Big_2xxDouble else Big_2xx (M + N)); procedure Lemma_Powers_Of_2_Commutation (M : Natural) with @@ -454,7 +452,7 @@ is Subprogram_Variant => (Decreases => M), Pre => M <= Double_Size, Post => Big (Double_Uns'(2))**M = - (if M < Double_Size then Big_2xx (M) else Big_2xx64); + (if M < Double_Size then Big_2xx (M) else Big_2xxDouble); procedure Lemma_Powers_Of_2_Increasing (M, N : Natural) with @@ -541,7 +539,8 @@ is procedure Lemma_Word_Commutation (X : Single_Uns) with Ghost, - Post => Big_2xx32 * Big (Double_Uns (X)) = Big (2**32 * Double_Uns (X)); + Post => Big_2xxSingle * Big (Double_Uns (X)) + = Big (2**Single_Size * Double_Uns (X)); ----------------------------- -- Local lemma null bodies -- @@ -771,9 +770,11 @@ is procedure Prove_Quotient_Zero with Ghost, - Pre => Mult >= Big_2xx64 + Pre => Mult >= Big_2xxDouble and then - not (Mult = Big_2xx64 and then X = Double_Int'First and then Round) + not (Mult = Big_2xxDouble + and then X = Double_Int'First + and then Round) and then Q = 0 and then R = X, Post => Big (R) = Big (X) rem (Big (Y) * Big (Z)) @@ -789,7 +790,7 @@ is procedure Prove_Round_To_One with Ghost, - Pre => Mult = Big_2xx64 + Pre => Mult = Big_2xxDouble and then X = Double_Int'First and then Q = (if Den_Pos then -1 else 1) and then R = X @@ -867,11 +868,14 @@ is if (X >= 0) = Den_Pos then pragma Assert (Quot >= 0); pragma Assert (Big_Q >= 0); + pragma Assert (Q >= 0); pragma Assert (Big (Q) = Big_Q); else pragma Assert ((X >= 0) /= (Big (Y) * Big (Z) >= 0)); pragma Assert (Quot <= 0); pragma Assert (Big_Q <= 0); + pragma Assert (if X >= 0 then R >= 0); + pragma Assert (if X < 0 then R <= 0); pragma Assert (Big (R) = Big_R); end if; end Prove_Signs; @@ -892,6 +896,7 @@ is else Big_Q := Quot; end if; + Lemma_Abs_Mult_Commutation (Big (Y), Big (Z)); Lemma_Mult_Decomposition (Mult, Yu, Zu, Yhi, Ylo, Zhi, Zlo); -- Compute Y * Z. Note that if the result overflows Double_Uns, then @@ -943,28 +948,32 @@ is pragma Assert (Big (T2) = Big (Double_Uns'(Yhi * Zlo)) + Big (Double_Uns'(Ylo * Zhi))); - Lemma_Mult_Distribution (Big_2xx32, Big (Double_Uns'(Yhi * Zlo)), - Big (Double_Uns'(Ylo * Zhi))); - pragma Assert (Mult = Big_2xx32 * Big (T2) + Big (T1)); + Lemma_Mult_Distribution (Big_2xxSingle, + Big (Double_Uns'(Yhi * Zlo)), + Big (Double_Uns'(Ylo * Zhi))); + pragma Assert (Mult = Big_2xxSingle * Big (T2) + Big (T1)); Lemma_Hi_Lo (T1, Hi (T1), Lo (T1)); pragma Assert - (Mult = Big_2xx32 * Big (T2) - + Big_2xx32 * Big (Double_Uns (Hi (T1))) - + Big (Double_Uns (Lo (T1)))); - Lemma_Mult_Distribution (Big_2xx32, Big (T2), - Big (Double_Uns (Hi (T1)))); + (Mult = Big_2xxSingle * Big (T2) + + Big_2xxSingle * Big (Double_Uns (Hi (T1))) + + Big (Double_Uns (Lo (T1)))); + Lemma_Mult_Distribution (Big_2xxSingle, + Big (T2), + Big (Double_Uns (Hi (T1)))); Lemma_Add_Commutation (T2, Hi (T1)); T2 := T2 + Hi (T1); - pragma Assert (Mult = Big_2xx32 * Big (T2) + Big (Double_Uns (Lo (T1)))); + pragma Assert + (Mult = Big_2xxSingle * Big (T2) + Big (Double_Uns (Lo (T1)))); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); - Lemma_Mult_Distribution (Big_2xx32, Big (Double_Uns (Hi (T2))), - Big (Double_Uns (Lo (T2)))); + Lemma_Mult_Distribution (Big_2xxSingle, + Big (Double_Uns (Hi (T2))), + Big (Double_Uns (Lo (T2)))); pragma Assert - (Mult = Big_2xx64 * Big (Double_Uns (Hi (T2))) - + Big_2xx32 * Big (Double_Uns (Lo (T2))) - + Big (Double_Uns (Lo (T1)))); + (Mult = Big_2xxDouble * Big (Double_Uns (Hi (T2))) + + Big_2xxSingle * Big (Double_Uns (Lo (T2))) + + Big (Double_Uns (Lo (T1)))); if Hi (T2) /= 0 then R := X; @@ -987,7 +996,7 @@ is pragma Assert (Big (Double_Uns (Hi (T2))) >= 1); pragma Assert (Big (Double_Uns (Lo (T2))) >= 0); pragma Assert (Big (Double_Uns (Lo (T1))) >= 0); - pragma Assert (Mult >= Big_2xx64); + pragma Assert (Mult >= Big_2xxDouble); if Hi (T2) > 1 then pragma Assert (Big (Double_Uns (Hi (T2))) > 1); elsif Lo (T2) > 0 then @@ -1194,22 +1203,24 @@ is Lemma_Hi_Lo (Yu, Yhi, Ylo); pragma Assert - (Mult = (Big_2xx32 * Big (Double_Uns (Xhi)) + Big (Double_Uns (Xlo))) * - (Big_2xx32 * Big (Double_Uns (Yhi)) + Big (Double_Uns (Ylo)))); + (Mult = + (Big_2xxSingle * Big (Double_Uns (Xhi)) + Big (Double_Uns (Xlo))) * + (Big_2xxSingle * Big (Double_Uns (Yhi)) + Big (Double_Uns (Ylo)))); pragma Assert (Mult = - Big_2xx32 * Big_2xx32 * Big (Double_Uns (Xhi)) * Big (Double_Uns (Yhi)) - + Big_2xx32 * Big (Double_Uns (Xhi)) * Big (Double_Uns (Ylo)) - + Big_2xx32 * Big (Double_Uns (Xlo)) * Big (Double_Uns (Yhi)) - + Big (Double_Uns (Xlo)) * Big (Double_Uns (Ylo))); - Lemma_Deep_Mult_Commutation (Big_2xx32 * Big_2xx32, Xhi, Yhi); - Lemma_Deep_Mult_Commutation (Big_2xx32, Xhi, Ylo); - Lemma_Deep_Mult_Commutation (Big_2xx32, Xlo, Yhi); + Big_2xxSingle + * Big_2xxSingle * Big (Double_Uns (Xhi)) * Big (Double_Uns (Yhi)) + + Big_2xxSingle * Big (Double_Uns (Xhi)) * Big (Double_Uns (Ylo)) + + Big_2xxSingle * Big (Double_Uns (Xlo)) * Big (Double_Uns (Yhi)) + + Big (Double_Uns (Xlo)) * Big (Double_Uns (Ylo))); + Lemma_Deep_Mult_Commutation (Big_2xxSingle * Big_2xxSingle, Xhi, Yhi); + Lemma_Deep_Mult_Commutation (Big_2xxSingle, Xhi, Ylo); + Lemma_Deep_Mult_Commutation (Big_2xxSingle, Xlo, Yhi); Lemma_Mult_Commutation (Xlo, Ylo); pragma Assert (Mult = - Big_2xx32 * Big_2xx32 * Big (Double_Uns'(Xhi * Yhi)) - + Big_2xx32 * Big (Double_Uns'(Xhi * Ylo)) - + Big_2xx32 * Big (Double_Uns'(Xlo * Yhi)) - + Big (Double_Uns'(Xlo * Ylo))); + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns'(Xhi * Yhi)) + + Big_2xxSingle * Big (Double_Uns'(Xhi * Ylo)) + + Big_2xxSingle * Big (Double_Uns'(Xlo * Yhi)) + + Big (Double_Uns'(Xlo * Ylo))); end Lemma_Mult_Decomposition; ------------------- @@ -1382,9 +1393,9 @@ is Pre => Xhi /= 0 and then Yhi /= 0 and then Mult = - Big_2xx32 * Big_2xx32 * (Big (Double_Uns'(Xhi * Yhi))) - + Big_2xx32 * (Big (Double_Uns'(Xhi * Ylo))) - + Big_2xx32 * (Big (Double_Uns'(Xlo * Yhi))) + Big_2xxSingle * Big_2xxSingle * (Big (Double_Uns'(Xhi * Yhi))) + + Big_2xxSingle * (Big (Double_Uns'(Xhi * Ylo))) + + Big_2xxSingle * (Big (Double_Uns'(Xlo * Yhi))) + (Big (Double_Uns'(Xlo * Ylo))), Post => not In_Double_Int_Range (Big (X) * Big (Y)); @@ -1392,7 +1403,7 @@ is with Ghost, Pre => In_Double_Int_Range (Big (X) * Big (Y)) - and then Mult = Big_2xx32 * Big (T2) + Big (Double_Uns (Lo (T1))) + and then Mult = Big_2xxSingle * Big (T2) + Big (Double_Uns (Lo (T1))) and then Hi (T2) = 0, Post => Mult = Big (Lo (T2) & Lo (T1)); @@ -1410,19 +1421,20 @@ is Pre => In_Double_Int_Range (Big (X) * Big (Y)) and then Mult = Big (T2) and then ((X >= 0 and then Y >= 0) or else (X < 0 and then Y < 0)), - Post => To_Pos_Int (T2) = X * Y; + Post => In_Double_Int_Range (Big (T2)) + and then To_Pos_Int (T2) = X * Y; procedure Prove_Result_Too_Large with Ghost, - Pre => Mult = Big_2xx32 * Big (T2) + Big (Double_Uns (Lo (T1))) + Pre => Mult = Big_2xxSingle * Big (T2) + Big (Double_Uns (Lo (T1))) and then Hi (T2) /= 0, Post => not In_Double_Int_Range (Big (X) * Big (Y)); procedure Prove_Too_Large with Ghost, - Pre => abs (Big (X) * Big (Y)) >= Big_2xx64, + Pre => abs (Big (X) * Big (Y)) >= Big_2xxDouble, Post => not In_Double_Int_Range (Big (X) * Big (Y)); -------------------------- @@ -1431,10 +1443,10 @@ is procedure Prove_Both_Too_Large is begin - pragma Assert - (Mult >= Big_2xx32 * Big_2xx32 * Big (Double_Uns'(Xhi * Yhi))); + pragma Assert (Mult >= + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns'(Xhi * Yhi))); pragma Assert (Double_Uns (Xhi) * Double_Uns (Yhi) >= 1); - pragma Assert (Mult >= Big_2xx32 * Big_2xx32); + pragma Assert (Mult >= Big_2xxSingle * Big_2xxSingle); Prove_Too_Large; end Prove_Both_Too_Large; @@ -1445,9 +1457,9 @@ is procedure Prove_Final_Decomposition is begin Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); - pragma Assert (Mult = Big_2xx32 * Big (Double_Uns (Lo (T2))) - + Big (Double_Uns (Lo (T1)))); - pragma Assert (Mult <= Big_2xx63); + pragma Assert (Mult = Big_2xxSingle * Big (Double_Uns (Lo (T2))) + + Big (Double_Uns (Lo (T1)))); + pragma Assert (Mult <= Big_2xxDouble_Minus_1); Lemma_Mult_Commutation (X, Y); pragma Assert (Mult = abs (Big (X * Y))); Lemma_Word_Commutation (Lo (T2)); @@ -1489,12 +1501,12 @@ is procedure Prove_Result_Too_Large is begin - pragma Assert (Mult >= Big_2xx32 * Big (T2)); + pragma Assert (Mult >= Big_2xxSingle * Big (T2)); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); - pragma Assert - (Mult >= Big_2xx32 * Big_2xx32 * Big (Double_Uns (Hi (T2)))); + pragma Assert (Mult >= + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2)))); pragma Assert (Double_Uns (Hi (T2)) >= 1); - pragma Assert (Mult >= Big_2xx32 * Big_2xx32); + pragma Assert (Mult >= Big_2xxSingle * Big_2xxSingle); Prove_Too_Large; end Prove_Result_Too_Large; @@ -1531,9 +1543,9 @@ is pragma Assert (Big (T2) = Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns'(Xlo * Yhi))); - Lemma_Mult_Distribution (Big_2xx32, Big (Double_Uns'(Xhi * Ylo)), + Lemma_Mult_Distribution (Big_2xxSingle, Big (Double_Uns'(Xhi * Ylo)), Big (Double_Uns'(Xlo * Yhi))); - pragma Assert (Mult = Big_2xx32 * Big (T2) + Big (T1)); + pragma Assert (Mult = Big_2xxSingle * Big (T2) + Big (T1)); Lemma_Add_Commutation (T2, Hi (T1)); pragma Assert (Big (T2 + Hi (T1)) = Big (T2) + Big (Double_Uns (Hi (T1)))); @@ -1541,7 +1553,8 @@ is T2 := T2 + Hi (T1); Lemma_Hi_Lo (T1, Hi (T1), Lo (T1)); - pragma Assert (Mult = Big_2xx32 * Big (T2) + Big (Double_Uns (Lo (T1)))); + pragma Assert + (Mult = Big_2xxSingle * Big (T2) + Big (Double_Uns (Lo (T1)))); if Hi (T2) /= 0 then Prove_Result_Too_Large; @@ -1655,19 +1668,21 @@ is Pre => D'Initialized and then Scale <= Single_Size and then Mult = - Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4))) - and then Big (D (1) & D (2)) * Big_2xx (Scale) < Big_2xx64 + and then Big (D (1) & D (2)) * Big_2xx (Scale) < Big_2xxDouble and then T1 = Shift_Left (D (1) & D (2), Scale) and then T2 = Shift_Left (Double_Uns (D (3)), Scale) and then T3 = Shift_Left (Double_Uns (D (4)), Scale), Post => Mult * Big_2xx (Scale) = - Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (Hi (T1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (Lo (T1) or + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1) or Hi (T2))) - + Big_2xx32 * Big (Double_Uns (Lo (T2) or + + Big_2xxSingle * Big (Double_Uns (Lo (T2) or Hi (T3))) + Big (Double_Uns (Lo (T3))); -- Proves the scaling of the 4-digit dividend actually multiplies it by @@ -1711,7 +1726,8 @@ is procedure Prove_Overflow with Ghost, - Pre => Z /= 0 and then Mult >= Big_2xx64 * Big (Double_Uns'(abs Z)), + Pre => Z /= 0 + and then Mult >= Big_2xxDouble * Big (Double_Uns'(abs Z)), Post => not In_Double_Int_Range (Big (X) * Big (Y) / Big (Z)) and then not In_Double_Int_Range (Round_Quotient (Big (X) * Big (Y), Big (Z), @@ -1761,7 +1777,7 @@ is with Ghost, Pre => In_Double_Int_Range (Big_Q) - and then abs Big_Q = Big_2xx64, + and then abs Big_Q = Big_2xxDouble, Post => False; -- Proves the inconsistency when Q is equal to Big_2xx64 @@ -1832,9 +1848,10 @@ is and then D'Initialized and then Hi (abs Z) = 0 and then Lo (abs Z) = Zlo - and then Mult = Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) - + Big (Double_Uns (D (4))) + and then Mult = + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + + Big (Double_Uns (D (4))) and then D (2) < Zlo and then Quot = (Big (X) * Big (Y)) / Big (Z) and then Big_R = (Big (X) * Big (Y)) rem Big (Z) @@ -1854,14 +1871,15 @@ is begin Lemma_Hi_Lo (D (1) & D (2), D (1), D (2)); pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big_2xx32 * Big_2xx (Scale) * Big (D (1) & D (2)) - + Big_2xx32 * Big_2xx (Scale) * Big (Double_Uns (D (3))) - + Big_2xx (Scale) * Big (Double_Uns (D (4)))); + Big_2xxSingle + * Big_2xxSingle * Big_2xx (Scale) * Big (D (1) & D (2)) + + Big_2xxSingle * Big_2xx (Scale) * Big (Double_Uns (D (3))) + + Big_2xx (Scale) * Big (Double_Uns (D (4)))); pragma Assert (Big_2xx (Scale) > 0); - Lemma_Lt_Mult (Big (Double_Uns (D (3))), Big_2xx32, - Big_2xx (Scale), Big_2xx64); - Lemma_Lt_Mult (Big (Double_Uns (D (4))), Big_2xx32, - Big_2xx (Scale), Big_2xx64); + Lemma_Lt_Mult (Big (Double_Uns (D (3))), Big_2xxSingle, + Big_2xx (Scale), Big_2xxDouble); + Lemma_Lt_Mult (Big (Double_Uns (D (4))), Big_2xxSingle, + Big_2xx (Scale), Big_2xxDouble); Lemma_Mult_Commutation (2 ** Scale, D (1) & D (2), T1); declare Big_D12 : constant Big_Integer := @@ -1869,8 +1887,8 @@ is Big_T1 : constant Big_Integer := Big (T1); begin pragma Assert (Big_D12 = Big_T1); - pragma Assert (Big_2xx32 * Big_2xx32 * Big_D12 - = Big_2xx32 * Big_2xx32 * Big_T1); + pragma Assert (Big_2xxSingle * Big_2xxSingle * Big_D12 + = Big_2xxSingle * Big_2xxSingle * Big_T1); end; Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (3)), T2); declare @@ -1879,7 +1897,7 @@ is Big_T2 : constant Big_Integer := Big (T2); begin pragma Assert (Big_D3 = Big_T2); - pragma Assert (Big_2xx32 * Big_D3 = Big_2xx32 * Big_T2); + pragma Assert (Big_2xxSingle * Big_D3 = Big_2xxSingle * Big_T2); end; Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (4)), T3); declare @@ -1890,7 +1908,9 @@ is pragma Assert (Big_D4 = Big_T3); end; pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big_2xx32 * Big (T1) + Big_2xx32 * Big (T2) + Big (T3)); + Big_2xxSingle * Big_2xxSingle * Big (T1) + + Big_2xxSingle * Big (T2) + + Big (T3)); Lemma_Hi_Lo (T1, Hi (T1), Lo (T1)); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); Lemma_Hi_Lo (T3, Hi (T3), Lo (T3)); @@ -1910,11 +1930,15 @@ is Lemma_Hi_Lo (T1, Hi (T1), S3); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); Lemma_Hi_Lo (T3, Hi (T3), S2); + Lemma_Mult_Commutation (Double_Uns (Q), Double_Uns (Lo (Zu)), T1); + Lemma_Mult_Commutation (Double_Uns (Q), Double_Uns (Hi (Zu)), T2); + pragma Assert (Big (Double_Uns (Q)) * Big (Zu) = + Big_2xxSingle * Big (T2) + Big (T1)); pragma Assert (Big (Double_Uns (Q)) * Big (Zu) = - Big_2xx32 * Big_2xx32 * Big (Double_Uns (Hi (T2))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (Hi (T3))) - + Big_2xx32 * Big (Double_Uns (S2)) - + Big (Double_Uns (S3))); + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T3))) + + Big_2xxSingle * Big (Double_Uns (S2)) + + Big (Double_Uns (S3))); pragma Assert (Double_Uns (Hi (T3)) + Hi (T2) = Double_Uns (S1)); Lemma_Add_Commutation (Double_Uns (Hi (T3)), Hi (T2)); pragma Assert @@ -1937,7 +1961,7 @@ is procedure Prove_Overflow is begin - Lemma_Div_Ge (Mult, Big_2xx64, Big (Double_Uns'(abs Z))); + Lemma_Div_Ge (Mult, Big_2xxDouble, Big (Double_Uns'(abs Z))); Lemma_Abs_Commutation (Z); Lemma_Abs_Div_Commutation (Big (X) * Big (Y), Big (Z)); end Prove_Overflow; @@ -1961,9 +1985,9 @@ is Lemma_Lt_Commutation (Double_Uns (D (J)), Double_Uns (Zhi)); Lemma_Gt_Mult (Big (Double_Uns (Zhi)), Big (Double_Uns (D (J))) + 1, - Big_2xx32, Big (D (J) & D (J + 1))); + Big_2xxSingle, Big (D (J) & D (J + 1))); Lemma_Div_Lt - (Big (D (J) & D (J + 1)), Big_2xx32, Big (Double_Uns (Zhi))); + (Big (D (J) & D (J + 1)), Big_2xxSingle, Big (Double_Uns (Zhi))); Lemma_Div_Commutation (D (J) & D (J + 1), Double_Uns (Zhi)); Lemma_Lo_Is_Ident ((D (J) & D (J + 1)) / Zhi); Lemma_Div_Definition (D (J) & D (J + 1), Zhi, Double_Uns (Qd (J)), @@ -1972,10 +1996,10 @@ is ((D (J) & D (J + 1)) rem Zhi, Double_Uns (Zhi)); Lemma_Gt_Mult ((Big (Double_Uns (Qd (J))) + 1) * Big (Double_Uns (Zhi)), - Big (D (J) & D (J + 1)) + 1, Big_2xx32, + Big (D (J) & D (J + 1)) + 1, Big_2xxSingle, Big3 (D (J), D (J + 1), D (J + 2))); Lemma_Hi_Lo (Zu, Zhi, Lo (Zu)); - Lemma_Gt_Mult (Big (Zu), Big_2xx32 * Big (Double_Uns (Zhi)), + Lemma_Gt_Mult (Big (Zu), Big_2xxSingle * Big (Double_Uns (Zhi)), Big (Double_Uns (Qd (J))) + 1, Big3 (D (J), D (J + 1), D (J + 2))); Lemma_Div_Lt (Big3 (D (J), D (J + 1), D (J + 2)), @@ -1988,7 +2012,7 @@ is procedure Prove_Q_Too_Big is begin - pragma Assert (Big_Q = Big_2xx64 or Big_Q = -Big_2xx64); + pragma Assert (Big_Q = Big_2xxDouble or Big_Q = -Big_2xxDouble); Lemma_Not_In_Range_Big2xx64; end Prove_Q_Too_Big; @@ -2054,16 +2078,16 @@ is Lemma_Div_Definition (T2, Zlo, T2 / Zlo, Ru); pragma Assert (Mult = Big (Double_Uns (Zlo)) * - (Big_2xx32 * Big (T1 / Zlo) + Big (T2 / Zlo)) + Big (Ru)); - Lemma_Div_Lt (Big (T1), Big_2xx32, Big (Double_Uns (Zlo))); + (Big_2xxSingle * Big (T1 / Zlo) + Big (T2 / Zlo)) + Big (Ru)); + Lemma_Div_Lt (Big (T1), Big_2xxSingle, Big (Double_Uns (Zlo))); Lemma_Div_Commutation (T1, Double_Uns (Zlo)); Lemma_Lo_Is_Ident (T1 / Zlo); - Lemma_Div_Lt (Big (T2), Big_2xx32, Big (Double_Uns (Zlo))); + Lemma_Div_Lt (Big (T2), Big_2xxSingle, Big (Double_Uns (Zlo))); Lemma_Div_Commutation (T2, Double_Uns (Zlo)); Lemma_Lo_Is_Ident (T2 / Zlo); Lemma_Hi_Lo (Qu, Lo (T1 / Zlo), Lo (T2 / Zlo)); Lemma_Substitution (Mult, Big (Double_Uns (Zlo)), - Big_2xx32 * Big (T1 / Zlo) + Big (T2 / Zlo), + Big_2xxSingle * Big (T1 / Zlo) + Big (T2 / Zlo), Big (Qu), Big (Ru)); Lemma_Lt_Commutation (Ru, Double_Uns (Zlo)); Lemma_Rev_Div_Definition @@ -2109,7 +2133,7 @@ is T2 := D (3) + Lo (T1); - Lemma_Mult_Distribution (Big_2xx32, + Lemma_Mult_Distribution (Big_2xxSingle, Big (Double_Uns (D (3))), Big (Double_Uns (Lo (T1)))); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); @@ -2158,9 +2182,10 @@ is Big (Double_Uns (D (1)))); pragma Assert (Mult = - Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4)))); else @@ -2168,9 +2193,10 @@ is end if; pragma Assert (Mult = - Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4)))); else @@ -2181,7 +2207,7 @@ is T2 := D (3) + Lo (T1); - Lemma_Mult_Distribution (Big_2xx32, + Lemma_Mult_Distribution (Big_2xxSingle, Big (Double_Uns (D (3))), Big (Double_Uns (Lo (T1)))); Lemma_Hi_Lo (T2, Hi (T2), Lo (T2)); @@ -2195,27 +2221,28 @@ is pragma Assert (Big (Double_Uns (Hi (T1))) + Big (Double_Uns (Hi (T2))) = Big (Double_Uns (D (2)))); - pragma Assert - (Mult = Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + pragma Assert (Mult = + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4)))); else D (2) := 0; - pragma Assert - (Mult = Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + pragma Assert (Mult = + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4)))); end if; D (1) := 0; end if; - pragma Assert - (Mult = Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) - + Big (Double_Uns (D (4)))); + pragma Assert (Mult = + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + + Big (Double_Uns (D (4)))); -- Now it is time for the dreaded multiple precision division. First an -- easy case, check for the simple case of a one digit divisor. @@ -2224,14 +2251,14 @@ is if D (1) /= 0 or else D (2) >= Zlo then if D (1) > 0 then pragma Assert - (Mult >= Big_2xx32 * Big_2xx32 * Big_2xx32 + (Mult >= Big_2xxSingle * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))); - pragma Assert (Mult >= Big_2xx64 * Big_2xx32); + pragma Assert (Mult >= Big_2xxDouble * Big_2xxSingle); Lemma_Ge_Commutation (2 ** Single_Size, Zu); - pragma Assert (Mult >= Big_2xx64 * Big (Zu)); + pragma Assert (Mult >= Big_2xxDouble * Big (Zu)); else Lemma_Ge_Commutation (Double_Uns (D (2)), Zu); - pragma Assert (Mult >= Big_2xx64 * Big (Zu)); + pragma Assert (Mult >= Big_2xxDouble * Big (Zu)); end if; Prove_Overflow; @@ -2303,6 +2330,21 @@ is Post => Shift / 2 = 2 ** (Log_Single_Size - (Inter + 1)) and then (Shift = 2 or (Shift / 2) mod 2 = 0); + procedure Prove_Shift_Progress + with + Ghost, + Pre => Shift <= Single_Size / 2 + and then Shift_Prev = 2 * Shift + and then Mask_Prev = + Shift_Left (Single_Uns'Last, Single_Size - Shift_Prev) + and then Mask = + Shift_Left (Single_Uns'Last, + Single_Size - Shift_Prev + Shift), + Post => Mask_Prev = + Shift_Left (Single_Uns'Last, Single_Size - 2 * Shift) + and then Mask = + Shift_Left (Single_Uns'Last, Single_Size - Shift); + procedure Prove_Shifting with Ghost, @@ -2315,17 +2357,13 @@ is and then (Hi (Zu_Prev) and Mask_Prev and not Mask) /= 0, Post => (Hi (Zu) and Mask) /= 0; - ----------------- - -- Prove_Power -- - ----------------- + ----------------------------- + -- Local lemma null bodies -- + ----------------------------- procedure Prove_Power is null; - - -------------------- - -- Prove_Shifting -- - -------------------- - procedure Prove_Shifting is null; + procedure Prove_Shift_Progress is null; begin Prove_Power; @@ -2339,6 +2377,7 @@ is Lemma_Double_Shift (Single_Uns'Last, Single_Size - Shift_Prev, Shift); + Prove_Shift_Progress; if (Hi (Zu) and Mask) = 0 then Zu := Shift_Left (Zu, Shift); @@ -2360,9 +2399,13 @@ is Scale := Scale + Shift; + pragma Assert (Zu = Shift_Left (abs Z, Scale)); pragma Assert (Big (Zu) = Big (Double_Uns'(abs Z)) * Big_2xx (Scale)); end if; + + pragma Assert + (Big (Zu) = Big (Double_Uns'(abs Z)) * Big_2xx (Scale)); end; end loop; @@ -2386,7 +2429,7 @@ is Lemma_Lt_Commutation (D (1) & D (2), abs Z); Lemma_Lt_Mult (Big (D (1) & D (2)), Big (Double_Uns'(abs Z)), Big_2xx (Scale), - Big_2xx64); + Big_2xxDouble); T1 := Shift_Left (D (1) & D (2), Scale); T2 := Shift_Left (Double_Uns (D (3)), Scale); @@ -2400,21 +2443,23 @@ is D (4) := Lo (T3); pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) - + Big_2xx32 * Big (Double_Uns (D (3))) + Big_2xxSingle + * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + + Big_2xxSingle * Big (Double_Uns (D (3))) + Big (Double_Uns (D (4)))); - Lemma_Substitution (Big_2xx64 * Big (Zu), Big_2xx64, Big (Zu), + Lemma_Substitution (Big_2xxDouble * Big (Zu), Big_2xxDouble, Big (Zu), Big (Double_Uns'(abs Z)) * Big_2xx (Scale), 0); - Lemma_Lt_Mult (Mult, Big_2xx64 * Big (Double_Uns'(abs Z)), - Big_2xx (Scale), Big_2xx64 * Big (Zu)); - Lemma_Div_Lt (Mult * Big_2xx (Scale), Big (Zu), Big_2xx64); - Lemma_Substitution (Mult * Big_2xx (Scale), Big_2xx32, - Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (1))) - + Big_2xx32 * Big (Double_Uns (D (2))) - + Big (Double_Uns (D (3))), - Big3 (D (1), D (2), D (3)), - Big (Double_Uns (D (4)))); + Lemma_Lt_Mult (Mult, Big_2xxDouble * Big (Double_Uns'(abs Z)), + Big_2xx (Scale), Big_2xxDouble * Big (Zu)); + Lemma_Div_Lt (Mult * Big_2xx (Scale), Big (Zu), Big_2xxDouble); + Lemma_Substitution + (Mult * Big_2xx (Scale), Big_2xxSingle, + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1))) + + Big_2xxSingle * Big (Double_Uns (D (2))) + + Big (Double_Uns (D (3))), + Big3 (D (1), D (2), D (3)), + Big (Double_Uns (D (4)))); -- Loop to compute quotient digits, runs twice for Qd (1) and Qd (2) @@ -2426,7 +2471,7 @@ is Ghost, Pre => X1 = 0, Post => - Big_2xx32 * Big3 (X1, X2, X3) + Big (Double_Uns (X4)) + Big_2xxSingle * Big3 (X1, X2, X3) + Big (Double_Uns (X4)) = Big3 (X2, X3, X4); --------------------------- @@ -2462,10 +2507,11 @@ is Qd (J) := Single_Uns'Last; Lemma_Gt_Mult (Big (Zu), Big (D (J) & D (J + 1)) + 1, - Big_2xx32, + Big_2xxSingle, Big3 (D (J), D (J + 1), D (J + 2))); Lemma_Div_Lt - (Big3 (D (J), D (J + 1), D (J + 2)), Big_2xx32, Big (Zu)); + (Big3 (D (J), D (J + 1), D (J + 2)), + Big_2xxSingle, Big (Zu)); else Qd (J) := Lo ((D (J) & D (J + 1)) / Zhi); @@ -2547,50 +2593,52 @@ is pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) < Big (Zu)); if D (J) > 0 then - pragma Assert (Big_2xx32 * Big_2xx32 = Big_2xx64); + pragma Assert + (Big_2xxSingle * Big_2xxSingle = Big_2xxDouble); pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) = - Big_2xx32 * Big_2xx32 - * Big (Double_Uns (D (J))) - + Big_2xx32 * Big (Double_Uns (D (J + 1))) - + Big (Double_Uns (D (J + 2)))); + Big_2xxSingle + * Big_2xxSingle * Big (Double_Uns (D (J))) + + Big_2xxSingle * Big (Double_Uns (D (J + 1))) + + Big (Double_Uns (D (J + 2)))); pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) = - Big_2xx64 * Big (Double_Uns (D (J))) - + Big_2xx32 * Big (Double_Uns (D (J + 1))) - + Big (Double_Uns (D (J + 2)))); + Big_2xxDouble * Big (Double_Uns (D (J))) + + Big_2xxSingle * Big (Double_Uns (D (J + 1))) + + Big (Double_Uns (D (J + 2)))); pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) >= - Big_2xx64 * Big (Double_Uns (D (J)))); + Big_2xxDouble * Big (Double_Uns (D (J)))); Lemma_Ge_Commutation (Double_Uns (D (J)), Double_Uns'(1)); pragma Assert - (Big3 (D (J), D (J + 1), D (J + 2)) >= Big_2xx64); + (Big3 (D (J), D (J + 1), D (J + 2)) >= Big_2xxDouble); pragma Assert (False); end if; if J = 1 then Qd1 := Qd (1); Lemma_Substitution - (Mult * Big_2xx (Scale), Big_2xx32, D123, + (Mult * Big_2xx (Scale), Big_2xxSingle, D123, Big3 (D (1), D (2), D (3)) + Big3 (S1, S2, S3), Big (Double_Uns (D (4)))); Prove_First_Iteration (D (1), D (2), D (3), D (4)); - Lemma_Substitution (Mult * Big_2xx (Scale), Big_2xx32, + Lemma_Substitution (Mult * Big_2xx (Scale), Big_2xxSingle, Big3 (S1, S2, S3), Big (Double_Uns (Qd1)) * Big (Zu), Big3 (D (2), D (3), D (4))); else pragma Assert (Qd1 = Qd (1)); pragma Assert - (Big_2xx32 * Big_2xx32 * Big (Double_Uns (D (2))) = 0); + (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))) + = 0); pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big (Double_Uns (Qd (1))) * Big (Zu) + Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu) + Big3 (S1, S2, S3) + Big3 (D (2), D (3), D (4))); pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big (Double_Uns (Qd (1))) * Big (Zu) - + Big (Double_Uns (Qd (2))) * Big (Zu) - + Big_2xx32 * Big (Double_Uns (D (3))) - + Big (Double_Uns (D (4)))); + Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu) + + Big (Double_Uns (Qd (2))) * Big (Zu) + + Big_2xxSingle * Big (Double_Uns (D (3))) + + Big (Double_Uns (D (4)))); end if; end loop; end; @@ -2607,15 +2655,16 @@ is pragma Assert (Mult * Big_2xx (Scale) = - Big_2xx32 * Big (Double_Uns (Qd (1))) * Big (Zu) - + Big (Double_Uns (Qd (2))) * Big (Zu) - + Big_2xx32 * Big (Double_Uns (D (3))) - + Big (Double_Uns (D (4)))); + Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu) + + Big (Double_Uns (Qd (2))) * Big (Zu) + + Big_2xxSingle * Big (Double_Uns (D (3))) + + Big (Double_Uns (D (4)))); Lemma_Hi_Lo (Qu, Qd (1), Qd (2)); Lemma_Hi_Lo (Ru, D (3), D (4)); Lemma_Substitution (Mult * Big_2xx (Scale), Big (Zu), - Big_2xx32 * Big (Double_Uns (Qd (1))) + Big (Double_Uns (Qd (2))), + Big_2xxSingle * Big (Double_Uns (Qd (1))) + + Big (Double_Uns (Qd (2))), Big (Qu), Big (Ru)); Prove_Rescaling; diff --git a/gcc/ada/libgnat/s-aridou.ads b/gcc/ada/libgnat/s-aridou.ads index 7c32f7f..815865f 100644 --- a/gcc/ada/libgnat/s-aridou.ads +++ b/gcc/ada/libgnat/s-aridou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-arit128.adb b/gcc/ada/libgnat/s-arit128.adb index 951e357..3bd4bb4 100644 --- a/gcc/ada/libgnat/s-arit128.adb +++ b/gcc/ada/libgnat/s-arit128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,7 +31,9 @@ with System.Arith_Double; -package body System.Arith_128 is +package body System.Arith_128 + with SPARK_Mode +is subtype Uns128 is Interfaces.Unsigned_128; subtype Uns64 is Interfaces.Unsigned_64; diff --git a/gcc/ada/libgnat/s-arit128.ads b/gcc/ada/libgnat/s-arit128.ads index 6213cfb..fe043a9 100644 --- a/gcc/ada/libgnat/s-arit128.ads +++ b/gcc/ada/libgnat/s-arit128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,31 +36,102 @@ pragma Restrictions (No_Elaboration_Code); -- Allow direct call from gigi generated code +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + +with Ada.Numerics.Big_Numbers.Big_Integers_Ghost; with Interfaces; -package System.Arith_128 is - pragma Pure; +package System.Arith_128 + with Pure, SPARK_Mode +is + use type Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Big_Integer; + use type Interfaces.Integer_128; subtype Int128 is Interfaces.Integer_128; - function Add_With_Ovflo_Check128 (X, Y : Int128) return Int128; + subtype Big_Integer is + Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Big_Integer + with Ghost; + + package Signed_Conversion is new + Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Signed_Conversions + (Int => Int128); + + function Big (Arg : Int128) return Big_Integer is + (Signed_Conversion.To_Big_Integer (Arg)) + with Ghost; + + function In_Int128_Range (Arg : Big_Integer) return Boolean is + (Ada.Numerics.Big_Numbers.Big_Integers_Ghost.In_Range + (Arg, Big (Int128'First), Big (Int128'Last))) + with Ghost; + + function Add_With_Ovflo_Check128 (X, Y : Int128) return Int128 + with + Pre => In_Int128_Range (Big (X) + Big (Y)), + Post => Add_With_Ovflo_Check128'Result = X + Y; -- Raises Constraint_Error if sum of operands overflows 128 bits, -- otherwise returns the 128-bit signed integer sum. - function Subtract_With_Ovflo_Check128 (X, Y : Int128) return Int128; + function Subtract_With_Ovflo_Check128 (X, Y : Int128) return Int128 + with + Pre => In_Int128_Range (Big (X) - Big (Y)), + Post => Subtract_With_Ovflo_Check128'Result = X - Y; -- Raises Constraint_Error if difference of operands overflows 128 -- bits, otherwise returns the 128-bit signed integer difference. - function Multiply_With_Ovflo_Check128 (X, Y : Int128) return Int128; + function Multiply_With_Ovflo_Check128 (X, Y : Int128) return Int128 + with + Pre => In_Int128_Range (Big (X) * Big (Y)), + Post => Multiply_With_Ovflo_Check128'Result = X * Y; pragma Export (C, Multiply_With_Ovflo_Check128, "__gnat_mulv128"); -- Raises Constraint_Error if product of operands overflows 128 -- bits, otherwise returns the 128-bit signed integer product. -- Gigi may also call this routine directly. + function Same_Sign (X, Y : Big_Integer) return Boolean is + (X = Big (Int128'(0)) + or else Y = Big (Int128'(0)) + or else (X < Big (Int128'(0))) = (Y < Big (Int128'(0)))) + with Ghost; + + function Round_Quotient (X, Y, Q, R : Big_Integer) return Big_Integer is + (if abs R > (abs Y - Big (Int128'(1))) / Big (Int128'(2)) then + (if Same_Sign (X, Y) then Q + Big (Int128'(1)) + else Q - Big (Int128'(1))) + else + Q) + with + Ghost, + Pre => Y /= 0 and then Q = X / Y and then R = X rem Y; + procedure Scaled_Divide128 (X, Y, Z : Int128; Q, R : out Int128; - Round : Boolean); + Round : Boolean) + with + Pre => Z /= 0 + and then In_Int128_Range + (if Round then Round_Quotient (Big (X) * Big (Y), Big (Z), + Big (X) * Big (Y) / Big (Z), + Big (X) * Big (Y) rem Big (Z)) + else Big (X) * Big (Y) / Big (Z)), + Post => Big (R) = Big (X) * Big (Y) rem Big (Z) + and then + (if Round then + Big (Q) = Round_Quotient (Big (X) * Big (Y), Big (Z), + Big (X) * Big (Y) / Big (Z), Big (R)) + else + Big (Q) = Big (X) * Big (Y) / Big (Z)); -- Performs the division of (X * Y) / Z, storing the quotient in Q -- and the remainder in R. Constraint_Error is raised if Z is zero, -- or if the quotient does not fit in 128 bits. Round indicates if @@ -72,7 +143,22 @@ package System.Arith_128 is procedure Double_Divide128 (X, Y, Z : Int128; Q, R : out Int128; - Round : Boolean); + Round : Boolean) + with + Pre => Y /= 0 + and then Z /= 0 + and then In_Int128_Range + (if Round then Round_Quotient (Big (X), Big (Y) * Big (Z), + Big (X) / (Big (Y) * Big (Z)), + Big (X) rem (Big (Y) * Big (Z))) + else Big (X) / (Big (Y) * Big (Z))), + Post => Big (R) = Big (X) rem (Big (Y) * Big (Z)) + and then + (if Round then + Big (Q) = Round_Quotient (Big (X), Big (Y) * Big (Z), + Big (X) / (Big (Y) * Big (Z)), Big (R)) + else + Big (Q) = Big (X) / (Big (Y) * Big (Z))); -- Performs the division X / (Y * Z), storing the quotient in Q and -- the remainder in R. Constraint_Error is raised if Y or Z is zero, -- or if the quotient does not fit in 128 bits. Round indicates if the diff --git a/gcc/ada/libgnat/s-arit32.adb b/gcc/ada/libgnat/s-arit32.adb index ac6582f..baec78a 100644 --- a/gcc/ada/libgnat/s-arit32.adb +++ b/gcc/ada/libgnat/s-arit32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-arit32.ads b/gcc/ada/libgnat/s-arit32.ads index 5163351..0eb6491 100644 --- a/gcc/ada/libgnat/s-arit32.ads +++ b/gcc/ada/libgnat/s-arit32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-arit64.adb b/gcc/ada/libgnat/s-arit64.adb index 23b76d9..c718ebf 100644 --- a/gcc/ada/libgnat/s-arit64.adb +++ b/gcc/ada/libgnat/s-arit64.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-arit64.ads b/gcc/ada/libgnat/s-arit64.ads index 9e8492d..c4bebeb 100644 --- a/gcc/ada/libgnat/s-arit64.ads +++ b/gcc/ada/libgnat/s-arit64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-assert.adb b/gcc/ada/libgnat/s-assert.adb index 4adcc33..0e463a1 100644 --- a/gcc/ada/libgnat/s-assert.adb +++ b/gcc/ada/libgnat/s-assert.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Exceptions; with System.Exceptions_Debug; diff --git a/gcc/ada/libgnat/s-assert.ads b/gcc/ada/libgnat/s-assert.ads index aa82549..e1ecf20 100644 --- a/gcc/ada/libgnat/s-assert.ads +++ b/gcc/ada/libgnat/s-assert.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,8 +36,6 @@ -- This unit may be used directly from an application program by providing -- an appropriate WITH, and the interface can be expected to remain stable. -pragma Compiler_Unit_Warning; - with Ada.Assertions; package System.Assertions is diff --git a/gcc/ada/libgnat/s-atacco.adb b/gcc/ada/libgnat/s-atacco.adb index c13291e..1ba39f4 100644 --- a/gcc/ada/libgnat/s-atacco.adb +++ b/gcc/ada/libgnat/s-atacco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-atacco.ads b/gcc/ada/libgnat/s-atacco.ads index 16d86fb..736210d 100644 --- a/gcc/ada/libgnat/s-atacco.ads +++ b/gcc/ada/libgnat/s-atacco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-atocou.adb b/gcc/ada/libgnat/s-atocou.adb index b7ce56d..d2cf55e 100644 --- a/gcc/ada/libgnat/s-atocou.adb +++ b/gcc/ada/libgnat/s-atocou.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-atocou.ads b/gcc/ada/libgnat/s-atocou.ads index 9b25cba..9fee73c 100644 --- a/gcc/ada/libgnat/s-atocou.ads +++ b/gcc/ada/libgnat/s-atocou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-atocou__builtin.adb b/gcc/ada/libgnat/s-atocou__builtin.adb index d87f9ad..3c7af61 100644 --- a/gcc/ada/libgnat/s-atocou__builtin.adb +++ b/gcc/ada/libgnat/s-atocou__builtin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,21 +29,27 @@ -- -- ------------------------------------------------------------------------------ --- This package implements Atomic_Counter and Atomic_Unsigned operations --- for platforms where GCC supports __sync_add_and_fetch_4 and --- __sync_sub_and_fetch_4 builtins. +-- This package implements Atomic_Counter and Atomic_Unsigned operations for +-- platforms where GCC supports __atomic_add_fetch and __atomic_sub_fetch +-- builtins. + +with System.Atomic_Primitives; use System.Atomic_Primitives; package body System.Atomic_Counters is - procedure Sync_Add_And_Fetch - (Ptr : access Atomic_Unsigned; - Value : Atomic_Unsigned); - pragma Import (Intrinsic, Sync_Add_And_Fetch, "__sync_add_and_fetch_4"); + function Atomic_Add_Fetch + (Ptr : System.Address; + Val : Atomic_Unsigned; + Model : Mem_Model := Seq_Cst) + return Atomic_Unsigned; + pragma Import (Intrinsic, Atomic_Add_Fetch, "__atomic_add_fetch"); - function Sync_Sub_And_Fetch - (Ptr : access Atomic_Unsigned; - Value : Atomic_Unsigned) return Atomic_Unsigned; - pragma Import (Intrinsic, Sync_Sub_And_Fetch, "__sync_sub_and_fetch_4"); + function Atomic_Sub_Fetch + (Ptr : System.Address; + Val : Atomic_Unsigned; + Model : Mem_Model := Seq_Cst) + return Atomic_Unsigned; + pragma Import (Intrinsic, Atomic_Sub_Fetch, "__atomic_sub_fetch"); --------------- -- Decrement -- @@ -51,19 +57,19 @@ package body System.Atomic_Counters is procedure Decrement (Item : aliased in out Atomic_Unsigned) is begin - if Sync_Sub_And_Fetch (Item'Unchecked_Access, 1) = 0 then + if Atomic_Sub_Fetch (Item'Address, 1) = 0 then null; end if; end Decrement; function Decrement (Item : aliased in out Atomic_Unsigned) return Boolean is begin - return Sync_Sub_And_Fetch (Item'Unchecked_Access, 1) = 0; + return Atomic_Sub_Fetch (Item'Address, 1) = 0; end Decrement; function Decrement (Item : in out Atomic_Counter) return Boolean is begin - return Sync_Sub_And_Fetch (Item.Value'Unchecked_Access, 1) = 0; + return Atomic_Sub_Fetch (Item.Value'Address, 1) = 0; end Decrement; --------------- @@ -72,12 +78,16 @@ package body System.Atomic_Counters is procedure Increment (Item : aliased in out Atomic_Unsigned) is begin - Sync_Add_And_Fetch (Item'Unchecked_Access, 1); + if Atomic_Add_Fetch (Item'Address, 1) = 0 then + null; + end if; end Increment; procedure Increment (Item : in out Atomic_Counter) is begin - Sync_Add_And_Fetch (Item.Value'Unchecked_Access, 1); + if Atomic_Add_Fetch (Item.Value'Address, 1) = 0 then + null; + end if; end Increment; ---------------- diff --git a/gcc/ada/libgnat/s-atocou__x86.adb b/gcc/ada/libgnat/s-atocou__x86.adb deleted file mode 100644 index 8704d9df3e..0000000 --- a/gcc/ada/libgnat/s-atocou__x86.adb +++ /dev/null @@ -1,112 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . A T O M I C _ C O U N T E R S -- --- -- --- B o d y -- --- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This implementation of the package for x86 processor. GCC can't generate --- code for atomic builtins for 386 CPU. Only increment/decrement instructions --- are supported, thus this implementaton uses machine code insertions to --- access the necessary instructions. - -with System.Machine_Code; - -package body System.Atomic_Counters is - - -- Add comments showing in normal asm language what we generate??? - - --------------- - -- Decrement -- - --------------- - - function Decrement (Item : aliased in out Atomic_Unsigned) return Boolean is - Aux : Boolean; - - begin - System.Machine_Code.Asm - (Template => - "lock%; decl" & ASCII.HT & "%0" & ASCII.LF & ASCII.HT - & "sete %1", - Outputs => - (Atomic_Unsigned'Asm_Output ("=m", Item), - Boolean'Asm_Output ("=qm", Aux)), - Inputs => Atomic_Unsigned'Asm_Input ("m", Item), - Volatile => True); - - return Aux; - end Decrement; - - procedure Decrement (Item : aliased in out Atomic_Unsigned) is - begin - if Decrement (Item) then - null; - end if; - end Decrement; - - function Decrement (Item : in out Atomic_Counter) return Boolean is - begin - return Decrement (Item.Value); - end Decrement; - - --------------- - -- Increment -- - --------------- - - procedure Increment (Item : aliased in out Atomic_Unsigned) is - begin - System.Machine_Code.Asm - (Template => "lock%; incl" & ASCII.HT & "%0", - Outputs => Atomic_Unsigned'Asm_Output ("=m", Item), - Inputs => Atomic_Unsigned'Asm_Input ("m", Item), - Volatile => True); - end Increment; - - procedure Increment (Item : in out Atomic_Counter) is - begin - Increment (Item.Value); - end Increment; - - ---------------- - -- Initialize -- - ---------------- - - procedure Initialize (Item : out Atomic_Counter) is - begin - Item.Value := 1; - end Initialize; - - ------------ - -- Is_One -- - ------------ - - function Is_One (Item : Atomic_Counter) return Boolean is - begin - return Item.Value = 1; - end Is_One; - -end System.Atomic_Counters; diff --git a/gcc/ada/libgnat/s-atoope.ads b/gcc/ada/libgnat/s-atoope.ads index c831e8e..3f21b2d 100644 --- a/gcc/ada/libgnat/s-atoope.ads +++ b/gcc/ada/libgnat/s-atoope.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-atopex.adb b/gcc/ada/libgnat/s-atopex.adb index 65e9433..3ac993e 100644 --- a/gcc/ada/libgnat/s-atopex.adb +++ b/gcc/ada/libgnat/s-atopex.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-atopex.ads b/gcc/ada/libgnat/s-atopex.ads index f7558aa..10ddaba 100644 --- a/gcc/ada/libgnat/s-atopex.ads +++ b/gcc/ada/libgnat/s-atopex.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-atopri.adb b/gcc/ada/libgnat/s-atopri.adb index 20aa666..a6c991a 100644 --- a/gcc/ada/libgnat/s-atopri.adb +++ b/gcc/ada/libgnat/s-atopri.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -55,23 +55,16 @@ package body System.Atomic_Primitives is Expected : in out Atomic_Type; Desired : Atomic_Type) return Boolean is - function My_Sync_Compare_And_Swap is - new Sync_Compare_And_Swap (Atomic_Type); - - Actual : Atomic_Type; + function My_Atomic_Compare_Exchange is + new Atomic_Compare_Exchange (Atomic_Type); begin if Expected /= Desired then if Atomic_Type'Atomic_Always_Lock_Free then - Actual := My_Sync_Compare_And_Swap (Ptr, Expected, Desired); + return My_Atomic_Compare_Exchange (Ptr, Expected'Address, Desired); else raise Program_Error; end if; - - if Actual /= Expected then - Expected := Actual; - return False; - end if; end if; return True; diff --git a/gcc/ada/libgnat/s-atopri.ads b/gcc/ada/libgnat/s-atopri.ads index ea03f1a..0bf8459 100644 --- a/gcc/ada/libgnat/s-atopri.ads +++ b/gcc/ada/libgnat/s-atopri.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -80,17 +80,20 @@ package System.Atomic_Primitives is generic type Atomic_Type is mod <>; - function Sync_Compare_And_Swap - (Ptr : Address; - Expected : Atomic_Type; - Desired : Atomic_Type) return Atomic_Type; + function Atomic_Compare_Exchange + (Ptr : Address; + Expected : Address; + Desired : Atomic_Type; + Weak : Boolean := False; + Success_Model : Mem_Model := Seq_Cst; + Failure_Model : Mem_Model := Seq_Cst) return Boolean; pragma Import - (Intrinsic, Sync_Compare_And_Swap, "__sync_val_compare_and_swap"); + (Intrinsic, Atomic_Compare_Exchange, "__atomic_compare_exchange_n"); - function Sync_Compare_And_Swap_8 is new Sync_Compare_And_Swap (uint8); - function Sync_Compare_And_Swap_16 is new Sync_Compare_And_Swap (uint16); - function Sync_Compare_And_Swap_32 is new Sync_Compare_And_Swap (uint32); - function Sync_Compare_And_Swap_64 is new Sync_Compare_And_Swap (uint64); + function Atomic_Compare_Exchange_8 is new Atomic_Compare_Exchange (uint8); + function Atomic_Compare_Exchange_16 is new Atomic_Compare_Exchange (uint16); + function Atomic_Compare_Exchange_32 is new Atomic_Compare_Exchange (uint32); + function Atomic_Compare_Exchange_64 is new Atomic_Compare_Exchange (uint64); function Atomic_Test_And_Set (Ptr : System.Address; diff --git a/gcc/ada/libgnat/s-auxdec.adb b/gcc/ada/libgnat/s-auxdec.adb index 0cb712a..b70b8d1 100644 --- a/gcc/ada/libgnat/s-auxdec.adb +++ b/gcc/ada/libgnat/s-auxdec.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/Or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-auxdec.ads b/gcc/ada/libgnat/s-auxdec.ads index 7ef1246..9a0ca07 100644 --- a/gcc/ada/libgnat/s-auxdec.ads +++ b/gcc/ada/libgnat/s-auxdec.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bignum.adb b/gcc/ada/libgnat/s-bignum.adb index 41e7617..9377102 100644 --- a/gcc/ada/libgnat/s-bignum.adb +++ b/gcc/ada/libgnat/s-bignum.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bignum.ads b/gcc/ada/libgnat/s-bignum.ads index ad5fedb..f0cfd17 100644 --- a/gcc/ada/libgnat/s-bignum.ads +++ b/gcc/ada/libgnat/s-bignum.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bitfie.ads b/gcc/ada/libgnat/s-bitfie.ads index f081d55..629a53f 100644 --- a/gcc/ada/libgnat/s-bitfie.ads +++ b/gcc/ada/libgnat/s-bitfie.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bitops.adb b/gcc/ada/libgnat/s-bitops.adb index 0535341..0cf4adf 100644 --- a/gcc/ada/libgnat/s-bitops.adb +++ b/gcc/ada/libgnat/s-bitops.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,10 +29,7 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - -with System; use System; -with System.Unsigned_Types; use System.Unsigned_Types; +with System.Unsigned_Types; use System.Unsigned_Types; with Ada.Exceptions; use Ada.Exceptions; with Ada.Unchecked_Conversion; diff --git a/gcc/ada/libgnat/s-bitops.ads b/gcc/ada/libgnat/s-bitops.ads index 92fe0df..20108fe 100644 --- a/gcc/ada/libgnat/s-bitops.ads +++ b/gcc/ada/libgnat/s-bitops.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,10 +31,6 @@ -- Operations on packed bit strings -pragma Compiler_Unit_Warning; - -with System; - package System.Bit_Ops is -- Note: in all the following routines, the System.Address parameters diff --git a/gcc/ada/libgnat/s-bituti.adb b/gcc/ada/libgnat/s-bituti.adb index d571f54..df7cffb 100644 --- a/gcc/ada/libgnat/s-bituti.adb +++ b/gcc/ada/libgnat/s-bituti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bituti.ads b/gcc/ada/libgnat/s-bituti.ads index 8afee24..9325ddc 100644 --- a/gcc/ada/libgnat/s-bituti.ads +++ b/gcc/ada/libgnat/s-bituti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2019-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2019-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-boarop.ads b/gcc/ada/libgnat/s-boarop.ads index 1efac49..7c1813e 100644 --- a/gcc/ada/libgnat/s-boarop.ads +++ b/gcc/ada/libgnat/s-boarop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-boustr.adb b/gcc/ada/libgnat/s-boustr.adb index 0790846..f30895b 100644 --- a/gcc/ada/libgnat/s-boustr.adb +++ b/gcc/ada/libgnat/s-boustr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2016-2021, AdaCore -- +-- Copyright (C) 2016-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-boustr.ads b/gcc/ada/libgnat/s-boustr.ads index 9f7526e..dfe7ba2 100644 --- a/gcc/ada/libgnat/s-boustr.ads +++ b/gcc/ada/libgnat/s-boustr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2016-2021, AdaCore -- +-- Copyright (C) 2016-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-bytswa.ads b/gcc/ada/libgnat/s-bytswa.ads index 7cc1523..1d995b6 100644 --- a/gcc/ada/libgnat/s-bytswa.ads +++ b/gcc/ada/libgnat/s-bytswa.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, AdaCore -- +-- Copyright (C) 2006-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-carsi8.adb b/gcc/ada/libgnat/s-carsi8.adb index a44924a..c5eae5f 100644 --- a/gcc/ada/libgnat/s-carsi8.adb +++ b/gcc/ada/libgnat/s-carsi8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-carsi8.ads b/gcc/ada/libgnat/s-carsi8.ads index a9ef1c06..b48a07b 100644 --- a/gcc/ada/libgnat/s-carsi8.ads +++ b/gcc/ada/libgnat/s-carsi8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-carun8.adb b/gcc/ada/libgnat/s-carun8.adb index 2c192db..a7d7db9 100644 --- a/gcc/ada/libgnat/s-carun8.adb +++ b/gcc/ada/libgnat/s-carun8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Address_Operations; use System.Address_Operations; with Ada.Unchecked_Conversion; diff --git a/gcc/ada/libgnat/s-carun8.ads b/gcc/ada/libgnat/s-carun8.ads index eeadf61..0c19c30 100644 --- a/gcc/ada/libgnat/s-carun8.ads +++ b/gcc/ada/libgnat/s-carun8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains functions for runtime comparisons on arrays whose -- elements are 8-bit discrete type values to be treated as unsigned. -pragma Compiler_Unit_Warning; - package System.Compare_Array_Unsigned_8 is -- Note: although the functions in this package are in a sense Pure, the diff --git a/gcc/ada/libgnat/s-casi128.adb b/gcc/ada/libgnat/s-casi128.adb index 09d002f..a8a3dd6 100644 --- a/gcc/ada/libgnat/s-casi128.adb +++ b/gcc/ada/libgnat/s-casi128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi128.ads b/gcc/ada/libgnat/s-casi128.ads index d3f1347..01df748 100644 --- a/gcc/ada/libgnat/s-casi128.ads +++ b/gcc/ada/libgnat/s-casi128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi16.adb b/gcc/ada/libgnat/s-casi16.adb index 1889579..3f85086 100644 --- a/gcc/ada/libgnat/s-casi16.adb +++ b/gcc/ada/libgnat/s-casi16.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi16.ads b/gcc/ada/libgnat/s-casi16.ads index 21c7a0e..cb0cebe 100644 --- a/gcc/ada/libgnat/s-casi16.ads +++ b/gcc/ada/libgnat/s-casi16.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi32.adb b/gcc/ada/libgnat/s-casi32.adb index 0515a53..5fe62f1 100644 --- a/gcc/ada/libgnat/s-casi32.adb +++ b/gcc/ada/libgnat/s-casi32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi32.ads b/gcc/ada/libgnat/s-casi32.ads index c591cff..263f8b4 100644 --- a/gcc/ada/libgnat/s-casi32.ads +++ b/gcc/ada/libgnat/s-casi32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi64.adb b/gcc/ada/libgnat/s-casi64.adb index 5b4a1e3..45d9f94 100644 --- a/gcc/ada/libgnat/s-casi64.adb +++ b/gcc/ada/libgnat/s-casi64.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casi64.ads b/gcc/ada/libgnat/s-casi64.ads index 4563124..71632c1 100644 --- a/gcc/ada/libgnat/s-casi64.ads +++ b/gcc/ada/libgnat/s-casi64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-casuti.adb b/gcc/ada/libgnat/s-casuti.adb index 265b7d3..01693e0 100644 --- a/gcc/ada/libgnat/s-casuti.adb +++ b/gcc/ada/libgnat/s-casuti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,10 +29,17 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; +-- Ghost code, loop invariants and assertions in this unit are meant for +-- analysis only, not for run-time checking, as it would be too costly +-- otherwise. This is enforced by setting the assertion policy to Ignore. -package body System.Case_Util is +pragma Assertion_Policy (Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); +package body System.Case_Util + with SPARK_Mode +is -------------- -- To_Lower -- -------------- @@ -55,6 +62,9 @@ package body System.Case_Util is begin for J in A'Range loop A (J) := To_Lower (A (J)); + + pragma Loop_Invariant + (for all K in A'First .. J => A (K) = To_Lower (A'Loop_Entry (K))); end loop; end To_Lower; @@ -80,6 +90,15 @@ package body System.Case_Util is A (J) := To_Lower (A (J)); end if; + pragma Loop_Invariant + (for all K in A'First .. J => + (if K = A'First + or else A'Loop_Entry (K - 1) = '_' + then + A (K) = To_Upper (A'Loop_Entry (K)) + else + A (K) = To_Lower (A'Loop_Entry (K)))); + Ucase := A (J) = '_'; end loop; end To_Mixed; @@ -113,6 +132,9 @@ package body System.Case_Util is begin for J in A'Range loop A (J) := To_Upper (A (J)); + + pragma Loop_Invariant + (for all K in A'First .. J => A (K) = To_Upper (A'Loop_Entry (K))); end loop; end To_Upper; diff --git a/gcc/ada/libgnat/s-casuti.ads b/gcc/ada/libgnat/s-casuti.ads index 5b96edb..1ebc428 100644 --- a/gcc/ada/libgnat/s-casuti.ads +++ b/gcc/ada/libgnat/s-casuti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,34 +34,98 @@ -- This package provides simple casing functions that do not require the -- overhead of the full casing tables found in Ada.Characters.Handling. --- Note that all the routines in this package are available to the user --- via GNAT.Case_Util, which imports all the entities from this package. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. -pragma Compiler_Unit_Warning; - -package System.Case_Util is - pragma Pure; +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); +package System.Case_Util + with Pure, SPARK_Mode +is -- Note: all the following functions handle the full Latin-1 set - function To_Upper (A : Character) return Character; + function To_Upper (A : Character) return Character + with + Post => (declare + A_Val : constant Natural := Character'Pos (A); + begin + (if A in 'a' .. 'z' + or else A_Val in 16#E0# .. 16#F6# + or else A_Val in 16#F8# .. 16#FE# + then + To_Upper'Result = Character'Val (A_Val - 16#20#) + else + To_Upper'Result = A)); -- Converts A to upper case if it is a lower case letter, otherwise -- returns the input argument unchanged. - procedure To_Upper (A : in out String); - function To_Upper (A : String) return String; + procedure To_Upper (A : in out String) + with + Post => (for all J in A'Range => A (J) = To_Upper (A'Old (J))); + + function To_Upper (A : String) return String + with + Post => To_Upper'Result'First = A'First + and then To_Upper'Result'Last = A'Last + and then (for all J in A'Range => + To_Upper'Result (J) = To_Upper (A (J))); -- Folds all characters of string A to upper case - function To_Lower (A : Character) return Character; + function To_Lower (A : Character) return Character + with + Post => (declare + A_Val : constant Natural := Character'Pos (A); + begin + (if A in 'A' .. 'Z' + or else A_Val in 16#C0# .. 16#D6# + or else A_Val in 16#D8# .. 16#DE# + then + To_Lower'Result = Character'Val (A_Val + 16#20#) + else + To_Lower'Result = A)); -- Converts A to lower case if it is an upper case letter, otherwise -- returns the input argument unchanged. - procedure To_Lower (A : in out String); - function To_Lower (A : String) return String; + procedure To_Lower (A : in out String) + with + Post => (for all J in A'Range => A (J) = To_Lower (A'Old (J))); + + function To_Lower (A : String) return String + with + Post => To_Lower'Result'First = A'First + and then To_Lower'Result'Last = A'Last + and then (for all J in A'Range => + To_Lower'Result (J) = To_Lower (A (J))); -- Folds all characters of string A to lower case - procedure To_Mixed (A : in out String); - function To_Mixed (A : String) return String; + procedure To_Mixed (A : in out String) + with + Post => + (for all J in A'Range => + (if J = A'First + or else A'Old (J - 1) = '_' + then + A (J) = To_Upper (A'Old (J)) + else + A (J) = To_Lower (A'Old (J)))); + + function To_Mixed (A : String) return String + with + Post => To_Mixed'Result'First = A'First + and then To_Mixed'Result'Last = A'Last + and then (for all J in A'Range => + (if J = A'First + or else A (J - 1) = '_' + then + To_Mixed'Result (J) = To_Upper (A (J)) + else + To_Mixed'Result (J) = To_Lower (A (J)))); -- Converts A to mixed case (i.e. lower case, except for initial -- character and any character after an underscore, which are -- converted to upper case. diff --git a/gcc/ada/libgnat/s-caun128.adb b/gcc/ada/libgnat/s-caun128.adb index 3cd4e85..6533c70 100644 --- a/gcc/ada/libgnat/s-caun128.adb +++ b/gcc/ada/libgnat/s-caun128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun128.ads b/gcc/ada/libgnat/s-caun128.ads index 30d11ab..1b21a03 100644 --- a/gcc/ada/libgnat/s-caun128.ads +++ b/gcc/ada/libgnat/s-caun128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun16.adb b/gcc/ada/libgnat/s-caun16.adb index 9168ef3..96e667e 100644 --- a/gcc/ada/libgnat/s-caun16.adb +++ b/gcc/ada/libgnat/s-caun16.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun16.ads b/gcc/ada/libgnat/s-caun16.ads index 6175daa..c322c15 100644 --- a/gcc/ada/libgnat/s-caun16.ads +++ b/gcc/ada/libgnat/s-caun16.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun32.adb b/gcc/ada/libgnat/s-caun32.adb index 7d7e7a8..fdaf706 100644 --- a/gcc/ada/libgnat/s-caun32.adb +++ b/gcc/ada/libgnat/s-caun32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun32.ads b/gcc/ada/libgnat/s-caun32.ads index ab7b4f3..0550b6e 100644 --- a/gcc/ada/libgnat/s-caun32.ads +++ b/gcc/ada/libgnat/s-caun32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun64.adb b/gcc/ada/libgnat/s-caun64.adb index 8971a80..cec07fb 100644 --- a/gcc/ada/libgnat/s-caun64.adb +++ b/gcc/ada/libgnat/s-caun64.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-caun64.ads b/gcc/ada/libgnat/s-caun64.ads index d061d7d..de58f07 100644 --- a/gcc/ada/libgnat/s-caun64.ads +++ b/gcc/ada/libgnat/s-caun64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-chepoo.ads b/gcc/ada/libgnat/s-chepoo.ads index 3936715..b081be9 100644 --- a/gcc/ada/libgnat/s-chepoo.ads +++ b/gcc/ada/libgnat/s-chepoo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-commun.adb b/gcc/ada/libgnat/s-commun.adb index 591b4a0..2406ba4 100644 --- a/gcc/ada/libgnat/s-commun.adb +++ b/gcc/ada/libgnat/s-commun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-commun.ads b/gcc/ada/libgnat/s-commun.ads index 7c15d62..43dde0b 100644 --- a/gcc/ada/libgnat/s-commun.ads +++ b/gcc/ada/libgnat/s-commun.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, AdaCore -- +-- Copyright (C) 2001-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-conca2.adb b/gcc/ada/libgnat/s-conca2.adb index 81d6f61..49982f5 100644 --- a/gcc/ada/libgnat/s-conca2.adb +++ b/gcc/ada/libgnat/s-conca2.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.Concat_2 is pragma Suppress (All_Checks); diff --git a/gcc/ada/libgnat/s-conca2.ads b/gcc/ada/libgnat/s-conca2.ads index dc588eb..f9c7393 100644 --- a/gcc/ada/libgnat/s-conca2.ads +++ b/gcc/ada/libgnat/s-conca2.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of two string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_2 is procedure Str_Concat_2 (R : out String; S1, S2 : String); diff --git a/gcc/ada/libgnat/s-conca3.adb b/gcc/ada/libgnat/s-conca3.adb index 37a8681..d607082 100644 --- a/gcc/ada/libgnat/s-conca3.adb +++ b/gcc/ada/libgnat/s-conca3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_2; package body System.Concat_3 is diff --git a/gcc/ada/libgnat/s-conca3.ads b/gcc/ada/libgnat/s-conca3.ads index 155bebf..d7282ff 100644 --- a/gcc/ada/libgnat/s-conca3.ads +++ b/gcc/ada/libgnat/s-conca3.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of three string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_3 is procedure Str_Concat_3 (R : out String; S1, S2, S3 : String); diff --git a/gcc/ada/libgnat/s-conca4.adb b/gcc/ada/libgnat/s-conca4.adb index da50627..694033a 100644 --- a/gcc/ada/libgnat/s-conca4.adb +++ b/gcc/ada/libgnat/s-conca4.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_3; package body System.Concat_4 is diff --git a/gcc/ada/libgnat/s-conca4.ads b/gcc/ada/libgnat/s-conca4.ads index 1d8e15c..88b464d 100644 --- a/gcc/ada/libgnat/s-conca4.ads +++ b/gcc/ada/libgnat/s-conca4.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of four string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_4 is procedure Str_Concat_4 (R : out String; S1, S2, S3, S4 : String); diff --git a/gcc/ada/libgnat/s-conca5.adb b/gcc/ada/libgnat/s-conca5.adb index 0de4aa5..f611260 100644 --- a/gcc/ada/libgnat/s-conca5.adb +++ b/gcc/ada/libgnat/s-conca5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_4; package body System.Concat_5 is diff --git a/gcc/ada/libgnat/s-conca5.ads b/gcc/ada/libgnat/s-conca5.ads index 6193adb..f6b8988 100644 --- a/gcc/ada/libgnat/s-conca5.ads +++ b/gcc/ada/libgnat/s-conca5.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of five string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_5 is procedure Str_Concat_5 (R : out String; S1, S2, S3, S4, S5 : String); diff --git a/gcc/ada/libgnat/s-conca6.adb b/gcc/ada/libgnat/s-conca6.adb index d51201f..66b767f 100644 --- a/gcc/ada/libgnat/s-conca6.adb +++ b/gcc/ada/libgnat/s-conca6.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_5; package body System.Concat_6 is diff --git a/gcc/ada/libgnat/s-conca6.ads b/gcc/ada/libgnat/s-conca6.ads index ee38e69..e753251 100644 --- a/gcc/ada/libgnat/s-conca6.ads +++ b/gcc/ada/libgnat/s-conca6.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of six string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_6 is procedure Str_Concat_6 (R : out String; S1, S2, S3, S4, S5, S6 : String); diff --git a/gcc/ada/libgnat/s-conca7.adb b/gcc/ada/libgnat/s-conca7.adb index 787b4f2..0250887 100644 --- a/gcc/ada/libgnat/s-conca7.adb +++ b/gcc/ada/libgnat/s-conca7.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_6; package body System.Concat_7 is diff --git a/gcc/ada/libgnat/s-conca7.ads b/gcc/ada/libgnat/s-conca7.ads index 74d05dc..c130ddf 100644 --- a/gcc/ada/libgnat/s-conca7.ads +++ b/gcc/ada/libgnat/s-conca7.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of seven string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_7 is procedure Str_Concat_7 diff --git a/gcc/ada/libgnat/s-conca8.adb b/gcc/ada/libgnat/s-conca8.adb index 8e64e46..d6ee36c 100644 --- a/gcc/ada/libgnat/s-conca8.adb +++ b/gcc/ada/libgnat/s-conca8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_7; package body System.Concat_8 is diff --git a/gcc/ada/libgnat/s-conca8.ads b/gcc/ada/libgnat/s-conca8.ads index d739b30..dda35c1 100644 --- a/gcc/ada/libgnat/s-conca8.ads +++ b/gcc/ada/libgnat/s-conca8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of eight string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_8 is procedure Str_Concat_8 diff --git a/gcc/ada/libgnat/s-conca9.adb b/gcc/ada/libgnat/s-conca9.adb index 83456e9..bfe228e 100644 --- a/gcc/ada/libgnat/s-conca9.adb +++ b/gcc/ada/libgnat/s-conca9.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Concat_8; package body System.Concat_9 is diff --git a/gcc/ada/libgnat/s-conca9.ads b/gcc/ada/libgnat/s-conca9.ads index 61d6d6b..7737a1e 100644 --- a/gcc/ada/libgnat/s-conca9.ads +++ b/gcc/ada/libgnat/s-conca9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains a procedure for runtime concatenation of eight string -- operands. It is used when we want to save space in the generated code. -pragma Compiler_Unit_Warning; - package System.Concat_9 is procedure Str_Concat_9 diff --git a/gcc/ada/libgnat/s-crc32.adb b/gcc/ada/libgnat/s-crc32.adb index ea4446a..473ab98 100644 --- a/gcc/ada/libgnat/s-crc32.adb +++ b/gcc/ada/libgnat/s-crc32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.CRC32 is Init : constant CRC32 := 16#FFFF_FFFF#; -- Initial value diff --git a/gcc/ada/libgnat/s-crc32.ads b/gcc/ada/libgnat/s-crc32.ads index b595fc4..4460e70 100644 --- a/gcc/ada/libgnat/s-crc32.ads +++ b/gcc/ada/libgnat/s-crc32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -54,8 +54,6 @@ -- "Computation of Cyclic Redundancy Checks via Table Look-Up", Communications -- of the ACM, Vol. 31 No. 8, pp.1008-1013 Aug. 1988. Sarwate, D.V. -pragma Compiler_Unit_Warning; - with Interfaces; package System.CRC32 is diff --git a/gcc/ada/libgnat/s-crtl.ads b/gcc/ada/libgnat/s-crtl.ads index d26dbf3..0f4384b 100644 --- a/gcc/ada/libgnat/s-crtl.ads +++ b/gcc/ada/libgnat/s-crtl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,6 @@ -- This package provides the low level interface to the C runtime library -pragma Compiler_Unit_Warning; - with System.Parameters; package System.CRTL is diff --git a/gcc/ada/libgnat/s-dfmkio.ads b/gcc/ada/libgnat/s-dfmkio.ads index f9df157..9d56a2d 100644 --- a/gcc/ada/libgnat/s-dfmkio.ads +++ b/gcc/ada/libgnat/s-dfmkio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dfmopr.ads b/gcc/ada/libgnat/s-dfmopr.ads index daf5189..e172ee3 100644 --- a/gcc/ada/libgnat/s-dfmopr.ads +++ b/gcc/ada/libgnat/s-dfmopr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dgmgop.ads b/gcc/ada/libgnat/s-dgmgop.ads index 91b8f3e..daa3ae5 100644 --- a/gcc/ada/libgnat/s-dgmgop.ads +++ b/gcc/ada/libgnat/s-dgmgop.ads @@ -7,7 +7,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-diflio.adb b/gcc/ada/libgnat/s-diflio.adb index 1343e95..a6cbb44 100644 --- a/gcc/ada/libgnat/s-diflio.adb +++ b/gcc/ada/libgnat/s-diflio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-diflio.ads b/gcc/ada/libgnat/s-diflio.ads index 3abe428..b5546d4 100644 --- a/gcc/ada/libgnat/s-diflio.ads +++ b/gcc/ada/libgnat/s-diflio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-diflmk.ads b/gcc/ada/libgnat/s-diflmk.ads index 02db92d..00ffb24 100644 --- a/gcc/ada/libgnat/s-diflmk.ads +++ b/gcc/ada/libgnat/s-diflmk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-digemk.ads b/gcc/ada/libgnat/s-digemk.ads index be97085..0af3a8d 100644 --- a/gcc/ada/libgnat/s-digemk.ads +++ b/gcc/ada/libgnat/s-digemk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-diinio.adb b/gcc/ada/libgnat/s-diinio.adb index 559504e..4abb0c9 100644 --- a/gcc/ada/libgnat/s-diinio.adb +++ b/gcc/ada/libgnat/s-diinio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-diinio.ads b/gcc/ada/libgnat/s-diinio.ads index a79e723..90b850d 100644 --- a/gcc/ada/libgnat/s-diinio.ads +++ b/gcc/ada/libgnat/s-diinio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dilomk.ads b/gcc/ada/libgnat/s-dilomk.ads index 37e101b..a62a9ef 100644 --- a/gcc/ada/libgnat/s-dilomk.ads +++ b/gcc/ada/libgnat/s-dilomk.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dim.ads b/gcc/ada/libgnat/s-dim.ads index 0bcc0da..2c95364 100644 --- a/gcc/ada/libgnat/s-dim.ads +++ b/gcc/ada/libgnat/s-dim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dimkio.ads b/gcc/ada/libgnat/s-dimkio.ads index 186319e..a5f4f48 100644 --- a/gcc/ada/libgnat/s-dimkio.ads +++ b/gcc/ada/libgnat/s-dimkio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dimmks.ads b/gcc/ada/libgnat/s-dimmks.ads index 91176649..a02cf69 100644 --- a/gcc/ada/libgnat/s-dimmks.ads +++ b/gcc/ada/libgnat/s-dimmks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-direio.adb b/gcc/ada/libgnat/s-direio.adb index 8e3740c..8c080c3 100644 --- a/gcc/ada/libgnat/s-direio.adb +++ b/gcc/ada/libgnat/s-direio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,7 +32,6 @@ with Ada.IO_Exceptions; use Ada.IO_Exceptions; with Ada.Unchecked_Deallocation; with Interfaces.C_Streams; use Interfaces.C_Streams; -with System; use System; with System.CRTL; with System.File_IO; with System.Soft_Links; diff --git a/gcc/ada/libgnat/s-direio.ads b/gcc/ada/libgnat/s-direio.ads index 01ffbca..0fc077b 100644 --- a/gcc/ada/libgnat/s-direio.ads +++ b/gcc/ada/libgnat/s-direio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dlmkio.ads b/gcc/ada/libgnat/s-dlmkio.ads index d0b0bb2..0d107c4 100644 --- a/gcc/ada/libgnat/s-dlmkio.ads +++ b/gcc/ada/libgnat/s-dlmkio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dlmopr.ads b/gcc/ada/libgnat/s-dlmopr.ads index 6fe46a5..ab674ab 100644 --- a/gcc/ada/libgnat/s-dlmopr.ads +++ b/gcc/ada/libgnat/s-dlmopr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dmotpr.ads b/gcc/ada/libgnat/s-dmotpr.ads index 458ae52..6c14846 100644 --- a/gcc/ada/libgnat/s-dmotpr.ads +++ b/gcc/ada/libgnat/s-dmotpr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dorepr.adb b/gcc/ada/libgnat/s-dorepr.adb index 9f6df92..941b4fb 100644 --- a/gcc/ada/libgnat/s-dorepr.adb +++ b/gcc/ada/libgnat/s-dorepr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dorepr__fma.adb b/gcc/ada/libgnat/s-dorepr__fma.adb index 56d4dbb..1f8c9ee 100644 --- a/gcc/ada/libgnat/s-dorepr__fma.adb +++ b/gcc/ada/libgnat/s-dorepr__fma.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dourea.adb b/gcc/ada/libgnat/s-dourea.adb index 53bed1d..a6cf2a1 100644 --- a/gcc/ada/libgnat/s-dourea.adb +++ b/gcc/ada/libgnat/s-dourea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dourea.ads b/gcc/ada/libgnat/s-dourea.ads index 0c97f34..29c10d9 100644 --- a/gcc/ada/libgnat/s-dourea.ads +++ b/gcc/ada/libgnat/s-dourea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dsaser.ads b/gcc/ada/libgnat/s-dsaser.ads index da0d17b..d898e52 100644 --- a/gcc/ada/libgnat/s-dsaser.ads +++ b/gcc/ada/libgnat/s-dsaser.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb index e02b0fd..788be41 100644 --- a/gcc/ada/libgnat/s-dwalin.adb +++ b/gcc/ada/libgnat/s-dwalin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,7 +35,6 @@ with Ada.Unchecked_Deallocation; with Interfaces; use Interfaces; -with System; use System; with System.Address_Image; with System.Bounded_Strings; use System.Bounded_Strings; with System.IO; use System.IO; diff --git a/gcc/ada/libgnat/s-dwalin.ads b/gcc/ada/libgnat/s-dwalin.ads index bd86e5e..4148a17 100644 --- a/gcc/ada/libgnat/s-dwalin.ads +++ b/gcc/ada/libgnat/s-dwalin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-elaall.adb b/gcc/ada/libgnat/s-elaall.adb index 5807433..35826d8 100644 --- a/gcc/ada/libgnat/s-elaall.adb +++ b/gcc/ada/libgnat/s-elaall.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-elaall.ads b/gcc/ada/libgnat/s-elaall.ads index 44c1f60..b9a6dd1 100644 --- a/gcc/ada/libgnat/s-elaall.ads +++ b/gcc/ada/libgnat/s-elaall.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-excdeb.adb b/gcc/ada/libgnat/s-excdeb.adb index 2c22ee9..63d3c17 100644 --- a/gcc/ada/libgnat/s-excdeb.adb +++ b/gcc/ada/libgnat/s-excdeb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.Exceptions_Debug is --------------------------- diff --git a/gcc/ada/libgnat/s-excdeb.ads b/gcc/ada/libgnat/s-excdeb.ads index 6c93f4c..3b9b537 100644 --- a/gcc/ada/libgnat/s-excdeb.ads +++ b/gcc/ada/libgnat/s-excdeb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ -- It should be compiled without optimization to let debuggers inspect -- parameter values reliably from breakpoints on the routines. -pragma Compiler_Unit_Warning; - with System.Standard_Library; package System.Exceptions_Debug is diff --git a/gcc/ada/libgnat/s-except.adb b/gcc/ada/libgnat/s-except.adb index fa220b3..dec7ea7 100644 --- a/gcc/ada/libgnat/s-except.adb +++ b/gcc/ada/libgnat/s-except.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-except.ads b/gcc/ada/libgnat/s-except.ads index 10448bc..5404156 100644 --- a/gcc/ada/libgnat/s-except.ads +++ b/gcc/ada/libgnat/s-except.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package System.Exceptions is pragma Preelaborate; diff --git a/gcc/ada/libgnat/s-excmac__arm.adb b/gcc/ada/libgnat/s-excmac__arm.adb index 8dc6974..ff53464 100644 --- a/gcc/ada/libgnat/s-excmac__arm.adb +++ b/gcc/ada/libgnat/s-excmac__arm.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-excmac__arm.ads b/gcc/ada/libgnat/s-excmac__arm.ads index f69690d..9438e26 100644 --- a/gcc/ada/libgnat/s-excmac__arm.ads +++ b/gcc/ada/libgnat/s-excmac__arm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-excmac__gcc.adb b/gcc/ada/libgnat/s-excmac__gcc.adb index 1b03a1b..7cfed83 100644 --- a/gcc/ada/libgnat/s-excmac__gcc.adb +++ b/gcc/ada/libgnat/s-excmac__gcc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-excmac__gcc.ads b/gcc/ada/libgnat/s-excmac__gcc.ads index ffb8ea3..a004d94 100644 --- a/gcc/ada/libgnat/s-excmac__gcc.ads +++ b/gcc/ada/libgnat/s-excmac__gcc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exctab.adb b/gcc/ada/libgnat/s-exctab.adb index 48e3247..44eabfc 100644 --- a/gcc/ada/libgnat/s-exctab.adb +++ b/gcc/ada/libgnat/s-exctab.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Soft_Links; use System.Soft_Links; package body System.Exception_Table is diff --git a/gcc/ada/libgnat/s-exctab.ads b/gcc/ada/libgnat/s-exctab.ads index 0d1774e..07a12c1 100644 --- a/gcc/ada/libgnat/s-exctab.ads +++ b/gcc/ada/libgnat/s-exctab.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ -- registered exception names, for the implementation of the mapping -- of names to exceptions (used for exception streams and attributes) -pragma Compiler_Unit_Warning; - with System.Standard_Library; package System.Exception_Table is diff --git a/gcc/ada/libgnat/s-exctra.adb b/gcc/ada/libgnat/s-exctra.adb index 963f5f9..442d611 100644 --- a/gcc/ada/libgnat/s-exctra.adb +++ b/gcc/ada/libgnat/s-exctra.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exctra.ads b/gcc/ada/libgnat/s-exctra.ads index 6be48fb..a7b81ed 100644 --- a/gcc/ada/libgnat/s-exctra.ads +++ b/gcc/ada/libgnat/s-exctra.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnflt.ads b/gcc/ada/libgnat/s-exnflt.ads index 13079fc..8acf8f0 100644 --- a/gcc/ada/libgnat/s-exnflt.ads +++ b/gcc/ada/libgnat/s-exnflt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnint.adb b/gcc/ada/libgnat/s-exnint.adb index 052dd1c..20775c5 100644 --- a/gcc/ada/libgnat/s-exnint.adb +++ b/gcc/ada/libgnat/s-exnint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnint.ads b/gcc/ada/libgnat/s-exnint.ads index cfdf933..2ac89fd 100644 --- a/gcc/ada/libgnat/s-exnint.ads +++ b/gcc/ada/libgnat/s-exnint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,26 @@ -- Integer exponentiation (checks off) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Exponn; -package System.Exn_Int is +package System.Exn_Int + with SPARK_Mode +is + + package Exponn_Integer is new Exponn (Integer); - function Exn_Integer is new Exponn (Integer); - pragma Pure_Function (Exn_Integer); + function Exn_Integer (Left : Integer; Right : Natural) return Integer + renames Exponn_Integer.Expon; end System.Exn_Int; diff --git a/gcc/ada/libgnat/s-exnlfl.ads b/gcc/ada/libgnat/s-exnlfl.ads index 58d4a4c..bedb1f7 100644 --- a/gcc/ada/libgnat/s-exnlfl.ads +++ b/gcc/ada/libgnat/s-exnlfl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnllf.adb b/gcc/ada/libgnat/s-exnllf.adb index 2186c6d..c278e83 100644 --- a/gcc/ada/libgnat/s-exnllf.adb +++ b/gcc/ada/libgnat/s-exnllf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnllf.ads b/gcc/ada/libgnat/s-exnllf.ads index 2b02a65..9426035 100644 --- a/gcc/ada/libgnat/s-exnllf.ads +++ b/gcc/ada/libgnat/s-exnllf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnlli.adb b/gcc/ada/libgnat/s-exnlli.adb index 4fdcf89..b7f8194 100644 --- a/gcc/ada/libgnat/s-exnlli.adb +++ b/gcc/ada/libgnat/s-exnlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exnlli.ads b/gcc/ada/libgnat/s-exnlli.ads index 4a54344..80118d0 100644 --- a/gcc/ada/libgnat/s-exnlli.ads +++ b/gcc/ada/libgnat/s-exnlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,27 @@ -- Long_Long_Integer exponentiation (checks off) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Exponn; -package System.Exn_LLI is +package System.Exn_LLI + with SPARK_Mode +is + + package Exponn_Integer is new Exponn (Long_Long_Integer); - function Exn_Long_Long_Integer is new Exponn (Long_Long_Integer); - pragma Pure_Function (Exn_Long_Long_Integer); + function Exn_Long_Long_Integer + (Left : Long_Long_Integer; Right : Natural) return Long_Long_Integer + renames Exponn_Integer.Expon; end System.Exn_LLI; diff --git a/gcc/ada/libgnat/s-exnllli.ads b/gcc/ada/libgnat/s-exnllli.ads index 06a9784..61b515b 100644 --- a/gcc/ada/libgnat/s-exnllli.ads +++ b/gcc/ada/libgnat/s-exnllli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,28 @@ -- Long_Long_Long_Integer exponentiation (checks off) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Exponn; -package System.Exn_LLLI is +package System.Exn_LLLI + with SPARK_Mode +is + + package Exponn_Integer is new Exponn (Long_Long_Long_Integer); - function Exn_Long_Long_Long_Integer is new Exponn (Long_Long_Long_Integer); - pragma Pure_Function (Exn_Long_Long_Long_Integer); + function Exn_Long_Long_Long_Integer + (Left : Long_Long_Long_Integer; Right : Natural) + return Long_Long_Long_Integer + renames Exponn_Integer.Expon; end System.Exn_LLLI; diff --git a/gcc/ada/libgnat/s-expint.adb b/gcc/ada/libgnat/s-expint.adb index b19a72f..f451693 100644 --- a/gcc/ada/libgnat/s-expint.adb +++ b/gcc/ada/libgnat/s-expint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-expint.ads b/gcc/ada/libgnat/s-expint.ads index f41b6fa..500495a 100644 --- a/gcc/ada/libgnat/s-expint.ads +++ b/gcc/ada/libgnat/s-expint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,26 @@ -- Integer exponentiation (checks on) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Expont; -package System.Exp_Int is +package System.Exp_Int + with SPARK_Mode +is + + package Expont_Integer is new Expont (Integer); - function Exp_Integer is new Expont (Integer); - pragma Pure_Function (Exp_Integer); + function Exp_Integer (Left : Integer; Right : Natural) return Integer + renames Expont_Integer.Expon; end System.Exp_Int; diff --git a/gcc/ada/libgnat/s-explli.adb b/gcc/ada/libgnat/s-explli.adb index ccfbec0..283cad6 100644 --- a/gcc/ada/libgnat/s-explli.adb +++ b/gcc/ada/libgnat/s-explli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-explli.ads b/gcc/ada/libgnat/s-explli.ads index d9c8544..f8f2c10 100644 --- a/gcc/ada/libgnat/s-explli.ads +++ b/gcc/ada/libgnat/s-explli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,27 @@ -- Long_Long_Integer exponentiation (checks on) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Expont; -package System.Exp_LLI is +package System.Exp_LLI + with SPARK_Mode +is + + package Expont_Integer is new Expont (Long_Long_Integer); - function Exp_Long_Long_Integer is new Expont (Long_Long_Integer); - pragma Pure_Function (Exp_Long_Long_Integer); + function Exp_Long_Long_Integer + (Left : Long_Long_Integer; Right : Natural) return Long_Long_Integer + renames Expont_Integer.Expon; end System.Exp_LLI; diff --git a/gcc/ada/libgnat/s-expllli.ads b/gcc/ada/libgnat/s-expllli.ads index 1ee278d..017efec 100644 --- a/gcc/ada/libgnat/s-expllli.ads +++ b/gcc/ada/libgnat/s-expllli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,11 +31,28 @@ -- Long_Long_Long_Integer exponentiation (checks on) +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with System.Expont; -package System.Exp_LLLI is +package System.Exp_LLLI + with SPARK_Mode +is + + package Expont_Integer is new Expont (Long_Long_Long_Integer); - function Exp_Long_Long_Long_Integer is new Expont (Long_Long_Long_Integer); - pragma Pure_Function (Exp_Long_Long_Long_Integer); + function Exp_Long_Long_Long_Integer + (Left : Long_Long_Long_Integer; Right : Natural) + return Long_Long_Long_Integer + renames Expont_Integer.Expon; end System.Exp_LLLI; diff --git a/gcc/ada/libgnat/s-explllu.ads b/gcc/ada/libgnat/s-explllu.ads index 5a54ada..9b2d978 100644 --- a/gcc/ada/libgnat/s-explllu.ads +++ b/gcc/ada/libgnat/s-explllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,10 +34,23 @@ -- The result is always full width, the caller must do a masking operation if -- the modulus is less than 2 ** Long_Long_Long_Unsigned'Size. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + with System.Exponu; with System.Unsigned_Types; -package System.Exp_LLLU is +package System.Exp_LLLU + with SPARK_Mode +is subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned; diff --git a/gcc/ada/libgnat/s-expllu.adb b/gcc/ada/libgnat/s-expllu.adb index 0c46560..c6003f5 100644 --- a/gcc/ada/libgnat/s-expllu.adb +++ b/gcc/ada/libgnat/s-expllu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-expllu.ads b/gcc/ada/libgnat/s-expllu.ads index 9f7b404..3b2a1b1 100644 --- a/gcc/ada/libgnat/s-expllu.ads +++ b/gcc/ada/libgnat/s-expllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,10 +34,23 @@ -- The result is always full width, the caller must do a masking operation if -- the modulus is less than 2 ** Long_Long_Unsigned'Size. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + with System.Exponu; with System.Unsigned_Types; -package System.Exp_LLU is +package System.Exp_LLU + with SPARK_Mode +is subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned; diff --git a/gcc/ada/libgnat/s-expmod.adb b/gcc/ada/libgnat/s-expmod.adb index d3465d9..60d86e5 100644 --- a/gcc/ada/libgnat/s-expmod.adb +++ b/gcc/ada/libgnat/s-expmod.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,9 +29,168 @@ -- -- ------------------------------------------------------------------------------ -package body System.Exp_Mod is +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + +with Ada.Numerics.Big_Numbers.Big_Integers_Ghost; +use Ada.Numerics.Big_Numbers.Big_Integers_Ghost; + +package body System.Exp_Mod + with SPARK_Mode +is use System.Unsigned_Types; + -- Local lemmas + + procedure Lemma_Add_Mod (X, Y : Big_Natural; B : Big_Positive) + with + Ghost, + Post => (X + Y) mod B = ((X mod B) + (Y mod B)) mod B; + + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) + with + Ghost, + Post => + (if Exp rem 2 = 0 then + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) + else + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + + procedure Lemma_Exp_Mod (A : Big_Natural; Exp : Natural; B : Big_Positive) + with + Ghost, + Subprogram_Variant => (Decreases => Exp), + Post => ((A mod B) ** Exp) mod B = (A ** Exp) mod B; + + procedure Lemma_Mod_Ident (A : Big_Natural; B : Big_Positive) + with + Ghost, + Pre => A < B, + Post => A mod B = A; + + procedure Lemma_Mod_Mod (A : Big_Integer; B : Big_Positive) + with + Ghost, + Post => A mod B mod B = A mod B; + + procedure Lemma_Mult_Div (X : Big_Natural; Y : Big_Positive) + with + Ghost, + Post => X * Y / Y = X; + + procedure Lemma_Mult_Mod (X, Y : Big_Natural; B : Big_Positive) + with + Ghost, + -- The following subprogram variant can be added as soon as supported + -- Subprogram_Variant => (Decreases => Y), + Post => (X * Y) mod B = ((X mod B) * (Y mod B)) mod B; + + ----------------------------- + -- Local lemma null bodies -- + ----------------------------- + + procedure Lemma_Mod_Ident (A : Big_Natural; B : Big_Positive) is null; + procedure Lemma_Mod_Mod (A : Big_Integer; B : Big_Positive) is null; + procedure Lemma_Mult_Div (X : Big_Natural; Y : Big_Positive) is null; + + ------------------- + -- Lemma_Add_Mod -- + ------------------- + + procedure Lemma_Add_Mod (X, Y : Big_Natural; B : Big_Positive) is + Left : constant Big_Natural := (X + Y) mod B; + Right : constant Big_Natural := ((X mod B) + (Y mod B)) mod B; + XQuot : constant Big_Natural := X / B; + YQuot : constant Big_Natural := Y / B; + AQuot : constant Big_Natural := (X mod B + Y mod B) / B; + begin + if Y /= 0 and B > 1 then + pragma Assert (X = XQuot * B + X mod B); + pragma Assert (Y = YQuot * B + Y mod B); + pragma Assert + (Left = ((XQuot + YQuot) * B + X mod B + Y mod B) mod B); + pragma Assert (X mod B + Y mod B = AQuot * B + Right); + pragma Assert (Left = ((XQuot + YQuot + AQuot) * B + Right) mod B); + pragma Assert (Left = Right); + end if; + end Lemma_Add_Mod; + + ---------------------- + -- Lemma_Exp_Expand -- + ---------------------- + + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) is + begin + if Exp rem 2 = 0 then + pragma Assert (Exp = Exp / 2 + Exp / 2); + else + pragma Assert (Exp = Exp / 2 + Exp / 2 + 1); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2 + 1)); + pragma Assert (A ** (Exp / 2 + 1) = A ** (Exp / 2) * A); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + end if; + end Lemma_Exp_Expand; + + ------------------- + -- Lemma_Exp_Mod -- + ------------------- + + procedure Lemma_Exp_Mod (A : Big_Natural; Exp : Natural; B : Big_Positive) + is + begin + if Exp /= 0 then + declare + Left : constant Big_Integer := ((A mod B) ** Exp) mod B; + Right : constant Big_Integer := (A ** Exp) mod B; + begin + Lemma_Mult_Mod (A mod B, (A mod B) ** (Exp - 1), B); + Lemma_Mod_Mod (A, B); + Lemma_Exp_Mod (A, Exp - 1, B); + Lemma_Mult_Mod (A, A ** (Exp - 1), B); + pragma Assert (Left = Right); + end; + end if; + end Lemma_Exp_Mod; + + -------------------- + -- Lemma_Mult_Mod -- + -------------------- + + procedure Lemma_Mult_Mod (X, Y : Big_Natural; B : Big_Positive) is + Left : constant Big_Natural := (X * Y) mod B; + Right : constant Big_Natural := ((X mod B) * (Y mod B)) mod B; + begin + if Y /= 0 and B > 1 then + Lemma_Add_Mod (X * (Y - 1), X, B); + Lemma_Mult_Mod (X, Y - 1, B); + Lemma_Mod_Mod (X, B); + Lemma_Add_Mod ((X mod B) * ((Y - 1) mod B), X mod B, B); + Lemma_Add_Mod (Y - 1, 1, B); + pragma Assert (((Y - 1) mod B + 1) mod B = Y mod B); + if (Y - 1) mod B + 1 < B then + Lemma_Mod_Ident ((Y - 1) mod B + 1, B); + Lemma_Mod_Mod ((X mod B) * (Y mod B), B); + pragma Assert (Left = Right); + else + pragma Assert (Y mod B = 0); + pragma Assert ((X * Y) mod B = (X * Y) - (X * Y) / B * B); + pragma Assert + ((X * Y) mod B = (X * Y) - (X * (Y / B) * B) / B * B); + Lemma_Mult_Div (X * (Y / B), B); + pragma Assert (Left = 0); + pragma Assert (Left = Right); + end if; + end if; + end Lemma_Mult_Mod; + ----------------- -- Exp_Modular -- ----------------- @@ -47,11 +206,36 @@ package body System.Exp_Mod is function Mult (X, Y : Unsigned) return Unsigned is (Unsigned (Long_Long_Unsigned (X) * Long_Long_Unsigned (Y) - mod Long_Long_Unsigned (Modulus))); + mod Long_Long_Unsigned (Modulus))) + with + Pre => Modulus /= 0; -- Modular multiplication. Note that we can't take advantage of the -- compiler's circuit, because the modulus is not known statically. + -- Local ghost variables, functions and lemmas + + M : constant Big_Positive := Big (Modulus) with Ghost; + + function Equal_Modulo (X, Y : Big_Integer) return Boolean is + (X mod M = Y mod M) + with + Ghost, + Pre => Modulus /= 0; + + procedure Lemma_Mult (X, Y : Unsigned) + with + Ghost, + Post => Big (Mult (X, Y)) = (Big (X) * Big (Y)) mod M + and then Big (Mult (X, Y)) < M; + + procedure Lemma_Mult (X, Y : Unsigned) is null; + + Rest : Big_Integer with Ghost; + -- Ghost variable to hold Factor**Exp between Exp and Factor updates + begin + pragma Assert (Modulus /= 1); + -- We use the standard logarithmic approach, Exp gets shifted right -- testing successive low order bits and Factor is the value of the -- base raised to the next power of 2. @@ -62,14 +246,69 @@ package body System.Exp_Mod is if Exp /= 0 then loop + pragma Loop_Invariant (Exp > 0); + pragma Loop_Invariant (Result < Modulus); + pragma Loop_Invariant (Equal_Modulo + (Big (Result) * Big (Factor) ** Exp, Big (Left) ** Right)); + pragma Loop_Variant (Decreases => Exp); + pragma Annotate + (CodePeer, False_Positive, + "validity check", "confusion on generated code"); + if Exp rem 2 /= 0 then + pragma Assert + (Big (Factor) ** Exp + = Big (Factor) * Big (Factor) ** (Exp - 1)); + pragma Assert (Equal_Modulo + ((Big (Result) * Big (Factor)) * Big (Factor) ** (Exp - 1), + Big (Left) ** Right)); + Lemma_Mult_Mod (Big (Result) * Big (Factor), + Big (Factor) ** (Exp - 1), + Big (Modulus)); + Lemma_Mult (Result, Factor); + Result := Mult (Result, Factor); + + Lemma_Mod_Ident (Big (Result), Big (Modulus)); + Lemma_Mod_Mod (Big (Factor) ** (Exp - 1), Big (Modulus)); + Lemma_Mult_Mod (Big (Result), + Big (Factor) ** (Exp - 1), + Big (Modulus)); + pragma Assert (Equal_Modulo + (Big (Result) * Big (Factor) ** (Exp - 1), + Big (Left) ** Right)); + Lemma_Exp_Expand (Big (Factor), Exp - 1); + pragma Assert (Exp / 2 = (Exp - 1) / 2); end if; + Lemma_Exp_Expand (Big (Factor), Exp); + Exp := Exp / 2; exit when Exp = 0; + + Rest := Big (Factor) ** Exp; + pragma Assert (Equal_Modulo + (Big (Result) * (Rest * Rest), Big (Left) ** Right)); + Lemma_Exp_Mod (Big (Factor) * Big (Factor), Exp, Big (Modulus)); + pragma Assert + ((Big (Factor) * Big (Factor)) ** Exp = Rest * Rest); + pragma Assert (Equal_Modulo + ((Big (Factor) * Big (Factor)) ** Exp, + Rest * Rest)); + Lemma_Mult (Factor, Factor); + Factor := Mult (Factor, Factor); + + Lemma_Mod_Mod (Rest * Rest, Big (Modulus)); + Lemma_Mod_Ident (Big (Result), Big (Modulus)); + Lemma_Mult_Mod (Big (Result), Rest * Rest, Big (Modulus)); + Lemma_Mult_Mod (Big (Result), Big (Factor) ** Exp, + Big (Modulus)); + pragma Assert (Equal_Modulo + (Big (Result) * Big (Factor) ** Exp, Big (Left) ** Right)); end loop; + + pragma Assert (Big (Result) = Big (Left) ** Right mod Big (Modulus)); end if; return Result; diff --git a/gcc/ada/libgnat/s-expmod.ads b/gcc/ada/libgnat/s-expmod.ads index aa87efc..7e9d7bc 100644 --- a/gcc/ada/libgnat/s-expmod.ads +++ b/gcc/ada/libgnat/s-expmod.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,22 +35,50 @@ -- Note that 1 is a binary modulus (2**0), so the compiler should not (and -- will not) call this function with Modulus equal to 1. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + +with Ada.Numerics.Big_Numbers.Big_Integers_Ghost; + with System.Unsigned_Types; -package System.Exp_Mod is - pragma Pure; +package System.Exp_Mod + with Pure, SPARK_Mode +is use type System.Unsigned_Types.Unsigned; + subtype Unsigned is System.Unsigned_Types.Unsigned; + + use type Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Big_Integer; + subtype Big_Integer is + Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Big_Integer + with Ghost; + + package Unsigned_Conversion is + new Ada.Numerics.Big_Numbers.Big_Integers_Ghost.Unsigned_Conversions + (Int => Unsigned); + + function Big (Arg : Unsigned) return Big_Integer is + (Unsigned_Conversion.To_Big_Integer (Arg)) + with Ghost; - subtype Power_Of_2 is System.Unsigned_Types.Unsigned with + subtype Power_Of_2 is Unsigned with Dynamic_Predicate => Power_Of_2 /= 0 and then (Power_Of_2 and (Power_Of_2 - 1)) = 0; function Exp_Modular - (Left : System.Unsigned_Types.Unsigned; - Modulus : System.Unsigned_Types.Unsigned; - Right : Natural) return System.Unsigned_Types.Unsigned + (Left : Unsigned; + Modulus : Unsigned; + Right : Natural) return Unsigned with - Pre => Modulus /= 0 and then Modulus not in Power_Of_2, - Post => Exp_Modular'Result = Left ** Right mod Modulus; + Pre => Modulus /= 0 and then Modulus not in Power_Of_2, + Post => Big (Exp_Modular'Result) = Big (Left) ** Right mod Big (Modulus); end System.Exp_Mod; diff --git a/gcc/ada/libgnat/s-exponn.adb b/gcc/ada/libgnat/s-exponn.adb index 8a1cd78..0d0a16b 100644 --- a/gcc/ada/libgnat/s-exponn.adb +++ b/gcc/ada/libgnat/s-exponn.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,44 +29,195 @@ -- -- ------------------------------------------------------------------------------ -function System.Exponn (Left : Int; Right : Natural) return Int is +package body System.Exponn + with SPARK_Mode +is - -- Note that negative exponents get a constraint error because the - -- subtype of the Right argument (the exponent) is Natural. + -- Preconditions, postconditions, ghost code, loop invariants and + -- assertions in this unit are meant for analysis only, not for run-time + -- checking, as it would be too costly otherwise. This is enforced by + -- setting the assertion policy to Ignore. - Result : Int := 1; - Factor : Int := Left; - Exp : Natural := Right; + pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); -begin - -- We use the standard logarithmic approach, Exp gets shifted right - -- testing successive low order bits and Factor is the value of the - -- base raised to the next power of 2. + -- Local lemmas - -- Note: it is not worth special casing base values -1, 0, +1 since - -- the expander does this when the base is a literal, and other cases - -- will be extremely rare. + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0, + Post => + (if Exp rem 2 = 0 then + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) + else + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + + procedure Lemma_Exp_In_Range (A : Big_Integer; Exp : Positive) + with + Ghost, + Pre => In_Int_Range (A ** Exp * A ** Exp), + Post => In_Int_Range (A * A); + + procedure Lemma_Exp_Not_Zero (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0, + Post => A ** Exp /= 0; + + procedure Lemma_Exp_Positive (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0 + and then Exp rem 2 = 0, + Post => A ** Exp > 0; + + procedure Lemma_Mult_In_Range (X, Y, Z : Big_Integer) + with + Ghost, + Pre => Y /= 0 + and then not (X = -Big (Int'First) and Y = -1) + and then X * Y = Z + and then In_Int_Range (Z), + Post => In_Int_Range (X); + + ----------------------------- + -- Local lemma null bodies -- + ----------------------------- + + procedure Lemma_Exp_Not_Zero (A : Big_Integer; Exp : Natural) is null; + procedure Lemma_Mult_In_Range (X, Y, Z : Big_Integer) is null; + + ----------- + -- Expon -- + ----------- + + function Expon (Left : Int; Right : Natural) return Int is + + -- Note that negative exponents get a constraint error because the + -- subtype of the Right argument (the exponent) is Natural. + + Result : Int := 1; + Factor : Int := Left; + Exp : Natural := Right; + + Rest : Big_Integer with Ghost; + -- Ghost variable to hold Factor**Exp between Exp and Factor updates + + begin + -- We use the standard logarithmic approach, Exp gets shifted right + -- testing successive low order bits and Factor is the value of the + -- base raised to the next power of 2. + + -- Note: for compilation only, it is not worth special casing base + -- values -1, 0, +1 since the expander does this when the base is a + -- literal, and other cases will be extremely rare. But for proof, + -- special casing zero in both positions makes ghost code and lemmas + -- simpler, so we do it. + + if Right = 0 then + return 1; + elsif Left = 0 then + return 0; + end if; - if Exp /= 0 then loop + pragma Loop_Invariant (Exp > 0); + pragma Loop_Invariant (Factor /= 0); + pragma Loop_Invariant + (Big (Result) * Big (Factor) ** Exp = Big (Left) ** Right); + pragma Loop_Variant (Decreases => Exp); + if Exp rem 2 /= 0 then declare pragma Suppress (Overflow_Check); begin + pragma Assert + (Big (Factor) ** Exp + = Big (Factor) * Big (Factor) ** (Exp - 1)); + Lemma_Exp_Positive (Big (Factor), Exp - 1); + Lemma_Mult_In_Range (Big (Result) * Big (Factor), + Big (Factor) ** (Exp - 1), + Big (Left) ** Right); + Result := Result * Factor; end; end if; + Lemma_Exp_Expand (Big (Factor), Exp); + Exp := Exp / 2; exit when Exp = 0; + Rest := Big (Factor) ** Exp; + pragma Assert + (Big (Result) * (Rest * Rest) = Big (Left) ** Right); + declare pragma Suppress (Overflow_Check); begin + Lemma_Mult_In_Range (Rest * Rest, + Big (Result), + Big (Left) ** Right); + Lemma_Exp_In_Range (Big (Factor), Exp); + Factor := Factor * Factor; end; + + pragma Assert (Big (Factor) ** Exp = Rest * Rest); end loop; - end if; - return Result; + pragma Assert (Big (Result) = Big (Left) ** Right); + + return Result; + end Expon; + + ---------------------- + -- Lemma_Exp_Expand -- + ---------------------- + + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) is + begin + if Exp rem 2 = 0 then + pragma Assert (Exp = Exp / 2 + Exp / 2); + else + pragma Assert (Exp = Exp / 2 + Exp / 2 + 1); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2 + 1)); + pragma Assert (A ** (Exp / 2 + 1) = A ** (Exp / 2) * A); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + end if; + end Lemma_Exp_Expand; + + ------------------------ + -- Lemma_Exp_In_Range -- + ------------------------ + + procedure Lemma_Exp_In_Range (A : Big_Integer; Exp : Positive) is + begin + if A /= 0 and Exp /= 1 then + pragma Assert (A ** Exp = A * A ** (Exp - 1)); + Lemma_Mult_In_Range + (A * A, A ** (Exp - 1) * A ** (Exp - 1), A ** Exp * A ** Exp); + end if; + end Lemma_Exp_In_Range; + + ------------------------ + -- Lemma_Exp_Positive -- + ------------------------ + + procedure Lemma_Exp_Positive (A : Big_Integer; Exp : Natural) is + begin + if Exp = 0 then + pragma Assert (A ** Exp = 1); + else + pragma Assert (Exp = 2 * (Exp / 2)); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2)); + pragma Assert (A ** Exp = (A ** (Exp / 2)) ** 2); + Lemma_Exp_Not_Zero (A, Exp / 2); + end if; + end Lemma_Exp_Positive; + end System.Exponn; diff --git a/gcc/ada/libgnat/s-exponn.ads b/gcc/ada/libgnat/s-exponn.ads index c95b0ed..2c95f60 100644 --- a/gcc/ada/libgnat/s-exponn.ads +++ b/gcc/ada/libgnat/s-exponn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,41 @@ -- Signed integer exponentiation (checks off) +with Ada.Numerics.Big_Numbers.Big_Integers_Ghost; +use Ada.Numerics.Big_Numbers.Big_Integers_Ghost; + generic type Int is range <>; -function System.Exponn (Left : Int; Right : Natural) return Int; +package System.Exponn + with Pure, SPARK_Mode +is + + -- Preconditions in this unit are meant for analysis only, not for run-time + -- checking, so that the expected exceptions are raised. This is enforced + -- by setting the corresponding assertion policy to Ignore. Postconditions + -- and contract cases should not be executed at runtime as well, in order + -- not to slow down the execution of these functions. + + pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + + package Signed_Conversion is new Signed_Conversions (Int => Int); + + function Big (Arg : Int) return Big_Integer is + (Signed_Conversion.To_Big_Integer (Arg)) + with Ghost; + + function In_Int_Range (Arg : Big_Integer) return Boolean is + (In_Range (Arg, Big (Int'First), Big (Int'Last))) + with Ghost; + + function Expon (Left : Int; Right : Natural) return Int + with + Pre => In_Int_Range (Big (Left) ** Right), + Post => Expon'Result = Left ** Right; + +end System.Exponn; diff --git a/gcc/ada/libgnat/s-exponr.adb b/gcc/ada/libgnat/s-exponr.adb index ad7f401..f6bab2f 100644 --- a/gcc/ada/libgnat/s-exponr.adb +++ b/gcc/ada/libgnat/s-exponr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-exponr.ads b/gcc/ada/libgnat/s-exponr.ads index e5bdec7..6b201d0 100644 --- a/gcc/ada/libgnat/s-exponr.ads +++ b/gcc/ada/libgnat/s-exponr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-expont.adb b/gcc/ada/libgnat/s-expont.adb index 3c259cf..4f576b8 100644 --- a/gcc/ada/libgnat/s-expont.adb +++ b/gcc/ada/libgnat/s-expont.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,44 +29,195 @@ -- -- ------------------------------------------------------------------------------ -function System.Expont (Left : Int; Right : Natural) return Int is +package body System.Expont + with SPARK_Mode +is - -- Note that negative exponents get a constraint error because the - -- subtype of the Right argument (the exponent) is Natural. + -- Preconditions, postconditions, ghost code, loop invariants and + -- assertions in this unit are meant for analysis only, not for run-time + -- checking, as it would be too costly otherwise. This is enforced by + -- setting the assertion policy to Ignore. - Result : Int := 1; - Factor : Int := Left; - Exp : Natural := Right; + pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); -begin - -- We use the standard logarithmic approach, Exp gets shifted right - -- testing successive low order bits and Factor is the value of the - -- base raised to the next power of 2. + -- Local lemmas - -- Note: it is not worth special casing base values -1, 0, +1 since - -- the expander does this when the base is a literal, and other cases - -- will be extremely rare. + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0, + Post => + (if Exp rem 2 = 0 then + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) + else + A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + + procedure Lemma_Exp_In_Range (A : Big_Integer; Exp : Positive) + with + Ghost, + Pre => In_Int_Range (A ** Exp * A ** Exp), + Post => In_Int_Range (A * A); + + procedure Lemma_Exp_Not_Zero (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0, + Post => A ** Exp /= 0; + + procedure Lemma_Exp_Positive (A : Big_Integer; Exp : Natural) + with + Ghost, + Pre => A /= 0 + and then Exp rem 2 = 0, + Post => A ** Exp > 0; + + procedure Lemma_Mult_In_Range (X, Y, Z : Big_Integer) + with + Ghost, + Pre => Y /= 0 + and then not (X = -Big (Int'First) and Y = -1) + and then X * Y = Z + and then In_Int_Range (Z), + Post => In_Int_Range (X); + + ----------------------------- + -- Local lemma null bodies -- + ----------------------------- + + procedure Lemma_Exp_Not_Zero (A : Big_Integer; Exp : Natural) is null; + procedure Lemma_Mult_In_Range (X, Y, Z : Big_Integer) is null; + + ----------- + -- Expon -- + ----------- + + function Expon (Left : Int; Right : Natural) return Int is + + -- Note that negative exponents get a constraint error because the + -- subtype of the Right argument (the exponent) is Natural. + + Result : Int := 1; + Factor : Int := Left; + Exp : Natural := Right; + + Rest : Big_Integer with Ghost; + -- Ghost variable to hold Factor**Exp between Exp and Factor updates + + begin + -- We use the standard logarithmic approach, Exp gets shifted right + -- testing successive low order bits and Factor is the value of the + -- base raised to the next power of 2. + + -- Note: for compilation only, it is not worth special casing base + -- values -1, 0, +1 since the expander does this when the base is a + -- literal, and other cases will be extremely rare. But for proof, + -- special casing zero in both positions makes ghost code and lemmas + -- simpler, so we do it. + + if Right = 0 then + return 1; + elsif Left = 0 then + return 0; + end if; - if Exp /= 0 then loop + pragma Loop_Invariant (Exp > 0); + pragma Loop_Invariant (Factor /= 0); + pragma Loop_Invariant + (Big (Result) * Big (Factor) ** Exp = Big (Left) ** Right); + pragma Loop_Variant (Decreases => Exp); + if Exp rem 2 /= 0 then declare pragma Unsuppress (Overflow_Check); begin + pragma Assert + (Big (Factor) ** Exp + = Big (Factor) * Big (Factor) ** (Exp - 1)); + Lemma_Exp_Positive (Big (Factor), Exp - 1); + Lemma_Mult_In_Range (Big (Result) * Big (Factor), + Big (Factor) ** (Exp - 1), + Big (Left) ** Right); + Result := Result * Factor; end; end if; + Lemma_Exp_Expand (Big (Factor), Exp); + Exp := Exp / 2; exit when Exp = 0; + Rest := Big (Factor) ** Exp; + pragma Assert + (Big (Result) * (Rest * Rest) = Big (Left) ** Right); + declare pragma Unsuppress (Overflow_Check); begin + Lemma_Mult_In_Range (Rest * Rest, + Big (Result), + Big (Left) ** Right); + Lemma_Exp_In_Range (Big (Factor), Exp); + Factor := Factor * Factor; end; + + pragma Assert (Big (Factor) ** Exp = Rest * Rest); end loop; - end if; - return Result; + pragma Assert (Big (Result) = Big (Left) ** Right); + + return Result; + end Expon; + + ---------------------- + -- Lemma_Exp_Expand -- + ---------------------- + + procedure Lemma_Exp_Expand (A : Big_Integer; Exp : Natural) is + begin + if Exp rem 2 = 0 then + pragma Assert (Exp = Exp / 2 + Exp / 2); + else + pragma Assert (Exp = Exp / 2 + Exp / 2 + 1); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2 + 1)); + pragma Assert (A ** (Exp / 2 + 1) = A ** (Exp / 2) * A); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2) * A); + end if; + end Lemma_Exp_Expand; + + ------------------------ + -- Lemma_Exp_In_Range -- + ------------------------ + + procedure Lemma_Exp_In_Range (A : Big_Integer; Exp : Positive) is + begin + if A /= 0 and Exp /= 1 then + pragma Assert (A ** Exp = A * A ** (Exp - 1)); + Lemma_Mult_In_Range + (A * A, A ** (Exp - 1) * A ** (Exp - 1), A ** Exp * A ** Exp); + end if; + end Lemma_Exp_In_Range; + + ------------------------ + -- Lemma_Exp_Positive -- + ------------------------ + + procedure Lemma_Exp_Positive (A : Big_Integer; Exp : Natural) is + begin + if Exp = 0 then + pragma Assert (A ** Exp = 1); + else + pragma Assert (Exp = 2 * (Exp / 2)); + pragma Assert (A ** Exp = A ** (Exp / 2) * A ** (Exp / 2)); + pragma Assert (A ** Exp = (A ** (Exp / 2)) ** 2); + Lemma_Exp_Not_Zero (A, Exp / 2); + end if; + end Lemma_Exp_Positive; + end System.Expont; diff --git a/gcc/ada/libgnat/s-expont.ads b/gcc/ada/libgnat/s-expont.ads index 022cb64..7ca43ab 100644 --- a/gcc/ada/libgnat/s-expont.ads +++ b/gcc/ada/libgnat/s-expont.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,41 @@ -- Signed integer exponentiation (checks on) +with Ada.Numerics.Big_Numbers.Big_Integers_Ghost; +use Ada.Numerics.Big_Numbers.Big_Integers_Ghost; + generic type Int is range <>; -function System.Expont (Left : Int; Right : Natural) return Int; +package System.Expont + with Pure, SPARK_Mode +is + + -- Preconditions in this unit are meant for analysis only, not for run-time + -- checking, so that the expected exceptions are raised. This is enforced + -- by setting the corresponding assertion policy to Ignore. Postconditions + -- and contract cases should not be executed at runtime as well, in order + -- not to slow down the execution of these functions. + + pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + + package Signed_Conversion is new Signed_Conversions (Int => Int); + + function Big (Arg : Int) return Big_Integer is + (Signed_Conversion.To_Big_Integer (Arg)) + with Ghost; + + function In_Int_Range (Arg : Big_Integer) return Boolean is + (In_Range (Arg, Big (Int'First), Big (Int'Last))) + with Ghost; + + function Expon (Left : Int; Right : Natural) return Int + with + Pre => In_Int_Range (Big (Left) ** Right), + Post => Expon'Result = Left ** Right; + +end System.Expont; diff --git a/gcc/ada/libgnat/s-exponu.adb b/gcc/ada/libgnat/s-exponu.adb index 9525638..214e613 100644 --- a/gcc/ada/libgnat/s-exponu.adb +++ b/gcc/ada/libgnat/s-exponu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,19 @@ -- -- ------------------------------------------------------------------------------ -function System.Exponu (Left : Int; Right : Natural) return Int is +function System.Exponu (Left : Int; Right : Natural) return Int + with SPARK_Mode +is + -- Preconditions, postconditions, ghost code, loop invariants and + -- assertions in this unit are meant for analysis only, not for run-time + -- checking, as it would be too costly otherwise. This is enforced by + -- setting the assertion policy to Ignore. + + pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); -- Note that negative exponents get a constraint error because the -- subtype of the Right argument (the exponent) is Natural. @@ -49,7 +61,16 @@ begin if Exp /= 0 then loop + pragma Loop_Invariant (Exp > 0); + pragma Loop_Invariant (Result * Factor ** Exp = Left ** Right); + pragma Loop_Variant (Decreases => Exp); + if Exp rem 2 /= 0 then + pragma Assert + (Result * (Factor * Factor ** (Exp - 1)) = Left ** Right); + pragma Assert + ((Result * Factor) * Factor ** (Exp - 1) = Left ** Right); + Result := Result * Factor; end if; diff --git a/gcc/ada/libgnat/s-exponu.ads b/gcc/ada/libgnat/s-exponu.ads index 7faa122..b115308 100644 --- a/gcc/ada/libgnat/s-exponu.ads +++ b/gcc/ada/libgnat/s-exponu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,22 @@ -- Modular integer exponentiation +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + generic type Int is mod <>; -function System.Exponu (Left : Int; Right : Natural) return Int; +function System.Exponu (Left : Int; Right : Natural) return Int +with + SPARK_Mode, + Post => System.Exponu'Result = Left ** Right; diff --git a/gcc/ada/libgnat/s-expuns.adb b/gcc/ada/libgnat/s-expuns.adb index 6f943da..b881c8c 100644 --- a/gcc/ada/libgnat/s-expuns.adb +++ b/gcc/ada/libgnat/s-expuns.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-expuns.ads b/gcc/ada/libgnat/s-expuns.ads index b49e7c0..e667f47 100644 --- a/gcc/ada/libgnat/s-expuns.ads +++ b/gcc/ada/libgnat/s-expuns.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,10 +34,23 @@ -- The result is always full width, the caller must do a masking operation if -- the modulus is less than 2 ** Unsigned'Size. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + with System.Exponu; with System.Unsigned_Types; -package System.Exp_Uns is +package System.Exp_Uns + with SPARK_Mode +is subtype Unsigned is Unsigned_Types.Unsigned; diff --git a/gcc/ada/libgnat/s-fatflt.ads b/gcc/ada/libgnat/s-fatflt.ads index 079326b..ca9c3b0 100644 --- a/gcc/ada/libgnat/s-fatflt.ads +++ b/gcc/ada/libgnat/s-fatflt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fatgen.adb b/gcc/ada/libgnat/s-fatgen.adb index e591cca..7c04a5b 100644 --- a/gcc/ada/libgnat/s-fatgen.adb +++ b/gcc/ada/libgnat/s-fatgen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -194,7 +194,6 @@ package body System.Fat_Gen is function Compose (Fraction : T; Exponent : UI) return T is Arg_Frac : T; Arg_Exp : UI; - pragma Unreferenced (Arg_Exp); begin Decompose (Fraction, Arg_Frac, Arg_Exp); return Scaling (Arg_Frac, Exponent); @@ -285,7 +284,6 @@ package body System.Fat_Gen is function Exponent (X : T) return UI is X_Frac : T; X_Exp : UI; - pragma Unreferenced (X_Frac); begin Decompose (X, X_Frac, X_Exp); return X_Exp; @@ -487,7 +485,6 @@ package body System.Fat_Gen is function Fraction (X : T) return T is X_Frac : T; X_Exp : UI; - pragma Unreferenced (X_Exp); begin Decompose (X, X_Frac, X_Exp); return X_Frac; @@ -624,7 +621,6 @@ package body System.Fat_Gen is P_Even : Boolean; Arg_Frac : T; - pragma Unreferenced (Arg_Frac); begin if Y = 0.0 then diff --git a/gcc/ada/libgnat/s-fatgen.ads b/gcc/ada/libgnat/s-fatgen.ads index 1b191e2..90dde0c 100644 --- a/gcc/ada/libgnat/s-fatgen.ads +++ b/gcc/ada/libgnat/s-fatgen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fatlfl.ads b/gcc/ada/libgnat/s-fatlfl.ads index 08e0764..63713c9 100644 --- a/gcc/ada/libgnat/s-fatlfl.ads +++ b/gcc/ada/libgnat/s-fatlfl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fatllf.ads b/gcc/ada/libgnat/s-fatllf.ads index 7aad47a..7659aa2 100644 --- a/gcc/ada/libgnat/s-fatllf.ads +++ b/gcc/ada/libgnat/s-fatllf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-ficobl.ads b/gcc/ada/libgnat/s-ficobl.ads index 4e97079..1cb3699 100644 --- a/gcc/ada/libgnat/s-ficobl.ads +++ b/gcc/ada/libgnat/s-ficobl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-filatt.ads b/gcc/ada/libgnat/s-filatt.ads index 30fa836..3af4018 100644 --- a/gcc/ada/libgnat/s-filatt.ads +++ b/gcc/ada/libgnat/s-filatt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,6 +46,11 @@ package System.File_Attributes is (N : System.Address; A : access File_Attributes) return Integer; + function File_Length_Attr + (FD : Integer; + N : System.Address; + A : access File_Attributes) return Long_Long_Integer; + function Is_Regular_File_Attr (N : System.Address; A : access File_Attributes) return Integer; @@ -65,6 +70,7 @@ private pragma Import (C, Reset_Attributes, "__gnat_reset_attributes"); pragma Import (C, Error_Attributes, "__gnat_error_attributes"); pragma Import (C, File_Exists_Attr, "__gnat_file_exists_attr"); + pragma Import (C, File_Length_Attr, "__gnat_file_length_attr"); pragma Import (C, Is_Regular_File_Attr, "__gnat_is_regular_file_attr"); pragma Import (C, Is_Directory_Attr, "__gnat_is_directory_attr"); diff --git a/gcc/ada/libgnat/s-fileio.adb b/gcc/ada/libgnat/s-fileio.adb index 152cd96..3fdb297 100644 --- a/gcc/ada/libgnat/s-fileio.adb +++ b/gcc/ada/libgnat/s-fileio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -244,7 +244,7 @@ package body System.File_IO is if File.Shared_Status = Yes then declare - P : AFCB_Ptr; + P : AFCB_Ptr; begin P := Open_Files; @@ -576,7 +576,6 @@ package body System.File_IO is Default : Boolean) return Boolean is V1, V2 : Natural; - pragma Unreferenced (V2); begin Form_Parameter (Form, Keyword, V1, V2); diff --git a/gcc/ada/libgnat/s-fileio.ads b/gcc/ada/libgnat/s-fileio.ads index 56bd3e6..eaa4a08 100644 --- a/gcc/ada/libgnat/s-fileio.ads +++ b/gcc/ada/libgnat/s-fileio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-finmas.adb b/gcc/ada/libgnat/s-finmas.adb index 05029e1..3986c81 100644 --- a/gcc/ada/libgnat/s-finmas.adb +++ b/gcc/ada/libgnat/s-finmas.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2015-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2015-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-finmas.ads b/gcc/ada/libgnat/s-finmas.ads index ea5a3fb..e1a68a7 100644 --- a/gcc/ada/libgnat/s-finmas.ads +++ b/gcc/ada/libgnat/s-finmas.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ with Ada.Finalization; with System.Storage_Elements; with System.Storage_Pools; -pragma Compiler_Unit_Warning; - package System.Finalization_Masters is pragma Preelaborate; diff --git a/gcc/ada/libgnat/s-finroo.adb b/gcc/ada/libgnat/s-finroo.adb index 591b474..01598bb 100644 --- a/gcc/ada/libgnat/s-finroo.adb +++ b/gcc/ada/libgnat/s-finroo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-finroo.ads b/gcc/ada/libgnat/s-finroo.ads index 23393c5..f94a054 100644 --- a/gcc/ada/libgnat/s-finroo.ads +++ b/gcc/ada/libgnat/s-finroo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-flocon.adb b/gcc/ada/libgnat/s-flocon.adb index 008e629..81ebcbb 100644 --- a/gcc/ada/libgnat/s-flocon.adb +++ b/gcc/ada/libgnat/s-flocon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, AdaCore -- +-- Copyright (C) 2011-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-flocon.ads b/gcc/ada/libgnat/s-flocon.ads index 0c66b78..0d5b91d 100644 --- a/gcc/ada/libgnat/s-flocon.ads +++ b/gcc/ada/libgnat/s-flocon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, AdaCore -- +-- Copyright (C) 2000-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-flocon__none.adb b/gcc/ada/libgnat/s-flocon__none.adb index baf4edd..33d87ff 100644 --- a/gcc/ada/libgnat/s-flocon__none.adb +++ b/gcc/ada/libgnat/s-flocon__none.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, AdaCore -- +-- Copyright (C) 2011-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fode128.ads b/gcc/ada/libgnat/s-fode128.ads index c5490cf..0a0c3d4 100644 --- a/gcc/ada/libgnat/s-fode128.ads +++ b/gcc/ada/libgnat/s-fode128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fode32.ads b/gcc/ada/libgnat/s-fode32.ads index 7e0d377..8e34c15 100644 --- a/gcc/ada/libgnat/s-fode32.ads +++ b/gcc/ada/libgnat/s-fode32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fode64.ads b/gcc/ada/libgnat/s-fode64.ads index 826aa50..90cf462 100644 --- a/gcc/ada/libgnat/s-fode64.ads +++ b/gcc/ada/libgnat/s-fode64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fofi128.ads b/gcc/ada/libgnat/s-fofi128.ads index cbb9b02..baf59a9 100644 --- a/gcc/ada/libgnat/s-fofi128.ads +++ b/gcc/ada/libgnat/s-fofi128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fofi32.ads b/gcc/ada/libgnat/s-fofi32.ads index b5b2645..d5ccd03 100644 --- a/gcc/ada/libgnat/s-fofi32.ads +++ b/gcc/ada/libgnat/s-fofi32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fofi64.ads b/gcc/ada/libgnat/s-fofi64.ads index 41acc77..26af059 100644 --- a/gcc/ada/libgnat/s-fofi64.ads +++ b/gcc/ada/libgnat/s-fofi64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fore_d.adb b/gcc/ada/libgnat/s-fore_d.adb index 73f563f..0d345d7 100644 --- a/gcc/ada/libgnat/s-fore_d.adb +++ b/gcc/ada/libgnat/s-fore_d.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fore_d.ads b/gcc/ada/libgnat/s-fore_d.ads index b930370..902aa78 100644 --- a/gcc/ada/libgnat/s-fore_d.ads +++ b/gcc/ada/libgnat/s-fore_d.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fore_f.adb b/gcc/ada/libgnat/s-fore_f.adb index 109bffa..1d4fcd0 100644 --- a/gcc/ada/libgnat/s-fore_f.adb +++ b/gcc/ada/libgnat/s-fore_f.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-fore_f.ads b/gcc/ada/libgnat/s-fore_f.ads index 52cf449..ae20373 100644 --- a/gcc/ada/libgnat/s-fore_f.ads +++ b/gcc/ada/libgnat/s-fore_f.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-forrea.adb b/gcc/ada/libgnat/s-forrea.adb index 739ac92..bd9be89 100644 --- a/gcc/ada/libgnat/s-forrea.adb +++ b/gcc/ada/libgnat/s-forrea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-forrea.ads b/gcc/ada/libgnat/s-forrea.ads index 73784c0..263a58a 100644 --- a/gcc/ada/libgnat/s-forrea.ads +++ b/gcc/ada/libgnat/s-forrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-gearop.adb b/gcc/ada/libgnat/s-gearop.adb index 92af09d..32c67c3 100644 --- a/gcc/ada/libgnat/s-gearop.adb +++ b/gcc/ada/libgnat/s-gearop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,18 +29,44 @@ -- -- ------------------------------------------------------------------------------ +-- Preconditions, postconditions, ghost code, loop invariants and assertions +-- in this unit are meant for analysis only, not for run-time checking, as it +-- would be too costly otherwise. This is enforced by setting the assertion +-- policy to Ignore. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + with Ada.Numerics; use Ada.Numerics; -package body System.Generic_Array_Operations is + +package body System.Generic_Array_Operations + with SPARK_Mode +is + pragma Warnings + (Off, "aspect * not enforced on inlined subprogram", + Reason => "Contracts in this unit are never executed"); + function Check_Unit_Last (Index : Integer; Order : Positive; - First : Integer) return Integer; + First : Integer) return Integer + with + Pre => Index >= First + and then First <= Integer'Last - Order + 1 + and then Index <= First + (Order - 1), + Post => Check_Unit_Last'Result = First + (Order - 1); + pragma Inline_Always (Check_Unit_Last); -- Compute index of last element returned by Unit_Vector or Unit_Matrix. -- A separate function is needed to allow raising Constraint_Error before -- declaring the function result variable. The result variable needs to be -- declared first, to allow front-end inlining. + pragma Warnings (On, "aspect * not enforced on inlined subprogram"); + -------------- -- Diagonal -- -------------- @@ -48,9 +74,14 @@ package body System.Generic_Array_Operations is function Diagonal (A : Matrix) return Vector is N : constant Natural := Natural'Min (A'Length (1), A'Length (2)); begin - return R : Vector (A'First (1) .. A'First (1) + N - 1) do + return R : Vector (A'First (1) .. A'First (1) + (N - 1)) + with Relaxed_Initialization + do for J in 0 .. N - 1 loop R (R'First + J) := A (A'First (1) + J, A'First (2) + J); + + pragma Loop_Invariant + (for all JJ in R'First .. R'First + J => R (JJ)'Initialized); end loop; end return; end Diagonal; @@ -103,7 +134,10 @@ package body System.Generic_Array_Operations is (M : in out Matrix; Target : Integer; Source : Integer; - Factor : Scalar); + Factor : Scalar) + with + Pre => Target in M'Range (1) + and then Source in M'Range (1); -- Elementary row operation that subtracts Factor * M (Source, <>) from -- M (Target, <>) @@ -131,6 +165,9 @@ package body System.Generic_Array_Operations is begin Do_Rows : for Row in reverse M'Range (1) loop + + pragma Loop_Invariant (Max_Col <= M'Last (2)); + Find_Non_Zero : for Col in reverse M'First (2) .. Max_Col loop if Is_Non_Zero (M (Row, Col)) then @@ -144,12 +181,15 @@ package body System.Generic_Array_Operations is -- equals Integer'First, which is true for aggregates -- without explicit bounds.. - J : Integer := M'First (1); + J : Integer := M'First (1); + NZ : constant Scalar := M (Row, Col); begin while J < Row loop - Sub_Row (N, J, Row, (M (J, Col) / M (Row, Col))); - Sub_Row (M, J, Row, (M (J, Col) / M (Row, Col))); + pragma Loop_Invariant (J in M'Range (1)); + + Sub_Row (N, J, Row, (M (J, Col) / NZ)); + Sub_Row (M, J, Row, (M (J, Col) / NZ)); J := J + 1; end loop; end; @@ -189,19 +229,38 @@ package body System.Generic_Array_Operations is (M : in out Matrix; Target : Integer; Source : Integer; - Factor : Scalar); + Factor : Scalar) + with + Pre => Target in M'Range (1) + and then Source in M'Range (1); -- Subtrace Factor * M (Source, <>) from M (Target, <>) procedure Divide_Row (M, N : in out Matrix; Row : Integer; - Scale : Scalar); + Scale : Scalar) + with + Pre => Row in M'Range (1) + and then M'First (1) = N'First (1) + and then M'Last (1) = N'Last (1) + and then Scale /= Zero; -- Divide M (Row) and N (Row) by Scale, and update Det procedure Switch_Row (M, N : in out Matrix; Row_1 : Integer; - Row_2 : Integer); + Row_2 : Integer) + with + Pre => Row_1 in M'Range (1) + and then Row_2 in M'Range (1) + and then M'First (1) = N'First (1) + and then M'Last (1) = N'Last (1), + Post => (for all J in M'Range (2) => + M (Row_1, J) = M'Old (Row_2, J) + and then M (Row_2, J) = M'Old (Row_1, J)) + and then (for all J in N'Range (2) => + N (Row_1, J) = N'Old (Row_2, J) + and then N (Row_2, J) = N'Old (Row_1, J)); -- Exchange M (Row_1) and N (Row_1) with M (Row_2) and N (Row_2), -- negating Det in the process. @@ -238,8 +297,7 @@ package body System.Generic_Array_Operations is end loop; for J in N'Range (2) loop - N (Row - M'First (1) + N'First (1), J) := - N (Row - M'First (1) + N'First (1), J) / Scale; + N (Row, J) := N (Row, J) / Scale; pragma Annotate (CodePeer, False_Positive, "divide by zero", "Scale /= 0"); end loop; @@ -254,7 +312,9 @@ package body System.Generic_Array_Operations is Row_1 : Integer; Row_2 : Integer) is - procedure Swap (X, Y : in out Scalar); + procedure Swap (X, Y : in out Scalar) + with + Post => X = Y'Old and then Y = X'Old; -- Exchange the values of X and Y ---------- @@ -276,11 +336,28 @@ package body System.Generic_Array_Operations is for J in M'Range (2) loop Swap (M (Row_1, J), M (Row_2, J)); + pragma Annotate + (GNATprove, False_Positive, + "formal parameters ""X"" and ""Y"" might be aliased", + "Row_1 /= Row_2"); + + pragma Loop_Invariant + (for all JJ in M'First (2) .. J => + M (Row_1, JJ) = M'Loop_Entry (Row_2, JJ) + and then M (Row_2, JJ) = M'Loop_Entry (Row_1, JJ)); end loop; for J in N'Range (2) loop - Swap (N (Row_1 - M'First (1) + N'First (1), J), - N (Row_2 - M'First (1) + N'First (1), J)); + Swap (N (Row_1, J), N (Row_2, J)); + pragma Annotate + (GNATprove, False_Positive, + "formal parameters ""X"" and ""Y"" might be aliased", + "Row_1 /= Row_2"); + + pragma Loop_Invariant + (for all JJ in N'First (2) .. J => + N (Row_1, JJ) = N'Loop_Entry (Row_2, JJ) + and then N (Row_2, JJ) = N'Loop_Entry (Row_1, JJ)); end loop; end if; end Switch_Row; @@ -295,6 +372,8 @@ package body System.Generic_Array_Operations is Det := One; for J in M'Range (2) loop + pragma Loop_Invariant (Row >= M'First (1)); + declare Max_Row : Integer := Row; Max_Abs : Real'Base := 0.0; @@ -303,6 +382,10 @@ package body System.Generic_Array_Operations is -- Find best pivot in column J, starting in row Row for K in Row .. M'Last (1) loop + pragma Loop_Invariant (Max_Row in M'Range (1)); + pragma Loop_Invariant + (if Max_Abs /= 0.0 then Max_Abs = abs M (Max_Row, J)); + declare New_Abs : constant Real'Base := abs M (K, J); begin @@ -316,6 +399,8 @@ package body System.Generic_Array_Operations is if Max_Abs > 0.0 then Switch_Row (M, N, Row, Max_Row); + pragma Assert (Max_Abs = abs M (Row, J)); + -- The temporaries below are necessary to force a copy of the -- value and avoid improper aliasing. @@ -325,7 +410,7 @@ package body System.Generic_Array_Operations is Divide_Row (M, N, Row, Scale); end; - for U in Row + 1 .. M'Last (1) loop + for U in Row .. M'Last (1) when U /= Row loop declare Factor : constant Scalar := M (U, J); begin @@ -379,7 +464,11 @@ package body System.Generic_Array_Operations is begin for J in X'Range loop + pragma Loop_Invariant (Sum >= 0.0); Sum := Sum + Result_Real'Base (abs X (J))**2; + pragma Annotate + (GNATprove, Intentional, "float overflow check might fail", + "Intermediate computation might overflow in L2_Norm"); end loop; return Sqrt (Sum); @@ -391,11 +480,25 @@ package body System.Generic_Array_Operations is function Matrix_Elementwise_Operation (X : X_Matrix) return Result_Matrix is begin - return R : Result_Matrix (X'Range (1), X'Range (2)) do + return R : Result_Matrix (X'Range (1), X'Range (2)) + with Relaxed_Initialization + do for J in R'Range (1) loop for K in R'Range (2) loop R (J, K) := Operation (X (J, K)); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Matrix_Elementwise_Operation; @@ -422,7 +525,9 @@ package body System.Generic_Array_Operations is Right : Right_Matrix) return Result_Matrix is begin - return R : Result_Matrix (Left'Range (1), Left'Range (2)) do + return R : Result_Matrix (Left'Range (1), Left'Range (2)) + with Relaxed_Initialization + do if Left'Length (1) /= Right'Length (1) or else Left'Length (2) /= Right'Length (2) @@ -439,7 +544,19 @@ package body System.Generic_Array_Operations is Right (J - R'First (1) + Right'First (1), K - R'First (2) + Right'First (2))); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Matrix_Matrix_Elementwise_Operation; @@ -454,7 +571,9 @@ package body System.Generic_Array_Operations is Z : Z_Scalar) return Result_Matrix is begin - return R : Result_Matrix (X'Range (1), X'Range (2)) do + return R : Result_Matrix (X'Range (1), X'Range (2)) + with Relaxed_Initialization + do if X'Length (1) /= Y'Length (1) or else X'Length (2) /= Y'Length (2) @@ -471,7 +590,19 @@ package body System.Generic_Array_Operations is Y (J - R'First (1) + Y'First (1), K - R'First (2) + Y'First (2)), Z); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Matrix_Matrix_Scalar_Elementwise_Operation; @@ -527,11 +658,25 @@ package body System.Generic_Array_Operations is Right : Right_Scalar) return Result_Matrix is begin - return R : Result_Matrix (Left'Range (1), Left'Range (2)) do + return R : Result_Matrix (Left'Range (1), Left'Range (2)) + with Relaxed_Initialization + do for J in R'Range (1) loop for K in R'Range (2) loop R (J, K) := Operation (Left (J, K), Right); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Matrix_Scalar_Elementwise_Operation; @@ -561,11 +706,25 @@ package body System.Generic_Array_Operations is Right : Right_Matrix) return Result_Matrix is begin - return R : Result_Matrix (Right'Range (1), Right'Range (2)) do + return R : Result_Matrix (Right'Range (1), Right'Range (2)) + with Relaxed_Initialization + do for J in R'Range (1) loop for K in R'Range (2) loop R (J, K) := Operation (Left, Right (J, K)); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Scalar_Matrix_Elementwise_Operation; @@ -590,7 +749,9 @@ package body System.Generic_Array_Operations is -- Sqrt -- ---------- - function Sqrt (X : Real'Base) return Real'Base is + function Sqrt (X : Real'Base) return Real'Base + with SPARK_Mode => Off -- Not in SPARK due to use of Real'Exponent + is Root, Next : Real'Base; begin @@ -651,7 +812,9 @@ package body System.Generic_Array_Operations is Right : Right_Matrix) return Result_Matrix is begin - return R : Result_Matrix (Left'Range (1), Right'Range (2)) do + return R : Result_Matrix (Left'Range (1), Right'Range (2)) + with Relaxed_Initialization + do if Left'Length (2) /= Right'Length (1) then raise Constraint_Error with "incompatible dimensions in matrix multiplication"; @@ -671,7 +834,19 @@ package body System.Generic_Array_Operations is R (J, K) := S; end; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Matrix_Matrix_Product; @@ -681,10 +856,21 @@ package body System.Generic_Array_Operations is ---------------------------- function Matrix_Vector_Solution (A : Matrix; X : Vector) return Vector is + + procedure Ignore (M : Matrix) + with + Ghost, + Depends => (null => M); + + procedure Ignore (M : Matrix) is null; + -- Ghost procedure to document that the value of argument M is ignored, + -- which prevents a warning being issued about the value not being used + -- in the rest of the code. + N : constant Natural := A'Length (1); MA : Matrix := A; - MX : Matrix (A'Range (1), 1 .. 1); - R : Vector (A'Range (2)); + MX : Matrix (A'Range (1), 1 .. 1) with Relaxed_Initialization; + R : Vector (A'Range (2)) with Relaxed_Initialization; Det : Scalar; begin @@ -698,18 +884,29 @@ package body System.Generic_Array_Operations is for J in 0 .. MX'Length (1) - 1 loop MX (MX'First (1) + J, 1) := X (X'First + J); + + pragma Loop_Invariant + (for all JJ in MX'First (1) .. MX'First (1) + J => + MX (JJ, 1)'Initialized); end loop; Forward_Eliminate (MA, MX, Det); if Det = Zero then raise Constraint_Error with "matrix is singular"; + pragma Annotate + (GNATprove, Intentional, "exception might be raised", + "An exception should be raised on a singular matrix"); end if; Back_Substitute (MA, MX); + Ignore (MA); for J in 0 .. R'Length - 1 loop R (R'First + J) := MX (MX'First (1) + J, 1); + + pragma Loop_Invariant + (for all JJ in R'First .. R'First + J => R (JJ)'Initialized); end loop; return R; @@ -720,9 +917,20 @@ package body System.Generic_Array_Operations is ---------------------------- function Matrix_Matrix_Solution (A, X : Matrix) return Matrix is + + procedure Ignore (M : Matrix) + with + Ghost, + Depends => (null => M); + + procedure Ignore (M : Matrix) is null; + -- Ghost procedure to document that the value of argument M is ignored, + -- which prevents a warning being issued about the value not being used + -- in the rest of the code. + N : constant Natural := A'Length (1); - MA : Matrix (A'Range (2), A'Range (2)); - MB : Matrix (A'Range (2), X'Range (2)); + MA : Matrix (A'Range (2), A'Range (2)) with Relaxed_Initialization; + MB : Matrix (A'Range (2), X'Range (2)) with Relaxed_Initialization; Det : Scalar; begin @@ -737,20 +945,53 @@ package body System.Generic_Array_Operations is for J in 0 .. A'Length (1) - 1 loop for K in MA'Range (2) loop MA (MA'First (1) + J, K) := A (A'First (1) + J, K); + + pragma Loop_Invariant + (for all JJ in MA'First (1) .. MA'First (1) + J + when JJ /= MA'First (1) + J + => + (for all KK in MA'Range (2) => + MA (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in MA'First (2) .. K => + MA (MA'First (1) + J, KK)'Initialized); end loop; for K in MB'Range (2) loop MB (MB'First (1) + J, K) := X (X'First (1) + J, K); + + pragma Loop_Invariant + (for all JJ in MB'First (1) .. MB'First (1) + J + when JJ /= MB'First (1) + J + => + (for all KK in MB'Range (2) => + MB (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in MB'First (2) .. K => + MB (MB'First (1) + J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in MA'First (1) .. MA'First (1) + J => + (for all KK in MA'Range (2) => + MA (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all JJ in MB'First (1) .. MB'First (1) + J => + (for all KK in MB'Range (2) => + MB (JJ, KK)'Initialized)); end loop; Forward_Eliminate (MA, MB, Det); if Det = Zero then raise Constraint_Error with "matrix is singular"; + pragma Annotate + (GNATprove, Intentional, "exception might be raised", + "An exception should be raised on a singular matrix"); end if; Back_Substitute (MA, MB); + Ignore (MA); return MB; end Matrix_Matrix_Solution; @@ -795,11 +1036,25 @@ package body System.Generic_Array_Operations is Right : Right_Vector) return Matrix is begin - return R : Matrix (Left'Range, Right'Range) do + return R : Matrix (Left'Range, Right'Range) + with Relaxed_Initialization + do for J in R'Range (1) loop for K in R'Range (2) loop R (J, K) := Left (J) * Right (K); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all KK in R'Range (2) => R (JJ, KK)'Initialized)); + pragma Loop_Invariant + (for all KK in R'Range (2) => R (J, KK)'Initialized); end loop; end return; end Outer_Product; @@ -828,7 +1083,17 @@ package body System.Generic_Array_Operations is for K in R'Range (2) loop R (J, K) := A (K - R'First (2) + A'First (1), J - R'First (1) + A'First (2)); + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J when JJ /= J => + (for all K in R'Range (2) => R (JJ, K)'Initialized)); + pragma Loop_Invariant + (for all KK in R'First (2) .. K => R (J, KK)'Initialized); end loop; + + pragma Loop_Invariant + (for all JJ in R'First (1) .. J => + (for all K in R'Range (2) => R (JJ, K)'Initialized)); end loop; end Transpose; diff --git a/gcc/ada/libgnat/s-gearop.ads b/gcc/ada/libgnat/s-gearop.ads index 340cf96..15e1174 100644 --- a/gcc/ada/libgnat/s-gearop.ads +++ b/gcc/ada/libgnat/s-gearop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2006-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2006-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,29 @@ -- -- ------------------------------------------------------------------------------ -package System.Generic_Array_Operations is -pragma Pure (Generic_Array_Operations); +-- Proof of this unit is only done up to silver level, i.e. absence of runtime +-- errors, and only regarding runtime checks that depend on the generic part, +-- ignoring runtime checks related to formal generic subprogram parameters +-- in instantiations. For example, contracts do not protect against scalar +-- overflows in arithmetic operations passed on as formal generic subprogram +-- parameters. + +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced +-- by setting the corresponding assertion policy to Ignore. Postconditions +-- and contract cases should not be executed at runtime as well, in order +-- not to slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + +package System.Generic_Array_Operations + with SPARK_Mode +is + + pragma Pure (Generic_Array_Operations); --------------------- -- Back_Substitute -- @@ -43,7 +64,10 @@ pragma Pure (Generic_Array_Operations); with function "*" (Left, Right : Scalar) return Scalar is <>; with function "/" (Left, Right : Scalar) return Scalar is <>; with function Is_Non_Zero (X : Scalar) return Boolean is <>; - procedure Back_Substitute (M, N : in out Matrix); + procedure Back_Substitute (M, N : in out Matrix) + with + Pre => M'First (1) = N'First (1) + and then M'Last (1) = N'Last (1); -------------- -- Diagonal -- @@ -53,7 +77,14 @@ pragma Pure (Generic_Array_Operations); type Scalar is private; type Vector is array (Integer range <>) of Scalar; type Matrix is array (Integer range <>, Integer range <>) of Scalar; - function Diagonal (A : Matrix) return Vector; + function Diagonal (A : Matrix) return Vector + with + Pre => A'First (1) < A'Last (1) + and then A'First (2) < A'Last (2) + and then (if A'First (1) <= 0 then + A'Last (1) < Integer'Last + A'First (1)) + and then (if A'First (2) <= 0 then + A'Last (2) < Integer'Last + A'First (2)); ----------------------- -- Forward_Eliminate -- @@ -76,7 +107,10 @@ pragma Pure (Generic_Array_Operations); procedure Forward_Eliminate (M : in out Matrix; N : in out Matrix; - Det : out Scalar); + Det : out Scalar) + with + Pre => M'First (1) = N'First (1) + and then M'Last (1) = N'Last (1); -------------------------- -- Square_Matrix_Length -- @@ -85,8 +119,14 @@ pragma Pure (Generic_Array_Operations); generic type Scalar is private; type Matrix is array (Integer range <>, Integer range <>) of Scalar; - function Square_Matrix_Length (A : Matrix) return Natural; - -- If A is non-square, raise Constraint_Error, else return its dimension + function Square_Matrix_Length (A : Matrix) return Natural + with + Pre => (if A'First (1) <= 0 then + A'Last (1) < Integer'Last + A'First (1)) + and then (if A'First (2) <= 0 then + A'Last (2) < Integer'Last + A'First (2)) + and then A'Length (1) = A'Length (2); + -- If A is non-square, raise Constraint_Error, else return its dimension ---------------------------------- -- Vector_Elementwise_Operation -- @@ -129,7 +169,13 @@ pragma Pure (Generic_Array_Operations); Right : Right_Scalar) return Result_Scalar; function Vector_Vector_Elementwise_Operation (Left : Left_Vector; - Right : Right_Vector) return Result_Vector; + Right : Right_Vector) return Result_Vector + with + Pre => (if Left'First <= 0 then + Left'Last < Integer'Last + Left'First) + and then (if Right'First <= 0 then + Right'Last < Integer'Last + Right'First) + and then Left'Length = Right'Length; ------------------------------------------------ -- Vector_Vector_Scalar_Elementwise_Operation -- @@ -150,7 +196,11 @@ pragma Pure (Generic_Array_Operations); function Vector_Vector_Scalar_Elementwise_Operation (X : X_Vector; Y : Y_Vector; - Z : Z_Scalar) return Result_Vector; + Z : Z_Scalar) return Result_Vector + with + Pre => (if X'First <= 0 then X'Last < Integer'Last + X'First) + and then (if Y'First <= 0 then Y'Last < Integer'Last + Y'First) + and then X'Length = Y'Length; ----------------------------------------- -- Matrix_Matrix_Elementwise_Operation -- @@ -171,7 +221,18 @@ pragma Pure (Generic_Array_Operations); Right : Right_Scalar) return Result_Scalar; function Matrix_Matrix_Elementwise_Operation (Left : Left_Matrix; - Right : Right_Matrix) return Result_Matrix; + Right : Right_Matrix) return Result_Matrix + with + Pre => (if Left'First (1) <= 0 then + Left'Last (1) < Integer'Last + Left'First (1)) + and then (if Right'First (1) <= 0 then + Right'Last (1) < Integer'Last + Right'First (1)) + and then Left'Length (1) = Right'Length (1) + and then (if Left'First (2) <= 0 then + Left'Last (2) < Integer'Last + Left'First (2)) + and then (if Right'First (2) <= 0 then + Right'Last (2) < Integer'Last + Right'First (2)) + and then Left'Length (2) = Right'Length (2); ------------------------------------------------ -- Matrix_Matrix_Scalar_Elementwise_Operation -- @@ -193,7 +254,18 @@ pragma Pure (Generic_Array_Operations); function Matrix_Matrix_Scalar_Elementwise_Operation (X : X_Matrix; Y : Y_Matrix; - Z : Z_Scalar) return Result_Matrix; + Z : Z_Scalar) return Result_Matrix + with + Pre => (if X'First (1) <= 0 then + X'Last (1) < Integer'Last + X'First (1)) + and then (if Y'First (1) <= 0 then + Y'Last (1) < Integer'Last + Y'First (1)) + and then X'Length (1) = Y'Length (1) + and then (if X'First (2) <= 0 then + X'Last (2) < Integer'Last + X'First (2)) + and then (if Y'First (2) <= 0 then + Y'Last (2) < Integer'Last + Y'First (2)) + and then X'Length (2) = Y'Length (2); ----------------------------------------- -- Vector_Scalar_Elementwise_Operation -- @@ -286,7 +358,13 @@ pragma Pure (Generic_Array_Operations); Right : Result_Scalar) return Result_Scalar is <>; function Inner_Product (Left : Left_Vector; - Right : Right_Vector) return Result_Scalar; + Right : Right_Vector) return Result_Scalar + with + Pre => (if Left'First <= 0 then + Left'Last < Integer'Last + Left'First) + and then (if Right'First <= 0 then + Right'Last < Integer'Last + Right'First) + and then Left'Length = Right'Length; ------------- -- L2_Norm -- @@ -340,7 +418,13 @@ pragma Pure (Generic_Array_Operations); Right : Result_Scalar) return Result_Scalar is <>; function Matrix_Vector_Product (Left : Matrix; - Right : Right_Vector) return Result_Vector; + Right : Right_Vector) return Result_Vector + with + Pre => (if Left'First (2) <= 0 then + Left'Last (2) < Integer'Last + Left'First (2)) + and then (if Right'First <= 0 then + Right'Last < Integer'Last + Right'First) + and then Left'Length (2) = Right'Length; --------------------------- -- Vector_Matrix_Product -- @@ -363,7 +447,13 @@ pragma Pure (Generic_Array_Operations); Right : Result_Scalar) return Result_Scalar is <>; function Vector_Matrix_Product (Left : Left_Vector; - Right : Matrix) return Result_Vector; + Right : Matrix) return Result_Vector + with + Pre => (if Left'First <= 0 then + Left'Last < Integer'Last + Left'First) + and then (if Right'First (1) <= 0 then + Right'Last (1) < Integer'Last + Right'First (1)) + and then Left'Length = Right'Length (1); --------------------------- -- Matrix_Matrix_Product -- @@ -388,7 +478,13 @@ pragma Pure (Generic_Array_Operations); Right : Result_Scalar) return Result_Scalar is <>; function Matrix_Matrix_Product (Left : Left_Matrix; - Right : Right_Matrix) return Result_Matrix; + Right : Right_Matrix) return Result_Matrix + with + Pre => (if Left'First (2) <= 0 then + Left'Last (2) < Integer'Last + Left'First (2)) + and then (if Right'First (1) <= 0 then + Right'Last (1) < Integer'Last + Right'First (1)) + and then Left'Length (2) = Right'Length (1); ---------------------------- -- Matrix_Vector_Solution -- @@ -404,7 +500,16 @@ pragma Pure (Generic_Array_Operations); (M : in out Matrix; N : in out Matrix; Det : out Scalar) is <>; - function Matrix_Vector_Solution (A : Matrix; X : Vector) return Vector; + function Matrix_Vector_Solution (A : Matrix; X : Vector) return Vector + with + Pre => (if A'First (1) <= 0 then + A'Last (1) < Integer'Last + A'First (1)) + and then (if A'First (2) <= 0 then + A'Last (2) < Integer'Last + A'First (2)) + and then A'Length (1) = A'Length (2) + and then (if X'First <= 0 then + X'Last < Integer'Last + X'First) + and then A'Length (1) = X'Length; ---------------------------- -- Matrix_Matrix_Solution -- @@ -419,7 +524,16 @@ pragma Pure (Generic_Array_Operations); (M : in out Matrix; N : in out Matrix; Det : out Scalar) is <>; - function Matrix_Matrix_Solution (A : Matrix; X : Matrix) return Matrix; + function Matrix_Matrix_Solution (A : Matrix; X : Matrix) return Matrix + with + Pre => (if A'First (1) <= 0 then + A'Last (1) < Integer'Last + A'First (1)) + and then (if A'First (2) <= 0 then + A'Last (2) < Integer'Last + A'First (2)) + and then A'Length (1) = A'Length (2) + and then (if X'First (1) <= 0 then + X'Last (1) < Integer'Last + X'First (1)) + and then A'Length (1) = X'Length (1); ---------- -- Sqrt -- @@ -436,7 +550,10 @@ pragma Pure (Generic_Array_Operations); generic type Scalar is private; type Matrix is array (Integer range <>, Integer range <>) of Scalar; - procedure Swap_Column (A : in out Matrix; Left, Right : Integer); + procedure Swap_Column (A : in out Matrix; Left, Right : Integer) + with + Pre => Left in A'Range (2) + and then Right in A'Range (2); --------------- -- Transpose -- @@ -445,7 +562,18 @@ pragma Pure (Generic_Array_Operations); generic type Scalar is private; type Matrix is array (Integer range <>, Integer range <>) of Scalar; - procedure Transpose (A : Matrix; R : out Matrix); + procedure Transpose (A : Matrix; R : out Matrix) + with + Relaxed_Initialization => R, + Pre => A'First (1) = R'First (2) + and then A'Last (1) = R'Last (2) + and then A'First (2) = R'First (1) + and then A'Last (2) = R'Last (1) + and then (if A'First (1) < 0 then + A'Last (1) <= Integer'Last + A'First (1)) + and then (if A'First (2) < 0 then + A'Last (2) <= Integer'Last + A'First (2)), + Post => R'Initialized; ------------------------------- -- Update_Vector_With_Vector -- @@ -457,7 +585,13 @@ pragma Pure (Generic_Array_Operations); type X_Vector is array (Integer range <>) of X_Scalar; type Y_Vector is array (Integer range <>) of Y_Scalar; with procedure Update (X : in out X_Scalar; Y : Y_Scalar); - procedure Update_Vector_With_Vector (X : in out X_Vector; Y : Y_Vector); + procedure Update_Vector_With_Vector (X : in out X_Vector; Y : Y_Vector) + with + Pre => (if X'First <= 0 then + X'Last < Integer'Last + X'First) + and then (if Y'First <= 0 then + Y'Last < Integer'Last + Y'First) + and then X'Length = Y'Length; ------------------------------- -- Update_Matrix_With_Matrix -- @@ -469,7 +603,18 @@ pragma Pure (Generic_Array_Operations); type X_Matrix is array (Integer range <>, Integer range <>) of X_Scalar; type Y_Matrix is array (Integer range <>, Integer range <>) of Y_Scalar; with procedure Update (X : in out X_Scalar; Y : Y_Scalar); - procedure Update_Matrix_With_Matrix (X : in out X_Matrix; Y : Y_Matrix); + procedure Update_Matrix_With_Matrix (X : in out X_Matrix; Y : Y_Matrix) + with + Pre => (if X'First (1) <= 0 then + X'Last (1) < Integer'Last + X'First (1)) + and then (if Y'First (1) <= 0 then + Y'Last (1) < Integer'Last + Y'First (1)) + and then X'Length (1) = Y'Length (1) + and then (if X'First (2) <= 0 then + X'Last (2) < Integer'Last + X'First (2)) + and then (if Y'First (2) <= 0 then + Y'Last (2) < Integer'Last + Y'First (2)) + and then X'Length (2) = Y'Length (2); ----------------- -- Unit_Matrix -- @@ -483,7 +628,10 @@ pragma Pure (Generic_Array_Operations); function Unit_Matrix (Order : Positive; First_1 : Integer := 1; - First_2 : Integer := 1) return Matrix; + First_2 : Integer := 1) return Matrix + with + Pre => First_1 <= Integer'Last - Order + 1 + and then First_2 <= Integer'Last - Order + 1; ----------------- -- Unit_Vector -- @@ -497,6 +645,10 @@ pragma Pure (Generic_Array_Operations); function Unit_Vector (Index : Integer; Order : Positive; - First : Integer := 1) return Vector; + First : Integer := 1) return Vector + with + Pre => Index >= First + and then First <= Integer'Last - Order + 1 + and then Index <= First + (Order - 1); end System.Generic_Array_Operations; diff --git a/gcc/ada/libgnat/s-genbig.adb b/gcc/ada/libgnat/s-genbig.adb index 47d8311..1b9a9bd 100644 --- a/gcc/ada/libgnat/s-genbig.adb +++ b/gcc/ada/libgnat/s-genbig.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-genbig.ads b/gcc/ada/libgnat/s-genbig.ads index 6fc1c10..d36e9f2 100644 --- a/gcc/ada/libgnat/s-genbig.ads +++ b/gcc/ada/libgnat/s-genbig.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-geveop.adb b/gcc/ada/libgnat/s-geveop.adb index bfbb232..1ceac3e 100644 --- a/gcc/ada/libgnat/s-geveop.adb +++ b/gcc/ada/libgnat/s-geveop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with System; use System; with System.Address_Operations; use System.Address_Operations; with System.Storage_Elements; use System.Storage_Elements; diff --git a/gcc/ada/libgnat/s-geveop.ads b/gcc/ada/libgnat/s-geveop.ads index 8ad85a5..1b9bb03 100644 --- a/gcc/ada/libgnat/s-geveop.ads +++ b/gcc/ada/libgnat/s-geveop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-gloloc.adb b/gcc/ada/libgnat/s-gloloc.adb index 201fc6f..bd7952d 100644 --- a/gcc/ada/libgnat/s-gloloc.adb +++ b/gcc/ada/libgnat/s-gloloc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-gloloc.ads b/gcc/ada/libgnat/s-gloloc.ads index 8c27fab..bd8a9a9 100644 --- a/gcc/ada/libgnat/s-gloloc.ads +++ b/gcc/ada/libgnat/s-gloloc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-gloloc__mingw.adb b/gcc/ada/libgnat/s-gloloc__mingw.adb index be92ba6..157d22e 100644 --- a/gcc/ada/libgnat/s-gloloc__mingw.adb +++ b/gcc/ada/libgnat/s-gloloc__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-htable.adb b/gcc/ada/libgnat/s-htable.adb index 90bfc13..f098f34 100644 --- a/gcc/ada/libgnat/s-htable.adb +++ b/gcc/ada/libgnat/s-htable.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Deallocation; with System.String_Hash; diff --git a/gcc/ada/libgnat/s-htable.ads b/gcc/ada/libgnat/s-htable.ads index b3b3dfa..f42609c 100644 --- a/gcc/ada/libgnat/s-htable.ads +++ b/gcc/ada/libgnat/s-htable.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,8 +37,6 @@ -- The Static_HTable package provides a more complex interface that allows -- complete control over allocation. -pragma Compiler_Unit_Warning; - package System.HTable is pragma Preelaborate; diff --git a/gcc/ada/libgnat/s-imageb.adb b/gcc/ada/libgnat/s-imageb.adb index e8d367b..951de24 100644 --- a/gcc/ada/libgnat/s-imageb.adb +++ b/gcc/ada/libgnat/s-imageb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imageb.ads b/gcc/ada/libgnat/s-imageb.ads index b739807..9b91be8 100644 --- a/gcc/ada/libgnat/s-imageb.ads +++ b/gcc/ada/libgnat/s-imageb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imaged.adb b/gcc/ada/libgnat/s-imaged.adb index 42c6423..6633464 100644 --- a/gcc/ada/libgnat/s-imaged.adb +++ b/gcc/ada/libgnat/s-imaged.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imaged.ads b/gcc/ada/libgnat/s-imaged.ads index b53f96f..41c7515 100644 --- a/gcc/ada/libgnat/s-imaged.ads +++ b/gcc/ada/libgnat/s-imaged.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagef.adb b/gcc/ada/libgnat/s-imagef.adb index e18fbf3..14e9d06 100644 --- a/gcc/ada/libgnat/s-imagef.adb +++ b/gcc/ada/libgnat/s-imagef.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagef.ads b/gcc/ada/libgnat/s-imagef.ads index cac268a..67892b1 100644 --- a/gcc/ada/libgnat/s-imagef.ads +++ b/gcc/ada/libgnat/s-imagef.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagei.adb b/gcc/ada/libgnat/s-imagei.adb index a942eaf..e7199af 100644 --- a/gcc/ada/libgnat/s-imagei.adb +++ b/gcc/ada/libgnat/s-imagei.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagei.ads b/gcc/ada/libgnat/s-imagei.ads index f80d92d..7d2434b 100644 --- a/gcc/ada/libgnat/s-imagei.ads +++ b/gcc/ada/libgnat/s-imagei.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagen.adb b/gcc/ada/libgnat/s-imagen.adb index 48c2e9f..cd8e170 100644 --- a/gcc/ada/libgnat/s-imagen.adb +++ b/gcc/ada/libgnat/s-imagen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagen.ads b/gcc/ada/libgnat/s-imagen.ads index 6598be9..d6ccfc6 100644 --- a/gcc/ada/libgnat/s-imagen.ads +++ b/gcc/ada/libgnat/s-imagen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imager.adb b/gcc/ada/libgnat/s-imager.adb index 882bb27..dc817b3 100644 --- a/gcc/ada/libgnat/s-imager.adb +++ b/gcc/ada/libgnat/s-imager.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imager.ads b/gcc/ada/libgnat/s-imager.ads index 1aa8687..2a6a321 100644 --- a/gcc/ada/libgnat/s-imager.ads +++ b/gcc/ada/libgnat/s-imager.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imageu.adb b/gcc/ada/libgnat/s-imageu.adb index fa3ac80..3ca5efc 100644 --- a/gcc/ada/libgnat/s-imageu.adb +++ b/gcc/ada/libgnat/s-imageu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imageu.ads b/gcc/ada/libgnat/s-imageu.ads index 4dcd6bc..5983e5d 100644 --- a/gcc/ada/libgnat/s-imageu.ads +++ b/gcc/ada/libgnat/s-imageu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagew.adb b/gcc/ada/libgnat/s-imagew.adb index a76a4dc..24a5ba3 100644 --- a/gcc/ada/libgnat/s-imagew.adb +++ b/gcc/ada/libgnat/s-imagew.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imagew.ads b/gcc/ada/libgnat/s-imagew.ads index edf2ec3..133f01a 100644 --- a/gcc/ada/libgnat/s-imagew.ads +++ b/gcc/ada/libgnat/s-imagew.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imde128.ads b/gcc/ada/libgnat/s-imde128.ads index 1812325..e2caac8 100644 --- a/gcc/ada/libgnat/s-imde128.ads +++ b/gcc/ada/libgnat/s-imde128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imde32.ads b/gcc/ada/libgnat/s-imde32.ads index f2583cc..0397d9c 100644 --- a/gcc/ada/libgnat/s-imde32.ads +++ b/gcc/ada/libgnat/s-imde32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imde64.ads b/gcc/ada/libgnat/s-imde64.ads index e603c5d..c147cb0 100644 --- a/gcc/ada/libgnat/s-imde64.ads +++ b/gcc/ada/libgnat/s-imde64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imen16.ads b/gcc/ada/libgnat/s-imen16.ads index 755549e..b7192c2 100644 --- a/gcc/ada/libgnat/s-imen16.ads +++ b/gcc/ada/libgnat/s-imen16.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imen32.ads b/gcc/ada/libgnat/s-imen32.ads index 3cb88d8..96a1b34 100644 --- a/gcc/ada/libgnat/s-imen32.ads +++ b/gcc/ada/libgnat/s-imen32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imenu8.ads b/gcc/ada/libgnat/s-imenu8.ads index 8c5a64d..cdd5a5f 100644 --- a/gcc/ada/libgnat/s-imenu8.ads +++ b/gcc/ada/libgnat/s-imenu8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imfi128.ads b/gcc/ada/libgnat/s-imfi128.ads index ab988fa..2658454 100644 --- a/gcc/ada/libgnat/s-imfi128.ads +++ b/gcc/ada/libgnat/s-imfi128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imfi32.ads b/gcc/ada/libgnat/s-imfi32.ads index 98b8e8c..d722e51 100644 --- a/gcc/ada/libgnat/s-imfi32.ads +++ b/gcc/ada/libgnat/s-imfi32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imfi64.ads b/gcc/ada/libgnat/s-imfi64.ads index ba83a50..c2e9f1b 100644 --- a/gcc/ada/libgnat/s-imfi64.ads +++ b/gcc/ada/libgnat/s-imfi64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgbiu.adb b/gcc/ada/libgnat/s-imgbiu.adb index ea8feb9..e887ed4 100644 --- a/gcc/ada/libgnat/s-imgbiu.adb +++ b/gcc/ada/libgnat/s-imgbiu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgbiu.ads b/gcc/ada/libgnat/s-imgbiu.ads index 09171c3..37215a4 100644 --- a/gcc/ada/libgnat/s-imgbiu.ads +++ b/gcc/ada/libgnat/s-imgbiu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgboo.adb b/gcc/ada/libgnat/s-imgboo.adb index 4c1f7c9..221c0c6 100644 --- a/gcc/ada/libgnat/s-imgboo.adb +++ b/gcc/ada/libgnat/s-imgboo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgboo.ads b/gcc/ada/libgnat/s-imgboo.ads index 35de7ef..1fe309f 100644 --- a/gcc/ada/libgnat/s-imgboo.ads +++ b/gcc/ada/libgnat/s-imgboo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgcha.adb b/gcc/ada/libgnat/s-imgcha.adb index 8c58b19..5046a10 100644 --- a/gcc/ada/libgnat/s-imgcha.adb +++ b/gcc/ada/libgnat/s-imgcha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgcha.ads b/gcc/ada/libgnat/s-imgcha.ads index 6cd954d..ce8729a 100644 --- a/gcc/ada/libgnat/s-imgcha.ads +++ b/gcc/ada/libgnat/s-imgcha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgflt.ads b/gcc/ada/libgnat/s-imgflt.ads index 44f00b8..59e5087 100644 --- a/gcc/ada/libgnat/s-imgflt.ads +++ b/gcc/ada/libgnat/s-imgflt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgint.adb b/gcc/ada/libgnat/s-imgint.adb index f031120..4d2e2b1 100644 --- a/gcc/ada/libgnat/s-imgint.adb +++ b/gcc/ada/libgnat/s-imgint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgint.ads b/gcc/ada/libgnat/s-imgint.ads index 5a1b8ed..7b1fe22 100644 --- a/gcc/ada/libgnat/s-imgint.ads +++ b/gcc/ada/libgnat/s-imgint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglfl.ads b/gcc/ada/libgnat/s-imglfl.ads index 48f7fc0..2a27986 100644 --- a/gcc/ada/libgnat/s-imglfl.ads +++ b/gcc/ada/libgnat/s-imglfl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllb.adb b/gcc/ada/libgnat/s-imgllb.adb index 291a815..c09b797 100644 --- a/gcc/ada/libgnat/s-imgllb.adb +++ b/gcc/ada/libgnat/s-imgllb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllb.ads b/gcc/ada/libgnat/s-imgllb.ads index b65dbed..59c37f9 100644 --- a/gcc/ada/libgnat/s-imgllb.ads +++ b/gcc/ada/libgnat/s-imgllb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllf.ads b/gcc/ada/libgnat/s-imgllf.ads index 2a5a3e2..074b37d 100644 --- a/gcc/ada/libgnat/s-imgllf.ads +++ b/gcc/ada/libgnat/s-imgllf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglli.adb b/gcc/ada/libgnat/s-imglli.adb index 6eb265c..e8e5cb7 100644 --- a/gcc/ada/libgnat/s-imglli.adb +++ b/gcc/ada/libgnat/s-imglli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglli.ads b/gcc/ada/libgnat/s-imglli.ads index e6e3efc..fc773ae 100644 --- a/gcc/ada/libgnat/s-imglli.ads +++ b/gcc/ada/libgnat/s-imglli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglllb.ads b/gcc/ada/libgnat/s-imglllb.ads index 6d1e418..a3147e5 100644 --- a/gcc/ada/libgnat/s-imglllb.ads +++ b/gcc/ada/libgnat/s-imglllb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllli.ads b/gcc/ada/libgnat/s-imgllli.ads index 5ca2f39..a5a1052 100644 --- a/gcc/ada/libgnat/s-imgllli.ads +++ b/gcc/ada/libgnat/s-imgllli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglllu.ads b/gcc/ada/libgnat/s-imglllu.ads index 4406cb1..ae918c4 100644 --- a/gcc/ada/libgnat/s-imglllu.ads +++ b/gcc/ada/libgnat/s-imglllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imglllw.ads b/gcc/ada/libgnat/s-imglllw.ads index 8958f8c..485bc92 100644 --- a/gcc/ada/libgnat/s-imglllw.ads +++ b/gcc/ada/libgnat/s-imglllw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllu.adb b/gcc/ada/libgnat/s-imgllu.adb index 050f357..751ee69 100644 --- a/gcc/ada/libgnat/s-imgllu.adb +++ b/gcc/ada/libgnat/s-imgllu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllu.ads b/gcc/ada/libgnat/s-imgllu.ads index e8b9d77..220228f 100644 --- a/gcc/ada/libgnat/s-imgllu.ads +++ b/gcc/ada/libgnat/s-imgllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllw.adb b/gcc/ada/libgnat/s-imgllw.adb index 1c3f185..15effff 100644 --- a/gcc/ada/libgnat/s-imgllw.adb +++ b/gcc/ada/libgnat/s-imgllw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgllw.ads b/gcc/ada/libgnat/s-imgllw.ads index 1862b78..2ec2d3e 100644 --- a/gcc/ada/libgnat/s-imgllw.ads +++ b/gcc/ada/libgnat/s-imgllw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgrea.adb b/gcc/ada/libgnat/s-imgrea.adb index 255e659..4d1e06b 100644 --- a/gcc/ada/libgnat/s-imgrea.adb +++ b/gcc/ada/libgnat/s-imgrea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgrea.ads b/gcc/ada/libgnat/s-imgrea.ads index 45abac1..ca18d95 100644 --- a/gcc/ada/libgnat/s-imgrea.ads +++ b/gcc/ada/libgnat/s-imgrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imguns.adb b/gcc/ada/libgnat/s-imguns.adb index bc4d851..29e7478 100644 --- a/gcc/ada/libgnat/s-imguns.adb +++ b/gcc/ada/libgnat/s-imguns.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imguns.ads b/gcc/ada/libgnat/s-imguns.ads index e44f4fc..c15a79d 100644 --- a/gcc/ada/libgnat/s-imguns.ads +++ b/gcc/ada/libgnat/s-imguns.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imguti.adb b/gcc/ada/libgnat/s-imguti.adb index e86be49..ca8bb94 100644 --- a/gcc/ada/libgnat/s-imguti.adb +++ b/gcc/ada/libgnat/s-imguti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imguti.ads b/gcc/ada/libgnat/s-imguti.ads index 68e8e2a..541c42b 100644 --- a/gcc/ada/libgnat/s-imguti.ads +++ b/gcc/ada/libgnat/s-imguti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgwch.adb b/gcc/ada/libgnat/s-imgwch.adb index 9663126..5c3b861 100644 --- a/gcc/ada/libgnat/s-imgwch.adb +++ b/gcc/ada/libgnat/s-imgwch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgwch.ads b/gcc/ada/libgnat/s-imgwch.ads index 7b285f4..84e1235 100644 --- a/gcc/ada/libgnat/s-imgwch.ads +++ b/gcc/ada/libgnat/s-imgwch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgwiu.adb b/gcc/ada/libgnat/s-imgwiu.adb index a7e7d7a..603fd2e 100644 --- a/gcc/ada/libgnat/s-imgwiu.adb +++ b/gcc/ada/libgnat/s-imgwiu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-imgwiu.ads b/gcc/ada/libgnat/s-imgwiu.ads index 605625a..1d6609c 100644 --- a/gcc/ada/libgnat/s-imgwiu.ads +++ b/gcc/ada/libgnat/s-imgwiu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-io.adb b/gcc/ada/libgnat/s-io.adb index 9f42791..099d0cb 100644 --- a/gcc/ada/libgnat/s-io.adb +++ b/gcc/ada/libgnat/s-io.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-io.ads b/gcc/ada/libgnat/s-io.ads index 20284b1..473150d 100644 --- a/gcc/ada/libgnat/s-io.ads +++ b/gcc/ada/libgnat/s-io.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-llflex.ads b/gcc/ada/libgnat/s-llflex.ads index ff0d007..79ac5fb 100644 --- a/gcc/ada/libgnat/s-llflex.ads +++ b/gcc/ada/libgnat/s-llflex.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-maccod.ads b/gcc/ada/libgnat/s-maccod.ads index c78dc91..c3abf07 100644 --- a/gcc/ada/libgnat/s-maccod.ads +++ b/gcc/ada/libgnat/s-maccod.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-mantis.adb b/gcc/ada/libgnat/s-mantis.adb index d7a4c60..74c5b1e 100644 --- a/gcc/ada/libgnat/s-mantis.adb +++ b/gcc/ada/libgnat/s-mantis.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-mantis.ads b/gcc/ada/libgnat/s-mantis.ads index fbf35f8..203a40a 100644 --- a/gcc/ada/libgnat/s-mantis.ads +++ b/gcc/ada/libgnat/s-mantis.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-mastop.adb b/gcc/ada/libgnat/s-mastop.adb index 26c874c..0b69027 100644 --- a/gcc/ada/libgnat/s-mastop.adb +++ b/gcc/ada/libgnat/s-mastop.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Dummy version) -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ -- This dummy version of System.Machine_State_Operations is used on targets -- for which zero cost exception handling is not implemented. -pragma Compiler_Unit_Warning; - package body System.Machine_State_Operations is -- Turn off warnings since many unused parameters diff --git a/gcc/ada/libgnat/s-mastop.ads b/gcc/ada/libgnat/s-mastop.ads index 1df1047..2d20a8e 100644 --- a/gcc/ada/libgnat/s-mastop.ads +++ b/gcc/ada/libgnat/s-mastop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Storage_Elements; package System.Machine_State_Operations is diff --git a/gcc/ada/libgnat/s-memcop.ads b/gcc/ada/libgnat/s-memcop.ads index 147c161..5754ba2 100644 --- a/gcc/ada/libgnat/s-memcop.ads +++ b/gcc/ada/libgnat/s-memcop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-memory.adb b/gcc/ada/libgnat/s-memory.adb index c026bcf..965ef15 100644 --- a/gcc/ada/libgnat/s-memory.adb +++ b/gcc/ada/libgnat/s-memory.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,8 +38,6 @@ -- of task on sjlj runtimes) cannot safely be handled while malloc is -- executing. -pragma Compiler_Unit_Warning; - with System.CRTL; with System.Parameters; with System.Soft_Links; @@ -136,7 +134,7 @@ package body System.Memory is Size : size_t) return System.Address is - Result : System.Address; + Result : System.Address; begin if Size = size_t'Last then raise Storage_Error with "object too large"; diff --git a/gcc/ada/libgnat/s-memory.ads b/gcc/ada/libgnat/s-memory.ads index 728779d..c2256b3 100644 --- a/gcc/ada/libgnat/s-memory.ads +++ b/gcc/ada/libgnat/s-memory.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,8 +40,6 @@ -- This unit may be used directly from an application program by providing -- an appropriate WITH, and the interface can be expected to remain stable. -pragma Compiler_Unit_Warning; - package System.Memory is pragma Elaborate_Body; diff --git a/gcc/ada/libgnat/s-mmap.adb b/gcc/ada/libgnat/s-mmap.adb index fc978a4..3c526e8 100644 --- a/gcc/ada/libgnat/s-mmap.adb +++ b/gcc/ada/libgnat/s-mmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- @@ -367,7 +367,7 @@ package body System.Mmap is Length : File_Size := 0; Mutable : Boolean := False) return Mapped_Region is - Region : Mapped_Region := Invalid_Mapped_Region; + Region : Mapped_Region := Invalid_Mapped_Region; begin Read (File, Region, Offset, Length, Mutable); return Region; diff --git a/gcc/ada/libgnat/s-mmap.ads b/gcc/ada/libgnat/s-mmap.ads index 939c1ce..edb8da7 100644 --- a/gcc/ada/libgnat/s-mmap.ads +++ b/gcc/ada/libgnat/s-mmap.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- diff --git a/gcc/ada/libgnat/s-mmauni__long.ads b/gcc/ada/libgnat/s-mmauni__long.ads index 3a68579..e0e06ab 100644 --- a/gcc/ada/libgnat/s-mmauni__long.ads +++ b/gcc/ada/libgnat/s-mmauni__long.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- diff --git a/gcc/ada/libgnat/s-mmosin__mingw.adb b/gcc/ada/libgnat/s-mmosin__mingw.adb index 588e42e..455f382 100644 --- a/gcc/ada/libgnat/s-mmosin__mingw.adb +++ b/gcc/ada/libgnat/s-mmosin__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- diff --git a/gcc/ada/libgnat/s-mmosin__mingw.ads b/gcc/ada/libgnat/s-mmosin__mingw.ads index 74ac1f6..ec7c14e 100644 --- a/gcc/ada/libgnat/s-mmosin__mingw.ads +++ b/gcc/ada/libgnat/s-mmosin__mingw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- diff --git a/gcc/ada/libgnat/s-mmosin__unix.adb b/gcc/ada/libgnat/s-mmosin__unix.adb index 6a3e4ce..f3e5503 100644 --- a/gcc/ada/libgnat/s-mmosin__unix.adb +++ b/gcc/ada/libgnat/s-mmosin__unix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- @@ -30,7 +30,6 @@ ------------------------------------------------------------------------------ with Ada.IO_Exceptions; -with System; use System; with System.OS_Lib; use System.OS_Lib; with System.Mmap.Unix; use System.Mmap.Unix; diff --git a/gcc/ada/libgnat/s-mmosin__unix.ads b/gcc/ada/libgnat/s-mmosin__unix.ads index e9338cb..3b6d56d 100644 --- a/gcc/ada/libgnat/s-mmosin__unix.ads +++ b/gcc/ada/libgnat/s-mmosin__unix.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, AdaCore -- +-- Copyright (C) 2007-2022, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- diff --git a/gcc/ada/libgnat/s-multip.adb b/gcc/ada/libgnat/s-multip.adb index 8c9ae2b..f2a18e9 100644 --- a/gcc/ada/libgnat/s-multip.adb +++ b/gcc/ada/libgnat/s-multip.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-objrea.adb b/gcc/ada/libgnat/s-objrea.adb index e1bc677..854bbb2 100644 --- a/gcc/ada/libgnat/s-objrea.adb +++ b/gcc/ada/libgnat/s-objrea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1472,7 +1472,7 @@ package body System.Object_Reader is (Obj : in out XCOFF32_Object_File; Sym : Object_Symbol) return String_Ptr_Len is - Symbol : Symbol_Entry; + Symbol : Symbol_Entry; begin Seek (Obj.Symtab_Stream, Sym.Off); @@ -1820,7 +1820,7 @@ package body System.Object_Reader is (S : in out Mapped_Stream; Off : Offset) return String is - Buf : Buffer; + Buf : Buffer; begin Seek (S, Off); diff --git a/gcc/ada/libgnat/s-objrea.ads b/gcc/ada/libgnat/s-objrea.ads index d20a53d..fc440ff 100644 --- a/gcc/ada/libgnat/s-objrea.ads +++ b/gcc/ada/libgnat/s-objrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-optide.adb b/gcc/ada/libgnat/s-optide.adb index 6ab0301..0e19e62 100644 --- a/gcc/ada/libgnat/s-optide.adb +++ b/gcc/ada/libgnat/s-optide.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, AdaCore -- +-- Copyright (C) 2012-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-os_lib.adb b/gcc/ada/libgnat/s-os_lib.adb index 7df06c4..0681580 100644 --- a/gcc/ada/libgnat/s-os_lib.adb +++ b/gcc/ada/libgnat/s-os_lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, AdaCore -- +-- Copyright (C) 1995-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,7 +31,6 @@ with Ada.Unchecked_Conversion; with Ada.Unchecked_Deallocation; -with System; use System; with System.Case_Util; with System.CRTL; with System.Soft_Links; @@ -1212,7 +1211,6 @@ package body System.OS_Lib is H : Hour_Type; Mn : Minute_Type; S : Second_Type; - pragma Unreferenced (Y, Mo, H, Mn, S); begin GM_Split (Date, Y, Mo, D, H, Mn, S); @@ -1231,7 +1229,6 @@ package body System.OS_Lib is D : Day_Type; Mn : Minute_Type; S : Second_Type; - pragma Unreferenced (Y, Mo, D, Mn, S); begin GM_Split (Date, Y, Mo, D, H, Mn, S); @@ -1250,7 +1247,6 @@ package body System.OS_Lib is D : Day_Type; H : Hour_Type; S : Second_Type; - pragma Unreferenced (Y, Mo, D, H, S); begin GM_Split (Date, Y, Mo, D, H, Mn, S); @@ -1269,7 +1265,6 @@ package body System.OS_Lib is H : Hour_Type; Mn : Minute_Type; S : Second_Type; - pragma Unreferenced (Y, D, H, Mn, S); begin GM_Split (Date, Y, Mo, D, H, Mn, S); @@ -1288,7 +1283,6 @@ package body System.OS_Lib is D : Day_Type; H : Hour_Type; Mn : Minute_Type; - pragma Unreferenced (Y, Mo, D, H, Mn); begin GM_Split (Date, Y, Mo, D, H, Mn, S); @@ -1426,7 +1420,6 @@ package body System.OS_Lib is H : Hour_Type; Mn : Minute_Type; S : Second_Type; - pragma Unreferenced (Mo, D, H, Mn, S); begin GM_Split (Date, Y, Mo, D, H, Mn, S); diff --git a/gcc/ada/libgnat/s-os_lib.ads b/gcc/ada/libgnat/s-os_lib.ads index 139d2e0..503793f 100644 --- a/gcc/ada/libgnat/s-os_lib.ads +++ b/gcc/ada/libgnat/s-os_lib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -48,9 +48,6 @@ -- be used by other predefined packages. User access to this package is via -- a renaming of this package in GNAT.OS_Lib (file g-os_lib.ads). -pragma Compiler_Unit_Warning; - -with System; with System.Strings; package System.OS_Lib is diff --git a/gcc/ada/libgnat/s-osprim.ads b/gcc/ada/libgnat/s-osprim.ads index fb4eb9ff..4174c52 100644 --- a/gcc/ada/libgnat/s-osprim.ads +++ b/gcc/ada/libgnat/s-osprim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__darwin.adb b/gcc/ada/libgnat/s-osprim__darwin.adb index 00d0ccb..118e355 100644 --- a/gcc/ada/libgnat/s-osprim__darwin.adb +++ b/gcc/ada/libgnat/s-osprim__darwin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__lynxos.ads b/gcc/ada/libgnat/s-osprim__lynxos.ads index 790c597..fe8710d 100644 --- a/gcc/ada/libgnat/s-osprim__lynxos.ads +++ b/gcc/ada/libgnat/s-osprim__lynxos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__mingw.adb b/gcc/ada/libgnat/s-osprim__mingw.adb index 61f24fd..9586f52 100644 --- a/gcc/ada/libgnat/s-osprim__mingw.adb +++ b/gcc/ada/libgnat/s-osprim__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__posix.adb b/gcc/ada/libgnat/s-osprim__posix.adb index 96bf70e..a07cc18 100644 --- a/gcc/ada/libgnat/s-osprim__posix.adb +++ b/gcc/ada/libgnat/s-osprim__posix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__posix2008.adb b/gcc/ada/libgnat/s-osprim__posix2008.adb index 44f14c4f..7419b26 100644 --- a/gcc/ada/libgnat/s-osprim__posix2008.adb +++ b/gcc/ada/libgnat/s-osprim__posix2008.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__rtems.adb b/gcc/ada/libgnat/s-osprim__rtems.adb index 23669e1..186db27 100644 --- a/gcc/ada/libgnat/s-osprim__rtems.adb +++ b/gcc/ada/libgnat/s-osprim__rtems.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__solaris.adb b/gcc/ada/libgnat/s-osprim__solaris.adb index 62e2d98..6812656 100644 --- a/gcc/ada/libgnat/s-osprim__solaris.adb +++ b/gcc/ada/libgnat/s-osprim__solaris.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__unix.adb b/gcc/ada/libgnat/s-osprim__unix.adb index 4d2db9b..5f00012 100644 --- a/gcc/ada/libgnat/s-osprim__unix.adb +++ b/gcc/ada/libgnat/s-osprim__unix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-osprim__x32.adb b/gcc/ada/libgnat/s-osprim__x32.adb index 9dc1ba9..b68ddc1 100644 --- a/gcc/ada/libgnat/s-osprim__x32.adb +++ b/gcc/ada/libgnat/s-osprim__x32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack03.adb b/gcc/ada/libgnat/s-pack03.adb index 1f6c2ef..6c5719a 100644 --- a/gcc/ada/libgnat/s-pack03.adb +++ b/gcc/ada/libgnat/s-pack03.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack03.ads b/gcc/ada/libgnat/s-pack03.ads index eb1094e..bcd7f73 100644 --- a/gcc/ada/libgnat/s-pack03.ads +++ b/gcc/ada/libgnat/s-pack03.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack05.adb b/gcc/ada/libgnat/s-pack05.adb index c7845aa..afc2a33 100644 --- a/gcc/ada/libgnat/s-pack05.adb +++ b/gcc/ada/libgnat/s-pack05.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack05.ads b/gcc/ada/libgnat/s-pack05.ads index 3f4ef87..a31a8b4 100644 --- a/gcc/ada/libgnat/s-pack05.ads +++ b/gcc/ada/libgnat/s-pack05.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack06.adb b/gcc/ada/libgnat/s-pack06.adb index 02b5331..3ca6112 100644 --- a/gcc/ada/libgnat/s-pack06.adb +++ b/gcc/ada/libgnat/s-pack06.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack06.ads b/gcc/ada/libgnat/s-pack06.ads index e7ca7b1..76b3a9b 100644 --- a/gcc/ada/libgnat/s-pack06.ads +++ b/gcc/ada/libgnat/s-pack06.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack07.adb b/gcc/ada/libgnat/s-pack07.adb index dbcb05e..181d52b 100644 --- a/gcc/ada/libgnat/s-pack07.adb +++ b/gcc/ada/libgnat/s-pack07.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack07.ads b/gcc/ada/libgnat/s-pack07.ads index 49be5ee..0bbedd4 100644 --- a/gcc/ada/libgnat/s-pack07.ads +++ b/gcc/ada/libgnat/s-pack07.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack09.adb b/gcc/ada/libgnat/s-pack09.adb index af5804c..7b9ce94 100644 --- a/gcc/ada/libgnat/s-pack09.adb +++ b/gcc/ada/libgnat/s-pack09.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack09.ads b/gcc/ada/libgnat/s-pack09.ads index f03afc0..823830c 100644 --- a/gcc/ada/libgnat/s-pack09.ads +++ b/gcc/ada/libgnat/s-pack09.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack10.adb b/gcc/ada/libgnat/s-pack10.adb index 1ba1769..c10f80e 100644 --- a/gcc/ada/libgnat/s-pack10.adb +++ b/gcc/ada/libgnat/s-pack10.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack10.ads b/gcc/ada/libgnat/s-pack10.ads index 621e84f..f3afd63 100644 --- a/gcc/ada/libgnat/s-pack10.ads +++ b/gcc/ada/libgnat/s-pack10.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack100.adb b/gcc/ada/libgnat/s-pack100.adb index d3211e3..d6ec55d 100644 --- a/gcc/ada/libgnat/s-pack100.adb +++ b/gcc/ada/libgnat/s-pack100.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack100.ads b/gcc/ada/libgnat/s-pack100.ads index ada158d..ef8bf29 100644 --- a/gcc/ada/libgnat/s-pack100.ads +++ b/gcc/ada/libgnat/s-pack100.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack101.adb b/gcc/ada/libgnat/s-pack101.adb index 9ef16e5..9b4344b 100644 --- a/gcc/ada/libgnat/s-pack101.adb +++ b/gcc/ada/libgnat/s-pack101.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack101.ads b/gcc/ada/libgnat/s-pack101.ads index 91eaf5c..b9dcdb3 100644 --- a/gcc/ada/libgnat/s-pack101.ads +++ b/gcc/ada/libgnat/s-pack101.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack102.adb b/gcc/ada/libgnat/s-pack102.adb index 9da1d19..5d571cb 100644 --- a/gcc/ada/libgnat/s-pack102.adb +++ b/gcc/ada/libgnat/s-pack102.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack102.ads b/gcc/ada/libgnat/s-pack102.ads index 22c17024..09e87c0 100644 --- a/gcc/ada/libgnat/s-pack102.ads +++ b/gcc/ada/libgnat/s-pack102.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack103.adb b/gcc/ada/libgnat/s-pack103.adb index 158daf9..519316a 100644 --- a/gcc/ada/libgnat/s-pack103.adb +++ b/gcc/ada/libgnat/s-pack103.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack103.ads b/gcc/ada/libgnat/s-pack103.ads index 0e1442f..0050447 100644 --- a/gcc/ada/libgnat/s-pack103.ads +++ b/gcc/ada/libgnat/s-pack103.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack104.adb b/gcc/ada/libgnat/s-pack104.adb index 4cf7e0e..b80d494 100644 --- a/gcc/ada/libgnat/s-pack104.adb +++ b/gcc/ada/libgnat/s-pack104.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack104.ads b/gcc/ada/libgnat/s-pack104.ads index 1e111f9..79a0f36 100644 --- a/gcc/ada/libgnat/s-pack104.ads +++ b/gcc/ada/libgnat/s-pack104.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack105.adb b/gcc/ada/libgnat/s-pack105.adb index 44052c5..795650b 100644 --- a/gcc/ada/libgnat/s-pack105.adb +++ b/gcc/ada/libgnat/s-pack105.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack105.ads b/gcc/ada/libgnat/s-pack105.ads index dfe49f8..a7c8740 100644 --- a/gcc/ada/libgnat/s-pack105.ads +++ b/gcc/ada/libgnat/s-pack105.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack106.adb b/gcc/ada/libgnat/s-pack106.adb index a604456..9c1e739 100644 --- a/gcc/ada/libgnat/s-pack106.adb +++ b/gcc/ada/libgnat/s-pack106.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack106.ads b/gcc/ada/libgnat/s-pack106.ads index b4a4711..647e0ac 100644 --- a/gcc/ada/libgnat/s-pack106.ads +++ b/gcc/ada/libgnat/s-pack106.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack107.adb b/gcc/ada/libgnat/s-pack107.adb index 4c04486..b5ffd76 100644 --- a/gcc/ada/libgnat/s-pack107.adb +++ b/gcc/ada/libgnat/s-pack107.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack107.ads b/gcc/ada/libgnat/s-pack107.ads index dcd4c07..ab67890 100644 --- a/gcc/ada/libgnat/s-pack107.ads +++ b/gcc/ada/libgnat/s-pack107.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack108.adb b/gcc/ada/libgnat/s-pack108.adb index 6da22bd..684732f 100644 --- a/gcc/ada/libgnat/s-pack108.adb +++ b/gcc/ada/libgnat/s-pack108.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack108.ads b/gcc/ada/libgnat/s-pack108.ads index 8bb2017..1486e28 100644 --- a/gcc/ada/libgnat/s-pack108.ads +++ b/gcc/ada/libgnat/s-pack108.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack109.adb b/gcc/ada/libgnat/s-pack109.adb index 3770666..8530067 100644 --- a/gcc/ada/libgnat/s-pack109.adb +++ b/gcc/ada/libgnat/s-pack109.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack109.ads b/gcc/ada/libgnat/s-pack109.ads index 3d809c3..cd8dc9f 100644 --- a/gcc/ada/libgnat/s-pack109.ads +++ b/gcc/ada/libgnat/s-pack109.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack11.adb b/gcc/ada/libgnat/s-pack11.adb index ed3b901..96bdbfe 100644 --- a/gcc/ada/libgnat/s-pack11.adb +++ b/gcc/ada/libgnat/s-pack11.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack11.ads b/gcc/ada/libgnat/s-pack11.ads index 6298e49..c35fa85 100644 --- a/gcc/ada/libgnat/s-pack11.ads +++ b/gcc/ada/libgnat/s-pack11.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack110.adb b/gcc/ada/libgnat/s-pack110.adb index c88fdd5..19c1696 100644 --- a/gcc/ada/libgnat/s-pack110.adb +++ b/gcc/ada/libgnat/s-pack110.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack110.ads b/gcc/ada/libgnat/s-pack110.ads index 74a5cf5..6948fa3 100644 --- a/gcc/ada/libgnat/s-pack110.ads +++ b/gcc/ada/libgnat/s-pack110.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack111.adb b/gcc/ada/libgnat/s-pack111.adb index b760b90..992b7e0 100644 --- a/gcc/ada/libgnat/s-pack111.adb +++ b/gcc/ada/libgnat/s-pack111.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack111.ads b/gcc/ada/libgnat/s-pack111.ads index a653ed4..75b2a3a 100644 --- a/gcc/ada/libgnat/s-pack111.ads +++ b/gcc/ada/libgnat/s-pack111.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack112.adb b/gcc/ada/libgnat/s-pack112.adb index f6880fe..735a5db 100644 --- a/gcc/ada/libgnat/s-pack112.adb +++ b/gcc/ada/libgnat/s-pack112.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack112.ads b/gcc/ada/libgnat/s-pack112.ads index fdc5349..24f0f7a 100644 --- a/gcc/ada/libgnat/s-pack112.ads +++ b/gcc/ada/libgnat/s-pack112.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack113.adb b/gcc/ada/libgnat/s-pack113.adb index d34b7d7..8436498 100644 --- a/gcc/ada/libgnat/s-pack113.adb +++ b/gcc/ada/libgnat/s-pack113.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack113.ads b/gcc/ada/libgnat/s-pack113.ads index 5c864af..0d6cab4 100644 --- a/gcc/ada/libgnat/s-pack113.ads +++ b/gcc/ada/libgnat/s-pack113.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack114.adb b/gcc/ada/libgnat/s-pack114.adb index b74a46e..8d69e4e 100644 --- a/gcc/ada/libgnat/s-pack114.adb +++ b/gcc/ada/libgnat/s-pack114.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack114.ads b/gcc/ada/libgnat/s-pack114.ads index 89bdec7..c3264b5 100644 --- a/gcc/ada/libgnat/s-pack114.ads +++ b/gcc/ada/libgnat/s-pack114.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack115.adb b/gcc/ada/libgnat/s-pack115.adb index 882ce51..b77c6c0 100644 --- a/gcc/ada/libgnat/s-pack115.adb +++ b/gcc/ada/libgnat/s-pack115.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack115.ads b/gcc/ada/libgnat/s-pack115.ads index 3ace3c4..e28e8ad 100644 --- a/gcc/ada/libgnat/s-pack115.ads +++ b/gcc/ada/libgnat/s-pack115.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack116.adb b/gcc/ada/libgnat/s-pack116.adb index f5c5aaa..a8deae8 100644 --- a/gcc/ada/libgnat/s-pack116.adb +++ b/gcc/ada/libgnat/s-pack116.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack116.ads b/gcc/ada/libgnat/s-pack116.ads index fd219cb..41d98cb 100644 --- a/gcc/ada/libgnat/s-pack116.ads +++ b/gcc/ada/libgnat/s-pack116.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack117.adb b/gcc/ada/libgnat/s-pack117.adb index 817616f..6a33adc 100644 --- a/gcc/ada/libgnat/s-pack117.adb +++ b/gcc/ada/libgnat/s-pack117.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack117.ads b/gcc/ada/libgnat/s-pack117.ads index c7f03cc..3fe8d68 100644 --- a/gcc/ada/libgnat/s-pack117.ads +++ b/gcc/ada/libgnat/s-pack117.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack118.adb b/gcc/ada/libgnat/s-pack118.adb index 0b4003d..8de2722 100644 --- a/gcc/ada/libgnat/s-pack118.adb +++ b/gcc/ada/libgnat/s-pack118.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack118.ads b/gcc/ada/libgnat/s-pack118.ads index 3f5d0e1..6528f95 100644 --- a/gcc/ada/libgnat/s-pack118.ads +++ b/gcc/ada/libgnat/s-pack118.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack119.adb b/gcc/ada/libgnat/s-pack119.adb index 250f895..6e8dcc7 100644 --- a/gcc/ada/libgnat/s-pack119.adb +++ b/gcc/ada/libgnat/s-pack119.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack119.ads b/gcc/ada/libgnat/s-pack119.ads index 6821bd5..43dd1fe 100644 --- a/gcc/ada/libgnat/s-pack119.ads +++ b/gcc/ada/libgnat/s-pack119.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack12.adb b/gcc/ada/libgnat/s-pack12.adb index 66c9dc1..30475f1 100644 --- a/gcc/ada/libgnat/s-pack12.adb +++ b/gcc/ada/libgnat/s-pack12.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack12.ads b/gcc/ada/libgnat/s-pack12.ads index 3808774..e4d05cc 100644 --- a/gcc/ada/libgnat/s-pack12.ads +++ b/gcc/ada/libgnat/s-pack12.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack120.adb b/gcc/ada/libgnat/s-pack120.adb index ad87b96..9ca04af 100644 --- a/gcc/ada/libgnat/s-pack120.adb +++ b/gcc/ada/libgnat/s-pack120.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack120.ads b/gcc/ada/libgnat/s-pack120.ads index b49d3bb..43d7d9b 100644 --- a/gcc/ada/libgnat/s-pack120.ads +++ b/gcc/ada/libgnat/s-pack120.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack121.adb b/gcc/ada/libgnat/s-pack121.adb index baeac89..c389544 100644 --- a/gcc/ada/libgnat/s-pack121.adb +++ b/gcc/ada/libgnat/s-pack121.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack121.ads b/gcc/ada/libgnat/s-pack121.ads index a05586b..7c615b6 100644 --- a/gcc/ada/libgnat/s-pack121.ads +++ b/gcc/ada/libgnat/s-pack121.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack122.adb b/gcc/ada/libgnat/s-pack122.adb index 7cb7ef6..fa896ed 100644 --- a/gcc/ada/libgnat/s-pack122.adb +++ b/gcc/ada/libgnat/s-pack122.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack122.ads b/gcc/ada/libgnat/s-pack122.ads index 57a4575..b612283 100644 --- a/gcc/ada/libgnat/s-pack122.ads +++ b/gcc/ada/libgnat/s-pack122.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack123.adb b/gcc/ada/libgnat/s-pack123.adb index 630cc7e..3748f8d 100644 --- a/gcc/ada/libgnat/s-pack123.adb +++ b/gcc/ada/libgnat/s-pack123.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack123.ads b/gcc/ada/libgnat/s-pack123.ads index b35eb86..b3d3140 100644 --- a/gcc/ada/libgnat/s-pack123.ads +++ b/gcc/ada/libgnat/s-pack123.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack124.adb b/gcc/ada/libgnat/s-pack124.adb index 8ca12eb..2e01c8e 100644 --- a/gcc/ada/libgnat/s-pack124.adb +++ b/gcc/ada/libgnat/s-pack124.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack124.ads b/gcc/ada/libgnat/s-pack124.ads index 12cfee1..6d18b5d 100644 --- a/gcc/ada/libgnat/s-pack124.ads +++ b/gcc/ada/libgnat/s-pack124.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack125.adb b/gcc/ada/libgnat/s-pack125.adb index 32193d9..146ec9e 100644 --- a/gcc/ada/libgnat/s-pack125.adb +++ b/gcc/ada/libgnat/s-pack125.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack125.ads b/gcc/ada/libgnat/s-pack125.ads index b06dfcf..f54d088 100644 --- a/gcc/ada/libgnat/s-pack125.ads +++ b/gcc/ada/libgnat/s-pack125.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack126.adb b/gcc/ada/libgnat/s-pack126.adb index c5529f4..d0e04a3 100644 --- a/gcc/ada/libgnat/s-pack126.adb +++ b/gcc/ada/libgnat/s-pack126.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack126.ads b/gcc/ada/libgnat/s-pack126.ads index a9a4edc..6cdfa8b 100644 --- a/gcc/ada/libgnat/s-pack126.ads +++ b/gcc/ada/libgnat/s-pack126.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack127.adb b/gcc/ada/libgnat/s-pack127.adb index 3a261df..8673425 100644 --- a/gcc/ada/libgnat/s-pack127.adb +++ b/gcc/ada/libgnat/s-pack127.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack127.ads b/gcc/ada/libgnat/s-pack127.ads index 9f37b9a..73de080 100644 --- a/gcc/ada/libgnat/s-pack127.ads +++ b/gcc/ada/libgnat/s-pack127.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack13.adb b/gcc/ada/libgnat/s-pack13.adb index 72aec3f..b654213 100644 --- a/gcc/ada/libgnat/s-pack13.adb +++ b/gcc/ada/libgnat/s-pack13.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack13.ads b/gcc/ada/libgnat/s-pack13.ads index e68e0c2..d3d959b 100644 --- a/gcc/ada/libgnat/s-pack13.ads +++ b/gcc/ada/libgnat/s-pack13.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack14.adb b/gcc/ada/libgnat/s-pack14.adb index 919a59a..d8f6ef5 100644 --- a/gcc/ada/libgnat/s-pack14.adb +++ b/gcc/ada/libgnat/s-pack14.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack14.ads b/gcc/ada/libgnat/s-pack14.ads index 63f0929..b06e92c 100644 --- a/gcc/ada/libgnat/s-pack14.ads +++ b/gcc/ada/libgnat/s-pack14.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack15.adb b/gcc/ada/libgnat/s-pack15.adb index 231cb71..be3a961 100644 --- a/gcc/ada/libgnat/s-pack15.adb +++ b/gcc/ada/libgnat/s-pack15.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack15.ads b/gcc/ada/libgnat/s-pack15.ads index 0b3f4e3..cf6ac4a 100644 --- a/gcc/ada/libgnat/s-pack15.ads +++ b/gcc/ada/libgnat/s-pack15.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack17.adb b/gcc/ada/libgnat/s-pack17.adb index 28b1ecd..8b4f554 100644 --- a/gcc/ada/libgnat/s-pack17.adb +++ b/gcc/ada/libgnat/s-pack17.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack17.ads b/gcc/ada/libgnat/s-pack17.ads index 5aa9bf7..7c03488 100644 --- a/gcc/ada/libgnat/s-pack17.ads +++ b/gcc/ada/libgnat/s-pack17.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack18.adb b/gcc/ada/libgnat/s-pack18.adb index bc077bb5..18d09bf 100644 --- a/gcc/ada/libgnat/s-pack18.adb +++ b/gcc/ada/libgnat/s-pack18.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack18.ads b/gcc/ada/libgnat/s-pack18.ads index b96eccc..3ca1d1c 100644 --- a/gcc/ada/libgnat/s-pack18.ads +++ b/gcc/ada/libgnat/s-pack18.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack19.adb b/gcc/ada/libgnat/s-pack19.adb index cd424b2..5a982f1 100644 --- a/gcc/ada/libgnat/s-pack19.adb +++ b/gcc/ada/libgnat/s-pack19.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack19.ads b/gcc/ada/libgnat/s-pack19.ads index 6c5df71..5394d1c 100644 --- a/gcc/ada/libgnat/s-pack19.ads +++ b/gcc/ada/libgnat/s-pack19.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack20.adb b/gcc/ada/libgnat/s-pack20.adb index 2577f5a..e2655c9 100644 --- a/gcc/ada/libgnat/s-pack20.adb +++ b/gcc/ada/libgnat/s-pack20.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack20.ads b/gcc/ada/libgnat/s-pack20.ads index 558d0d7..44d313f 100644 --- a/gcc/ada/libgnat/s-pack20.ads +++ b/gcc/ada/libgnat/s-pack20.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack21.adb b/gcc/ada/libgnat/s-pack21.adb index de2974d..c1389a1 100644 --- a/gcc/ada/libgnat/s-pack21.adb +++ b/gcc/ada/libgnat/s-pack21.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack21.ads b/gcc/ada/libgnat/s-pack21.ads index be56b08..e78cc3f 100644 --- a/gcc/ada/libgnat/s-pack21.ads +++ b/gcc/ada/libgnat/s-pack21.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack22.adb b/gcc/ada/libgnat/s-pack22.adb index 0dd92d0..33e58ec 100644 --- a/gcc/ada/libgnat/s-pack22.adb +++ b/gcc/ada/libgnat/s-pack22.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack22.ads b/gcc/ada/libgnat/s-pack22.ads index 8d0e3d7..2ddac67 100644 --- a/gcc/ada/libgnat/s-pack22.ads +++ b/gcc/ada/libgnat/s-pack22.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack23.adb b/gcc/ada/libgnat/s-pack23.adb index 54cced1..bf0e3db 100644 --- a/gcc/ada/libgnat/s-pack23.adb +++ b/gcc/ada/libgnat/s-pack23.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack23.ads b/gcc/ada/libgnat/s-pack23.ads index eaf1b3b..e066496 100644 --- a/gcc/ada/libgnat/s-pack23.ads +++ b/gcc/ada/libgnat/s-pack23.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack24.adb b/gcc/ada/libgnat/s-pack24.adb index 2523a86..cfdf350 100644 --- a/gcc/ada/libgnat/s-pack24.adb +++ b/gcc/ada/libgnat/s-pack24.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack24.ads b/gcc/ada/libgnat/s-pack24.ads index d690cac..eb4be08 100644 --- a/gcc/ada/libgnat/s-pack24.ads +++ b/gcc/ada/libgnat/s-pack24.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack25.adb b/gcc/ada/libgnat/s-pack25.adb index 6c97572f..2d33af0 100644 --- a/gcc/ada/libgnat/s-pack25.adb +++ b/gcc/ada/libgnat/s-pack25.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack25.ads b/gcc/ada/libgnat/s-pack25.ads index 04ec3a9..c508aca 100644 --- a/gcc/ada/libgnat/s-pack25.ads +++ b/gcc/ada/libgnat/s-pack25.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack26.adb b/gcc/ada/libgnat/s-pack26.adb index 24381f3..70e1607 100644 --- a/gcc/ada/libgnat/s-pack26.adb +++ b/gcc/ada/libgnat/s-pack26.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack26.ads b/gcc/ada/libgnat/s-pack26.ads index e0d590a..51fcab6 100644 --- a/gcc/ada/libgnat/s-pack26.ads +++ b/gcc/ada/libgnat/s-pack26.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack27.adb b/gcc/ada/libgnat/s-pack27.adb index 720d017..6c4d3ac 100644 --- a/gcc/ada/libgnat/s-pack27.adb +++ b/gcc/ada/libgnat/s-pack27.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack27.ads b/gcc/ada/libgnat/s-pack27.ads index 320ec17..5ff7d8d 100644 --- a/gcc/ada/libgnat/s-pack27.ads +++ b/gcc/ada/libgnat/s-pack27.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack28.adb b/gcc/ada/libgnat/s-pack28.adb index fd0defb..e841d28 100644 --- a/gcc/ada/libgnat/s-pack28.adb +++ b/gcc/ada/libgnat/s-pack28.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack28.ads b/gcc/ada/libgnat/s-pack28.ads index 8a4d168..90e1186 100644 --- a/gcc/ada/libgnat/s-pack28.ads +++ b/gcc/ada/libgnat/s-pack28.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack29.adb b/gcc/ada/libgnat/s-pack29.adb index e5dfa33..e0da92a 100644 --- a/gcc/ada/libgnat/s-pack29.adb +++ b/gcc/ada/libgnat/s-pack29.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack29.ads b/gcc/ada/libgnat/s-pack29.ads index 40f640a..c213297 100644 --- a/gcc/ada/libgnat/s-pack29.ads +++ b/gcc/ada/libgnat/s-pack29.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack30.adb b/gcc/ada/libgnat/s-pack30.adb index 1ce3ea9..88e0ddf 100644 --- a/gcc/ada/libgnat/s-pack30.adb +++ b/gcc/ada/libgnat/s-pack30.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack30.ads b/gcc/ada/libgnat/s-pack30.ads index 5d6b7cb..4b5c84e 100644 --- a/gcc/ada/libgnat/s-pack30.ads +++ b/gcc/ada/libgnat/s-pack30.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack31.adb b/gcc/ada/libgnat/s-pack31.adb index b754b69..cb0e994 100644 --- a/gcc/ada/libgnat/s-pack31.adb +++ b/gcc/ada/libgnat/s-pack31.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack31.ads b/gcc/ada/libgnat/s-pack31.ads index 7bc763c..9b35463 100644 --- a/gcc/ada/libgnat/s-pack31.ads +++ b/gcc/ada/libgnat/s-pack31.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack33.adb b/gcc/ada/libgnat/s-pack33.adb index 27d6e05..2412736 100644 --- a/gcc/ada/libgnat/s-pack33.adb +++ b/gcc/ada/libgnat/s-pack33.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack33.ads b/gcc/ada/libgnat/s-pack33.ads index a063099..1943bbe 100644 --- a/gcc/ada/libgnat/s-pack33.ads +++ b/gcc/ada/libgnat/s-pack33.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack34.adb b/gcc/ada/libgnat/s-pack34.adb index 953b001..297da8d 100644 --- a/gcc/ada/libgnat/s-pack34.adb +++ b/gcc/ada/libgnat/s-pack34.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack34.ads b/gcc/ada/libgnat/s-pack34.ads index 4e87915..ee1594b 100644 --- a/gcc/ada/libgnat/s-pack34.ads +++ b/gcc/ada/libgnat/s-pack34.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack35.adb b/gcc/ada/libgnat/s-pack35.adb index ba0a0e6..5acce13 100644 --- a/gcc/ada/libgnat/s-pack35.adb +++ b/gcc/ada/libgnat/s-pack35.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack35.ads b/gcc/ada/libgnat/s-pack35.ads index eca6935..d04c5c5 100644 --- a/gcc/ada/libgnat/s-pack35.ads +++ b/gcc/ada/libgnat/s-pack35.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack36.adb b/gcc/ada/libgnat/s-pack36.adb index b273b09..4873a77 100644 --- a/gcc/ada/libgnat/s-pack36.adb +++ b/gcc/ada/libgnat/s-pack36.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack36.ads b/gcc/ada/libgnat/s-pack36.ads index a8e9739..ea576ef 100644 --- a/gcc/ada/libgnat/s-pack36.ads +++ b/gcc/ada/libgnat/s-pack36.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack37.adb b/gcc/ada/libgnat/s-pack37.adb index 5a5a1da..dd04177 100644 --- a/gcc/ada/libgnat/s-pack37.adb +++ b/gcc/ada/libgnat/s-pack37.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack37.ads b/gcc/ada/libgnat/s-pack37.ads index b5ade3f..155a3fe 100644 --- a/gcc/ada/libgnat/s-pack37.ads +++ b/gcc/ada/libgnat/s-pack37.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack38.adb b/gcc/ada/libgnat/s-pack38.adb index d2bd084..4c80392 100644 --- a/gcc/ada/libgnat/s-pack38.adb +++ b/gcc/ada/libgnat/s-pack38.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack38.ads b/gcc/ada/libgnat/s-pack38.ads index 6a629190..bd15cb8 100644 --- a/gcc/ada/libgnat/s-pack38.ads +++ b/gcc/ada/libgnat/s-pack38.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack39.adb b/gcc/ada/libgnat/s-pack39.adb index 647610c..c94d920 100644 --- a/gcc/ada/libgnat/s-pack39.adb +++ b/gcc/ada/libgnat/s-pack39.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack39.ads b/gcc/ada/libgnat/s-pack39.ads index c97fc9e..306d388 100644 --- a/gcc/ada/libgnat/s-pack39.ads +++ b/gcc/ada/libgnat/s-pack39.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack40.adb b/gcc/ada/libgnat/s-pack40.adb index 097d58c..d4ead18 100644 --- a/gcc/ada/libgnat/s-pack40.adb +++ b/gcc/ada/libgnat/s-pack40.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack40.ads b/gcc/ada/libgnat/s-pack40.ads index 4d3c43f..529f638 100644 --- a/gcc/ada/libgnat/s-pack40.ads +++ b/gcc/ada/libgnat/s-pack40.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack41.adb b/gcc/ada/libgnat/s-pack41.adb index 5d6ff71..2c30147 100644 --- a/gcc/ada/libgnat/s-pack41.adb +++ b/gcc/ada/libgnat/s-pack41.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack41.ads b/gcc/ada/libgnat/s-pack41.ads index 8e54781..cb8d7f8 100644 --- a/gcc/ada/libgnat/s-pack41.ads +++ b/gcc/ada/libgnat/s-pack41.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack42.adb b/gcc/ada/libgnat/s-pack42.adb index d059ded..bfe7073 100644 --- a/gcc/ada/libgnat/s-pack42.adb +++ b/gcc/ada/libgnat/s-pack42.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack42.ads b/gcc/ada/libgnat/s-pack42.ads index 1c20804..ac733db 100644 --- a/gcc/ada/libgnat/s-pack42.ads +++ b/gcc/ada/libgnat/s-pack42.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack43.adb b/gcc/ada/libgnat/s-pack43.adb index 3b58202..6b37cb1 100644 --- a/gcc/ada/libgnat/s-pack43.adb +++ b/gcc/ada/libgnat/s-pack43.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack43.ads b/gcc/ada/libgnat/s-pack43.ads index f7b80fc..e77d90f 100644 --- a/gcc/ada/libgnat/s-pack43.ads +++ b/gcc/ada/libgnat/s-pack43.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack44.adb b/gcc/ada/libgnat/s-pack44.adb index 90aee39..f5f6f9e 100644 --- a/gcc/ada/libgnat/s-pack44.adb +++ b/gcc/ada/libgnat/s-pack44.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack44.ads b/gcc/ada/libgnat/s-pack44.ads index 0f2ce7e..8d6be0b 100644 --- a/gcc/ada/libgnat/s-pack44.ads +++ b/gcc/ada/libgnat/s-pack44.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack45.adb b/gcc/ada/libgnat/s-pack45.adb index cfc75fb..9d0cc36 100644 --- a/gcc/ada/libgnat/s-pack45.adb +++ b/gcc/ada/libgnat/s-pack45.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack45.ads b/gcc/ada/libgnat/s-pack45.ads index d95e52a..adab41f 100644 --- a/gcc/ada/libgnat/s-pack45.ads +++ b/gcc/ada/libgnat/s-pack45.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack46.adb b/gcc/ada/libgnat/s-pack46.adb index 4b7dc25..8017376 100644 --- a/gcc/ada/libgnat/s-pack46.adb +++ b/gcc/ada/libgnat/s-pack46.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack46.ads b/gcc/ada/libgnat/s-pack46.ads index 38f6897..3c095dc 100644 --- a/gcc/ada/libgnat/s-pack46.ads +++ b/gcc/ada/libgnat/s-pack46.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack47.adb b/gcc/ada/libgnat/s-pack47.adb index d6ab3fd..f3b4e17 100644 --- a/gcc/ada/libgnat/s-pack47.adb +++ b/gcc/ada/libgnat/s-pack47.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack47.ads b/gcc/ada/libgnat/s-pack47.ads index 6b2141d..52a29cb 100644 --- a/gcc/ada/libgnat/s-pack47.ads +++ b/gcc/ada/libgnat/s-pack47.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack48.adb b/gcc/ada/libgnat/s-pack48.adb index 088474c..ea655c4 100644 --- a/gcc/ada/libgnat/s-pack48.adb +++ b/gcc/ada/libgnat/s-pack48.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack48.ads b/gcc/ada/libgnat/s-pack48.ads index 67ed8ba..309f7cd 100644 --- a/gcc/ada/libgnat/s-pack48.ads +++ b/gcc/ada/libgnat/s-pack48.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack49.adb b/gcc/ada/libgnat/s-pack49.adb index c73cac5..55ca96e 100644 --- a/gcc/ada/libgnat/s-pack49.adb +++ b/gcc/ada/libgnat/s-pack49.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack49.ads b/gcc/ada/libgnat/s-pack49.ads index 9b9db07..25b3478 100644 --- a/gcc/ada/libgnat/s-pack49.ads +++ b/gcc/ada/libgnat/s-pack49.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack50.adb b/gcc/ada/libgnat/s-pack50.adb index 2f5704c..9b526cb 100644 --- a/gcc/ada/libgnat/s-pack50.adb +++ b/gcc/ada/libgnat/s-pack50.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack50.ads b/gcc/ada/libgnat/s-pack50.ads index 65203a3..d609843 100644 --- a/gcc/ada/libgnat/s-pack50.ads +++ b/gcc/ada/libgnat/s-pack50.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack51.adb b/gcc/ada/libgnat/s-pack51.adb index 4c474c5..59c8ebf 100644 --- a/gcc/ada/libgnat/s-pack51.adb +++ b/gcc/ada/libgnat/s-pack51.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack51.ads b/gcc/ada/libgnat/s-pack51.ads index 0b2b99e..9e59fca 100644 --- a/gcc/ada/libgnat/s-pack51.ads +++ b/gcc/ada/libgnat/s-pack51.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack52.adb b/gcc/ada/libgnat/s-pack52.adb index b4c313a..637d0fa 100644 --- a/gcc/ada/libgnat/s-pack52.adb +++ b/gcc/ada/libgnat/s-pack52.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack52.ads b/gcc/ada/libgnat/s-pack52.ads index 04f1289..814c212 100644 --- a/gcc/ada/libgnat/s-pack52.ads +++ b/gcc/ada/libgnat/s-pack52.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack53.adb b/gcc/ada/libgnat/s-pack53.adb index 3b1b699..b194a66 100644 --- a/gcc/ada/libgnat/s-pack53.adb +++ b/gcc/ada/libgnat/s-pack53.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack53.ads b/gcc/ada/libgnat/s-pack53.ads index 3c794d7..2a2ebd5 100644 --- a/gcc/ada/libgnat/s-pack53.ads +++ b/gcc/ada/libgnat/s-pack53.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack54.adb b/gcc/ada/libgnat/s-pack54.adb index 33eafe4..754dd06 100644 --- a/gcc/ada/libgnat/s-pack54.adb +++ b/gcc/ada/libgnat/s-pack54.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack54.ads b/gcc/ada/libgnat/s-pack54.ads index 046ca04..111bf57 100644 --- a/gcc/ada/libgnat/s-pack54.ads +++ b/gcc/ada/libgnat/s-pack54.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack55.adb b/gcc/ada/libgnat/s-pack55.adb index 400e55c..ce3f64c 100644 --- a/gcc/ada/libgnat/s-pack55.adb +++ b/gcc/ada/libgnat/s-pack55.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack55.ads b/gcc/ada/libgnat/s-pack55.ads index 5421a2e..d401405 100644 --- a/gcc/ada/libgnat/s-pack55.ads +++ b/gcc/ada/libgnat/s-pack55.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack56.adb b/gcc/ada/libgnat/s-pack56.adb index f2d7814..f953b09 100644 --- a/gcc/ada/libgnat/s-pack56.adb +++ b/gcc/ada/libgnat/s-pack56.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack56.ads b/gcc/ada/libgnat/s-pack56.ads index 10539e7..44e6628 100644 --- a/gcc/ada/libgnat/s-pack56.ads +++ b/gcc/ada/libgnat/s-pack56.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack57.adb b/gcc/ada/libgnat/s-pack57.adb index e151840..47a0aad 100644 --- a/gcc/ada/libgnat/s-pack57.adb +++ b/gcc/ada/libgnat/s-pack57.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack57.ads b/gcc/ada/libgnat/s-pack57.ads index a93ae11..16bc37f 100644 --- a/gcc/ada/libgnat/s-pack57.ads +++ b/gcc/ada/libgnat/s-pack57.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack58.adb b/gcc/ada/libgnat/s-pack58.adb index 3c9f73d..9b03d5c 100644 --- a/gcc/ada/libgnat/s-pack58.adb +++ b/gcc/ada/libgnat/s-pack58.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack58.ads b/gcc/ada/libgnat/s-pack58.ads index 2949cc3..7513d5e 100644 --- a/gcc/ada/libgnat/s-pack58.ads +++ b/gcc/ada/libgnat/s-pack58.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack59.adb b/gcc/ada/libgnat/s-pack59.adb index b54b1ff..c24dd9f 100644 --- a/gcc/ada/libgnat/s-pack59.adb +++ b/gcc/ada/libgnat/s-pack59.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack59.ads b/gcc/ada/libgnat/s-pack59.ads index 5bdf60c..f93cac1 100644 --- a/gcc/ada/libgnat/s-pack59.ads +++ b/gcc/ada/libgnat/s-pack59.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack60.adb b/gcc/ada/libgnat/s-pack60.adb index b543ac5..1382caa 100644 --- a/gcc/ada/libgnat/s-pack60.adb +++ b/gcc/ada/libgnat/s-pack60.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack60.ads b/gcc/ada/libgnat/s-pack60.ads index 0362a3c..4ad0b63 100644 --- a/gcc/ada/libgnat/s-pack60.ads +++ b/gcc/ada/libgnat/s-pack60.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack61.adb b/gcc/ada/libgnat/s-pack61.adb index aa631c5..a314bb9 100644 --- a/gcc/ada/libgnat/s-pack61.adb +++ b/gcc/ada/libgnat/s-pack61.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack61.ads b/gcc/ada/libgnat/s-pack61.ads index 6d0d4c7..ec5f329 100644 --- a/gcc/ada/libgnat/s-pack61.ads +++ b/gcc/ada/libgnat/s-pack61.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack62.adb b/gcc/ada/libgnat/s-pack62.adb index 66dd8a1..9ecf9f8 100644 --- a/gcc/ada/libgnat/s-pack62.adb +++ b/gcc/ada/libgnat/s-pack62.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack62.ads b/gcc/ada/libgnat/s-pack62.ads index 826df31..7dd64ca 100644 --- a/gcc/ada/libgnat/s-pack62.ads +++ b/gcc/ada/libgnat/s-pack62.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack63.adb b/gcc/ada/libgnat/s-pack63.adb index b4a210b..c3c3e11 100644 --- a/gcc/ada/libgnat/s-pack63.adb +++ b/gcc/ada/libgnat/s-pack63.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack63.ads b/gcc/ada/libgnat/s-pack63.ads index 9a8e5c4..3298278 100644 --- a/gcc/ada/libgnat/s-pack63.ads +++ b/gcc/ada/libgnat/s-pack63.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack65.adb b/gcc/ada/libgnat/s-pack65.adb index 33e4dbd..de51da6 100644 --- a/gcc/ada/libgnat/s-pack65.adb +++ b/gcc/ada/libgnat/s-pack65.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack65.ads b/gcc/ada/libgnat/s-pack65.ads index 023208d..f219c8f 100644 --- a/gcc/ada/libgnat/s-pack65.ads +++ b/gcc/ada/libgnat/s-pack65.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack66.adb b/gcc/ada/libgnat/s-pack66.adb index 80a7ce4..5dceccb 100644 --- a/gcc/ada/libgnat/s-pack66.adb +++ b/gcc/ada/libgnat/s-pack66.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack66.ads b/gcc/ada/libgnat/s-pack66.ads index 9ae24a8..e47b16f 100644 --- a/gcc/ada/libgnat/s-pack66.ads +++ b/gcc/ada/libgnat/s-pack66.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack67.adb b/gcc/ada/libgnat/s-pack67.adb index c7ec770..63be31c 100644 --- a/gcc/ada/libgnat/s-pack67.adb +++ b/gcc/ada/libgnat/s-pack67.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack67.ads b/gcc/ada/libgnat/s-pack67.ads index 33ecc80..3cfcb3b 100644 --- a/gcc/ada/libgnat/s-pack67.ads +++ b/gcc/ada/libgnat/s-pack67.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack68.adb b/gcc/ada/libgnat/s-pack68.adb index d0180ab..8aff8fd 100644 --- a/gcc/ada/libgnat/s-pack68.adb +++ b/gcc/ada/libgnat/s-pack68.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack68.ads b/gcc/ada/libgnat/s-pack68.ads index 62eeb61..9d53114 100644 --- a/gcc/ada/libgnat/s-pack68.ads +++ b/gcc/ada/libgnat/s-pack68.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack69.adb b/gcc/ada/libgnat/s-pack69.adb index 3342385..7f312b4 100644 --- a/gcc/ada/libgnat/s-pack69.adb +++ b/gcc/ada/libgnat/s-pack69.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack69.ads b/gcc/ada/libgnat/s-pack69.ads index 5819f20..5264590 100644 --- a/gcc/ada/libgnat/s-pack69.ads +++ b/gcc/ada/libgnat/s-pack69.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack70.adb b/gcc/ada/libgnat/s-pack70.adb index 6071a50..15eb839 100644 --- a/gcc/ada/libgnat/s-pack70.adb +++ b/gcc/ada/libgnat/s-pack70.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack70.ads b/gcc/ada/libgnat/s-pack70.ads index d6cfed9..09cb451 100644 --- a/gcc/ada/libgnat/s-pack70.ads +++ b/gcc/ada/libgnat/s-pack70.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack71.adb b/gcc/ada/libgnat/s-pack71.adb index 017d584..207efc4 100644 --- a/gcc/ada/libgnat/s-pack71.adb +++ b/gcc/ada/libgnat/s-pack71.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack71.ads b/gcc/ada/libgnat/s-pack71.ads index 89147c4..015ad51 100644 --- a/gcc/ada/libgnat/s-pack71.ads +++ b/gcc/ada/libgnat/s-pack71.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack72.adb b/gcc/ada/libgnat/s-pack72.adb index 1d60757..2c15ecc 100644 --- a/gcc/ada/libgnat/s-pack72.adb +++ b/gcc/ada/libgnat/s-pack72.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack72.ads b/gcc/ada/libgnat/s-pack72.ads index a5f47e3..65933f8 100644 --- a/gcc/ada/libgnat/s-pack72.ads +++ b/gcc/ada/libgnat/s-pack72.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack73.adb b/gcc/ada/libgnat/s-pack73.adb index 46e9c63..d679624 100644 --- a/gcc/ada/libgnat/s-pack73.adb +++ b/gcc/ada/libgnat/s-pack73.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack73.ads b/gcc/ada/libgnat/s-pack73.ads index a5fb008..ec72850 100644 --- a/gcc/ada/libgnat/s-pack73.ads +++ b/gcc/ada/libgnat/s-pack73.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack74.adb b/gcc/ada/libgnat/s-pack74.adb index 4973866..bf89cf7 100644 --- a/gcc/ada/libgnat/s-pack74.adb +++ b/gcc/ada/libgnat/s-pack74.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack74.ads b/gcc/ada/libgnat/s-pack74.ads index 55c394f..75fdf20 100644 --- a/gcc/ada/libgnat/s-pack74.ads +++ b/gcc/ada/libgnat/s-pack74.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack75.adb b/gcc/ada/libgnat/s-pack75.adb index e6b6467..da24172 100644 --- a/gcc/ada/libgnat/s-pack75.adb +++ b/gcc/ada/libgnat/s-pack75.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack75.ads b/gcc/ada/libgnat/s-pack75.ads index 97249ec..ce472dc 100644 --- a/gcc/ada/libgnat/s-pack75.ads +++ b/gcc/ada/libgnat/s-pack75.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack76.adb b/gcc/ada/libgnat/s-pack76.adb index b94586a..e37e0a6 100644 --- a/gcc/ada/libgnat/s-pack76.adb +++ b/gcc/ada/libgnat/s-pack76.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack76.ads b/gcc/ada/libgnat/s-pack76.ads index 4cde3f3..074516c 100644 --- a/gcc/ada/libgnat/s-pack76.ads +++ b/gcc/ada/libgnat/s-pack76.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack77.adb b/gcc/ada/libgnat/s-pack77.adb index 6b660ea..a0dfa63 100644 --- a/gcc/ada/libgnat/s-pack77.adb +++ b/gcc/ada/libgnat/s-pack77.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack77.ads b/gcc/ada/libgnat/s-pack77.ads index e5a1277..77d16c8 100644 --- a/gcc/ada/libgnat/s-pack77.ads +++ b/gcc/ada/libgnat/s-pack77.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack78.adb b/gcc/ada/libgnat/s-pack78.adb index 03f6fbd..c83bd10 100644 --- a/gcc/ada/libgnat/s-pack78.adb +++ b/gcc/ada/libgnat/s-pack78.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack78.ads b/gcc/ada/libgnat/s-pack78.ads index 564f5c8..bd2d975 100644 --- a/gcc/ada/libgnat/s-pack78.ads +++ b/gcc/ada/libgnat/s-pack78.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack79.adb b/gcc/ada/libgnat/s-pack79.adb index d2eecb2..f6359f5 100644 --- a/gcc/ada/libgnat/s-pack79.adb +++ b/gcc/ada/libgnat/s-pack79.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack79.ads b/gcc/ada/libgnat/s-pack79.ads index 909e992..8ba6ec2 100644 --- a/gcc/ada/libgnat/s-pack79.ads +++ b/gcc/ada/libgnat/s-pack79.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack80.adb b/gcc/ada/libgnat/s-pack80.adb index f5d98d0..7bf99fa 100644 --- a/gcc/ada/libgnat/s-pack80.adb +++ b/gcc/ada/libgnat/s-pack80.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack80.ads b/gcc/ada/libgnat/s-pack80.ads index 5021045..8b0270b 100644 --- a/gcc/ada/libgnat/s-pack80.ads +++ b/gcc/ada/libgnat/s-pack80.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack81.adb b/gcc/ada/libgnat/s-pack81.adb index 8c564d8..34aabd4 100644 --- a/gcc/ada/libgnat/s-pack81.adb +++ b/gcc/ada/libgnat/s-pack81.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack81.ads b/gcc/ada/libgnat/s-pack81.ads index 03009c3..890b582 100644 --- a/gcc/ada/libgnat/s-pack81.ads +++ b/gcc/ada/libgnat/s-pack81.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack82.adb b/gcc/ada/libgnat/s-pack82.adb index 21180b7..f8b0229 100644 --- a/gcc/ada/libgnat/s-pack82.adb +++ b/gcc/ada/libgnat/s-pack82.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack82.ads b/gcc/ada/libgnat/s-pack82.ads index 445035d..40ebbc5 100644 --- a/gcc/ada/libgnat/s-pack82.ads +++ b/gcc/ada/libgnat/s-pack82.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack83.adb b/gcc/ada/libgnat/s-pack83.adb index fdea99e..c36166a 100644 --- a/gcc/ada/libgnat/s-pack83.adb +++ b/gcc/ada/libgnat/s-pack83.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack83.ads b/gcc/ada/libgnat/s-pack83.ads index dfb4887..5f3c629 100644 --- a/gcc/ada/libgnat/s-pack83.ads +++ b/gcc/ada/libgnat/s-pack83.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack84.adb b/gcc/ada/libgnat/s-pack84.adb index c72b08e..27502b1 100644 --- a/gcc/ada/libgnat/s-pack84.adb +++ b/gcc/ada/libgnat/s-pack84.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack84.ads b/gcc/ada/libgnat/s-pack84.ads index 77c9c95..ebf7d01 100644 --- a/gcc/ada/libgnat/s-pack84.ads +++ b/gcc/ada/libgnat/s-pack84.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack85.adb b/gcc/ada/libgnat/s-pack85.adb index be9a18c..5f41e78 100644 --- a/gcc/ada/libgnat/s-pack85.adb +++ b/gcc/ada/libgnat/s-pack85.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack85.ads b/gcc/ada/libgnat/s-pack85.ads index 5f516d0..3af83fa 100644 --- a/gcc/ada/libgnat/s-pack85.ads +++ b/gcc/ada/libgnat/s-pack85.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack86.adb b/gcc/ada/libgnat/s-pack86.adb index 1b64c7c..57355e5 100644 --- a/gcc/ada/libgnat/s-pack86.adb +++ b/gcc/ada/libgnat/s-pack86.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack86.ads b/gcc/ada/libgnat/s-pack86.ads index def41d3..f71f503 100644 --- a/gcc/ada/libgnat/s-pack86.ads +++ b/gcc/ada/libgnat/s-pack86.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack87.adb b/gcc/ada/libgnat/s-pack87.adb index 4cc3b61f..714e520 100644 --- a/gcc/ada/libgnat/s-pack87.adb +++ b/gcc/ada/libgnat/s-pack87.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack87.ads b/gcc/ada/libgnat/s-pack87.ads index 6c0b83c..0b7cbf9 100644 --- a/gcc/ada/libgnat/s-pack87.ads +++ b/gcc/ada/libgnat/s-pack87.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack88.adb b/gcc/ada/libgnat/s-pack88.adb index a51bd48..21667dc 100644 --- a/gcc/ada/libgnat/s-pack88.adb +++ b/gcc/ada/libgnat/s-pack88.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack88.ads b/gcc/ada/libgnat/s-pack88.ads index f03323b..d06af16 100644 --- a/gcc/ada/libgnat/s-pack88.ads +++ b/gcc/ada/libgnat/s-pack88.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack89.adb b/gcc/ada/libgnat/s-pack89.adb index d2bc53d..61216a1 100644 --- a/gcc/ada/libgnat/s-pack89.adb +++ b/gcc/ada/libgnat/s-pack89.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack89.ads b/gcc/ada/libgnat/s-pack89.ads index bdc668b..26ffdc5 100644 --- a/gcc/ada/libgnat/s-pack89.ads +++ b/gcc/ada/libgnat/s-pack89.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack90.adb b/gcc/ada/libgnat/s-pack90.adb index 19ec737..603f168 100644 --- a/gcc/ada/libgnat/s-pack90.adb +++ b/gcc/ada/libgnat/s-pack90.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack90.ads b/gcc/ada/libgnat/s-pack90.ads index bbabf19..f7bafe7 100644 --- a/gcc/ada/libgnat/s-pack90.ads +++ b/gcc/ada/libgnat/s-pack90.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack91.adb b/gcc/ada/libgnat/s-pack91.adb index fe20def..106ffb3 100644 --- a/gcc/ada/libgnat/s-pack91.adb +++ b/gcc/ada/libgnat/s-pack91.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack91.ads b/gcc/ada/libgnat/s-pack91.ads index b35d96c..13bfeb1 100644 --- a/gcc/ada/libgnat/s-pack91.ads +++ b/gcc/ada/libgnat/s-pack91.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack92.adb b/gcc/ada/libgnat/s-pack92.adb index 147d628..d49a6fb 100644 --- a/gcc/ada/libgnat/s-pack92.adb +++ b/gcc/ada/libgnat/s-pack92.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack92.ads b/gcc/ada/libgnat/s-pack92.ads index 22424db..cda9136 100644 --- a/gcc/ada/libgnat/s-pack92.ads +++ b/gcc/ada/libgnat/s-pack92.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack93.adb b/gcc/ada/libgnat/s-pack93.adb index 8db201a..cdf9fa0 100644 --- a/gcc/ada/libgnat/s-pack93.adb +++ b/gcc/ada/libgnat/s-pack93.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack93.ads b/gcc/ada/libgnat/s-pack93.ads index eb4359e..7153b6d 100644 --- a/gcc/ada/libgnat/s-pack93.ads +++ b/gcc/ada/libgnat/s-pack93.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack94.adb b/gcc/ada/libgnat/s-pack94.adb index 53c9f89..df4ebca 100644 --- a/gcc/ada/libgnat/s-pack94.adb +++ b/gcc/ada/libgnat/s-pack94.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack94.ads b/gcc/ada/libgnat/s-pack94.ads index 01efbca..737d2b7 100644 --- a/gcc/ada/libgnat/s-pack94.ads +++ b/gcc/ada/libgnat/s-pack94.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack95.adb b/gcc/ada/libgnat/s-pack95.adb index 1179506..865ec23a 100644 --- a/gcc/ada/libgnat/s-pack95.adb +++ b/gcc/ada/libgnat/s-pack95.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack95.ads b/gcc/ada/libgnat/s-pack95.ads index 38d54b8..87422f3 100644 --- a/gcc/ada/libgnat/s-pack95.ads +++ b/gcc/ada/libgnat/s-pack95.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack96.adb b/gcc/ada/libgnat/s-pack96.adb index 617a91f..115fb17 100644 --- a/gcc/ada/libgnat/s-pack96.adb +++ b/gcc/ada/libgnat/s-pack96.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack96.ads b/gcc/ada/libgnat/s-pack96.ads index d19b65b..388a6cd 100644 --- a/gcc/ada/libgnat/s-pack96.ads +++ b/gcc/ada/libgnat/s-pack96.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack97.adb b/gcc/ada/libgnat/s-pack97.adb index b7ddb81..adaeea8 100644 --- a/gcc/ada/libgnat/s-pack97.adb +++ b/gcc/ada/libgnat/s-pack97.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack97.ads b/gcc/ada/libgnat/s-pack97.ads index c04ecbc..e70a6cf 100644 --- a/gcc/ada/libgnat/s-pack97.ads +++ b/gcc/ada/libgnat/s-pack97.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack98.adb b/gcc/ada/libgnat/s-pack98.adb index 2c3def5..bac1e54 100644 --- a/gcc/ada/libgnat/s-pack98.adb +++ b/gcc/ada/libgnat/s-pack98.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack98.ads b/gcc/ada/libgnat/s-pack98.ads index 23e08ed..fdb4b7f 100644 --- a/gcc/ada/libgnat/s-pack98.ads +++ b/gcc/ada/libgnat/s-pack98.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack99.adb b/gcc/ada/libgnat/s-pack99.adb index 26485cf..c9f84ec 100644 --- a/gcc/ada/libgnat/s-pack99.adb +++ b/gcc/ada/libgnat/s-pack99.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pack99.ads b/gcc/ada/libgnat/s-pack99.ads index 4f49623..73c2abe 100644 --- a/gcc/ada/libgnat/s-pack99.ads +++ b/gcc/ada/libgnat/s-pack99.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parame.adb b/gcc/ada/libgnat/s-parame.adb index 09a65ee..1204cad 100644 --- a/gcc/ada/libgnat/s-parame.adb +++ b/gcc/ada/libgnat/s-parame.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,6 @@ -- This is the default (used on all native platforms) version of this package -pragma Compiler_Unit_Warning; - package body System.Parameters is ------------------------- diff --git a/gcc/ada/libgnat/s-parame.ads b/gcc/ada/libgnat/s-parame.ads index 0f76a65..4b81114 100644 --- a/gcc/ada/libgnat/s-parame.ads +++ b/gcc/ada/libgnat/s-parame.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,8 +46,6 @@ -- Note: do not introduce any pragma Inline statements into this unit, since -- otherwise the relinking and rebinding capability would be deactivated. -pragma Compiler_Unit_Warning; - package System.Parameters is pragma Pure; diff --git a/gcc/ada/libgnat/s-parame__hpux.ads b/gcc/ada/libgnat/s-parame__hpux.ads index d6d4e10..dbf05ea 100644 --- a/gcc/ada/libgnat/s-parame__hpux.ads +++ b/gcc/ada/libgnat/s-parame__hpux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parame__posix2008.ads b/gcc/ada/libgnat/s-parame__posix2008.ads index af299ec..d221b27 100644 --- a/gcc/ada/libgnat/s-parame__posix2008.ads +++ b/gcc/ada/libgnat/s-parame__posix2008.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,8 +46,6 @@ -- Note: do not introduce any pragma Inline statements into this unit, since -- otherwise the relinking and rebinding capability would be deactivated. -pragma Compiler_Unit_Warning; - package System.Parameters is pragma Pure; diff --git a/gcc/ada/libgnat/s-parame__rtems.adb b/gcc/ada/libgnat/s-parame__rtems.adb index ae88a2c..1aab36e 100644 --- a/gcc/ada/libgnat/s-parame__rtems.adb +++ b/gcc/ada/libgnat/s-parame__rtems.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parame__vxworks.adb b/gcc/ada/libgnat/s-parame__vxworks.adb index 45ee0a9..4b46906 100644 --- a/gcc/ada/libgnat/s-parame__vxworks.adb +++ b/gcc/ada/libgnat/s-parame__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parame__vxworks.ads b/gcc/ada/libgnat/s-parame__vxworks.ads index b22d858..1343d67 100644 --- a/gcc/ada/libgnat/s-parame__vxworks.ads +++ b/gcc/ada/libgnat/s-parame__vxworks.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parint.adb b/gcc/ada/libgnat/s-parint.adb index 24e8d1b..357f94a 100644 --- a/gcc/ada/libgnat/s-parint.adb +++ b/gcc/ada/libgnat/s-parint.adb @@ -7,7 +7,7 @@ -- B o d y -- -- (Dummy body for non-distributed case) -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-parint.ads b/gcc/ada/libgnat/s-parint.ads index f311a09..8f3aefd 100644 --- a/gcc/ada/libgnat/s-parint.ads +++ b/gcc/ada/libgnat/s-parint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pehage.adb b/gcc/ada/libgnat/s-pehage.adb index 218c1cb..1468628 100644 --- a/gcc/ada/libgnat/s-pehage.adb +++ b/gcc/ada/libgnat/s-pehage.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1233,7 +1233,7 @@ package body System.Perfect_Hash_Generators is ------------ procedure Insert (Value : String) is - Len : constant Natural := Value'Length; + Len : constant Natural := Value'Length; begin if Verbose then diff --git a/gcc/ada/libgnat/s-pehage.ads b/gcc/ada/libgnat/s-pehage.ads index f8b8129..ba75b94 100644 --- a/gcc/ada/libgnat/s-pehage.ads +++ b/gcc/ada/libgnat/s-pehage.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, AdaCore -- +-- Copyright (C) 2002-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -64,8 +64,6 @@ -- < h (w2). These hashing functions are convenient for use with realtime -- applications. -pragma Compiler_Unit_Warning; - package System.Perfect_Hash_Generators is type Optimization is (Memory_Space, CPU_Time); diff --git a/gcc/ada/libgnat/s-pooglo.adb b/gcc/ada/libgnat/s-pooglo.adb index b957eff..2b07ae4 100644 --- a/gcc/ada/libgnat/s-pooglo.adb +++ b/gcc/ada/libgnat/s-pooglo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pooglo.ads b/gcc/ada/libgnat/s-pooglo.ads index 67518c2..d988efa 100644 --- a/gcc/ada/libgnat/s-pooglo.ads +++ b/gcc/ada/libgnat/s-pooglo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,7 +32,6 @@ -- Storage pool corresponding to default global storage pool used for types -- for which no storage pool is specified. -with System; with System.Storage_Pools; with System.Storage_Elements; diff --git a/gcc/ada/libgnat/s-pooloc.adb b/gcc/ada/libgnat/s-pooloc.adb index 5592348..581bcca 100644 --- a/gcc/ada/libgnat/s-pooloc.adb +++ b/gcc/ada/libgnat/s-pooloc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-pooloc.ads b/gcc/ada/libgnat/s-pooloc.ads index 6e33260..3c5da58 100644 --- a/gcc/ada/libgnat/s-pooloc.ads +++ b/gcc/ada/libgnat/s-pooloc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-poosiz.adb b/gcc/ada/libgnat/s-poosiz.adb index fd984bb..ac0eee9 100644 --- a/gcc/ada/libgnat/s-poosiz.adb +++ b/gcc/ada/libgnat/s-poosiz.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-poosiz.ads b/gcc/ada/libgnat/s-poosiz.ads index f52593f..d9f0ff7 100644 --- a/gcc/ada/libgnat/s-poosiz.ads +++ b/gcc/ada/libgnat/s-poosiz.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-powflt.ads b/gcc/ada/libgnat/s-powflt.ads index 4dc490c..bf5d66f 100644 --- a/gcc/ada/libgnat/s-powflt.ads +++ b/gcc/ada/libgnat/s-powflt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-powlfl.ads b/gcc/ada/libgnat/s-powlfl.ads index 0ae36ec..a8612db 100644 --- a/gcc/ada/libgnat/s-powlfl.ads +++ b/gcc/ada/libgnat/s-powlfl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-powllf.ads b/gcc/ada/libgnat/s-powllf.ads index eaba6c1..0640ea4 100644 --- a/gcc/ada/libgnat/s-powllf.ads +++ b/gcc/ada/libgnat/s-powllf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-purexc.ads b/gcc/ada/libgnat/s-purexc.ads index 6346f4f..cfff560 100644 --- a/gcc/ada/libgnat/s-purexc.ads +++ b/gcc/ada/libgnat/s-purexc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ -- an exception message. It can be used from Pure units. This unit is for -- internal use only, it is not generally available to applications. -pragma Compiler_Unit_Warning; - package System.Pure_Exceptions is pragma Pure; diff --git a/gcc/ada/libgnat/s-putima.adb b/gcc/ada/libgnat/s-putima.adb index 33960a4..cc36fce 100644 --- a/gcc/ada/libgnat/s-putima.adb +++ b/gcc/ada/libgnat/s-putima.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-putima.ads b/gcc/ada/libgnat/s-putima.ads index 4a33e79..b51e6a9 100644 --- a/gcc/ada/libgnat/s-putima.ads +++ b/gcc/ada/libgnat/s-putima.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-rannum.adb b/gcc/ada/libgnat/s-rannum.adb index 147cc9a..c89ae96 100644 --- a/gcc/ada/libgnat/s-rannum.adb +++ b/gcc/ada/libgnat/s-rannum.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-rannum.ads b/gcc/ada/libgnat/s-rannum.ads index 24c8d7f..4914c02 100644 --- a/gcc/ada/libgnat/s-rannum.ads +++ b/gcc/ada/libgnat/s-rannum.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-ransee.adb b/gcc/ada/libgnat/s-ransee.adb index b12ed0b..eb646e224 100644 --- a/gcc/ada/libgnat/s-ransee.adb +++ b/gcc/ada/libgnat/s-ransee.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-ransee.ads b/gcc/ada/libgnat/s-ransee.ads index 9deef1a..c31bf67 100644 --- a/gcc/ada/libgnat/s-ransee.ads +++ b/gcc/ada/libgnat/s-ransee.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-regexp.adb b/gcc/ada/libgnat/s-regexp.adb index bb21ef7..7a2d9bb 100644 --- a/gcc/ada/libgnat/s-regexp.adb +++ b/gcc/ada/libgnat/s-regexp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-regexp.ads b/gcc/ada/libgnat/s-regexp.ads index 3c57d99..2a138df 100644 --- a/gcc/ada/libgnat/s-regexp.ads +++ b/gcc/ada/libgnat/s-regexp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-regpat.adb b/gcc/ada/libgnat/s-regpat.adb index 00833bb..4f758f9 100644 --- a/gcc/ada/libgnat/s-regpat.adb +++ b/gcc/ada/libgnat/s-regpat.adb @@ -7,7 +7,7 @@ -- B o d y -- -- -- -- Copyright (C) 1986 by University of Toronto. -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -664,7 +664,7 @@ package body System.Regpat is Operand : Pointer; Greedy : Boolean := True) is - Old : Pointer; + Old : Pointer; begin Old := Insert_Operator_Before (Op, Operand, Greedy, Opsize => 7); Emit_Natural (Old + Next_Pointer_Bytes, Min); @@ -1974,7 +1974,6 @@ package body System.Regpat is Result : Pointer; Expr_Flags : Expression_Flags; - pragma Unreferenced (Expr_Flags); -- Start of processing for Compile @@ -2109,7 +2108,7 @@ package body System.Regpat is if Do_Print then declare - Point : constant String := Pointer'Image (Index); + Point : constant String := Pointer'Image (Index); begin Put ([1 .. 4 - Point'Length => ' '] & Point & ":" @@ -3582,7 +3581,6 @@ package body System.Regpat is is PM : Pattern_Matcher (Size); Finalize_Size : Program_Size; - pragma Unreferenced (Finalize_Size); begin if Size = 0 then Match (Compile (Expression), Data, Matches, Data_First, Data_Last); @@ -3605,7 +3603,6 @@ package body System.Regpat is is PM : Pattern_Matcher (Size); Final_Size : Program_Size; - pragma Unreferenced (Final_Size); begin if Size = 0 then return Match (Compile (Expression), Data, Data_First, Data_Last); @@ -3629,7 +3626,6 @@ package body System.Regpat is Matches : Match_Array (0 .. 0); PM : Pattern_Matcher (Size); Final_Size : Program_Size; - pragma Unreferenced (Final_Size); begin if Size = 0 then Match (Compile (Expression), Data, Matches, Data_First, Data_Last); diff --git a/gcc/ada/libgnat/s-regpat.ads b/gcc/ada/libgnat/s-regpat.ads index 637e76c..baa91be 100644 --- a/gcc/ada/libgnat/s-regpat.ads +++ b/gcc/ada/libgnat/s-regpat.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1986 by University of Toronto. -- --- Copyright (C) 1996-2021, AdaCore -- +-- Copyright (C) 1996-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-resfil.adb b/gcc/ada/libgnat/s-resfil.adb index e37db4a..3817e6f 100644 --- a/gcc/ada/libgnat/s-resfil.adb +++ b/gcc/ada/libgnat/s-resfil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Deallocation; with System.OS_Lib; use System.OS_Lib; diff --git a/gcc/ada/libgnat/s-resfil.ads b/gcc/ada/libgnat/s-resfil.ads index 63437ae..47519d4 100644 --- a/gcc/ada/libgnat/s-resfil.ads +++ b/gcc/ada/libgnat/s-resfil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2007-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2007-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,7 +35,8 @@ -- Using a response file allow passing a set of arguments to an executable -- longer than the maximum allowed by the system on the command line. -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. with System.Strings; diff --git a/gcc/ada/libgnat/s-restri.adb b/gcc/ada/libgnat/s-restri.adb index d1f261b..4f9a02b 100644 --- a/gcc/ada/libgnat/s-restri.adb +++ b/gcc/ada/libgnat/s-restri.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.Restrictions is use Rident; diff --git a/gcc/ada/libgnat/s-restri.ads b/gcc/ada/libgnat/s-restri.ads index b46ae46..509037d 100644 --- a/gcc/ada/libgnat/s-restri.ads +++ b/gcc/ada/libgnat/s-restri.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,8 +38,6 @@ -- with names discarded, so that we do not have image tables for the -- large restriction enumeration types at run time. -pragma Compiler_Unit_Warning; - with System.Rident; package System.Restrictions is diff --git a/gcc/ada/libgnat/s-rident.ads b/gcc/ada/libgnat/s-rident.ads index 10d374e..d3a84e3 100644 --- a/gcc/ada/libgnat/s-rident.ads +++ b/gcc/ada/libgnat/s-rident.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,6 +41,9 @@ -- so we can do the instantiation under control of Discard_Names to remove -- the tables. +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. + --------------------------------------------------- -- Note On Compile/Run-Time Consistency Checking -- --------------------------------------------------- @@ -69,8 +72,6 @@ -- restrictions are ignored, and the consistency checking for restrictions -- might be incomplete, which is no big deal. -pragma Compiler_Unit_Warning; - generic package System.Rident is pragma Preelaborate; @@ -144,6 +145,7 @@ package System.Rident is No_Standard_Storage_Pools, -- GNAT No_Stream_Optimizations, -- GNAT No_Streams, -- GNAT + No_Tagged_Type_Registration, -- GNAT No_Task_Allocators, -- (RM D.7(7)) No_Task_Attributes_Package, -- GNAT No_Task_At_Interrupt_Priority, -- GNAT diff --git a/gcc/ada/libgnat/s-rpc.adb b/gcc/ada/libgnat/s-rpc.adb index 1f501fe..4eec30d 100644 --- a/gcc/ada/libgnat/s-rpc.adb +++ b/gcc/ada/libgnat/s-rpc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-rpc.ads b/gcc/ada/libgnat/s-rpc.ads index e8927bd..b7fc1dc 100644 --- a/gcc/ada/libgnat/s-rpc.ads +++ b/gcc/ada/libgnat/s-rpc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-scaval.adb b/gcc/ada/libgnat/s-scaval.adb index 81394af..8fcb7ef 100644 --- a/gcc/ada/libgnat/s-scaval.adb +++ b/gcc/ada/libgnat/s-scaval.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-scaval.ads b/gcc/ada/libgnat/s-scaval.ads index 47de115..5473ab7 100644 --- a/gcc/ada/libgnat/s-scaval.ads +++ b/gcc/ada/libgnat/s-scaval.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-scaval__128.adb b/gcc/ada/libgnat/s-scaval__128.adb index 2276fcc..5ca8287 100644 --- a/gcc/ada/libgnat/s-scaval__128.adb +++ b/gcc/ada/libgnat/s-scaval__128.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-scaval__128.ads b/gcc/ada/libgnat/s-scaval__128.ads index e96122b..d2fa9d1 100644 --- a/gcc/ada/libgnat/s-scaval__128.ads +++ b/gcc/ada/libgnat/s-scaval__128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-secsta.adb b/gcc/ada/libgnat/s-secsta.adb index db64c52..c2ab922 100644 --- a/gcc/ada/libgnat/s-secsta.adb +++ b/gcc/ada/libgnat/s-secsta.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,12 +29,9 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Conversion; with Ada.Unchecked_Deallocation; -with System; use System; with System.Parameters; use System.Parameters; with System.Soft_Links; use System.Soft_Links; with System.Storage_Elements; use System.Storage_Elements; diff --git a/gcc/ada/libgnat/s-secsta.ads b/gcc/ada/libgnat/s-secsta.ads index 7d6b1b9..b75f1a3 100644 --- a/gcc/ada/libgnat/s-secsta.ads +++ b/gcc/ada/libgnat/s-secsta.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with System.Parameters; with System.Storage_Elements; diff --git a/gcc/ada/libgnat/s-sequio.adb b/gcc/ada/libgnat/s-sequio.adb index e314db4..67a7e5b 100644 --- a/gcc/ada/libgnat/s-sequio.adb +++ b/gcc/ada/libgnat/s-sequio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-sequio.ads b/gcc/ada/libgnat/s-sequio.ads index e497760..cd08b9a 100644 --- a/gcc/ada/libgnat/s-sequio.ads +++ b/gcc/ada/libgnat/s-sequio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-shabig.ads b/gcc/ada/libgnat/s-shabig.ads index c1a7a3f..853187c 100644 --- a/gcc/ada/libgnat/s-shabig.ads +++ b/gcc/ada/libgnat/s-shabig.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2012-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2012-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-shasto.adb b/gcc/ada/libgnat/s-shasto.adb index a1f5a95..c383878 100644 --- a/gcc/ada/libgnat/s-shasto.adb +++ b/gcc/ada/libgnat/s-shasto.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,7 +36,6 @@ with Ada.Streams.Stream_IO; with System.Global_Locks; with System.Soft_Links; -with System; with System.CRTL; with System.File_Control_Block; with System.File_IO; @@ -441,7 +440,7 @@ package body System.Shared_Storage is if SFE = null then declare - S : aliased constant String := Dir.all & Var; + S : aliased constant String := Dir.all & Var; begin SFE := new Shared_Var_File_Entry; @@ -522,7 +521,7 @@ package body System.Shared_Storage is if SFE = null then declare - S : aliased constant String := Dir.all & Var; + S : aliased constant String := Dir.all & Var; begin SFE := new Shared_Var_File_Entry; diff --git a/gcc/ada/libgnat/s-shasto.ads b/gcc/ada/libgnat/s-shasto.ads index a76d3d9..58408f3 100644 --- a/gcc/ada/libgnat/s-shasto.ads +++ b/gcc/ada/libgnat/s-shasto.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-soflin.adb b/gcc/ada/libgnat/s-soflin.adb index 119bea1..e6a366e 100644 --- a/gcc/ada/libgnat/s-soflin.adb +++ b/gcc/ada/libgnat/s-soflin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - pragma Warnings (Off); -- Disable warnings as System.Soft_Links.Initialize is not Preelaborate. It is -- safe to with this unit as its elaboration routine will only be initializing diff --git a/gcc/ada/libgnat/s-soflin.ads b/gcc/ada/libgnat/s-soflin.ads index 4786262..423af3f 100644 --- a/gcc/ada/libgnat/s-soflin.ads +++ b/gcc/ada/libgnat/s-soflin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,8 +37,6 @@ -- initialized to non-tasking versions, and then if the tasking support is -- initialized, they are set to the real tasking versions. -pragma Compiler_Unit_Warning; - with Ada.Exceptions; with System.Parameters; with System.Secondary_Stack; diff --git a/gcc/ada/libgnat/s-soliin.adb b/gcc/ada/libgnat/s-soliin.adb index 4fd335f..14ef4e1 100644 --- a/gcc/ada/libgnat/s-soliin.adb +++ b/gcc/ada/libgnat/s-soliin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2017-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2017-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-soliin.ads b/gcc/ada/libgnat/s-soliin.ads index 4159a3a..c81ff6f 100644 --- a/gcc/ada/libgnat/s-soliin.ads +++ b/gcc/ada/libgnat/s-soliin.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2017-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2017-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-sopco3.adb b/gcc/ada/libgnat/s-sopco3.adb deleted file mode 100644 index 94e2d38..0000000 --- a/gcc/ada/libgnat/s-sopco3.adb +++ /dev/null @@ -1,64 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 3 -- --- -- --- B o d y -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package body System.String_Ops_Concat_3 is - - ------------------ - -- Str_Concat_3 -- - ------------------ - - function Str_Concat_3 (S1, S2, S3 : String) return String is - begin - if S1'Length = 0 then - return S2 & S3; - - else - declare - L12 : constant Natural := S1'Length + S2'Length; - L13 : constant Natural := L12 + S3'Length; - R : String (S1'First .. S1'First + L13 - 1); - - begin - R (S1'First .. S1'Last) := S1; - R (S1'Last + 1 .. S1'First + L12 - 1) := S2; - R (S1'First + L12 .. R'Last) := S3; - return R; - end; - end if; - end Str_Concat_3; - -end System.String_Ops_Concat_3; diff --git a/gcc/ada/libgnat/s-sopco3.ads b/gcc/ada/libgnat/s-sopco3.ads deleted file mode 100644 index 92cdffb..0000000 --- a/gcc/ada/libgnat/s-sopco3.ads +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 3 -- --- -- --- S p e c -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This package contains the function for concatenating three strings - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package System.String_Ops_Concat_3 is - pragma Pure; - - function Str_Concat_3 (S1, S2, S3 : String) return String; - -- Concatenate three strings and return resulting string - -end System.String_Ops_Concat_3; diff --git a/gcc/ada/libgnat/s-sopco4.adb b/gcc/ada/libgnat/s-sopco4.adb deleted file mode 100644 index a8d0dd8..0000000 --- a/gcc/ada/libgnat/s-sopco4.adb +++ /dev/null @@ -1,66 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 4 -- --- -- --- B o d y -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package body System.String_Ops_Concat_4 is - - ------------------ - -- Str_Concat_4 -- - ------------------ - - function Str_Concat_4 (S1, S2, S3, S4 : String) return String is - begin - if S1'Length = 0 then - return S2 & S3 & S4; - - else - declare - L12 : constant Natural := S1'Length + S2'Length; - L13 : constant Natural := L12 + S3'Length; - L14 : constant Natural := L13 + S4'Length; - R : String (S1'First .. S1'First + L14 - 1); - - begin - R (S1'First .. S1'Last) := S1; - R (S1'Last + 1 .. S1'First + L12 - 1) := S2; - R (S1'First + L12 .. S1'First + L13 - 1) := S3; - R (S1'First + L13 .. R'Last) := S4; - return R; - end; - end if; - end Str_Concat_4; - -end System.String_Ops_Concat_4; diff --git a/gcc/ada/libgnat/s-sopco4.ads b/gcc/ada/libgnat/s-sopco4.ads deleted file mode 100644 index 899c9f7..0000000 --- a/gcc/ada/libgnat/s-sopco4.ads +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 4 -- --- -- --- S p e c -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This package contains the function for concatenating four strings - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package System.String_Ops_Concat_4 is - pragma Pure; - - function Str_Concat_4 (S1, S2, S3, S4 : String) return String; - -- Concatenate four strings and return resulting string - -end System.String_Ops_Concat_4; diff --git a/gcc/ada/libgnat/s-sopco5.adb b/gcc/ada/libgnat/s-sopco5.adb deleted file mode 100644 index e3ee0dc..0000000 --- a/gcc/ada/libgnat/s-sopco5.adb +++ /dev/null @@ -1,68 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 5 -- --- -- --- B o d y -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package body System.String_Ops_Concat_5 is - - ------------------ - -- Str_Concat_5 -- - ------------------ - - function Str_Concat_5 (S1, S2, S3, S4, S5 : String) return String is - begin - if S1'Length = 0 then - return S2 & S3 & S4 & S5; - - else - declare - L12 : constant Natural := S1'Length + S2'Length; - L13 : constant Natural := L12 + S3'Length; - L14 : constant Natural := L13 + S4'Length; - L15 : constant Natural := L14 + S5'Length; - R : String (S1'First .. S1'First + L15 - 1); - - begin - R (S1'First .. S1'Last) := S1; - R (S1'Last + 1 .. S1'First + L12 - 1) := S2; - R (S1'First + L12 .. S1'First + L13 - 1) := S3; - R (S1'First + L13 .. S1'First + L14 - 1) := S4; - R (S1'First + L14 .. R'Last) := S5; - return R; - end; - end if; - end Str_Concat_5; - -end System.String_Ops_Concat_5; diff --git a/gcc/ada/libgnat/s-sopco5.ads b/gcc/ada/libgnat/s-sopco5.ads deleted file mode 100644 index 5b032d1..0000000 --- a/gcc/ada/libgnat/s-sopco5.ads +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S _ C O N C A T _ 5 -- --- -- --- S p e c -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This package contains the function for concatenating five strings - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package System.String_Ops_Concat_5 is - pragma Pure; - - function Str_Concat_5 (S1, S2, S3, S4, S5 : String) return String; - -- Concatenate five strings and return resulting string - -end System.String_Ops_Concat_5; diff --git a/gcc/ada/libgnat/s-spsufi.adb b/gcc/ada/libgnat/s-spsufi.adb index ad34ff2..0844db2 100644 --- a/gcc/ada/libgnat/s-spsufi.adb +++ b/gcc/ada/libgnat/s-spsufi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-spsufi.ads b/gcc/ada/libgnat/s-spsufi.ads index 03d9639..3d5aef6 100644 --- a/gcc/ada/libgnat/s-spsufi.ads +++ b/gcc/ada/libgnat/s-spsufi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package System.Storage_Pools.Subpools.Finalization is -- The pragma is needed because package System.Storage_Pools.Subpools which diff --git a/gcc/ada/libgnat/s-stache.adb b/gcc/ada/libgnat/s-stache.adb index e3ac368..9194790 100644 --- a/gcc/ada/libgnat/s-stache.adb +++ b/gcc/ada/libgnat/s-stache.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - -- As noted in the spec, this dummy body is present because otherwise we -- have bootstrapping path problems (there used to be a real body). diff --git a/gcc/ada/libgnat/s-stache.ads b/gcc/ada/libgnat/s-stache.ads index 3e0662e..7631d21 100644 --- a/gcc/ada/libgnat/s-stache.ads +++ b/gcc/ada/libgnat/s-stache.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,8 +35,6 @@ -- This package defines basic types and objects. Operations related to -- stack checking can be found in package System.Stack_Checking.Operations. -pragma Compiler_Unit_Warning; - with System.Storage_Elements; package System.Stack_Checking is diff --git a/gcc/ada/libgnat/s-stalib.adb b/gcc/ada/libgnat/s-stalib.adb index ae62377..1742250 100644 --- a/gcc/ada/libgnat/s-stalib.adb +++ b/gcc/ada/libgnat/s-stalib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - -- The purpose of this body is simply to ensure that the two with'ed units -- are properly included in the link. They are not with'ed from the spec -- of System.Standard_Library, since this would cause order of elaboration diff --git a/gcc/ada/libgnat/s-stalib.ads b/gcc/ada/libgnat/s-stalib.ads index fb6e992..9182c67 100644 --- a/gcc/ada/libgnat/s-stalib.ads +++ b/gcc/ada/libgnat/s-stalib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,8 +44,6 @@ -- package and the packages it references are included in all Ada programs, -- together with the included data. -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Conversion; package System.Standard_Library is diff --git a/gcc/ada/libgnat/s-statxd.adb b/gcc/ada/libgnat/s-statxd.adb index 4de49a9..e34bef1 100644 --- a/gcc/ada/libgnat/s-statxd.adb +++ b/gcc/ada/libgnat/s-statxd.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GARLIC is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-statxd.ads b/gcc/ada/libgnat/s-statxd.ads index e47eec1..86db98a 100644 --- a/gcc/ada/libgnat/s-statxd.ads +++ b/gcc/ada/libgnat/s-statxd.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stausa.adb b/gcc/ada/libgnat/s-stausa.adb index cd34ab6..8c0acc4 100644 --- a/gcc/ada/libgnat/s-stausa.adb +++ b/gcc/ada/libgnat/s-stausa.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stausa.ads b/gcc/ada/libgnat/s-stausa.ads index 2d7feee..00714b2 100644 --- a/gcc/ada/libgnat/s-stausa.ads +++ b/gcc/ada/libgnat/s-stausa.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,6 @@ -- -- ------------------------------------------------------------------------------ -with System; with System.Storage_Elements; with System.Address_To_Access_Conversions; with Interfaces; diff --git a/gcc/ada/libgnat/s-stchop.adb b/gcc/ada/libgnat/s-stchop.adb index 16b8d26..99afb29 100644 --- a/gcc/ada/libgnat/s-stchop.adb +++ b/gcc/ada/libgnat/s-stchop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stchop.ads b/gcc/ada/libgnat/s-stchop.ads index 2b8acee..f4d1a5b 100644 --- a/gcc/ada/libgnat/s-stchop.ads +++ b/gcc/ada/libgnat/s-stchop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stchop__limit.ads b/gcc/ada/libgnat/s-stchop__limit.ads index 28d6802..6af38de 100644 --- a/gcc/ada/libgnat/s-stchop__limit.ads +++ b/gcc/ada/libgnat/s-stchop__limit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stchop__vxworks.adb b/gcc/ada/libgnat/s-stchop__vxworks.adb index 4146522..4334bd1 100644 --- a/gcc/ada/libgnat/s-stchop__vxworks.adb +++ b/gcc/ada/libgnat/s-stchop__vxworks.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNARL is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stoele.adb b/gcc/ada/libgnat/s-stoele.adb index 87c6d49..f804e6d 100644 --- a/gcc/ada/libgnat/s-stoele.adb +++ b/gcc/ada/libgnat/s-stoele.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Conversion; package body System.Storage_Elements is diff --git a/gcc/ada/libgnat/s-stoele.ads b/gcc/ada/libgnat/s-stoele.ads index 62e9ca8..48af71b 100644 --- a/gcc/ada/libgnat/s-stoele.ads +++ b/gcc/ada/libgnat/s-stoele.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -37,8 +37,6 @@ -- extra declarations that can be introduced into System using Extend_System. -- It is a good idea to avoid use clauses for this package. -pragma Compiler_Unit_Warning; - package System.Storage_Elements is pragma Pure; -- Note that we take advantage of the implementation permission to make diff --git a/gcc/ada/libgnat/s-stopoo.adb b/gcc/ada/libgnat/s-stopoo.adb index 0e38413..af8bc55 100644 --- a/gcc/ada/libgnat/s-stopoo.adb +++ b/gcc/ada/libgnat/s-stopoo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stopoo.ads b/gcc/ada/libgnat/s-stopoo.ads index 5bfdca2..ad7cf55 100644 --- a/gcc/ada/libgnat/s-stopoo.ads +++ b/gcc/ada/libgnat/s-stopoo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-stposu.adb b/gcc/ada/libgnat/s-stposu.adb index 141d32b..ca45a3a 100644 --- a/gcc/ada/libgnat/s-stposu.adb +++ b/gcc/ada/libgnat/s-stposu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stposu.ads b/gcc/ada/libgnat/s-stposu.ads index 1441b24..b952e01 100644 --- a/gcc/ada/libgnat/s-stposu.ads +++ b/gcc/ada/libgnat/s-stposu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/s-stratt.adb b/gcc/ada/libgnat/s-stratt.adb index d7f572e..d9c2d46 100644 --- a/gcc/ada/libgnat/s-stratt.adb +++ b/gcc/ada/libgnat/s-stratt.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-stratt.ads b/gcc/ada/libgnat/s-stratt.ads index 9e6d001..08b0d78 100644 --- a/gcc/ada/libgnat/s-stratt.ads +++ b/gcc/ada/libgnat/s-stratt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,7 +37,6 @@ -- defined types, the subprogram for the corresponding root type is called -- with an appropriate conversion. -with System; with System.Unsigned_Types; with Ada.Streams; diff --git a/gcc/ada/libgnat/s-strcom.adb b/gcc/ada/libgnat/s-strcom.adb index 5f0f9d2..1ff036e 100644 --- a/gcc/ada/libgnat/s-strcom.adb +++ b/gcc/ada/libgnat/s-strcom.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Conversion; package body System.String_Compare is diff --git a/gcc/ada/libgnat/s-strcom.ads b/gcc/ada/libgnat/s-strcom.ads index d4271ec..36befa5 100644 --- a/gcc/ada/libgnat/s-strcom.ads +++ b/gcc/ada/libgnat/s-strcom.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,8 +31,6 @@ -- This package contains functions for runtime comparisons on strings -pragma Compiler_Unit_Warning; - package System.String_Compare is function Str_Compare diff --git a/gcc/ada/libgnat/s-strhas.adb b/gcc/ada/libgnat/s-strhas.adb index 7974b02..db860c3 100644 --- a/gcc/ada/libgnat/s-strhas.adb +++ b/gcc/ada/libgnat/s-strhas.adb @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.String_Hash is -- Compute a hash value for a key. The approach here follows the algorithm diff --git a/gcc/ada/libgnat/s-strhas.ads b/gcc/ada/libgnat/s-strhas.ads index d81ce50..974945e 100644 --- a/gcc/ada/libgnat/s-strhas.ads +++ b/gcc/ada/libgnat/s-strhas.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-string.adb b/gcc/ada/libgnat/s-string.adb index 13a7d08..951f78c 100644 --- a/gcc/ada/libgnat/s-string.adb +++ b/gcc/ada/libgnat/s-string.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.Strings is ---------- diff --git a/gcc/ada/libgnat/s-string.ads b/gcc/ada/libgnat/s-string.ads index 3f5ebf4..1e70377 100644 --- a/gcc/ada/libgnat/s-string.ads +++ b/gcc/ada/libgnat/s-string.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1995-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,8 +35,6 @@ -- be used by other predefined packages. User access to this package is via -- a renaming of this package in GNAT.String (file g-string.ads). -pragma Compiler_Unit_Warning; - with Ada.Unchecked_Deallocation; package System.Strings is diff --git a/gcc/ada/libgnat/s-strops.adb b/gcc/ada/libgnat/s-strops.adb deleted file mode 100644 index f576692..0000000 --- a/gcc/ada/libgnat/s-strops.adb +++ /dev/null @@ -1,109 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S -- --- -- --- B o d y -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package body System.String_Ops is - - ---------------- - -- Str_Concat -- - ---------------- - - function Str_Concat (X, Y : String) return String is - begin - if X'Length = 0 then - return Y; - - else - declare - L : constant Natural := X'Length + Y'Length; - R : String (X'First .. X'First + L - 1); - - begin - R (X'Range) := X; - R (X'First + X'Length .. R'Last) := Y; - return R; - end; - end if; - end Str_Concat; - - ------------------- - -- Str_Concat_CC -- - ------------------- - - function Str_Concat_CC (X, Y : Character) return String is - R : String (1 .. 2); - - begin - R (1) := X; - R (2) := Y; - return R; - end Str_Concat_CC; - - ------------------- - -- Str_Concat_CS -- - ------------------- - - function Str_Concat_CS (X : Character; Y : String) return String is - R : String (1 .. Y'Length + 1); - - begin - R (1) := X; - R (2 .. R'Last) := Y; - return R; - end Str_Concat_CS; - - ------------------- - -- Str_Concat_SC -- - ------------------- - - function Str_Concat_SC (X : String; Y : Character) return String is - begin - if X'Length = 0 then - return [Y]; - - else - declare - R : String (X'First .. X'Last + 1); - - begin - R (X'Range) := X; - R (R'Last) := Y; - return R; - end; - end if; - end Str_Concat_SC; - -end System.String_Ops; diff --git a/gcc/ada/libgnat/s-strops.ads b/gcc/ada/libgnat/s-strops.ads deleted file mode 100644 index f72baff..0000000 --- a/gcc/ada/libgnat/s-strops.ads +++ /dev/null @@ -1,56 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- --- -- --- S Y S T E M . S T R I N G _ O P S -- --- -- --- S p e c -- --- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 3, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- --- or FITNESS FOR A PARTICULAR PURPOSE. -- --- -- --- As a special exception under Section 7 of GPL version 3, you are granted -- --- additional permissions described in the GCC Runtime Library Exception, -- --- version 3.1, as published by the Free Software Foundation. -- --- -- --- You should have received a copy of the GNU General Public License and -- --- a copy of the GCC Runtime Library Exception along with this program; -- --- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- --- <http://www.gnu.org/licenses/>. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- --- -- ------------------------------------------------------------------------------- - --- This package contains functions for runtime operations on strings --- (other than runtime comparison, found in s-strcom.ads). - --- NOTE: This package is obsolescent. It is no longer used by the compiler --- which now generates concatenation inline. It is retained only because --- it may be used during bootstrapping using old versions of the compiler. - -pragma Compiler_Unit_Warning; - -package System.String_Ops is - pragma Pure; - - function Str_Concat (X, Y : String) return String; - -- Concatenate two strings and return resulting string - - function Str_Concat_SC (X : String; Y : Character) return String; - -- Concatenate string and character - - function Str_Concat_CS (X : Character; Y : String) return String; - -- Concatenate character and string - - function Str_Concat_CC (X, Y : Character) return String; - -- Concatenate two characters - -end System.String_Ops; diff --git a/gcc/ada/libgnat/s-ststop.adb b/gcc/ada/libgnat/s-ststop.adb index c1f832a..bffe65e 100644 --- a/gcc/ada/libgnat/s-ststop.adb +++ b/gcc/ada/libgnat/s-ststop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,13 +29,10 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Ada.IO_Exceptions; use Ada.IO_Exceptions; with Ada.Streams; use Ada.Streams; with Ada.Unchecked_Conversion; -with System; use System; with System.Storage_Elements; use System.Storage_Elements; with System.Stream_Attributes; diff --git a/gcc/ada/libgnat/s-ststop.ads b/gcc/ada/libgnat/s-ststop.ads index a19cdc8..1320037 100644 --- a/gcc/ada/libgnat/s-ststop.ads +++ b/gcc/ada/libgnat/s-ststop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -63,8 +63,6 @@ -- handles the XDR implementation of System.Stream_Attributes in particular -- which does not permit block io optimization. -pragma Compiler_Unit_Warning; - with Ada.Streams; with System.Storage_Elements; diff --git a/gcc/ada/libgnat/s-tasloc.adb b/gcc/ada/libgnat/s-tasloc.adb index b451d2c..4c5b813 100644 --- a/gcc/ada/libgnat/s-tasloc.adb +++ b/gcc/ada/libgnat/s-tasloc.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, AdaCore -- +-- Copyright (C) 1997-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-tasloc.ads b/gcc/ada/libgnat/s-tasloc.ads index d9a7de5..207f7dd 100644 --- a/gcc/ada/libgnat/s-tasloc.ads +++ b/gcc/ada/libgnat/s-tasloc.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, AdaCore -- +-- Copyright (C) 1998-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-traceb.adb b/gcc/ada/libgnat/s-traceb.adb index d43d757..64aca62 100644 --- a/gcc/ada/libgnat/s-traceb.adb +++ b/gcc/ada/libgnat/s-traceb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -34,8 +34,6 @@ -- Note: this unit must be compiled using -fno-optimize-sibling-calls. -- See comment below in body of Call_Chain for details on the reason. -pragma Compiler_Unit_Warning; - package body System.Traceback is procedure Call_Chain diff --git a/gcc/ada/libgnat/s-traceb.ads b/gcc/ada/libgnat/s-traceb.ads index 21e8af2..5eba979 100644 --- a/gcc/ada/libgnat/s-traceb.ads +++ b/gcc/ada/libgnat/s-traceb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -33,8 +33,6 @@ -- execution location. The traceback shows the locations of calls in the call -- chain, up to either the top or a designated number of levels. -pragma Compiler_Unit_Warning; - with System.Traceback_Entries; package System.Traceback is diff --git a/gcc/ada/libgnat/s-traceb__hpux.adb b/gcc/ada/libgnat/s-traceb__hpux.adb index e5af76d..d95a039 100644 --- a/gcc/ada/libgnat/s-traceb__hpux.adb +++ b/gcc/ada/libgnat/s-traceb__hpux.adb @@ -7,7 +7,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-traceb__mastop.adb b/gcc/ada/libgnat/s-traceb__mastop.adb index e50bfdc..0c7c4ed 100644 --- a/gcc/ada/libgnat/s-traceb__mastop.adb +++ b/gcc/ada/libgnat/s-traceb__mastop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-traent.adb b/gcc/ada/libgnat/s-traent.adb index a471ede..6f615b0 100644 --- a/gcc/ada/libgnat/s-traent.adb +++ b/gcc/ada/libgnat/s-traent.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.Traceback_Entries is ------------ diff --git a/gcc/ada/libgnat/s-traent.ads b/gcc/ada/libgnat/s-traent.ads index a534dd8..23e327c 100644 --- a/gcc/ada/libgnat/s-traent.ads +++ b/gcc/ada/libgnat/s-traent.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -38,8 +38,6 @@ -- version of the package, an entry is a mere code location representing the -- address of a call instruction part of the call-chain. -pragma Compiler_Unit_Warning; - package System.Traceback_Entries is pragma Preelaborate; diff --git a/gcc/ada/libgnat/s-trasym.adb b/gcc/ada/libgnat/s-trasym.adb index 5ed1816..6182b76 100644 --- a/gcc/ada/libgnat/s-trasym.adb +++ b/gcc/ada/libgnat/s-trasym.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-trasym.ads b/gcc/ada/libgnat/s-trasym.ads index e24d109..6de8903 100644 --- a/gcc/ada/libgnat/s-trasym.ads +++ b/gcc/ada/libgnat/s-trasym.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-trasym__dwarf.adb b/gcc/ada/libgnat/s-trasym__dwarf.adb index fb26d77..a528471 100644 --- a/gcc/ada/libgnat/s-trasym__dwarf.adb +++ b/gcc/ada/libgnat/s-trasym__dwarf.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, AdaCore -- +-- Copyright (C) 1999-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-tsmona.adb b/gcc/ada/libgnat/s-tsmona.adb index f8134ff..2ae7fcb 100644 --- a/gcc/ada/libgnat/s-tsmona.adb +++ b/gcc/ada/libgnat/s-tsmona.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, AdaCore -- +-- Copyright (C) 2012-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-tsmona__linux.adb b/gcc/ada/libgnat/s-tsmona__linux.adb index 400b7ad..19b7b8f 100644 --- a/gcc/ada/libgnat/s-tsmona__linux.adb +++ b/gcc/ada/libgnat/s-tsmona__linux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, AdaCore -- +-- Copyright (C) 2012-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-tsmona__mingw.adb b/gcc/ada/libgnat/s-tsmona__mingw.adb index 42ec175..396e5f7 100644 --- a/gcc/ada/libgnat/s-tsmona__mingw.adb +++ b/gcc/ada/libgnat/s-tsmona__mingw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2012-2021, AdaCore -- +-- Copyright (C) 2012-2022, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-unstyp.ads b/gcc/ada/libgnat/s-unstyp.ads index 197fd24..2a700a0 100644 --- a/gcc/ada/libgnat/s-unstyp.ads +++ b/gcc/ada/libgnat/s-unstyp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -35,8 +35,6 @@ -- also contains some related definitions for other specialized types -- used by the compiler in connection with packed array types. -pragma Compiler_Unit_Warning; - package System.Unsigned_Types is pragma Pure; pragma No_Elaboration_Code_All; diff --git a/gcc/ada/libgnat/s-utf_32.adb b/gcc/ada/libgnat/s-utf_32.adb index 4f5c749..eb44ace 100644 --- a/gcc/ada/libgnat/s-utf_32.adb +++ b/gcc/ada/libgnat/s-utf_32.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,18 +29,13 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; +pragma Style_Checks ("M512"); +-- Allow long lines in this unit -pragma Style_Checks (Off); --- Allow long lines in this unit. Note this could be more specific, but we --- keep this simple form because of bootstrap constraints ??? - --- pragma Warnings (Off, "non-static constant in preelaborated unit"); --- We need this to be pure, and the three constants in question are not a --- real problem, they are completely known at compile time. This pragma --- is commented out for now, because we still want to be able to bootstrap --- with old versions of the compiler that did not support this form. We --- have added additional pragma Warnings (Off/On) for now ??? +pragma Warnings (Off, "non-static constant in preelaborated unit"); +-- We need package to be pure, and multiple constants in this unit will +-- trigger the "non-static" warning - so ignore this since they are known at +-- compile time and not a real problem for us. package body System.UTF_32 is @@ -1858,9 +1853,6 @@ package body System.UTF_32 is (16#F0000#, 16#FFFFD#), -- (Co) <Plane 15 Private Use, First> .. <Plane 15 Private Use, Last> (16#100000#, 16#10FFFD#)); -- (Co) <Plane 16 Private Use, First> .. <Plane 16 Private Use, Last> - pragma Warnings (Off); - -- Temporary, until pragma at start can be activated ??? - -- The following array is parallel to the Unicode_Ranges table above. For -- each entry in the Unicode_Ranges table, there is a corresponding entry -- in the following table indicating the corresponding unicode category. @@ -6508,9 +6500,6 @@ package body System.UTF_32 is (16#1FBF0#, 16#1FBF9#), -- SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE (16#2F800#, 16#2FA1D#)); -- CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - pragma Warnings (On); - -- Temporary until pragma Warnings at start can be activated ??? - type Decomposition_Mapping is record Item : UTF_32; First_Char_Mapping : UTF_32; @@ -12314,7 +12303,7 @@ package body System.UTF_32 is return C = Nd; end Is_UTF_32_Digit; - ---------------------- + ---------------------- -- Is_UTF_32_Letter -- ---------------------- diff --git a/gcc/ada/libgnat/s-utf_32.ads b/gcc/ada/libgnat/s-utf_32.ads index def16be..9fd183b 100644 --- a/gcc/ada/libgnat/s-utf_32.ads +++ b/gcc/ada/libgnat/s-utf_32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,7 +41,8 @@ -- the same services. The reason this package is in System is so that it can -- with'ed by other packages in the Ada and System hierarchies. -pragma Compiler_Unit_Warning; +-- Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in +-- gcc-interface/Make-lang.in for details on the constraints. package System.UTF_32 is pragma Pure; diff --git a/gcc/ada/libgnat/s-vade128.ads b/gcc/ada/libgnat/s-vade128.ads index e96fa0d..5556c09 100644 --- a/gcc/ada/libgnat/s-vade128.ads +++ b/gcc/ada/libgnat/s-vade128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vade32.ads b/gcc/ada/libgnat/s-vade32.ads index 22888ad..ea71fa4 100644 --- a/gcc/ada/libgnat/s-vade32.ads +++ b/gcc/ada/libgnat/s-vade32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vade64.ads b/gcc/ada/libgnat/s-vade64.ads index d52c139..e5726a9 100644 --- a/gcc/ada/libgnat/s-vade64.ads +++ b/gcc/ada/libgnat/s-vade64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vaen16.ads b/gcc/ada/libgnat/s-vaen16.ads index 6ea6071..3407803 100644 --- a/gcc/ada/libgnat/s-vaen16.ads +++ b/gcc/ada/libgnat/s-vaen16.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vaen32.ads b/gcc/ada/libgnat/s-vaen32.ads index e1a7644..672351e 100644 --- a/gcc/ada/libgnat/s-vaen32.ads +++ b/gcc/ada/libgnat/s-vaen32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vaenu8.ads b/gcc/ada/libgnat/s-vaenu8.ads index 395a969..7d9995b 100644 --- a/gcc/ada/libgnat/s-vaenu8.ads +++ b/gcc/ada/libgnat/s-vaenu8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vafi128.ads b/gcc/ada/libgnat/s-vafi128.ads index 4961b96..900bdae 100644 --- a/gcc/ada/libgnat/s-vafi128.ads +++ b/gcc/ada/libgnat/s-vafi128.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vafi32.ads b/gcc/ada/libgnat/s-vafi32.ads index 3a9c4ff..a352d3d 100644 --- a/gcc/ada/libgnat/s-vafi32.ads +++ b/gcc/ada/libgnat/s-vafi32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vafi64.ads b/gcc/ada/libgnat/s-vafi64.ads index c5250db..a67f9f5 100644 --- a/gcc/ada/libgnat/s-vafi64.ads +++ b/gcc/ada/libgnat/s-vafi64.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valboo.adb b/gcc/ada/libgnat/s-valboo.adb index 7559de3..54b1265 100644 --- a/gcc/ada/libgnat/s-valboo.adb +++ b/gcc/ada/libgnat/s-valboo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -55,7 +55,8 @@ is begin Normalize_String (S, F, L); - pragma Assert (F = System.Val_Util.First_Non_Space_Ghost (S)); + pragma Assert (F = System.Val_Util.First_Non_Space_Ghost + (S, Str'First, Str'Last)); if S (F .. L) = "TRUE" then return True; diff --git a/gcc/ada/libgnat/s-valboo.ads b/gcc/ada/libgnat/s-valboo.ads index c4448e4..a9afc45 100644 --- a/gcc/ada/libgnat/s-valboo.ads +++ b/gcc/ada/libgnat/s-valboo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -51,7 +51,8 @@ is (not System.Val_Util.Only_Space_Ghost (Str, Str'First, Str'Last) and then (declare - F : constant Positive := System.Val_Util.First_Non_Space_Ghost (Str); + F : constant Positive := System.Val_Util.First_Non_Space_Ghost + (Str, Str'First, Str'Last); begin (F <= Str'Last - 3 and then Str (F) in 't' | 'T' @@ -82,7 +83,8 @@ is Pre => Is_Boolean_Image_Ghost (Str), Post => Value_Boolean'Result = - (Str (System.Val_Util.First_Non_Space_Ghost (Str)) in 't' | 'T'); + (Str (System.Val_Util.First_Non_Space_Ghost + (Str, Str'First, Str'Last)) in 't' | 'T'); -- Computes Boolean'Value (Str) end System.Val_Bool; diff --git a/gcc/ada/libgnat/s-valcha.adb b/gcc/ada/libgnat/s-valcha.adb index 587cdbb..4a39309 100644 --- a/gcc/ada/libgnat/s-valcha.adb +++ b/gcc/ada/libgnat/s-valcha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valcha.ads b/gcc/ada/libgnat/s-valcha.ads index ee3b037..265fa1f 100644 --- a/gcc/ada/libgnat/s-valcha.ads +++ b/gcc/ada/libgnat/s-valcha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valflt.ads b/gcc/ada/libgnat/s-valflt.ads index 04ffb71..788dd8a 100644 --- a/gcc/ada/libgnat/s-valflt.ads +++ b/gcc/ada/libgnat/s-valflt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valint.adb b/gcc/ada/libgnat/s-valint.adb index b3f0e29..71782ee 100644 --- a/gcc/ada/libgnat/s-valint.adb +++ b/gcc/ada/libgnat/s-valint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valint.ads b/gcc/ada/libgnat/s-valint.ads index 702f7442..4fef265 100644 --- a/gcc/ada/libgnat/s-valint.ads +++ b/gcc/ada/libgnat/s-valint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,10 +43,11 @@ package System.Val_Int is package Impl is new Value_I (Integer, Unsigned, Val_Uns.Scan_Raw_Unsigned); - function Scan_Integer + procedure Scan_Integer (Str : String; Ptr : not null access Integer; - Max : Integer) return Integer + Max : Integer; + Res : out Integer) renames Impl.Scan_Integer; function Value_Integer (Str : String) return Integer diff --git a/gcc/ada/libgnat/s-vallfl.ads b/gcc/ada/libgnat/s-vallfl.ads index 71da12a..cd894cd 100644 --- a/gcc/ada/libgnat/s-vallfl.ads +++ b/gcc/ada/libgnat/s-vallfl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valllf.ads b/gcc/ada/libgnat/s-valllf.ads index 477ed4e..959a27d 100644 --- a/gcc/ada/libgnat/s-valllf.ads +++ b/gcc/ada/libgnat/s-valllf.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vallli.adb b/gcc/ada/libgnat/s-vallli.adb index 4963c11..4535c5d 100644 --- a/gcc/ada/libgnat/s-vallli.adb +++ b/gcc/ada/libgnat/s-vallli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vallli.ads b/gcc/ada/libgnat/s-vallli.ads index f6527c2..ce1d9ee 100644 --- a/gcc/ada/libgnat/s-vallli.ads +++ b/gcc/ada/libgnat/s-vallli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,10 +46,11 @@ package System.Val_LLI is Long_Long_Unsigned, Val_LLU.Scan_Raw_Long_Long_Unsigned); - function Scan_Long_Long_Integer + procedure Scan_Long_Long_Integer (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Integer + Max : Integer; + Res : out Long_Long_Integer) renames Impl.Scan_Integer; function Value_Long_Long_Integer (Str : String) return Long_Long_Integer diff --git a/gcc/ada/libgnat/s-valllli.ads b/gcc/ada/libgnat/s-valllli.ads index 88aedaf..176000a 100644 --- a/gcc/ada/libgnat/s-valllli.ads +++ b/gcc/ada/libgnat/s-valllli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -46,10 +46,11 @@ package System.Val_LLLI is Long_Long_Long_Unsigned, Val_LLLU.Scan_Raw_Long_Long_Long_Unsigned); - function Scan_Long_Long_Long_Integer + procedure Scan_Long_Long_Long_Integer (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Long_Integer + Max : Integer; + Res : out Long_Long_Long_Integer) renames Impl.Scan_Integer; function Value_Long_Long_Long_Integer diff --git a/gcc/ada/libgnat/s-vallllu.ads b/gcc/ada/libgnat/s-vallllu.ads index 2a1957a..c6c9ece 100644 --- a/gcc/ada/libgnat/s-vallllu.ads +++ b/gcc/ada/libgnat/s-vallllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,26 +32,40 @@ -- This package contains routines for scanning modular Long_Long_Unsigned -- values for use in Text_IO.Modular_IO, and the Value attribute. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore, + Subprogram_Variant => Ignore); + with System.Unsigned_Types; with System.Value_U; -package System.Val_LLLU is +package System.Val_LLLU with SPARK_Mode is pragma Preelaborate; subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned; package Impl is new Value_U (Long_Long_Long_Unsigned); - function Scan_Raw_Long_Long_Long_Unsigned + procedure Scan_Raw_Long_Long_Long_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Long_Unsigned + Max : Integer; + Res : out Long_Long_Long_Unsigned) renames Impl.Scan_Raw_Unsigned; - function Scan_Long_Long_Long_Unsigned + procedure Scan_Long_Long_Long_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Long_Unsigned + Max : Integer; + Res : out Long_Long_Long_Unsigned) renames Impl.Scan_Unsigned; function Value_Long_Long_Long_Unsigned diff --git a/gcc/ada/libgnat/s-valllu.adb b/gcc/ada/libgnat/s-valllu.adb index 67b6258..f46b1bd 100644 --- a/gcc/ada/libgnat/s-valllu.adb +++ b/gcc/ada/libgnat/s-valllu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valllu.ads b/gcc/ada/libgnat/s-valllu.ads index c282bc3..0a5cb34 100644 --- a/gcc/ada/libgnat/s-valllu.ads +++ b/gcc/ada/libgnat/s-valllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,26 +32,40 @@ -- This package contains routines for scanning modular Long_Long_Unsigned -- values for use in Text_IO.Modular_IO, and the Value attribute. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore, + Subprogram_Variant => Ignore); + with System.Unsigned_Types; with System.Value_U; -package System.Val_LLU is +package System.Val_LLU with SPARK_Mode is pragma Preelaborate; subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned; package Impl is new Value_U (Long_Long_Unsigned); - function Scan_Raw_Long_Long_Unsigned + procedure Scan_Raw_Long_Long_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Unsigned + Max : Integer; + Res : out Long_Long_Unsigned) renames Impl.Scan_Raw_Unsigned; - function Scan_Long_Long_Unsigned + procedure Scan_Long_Long_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Long_Long_Unsigned + Max : Integer; + Res : out Long_Long_Unsigned) renames Impl.Scan_Unsigned; function Value_Long_Long_Unsigned diff --git a/gcc/ada/libgnat/s-valrea.adb b/gcc/ada/libgnat/s-valrea.adb index b37383a..c9e5505 100644 --- a/gcc/ada/libgnat/s-valrea.adb +++ b/gcc/ada/libgnat/s-valrea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valrea.ads b/gcc/ada/libgnat/s-valrea.ads index e2613e0..1d55fc9 100644 --- a/gcc/ada/libgnat/s-valrea.ads +++ b/gcc/ada/libgnat/s-valrea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valued.adb b/gcc/ada/libgnat/s-valued.adb index 100d870..c4a78a2 100644 --- a/gcc/ada/libgnat/s-valued.adb +++ b/gcc/ada/libgnat/s-valued.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -186,7 +186,7 @@ package body System.Value_D is elsif S > 0 then declare - LS : Integer := S; + LS : Integer := S; begin Y := Safe_Expont (B, LS, 10 ** Integer'Max (0, Scale)); @@ -232,7 +232,6 @@ package body System.Value_D is Base : Unsigned; ScaleB : Integer; Extra : Unsigned; - pragma Unreferenced (Extra); Minus : Boolean; Val : Uns; @@ -250,7 +249,6 @@ package body System.Value_D is Base : Unsigned; ScaleB : Integer; Extra : Unsigned; - pragma Unreferenced (Extra); Minus : Boolean; Val : Uns; diff --git a/gcc/ada/libgnat/s-valued.ads b/gcc/ada/libgnat/s-valued.ads index 54c34d1..6cc998a 100644 --- a/gcc/ada/libgnat/s-valued.ads +++ b/gcc/ada/libgnat/s-valued.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valuef.adb b/gcc/ada/libgnat/s-valuef.adb index 5ac5ff6..e252a28 100644 --- a/gcc/ada/libgnat/s-valuef.adb +++ b/gcc/ada/libgnat/s-valuef.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -255,7 +255,7 @@ package body System.Value_F is elsif ScaleB > 0 then declare - LS : Integer := ScaleB; + LS : Integer := ScaleB; begin Y := Safe_Expont (B, LS, Den); diff --git a/gcc/ada/libgnat/s-valuef.ads b/gcc/ada/libgnat/s-valuef.ads index 968d0cd..1c21ac2 100644 --- a/gcc/ada/libgnat/s-valuef.ads +++ b/gcc/ada/libgnat/s-valuef.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valuei.adb b/gcc/ada/libgnat/s-valuei.adb index 0ad66de..83828d3 100644 --- a/gcc/ada/libgnat/s-valuei.adb +++ b/gcc/ada/libgnat/s-valuei.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,10 +37,11 @@ package body System.Value_I is -- Scan_Integer -- ------------------ - function Scan_Integer + procedure Scan_Integer (Str : String; Ptr : not null access Integer; - Max : Integer) return Int + Max : Integer; + Res : out Int) is Uval : Uns; -- Unsigned result @@ -59,13 +60,13 @@ package body System.Value_I is Bad_Value (Str); end if; - Uval := Scan_Raw_Unsigned (Str, Ptr, Max); + Scan_Raw_Unsigned (Str, Ptr, Max, Uval); -- Deal with overflow cases, and also with largest negative number if Uval > Uns (Int'Last) then if Minus and then Uval = Uns (-(Int'First)) then - return Int'First; + Res := Int'First; else Bad_Value (Str); end if; @@ -73,12 +74,12 @@ package body System.Value_I is -- Negative values elsif Minus then - return -(Int (Uval)); + Res := -(Int (Uval)); -- Positive values else - return Int (Uval); + Res := Int (Uval); end if; end Scan_Integer; @@ -106,7 +107,7 @@ package body System.Value_I is V : Int; P : aliased Integer := Str'First; begin - V := Scan_Integer (Str, P'Access, Str'Last); + Scan_Integer (Str, P'Access, Str'Last, V); Scan_Trailing_Blanks (Str, P); return V; end; diff --git a/gcc/ada/libgnat/s-valuei.ads b/gcc/ada/libgnat/s-valuei.ads index 23dc8a8..e0a34d9 100644 --- a/gcc/ada/libgnat/s-valuei.ads +++ b/gcc/ada/libgnat/s-valuei.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -38,19 +38,21 @@ generic type Uns is mod <>; - with function Scan_Raw_Unsigned + with procedure Scan_Raw_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Uns; + Max : Integer; + Res : out Uns); package System.Value_I is pragma Preelaborate; - function Scan_Integer + procedure Scan_Integer (Str : String; Ptr : not null access Integer; - Max : Integer) return Int; - -- This function scans the string starting at Str (Ptr.all) for a valid + Max : Integer; + Res : out Int); + -- This procedure scans the string starting at Str (Ptr.all) for a valid -- integer according to the syntax described in (RM 3.5(43)). The substring -- scanned extends no further than Str (Max). There are three cases for the -- return: diff --git a/gcc/ada/libgnat/s-valuen.adb b/gcc/ada/libgnat/s-valuen.adb index ef613a2..6c40f36 100644 --- a/gcc/ada/libgnat/s-valuen.adb +++ b/gcc/ada/libgnat/s-valuen.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valuen.ads b/gcc/ada/libgnat/s-valuen.ads index db8ad1d..49eaa29 100644 --- a/gcc/ada/libgnat/s-valuen.ads +++ b/gcc/ada/libgnat/s-valuen.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valuer.adb b/gcc/ada/libgnat/s-valuer.adb index a1793fa..4b4e887 100644 --- a/gcc/ada/libgnat/s-valuer.adb +++ b/gcc/ada/libgnat/s-valuer.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -506,7 +506,6 @@ package body System.Value_R is -- Local copy of string pointer Start : Positive; - pragma Unreferenced (Start); Value : Uns; -- Mantissa as an Integer diff --git a/gcc/ada/libgnat/s-valuer.ads b/gcc/ada/libgnat/s-valuer.ads index a0103b8..3279090 100644 --- a/gcc/ada/libgnat/s-valuer.ads +++ b/gcc/ada/libgnat/s-valuer.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valueu.adb b/gcc/ada/libgnat/s-valueu.adb index 5b77358..991d4a5 100644 --- a/gcc/ada/libgnat/s-valueu.adb +++ b/gcc/ada/libgnat/s-valueu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,18 +29,220 @@ -- -- ------------------------------------------------------------------------------ -with System.Val_Util; use System.Val_Util; - package body System.Value_U is + -- Ghost code, loop invariants and assertions in this unit are meant for + -- analysis only, not for run-time checking, as it would be too costly + -- otherwise. This is enforced by setting the assertion policy to Ignore. + + pragma Assertion_Policy (Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore, + Assert_And_Cut => Ignore, + Subprogram_Variant => Ignore); + + -- Local lemmas + + procedure Lemma_Digit_Is_Before_Last + (Str : String; + P : Integer; + From : Integer; + To : Integer) + with Ghost, + Pre => Str'Last /= Positive'Last + and then From in Str'Range + and then To in From .. Str'Last + and then Str (From) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + and then P in From .. To + and then Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F', + Post => P /= Last_Hexa_Ghost (Str (From .. To)) + 1; + -- If the character at position P is a digit, P cannot be the position of + -- of the first non-digit in Str. + + procedure Lemma_End_Of_Scan + (Str : String; + From : Integer; + To : Integer; + Base : Uns; + Acc : Uns) + with Ghost, + Pre => Str'Last /= Positive'Last and then From > To, + Post => Scan_Based_Number_Ghost (Str, From, To, Base, Acc) = + (False, Acc); + -- Unfold the definition of Scan_Based_Number_Ghost on an empty string + + procedure Lemma_Scan_Digit + (Str : String; + P : Integer; + Lst : Integer; + Digit : Uns; + Base : Uns; + Old_Acc : Uns; + Acc : Uns; + Scan_Val : Uns_Option; + Old_Overflow : Boolean; + Overflow : Boolean) + with Ghost, + Pre => Str'Last /= Positive'Last + and then Lst in Str'Range + and then P in Str'First .. Lst + and then Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + and then Digit = Hexa_To_Unsigned_Ghost (Str (P)) + and then Only_Hexa_Ghost (Str, P, Lst) + and then Base in 2 .. 16 + and then (if Digit < Base and then Old_Acc <= Uns'Last / Base + then Acc = Base * Old_Acc + Digit) + and then (if Digit >= Base + or else Old_Acc > Uns'Last / Base + or else (Old_Acc > (Uns'Last - Base + 1) / Base + and then Acc < Uns'Last / Base) + then Overflow + else Overflow = Old_Overflow) + and then + (if not Old_Overflow then + Scan_Val = Scan_Based_Number_Ghost + (Str, P, Lst, Base, Old_Acc)), + Post => + (if not Overflow then + Scan_Val = Scan_Based_Number_Ghost + (Str, P + 1, Lst, Base, Acc)) + and then + (if Overflow then Old_Overflow or else Scan_Val.Overflow); + -- Unfold the definition of Scan_Based_Number_Ghost when the string starts + -- with a digit. + + procedure Lemma_Scan_Underscore + (Str : String; + P : Integer; + From : Integer; + To : Integer; + Lst : Integer; + Base : Uns; + Acc : Uns; + Scan_Val : Uns_Option; + Overflow : Boolean; + Ext : Boolean) + with Ghost, + Pre => Str'Last /= Positive'Last + and then From in Str'Range + and then To in From .. Str'Last + and then Lst <= To + and then P in From .. Lst + 1 + and then P <= To + and then + (if Ext then + Is_Based_Format_Ghost (Str (From .. To)) + and then Lst = Last_Hexa_Ghost (Str (From .. To)) + else Is_Natural_Format_Ghost (Str (From .. To)) + and then Lst = Last_Number_Ghost (Str (From .. To))) + and then Str (P) = '_' + and then + (if not Overflow then + Scan_Val = Scan_Based_Number_Ghost (Str, P, Lst, Base, Acc)), + Post => P + 1 <= Lst + and then + (if Ext then Str (P + 1) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + else Str (P + 1) in '0' .. '9') + and then + (if not Overflow then + Scan_Val = Scan_Based_Number_Ghost (Str, P + 1, Lst, Base, Acc)); + -- Unfold the definition of Scan_Based_Number_Ghost when the string starts + -- with an underscore. + + ----------------------------- + -- Local lemma null bodies -- + ----------------------------- + + procedure Lemma_Digit_Is_Before_Last + (Str : String; + P : Integer; + From : Integer; + To : Integer) + is null; + + procedure Lemma_End_Of_Scan + (Str : String; + From : Integer; + To : Integer; + Base : Uns; + Acc : Uns) + is null; + + procedure Lemma_Scan_Underscore + (Str : String; + P : Integer; + From : Integer; + To : Integer; + Lst : Integer; + Base : Uns; + Acc : Uns; + Scan_Val : Uns_Option; + Overflow : Boolean; + Ext : Boolean) + is null; + + --------------------- + -- Last_Hexa_Ghost -- + --------------------- + + function Last_Hexa_Ghost (Str : String) return Positive is + begin + for J in Str'Range loop + if Str (J) not in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' then + return J - 1; + end if; + + pragma Loop_Invariant + (for all K in Str'First .. J => + Str (K) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_'); + end loop; + + return Str'Last; + end Last_Hexa_Ghost; + + ---------------------- + -- Lemma_Scan_Digit -- + ---------------------- + + procedure Lemma_Scan_Digit + (Str : String; + P : Integer; + Lst : Integer; + Digit : Uns; + Base : Uns; + Old_Acc : Uns; + Acc : Uns; + Scan_Val : Uns_Option; + Old_Overflow : Boolean; + Overflow : Boolean) + is + pragma Unreferenced (Str, P, Lst, Scan_Val, Overflow, Old_Overflow); + begin + if Digit >= Base then + null; + + elsif Old_Acc <= (Uns'Last - Base + 1) / Base then + pragma Assert (not Scan_Overflows_Ghost (Digit, Base, Old_Acc)); + + elsif Old_Acc > Uns'Last / Base then + null; + + else + pragma Assert + ((Acc < Uns'Last / Base) = + Scan_Overflows_Ghost (Digit, Base, Old_Acc)); + end if; + end Lemma_Scan_Digit; + ----------------------- -- Scan_Raw_Unsigned -- ----------------------- - function Scan_Raw_Unsigned + procedure Scan_Raw_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Uns + Max : Integer; + Res : out Uns) is P : Integer; -- Local copy of the pointer @@ -63,6 +265,40 @@ package body System.Value_U is Digit : Uns; -- Digit value + Ptr_Old : constant Integer := Ptr.all + with Ghost; + Last_Num_Init : constant Integer := + Last_Number_Ghost (Str (Ptr.all .. Max)) + with Ghost; + Init_Val : constant Uns_Option := + Scan_Based_Number_Ghost (Str, Ptr.all, Last_Num_Init) + with Ghost; + Starts_As_Based : constant Boolean := + Last_Num_Init < Max - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Str (Last_Num_Init + 2) in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + with Ghost; + Last_Num_Based : constant Integer := + (if Starts_As_Based + then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Max)) + else Last_Num_Init) + with Ghost; + Is_Based : constant Boolean := + Starts_As_Based + and then Last_Num_Based < Max + and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1) + with Ghost; + Based_Val : constant Uns_Option := + (if Starts_As_Based and then not Init_Val.Overflow + then Scan_Based_Number_Ghost + (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value) + else Init_Val) + with Ghost; + First_Exp : constant Integer := + (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1) + with Ghost; + begin -- We do not tolerate strings with Str'Last = Positive'Last @@ -85,9 +321,20 @@ package body System.Value_U is Umax10 : constant Uns := Uns'Last / 10; -- Numbers bigger than Umax10 overflow if multiplied by 10 + Old_Uval : Uns with Ghost; + Old_Overflow : Boolean with Ghost; + begin -- Loop through decimal digits loop + pragma Loop_Invariant (P in P'Loop_Entry .. Last_Num_Init + 1); + pragma Loop_Invariant + (if Overflow then Init_Val.Overflow); + pragma Loop_Invariant + (if not Overflow + then Init_Val = Scan_Based_Number_Ghost + (Str, P, Last_Num_Init, Acc => Uval)); + exit when P > Max; Digit := Character'Pos (Str (P)) - Character'Pos ('0'); @@ -96,6 +343,9 @@ package body System.Value_U is if Digit > 9 then if Str (P) = '_' then + Lemma_Scan_Underscore + (Str, P, Ptr_Old, Max, Last_Num_Init, 10, Uval, + Init_Val, Overflow, False); Scan_Underscore (Str, P, Ptr, Max, False); else exit; @@ -104,6 +354,9 @@ package body System.Value_U is -- Accumulate result, checking for overflow else + Old_Uval := Uval; + Old_Overflow := Overflow; + if Uval <= Umax then Uval := 10 * Uval + Digit; @@ -118,11 +371,22 @@ package body System.Value_U is end if; end if; + Lemma_Scan_Digit + (Str, P, Last_Num_Init, Digit, 10, Old_Uval, Uval, Init_Val, + Old_Overflow, Overflow); + P := P + 1; end if; end loop; + pragma Assert (P = Last_Num_Init + 1); + pragma Assert (Init_Val.Overflow = Overflow); end; + pragma Assert_And_Cut + (P = Last_Num_Init + 1 + and then Overflow = Init_Val.Overflow + and then (if not Overflow then Init_Val.Value = Uval)); + Ptr.all := P; -- Deal with based case. We recognize either the standard '#' or the @@ -153,10 +417,18 @@ package body System.Value_U is UmaxB : constant Uns := Uns'Last / Base; -- Numbers bigger than UmaxB overflow if multiplied by base + Old_Uval : Uns with Ghost; + Old_Overflow : Boolean with Ghost; + begin + pragma Assert + (if Str (P) in '0' .. '9' | 'A' .. 'F' | 'a' .. 'f' + then Is_Based_Format_Ghost (Str (P .. Max))); + -- Loop to scan out based integer value loop + -- We require a digit at this stage if Str (P) in '0' .. '9' then @@ -177,9 +449,32 @@ package body System.Value_U is else Uval := Base; + Base := 10; + pragma Assert (Ptr.all = Last_Num_Init + 1); + pragma Assert (if not Overflow then Uval = Init_Val.Value); exit; end if; + Lemma_Digit_Is_Before_Last (Str, P, Last_Num_Init + 2, Max); + + pragma Loop_Invariant (P in P'Loop_Entry .. Last_Num_Based); + pragma Loop_Invariant + (Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + and then Digit = Hexa_To_Unsigned_Ghost (Str (P))); + pragma Loop_Invariant + (if Overflow'Loop_Entry then Overflow); + pragma Loop_Invariant + (if Overflow then + Overflow'Loop_Entry or else Based_Val.Overflow); + pragma Loop_Invariant + (if not Overflow + then Based_Val = Scan_Based_Number_Ghost + (Str, P, Last_Num_Based, Base, Uval)); + pragma Loop_Invariant (Ptr.all = Last_Num_Init + 1); + + Old_Uval := Uval; + Old_Overflow := Overflow; + -- If digit is too large, just signal overflow and continue. -- The idea here is to keep scanning as long as the input is -- syntactically valid, even if we have detected overflow @@ -203,6 +498,10 @@ package body System.Value_U is end if; end if; + Lemma_Scan_Digit + (Str, P, Last_Num_Based, Digit, Base, Old_Uval, Uval, + Based_Val, Old_Overflow, Overflow); + -- If at end of string with no base char, not a based number -- but we signal Constraint_Error and set the pointer past -- the end of the field, since this is what the ACVC tests @@ -219,23 +518,62 @@ package body System.Value_U is if Str (P) = Base_Char then Ptr.all := P + 1; + pragma Assert (Ptr.all = Last_Num_Based + 2); + Lemma_End_Of_Scan (Str, P, Last_Num_Based, Base, Uval); + pragma Assert (if not Overflow then Uval = Based_Val.Value); exit; -- Deal with underscore elsif Str (P) = '_' then + Lemma_Scan_Underscore + (Str, P, Last_Num_Init + 2, Max, Last_Num_Based, Base, + Uval, Based_Val, Overflow, True); Scan_Underscore (Str, P, Ptr, Max, True); + pragma Assert + (if not Overflow + then Based_Val = Scan_Based_Number_Ghost + (Str, P, Last_Num_Based, Base, Uval)); end if; - end loop; end; + pragma Assert + (if Starts_As_Based then P = Last_Num_Based + 1 + else P = Last_Num_Init + 2); + pragma Assert + (Overflow = + (Init_Val.Overflow + or else Init_Val.Value not in 2 .. 16 + or else (Starts_As_Based and then Based_Val.Overflow))); end if; + pragma Assert_And_Cut + (Overflow = + (Init_Val.Overflow + or else + (Last_Num_Init < Max - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Init_Val.Value not in 2 .. 16) + or else (Starts_As_Based and then Based_Val.Overflow)) + and then + (if not Overflow then + (if Is_Based then Uval = Based_Val.Value + else Uval = Init_Val.Value)) + and then Ptr.all = First_Exp + and then Base in 2 .. 16 + and then + (if not Overflow then + (if Is_Based then Base = Init_Val.Value else Base = 10))); + -- Come here with scanned unsigned value in Uval. The only remaining -- required step is to deal with exponent if one is present. Scan_Exponent (Str, Ptr, Max, Expon); + pragma Assert + (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. Max)) + then Expon = Scan_Exponent_Ghost (Str (First_Exp .. Max))); + if Expon /= 0 and then Uval /= 0 then -- For non-zero value, scale by exponent value. No need to do this @@ -246,8 +584,24 @@ package body System.Value_U is UmaxB : constant Uns := Uns'Last / Base; -- Numbers bigger than UmaxB overflow if multiplied by base + Res_Val : constant Uns_Option := + Exponent_Unsigned_Ghost (Uval, Expon, Base) + with Ghost; begin for J in 1 .. Expon loop + pragma Loop_Invariant + (if Overflow'Loop_Entry then Overflow); + pragma Loop_Invariant + (if Overflow + then Overflow'Loop_Entry or else Res_Val.Overflow); + pragma Loop_Invariant + (if not Overflow + then Res_Val = Exponent_Unsigned_Ghost + (Uval, Expon - J + 1, Base)); + + pragma Assert + ((Uval > UmaxB) = Scan_Overflows_Ghost (0, Base, Uval)); + if Uval > UmaxB then Overflow := True; exit; @@ -255,15 +609,45 @@ package body System.Value_U is Uval := Uval * Base; end loop; + pragma Assert + (Overflow = (Init_Val.Overflow + or else + (Last_Num_Init < Max - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Init_Val.Value not in 2 .. 16) + or else (Starts_As_Based and then Based_Val.Overflow) + or else Res_Val.Overflow)); + pragma Assert + (Overflow = Raw_Unsigned_Overflows_Ghost (Str, Ptr_Old, Max)); + pragma Assert + (Exponent_Unsigned_Ghost (Uval, 0, Base) = (False, Uval)); + pragma Assert + (if not Overflow then Uval = Res_Val.Value); + pragma Assert + (if not Overflow then + Uval = Scan_Raw_Unsigned_Ghost (Str, Ptr_Old, Max)); end; end if; + pragma Assert + (if Expon = 0 or else Uval = 0 then + Exponent_Unsigned_Ghost (Uval, Expon, Base) = (False, Uval)); + pragma Assert + (Overflow = Raw_Unsigned_Overflows_Ghost (Str, Ptr_Old, Max)); + pragma Assert + (if not Overflow then + Uval = Scan_Raw_Unsigned_Ghost (Str, Ptr_Old, Max)); - -- Return result, dealing with sign and overflow + -- Return result, dealing with overflow if Overflow then Bad_Value (Str); + pragma Annotate + (GNATprove, Intentional, + "call to nonreturning subprogram might be executed", + "it is expected that Constraint_Error is raised in case of" + & " overflow"); else - return Uval; + Res := Uval; end if; end Scan_Raw_Unsigned; @@ -271,23 +655,30 @@ package body System.Value_U is -- Scan_Unsigned -- ------------------- - function Scan_Unsigned + procedure Scan_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Uns + Max : Integer; + Res : out Uns) is Start : Positive; -- Save location of first non-blank character begin + pragma Warnings + (Off, + """Start"" is set by ""Scan_Plus_Sign"" but not used after the call"); Scan_Plus_Sign (Str, Ptr, Max, Start); + pragma Warnings + (On, + """Start"" is set by ""Scan_Plus_Sign"" but not used after the call"); if Str (Ptr.all) not in '0' .. '9' then Ptr.all := Start; Bad_Value (Str); end if; - return Scan_Raw_Unsigned (Str, Ptr, Max); + Scan_Raw_Unsigned (Str, Ptr, Max, Res); end Scan_Unsigned; -------------------- @@ -313,9 +704,32 @@ package body System.Value_U is declare V : Uns; P : aliased Integer := Str'First; + + Non_Blank : constant Positive := First_Non_Space_Ghost + (Str, Str'First, Str'Last) + with Ghost; + Fst_Num : constant Positive := + (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank) + with Ghost; begin - V := Scan_Unsigned (Str, P'Access, Str'Last); + pragma Assert + (Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last))); + + declare + P_Acc : constant not null access Integer := P'Access; + begin + Scan_Unsigned (Str, P_Acc, Str'Last, V); + end; + + pragma Assert + (P = Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last)); + pragma Assert + (V = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last)); + Scan_Trailing_Blanks (Str, P); + + pragma Assert + (Is_Value_Unsigned_Ghost (Slide_If_Necessary (Str), V)); return V; end; end if; diff --git a/gcc/ada/libgnat/s-valueu.ads b/gcc/ada/libgnat/s-valueu.ads index 5dd8cd4..b0e3b1e 100644 --- a/gcc/ada/libgnat/s-valueu.ads +++ b/gcc/ada/libgnat/s-valueu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,6 +32,22 @@ -- This package contains routines for scanning modular Unsigned -- values for use in Text_IO.Modular_IO, and the Value attribute. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore, + Subprogram_Variant => Ignore); +pragma Warnings (Off, "postcondition does not mention function result"); +-- True postconditions are used to avoid inlining for GNATprove + +with System.Val_Util; use System.Val_Util; + generic type Uns is mod <>; @@ -39,10 +55,314 @@ generic package System.Value_U is pragma Preelaborate; - function Scan_Raw_Unsigned + type Uns_Option (Overflow : Boolean := False) is record + case Overflow is + when True => + null; + when False => + Value : Uns := 0; + end case; + end record with Ghost; + + function Only_Hexa_Ghost (Str : String; From, To : Integer) return Boolean + is + (for all J in From .. To => + Str (J) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_') + with + Ghost, + Pre => From > To or else (From >= Str'First and then To <= Str'Last); + -- Ghost function that returns True if S has only hexadecimal characters + -- from index From to index To. + + function Last_Hexa_Ghost (Str : String) return Positive + with + Ghost, + Pre => Str /= "" + and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F', + Post => Last_Hexa_Ghost'Result in Str'Range + and then (if Last_Hexa_Ghost'Result < Str'Last then + Str (Last_Hexa_Ghost'Result + 1) not in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_') + and then Only_Hexa_Ghost (Str, Str'First, Last_Hexa_Ghost'Result); + -- Ghost function that returns the index of the last character in S that + -- is either an hexadecimal digit or an underscore, which necessarily + -- exists given the precondition on Str. + + function Is_Based_Format_Ghost (Str : String) return Boolean + is + (Str /= "" + and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' + and then + (declare + L : constant Positive := Last_Hexa_Ghost (Str); + begin + Str (L) /= '_' + and then (for all J in Str'First .. L => + (if Str (J) = '_' then Str (J + 1) /= '_')))) + with + Ghost; + -- Ghost function that determines if Str has the correct format for a + -- based number, consisting in a sequence of hexadecimal digits possibly + -- separated by single underscores. It may be followed by other characters. + + function Hexa_To_Unsigned_Ghost (X : Character) return Uns is + (case X is + when '0' .. '9' => Character'Pos (X) - Character'Pos ('0'), + when 'a' .. 'f' => Character'Pos (X) - Character'Pos ('a') + 10, + when 'A' .. 'F' => Character'Pos (X) - Character'Pos ('A') + 10, + when others => raise Program_Error) + with + Ghost, + Pre => X in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; + -- Ghost function that computes the value corresponding to an hexadecimal + -- digit. + + function Scan_Overflows_Ghost + (Digit : Uns; + Base : Uns; + Acc : Uns) return Boolean + is + (Digit >= Base + or else Acc > Uns'Last / Base + or else Uns'Last - Digit < Base * Acc) + with Ghost; + -- Ghost function which returns True if Digit + Base * Acc overflows or + -- Digit is greater than Base, as this is used by the algorithm for the + -- test of overflow. + + function Scan_Based_Number_Ghost + (Str : String; + From, To : Integer; + Base : Uns := 10; + Acc : Uns := 0) return Uns_Option + with + Ghost, + Subprogram_Variant => (Increases => From), + Pre => Str'Last /= Positive'Last + and then + (From > To or else (From >= Str'First and then To <= Str'Last)) + and then Only_Hexa_Ghost (Str, From, To); + -- Ghost function that recursively computes the based number in Str, + -- assuming Acc has been scanned already and scanning continues at index + -- From. + + function Exponent_Unsigned_Ghost + (Value : Uns; + Exp : Natural; + Base : Uns := 10) return Uns_Option + with + Ghost, + Subprogram_Variant => (Decreases => Exp); + -- Ghost function that recursively computes Value * Base ** Exp + + function Is_Raw_Unsigned_Format_Ghost (Str : String) return Boolean is + (Is_Natural_Format_Ghost (Str) + and then + (declare + Last_Num_Init : constant Integer := Last_Number_Ghost (Str); + Starts_As_Based : constant Boolean := + Last_Num_Init < Str'Last - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Str (Last_Num_Init + 2) in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; + Last_Num_Based : constant Integer := + (if Starts_As_Based + then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Str'Last)) + else Last_Num_Init); + Is_Based : constant Boolean := + Starts_As_Based + and then Last_Num_Based < Str'Last + and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1); + First_Exp : constant Integer := + (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1); + begin + (if Starts_As_Based then + Is_Based_Format_Ghost (Str (Last_Num_Init + 2 .. Str'Last)) + and then Last_Num_Based < Str'Last) + and then Is_Opt_Exponent_Format_Ghost + (Str (First_Exp .. Str'Last)))) + with + Ghost, + Pre => Str'Last /= Positive'Last, + Post => True; + -- Ghost function that determines if Str has the correct format for an + -- unsigned number without a sign character. + -- It is a natural number in base 10, optionally followed by a based + -- number surrounded by delimiters # or :, optionally followed by an + -- exponent part. + + function Raw_Unsigned_Overflows_Ghost + (Str : String; + From, To : Integer) + return Boolean + is + (declare + Last_Num_Init : constant Integer := + Last_Number_Ghost (Str (From .. To)); + Init_Val : constant Uns_Option := + Scan_Based_Number_Ghost (Str, From, Last_Num_Init); + Starts_As_Based : constant Boolean := + Last_Num_Init < To - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Str (Last_Num_Init + 2) in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; + Last_Num_Based : constant Integer := + (if Starts_As_Based + then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To)) + else Last_Num_Init); + Is_Based : constant Boolean := + Starts_As_Based + and then Last_Num_Based < To + and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1); + Based_Val : constant Uns_Option := + (if Starts_As_Based and then not Init_Val.Overflow + then Scan_Based_Number_Ghost + (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value) + else Init_Val); + First_Exp : constant Integer := + (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1); + Expon : constant Natural := + (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To)) + then Scan_Exponent_Ghost (Str (First_Exp .. To)) + else 0); + begin + Init_Val.Overflow + or else + (Last_Num_Init < To - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Init_Val.Value not in 2 .. 16) + or else + (Starts_As_Based + and then Based_Val.Overflow) + or else + (Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To)) + and then + (declare + Base : constant Uns := + (if Is_Based then Init_Val.Value else 10); + Value : constant Uns := + (if Is_Based then Based_Val.Value else Init_Val.Value); + begin + Exponent_Unsigned_Ghost + (Value, Expon, Base).Overflow))) + with + Ghost, + Pre => Str'Last /= Positive'Last + and then From in Str'Range + and then To in From .. Str'Last + and then Str (From) in '0' .. '9', + Post => True; + -- Ghost function that determines if the computation of the unsigned number + -- represented by Str will overflow. The computation overflows if either: + -- * The computation of the decimal part overflows, + -- * The decimal part is followed by a valid delimiter for a based + -- part, and the number corresponding to the base is not a valid base, + -- * The computation of the based part overflows, or + -- * There is an exponent and the computation of the exponentiation + -- overflows. + + function Scan_Raw_Unsigned_Ghost + (Str : String; + From, To : Integer) + return Uns + is + (declare + Last_Num_Init : constant Integer := + Last_Number_Ghost (Str (From .. To)); + Init_Val : constant Uns_Option := + Scan_Based_Number_Ghost (Str, From, Last_Num_Init); + Starts_As_Based : constant Boolean := + Last_Num_Init < To - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Str (Last_Num_Init + 2) in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; + Last_Num_Based : constant Integer := + (if Starts_As_Based + then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To)) + else Last_Num_Init); + Is_Based : constant Boolean := + Starts_As_Based + and then Last_Num_Based < To + and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1); + Based_Val : constant Uns_Option := + (if Starts_As_Based and then not Init_Val.Overflow + then Scan_Based_Number_Ghost + (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value) + else Init_Val); + First_Exp : constant Integer := + (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1); + Expon : constant Natural := + (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To)) + then Scan_Exponent_Ghost (Str (First_Exp .. To)) + else 0); + Base : constant Uns := + (if Is_Based then Init_Val.Value else 10); + Value : constant Uns := + (if Is_Based then Based_Val.Value else Init_Val.Value); + begin + Exponent_Unsigned_Ghost (Value, Expon, Base).Value) + with + Ghost, + Pre => Str'Last /= Positive'Last + and then From in Str'Range + and then To in From .. Str'Last + and then Str (From) in '0' .. '9' + and then not Raw_Unsigned_Overflows_Ghost (Str, From, To), + Post => True; + -- Ghost function that scans an unsigned number without a sign character + + function Raw_Unsigned_Last_Ghost + (Str : String; + From, To : Integer) + return Positive + is + (declare + Last_Num_Init : constant Integer := + Last_Number_Ghost (Str (From .. To)); + Starts_As_Based : constant Boolean := + Last_Num_Init < To - 1 + and then Str (Last_Num_Init + 1) in '#' | ':' + and then Str (Last_Num_Init + 2) in + '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'; + Last_Num_Based : constant Integer := + (if Starts_As_Based + then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To)) + else Last_Num_Init); + Is_Based : constant Boolean := + Starts_As_Based + and then Last_Num_Based < To + and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1); + First_Exp : constant Integer := + (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1); + begin + (if not Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To)) + then First_Exp + elsif Str (First_Exp + 1) in '-' | '+' then + Last_Number_Ghost (Str (First_Exp + 2 .. To)) + 1 + else Last_Number_Ghost (Str (First_Exp + 1 .. To)) + 1)) + with + Ghost, + Pre => Str'Last /= Positive'Last + and then From in Str'Range + and then To in From .. Str'Last + and then Str (From) in '0' .. '9', + Post => Raw_Unsigned_Last_Ghost'Result in From .. To + 1; + -- Ghost function that returns the position of the cursor once an unsigned + -- number has been seen. + + procedure Scan_Raw_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Uns; + Max : Integer; + Res : out Uns) + with Pre => Str'Last /= Positive'Last + and then Ptr.all in Str'Range + and then Max in Ptr.all .. Str'Last + and then Is_Raw_Unsigned_Format_Ghost (Str (Ptr.all .. Max)), + Post => not Raw_Unsigned_Overflows_Ghost (Str, Ptr.all'Old, Max) + and Res = Scan_Raw_Unsigned_Ghost (Str, Ptr.all'Old, Max) + and Ptr.all = Raw_Unsigned_Last_Ghost (Str, Ptr.all'Old, Max); + -- This function scans the string starting at Str (Ptr.all) for a valid -- integer according to the syntax described in (RM 3.5(43)). The substring -- scanned extends no further than Str (Max). Note: this does not scan @@ -106,26 +426,158 @@ package System.Value_U is -- Note: if Str is empty, i.e. if Max is less than Ptr, then this is a -- special case of an all-blank string, and Ptr is unchanged, and hence -- is greater than Max as required in this case. + -- ??? This is not the case. We will read Str (Ptr.all) without checking + -- and increase Ptr.all by one. -- -- Note: this routine should not be called with Str'Last = Positive'Last. -- If this occurs Program_Error is raised with a message noting that this -- case is not supported. Most such cases are eliminated by the caller. - function Scan_Unsigned + procedure Scan_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Uns; + Max : Integer; + Res : out Uns) + with Pre => Str'Last /= Positive'Last + and then Ptr.all in Str'Range + and then Max in Ptr.all .. Str'Last + and then not Only_Space_Ghost (Str, Ptr.all, Max) + and then + (declare + Non_Blank : constant Positive := + First_Non_Space_Ghost (Str, Ptr.all, Max); + Fst_Num : constant Positive := + (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank); + begin + Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Max))), + Post => + (declare + Non_Blank : constant Positive := + First_Non_Space_Ghost (Str, Ptr.all'Old, Max); + Fst_Num : constant Positive := + (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank); + begin + not Raw_Unsigned_Overflows_Ghost (Str, Fst_Num, Max) + and then Res = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Max) + and then Ptr.all = Raw_Unsigned_Last_Ghost (Str, Fst_Num, Max)); + -- Same as Scan_Raw_Unsigned, except scans optional leading -- blanks, and an optional leading plus sign. -- -- Note: if a minus sign is present, Constraint_Error will be raised. -- Note: trailing blanks are not scanned. + function Slide_To_1 (Str : String) return String + with Ghost, + Post => + Only_Space_Ghost (Str, Str'First, Str'Last) = + (for all J in Str'First .. Str'Last => + Slide_To_1'Result (J - Str'First + 1) = ' '); + -- Slides Str so that it starts at 1 + + function Slide_If_Necessary (Str : String) return String is + (if Str'Last = Positive'Last then Slide_To_1 (Str) else Str) + with Ghost, + Post => + Only_Space_Ghost (Str, Str'First, Str'Last) = + Only_Space_Ghost (Slide_If_Necessary'Result, + Slide_If_Necessary'Result'First, + Slide_If_Necessary'Result'Last); + -- If Str'Last = Positive'Last then slides Str so that it starts at 1 + + function Is_Unsigned_Ghost (Str : String) return Boolean is + (declare + Non_Blank : constant Positive := First_Non_Space_Ghost + (Str, Str'First, Str'Last); + Fst_Num : constant Positive := + (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank); + begin + Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last)) + and then not Raw_Unsigned_Overflows_Ghost (Str, Fst_Num, Str'Last) + and then Only_Space_Ghost + (Str, Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last), Str'Last)) + with Ghost, + Pre => not Only_Space_Ghost (Str, Str'First, Str'Last) + and then Str'Last /= Positive'Last, + Post => True; + -- Ghost function that determines if Str has the correct format for an + -- unsigned number, consisting in some blank characters, an optional + -- + sign, a raw unsigned number which does not overflow and then some + -- more blank characters. + + function Is_Value_Unsigned_Ghost (Str : String; Val : Uns) return Boolean is + (declare + Non_Blank : constant Positive := First_Non_Space_Ghost + (Str, Str'First, Str'Last); + Fst_Num : constant Positive := + (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank); + begin + Val = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last)) + with Ghost, + Pre => not Only_Space_Ghost (Str, Str'First, Str'Last) + and then Str'Last /= Positive'Last + and then Is_Unsigned_Ghost (Str), + Post => True; + -- Ghost function that returns True if Val is the value corresponding to + -- the unsigned number represented by Str. + function Value_Unsigned - (Str : String) return Uns; + (Str : String) return Uns + with Pre => not Only_Space_Ghost (Str, Str'First, Str'Last) + and then Str'Length /= Positive'Last + and then Is_Unsigned_Ghost (Slide_If_Necessary (Str)), + Post => + Is_Value_Unsigned_Ghost + (Slide_If_Necessary (Str), Value_Unsigned'Result), + Subprogram_Variant => (Decreases => Str'First); -- Used in computing X'Value (Str) where X is a modular integer type whose -- modulus does not exceed the range of System.Unsigned_Types.Unsigned. Str -- is the string argument of the attribute. Constraint_Error is raised if -- the string is malformed, or if the value is out of range. +private + + ----------------------------- + -- Exponent_Unsigned_Ghost -- + ----------------------------- + + function Exponent_Unsigned_Ghost + (Value : Uns; + Exp : Natural; + Base : Uns := 10) return Uns_Option + is + (if Exp = 0 or Value = 0 then (Overflow => False, Value => Value) + elsif Scan_Overflows_Ghost (0, Base, Value) then (Overflow => True) + else Exponent_Unsigned_Ghost (Value * Base, Exp - 1, Base)); + + ----------------------------- + -- Scan_Based_Number_Ghost -- + ----------------------------- + + function Scan_Based_Number_Ghost + (Str : String; + From, To : Integer; + Base : Uns := 10; + Acc : Uns := 0) return Uns_Option + is + (if From > To then (Overflow => False, Value => Acc) + elsif Str (From) = '_' + then Scan_Based_Number_Ghost (Str, From + 1, To, Base, Acc) + elsif Scan_Overflows_Ghost + (Hexa_To_Unsigned_Ghost (Str (From)), Base, Acc) + then (Overflow => True) + else Scan_Based_Number_Ghost + (Str, From + 1, To, Base, + Base * Acc + Hexa_To_Unsigned_Ghost (Str (From)))); + + ---------------- + -- Slide_To_1 -- + ---------------- + + function Slide_To_1 (Str : String) return String is + (declare + Res : constant String (1 .. Str'Length) := Str; + begin + Res); + end System.Value_U; diff --git a/gcc/ada/libgnat/s-valuns.adb b/gcc/ada/libgnat/s-valuns.adb index 0d96d7b..4b6dc77 100644 --- a/gcc/ada/libgnat/s-valuns.adb +++ b/gcc/ada/libgnat/s-valuns.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valuns.ads b/gcc/ada/libgnat/s-valuns.ads index fb20913..23f73ed 100644 --- a/gcc/ada/libgnat/s-valuns.ads +++ b/gcc/ada/libgnat/s-valuns.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,26 +32,40 @@ -- This package contains routines for scanning modular Unsigned -- values for use in Text_IO.Modular_IO, and the Value attribute. +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore, + Subprogram_Variant => Ignore); + with System.Unsigned_Types; with System.Value_U; -package System.Val_Uns is +package System.Val_Uns with SPARK_Mode is pragma Preelaborate; subtype Unsigned is Unsigned_Types.Unsigned; package Impl is new Value_U (Unsigned); - function Scan_Raw_Unsigned + procedure Scan_Raw_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Unsigned + Max : Integer; + Res : out Unsigned) renames Impl.Scan_Raw_Unsigned; - function Scan_Unsigned + procedure Scan_Unsigned (Str : String; Ptr : not null access Integer; - Max : Integer) return Unsigned + Max : Integer; + Res : out Unsigned) renames Impl.Scan_Unsigned; function Value_Unsigned diff --git a/gcc/ada/libgnat/s-valuti.adb b/gcc/ada/libgnat/s-valuti.adb index 3e62d09..4da585a 100644 --- a/gcc/ada/libgnat/s-valuti.adb +++ b/gcc/ada/libgnat/s-valuti.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -66,14 +66,17 @@ is -- First_Non_Space_Ghost -- --------------------------- - function First_Non_Space_Ghost (S : String) return Positive is + function First_Non_Space_Ghost + (S : String; + From, To : Integer) return Positive + is begin - for J in S'Range loop + for J in From .. To loop if S (J) /= ' ' then return J; end if; - pragma Loop_Invariant (for all K in S'First .. J => S (K) = ' '); + pragma Loop_Invariant (for all K in From .. J => S (K) = ' '); end loop; raise Program_Error; @@ -172,6 +175,9 @@ is Exp := 0; return; end if; + pragma Annotate + (CodePeer, False_Positive, "test always false", + "the slice might be empty or not start with an 'e'"); -- We have an E/e, see if sign follows @@ -222,7 +228,6 @@ is pragma Assert (Is_Natural_Format_Ghost (Rest)); loop - pragma Assert (Str (P) = Rest (P)); pragma Assert (Str (P) in '0' .. '9'); if X < (Integer'Last / 10) then @@ -230,17 +235,11 @@ is end if; pragma Loop_Invariant (X >= 0); - pragma Loop_Invariant (P in P'Loop_Entry .. Last); + pragma Loop_Invariant (P in Rest'First .. Last); pragma Loop_Invariant (Str (P) in '0' .. '9'); pragma Loop_Invariant - (Scan_Natural_Ghost (Rest, P'Loop_Entry, 0) - = (if P = Max - or else Rest (P + 1) not in '0' .. '9' | '_' - or else X >= Integer'Last / 10 - then - X - else - Scan_Natural_Ghost (Rest, P + 1, X))); + (Scan_Natural_Ghost (Rest, Rest'First, 0) + = Scan_Natural_Ghost (Rest, P + 1, X)); P := P + 1; @@ -252,6 +251,8 @@ is exit when Str (P) not in '0' .. '9'; end if; end loop; + + pragma Assert (P = Last + 1); end; if M then @@ -298,7 +299,7 @@ is Start := P; - pragma Assert (Start = First_Non_Space_Ghost (Str (Ptr.all .. Max))); + pragma Assert (Start = First_Non_Space_Ghost (Str, Ptr.all, Max)); -- Skip past an initial plus sign @@ -354,7 +355,7 @@ is Start := P; - pragma Assert (Start = First_Non_Space_Ghost (Str (Ptr.all .. Max))); + pragma Assert (Start = First_Non_Space_Ghost (Str, Ptr.all, Max)); -- Remember an initial minus sign diff --git a/gcc/ada/libgnat/s-valuti.ads b/gcc/ada/libgnat/s-valuti.ads index 7483f2c..5c0f2a5 100644 --- a/gcc/ada/libgnat/s-valuti.ads +++ b/gcc/ada/libgnat/s-valuti.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,6 +41,8 @@ pragma Assertion_Policy (Pre => Ignore, Post => Ignore, Contract_Cases => Ignore, Ghost => Ignore); +pragma Warnings (Off, "postcondition does not mention function result"); +-- True postconditions are used to avoid inlining for GNATprove with System.Case_Util; @@ -59,18 +61,23 @@ is (for all J in From .. To => S (J) = ' ') with Ghost, - Pre => From > To or else (From >= S'First and then To <= S'Last); + Pre => From > To or else (From >= S'First and then To <= S'Last), + Post => True; -- Ghost function that returns True if S has only space characters from -- index From to index To. - function First_Non_Space_Ghost (S : String) return Positive + function First_Non_Space_Ghost + (S : String; + From, To : Integer) return Positive with Ghost, - Pre => not Only_Space_Ghost (S, S'First, S'Last), - Post => First_Non_Space_Ghost'Result in S'Range + Pre => From in S'Range + and then To in S'Range + and then not Only_Space_Ghost (S, From, To), + Post => First_Non_Space_Ghost'Result in From .. To and then S (First_Non_Space_Ghost'Result) /= ' ' and then Only_Space_Ghost - (S, S'First, First_Non_Space_Ghost'Result - 1); + (S, From, First_Non_Space_Ghost'Result - 1); -- Ghost function that returns the index of the first non-space character -- in S, which necessarily exists given the precondition on S. @@ -117,14 +124,14 @@ is and then (declare F : constant Positive := - First_Non_Space_Ghost (Str (Ptr.all .. Max)); + First_Non_Space_Ghost (Str, Ptr.all, Max); begin (if Str (F) in '+' | '-' then F <= Max - 1 and then Str (F + 1) /= ' ')), Post => (declare F : constant Positive := - First_Non_Space_Ghost (Str (Ptr.all'Old .. Max)); + First_Non_Space_Ghost (Str, Ptr.all'Old, Max); begin Minus = (Str (F) = '-') and then Ptr.all = (if Str (F) in '+' | '-' then F + 1 else F) @@ -162,14 +169,14 @@ is and then (declare F : constant Positive := - First_Non_Space_Ghost (Str (Ptr.all .. Max)); + First_Non_Space_Ghost (Str, Ptr.all, Max); begin (if Str (F) = '+' then F <= Max - 1 and then Str (F + 1) /= ' ')), Post => (declare F : constant Positive := - First_Non_Space_Ghost (Str (Ptr.all'Old .. Max)); + First_Non_Space_Ghost (Str, Ptr.all'Old, Max); begin Ptr.all = (if Str (F) = '+' then F + 1 else F) and then Start = F); @@ -195,7 +202,7 @@ is and then Only_Number_Ghost (Str, Str'First, Last_Number_Ghost'Result); -- Ghost function that returns the index of the last character in S that -- is either a figure or underscore, which necessarily exists given the - -- precondition on S. + -- precondition on Str. function Is_Natural_Format_Ghost (Str : String) return Boolean is (Str /= "" @@ -213,6 +220,50 @@ is -- natural number, consisting in a sequence of figures possibly separated -- by single underscores. It may be followed by other characters. + function Starts_As_Exponent_Format_Ghost + (Str : String; + Real : Boolean := False) return Boolean + is + (Str'Length > 1 + and then Str (Str'First) in 'E' | 'e' + and then + (declare + Plus_Sign : constant Boolean := Str (Str'First + 1) = '+'; + Minus_Sign : constant Boolean := Str (Str'First + 1) = '-'; + Sign : constant Boolean := Plus_Sign or Minus_Sign; + begin + (if Minus_Sign then Real) + and then (if Sign then Str'Length > 2) + and then + (declare + Start : constant Natural := + (if Sign then Str'First + 2 else Str'First + 1); + begin + Str (Start) in '0' .. '9'))) + with + Ghost; + -- Ghost function that determines if Str is recognized as something which + -- might be an exponent, ie. it starts with an 'e', capitalized or not, + -- followed by an optional sign which can only be '-' if we are working on + -- real numbers (Real is True), and then a digit in decimal notation. + + function Is_Opt_Exponent_Format_Ghost + (Str : String; + Real : Boolean := False) return Boolean + is + (not Starts_As_Exponent_Format_Ghost (Str, Real) + or else + (declare + Start : constant Natural := + (if Str (Str'First + 1) in '+' | '-' then Str'First + 2 + else Str'First + 1); + begin Is_Natural_Format_Ghost (Str (Start .. Str'Last)))) + with + Ghost; + -- Ghost function that determines if Str has the correct format for an + -- optional exponent, that is, either it does not start as an exponent, or + -- it is in a correct format for a natural number. + function Scan_Natural_Ghost (Str : String; P : Natural; @@ -221,13 +272,35 @@ is with Ghost, Subprogram_Variant => (Increases => P), - Pre => Is_Natural_Format_Ghost (Str) - and then P in Str'First .. Last_Number_Ghost (Str) - and then Acc < Integer'Last / 10; + Pre => Str /= "" and then Str (Str'First) in '0' .. '9' + and then Str'Last < Natural'Last + and then P in Str'First .. Last_Number_Ghost (Str) + 1; -- Ghost function that recursively computes the natural number in Str, up -- to the first number greater or equal to Natural'Last / 10, assuming Acc -- has been scanned already and scanning continues at index P. + function Scan_Exponent_Ghost + (Str : String; + Real : Boolean := False) + return Integer + is + (declare + Plus_Sign : constant Boolean := Str (Str'First + 1) = '+'; + Minus_Sign : constant Boolean := Str (Str'First + 1) = '-'; + Sign : constant Boolean := Plus_Sign or Minus_Sign; + Start : constant Natural := + (if Sign then Str'First + 2 else Str'First + 1); + Value : constant Natural := + Scan_Natural_Ghost (Str (Start .. Str'Last), Start, 0); + begin + (if Minus_Sign then -Value else Value)) + with + Ghost, + Pre => Str'Last < Natural'Last + and then Starts_As_Exponent_Format_Ghost (Str, Real), + Post => (if not Real then Scan_Exponent_Ghost'Result >= 0); + -- Ghost function that scans an exponent + procedure Scan_Exponent (Str : String; Ptr : not null access Integer; @@ -238,50 +311,16 @@ is Pre => -- Ptr.all .. Max is either an empty range, or a valid range in Str (Ptr.all > Max or else (Ptr.all >= Str'First and then Max <= Str'Last)) - and then - Max < Natural'Last - and then - (if Ptr.all < Max and then Str (Ptr.all) in 'E' | 'e' then - (declare - Plus_Sign : constant Boolean := Str (Ptr.all + 1) = '+'; - Minus_Sign : constant Boolean := Str (Ptr.all + 1) = '-'; - Sign : constant Boolean := Plus_Sign or Minus_Sign; - begin - (if Minus_Sign and not Real then True - elsif Sign - and then (Ptr.all > Max - 2 - or else Str (Ptr.all + 2) not in '0' .. '9') - then True - else - (declare - Start : constant Natural := - (if Sign then Ptr.all + 2 else Ptr.all + 1); - begin - Is_Natural_Format_Ghost (Str (Start .. Max)))))), + and then Max < Natural'Last + and then Is_Opt_Exponent_Format_Ghost (Str (Ptr.all .. Max), Real), Post => - (if Ptr.all'Old < Max and then Str (Ptr.all'Old) in 'E' | 'e' then - (declare - Plus_Sign : constant Boolean := Str (Ptr.all'Old + 1) = '+'; - Minus_Sign : constant Boolean := Str (Ptr.all'Old + 1) = '-'; - Sign : constant Boolean := Plus_Sign or Minus_Sign; - Unchanged : constant Boolean := - Exp = 0 and Ptr.all = Ptr.all'Old; - begin - (if Minus_Sign and not Real then Unchanged - elsif Sign - and then (Ptr.all'Old > Max - 2 - or else Str (Ptr.all'Old + 2) not in '0' .. '9') - then Unchanged - else - (declare - Start : constant Natural := - (if Sign then Ptr.all'Old + 2 else Ptr.all'Old + 1); - Value : constant Natural := - Scan_Natural_Ghost (Str (Start .. Max), Start, 0); - begin - Exp = (if Minus_Sign then -Value else Value)))) - else - Exp = 0 and Ptr.all = Ptr.all'Old); + (if Starts_As_Exponent_Format_Ghost (Str (Ptr.all'Old .. Max), Real) + then Exp = Scan_Exponent_Ghost (Str (Ptr.all'Old .. Max), Real) + and then + (if Str (Ptr.all'Old + 1) in '-' | '+' then + Ptr.all = Last_Number_Ghost (Str (Ptr.all'Old + 2 .. Max)) + 1 + else Ptr.all = Last_Number_Ghost (Str (Ptr.all'Old + 1 .. Max)) + 1) + else Exp = 0 and Ptr.all = Ptr.all'Old); -- Called to scan a possible exponent. Str, Ptr, Max are as described above -- for Scan_Sign. If Ptr.all < Max and Str (Ptr.all) = 'E' or 'e', then an -- exponent is scanned out, with the exponent value returned in Exp, and @@ -324,7 +363,7 @@ is Str (P + 1) in '0' .. '9'), Post => P = P'Old + 1 - and then Ptr.all = Ptr.all; + and then Ptr.all'Old = Ptr.all; -- Called if an underscore is encountered while scanning digits. Str (P) -- contains the underscore. Ptr is the pointer to be returned to the -- ultimate caller of the scan routine, Max is the maximum subscript in @@ -349,19 +388,20 @@ private Acc : Natural) return Natural is - (if Str (P) = '_' then + (if P > Str'Last + or else Str (P) not in '0' .. '9' | '_' + or else Acc >= Integer'Last / 10 + then + Acc + elsif Str (P) = '_' then Scan_Natural_Ghost (Str, P + 1, Acc) else (declare Shift_Acc : constant Natural := - Acc * 10 + (Character'Pos (Str (P)) - Character'Pos ('0')); + Acc * 10 + + (Integer'(Character'Pos (Str (P))) - + Integer'(Character'Pos ('0'))); begin - (if P = Str'Last - or else Str (P + 1) not in '0' .. '9' | '_' - or else Shift_Acc >= Integer'Last / 10 - then - Shift_Acc - else - Scan_Natural_Ghost (Str, P + 1, Shift_Acc)))); + Scan_Natural_Ghost (Str, P + 1, Shift_Acc))); end System.Val_Util; diff --git a/gcc/ada/libgnat/s-valwch.adb b/gcc/ada/libgnat/s-valwch.adb index dd8e8ed..d4ba3f5 100644 --- a/gcc/ada/libgnat/s-valwch.adb +++ b/gcc/ada/libgnat/s-valwch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-valwch.ads b/gcc/ada/libgnat/s-valwch.ads index 7a625e0..428d3aa 100644 --- a/gcc/ada/libgnat/s-valwch.ads +++ b/gcc/ada/libgnat/s-valwch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-veboop.adb b/gcc/ada/libgnat/s-veboop.adb index da71bd2..7bb0b5e 100644 --- a/gcc/ada/libgnat/s-veboop.adb +++ b/gcc/ada/libgnat/s-veboop.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,7 +29,17 @@ -- -- ------------------------------------------------------------------------------ -package body System.Vectors.Boolean_Operations is +-- Ghost code, loop invariants and assertions in this unit are meant for +-- analysis only, not for run-time checking, as it would be too costly +-- otherwise. This is enforced by setting the assertion policy to Ignore. + +pragma Assertion_Policy (Ghost => Ignore, + Loop_Invariant => Ignore, + Assert => Ignore); + +package body System.Vectors.Boolean_Operations + with SPARK_Mode +is SU : constant := Storage_Unit; -- Convenient short hand, used throughout @@ -76,7 +86,26 @@ package body System.Vectors.Boolean_Operations is ----------- function "not" (Item : Vectors.Vector) return Vectors.Vector is + + procedure Prove_Not (Result : Vectors.Vector) + with + Ghost, + Pre => Valid (Item) + and then Result = (Item xor True_Val), + Post => Valid (Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Result) (J) = not Model (Item) (J)); + + procedure Prove_Not (Result : Vectors.Vector) is + begin + for J in 1 .. Vector_Boolean_Size loop + pragma Assert + (Element (Result, J) = 1 - Element (Item, J)); + end loop; + end Prove_Not; + begin + Prove_Not (Item xor True_Val); return Item xor True_Val; end "not"; @@ -90,7 +119,32 @@ package body System.Vectors.Boolean_Operations is end Nand; function Nand (Left, Right : Vectors.Vector) return Vectors.Vector is + + procedure Prove_And (Result : Vectors.Vector) + with + Ghost, + Pre => Valid (Left) + and then Valid (Right) + and then Result = (Left and Right), + Post => Valid (Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Result) (J) = + (Model (Left) (J) and Model (Right) (J))); + + procedure Prove_And (Result : Vectors.Vector) is + begin + for J in 1 .. Vector_Boolean_Size loop + pragma Assert + (Element (Result, J) = + (if Element (Left, J) = 1 + and Element (Right, J) = 1 + then 1 + else 0)); + end loop; + end Prove_And; + begin + Prove_And (Left and Right); return not (Left and Right); end Nand; @@ -104,7 +158,32 @@ package body System.Vectors.Boolean_Operations is end Nor; function Nor (Left, Right : Vectors.Vector) return Vectors.Vector is + + procedure Prove_Or (Result : Vectors.Vector) + with + Ghost, + Pre => Valid (Left) + and then Valid (Right) + and then Result = (Left or Right), + Post => Valid (Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Result) (J) = + (Model (Left) (J) or Model (Right) (J))); + + procedure Prove_Or (Result : Vectors.Vector) is + begin + for J in 1 .. Vector_Boolean_Size loop + pragma Assert + (Element (Result, J) = + (if Element (Left, J) = 1 + or Element (Right, J) = 1 + then 1 + else 0)); + end loop; + end Prove_Or; + begin + Prove_Or (Left or Right); return not (Left or Right); end Nor; @@ -118,7 +197,32 @@ package body System.Vectors.Boolean_Operations is end Nxor; function Nxor (Left, Right : Vectors.Vector) return Vectors.Vector is + + procedure Prove_Xor (Result : Vectors.Vector) + with + Ghost, + Pre => Valid (Left) + and then Valid (Right) + and then Result = (Left xor Right), + Post => Valid (Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Result) (J) = + (Model (Left) (J) xor Model (Right) (J))); + + procedure Prove_Xor (Result : Vectors.Vector) is + begin + for J in 1 .. Vector_Boolean_Size loop + pragma Assert + (Element (Result, J) = + (if Element (Left, J) = 1 + xor Element (Right, J) = 1 + then 1 + else 0)); + end loop; + end Prove_Xor; + begin + Prove_Xor (Left xor Right); return not (Left xor Right); end Nxor; diff --git a/gcc/ada/libgnat/s-veboop.ads b/gcc/ada/libgnat/s-veboop.ads index 6b41307..4614759 100644 --- a/gcc/ada/libgnat/s-veboop.ads +++ b/gcc/ada/libgnat/s-veboop.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -31,15 +31,77 @@ -- This package contains functions for runtime operations on boolean vectors -package System.Vectors.Boolean_Operations is - pragma Pure; +-- Preconditions in this unit are meant for analysis only, not for run-time +-- checking, so that the expected exceptions are raised. This is enforced by +-- setting the corresponding assertion policy to Ignore. Postconditions and +-- contract cases should not be executed at runtime as well, in order not to +-- slow down the execution of these functions. + +pragma Assertion_Policy (Pre => Ignore, + Post => Ignore, + Contract_Cases => Ignore, + Ghost => Ignore); + +package System.Vectors.Boolean_Operations + with Pure, SPARK_Mode +is + pragma Warnings (Off, "aspect ""Pre"" not enforced on inlined subprogram", + Reason => "Pre only used in proof"); + pragma Warnings (Off, "aspect ""Post"" not enforced on inlined subprogram", + Reason => "Post only used in proof"); + + -- Type Vectors.Vector represents an array of Boolean, each of which + -- takes 8 bits of the representation, with the 7 msb set to zero. Express + -- in contracts the constraint on valid vectors and the model that they + -- represent, and the relationship between input models and output model. + + Vector_Boolean_Size : constant Positive := + System.Word_Size / System.Storage_Unit + with Ghost; + + type Vector_Element is mod 2 ** System.Storage_Unit with Ghost; + + type Vector_Boolean_Array is array (1 .. Vector_Boolean_Size) of Boolean + with Ghost; + + function Shift_Right (V : Vectors.Vector; N : Natural) return Vectors.Vector + with Ghost, Import, Convention => Intrinsic; + + function Element (V : Vectors.Vector; N : Positive) return Vector_Element is + (Vector_Element (Shift_Right (V, (N - 1) * System.Storage_Unit) + and (2 ** System.Storage_Unit - 1))) + with + Ghost, + Pre => N <= Vector_Boolean_Size; + -- Return the Nth element represented by the vector + + function Valid (V : Vectors.Vector) return Boolean is + (for all J in 1 .. Vector_Boolean_Size => + Element (V, J) in 0 .. 1) + with Ghost; + -- A valid vector is one for which all elements are 0 (representing False) + -- or 1 (representing True). + + function Model (V : Vectors.Vector) return Vector_Boolean_Array + with + Ghost, + Pre => Valid (V); + + function Model (V : Vectors.Vector) return Vector_Boolean_Array is + (for J in 1 .. Vector_Boolean_Size => Element (V, J) = 1); + -- The model of a valid vector is the corresponding array of Boolean values -- Although in general the boolean operations on arrays of booleans are -- identical to operations on arrays of unsigned words of the same size, -- for the "not" operator this is not the case as False is typically -- represented by 0 and true by 1. - function "not" (Item : Vectors.Vector) return Vectors.Vector; + function "not" (Item : Vectors.Vector) return Vectors.Vector + with + Pre => Valid (Item), + Post => Valid ("not"'Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model ("not"'Result) (J) = not Model (Item) (J)); -- The three boolean operations "nand", "nor" and "nxor" are needed -- for cases where the compiler moves boolean array operations into @@ -51,13 +113,44 @@ package System.Vectors.Boolean_Operations is -- (not X) xor (not Y) = X xor Y -- X xor (not Y) = not (X xor Y) = Nxor (X, Y) - function Nand (Left, Right : Boolean) return Boolean; - function Nor (Left, Right : Boolean) return Boolean; - function Nxor (Left, Right : Boolean) return Boolean; + function Nand (Left, Right : Boolean) return Boolean + with + Post => Nand'Result = not (Left and Right); + + function Nor (Left, Right : Boolean) return Boolean + with + Post => Nor'Result = not (Left or Right); + + function Nxor (Left, Right : Boolean) return Boolean + with + Post => Nxor'Result = not (Left xor Right); + + function Nand (Left, Right : Vectors.Vector) return Vectors.Vector + with + Pre => Valid (Left) + and then Valid (Right), + Post => Valid (Nand'Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Nand'Result) (J) = + Nand (Model (Left) (J), Model (Right) (J))); + + function Nor (Left, Right : Vectors.Vector) return Vectors.Vector + with + Pre => Valid (Left) + and then Valid (Right), + Post => Valid (Nor'Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Nor'Result) (J) = + Nor (Model (Left) (J), Model (Right) (J))); - function Nand (Left, Right : Vectors.Vector) return Vectors.Vector; - function Nor (Left, Right : Vectors.Vector) return Vectors.Vector; - function Nxor (Left, Right : Vectors.Vector) return Vectors.Vector; + function Nxor (Left, Right : Vectors.Vector) return Vectors.Vector + with + Pre => Valid (Left) + and then Valid (Right), + Post => Valid (Nxor'Result) + and then (for all J in 1 .. Vector_Boolean_Size => + Model (Nxor'Result) (J) = + Nxor (Model (Left) (J), Model (Right) (J))); pragma Inline_Always ("not"); pragma Inline_Always (Nand); diff --git a/gcc/ada/libgnat/s-vector.ads b/gcc/ada/libgnat/s-vector.ads index 0e19651..0ae3e6f 100644 --- a/gcc/ada/libgnat/s-vector.ads +++ b/gcc/ada/libgnat/s-vector.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vercon.adb b/gcc/ada/libgnat/s-vercon.adb index 1de56a7..5d81876 100644 --- a/gcc/ada/libgnat/s-vercon.adb +++ b/gcc/ada/libgnat/s-vercon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-vercon.ads b/gcc/ada/libgnat/s-vercon.ads index e454d55..5fefaaf 100644 --- a/gcc/ada/libgnat/s-vercon.ads +++ b/gcc/ada/libgnat/s-vercon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wchcnv.adb b/gcc/ada/libgnat/s-wchcnv.adb index 8d95c6f..b0b6ea4 100644 --- a/gcc/ada/libgnat/s-wchcnv.adb +++ b/gcc/ada/libgnat/s-wchcnv.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - with Interfaces; use Interfaces; with System.WCh_Con; use System.WCh_Con; with System.WCh_JIS; use System.WCh_JIS; diff --git a/gcc/ada/libgnat/s-wchcnv.ads b/gcc/ada/libgnat/s-wchcnv.ads index 1521692..7e7ba90 100644 --- a/gcc/ada/libgnat/s-wchcnv.ads +++ b/gcc/ada/libgnat/s-wchcnv.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,8 +43,6 @@ -- This unit may be used directly from an application program by providing -- an appropriate WITH, and the interface can be expected to remain stable. -pragma Compiler_Unit_Warning; - with System.WCh_Con; package System.WCh_Cnv is diff --git a/gcc/ada/libgnat/s-wchcon.adb b/gcc/ada/libgnat/s-wchcon.adb index e16b8b5..f9c83b8 100644 --- a/gcc/ada/libgnat/s-wchcon.adb +++ b/gcc/ada/libgnat/s-wchcon.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2005-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2005-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.WCh_Con is ---------------------------- diff --git a/gcc/ada/libgnat/s-wchcon.ads b/gcc/ada/libgnat/s-wchcon.ads index 897f595..645469b 100644 --- a/gcc/ada/libgnat/s-wchcon.ads +++ b/gcc/ada/libgnat/s-wchcon.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,8 +36,6 @@ -- This unit may be used directly from an application program by providing -- an appropriate WITH, and the interface can be expected to remain stable. -pragma Compiler_Unit_Warning; - package System.WCh_Con is pragma Pure; diff --git a/gcc/ada/libgnat/s-wchjis.adb b/gcc/ada/libgnat/s-wchjis.adb index 3eede0a..48c98fb 100644 --- a/gcc/ada/libgnat/s-wchjis.adb +++ b/gcc/ada/libgnat/s-wchjis.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,8 +29,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Compiler_Unit_Warning; - package body System.WCh_JIS is type Byte is mod 256; diff --git a/gcc/ada/libgnat/s-wchjis.ads b/gcc/ada/libgnat/s-wchjis.ads index 7470181..2540fba 100644 --- a/gcc/ada/libgnat/s-wchjis.ads +++ b/gcc/ada/libgnat/s-wchjis.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,8 +32,6 @@ -- This package contains routines used for converting between internal -- JIS codes and the two external forms we support (EUC and Shift-JIS) -pragma Compiler_Unit_Warning; - package System.WCh_JIS is pragma Pure; diff --git a/gcc/ada/libgnat/s-wchstw.adb b/gcc/ada/libgnat/s-wchstw.adb index bef1040..b0112fb 100644 --- a/gcc/ada/libgnat/s-wchstw.adb +++ b/gcc/ada/libgnat/s-wchstw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wchstw.ads b/gcc/ada/libgnat/s-wchstw.ads index 55e3c37..cd37dfd 100644 --- a/gcc/ada/libgnat/s-wchstw.ads +++ b/gcc/ada/libgnat/s-wchstw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wchwts.adb b/gcc/ada/libgnat/s-wchwts.adb index 6afcb3f..7c79bd0 100644 --- a/gcc/ada/libgnat/s-wchwts.adb +++ b/gcc/ada/libgnat/s-wchwts.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wchwts.ads b/gcc/ada/libgnat/s-wchwts.ads index 4ac4657..bdc0d6c 100644 --- a/gcc/ada/libgnat/s-wchwts.ads +++ b/gcc/ada/libgnat/s-wchwts.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widboo.adb b/gcc/ada/libgnat/s-widboo.adb index dd3bafb..461555c 100644 --- a/gcc/ada/libgnat/s-widboo.adb +++ b/gcc/ada/libgnat/s-widboo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widboo.ads b/gcc/ada/libgnat/s-widboo.ads index bc509e1..898c3b6 100644 --- a/gcc/ada/libgnat/s-widboo.ads +++ b/gcc/ada/libgnat/s-widboo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widcha.adb b/gcc/ada/libgnat/s-widcha.adb index d2298b9..c33cd53 100644 --- a/gcc/ada/libgnat/s-widcha.adb +++ b/gcc/ada/libgnat/s-widcha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widcha.ads b/gcc/ada/libgnat/s-widcha.ads index d4913a9..0b271d8 100644 --- a/gcc/ada/libgnat/s-widcha.ads +++ b/gcc/ada/libgnat/s-widcha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widenu.adb b/gcc/ada/libgnat/s-widenu.adb index 14096f3..46a4505 100644 --- a/gcc/ada/libgnat/s-widenu.adb +++ b/gcc/ada/libgnat/s-widenu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widenu.ads b/gcc/ada/libgnat/s-widenu.ads index d969309..5bd9bdd 100644 --- a/gcc/ada/libgnat/s-widenu.ads +++ b/gcc/ada/libgnat/s-widenu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widint.ads b/gcc/ada/libgnat/s-widint.ads index fb71618..074ab29 100644 --- a/gcc/ada/libgnat/s-widint.ads +++ b/gcc/ada/libgnat/s-widint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widlli.adb b/gcc/ada/libgnat/s-widlli.adb index ea24ca5..17a754e 100644 --- a/gcc/ada/libgnat/s-widlli.adb +++ b/gcc/ada/libgnat/s-widlli.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widlli.ads b/gcc/ada/libgnat/s-widlli.ads index 07ff8bf..b1675ec 100644 --- a/gcc/ada/libgnat/s-widlli.ads +++ b/gcc/ada/libgnat/s-widlli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widllli.ads b/gcc/ada/libgnat/s-widllli.ads index af35616..27c0927 100644 --- a/gcc/ada/libgnat/s-widllli.ads +++ b/gcc/ada/libgnat/s-widllli.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widlllu.ads b/gcc/ada/libgnat/s-widlllu.ads index fd6534f..802c74a 100644 --- a/gcc/ada/libgnat/s-widlllu.ads +++ b/gcc/ada/libgnat/s-widlllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widllu.adb b/gcc/ada/libgnat/s-widllu.adb index 101eff2..ce7b7e6 100644 --- a/gcc/ada/libgnat/s-widllu.adb +++ b/gcc/ada/libgnat/s-widllu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widllu.ads b/gcc/ada/libgnat/s-widllu.ads index ce01285..eafb04f 100644 --- a/gcc/ada/libgnat/s-widllu.ads +++ b/gcc/ada/libgnat/s-widllu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widthi.adb b/gcc/ada/libgnat/s-widthi.adb index e47c8c13..dcd1b4b 100644 --- a/gcc/ada/libgnat/s-widthi.adb +++ b/gcc/ada/libgnat/s-widthi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -163,9 +163,6 @@ begin pragma Loop_Invariant (Pow = Big_10 ** (W - 2)); pragma Loop_Invariant (Big (T) = Big (T_Init) / Pow); pragma Loop_Variant (Decreases => T); - pragma Annotate - (CodePeer, False_Positive, - "validity check", "confusion on generated code"); end loop; declare diff --git a/gcc/ada/libgnat/s-widthi.ads b/gcc/ada/libgnat/s-widthi.ads index 44e448d..1004233 100644 --- a/gcc/ada/libgnat/s-widthi.ads +++ b/gcc/ada/libgnat/s-widthi.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widthu.adb b/gcc/ada/libgnat/s-widthu.adb index 0be44ff..e23ecef 100644 --- a/gcc/ada/libgnat/s-widthu.adb +++ b/gcc/ada/libgnat/s-widthu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -156,9 +156,6 @@ begin pragma Loop_Invariant (Pow = Big_10 ** (W - 2)); pragma Loop_Invariant (Big (T) = Big (T_Init) / Pow); pragma Loop_Variant (Decreases => T); - pragma Annotate - (CodePeer, False_Positive, - "validity check", "confusion on generated code"); end loop; declare diff --git a/gcc/ada/libgnat/s-widthu.ads b/gcc/ada/libgnat/s-widthu.ads index c70d7ae..7611e8d 100644 --- a/gcc/ada/libgnat/s-widthu.ads +++ b/gcc/ada/libgnat/s-widthu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widuns.ads b/gcc/ada/libgnat/s-widuns.ads index f694470..19d3261 100644 --- a/gcc/ada/libgnat/s-widuns.ads +++ b/gcc/ada/libgnat/s-widuns.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widwch.adb b/gcc/ada/libgnat/s-widwch.adb index 372650c..0ad7383 100644 --- a/gcc/ada/libgnat/s-widwch.adb +++ b/gcc/ada/libgnat/s-widwch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-widwch.ads b/gcc/ada/libgnat/s-widwch.ads index 9db3fbf..db5050d 100644 --- a/gcc/ada/libgnat/s-widwch.ads +++ b/gcc/ada/libgnat/s-widwch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-win32.ads b/gcc/ada/libgnat/s-win32.ads index 9d1a7ef..13b90339 100644 --- a/gcc/ada/libgnat/s-win32.ads +++ b/gcc/ada/libgnat/s-win32.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-winext.ads b/gcc/ada/libgnat/s-winext.ads index bfd5f38..7adea2d 100644 --- a/gcc/ada/libgnat/s-winext.ads +++ b/gcc/ada/libgnat/s-winext.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdcha.adb b/gcc/ada/libgnat/s-wwdcha.adb index e9eaaf7..846bd2e 100644 --- a/gcc/ada/libgnat/s-wwdcha.adb +++ b/gcc/ada/libgnat/s-wwdcha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdcha.ads b/gcc/ada/libgnat/s-wwdcha.ads index c01402b..a882e0f 100644 --- a/gcc/ada/libgnat/s-wwdcha.ads +++ b/gcc/ada/libgnat/s-wwdcha.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdenu.adb b/gcc/ada/libgnat/s-wwdenu.adb index 6e3a458..15e8c02 100644 --- a/gcc/ada/libgnat/s-wwdenu.adb +++ b/gcc/ada/libgnat/s-wwdenu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdenu.ads b/gcc/ada/libgnat/s-wwdenu.ads index e59366e..74497eb 100644 --- a/gcc/ada/libgnat/s-wwdenu.ads +++ b/gcc/ada/libgnat/s-wwdenu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdwch.adb b/gcc/ada/libgnat/s-wwdwch.adb index 2339566..15ab268 100644 --- a/gcc/ada/libgnat/s-wwdwch.adb +++ b/gcc/ada/libgnat/s-wwdwch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/s-wwdwch.ads b/gcc/ada/libgnat/s-wwdwch.ads index 32a2a35..dc959ec 100644 --- a/gcc/ada/libgnat/s-wwdwch.ads +++ b/gcc/ada/libgnat/s-wwdwch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/libgnat/system-aix.ads b/gcc/ada/libgnat/system-aix.ads index e9475c6..c016361 100644 --- a/gcc/ada/libgnat/system-aix.ads +++ b/gcc/ada/libgnat/system-aix.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (AIX/PPC Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-darwin-arm.ads b/gcc/ada/libgnat/system-darwin-arm.ads index f5b1360..be5d664 100644 --- a/gcc/ada/libgnat/system-darwin-arm.ads +++ b/gcc/ada/libgnat/system-darwin-arm.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Darwin/ARM Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-darwin-ppc.ads b/gcc/ada/libgnat/system-darwin-ppc.ads index 3a8bd13..dc3d6c4 100644 --- a/gcc/ada/libgnat/system-darwin-ppc.ads +++ b/gcc/ada/libgnat/system-darwin-ppc.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Darwin/PPC Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-darwin-x86.ads b/gcc/ada/libgnat/system-darwin-x86.ads index 527794f..378fa9b 100644 --- a/gcc/ada/libgnat/system-darwin-x86.ads +++ b/gcc/ada/libgnat/system-darwin-x86.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Darwin/x86 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-djgpp.ads b/gcc/ada/libgnat/system-djgpp.ads index beecf72..31a5351 100644 --- a/gcc/ada/libgnat/system-djgpp.ads +++ b/gcc/ada/libgnat/system-djgpp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (DJGPP Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-dragonfly-x86_64.ads b/gcc/ada/libgnat/system-dragonfly-x86_64.ads index 14f3525..37726fe 100644 --- a/gcc/ada/libgnat/system-dragonfly-x86_64.ads +++ b/gcc/ada/libgnat/system-dragonfly-x86_64.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (DragonFly BSD/x86_64 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-freebsd.ads b/gcc/ada/libgnat/system-freebsd.ads index e7ec01d..3604280 100644 --- a/gcc/ada/libgnat/system-freebsd.ads +++ b/gcc/ada/libgnat/system-freebsd.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (FreeBSD Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-hpux-ia64.ads b/gcc/ada/libgnat/system-hpux-ia64.ads index 160eb7e..4268ff5 100644 --- a/gcc/ada/libgnat/system-hpux-ia64.ads +++ b/gcc/ada/libgnat/system-hpux-ia64.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (HP-UX/ia64 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-hpux.ads b/gcc/ada/libgnat/system-hpux.ads index e809334..a412645 100644 --- a/gcc/ada/libgnat/system-hpux.ads +++ b/gcc/ada/libgnat/system-hpux.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (HP-UX Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-alpha.ads b/gcc/ada/libgnat/system-linux-alpha.ads index f5deb2a..b6f1550 100644 --- a/gcc/ada/libgnat/system-linux-alpha.ads +++ b/gcc/ada/libgnat/system-linux-alpha.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/alpha Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-arm.ads b/gcc/ada/libgnat/system-linux-arm.ads index 26e61d8..10fc281 100644 --- a/gcc/ada/libgnat/system-linux-arm.ads +++ b/gcc/ada/libgnat/system-linux-arm.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/ARM Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-hppa.ads b/gcc/ada/libgnat/system-linux-hppa.ads index 9a1429f..9a40009 100644 --- a/gcc/ada/libgnat/system-linux-hppa.ads +++ b/gcc/ada/libgnat/system-linux-hppa.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU/Linux-HPPA Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-ia64.ads b/gcc/ada/libgnat/system-linux-ia64.ads index 4ccb45c..85e9c9e 100644 --- a/gcc/ada/libgnat/system-linux-ia64.ads +++ b/gcc/ada/libgnat/system-linux-ia64.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/ia64 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-m68k.ads b/gcc/ada/libgnat/system-linux-m68k.ads index ade6c7c..83ac5ea 100644 --- a/gcc/ada/libgnat/system-linux-m68k.ads +++ b/gcc/ada/libgnat/system-linux-m68k.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU/Linux/m68k Version) -- -- -- --- Copyright (C) 2014-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2014-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-mips.ads b/gcc/ada/libgnat/system-linux-mips.ads index 5170964..5013883 100644 --- a/gcc/ada/libgnat/system-linux-mips.ads +++ b/gcc/ada/libgnat/system-linux-mips.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/MIPS Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-ppc.ads b/gcc/ada/libgnat/system-linux-ppc.ads index 2ffab24..84cf532 100644 --- a/gcc/ada/libgnat/system-linux-ppc.ads +++ b/gcc/ada/libgnat/system-linux-ppc.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/PPC Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-riscv.ads b/gcc/ada/libgnat/system-linux-riscv.ads index fc25470..56f4d09 100644 --- a/gcc/ada/libgnat/system-linux-riscv.ads +++ b/gcc/ada/libgnat/system-linux-riscv.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/RISC-V Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-s390.ads b/gcc/ada/libgnat/system-linux-s390.ads index be8fb5c..24803e2 100644 --- a/gcc/ada/libgnat/system-linux-s390.ads +++ b/gcc/ada/libgnat/system-linux-s390.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/s390 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-sh4.ads b/gcc/ada/libgnat/system-linux-sh4.ads index 6ee142a..5cee747 100644 --- a/gcc/ada/libgnat/system-linux-sh4.ads +++ b/gcc/ada/libgnat/system-linux-sh4.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/sh4 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-sparc.ads b/gcc/ada/libgnat/system-linux-sparc.ads index 9e7fae1..db46b74 100644 --- a/gcc/ada/libgnat/system-linux-sparc.ads +++ b/gcc/ada/libgnat/system-linux-sparc.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU/Linux-SPARC Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-linux-x86.ads b/gcc/ada/libgnat/system-linux-x86.ads index 893536e..87eb903 100644 --- a/gcc/ada/libgnat/system-linux-x86.ads +++ b/gcc/ada/libgnat/system-linux-x86.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU-Linux/x86 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-lynxos178-ppc.ads b/gcc/ada/libgnat/system-lynxos178-ppc.ads index 1002342..ebf8132 100644 --- a/gcc/ada/libgnat/system-lynxos178-ppc.ads +++ b/gcc/ada/libgnat/system-lynxos178-ppc.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (LynxOS-178 PPC Version) -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-lynxos178-x86.ads b/gcc/ada/libgnat/system-lynxos178-x86.ads index b4e7f12..302a2f3 100644 --- a/gcc/ada/libgnat/system-lynxos178-x86.ads +++ b/gcc/ada/libgnat/system-lynxos178-x86.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (LynxOS-178 X86 Version) -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-mingw.ads b/gcc/ada/libgnat/system-mingw.ads index 71d54ec..77fb6f0 100644 --- a/gcc/ada/libgnat/system-mingw.ads +++ b/gcc/ada/libgnat/system-mingw.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Windows Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-qnx-aarch64.ads b/gcc/ada/libgnat/system-qnx-aarch64.ads index 57e30bf..827f9df 100644 --- a/gcc/ada/libgnat/system-qnx-aarch64.ads +++ b/gcc/ada/libgnat/system-qnx-aarch64.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (QNX/Aarch64 Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-rtems.ads b/gcc/ada/libgnat/system-rtems.ads index 77423d3..06f7831 100644 --- a/gcc/ada/libgnat/system-rtems.ads +++ b/gcc/ada/libgnat/system-rtems.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Compiler Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-solaris-sparc.ads b/gcc/ada/libgnat/system-solaris-sparc.ads index 5810a28..2ba5198 100644 --- a/gcc/ada/libgnat/system-solaris-sparc.ads +++ b/gcc/ada/libgnat/system-solaris-sparc.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (SUN Solaris Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-solaris-x86.ads b/gcc/ada/libgnat/system-solaris-x86.ads index e0ac9c5..7872523 100644 --- a/gcc/ada/libgnat/system-solaris-x86.ads +++ b/gcc/ada/libgnat/system-solaris-x86.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (x86 Solaris Version) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads index fe963d7..4273245 100644 --- a/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x ARM RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads index f95efd7..214e3d5 100644 --- a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x ARM RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-arm.ads b/gcc/ada/libgnat/system-vxworks-arm.ads index a51cfa8..be391d0 100644 --- a/gcc/ada/libgnat/system-vxworks-arm.ads +++ b/gcc/ada/libgnat/system-vxworks-arm.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks Version ARM) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads index 3cd5902..9ee828b 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6 Kernel Version E500) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads index 4f3b544..d7ab0a9 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x SMP E500 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads index b0ac2f8..e304d50 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x E500 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads index 3e15ddc..6cf9b3f 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6 Kernel Version PPC) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads index 0fc52d0..07da01d 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x SMP PPC RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads index dd31dad..b6807b3 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6.x PPC RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads index 959a3b9..c8cbf52 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 6 Kernel Version x86) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads index 8c35743..d70642e 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks Version x86 for SMP RTPs) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads index 0274581..262445d 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks Version x86 for RTPs) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads index cf1b138..a739441 100644 --- a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x AARCH64 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64.ads b/gcc/ada/libgnat/system-vxworks7-aarch64.ads index 82ebc60..840682b 100644 --- a/gcc/ada/libgnat/system-vxworks7-aarch64.ads +++ b/gcc/ada/libgnat/system-vxworks7-aarch64.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x AARCH64 Kernel) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads index 3642075..c82f8fc 100644 --- a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 ARM RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-arm.ads b/gcc/ada/libgnat/system-vxworks7-arm.ads index a51cfa8..be391d0 100644 --- a/gcc/ada/libgnat/system-vxworks7-arm.ads +++ b/gcc/ada/libgnat/system-vxworks7-arm.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks Version ARM) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads index 37fa0ef..bb72157 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Kernel Version E500) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads index 2402795..d4b4dce 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x E500 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads index 4378e28..7f7f817 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x E500 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads index 2a9a2d7..2b83609 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Kernel Version PPC) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads index d8fbbee..f232b34 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x PPC RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads index 6a2c35a..1c59deb 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x PPC RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads index b71a3a9..942c4b1 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x PPC64 Kernel) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads index 429bbd2..42aeb34 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7.x PPC64 RTP) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads index 883a749..f84d8f0 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Kernel Version x86) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads index c010ae9..26e35ab 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Version x86 for RTPs) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads index 8a36aa1..9eb643c 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Version x86 for RTPs) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads index 0225112..6cdd59e 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Kernel Version x86_64) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads index 3be0ffb..47a91e6 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (VxWorks 7 Version x86_64 for RTPs) -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/link.c b/gcc/ada/link.c index eac18d9..a7574ef 100644 --- a/gcc/ada/link.c +++ b/gcc/ada/link.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/live.adb b/gcc/ada/live.adb index db0a5f2..df95fce 100644 --- a/gcc/ada/live.adb +++ b/gcc/ada/live.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/live.ads b/gcc/ada/live.ads index 6c22e90..8b7fcd0 100644 --- a/gcc/ada/live.ads +++ b/gcc/ada/live.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/locales.c b/gcc/ada/locales.c index 59d1a79..ee1385a 100644 --- a/gcc/ada/locales.c +++ b/gcc/ada/locales.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2010-2021, Free Software Foundation, Inc. * + * Copyright (C) 2010-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index 10276fa..bbabd76 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -3765,7 +3765,7 @@ package body Make is declare Arg : constant String := Argument (J); begin - if Arg = "-cargs" or Arg = "-bargs" or Arg = "-largs" then + if Arg in "-cargs" | "-bargs" | "-largs" then In_Gnatmake_Switches := False; elsif Arg = "-margs" then diff --git a/gcc/ada/make.ads b/gcc/ada/make.ads index 5de1335..bac6f8c 100644 --- a/gcc/ada/make.ads +++ b/gcc/ada/make.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/make_util.adb b/gcc/ada/make_util.adb index ff7012e..0aab161 100644 --- a/gcc/ada/make_util.adb +++ b/gcc/ada/make_util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/make_util.ads b/gcc/ada/make_util.ads index 4027142..cb1fc4e 100644 --- a/gcc/ada/make_util.ads +++ b/gcc/ada/make_util.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2004-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2004-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/makeusg.adb b/gcc/ada/makeusg.adb index 68a5c89..e7653eb 100644 --- a/gcc/ada/makeusg.adb +++ b/gcc/ada/makeusg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/makeusg.ads b/gcc/ada/makeusg.ads index cfba872e..e78bcb2 100644 --- a/gcc/ada/makeusg.ads +++ b/gcc/ada/makeusg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll-fil.adb b/gcc/ada/mdll-fil.adb index d55053a..cc8ef86 100644 --- a/gcc/ada/mdll-fil.adb +++ b/gcc/ada/mdll-fil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll-fil.ads b/gcc/ada/mdll-fil.ads index 4aa4c81..8875f8a 100644 --- a/gcc/ada/mdll-fil.ads +++ b/gcc/ada/mdll-fil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll-utl.adb b/gcc/ada/mdll-utl.adb index 48e32da..14a3eb8 100644 --- a/gcc/ada/mdll-utl.adb +++ b/gcc/ada/mdll-utl.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll-utl.ads b/gcc/ada/mdll-utl.ads index cf0384b..6328e2c 100644 --- a/gcc/ada/mdll-utl.ads +++ b/gcc/ada/mdll-utl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll.adb b/gcc/ada/mdll.adb index 632dd70..2107994 100644 --- a/gcc/ada/mdll.adb +++ b/gcc/ada/mdll.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mdll.ads b/gcc/ada/mdll.ads index a134ae4..110eb31 100644 --- a/gcc/ada/mdll.ads +++ b/gcc/ada/mdll.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/mingw32.h b/gcc/ada/mingw32.h index eed4712..1157fc6 100644 --- a/gcc/ada/mingw32.h +++ b/gcc/ada/mingw32.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2002-2021, Free Software Foundation, Inc. * + * Copyright (C) 2002-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/mkdir.c b/gcc/ada/mkdir.c index e644c4c..d54d5ec 100644 --- a/gcc/ada/mkdir.c +++ b/gcc/ada/mkdir.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2002-2021, Free Software Foundation, Inc. * + * Copyright (C) 2002-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/namet-sp.adb b/gcc/ada/namet-sp.adb index f10373f..8720c4a 100644 --- a/gcc/ada/namet-sp.adb +++ b/gcc/ada/namet-sp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/namet-sp.ads b/gcc/ada/namet-sp.ads index 23dbd2b..b1818c7 100644 --- a/gcc/ada/namet-sp.ads +++ b/gcc/ada/namet-sp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/namet.adb b/gcc/ada/namet.adb index 3a4755d..e8162e4 100644 --- a/gcc/ada/namet.adb +++ b/gcc/ada/namet.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/namet.ads b/gcc/ada/namet.ads index e5d219f..87fc65e 100644 --- a/gcc/ada/namet.ads +++ b/gcc/ada/namet.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/namet.h b/gcc/ada/namet.h index 09fa264..95db9c0 100644 --- a/gcc/ada/namet.h +++ b/gcc/ada/namet.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/nlists.adb b/gcc/ada/nlists.adb index 7339c17..18702f3 100644 --- a/gcc/ada/nlists.adb +++ b/gcc/ada/nlists.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/nlists.ads b/gcc/ada/nlists.ads index 9f5774a..2f0585a 100644 --- a/gcc/ada/nlists.ads +++ b/gcc/ada/nlists.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/nlists.h b/gcc/ada/nlists.h index 2cd5cf3..aa4e0d3 100644 --- a/gcc/ada/nlists.h +++ b/gcc/ada/nlists.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/opt.adb b/gcc/ada/opt.adb index cd909495..49e03b0 100644 --- a/gcc/ada/opt.adb +++ b/gcc/ada/opt.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index 3ccd630..c38a93f 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -352,15 +352,6 @@ package Opt is -- set True to delete only the files produced by the compiler but not the -- library files or the executable files. - Compiler_Unit : Boolean := False; - -- GNAT1 - -- Set True by an occurrence of pragma Compiler_Unit_Warning (or of the - -- obsolete pragma Compiler_Unit) in the main unit. Once set True, stays - -- True, since any units that are with'ed directly or indirectly by - -- a Compiler_Unit_Warning main unit are subject to the same restrictions. - -- Such units really should have their own pragmas, but we do not bother to - -- check for that, so this transitivity provides extra checking. - Config_File : Boolean := True; -- GNAT -- Set to False to inhibit reading and processing of gnat.adc file diff --git a/gcc/ada/osint-b.adb b/gcc/ada/osint-b.adb index 874dfe1..90d3b14 100644 --- a/gcc/ada/osint-b.adb +++ b/gcc/ada/osint-b.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-b.ads b/gcc/ada/osint-b.ads index cd604bf..14474ae 100644 --- a/gcc/ada/osint-b.ads +++ b/gcc/ada/osint-b.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-c.adb b/gcc/ada/osint-c.adb index d08b082..477ff27 100644 --- a/gcc/ada/osint-c.adb +++ b/gcc/ada/osint-c.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-c.ads b/gcc/ada/osint-c.ads index 61c6632..5c4a3d4 100644 --- a/gcc/ada/osint-c.ads +++ b/gcc/ada/osint-c.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-l.adb b/gcc/ada/osint-l.adb index cb0d446..ee25cb5 100644 --- a/gcc/ada/osint-l.adb +++ b/gcc/ada/osint-l.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-l.ads b/gcc/ada/osint-l.ads index ca1e1f7..3d73096 100644 --- a/gcc/ada/osint-l.ads +++ b/gcc/ada/osint-l.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint-m.adb b/gcc/ada/osint-m.adb index 35f67f9..5afafa2 100644 --- a/gcc/ada/osint-m.adb +++ b/gcc/ada/osint-m.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -23,17 +23,6 @@ -- -- ------------------------------------------------------------------------------ -with Osint; - -pragma Elaborate_All (Osint); --- This pragma is needed because of the call to Set_Program in the --- elaboration of the package. We cannot rely on the static model --- of elaboration since the compiler is routinely compiled with --- checks off (-gnatp), and with older versions of the compiler --- (up to and including most 5.04 wavefronts), -gnatp suppresses --- the static elaboration check mechanisms. It could be removed --- one day, but there really is no need to do so. - package body Osint.M is ----------------------- diff --git a/gcc/ada/osint-m.ads b/gcc/ada/osint-m.ads index e3eba32..74f82de 100644 --- a/gcc/ada/osint-m.ads +++ b/gcc/ada/osint-m.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/osint.adb b/gcc/ada/osint.adb index cf39128..3ac4fd5 100644 --- a/gcc/ada/osint.adb +++ b/gcc/ada/osint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1059,6 +1059,24 @@ package body Osint is ---------------------- function File_Names_Equal (File1, File2 : String) return Boolean is + + function To_Lower (A : String) return String; + -- For bootstrap reasons, we cannot use To_Lower function from + -- System.Case_Util. + + -------------- + -- To_Lower -- + -------------- + + function To_Lower (A : String) return String is + Result : String := A; + begin + To_Lower (Result); + return Result; + end To_Lower; + + -- Start of processing for File_Names_Equal + begin if File_Names_Case_Sensitive then return File1 = File2; @@ -2261,8 +2279,6 @@ package body Osint is Find_Program_Name; - Start_Of_Suffix := Name_Len + 1; - -- Find the target prefix if any, for the cross compilation case. -- For instance in "powerpc-elf-gcc" the target prefix is -- "powerpc-elf-" @@ -2286,9 +2302,7 @@ package body Osint is end if; end loop; - if End_Of_Prefix > 1 then - Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; - end if; + Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; -- Create the new program name diff --git a/gcc/ada/osint.ads b/gcc/ada/osint.ads index f1a9f84..a4a863e 100644 --- a/gcc/ada/osint.ads +++ b/gcc/ada/osint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -52,6 +52,10 @@ package Osint is Project_Include_Path_File : constant String := "ADA_PRJ_INCLUDE_FILE"; Project_Objects_Path_File : constant String := "ADA_PRJ_OBJECTS_FILE"; + Null_FD : constant File_Descriptor := -2; + -- Uninitialized file descriptor. Copied from System.OS_Lib for bootstrap + -- reasons. + Output_FD : File_Descriptor; -- File descriptor for current library info, list, tree, C, H, or binder -- output. Only one of these is open at a time, so we need only one FD. diff --git a/gcc/ada/output.adb b/gcc/ada/output.adb index 00202fd..bdb2a44 100644 --- a/gcc/ada/output.adb +++ b/gcc/ada/output.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/output.ads b/gcc/ada/output.ads index 5058d6d..3eab6c7 100644 --- a/gcc/ada/output.ads +++ b/gcc/ada/output.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-ch10.adb b/gcc/ada/par-ch10.adb index 76f0edd..901ad17 100644 --- a/gcc/ada/par-ch10.adb +++ b/gcc/ada/par-ch10.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-ch11.adb b/gcc/ada/par-ch11.adb index 8304c3e..cc10ba7 100644 --- a/gcc/ada/par-ch11.adb +++ b/gcc/ada/par-ch11.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -56,7 +56,7 @@ package body Ch11 is -- Error_Recovery : Cannot raise Error_Resync function P_Handled_Sequence_Of_Statements return Node_Id is - Handled_Stmt_Seq_Node : Node_Id; + Handled_Stmt_Seq_Node : Node_Id; begin Handled_Stmt_Seq_Node := New_Node (N_Handled_Sequence_Of_Statements, Token_Ptr); diff --git a/gcc/ada/par-ch12.adb b/gcc/ada/par-ch12.adb index 2604a17..991e93f 100644 --- a/gcc/ada/par-ch12.adb +++ b/gcc/ada/par-ch12.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -184,7 +184,7 @@ package body Ch12 is if Token = Tok_Package then Append (P_Formal_Package_Declaration, Decls); - elsif Token = Tok_Procedure or Token = Tok_Function then + elsif Token in Tok_Procedure | Tok_Function then Append (P_Formal_Subprogram_Declaration, Decls); else diff --git a/gcc/ada/par-ch13.adb b/gcc/ada/par-ch13.adb index 227696a..ca925d0 100644 --- a/gcc/ada/par-ch13.adb +++ b/gcc/ada/par-ch13.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-ch2.adb b/gcc/ada/par-ch2.adb index cb60614..060bb41 100644 --- a/gcc/ada/par-ch2.adb +++ b/gcc/ada/par-ch2.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -62,28 +62,24 @@ package body Ch2 is -- Error recovery: can raise Error_Resync (cannot return Error) - function P_Identifier (C : Id_Check := None) return Node_Id is + function P_Identifier + (C : Id_Check := None; + Force_Msg : Boolean := False) + return Node_Id + is Ident_Node : Node_Id; begin -- All set if we do indeed have an identifier - -- Code duplication, see Par_Ch3.P_Defining_Identifier??? - if Token = Tok_Identifier then Check_Future_Keyword; - Ident_Node := Token_Node; - Scan; -- past Identifier - return Ident_Node; -- If we have a reserved identifier, manufacture an identifier with -- a corresponding name after posting an appropriate error message elsif Is_Reserved_Identifier (C) then - Scan_Reserved_Identifier (Force_Msg => False); - Ident_Node := Token_Node; - Scan; -- past the node - return Ident_Node; + Scan_Reserved_Identifier (Force_Msg => Force_Msg); -- Otherwise we have junk that cannot be interpreted as an identifier @@ -91,6 +87,15 @@ package body Ch2 is T_Identifier; -- to give message raise Error_Resync; end if; + + if Style_Check then + Style.Check_Defining_Identifier_Casing; + end if; + + Ident_Node := Token_Node; + Scan; -- past the identifier + + return Ident_Node; end P_Identifier; -------------------------- diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb index a225cf3..08ffd7b 100644 --- a/gcc/ada/par-ch3.adb +++ b/gcc/ada/par-ch3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -209,39 +209,9 @@ package body Ch3 is -- Error recovery: can raise Error_Resync function P_Defining_Identifier (C : Id_Check := None) return Node_Id is - Ident_Node : Node_Id; + Ident_Node : Node_Id := P_Identifier (C, True); begin - -- Scan out the identifier. Note that this code is essentially identical - -- to P_Identifier, except that in the call to Scan_Reserved_Identifier - -- we set Force_Msg to True, since we want at least one message for each - -- separate declaration (but not use) of a reserved identifier. - - -- Duplication should be removed, common code should be factored??? - - if Token = Tok_Identifier then - Check_Future_Keyword; - - -- If we have a reserved identifier, manufacture an identifier with - -- a corresponding name after posting an appropriate error message - - elsif Is_Reserved_Identifier (C) then - Scan_Reserved_Identifier (Force_Msg => True); - - -- Otherwise we have junk that cannot be interpreted as an identifier - - else - T_Identifier; -- to give message - raise Error_Resync; - end if; - - if Style_Check then - Style.Check_Defining_Identifier_Casing; - end if; - - Ident_Node := Token_Node; - Scan; -- past the identifier - -- If we already have a defining identifier, clean it out and make -- a new clean identifier. This situation arises in some error cases -- and we need to fix it. @@ -2818,12 +2788,7 @@ package body Ch3 is else P_Index_Subtype_Def_With_Fixed_Lower_Bound (Subtype_Mark_Node); - if not Extensions_Allowed then - Error_Msg_N - ("fixed-lower-bound array is an extension feature; " - & "use -gnatX", - Token_Node); - end if; + Error_Msg_GNAT_Extension ("fixed-lower-bound array"); end if; exit when Token = Tok_Right_Paren or else Token = Tok_Of; @@ -2892,12 +2857,7 @@ package body Ch3 is P_Index_Subtype_Def_With_Fixed_Lower_Bound (Subtype_Mark_Node); - if not Extensions_Allowed then - Error_Msg_N - ("fixed-lower-bound array is an extension feature; " - & "use -gnatX", - Token_Node); - end if; + Error_Msg_GNAT_Extension ("fixed-lower-bound array"); end if; exit when Token = Tok_Right_Paren or else Token = Tok_Of; @@ -3399,12 +3359,7 @@ package body Ch3 is -- later during analysis), and scan to the next token. if Token = Tok_Box then - if not Extensions_Allowed then - Error_Msg_N - ("fixed-lower-bound array is an extension feature; " - & "use -gnatX", - Expr_Node); - end if; + Error_Msg_GNAT_Extension ("fixed-lower-bound array"); Expr_Node := Empty; Scan; diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb index d985003..0895be1 100644 --- a/gcc/ada/par-ch4.adb +++ b/gcc/ada/par-ch4.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1194,7 +1194,7 @@ package body Ch4 is (Prefix_Node : Node_Id) return Node_Id is - Attr_Node : Node_Id; + Attr_Node : Node_Id; begin Attr_Node := New_Node (N_Attribute_Reference, Token_Ptr); @@ -2471,9 +2471,6 @@ package body Ch4 is and then Num_Concats >= Num_Concats_Threshold then declare - Empty_String_Val : String_Id; - -- String_Id for "" - Strlit_Concat_Val : String_Id; -- Contains the folded value (which will be correct if the -- "&" operators are the predefined ones). @@ -2509,11 +2506,9 @@ package body Ch4 is -- Create new folded node, and rewrite result with a concat- -- enation of an empty string literal and the folded node. - Start_String; - Empty_String_Val := End_String; New_Node := Make_Op_Concat (Loc, - Make_String_Literal (Loc, Empty_String_Val), + Make_String_Literal (Loc, Null_String_Id), Make_String_Literal (Loc, Strlit_Concat_Val, Is_Folded_In_Parser => True)); Rewrite (Node1, New_Node); @@ -2973,7 +2968,7 @@ package body Ch4 is Save_Scan_State (Scan_State); Scan; -- past FOR - if Token = Tok_All or else Token = Tok_Some then + if Token = Tok_All or else Token = Tok_Some then Restore_Scan_State (Scan_State); -- To FOR Node1 := P_Quantified_Expression; diff --git a/gcc/ada/par-ch5.adb b/gcc/ada/par-ch5.adb index 1e55181..91f2442 100644 --- a/gcc/ada/par-ch5.adb +++ b/gcc/ada/par-ch5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -235,10 +235,6 @@ package body Ch5 is and then Statement_Seen) or else All_Pragmas) then - -- This Ada 2012 construct not allowed in a compiler unit - - Check_Compiler_Unit ("null statement list", Token_Ptr); - declare Null_Stm : constant Node_Id := Make_Null_Statement (Token_Ptr); diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb index be85d09..d972ead 100644 --- a/gcc/ada/par-ch6.adb +++ b/gcc/ada/par-ch6.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -841,7 +841,14 @@ package body Ch6 is begin -- Expression_Function case - if Token = Tok_Left_Paren + -- If likely an aggregate, check we are in Ada 2022 mode + + if Token = Tok_Left_Bracket then + Error_Msg_Ada_2022_Feature + ("!aggregates as expression function", Token_Ptr); + end if; + + if Token in Tok_Left_Paren | Tok_Left_Bracket or else Likely_Expression_Function then -- Check expression function allowed here @@ -1144,7 +1151,7 @@ package body Ch6 is -------------- function Real_Dot return Boolean is - Scan_State : Saved_Scan_State; + Scan_State : Saved_Scan_State; begin if Token /= Tok_Dot then diff --git a/gcc/ada/par-ch7.adb b/gcc/ada/par-ch7.adb index 8bbb0ea..71046e2 100644 --- a/gcc/ada/par-ch7.adb +++ b/gcc/ada/par-ch7.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-ch8.adb b/gcc/ada/par-ch8.adb index ab2cfaf..67dce14 100644 --- a/gcc/ada/par-ch8.adb +++ b/gcc/ada/par-ch8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-ch9.adb b/gcc/ada/par-ch9.adb index e0d5631..7d4ea62 100644 --- a/gcc/ada/par-ch9.adb +++ b/gcc/ada/par-ch9.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -283,7 +283,7 @@ package body Ch9 is -- Error recovery: cannot raise Error_Resync function P_Task_Definition return Node_Id is - Def_Node : Node_Id; + Def_Node : Node_Id; begin Def_Node := New_Node (N_Task_Definition, Token_Ptr); diff --git a/gcc/ada/par-endh.adb b/gcc/ada/par-endh.adb index 272e737..212d451 100644 --- a/gcc/ada/par-endh.adb +++ b/gcc/ada/par-endh.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -732,7 +732,7 @@ package body Endh is -- ... -- end My_Label; - -- This is the case where we want to use the entry in the suspicous + -- This is the case where we want to use the entry in the suspicious -- label table to flag the semicolon saying it should be a colon. -- Label_OK will be false because the label does not match (we have diff --git a/gcc/ada/par-labl.adb b/gcc/ada/par-labl.adb index 8356fe5..b0e2cbd 100644 --- a/gcc/ada/par-labl.adb +++ b/gcc/ada/par-labl.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-load.adb b/gcc/ada/par-load.adb index dcba6d5..929dcc7 100644 --- a/gcc/ada/par-load.adb +++ b/gcc/ada/par-load.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index e1258e0..6f1f50f 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -395,24 +395,6 @@ begin Ada_Version_Pragma := Pragma_Node; end if; - --------------------------- - -- Compiler_Unit_Warning -- - --------------------------- - - -- This pragma must be processed at parse time, since the resulting - -- status may be tested during the parsing of the program. - - when Pragma_Compiler_Unit - | Pragma_Compiler_Unit_Warning - => - Check_Arg_Count (0); - - -- Only recognized in main unit - - if Current_Source_Unit = Main_Unit then - Compiler_Unit := True; - end if; - ----------- -- Debug -- ----------- diff --git a/gcc/ada/par-sync.adb b/gcc/ada/par-sync.adb index 05188a7..7a3da8e 100644 --- a/gcc/ada/par-sync.adb +++ b/gcc/ada/par-sync.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-tchk.adb b/gcc/ada/par-tchk.adb index e2965d6..6a62d70 100644 --- a/gcc/ada/par-tchk.adb +++ b/gcc/ada/par-tchk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb index 1d7283c..2eabc58 100644 --- a/gcc/ada/par-util.adb +++ b/gcc/ada/par-util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par.adb b/gcc/ada/par.adb index 312c411..20b2df9 100644 --- a/gcc/ada/par.adb +++ b/gcc/ada/par.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -484,11 +484,11 @@ function Par (Configuration_Pragmas : Boolean) return List_Id is -- This field is used to provide the name of the construct being parsed -- and indirectly its kind. For loops and blocks, the field contains the -- source name or the generated one. For package specifications, bodies, - -- subprogram specifications and bodies the field holds the correponding - -- program unit name. For task declarations and bodies, protected types - -- and bodies, and accept statements the field hold the name of the type - -- or operation. For if-statements, case-statements, return statements, - -- and selects, the field is initialized to Error. + -- subprogram specifications and bodies the field holds the + -- corresponding program unit name. For task declarations and bodies, + -- protected types and bodies, and accept statements the field hold the + -- name of the type or operation. For if-statements, case-statements, + -- return statements, and selects, the field is initialized to Error. -- Note: this is a bit of an odd (mis)use of Error, since there is no -- Error, but we use this value as a place holder to indicate that it @@ -564,7 +564,7 @@ function Par (Configuration_Pragmas : Boolean) return List_Id is -- Table for Handling Suspicious Labels -- ------------------------------------------ - -- This is a special data structure which is used to deal very spefifically + -- This is a special data structure which is used to deal very specifically -- with the following error case -- label; @@ -649,10 +649,16 @@ function Par (Configuration_Pragmas : Boolean) return List_Id is -- procedure more than once for the same pragma. All parse-time pragma -- handling must be prepared to handle such multiple calls correctly. - function P_Identifier (C : Id_Check := None) return Node_Id; + function P_Identifier + (C : Id_Check := None; + Force_Msg : Boolean := False) return Node_Id; -- Scans out an identifier. The parameter C determines the treatment -- of reserved identifiers. See declaration of Id_Check for details. + -- An appropriate error message, pointing to the token, is also issued + -- if either this is the first occurrence of misuse of this identifier, + -- or if Force_Msg is True. + function P_Pragmas_Opt return List_Id; -- This function scans for a sequence of pragmas in other than a -- declaration sequence or statement sequence context. All pragmas diff --git a/gcc/ada/par.ads b/gcc/ada/par.ads index 9d7b864..f1dc971 100644 --- a/gcc/ada/par.ads +++ b/gcc/ada/par.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index 09e4d50..aba863d 100644 --- a/gcc/ada/par_sco.adb +++ b/gcc/ada/par_sco.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -922,8 +922,8 @@ package body Par_SCO is --------------------- procedure Record_Instance (Id : Instance_Id; Inst_Sloc : Source_Ptr) is - Inst_Src : constant Source_File_Index := - Get_Source_File_Index (Inst_Sloc); + Inst_Src : constant Source_File_Index := + Get_Source_File_Index (Inst_Sloc); begin SCO_Instance_Table.Append ((Inst_Dep_Num => Dependency_Num (Unit (Inst_Src)), @@ -2417,21 +2417,18 @@ package body Par_SCO is -- Loop through statements or declarations - if Is_Non_Empty_List (L) then - N := First (L); - while Present (N) loop + N := First (L); + while Present (N) loop - -- Note: For separate bodies, we see the tree after Par.Labl has - -- introduced implicit labels, so we need to ignore those nodes. + -- Note: For separate bodies, we see the tree after Par.Labl has + -- introduced implicit labels, so we need to ignore those nodes. - if Nkind (N) /= N_Implicit_Label_Declaration then - Traverse_One (N); - end if; - - Next (N); - end loop; + if Nkind (N) /= N_Implicit_Label_Declaration then + Traverse_One (N); + end if; - end if; + Next (N); + end loop; -- End sequence of statements and flush deferred decisions diff --git a/gcc/ada/par_sco.ads b/gcc/ada/par_sco.ads index da8cded..bfe4fe1 100644 --- a/gcc/ada/par_sco.ads +++ b/gcc/ada/par_sco.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/pprint.adb b/gcc/ada/pprint.adb index b76bd91..983a90b 100644 --- a/gcc/ada/pprint.adb +++ b/gcc/ada/pprint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/pprint.ads b/gcc/ada/pprint.ads index dbfbb2e..0c68ab6 100644 --- a/gcc/ada/pprint.ads +++ b/gcc/ada/pprint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/prep.adb b/gcc/ada/prep.adb index e01161c..b67fe8d 100644 --- a/gcc/ada/prep.adb +++ b/gcc/ada/prep.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -114,9 +114,6 @@ package body Prep is -- Used to avoid repetition of the part of the initialisation that needs -- to be done only once. - Empty_String : String_Id; - -- "", as a string_id - String_False : String_Id; -- "false", as a string_id @@ -810,9 +807,6 @@ package body Prep is True_Value.Value := End_String; Start_String; - Empty_String := End_String; - - Start_String; Store_String_Chars ("False"); String_False := End_String; @@ -1072,7 +1066,7 @@ package body Prep is Original => Original_Name, On_The_Command_Line => False, Is_A_String => False, - Value => Empty_String); + Value => Null_String_Id); else Value_Start := Token_Ptr; diff --git a/gcc/ada/prep.ads b/gcc/ada/prep.ads index 91ed310..f0e2e7e 100644 --- a/gcc/ada/prep.ads +++ b/gcc/ada/prep.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/prepcomp.adb b/gcc/ada/prepcomp.adb index d5ccbf9..3cd2959 100644 --- a/gcc/ada/prepcomp.adb +++ b/gcc/ada/prepcomp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/prepcomp.ads b/gcc/ada/prepcomp.ads index 9aefdf8..5ad798f 100644 --- a/gcc/ada/prepcomp.ads +++ b/gcc/ada/prepcomp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/put_scos.adb b/gcc/ada/put_scos.adb index 1873603..9bb2db7 100644 --- a/gcc/ada/put_scos.adb +++ b/gcc/ada/put_scos.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/put_scos.ads b/gcc/ada/put_scos.ads index 912350f..5a7dd93 100644 --- a/gcc/ada/put_scos.ads +++ b/gcc/ada/put_scos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c index 5fdd76f..801edb6 100644 --- a/gcc/ada/raise-gcc.c +++ b/gcc/ada/raise-gcc.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/raise.c b/gcc/ada/raise.c index 0c12d07..477565c 100644 --- a/gcc/ada/raise.c +++ b/gcc/ada/raise.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/raise.h b/gcc/ada/raise.h index b2793b5..8190651 100644 --- a/gcc/ada/raise.h +++ b/gcc/ada/raise.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/repinfo-input.adb b/gcc/ada/repinfo-input.adb index 7e250a4..845da124 100644 --- a/gcc/ada/repinfo-input.adb +++ b/gcc/ada/repinfo-input.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -288,7 +288,7 @@ package body Repinfo.Input is ---------------------- function Decode_Integer (Lo, Hi : Text_Ptr) return Uint is - Len : constant Nat := Int (Hi) - Int (Lo) + 1; + Len : constant Nat := Int (Hi) - Int (Lo) + 1; begin -- Decode up to 9 characters manually, otherwise call into Uint diff --git a/gcc/ada/repinfo-input.ads b/gcc/ada/repinfo-input.ads index fc34f02..fddcf42 100644 --- a/gcc/ada/repinfo-input.ads +++ b/gcc/ada/repinfo-input.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2018-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2018-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb index 36ad805..b77ff4a 100644 --- a/gcc/ada/repinfo.adb +++ b/gcc/ada/repinfo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -568,12 +568,14 @@ package body Repinfo is end if; end if; - -- Recurse into nested package, but not if they are package - -- renamings (in particular renamings of the enclosing package, - -- as for some Java bindings and for generic instances). + -- Recurse into nested package, but not child packages, and not + -- nested package renamings (in particular renamings of the + -- enclosing package, as for some Java bindings and for generic + -- instances). if Ekind (E) = E_Package then - if No (Renamed_Entity (E)) then + if No (Renamed_Entity (E)) and then not Is_Child_Unit (E) + then List_Entities (E, Bytes_Big_Endian); end if; diff --git a/gcc/ada/repinfo.ads b/gcc/ada/repinfo.ads index d07208e..6462407 100644 --- a/gcc/ada/repinfo.ads +++ b/gcc/ada/repinfo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/repinfo.h b/gcc/ada/repinfo.h index 1b96ceb..ab64576 100644 --- a/gcc/ada/repinfo.h +++ b/gcc/ada/repinfo.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1999-2021, Free Software Foundation, Inc. * + * Copyright (C) 1999-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index d97a42e..d62572e 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -71,12 +71,12 @@ package body Restrict is No_Specification_Of_Aspect_Warning : array (Aspect_Id) of Boolean := (others => True); - -- An entry in this array is set False in reponse to a previous call to - -- Set_No_Speficiation_Of_Aspect for pragmas in the main unit that + -- An entry in this array is set False in response to a previous call to + -- Set_No_Specification_Of_Aspect for pragmas in the main unit that -- specify Warning as False. Once set False, an entry is never reset. No_Specification_Of_Aspect_Set : Boolean := False; - -- Set True if any entry of No_Specifcation_Of_Aspects has been set True. + -- Set True if any entry of No_Specification_Of_Aspects has been set True. -- Once set True, this is never turned off again. No_Use_Of_Attribute : array (Attribute_Id) of Source_Ptr := @@ -149,24 +149,6 @@ package body Restrict is -- Add specified restriction to stored configuration boolean restrictions. -- This is used for handling the special case of No_Elaboration_Code. - ------------------------- - -- Check_Compiler_Unit -- - ------------------------- - - procedure Check_Compiler_Unit (Feature : String; N : Node_Id) is - begin - if Compiler_Unit then - Error_Msg_N (Feature & " not allowed in compiler unit!!??", N); - end if; - end Check_Compiler_Unit; - - procedure Check_Compiler_Unit (Feature : String; Loc : Source_Ptr) is - begin - if Compiler_Unit then - Error_Msg (Feature & " not allowed in compiler unit!!??", Loc); - end if; - end Check_Compiler_Unit; - ------------------------------------ -- Check_Elaboration_Code_Allowed -- ------------------------------------ diff --git a/gcc/ada/restrict.ads b/gcc/ada/restrict.ads index 183973b..f24560d 100644 --- a/gcc/ada/restrict.ads +++ b/gcc/ada/restrict.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -143,6 +143,7 @@ package Restrict is No_Standard_Storage_Pools => True, No_Stream_Optimizations => True, No_Streams => True, + No_Tagged_Type_Registration => True, No_Task_Attributes_Package => True, No_Task_Termination => True, No_Tasking => True, @@ -240,16 +241,6 @@ package Restrict is -- For abort to be allowed, either No_Abort_Statements must be False, -- or Max_Asynchronous_Select_Nesting must be non-zero. - procedure Check_Compiler_Unit (Feature : String; N : Node_Id); - -- If unit N is in a unit that has a pragma Compiler_Unit_Warning, then - -- a message is posted on node N noting use of the given feature is not - -- permitted in the compiler (bootstrap considerations). - - procedure Check_Compiler_Unit (Feature : String; Loc : Source_Ptr); - -- If unit N is in a unit that has a pragma Compiler_Unit_Warning, then a - -- message is posted at location Loc noting use of the given feature is not - -- permitted in the compiler (bootstrap considerations). - procedure Check_Restricted_Unit (U : Unit_Name_Type; N : Node_Id); -- Checks if loading of unit U is prohibited by the setting of some -- restriction (e.g. No_IO restricts the loading of unit Ada.Text_IO). diff --git a/gcc/ada/rident.ads b/gcc/ada/rident.ads index 888a256..a7f1103 100644 --- a/gcc/ada/rident.ads +++ b/gcc/ada/rident.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/rtfinal.c b/gcc/ada/rtfinal.c index ac0efd0..543e3a2 100644 --- a/gcc/ada/rtfinal.c +++ b/gcc/ada/rtfinal.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2014-2021, Free Software Foundation, Inc. * + * Copyright (C) 2014-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/rtinit.c b/gcc/ada/rtinit.c index 83a63c8..1b351d3 100644 --- a/gcc/ada/rtinit.c +++ b/gcc/ada/rtinit.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2014-2021, Free Software Foundation, Inc. * + * Copyright (C) 2014-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb index 0c3a043..6808efa 100644 --- a/gcc/ada/rtsfind.adb +++ b/gcc/ada/rtsfind.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads index 2802a64..e174e75 100644 --- a/gcc/ada/rtsfind.ads +++ b/gcc/ada/rtsfind.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/runtime.h b/gcc/ada/runtime.h index 7721947..fe57044 100644 --- a/gcc/ada/runtime.h +++ b/gcc/ada/runtime.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2019-2021, Free Software Foundation, Inc. * + * Copyright (C) 2019-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c index 54fa2f1..af69190 100644 --- a/gcc/ada/s-oscons-tmplt.c +++ b/gcc/ada/s-oscons-tmplt.c @@ -7,7 +7,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sa_messages.adb b/gcc/ada/sa_messages.adb index 41c0db1..b9b4e93 100644 --- a/gcc/ada/sa_messages.adb +++ b/gcc/ada/sa_messages.adb @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- C O D E P E E R / S P A R K -- -- -- --- Copyright (C) 2015-2021, AdaCore -- +-- Copyright (C) 2015-2022, AdaCore -- -- -- -- This is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sa_messages.ads b/gcc/ada/sa_messages.ads index 4f4ed8a..c448397 100644 --- a/gcc/ada/sa_messages.ads +++ b/gcc/ada/sa_messages.ads @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- C O D E P E E R / S P A R K -- -- -- --- Copyright (C) 2015-2021, AdaCore -- +-- Copyright (C) 2015-2022, AdaCore -- -- -- -- This is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scans.adb b/gcc/ada/scans.adb index 268d2bd..a8e674c 100644 --- a/gcc/ada/scans.adb +++ b/gcc/ada/scans.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scans.ads b/gcc/ada/scans.ads index 5cbae5a..d73dae4 100644 --- a/gcc/ada/scans.ads +++ b/gcc/ada/scans.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scil_ll.adb b/gcc/ada/scil_ll.adb index 487dd36..d78a33c 100644 --- a/gcc/ada/scil_ll.adb +++ b/gcc/ada/scil_ll.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scil_ll.ads b/gcc/ada/scil_ll.ads index ee1e1ff..d5e8804 100644 --- a/gcc/ada/scil_ll.ads +++ b/gcc/ada/scil_ll.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scn.adb b/gcc/ada/scn.adb index e81985f..f8f0301 100644 --- a/gcc/ada/scn.adb +++ b/gcc/ada/scn.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scn.ads b/gcc/ada/scn.ads index 2bf3feb..1f224c3 100644 --- a/gcc/ada/scn.ads +++ b/gcc/ada/scn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scng.adb b/gcc/ada/scng.adb index 33a7267..d0fb7f1 100644 --- a/gcc/ada/scng.adb +++ b/gcc/ada/scng.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scng.ads b/gcc/ada/scng.ads index 56e24879..9399997 100644 --- a/gcc/ada/scng.ads +++ b/gcc/ada/scng.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scos.adb b/gcc/ada/scos.adb index 5bebe4f..a684b2d 100644 --- a/gcc/ada/scos.adb +++ b/gcc/ada/scos.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scos.ads b/gcc/ada/scos.ads index cdac552..2eb2e72 100644 --- a/gcc/ada/scos.ads +++ b/gcc/ada/scos.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/scos.h b/gcc/ada/scos.h index 2d46c6e..b322c65 100644 --- a/gcc/ada/scos.h +++ b/gcc/ada/scos.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2014-2021, Free Software Foundation, Inc. * + * Copyright (C) 2014-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sdefault.ads b/gcc/ada/sdefault.ads index b909ef1..30a2558 100644 --- a/gcc/ada/sdefault.ads +++ b/gcc/ada/sdefault.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/seh_init.c b/gcc/ada/seh_init.c index 6d169a9..16a1f69 100644 --- a/gcc/ada/seh_init.c +++ b/gcc/ada/seh_init.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2005-2021, Free Software Foundation, Inc. * + * Copyright (C) 2005-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb index ee5c7cf..c88826a 100644 --- a/gcc/ada/sem.adb +++ b/gcc/ada/sem.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem.ads b/gcc/ada/sem.ads index 699f685..5a07f06 100644 --- a/gcc/ada/sem.ads +++ b/gcc/ada/sem.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -503,7 +503,7 @@ package Sem is -- Save contents of Check_Policy_List on entry to restore on exit. The -- Check_Policy pragmas are chained with Check_Policy_List pointing to -- the most recent entry. This list is searched starting here, so that - -- the search finds the most recent appicable entry. When we restore + -- the search finds the most recent applicable entry. When we restore -- Check_Policy_List on exit from the scope, the effect is to remove -- all entries set in the scope being exited. diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index 6e76e3d..60195d2 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_aggr.ads b/gcc/ada/sem_aggr.ads index 01aa33d..ee65210 100644 --- a/gcc/ada/sem_aggr.ads +++ b/gcc/ada/sem_aggr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index ef7437a..33179aa 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -989,7 +989,15 @@ package body Sem_Attr is Set_Etype (P, Typ); end if; - if Typ = Scop then + -- A current instance typically appears immediately within + -- the type declaration, but may be nested within an internally + -- generated temporary scope - as for an aggregate of a + -- discriminated component. + + if Typ = Scop + or else (In_Open_Scopes (Typ) + and then not Comes_From_Source (Scop)) + then declare Q : Node_Id := Parent (N); @@ -1176,7 +1184,7 @@ package body Sem_Attr is function Is_Within (Nod : Node_Id; Encl_Nod : Node_Id) return Boolean; - -- Subsidiary to Check_Placemenet_In_XXX. Determine whether arbitrary + -- Subsidiary to Check_Placement_In_XXX. Determine whether arbitrary -- node Nod is within enclosing node Encl_Nod. procedure Placement_Error; @@ -2622,6 +2630,15 @@ package body Sem_Attr is Check_Restriction (No_Exception_Registration, P); end if; + -- If the No_Tagged_Type_Registration restriction is active, then + -- class-wide streaming attributes are not allowed. + + if Restriction_Check_Required (No_Tagged_Type_Registration) + and then Is_Class_Wide_Type (P_Type) + then + Check_Restriction (No_Tagged_Type_Registration, P); + end if; + -- Here we must check that the first argument is an access type -- that is compatible with Ada.Streams.Root_Stream_Type'Class. @@ -5134,11 +5151,14 @@ package body Sem_Attr is -- Entities mentioned within the prefix of attribute 'Old must -- be global to the related postcondition. If this is not the -- case, then the scope of the local entity is nested within - -- that of the subprogram. + -- that of the subprogram. Moreover, we need to know whether + -- Entity (Nod) occurs in the tree rooted at the prefix to + -- ensure the entity is not declared within then prefix itself. elsif Is_Entity_Name (Nod) and then Present (Entity (Nod)) and then Scope_Within (Scope (Entity (Nod)), Subp_Id) + and then not In_Subtree (Entity (Nod), P) then Error_Attr ("prefix of attribute % cannot reference local entities", @@ -12555,20 +12575,29 @@ package body Sem_Attr is is Etyp : Entity_Id := Typ; + Real_Rep : Node_Id; + -- Start of processing for Stream_Attribute_Available begin - -- We need some comments in this body ??? + -- Test if the attribute is specified directly on the type - if Has_Stream_Attribute_Definition (Typ, Nam) then + if Has_Stream_Attribute_Definition (Typ, Nam, Real_Rep) then return True; end if; + -- We assume class-wide types have stream attributes + -- when they are not limited. Otherwise we recurse on the + -- parent type. + if Is_Class_Wide_Type (Typ) then return not Is_Limited_Type (Typ) or else Stream_Attribute_Available (Etype (Typ), Nam); end if; + -- Non-class-wide abstract types cannot have Input streams + -- specified. + if Nam = TSS_Stream_Input and then Is_Abstract_Type (Typ) and then not Is_Class_Wide_Type (Typ) @@ -12576,6 +12605,8 @@ package body Sem_Attr is return False; end if; + -- Otherwise, nonlimited types have stream attributes + if not (Is_Limited_Type (Typ) or else (Present (Partial_View) and then Is_Limited_Type (Partial_View))) @@ -12587,13 +12618,13 @@ package body Sem_Attr is if Nam = TSS_Stream_Input and then Ada_Version >= Ada_2005 - and then Stream_Attribute_Available (Etyp, TSS_Stream_Read) + and then Stream_Attribute_Available (Etyp, TSS_Stream_Read, Real_Rep) then return True; elsif Nam = TSS_Stream_Output and then Ada_Version >= Ada_2005 - and then Stream_Attribute_Available (Etyp, TSS_Stream_Write) + and then Stream_Attribute_Available (Etyp, TSS_Stream_Write, Real_Rep) then return True; end if; @@ -12607,7 +12638,7 @@ package body Sem_Attr is begin Etyp := Etype (Etyp); - if Has_Stream_Attribute_Definition (Etyp, Nam) then + if Has_Stream_Attribute_Definition (Etyp, Nam, Real_Rep) then if not Derivation_Too_Early_To_Inherit (Derived_Type, Nam) then return True; end if; diff --git a/gcc/ada/sem_attr.ads b/gcc/ada/sem_attr.ads index 7ebdb45..b9a7cd2 100644 --- a/gcc/ada/sem_attr.ads +++ b/gcc/ada/sem_attr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_aux.adb b/gcc/ada/sem_aux.adb index e1bcf53..da8f3cc 100644 --- a/gcc/ada/sem_aux.adb +++ b/gcc/ada/sem_aux.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads index 3adaee4..719fad5 100644 --- a/gcc/ada/sem_aux.ads +++ b/gcc/ada/sem_aux.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb index eb592c4..fed9f4d 100644 --- a/gcc/ada/sem_case.adb +++ b/gcc/ada/sem_case.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_case.ads b/gcc/ada/sem_case.ads index 3943cf2..0221b0a 100644 --- a/gcc/ada/sem_case.ads +++ b/gcc/ada/sem_case.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb index 6270b7c..71395ec 100644 --- a/gcc/ada/sem_cat.adb +++ b/gcc/ada/sem_cat.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -432,12 +432,13 @@ package body Sem_Cat is ------------------------------- function Has_Read_Write_Attributes (E : Entity_Id) return Boolean is + Real_Rep : Node_Id; begin return True and then Has_Stream_Attribute_Definition - (E, TSS_Stream_Read, At_Any_Place => True) + (E, TSS_Stream_Read, Real_Rep, At_Any_Place => True) and then Has_Stream_Attribute_Definition - (E, TSS_Stream_Write, At_Any_Place => True); + (E, TSS_Stream_Write, Real_Rep, At_Any_Place => True); end Has_Read_Write_Attributes; ------------------------------------- @@ -447,18 +448,11 @@ package body Sem_Cat is function Has_Stream_Attribute_Definition (Typ : Entity_Id; Nam : TSS_Name_Type; + Real_Rep : out Node_Id; At_Any_Place : Boolean := False) return Boolean is Rep_Item : Node_Id; - Real_Rep : Node_Id; - -- The stream operation may be specified by an attribute definition - -- clause in the source, or by an aspect that generates such an - -- attribute definition. For an aspect, the generated attribute - -- definition may be placed at the freeze point of the full view of - -- the type, but the aspect specification makes the operation visible - -- to a client wherever the partial view is visible. - begin -- We start from the declaration node and then loop until the end of -- the list until we find the requested attribute definition clause. @@ -467,6 +461,8 @@ package body Sem_Cat is -- inserted by the expander at the point where the clause occurs), -- unless At_Any_Place is true. + Real_Rep := Empty; + Rep_Item := First_Rep_Item (Typ); while Present (Rep_Item) loop Real_Rep := Rep_Item; @@ -511,7 +507,7 @@ package body Sem_Cat is and then Present (Full_View (Typ)) then return Has_Stream_Attribute_Definition - (Underlying_Type (Typ), Nam, At_Any_Place); + (Underlying_Type (Typ), Nam, Real_Rep, At_Any_Place); -- Otherwise, if At_Any_Place is true, return True if the attribute is -- available at any place; if it is false, return True only if the @@ -530,8 +526,8 @@ package body Sem_Cat is ---------------------------- function In_Package_Declaration return Boolean is - Unit_Kind : constant Node_Kind := - Nkind (Unit (Cunit (Current_Sem_Unit))); + Unit_Kind : constant Node_Kind := + Nkind (Unit (Cunit (Current_Sem_Unit))); begin -- There are no restrictions on the body of an RCI or RT unit diff --git a/gcc/ada/sem_cat.ads b/gcc/ada/sem_cat.ads index 90a713b..dd2d412 100644 --- a/gcc/ada/sem_cat.ads +++ b/gcc/ada/sem_cat.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,6 +43,7 @@ package Sem_Cat is function Has_Stream_Attribute_Definition (Typ : Entity_Id; Nam : TSS_Name_Type; + Real_Rep : out Node_Id; At_Any_Place : Boolean := False) return Boolean; -- True when there is a attribute definition clause specifying attribute -- Nam for Typ. In Ada 2005 mode, returns True only when the attribute @@ -54,6 +55,14 @@ package Sem_Cat is -- specific type, excluding inherited definitions, the flags -- Has_Specified_Stream_* can be used instead). + -- The stream operation may be specified by an attribute definition + -- clause in the source, or by an aspect that generates such an + -- attribute definition. For an aspect, the generated attribute + -- definition may be placed at the freeze point of the full view of + -- the type, but the aspect specification makes the operation visible + -- to a client wherever the partial view is visible. This real + -- representation is returned in the Real_Rep parameter. + function In_Preelaborated_Unit return Boolean; -- Determines if the current scope is within a preelaborated compilation -- unit, that is one to which one of the pragmas Preelaborate, Pure, diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb index f4ce099..9dbb871 100644 --- a/gcc/ada/sem_ch10.adb +++ b/gcc/ada/sem_ch10.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -268,6 +268,8 @@ package body Sem_Ch10 is ------------------------------ procedure Analyze_Compilation_Unit (N : Node_Id) is + Unit_Node : constant Node_Id := Unit (N); + procedure Check_Redundant_Withs (Context_Items : List_Id; Spec_Context_Items : List_Id := No_List); @@ -577,16 +579,18 @@ package body Sem_Ch10 is Error_Msg_N -- CODEFIX ("redundant with clause in body?r?", Clause); end if; - - Used_In_Body := False; - Used_In_Spec := False; - Used_Type_Or_Elab := False; - Withed_In_Spec := False; end; -- Standalone package spec or body check else + if Is_Ancestor_Package (Entity (Name (Clause)), + Defining_Entity (Unit_Node)) + then + Error_Msg_N + ("unnecessary with of ancestor?r?", Clause); + end if; + declare Dummy : Boolean := False; Withed : Boolean := False; @@ -617,7 +621,6 @@ package body Sem_Ch10 is -- Local variables Main_Cunit : constant Node_Id := Cunit (Main_Unit); - Unit_Node : constant Node_Id := Unit (N); Lib_Unit : Node_Id := Library_Unit (N); Par_Spec_Name : Unit_Name_Type; Spec_Id : Entity_Id; @@ -2276,7 +2279,7 @@ package body Sem_Ch10 is ---------------------------- procedure Re_Install_Use_Clauses is - U : Node_Id; + U : Node_Id; begin for J in reverse 1 .. Num_Scopes loop U := Use_Clauses (J); diff --git a/gcc/ada/sem_ch10.ads b/gcc/ada/sem_ch10.ads index ecf3151a5..bc8eec1 100644 --- a/gcc/ada/sem_ch10.ads +++ b/gcc/ada/sem_ch10.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch11.adb b/gcc/ada/sem_ch11.adb index 2af65ae..1e5ab59 100644 --- a/gcc/ada/sem_ch11.adb +++ b/gcc/ada/sem_ch11.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -460,10 +460,6 @@ package body Sem_Ch11 is Exception_Name : Entity_Id := Empty; begin - if Comes_From_Source (N) then - Check_Compiler_Unit ("raise expression", N); - end if; - -- Check exception restrictions on the original source if Comes_From_Source (N) then diff --git a/gcc/ada/sem_ch11.ads b/gcc/ada/sem_ch11.ads index 9b027d9..3931830 100644 --- a/gcc/ada/sem_ch11.ads +++ b/gcc/ada/sem_ch11.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 83ae95e..5eeaf3d 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2248,9 +2248,7 @@ package body Sem_Ch12 is -- explicit box associations for the formals that are covered by an -- Others_Choice. - if not Is_Empty_List (Default_Formals) then - Append_List (Default_Formals, Formals); - end if; + Append_List (Default_Formals, Formals); return Assoc_List; end Analyze_Associations; @@ -2396,7 +2394,7 @@ package body Sem_Ch12 is T : Entity_Id; Def : Node_Id) is - Loc : constant Source_Ptr := Sloc (Def); + Loc : constant Source_Ptr := Sloc (Def); begin -- Rewrite as a type declaration of a derived type. This ensures that @@ -3192,7 +3190,7 @@ package body Sem_Ch12 is <<Leave>> if Has_Aspects (N) then - -- Unclear that any other aspects may appear here, snalyze them + -- Unclear that any other aspects may appear here, analyze them -- for completion, given that the grammar allows their appearance. Analyze_Aspect_Specifications (N, Pack_Id); @@ -6080,211 +6078,6 @@ package body Sem_Ch12 is end if; end Get_Associated_Node; - ---------------------------- - -- Build_Function_Wrapper -- - ---------------------------- - - function Build_Function_Wrapper - (Formal_Subp : Entity_Id; - Actual_Subp : Entity_Id) return Node_Id - is - Loc : constant Source_Ptr := Sloc (Current_Scope); - Ret_Type : constant Entity_Id := Get_Instance_Of (Etype (Formal_Subp)); - Actuals : List_Id; - Decl : Node_Id; - Func_Name : Node_Id; - Func : Entity_Id; - Parm_Type : Node_Id; - Profile : List_Id := New_List; - Spec : Node_Id; - Act_F : Entity_Id; - Form_F : Entity_Id; - New_F : Entity_Id; - - begin - Func_Name := New_Occurrence_Of (Actual_Subp, Loc); - - Func := Make_Defining_Identifier (Loc, Chars (Formal_Subp)); - Mutate_Ekind (Func, E_Function); - Set_Is_Generic_Actual_Subprogram (Func); - - Actuals := New_List; - Profile := New_List; - - Act_F := First_Formal (Actual_Subp); - Form_F := First_Formal (Formal_Subp); - while Present (Form_F) loop - - -- Create new formal for profile of wrapper, and add a reference - -- to it in the list of actuals for the enclosing call. The name - -- must be that of the formal in the formal subprogram, because - -- calls to it in the generic body may use named associations. - - New_F := Make_Defining_Identifier (Loc, Chars (Form_F)); - - Parm_Type := - New_Occurrence_Of (Get_Instance_Of (Etype (Form_F)), Loc); - - Append_To (Profile, - Make_Parameter_Specification (Loc, - Defining_Identifier => New_F, - Parameter_Type => Parm_Type)); - - Append_To (Actuals, New_Occurrence_Of (New_F, Loc)); - Next_Formal (Form_F); - - if Present (Act_F) then - Next_Formal (Act_F); - end if; - end loop; - - Spec := - Make_Function_Specification (Loc, - Defining_Unit_Name => Func, - Parameter_Specifications => Profile, - Result_Definition => New_Occurrence_Of (Ret_Type, Loc)); - - Decl := - Make_Expression_Function (Loc, - Specification => Spec, - Expression => - Make_Function_Call (Loc, - Name => Func_Name, - Parameter_Associations => Actuals)); - - return Decl; - end Build_Function_Wrapper; - - ---------------------------- - -- Build_Operator_Wrapper -- - ---------------------------- - - function Build_Operator_Wrapper - (Formal_Subp : Entity_Id; - Actual_Subp : Entity_Id) return Node_Id - is - Loc : constant Source_Ptr := Sloc (Current_Scope); - Ret_Type : constant Entity_Id := - Get_Instance_Of (Etype (Formal_Subp)); - Op_Type : constant Entity_Id := - Get_Instance_Of (Etype (First_Formal (Formal_Subp))); - Is_Binary : constant Boolean := - Present (Next_Formal (First_Formal (Formal_Subp))); - - Decl : Node_Id; - Expr : Node_Id := Empty; - F1, F2 : Entity_Id; - Func : Entity_Id; - Op_Name : Name_Id; - Spec : Node_Id; - L, R : Node_Id; - - begin - Op_Name := Chars (Actual_Subp); - - -- Create entities for wrapper function and its formals - - F1 := Make_Temporary (Loc, 'A'); - F2 := Make_Temporary (Loc, 'B'); - L := New_Occurrence_Of (F1, Loc); - R := New_Occurrence_Of (F2, Loc); - - Func := Make_Defining_Identifier (Loc, Chars (Formal_Subp)); - Mutate_Ekind (Func, E_Function); - Set_Is_Generic_Actual_Subprogram (Func); - - Spec := - Make_Function_Specification (Loc, - Defining_Unit_Name => Func, - Parameter_Specifications => New_List ( - Make_Parameter_Specification (Loc, - Defining_Identifier => F1, - Parameter_Type => New_Occurrence_Of (Op_Type, Loc))), - Result_Definition => New_Occurrence_Of (Ret_Type, Loc)); - - if Is_Binary then - Append_To (Parameter_Specifications (Spec), - Make_Parameter_Specification (Loc, - Defining_Identifier => F2, - Parameter_Type => New_Occurrence_Of (Op_Type, Loc))); - end if; - - -- Build expression as a function call, or as an operator node - -- that corresponds to the name of the actual, starting with - -- binary operators. - - if Op_Name not in Any_Operator_Name then - Expr := - Make_Function_Call (Loc, - Name => - New_Occurrence_Of (Actual_Subp, Loc), - Parameter_Associations => New_List (L)); - - if Is_Binary then - Append_To (Parameter_Associations (Expr), R); - end if; - - -- Binary operators - - elsif Is_Binary then - if Op_Name = Name_Op_And then - Expr := Make_Op_And (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Or then - Expr := Make_Op_Or (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Xor then - Expr := Make_Op_Xor (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Eq then - Expr := Make_Op_Eq (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Ne then - Expr := Make_Op_Ne (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Le then - Expr := Make_Op_Le (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Gt then - Expr := Make_Op_Gt (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Ge then - Expr := Make_Op_Ge (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Lt then - Expr := Make_Op_Lt (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Add then - Expr := Make_Op_Add (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Subtract then - Expr := Make_Op_Subtract (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Concat then - Expr := Make_Op_Concat (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Multiply then - Expr := Make_Op_Multiply (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Divide then - Expr := Make_Op_Divide (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Mod then - Expr := Make_Op_Mod (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Rem then - Expr := Make_Op_Rem (Loc, Left_Opnd => L, Right_Opnd => R); - elsif Op_Name = Name_Op_Expon then - Expr := Make_Op_Expon (Loc, Left_Opnd => L, Right_Opnd => R); - end if; - - -- Unary operators - - else - if Op_Name = Name_Op_Add then - Expr := Make_Op_Plus (Loc, Right_Opnd => L); - elsif Op_Name = Name_Op_Subtract then - Expr := Make_Op_Minus (Loc, Right_Opnd => L); - elsif Op_Name = Name_Op_Abs then - Expr := Make_Op_Abs (Loc, Right_Opnd => L); - elsif Op_Name = Name_Op_Not then - Expr := Make_Op_Not (Loc, Right_Opnd => L); - end if; - end if; - - Decl := - Make_Expression_Function (Loc, - Specification => Spec, - Expression => Expr); - - return Decl; - end Build_Operator_Wrapper; - ----------------------------------- -- Build_Subprogram_Decl_Wrapper -- ----------------------------------- @@ -9908,6 +9701,7 @@ package body Sem_Ch12 is Decl : Node_Id; Decls : List_Id; Inst : Entity_Id; + Origin : Entity_Id; Par_Inst : Node_Id; Par_N : Node_Id; @@ -9998,9 +9792,10 @@ package body Sem_Ch12 is end; end if; - Decl := N; - Decls := List_Containing (N); - Par_N := Parent (Decls); + Decl := N; + Decls := List_Containing (N); + Par_N := Parent (Decls); + Origin := Empty; -- Determine the proper freeze point of an instantiation @@ -10029,10 +9824,13 @@ package body Sem_Ch12 is not In_Same_Source_Unit (Generic_Parent (Par_Inst), Inst) then while Present (Decl) loop - if (Nkind (Decl) in N_Unit_Body + if ((Nkind (Decl) in N_Unit_Body or else - Nkind (Decl) in N_Body_Stub) - and then Comes_From_Source (Decl) + Nkind (Decl) in N_Body_Stub) + and then Comes_From_Source (Decl)) + or else (Present (Origin) + and then Nkind (Decl) in N_Generic_Instantiation + and then Instance_Spec (Decl) /= Origin) then Set_Sloc (F_Node, Sloc (Decl)); Insert_Before (Decl, F_Node); @@ -10056,16 +9854,19 @@ package body Sem_Ch12 is return; -- When the instantiation occurs in a package spec and there is - -- no source body which follows, not even of the package itself - -- then insert into the declaration list of the outer level. + -- no source body which follows, not even of the package itself, + -- then insert into the declaration list of the outer level, but + -- do not jump over following instantiations in this list because + -- they may have a body that has not materialized yet, see above. elsif Nkind (Par_N) = N_Package_Specification and then No (Corresponding_Body (Parent (Par_N))) and then Is_List_Member (Parent (Par_N)) then - Decl := Parent (Par_N); - Decls := List_Containing (Decl); - Par_N := Parent (Decls); + Decl := Parent (Par_N); + Decls := List_Containing (Decl); + Par_N := Parent (Decls); + Origin := Decl; -- In a package declaration, or if no source body which follows -- and at library level, then insert at end of list. @@ -10547,7 +10348,7 @@ package body Sem_Ch12 is Formal_Ent : Entity_Id; Actual_Ent : Entity_Id) is - Act_Pkg : Entity_Id; + Act_Pkg : Entity_Id; begin Set_Instance_Of (Formal_Ent, Actual_Ent); @@ -11071,7 +10872,6 @@ package body Sem_Ch12 is and then Expander_Active then New_Subp := Make_Temporary (Sloc (Actual), 'S'); - Set_Defining_Unit_Name (New_Spec, New_Subp); else New_Subp := Make_Defining_Identifier (Loc, Chars (Formal_Sub)); end if; diff --git a/gcc/ada/sem_ch12.ads b/gcc/ada/sem_ch12.ads index 2aee27c..e7ba11f 100644 --- a/gcc/ada/sem_ch12.ads +++ b/gcc/ada/sem_ch12.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -37,23 +37,6 @@ package Sem_Ch12 is procedure Analyze_Formal_Subprogram_Declaration (N : Node_Id); procedure Analyze_Formal_Package_Declaration (N : Node_Id); - function Build_Function_Wrapper - (Formal_Subp : Entity_Id; - Actual_Subp : Entity_Id) return Node_Id; - -- In GNATprove mode, create a wrapper function for actuals that are - -- functions with any number of formal parameters, in order to propagate - -- their contract to the renaming declarations generated for them. This - -- is called after the renaming declaration created for the formal in the - -- instance has been analyzed, and the actual is known. - - function Build_Operator_Wrapper - (Formal_Subp : Entity_Id; - Actual_Subp : Entity_Id) return Node_Id; - -- In GNATprove mode, create a wrapper function for actuals that are - -- operators, in order to propagate their contract to the renaming - -- declarations generated for them. The types are (the instances of) - -- the types of the formal subprogram. - procedure Start_Generic; -- Must be invoked before starting to process a generic spec or body diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index ba41209..78415e6 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -593,7 +593,7 @@ package body Sem_Ch13 is Comp := First_Component_Or_Discriminant (R); while Present (Comp) loop declare - CC : constant Node_Id := Component_Clause (Comp); + CC : constant Node_Id := Component_Clause (Comp); begin -- Collect only component clauses whose last bit is less than @@ -3670,7 +3670,7 @@ package body Sem_Ch13 is begin -- When aspect Abstract_State appears on a generic package, - -- it is propageted to the package instance. The context in + -- it is propagated to the package instance. The context in -- this case is the instance spec. if Nkind (Context) = N_Package_Instantiation then @@ -3903,7 +3903,7 @@ package body Sem_Ch13 is begin -- When aspect Initial_Condition appears on a generic - -- package, it is propageted to the package instance. The + -- package, it is propagated to the package instance. The -- context in this case is the instance spec. if Nkind (Context) = N_Package_Instantiation then @@ -3951,7 +3951,7 @@ package body Sem_Ch13 is begin -- When aspect Initializes appears on a generic package, - -- it is propageted to the package instance. The context + -- it is propagated to the package instance. The context -- in this case is the instance spec. if Nkind (Context) = N_Package_Instantiation then @@ -7404,7 +7404,7 @@ package body Sem_Ch13 is else False); -- can't happen -- For X'Size, X can be a type or object; for X'Value_Size, -- X can be a type. Note that we already checked that 'Size - -- can be specified only for a first subytype. + -- can be specified only for a first subtype. begin FOnly := True; @@ -10666,8 +10666,7 @@ package body Sem_Ch13 is -- what happens if a return appears within a return. BTemp := - Make_Defining_Identifier (Loc, - Chars => New_Internal_Name ('B')); + Make_Temporary (Loc, 'B'); FBody := Make_Subprogram_Body (Loc, @@ -13675,7 +13674,7 @@ package body Sem_Ch13 is function Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep_Item : Node_Id) return Boolean; -- This routine checks if Rep_Item is either a pragma or an aspect - -- specification node whose correponding pragma (if any) is present in + -- specification node whose corresponding pragma (if any) is present in -- the Rep Item chain of the entity it has been specified to. -------------------------------------------------- @@ -16005,7 +16004,7 @@ package body Sem_Ch13 is function Valid_Empty (E : Entity_Id) return Boolean is begin - if Etype (E) /= Typ or else Scope (E) /= Scope (Typ) then + if Etype (E) /= Typ or else Scope (E) /= Scope (Typ) then return False; elsif Ekind (E) = E_Constant then @@ -17125,13 +17124,12 @@ package body Sem_Ch13 is procedure Validate_Literal_Aspect (Typ : Entity_Id; ASN : Node_Id) is A_Id : constant Aspect_Id := Get_Aspect_Id (ASN); - pragma Assert ((A_Id = Aspect_Integer_Literal) or - (A_Id = Aspect_Real_Literal) or - (A_Id = Aspect_String_Literal)); + pragma Assert (A_Id in Aspect_Integer_Literal | + Aspect_Real_Literal | Aspect_String_Literal); Func_Name : constant Node_Id := Expression (ASN); Overloaded : Boolean := Is_Overloaded (Func_Name); - I : Interp_Index; + I : Interp_Index := 0; It : Interp; Param_Type : Entity_Id; Match_Found : Boolean := False; @@ -17546,6 +17544,22 @@ package body Sem_Ch13 is Set_No_Strict_Aliasing (Implementation_Base_Type (Target)); end if; + -- If the unchecked conversion is between Address and an access + -- subprogram type, show that we shouldn't use an internal + -- representation for the access subprogram type. + + if Is_Access_Subprogram_Type (Target) + and then Is_Descendant_Of_Address (Source) + and then In_Same_Source_Unit (Target, N) + then + Set_Can_Use_Internal_Rep (Target, False); + elsif Is_Access_Subprogram_Type (Source) + and then Is_Descendant_Of_Address (Target) + and then In_Same_Source_Unit (Source, N) + then + Set_Can_Use_Internal_Rep (Source, False); + end if; + -- Generate N_Validate_Unchecked_Conversion node for back end in case -- the back end needs to perform special validation checks. diff --git a/gcc/ada/sem_ch13.ads b/gcc/ada/sem_ch13.ads index 0d3b041..a16171d 100644 --- a/gcc/ada/sem_ch13.ads +++ b/gcc/ada/sem_ch13.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch2.adb b/gcc/ada/sem_ch2.adb index 3ba68c4..4a45b597 100644 --- a/gcc/ada/sem_ch2.adb +++ b/gcc/ada/sem_ch2.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch2.ads b/gcc/ada/sem_ch2.ads index ce116ef..a199fef 100644 --- a/gcc/ada/sem_ch2.ads +++ b/gcc/ada/sem_ch2.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 6b25a6a..2e207c1 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -723,6 +723,16 @@ package body Sem_Ch3 is -- sets the flags SSO_Set_Low_By_Default/SSO_Set_High_By_Default according -- to the setting of Opt.Default_SSO. + function Should_Build_Subtype (T : Entity_Id) return Boolean; + -- When analyzing components or object declarations, it is possible, in + -- some cases, to build subtypes for discriminated types. This is + -- worthwhile to avoid the backend allocating the maximum possible size for + -- objects of the type. + -- In particular, when T is limited, the discriminants and therefore the + -- size of an object of type T cannot change. Furthermore, if T is definite + -- with statically initialized defaulted discriminants, we are able and + -- want to build a constrained subtype of the right size. + procedure Signed_Integer_Type_Declaration (T : Entity_Id; Def : Node_Id); -- Create a new signed integer entity, and apply the constraint to obtain -- the required first named subtype of this type. @@ -2203,17 +2213,9 @@ package body Sem_Ch3 is end if; end if; - -- If the component is an unconstrained task or protected type with - -- discriminants, the component and the enclosing record are limited - -- and the component is constrained by its default values. Compute - -- its actual subtype, else it may be allocated the maximum size by - -- the backend, and possibly overflow. + -- When possible, build the default subtype - if Is_Concurrent_Type (T) - and then not Is_Constrained (T) - and then Has_Discriminants (T) - and then not Has_Discriminants (Current_Scope) - then + if Should_Build_Subtype (T) then declare Act_T : constant Entity_Id := Build_Default_Subtype (T, N); @@ -3829,6 +3831,9 @@ package body Sem_Ch3 is then null; + elsif Is_Record_Type (Etype (Comp)) then + Check_Dynamic_Object (Etype (Comp)); + elsif not Discriminated_Size (Comp) and then Comes_From_Source (Comp) then @@ -3836,8 +3841,6 @@ package body Sem_Ch3 is ("component& of non-static size will violate restriction " & "No_Implicit_Heap_Allocation?", N, Comp); - elsif Is_Record_Type (Etype (Comp)) then - Check_Dynamic_Object (Etype (Comp)); end if; Next_Component (Comp); @@ -4407,9 +4410,9 @@ package body Sem_Ch3 is -- If E is null and has been replaced by an N_Raise_Constraint_Error -- node (which was marked already-analyzed), we need to set the type - -- to something other than Any_Access in order to keep gigi happy. + -- to something else than Universal_Access to keep gigi happy. - if Etype (E) = Any_Access then + if Etype (E) = Universal_Access then Set_Etype (E, T); end if; @@ -4799,14 +4802,9 @@ package body Sem_Ch3 is Apply_Length_Check (E, T); end if; - -- If the type is limited unconstrained with defaulted discriminants and - -- there is no expression, then the object is constrained by the - -- defaults, so it is worthwhile building the corresponding subtype. + -- When possible, build the default subtype - elsif (Is_Limited_Record (T) or else Is_Concurrent_Type (T)) - and then not Is_Constrained (T) - and then Has_Discriminants (T) - then + elsif Should_Build_Subtype (T) then if No (E) then Act_T := Build_Default_Subtype (T, N); else @@ -5514,6 +5512,7 @@ package body Sem_Ch3 is when Array_Kind => Mutate_Ekind (Id, E_Array_Subtype); Copy_Array_Subtype_Attributes (Id, T); + Set_Packed_Array_Impl_Type (Id, Packed_Array_Impl_Type (T)); when Decimal_Fixed_Point_Kind => Mutate_Ekind (Id, E_Decimal_Fixed_Point_Subtype); @@ -6051,13 +6050,13 @@ package body Sem_Ch3 is begin Analyze (T); - if R /= Error then + if R = Error then + Set_Error_Posted (R); + Set_Error_Posted (T); + else Analyze (R); Set_Etype (N, Etype (R)); Resolve (R, Entity (T)); - else - Set_Error_Posted (R); - Set_Error_Posted (T); end if; end Analyze_Subtype_Indication; @@ -6783,7 +6782,7 @@ package body Sem_Ch3 is Append ( Make_Parameter_Specification (Loc, Defining_Identifier => Make_Temporary (Loc, 'P'), - Parameter_Type => New_Occurrence_Of (Id, Loc)), + Parameter_Type => New_Occurrence_Of (Id, Loc)), Profile); if Nkind (Type_Def) = N_Access_Procedure_Definition then @@ -7062,7 +7061,7 @@ package body Sem_Ch3 is Indic : constant Node_Id := Subtype_Indication (Def); Corr_Record : constant Entity_Id := Make_Temporary (Loc, 'C'); - Corr_Decl : Node_Id; + Corr_Decl : Node_Id := Empty; Corr_Decl_Needed : Boolean; -- If the derived type has fewer discriminants than its parent, the -- corresponding record is also a derived type, in order to account for @@ -9354,13 +9353,11 @@ package body Sem_Ch3 is declare Iface : Node_Id; begin - if Is_Non_Empty_List (Interface_List (Type_Def)) then - Iface := First (Interface_List (Type_Def)); - while Present (Iface) loop - Freeze_Before (N, Etype (Iface)); - Next (Iface); - end loop; - end if; + Iface := First (Interface_List (Type_Def)); + while Present (Iface) loop + Freeze_Before (N, Etype (Iface)); + Next (Iface); + end loop; end; end if; @@ -14976,6 +14973,9 @@ package body Sem_Ch3 is -- Copy_Array_Subtype_Attributes -- ----------------------------------- + -- Note that we used to copy Packed_Array_Impl_Type too here, but we now + -- let it be recreated during freezing for the sake of better debug info. + procedure Copy_Array_Subtype_Attributes (T1, T2 : Entity_Id) is begin Set_Size_Info (T1, T2); @@ -14993,7 +14993,6 @@ package body Sem_Ch3 is Set_Convention (T1, Convention (T2)); Set_Is_Limited_Composite (T1, Is_Limited_Composite (T2)); Set_Is_Private_Composite (T1, Is_Private_Composite (T2)); - Set_Packed_Array_Impl_Type (T1, Packed_Array_Impl_Type (T2)); end Copy_Array_Subtype_Attributes; ----------------------------------- @@ -17277,7 +17276,6 @@ package body Sem_Ch3 is -- append the full view's original parent to the interface list, -- recursively call Derived_Type_Definition on the full type, and -- return True. If a match is not found, return False. - -- ??? This seems broken in the case of generic packages. ------------------------ -- Reorder_Interfaces -- @@ -17286,6 +17284,7 @@ package body Sem_Ch3 is function Reorder_Interfaces return Boolean is Iface : Node_Id; New_Iface : Node_Id; + begin Iface := First (Interface_List (Def)); while Present (Iface) loop @@ -17295,7 +17294,7 @@ package body Sem_Ch3 is New_Iface := Make_Identifier (Sloc (N), Chars (Parent_Type)); - Append (New_Iface, Interface_List (Def)); + Rewrite (Iface, New_Iface); -- Analyze the transformed code @@ -22879,6 +22878,80 @@ package body Sem_Ch3 is end if; end Set_Stored_Constraint_From_Discriminant_Constraint; + -------------------------- + -- Should_Build_Subtype -- + -------------------------- + + function Should_Build_Subtype (T : Entity_Id) return Boolean is + + function Default_Discriminant_Values_Known_At_Compile_Time + (T : Entity_Id) return Boolean; + -- For an unconstrained type T, return False if the given type has a + -- discriminant with default value not known at compile time. Return + -- True otherwise. + + --------------------------------------------------------- + -- Default_Discriminant_Values_Known_At_Compile_Time -- + --------------------------------------------------------- + + function Default_Discriminant_Values_Known_At_Compile_Time + (T : Entity_Id) return Boolean + is + Discr : Entity_Id; + DDV : Node_Id; + + begin + + -- If the type has no discriminant, we know them all at compile time + + if not Has_Discriminants (T) then + return True; + end if; + + -- The type has discriminants, check that none of them has a default + -- value not known at compile time. + + Discr := First_Discriminant (T); + + while Present (Discr) loop + DDV := Discriminant_Default_Value (Discr); + + if Present (DDV) and then not Compile_Time_Known_Value (DDV) then + return False; + end if; + + Next_Discriminant (Discr); + end loop; + + return True; + end Default_Discriminant_Values_Known_At_Compile_Time; + + -- Start of processing for Should_Build_Subtype + + begin + + if Is_Constrained (T) then + + -- We won't build a new subtype if T is constrained + + return False; + end if; + + if not Default_Discriminant_Values_Known_At_Compile_Time (T) then + + -- This is a special case of definite subtypes. To allocate a + -- specific size to the subtype, we need to know the value at compile + -- time. This might not be the case if the default value is the + -- result of a function. In that case, the object might be definite + -- and limited but the needed size might not be statically known or + -- too tricky to obtain. In that case, we will not build the subtype. + + return False; + end if; + + return Is_Definite_Subtype (T) and then Is_Limited_View (T); + end Should_Build_Subtype; + ------------------------------------- -- Signed_Integer_Type_Declaration -- ------------------------------------- diff --git a/gcc/ada/sem_ch3.ads b/gcc/ada/sem_ch3.ads index f3722a0..e45ed6c 100644 --- a/gcc/ada/sem_ch3.ads +++ b/gcc/ada/sem_ch3.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 3ffe721..918f3b8 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -239,8 +239,7 @@ package body Sem_Ch4 is -- operand types. If one of the operands has a universal interpretation, -- the legality check uses some compatible non-universal interpretation of -- the other operand. N can be an operator node, or a function call whose - -- name is an operator designator. Any_Access, which is the initial type of - -- the literal NULL, is a universal type for the purpose of this routine. + -- name is an operator designator. function Find_Primitive_Operation (N : Node_Id) return Boolean; -- Find candidate interpretations for the name Obj.Proc when it appears in @@ -516,7 +515,7 @@ package body Sem_Ch4 is -- parameters. Note that this is now a static error even if the -- subprogram is not the main program (this is a change, in an -- earlier version only the main program was affected, and the - -- check had to be done in the binder. + -- check had to be done in the binder). if Nkind (P) = N_Subprogram_Body and then Nkind (Parent (P)) = N_Compilation_Unit @@ -564,7 +563,7 @@ package body Sem_Ch4 is Find_Type (Subtype_Mark (E)); -- Analyze the qualified expression, and apply the name resolution - -- rule given in 4.7(3). + -- rule given in 4.7(3). Analyze (E); Type_Id := Etype (E); @@ -589,59 +588,58 @@ package body Sem_Ch4 is -- Case where allocator has a subtype indication else - declare - Def_Id : Entity_Id; - Base_Typ : Entity_Id; - - begin - -- If the allocator includes a N_Subtype_Indication then a - -- constraint is present, otherwise the node is a subtype mark. - -- Introduce an explicit subtype declaration into the tree - -- defining some anonymous subtype and rewrite the allocator to - -- use this subtype rather than the subtype indication. - - -- It is important to introduce the explicit subtype declaration - -- so that the bounds of the subtype indication are attached to - -- the tree in case the allocator is inside a generic unit. - - -- Finally, if there is no subtype indication and the type is - -- a tagged unconstrained type with discriminants, the designated - -- object is constrained by their default values, and it is - -- simplest to introduce an explicit constraint now. In some cases - -- this is done during expansion, but freeze actions are certain - -- to be emitted in the proper order if constraint is explicit. - - if Is_Entity_Name (E) and then Expander_Active then - Find_Type (E); - Type_Id := Entity (E); - - if Is_Tagged_Type (Type_Id) - and then Has_Defaulted_Discriminants (Type_Id) - and then not Is_Constrained (Type_Id) - then - declare - Constr : constant List_Id := New_List; - Loc : constant Source_Ptr := Sloc (E); - Discr : Entity_Id := First_Discriminant (Type_Id); + -- If the allocator includes a N_Subtype_Indication then a + -- constraint is present, otherwise the node is a subtype mark. + -- Introduce an explicit subtype declaration into the tree + -- defining some anonymous subtype and rewrite the allocator to + -- use this subtype rather than the subtype indication. + + -- It is important to introduce the explicit subtype declaration + -- so that the bounds of the subtype indication are attached to + -- the tree in case the allocator is inside a generic unit. + + -- Finally, if there is no subtype indication and the type is + -- a tagged unconstrained type with discriminants, the designated + -- object is constrained by their default values, and it is + -- simplest to introduce an explicit constraint now. In some cases + -- this is done during expansion, but freeze actions are certain + -- to be emitted in the proper order if constraint is explicit. + + if Is_Entity_Name (E) and then Expander_Active then + Find_Type (E); + Type_Id := Entity (E); + + if Is_Tagged_Type (Type_Id) + and then Has_Defaulted_Discriminants (Type_Id) + and then not Is_Constrained (Type_Id) + then + declare + Constr : constant List_Id := New_List; + Loc : constant Source_Ptr := Sloc (E); + Discr : Entity_Id := First_Discriminant (Type_Id); - begin - while Present (Discr) loop - Append (Discriminant_Default_Value (Discr), Constr); - Next_Discriminant (Discr); - end loop; + begin + while Present (Discr) loop + Append (Discriminant_Default_Value (Discr), Constr); + Next_Discriminant (Discr); + end loop; - Rewrite (E, - Make_Subtype_Indication (Loc, - Subtype_Mark => New_Occurrence_Of (Type_Id, Loc), - Constraint => - Make_Index_Or_Discriminant_Constraint (Loc, - Constraints => Constr))); - end; - end if; + Rewrite (E, + Make_Subtype_Indication (Loc, + Subtype_Mark => New_Occurrence_Of (Type_Id, Loc), + Constraint => + Make_Index_Or_Discriminant_Constraint (Loc, + Constraints => Constr))); + end; end if; + end if; - if Nkind (E) = N_Subtype_Indication then + if Nkind (E) = N_Subtype_Indication then + declare + Def_Id : Entity_Id; + Base_Typ : Entity_Id; + begin -- A constraint is only allowed for a composite type in Ada -- 95. In Ada 83, a constraint is also allowed for an -- access-to-composite type, but the constraint is ignored. @@ -694,151 +692,151 @@ package body Sem_Ch4 is N_Index_Or_Discriminant_Constraint then Error_Msg_N -- CODEFIX - ("if qualified expression was meant, " - & "use apostrophe!", Constraint (E)); + ("if qualified expression was meant, use apostrophe!", + Constraint (E)); end if; E := New_Occurrence_Of (Def_Id, Loc); Rewrite (Expression (N), E); end if; - end if; + end; + end if; - Type_Id := Process_Subtype (E, N); - Acc_Type := Create_Itype (E_Allocator_Type, N); - Set_Etype (Acc_Type, Acc_Type); - Set_Directly_Designated_Type (Acc_Type, Type_Id); - Check_Fully_Declared (Type_Id, N); + Type_Id := Process_Subtype (E, N); + Acc_Type := Create_Itype (E_Allocator_Type, N); + Set_Etype (Acc_Type, Acc_Type); + Set_Directly_Designated_Type (Acc_Type, Type_Id); + Check_Fully_Declared (Type_Id, N); - -- Ada 2005 (AI-231): If the designated type is itself an access - -- type that excludes null, its default initialization will - -- be a null object, and we can insert an unconditional raise - -- before the allocator. + -- Ada 2005 (AI-231): If the designated type is itself an access + -- type that excludes null, its default initialization will + -- be a null object, and we can insert an unconditional raise + -- before the allocator. - -- Ada 2012 (AI-104): A not null indication here is altogether - -- illegal. + -- Ada 2012 (AI-104): A not null indication here is altogether + -- illegal. - if Can_Never_Be_Null (Type_Id) then - declare - Not_Null_Check : constant Node_Id := - Make_Raise_Constraint_Error (Sloc (E), - Reason => CE_Null_Not_Allowed); + if Can_Never_Be_Null (Type_Id) then + declare + Not_Null_Check : constant Node_Id := + Make_Raise_Constraint_Error (Sloc (E), + Reason => CE_Null_Not_Allowed); - begin - if Expander_Active then - Insert_Action (N, Not_Null_Check); - Analyze (Not_Null_Check); + begin + if Expander_Active then + Insert_Action (N, Not_Null_Check); + Analyze (Not_Null_Check); - elsif Warn_On_Ada_2012_Compatibility then - Error_Msg_N - ("null value not allowed here in Ada 2012?y?", E); - end if; - end; - end if; + elsif Warn_On_Ada_2012_Compatibility then + Error_Msg_N + ("null value not allowed here in Ada 2012?y?", E); + end if; + end; + end if; - -- Check for missing initialization. Skip this check if we already - -- had errors on analyzing the allocator, since in that case these - -- are probably cascaded errors. + -- Check for missing initialization. Skip this check if we already + -- had errors on analyzing the allocator, since in that case these + -- are probably cascaded errors. - if not Is_Definite_Subtype (Type_Id) - and then Serious_Errors_Detected = Sav_Errs + if not Is_Definite_Subtype (Type_Id) + and then Serious_Errors_Detected = Sav_Errs + then + -- The build-in-place machinery may produce an allocator when + -- the designated type is indefinite but the underlying type is + -- not. In this case the unknown discriminants are meaningless + -- and should not trigger error messages. Check the parent node + -- because the allocator is marked as coming from source. + + if Present (Underlying_Type (Type_Id)) + and then Is_Definite_Subtype (Underlying_Type (Type_Id)) + and then not Comes_From_Source (Parent (N)) then - -- The build-in-place machinery may produce an allocator when - -- the designated type is indefinite but the underlying type is - -- not. In this case the unknown discriminants are meaningless - -- and should not trigger error messages. Check the parent node - -- because the allocator is marked as coming from source. - - if Present (Underlying_Type (Type_Id)) - and then Is_Definite_Subtype (Underlying_Type (Type_Id)) - and then not Comes_From_Source (Parent (N)) - then - null; + null; - -- An unusual case arises when the parent of a derived type is - -- a limited record extension with unknown discriminants, and - -- its full view has no discriminants. - -- - -- A more general fix might be to create the proper underlying - -- type for such a derived type, but it is a record type with - -- no private attributes, so this required extending the - -- meaning of this attribute. ??? - - elsif Ekind (Etype (Type_Id)) = E_Record_Type_With_Private - and then Present (Underlying_Type (Etype (Type_Id))) - and then - not Has_Discriminants (Underlying_Type (Etype (Type_Id))) - and then not Comes_From_Source (Parent (N)) + -- An unusual case arises when the parent of a derived type is + -- a limited record extension with unknown discriminants, and + -- its full view has no discriminants. + -- + -- A more general fix might be to create the proper underlying + -- type for such a derived type, but it is a record type with + -- no private attributes, so this required extending the + -- meaning of this attribute. ??? + + elsif Ekind (Etype (Type_Id)) = E_Record_Type_With_Private + and then Present (Underlying_Type (Etype (Type_Id))) + and then + not Has_Discriminants (Underlying_Type (Etype (Type_Id))) + and then not Comes_From_Source (Parent (N)) + then + null; + + elsif Is_Class_Wide_Type (Type_Id) then + Error_Msg_N + ("initialization required in class-wide allocation", N); + + else + if Ada_Version < Ada_2005 + and then Is_Limited_Type (Type_Id) then - null; + Error_Msg_N ("unconstrained allocation not allowed", N); - elsif Is_Class_Wide_Type (Type_Id) then - Error_Msg_N - ("initialization required in class-wide allocation", N); + if Is_Array_Type (Type_Id) then + Error_Msg_N + ("\constraint with array bounds required", N); + + elsif Has_Unknown_Discriminants (Type_Id) then + null; + + else pragma Assert (Has_Discriminants (Type_Id)); + Error_Msg_N + ("\constraint with discriminant values required", N); + end if; + + -- Limited Ada 2005 and general nonlimited case. + -- This is an error, except in the case of an + -- uninitialized allocator that is generated + -- for a build-in-place function return of a + -- discriminated but compile-time-known-size + -- type. else - if Ada_Version < Ada_2005 - and then Is_Limited_Type (Type_Id) + if Original_Node (N) /= N + and then Nkind (Original_Node (N)) = N_Allocator then - Error_Msg_N ("unconstrained allocation not allowed", N); + declare + Qual : constant Node_Id := + Expression (Original_Node (N)); + pragma Assert + (Nkind (Qual) = N_Qualified_Expression); + Call : constant Node_Id := Expression (Qual); + pragma Assert + (Is_Expanded_Build_In_Place_Call (Call)); + begin + null; + end; + + else + Error_Msg_N + ("uninitialized unconstrained allocation not " + & "allowed", N); if Is_Array_Type (Type_Id) then Error_Msg_N - ("\constraint with array bounds required", N); + ("\qualified expression or constraint with " + & "array bounds required", N); elsif Has_Unknown_Discriminants (Type_Id) then - null; + Error_Msg_N ("\qualified expression required", N); else pragma Assert (Has_Discriminants (Type_Id)); Error_Msg_N - ("\constraint with discriminant values required", N); - end if; - - -- Limited Ada 2005 and general nonlimited case. - -- This is an error, except in the case of an - -- uninitialized allocator that is generated - -- for a build-in-place function return of a - -- discriminated but compile-time-known-size - -- type. - - else - if Original_Node (N) /= N - and then Nkind (Original_Node (N)) = N_Allocator - then - declare - Qual : constant Node_Id := - Expression (Original_Node (N)); - pragma Assert - (Nkind (Qual) = N_Qualified_Expression); - Call : constant Node_Id := Expression (Qual); - pragma Assert - (Is_Expanded_Build_In_Place_Call (Call)); - begin - null; - end; - - else - Error_Msg_N - ("uninitialized unconstrained allocation not " - & "allowed", N); - - if Is_Array_Type (Type_Id) then - Error_Msg_N - ("\qualified expression or constraint with " - & "array bounds required", N); - - elsif Has_Unknown_Discriminants (Type_Id) then - Error_Msg_N ("\qualified expression required", N); - - else pragma Assert (Has_Discriminants (Type_Id)); - Error_Msg_N - ("\qualified expression or constraint with " - & "discriminant values required", N); - end if; + ("\qualified expression or constraint with " + & "discriminant values required", N); end if; end if; end if; end if; - end; + end if; end if; if Is_Abstract_Type (Type_Id) then @@ -1498,7 +1496,7 @@ package body Sem_Ch4 is while Present (Form) and then Present (Act) loop -- Check whether the formal is aliased and if the accessibility -- level of the actual is deeper than the accessibility level - -- of the enclosing subprogam to which the current return + -- of the enclosing subprogram to which the current return -- statement applies. -- Should we be checking Is_Entity_Name on Act? Won't this miss @@ -1637,10 +1635,6 @@ package body Sem_Ch4 is -- Start of processing for Analyze_Case_Expression begin - if Comes_From_Source (N) then - Check_Compiler_Unit ("case expression", N); - end if; - Analyze_And_Resolve (Expr, Any_Discrete); Check_Unset_Reference (Expr); Exp_Type := Etype (Expr); @@ -2401,10 +2395,6 @@ package body Sem_Ch4 is Else_Expr := Next (Then_Expr); - if Comes_From_Source (N) then - Check_Compiler_Unit ("if expression", N); - end if; - -- Analyze and resolve the condition. We need to resolve this now so -- that it gets folded to True/False if possible, before we analyze -- the THEN/ELSE branches, because when analyzing these branches, we @@ -2996,10 +2986,6 @@ package body Sem_Ch4 is Common_Type : Entity_Id := Empty; begin - if Comes_From_Source (N) then - Check_Compiler_Unit ("set membership", N); - end if; - Analyze (L); Candidate_Interps := L; @@ -3285,7 +3271,7 @@ package body Sem_Ch4 is procedure Analyze_Null (N : Node_Id) is begin - Set_Etype (N, Any_Access); + Set_Etype (N, Universal_Access); end Analyze_Null; ---------------------- @@ -3740,6 +3726,24 @@ package body Sem_Ch4 is Next_Actual (Actual); Next_Formal (Formal); + -- A current instance used as an actual of a function, + -- whose body has not been seen, may include a formal + -- whose type is an incomplete view of an enclosing + -- type declaration containing the current call (e.g. + -- in the Expression for a component declaration). + + -- In this case, update the signature of the subprogram + -- so the formal has the type of the full view. + + elsif Inside_Init_Proc + and then Nkind (Actual) = N_Identifier + and then Ekind (Etype (Formal)) = E_Incomplete_Type + and then Etype (Actual) = Full_View (Etype (Formal)) + then + Set_Etype (Formal, Etype (Actual)); + Next_Actual (Actual); + Next_Formal (Formal); + -- Handle failed type check else @@ -6690,14 +6694,9 @@ package body Sem_Ch4 is return; end if; - if T1 = Universal_Integer or else T1 = Universal_Real - - -- If the left operand of an equality operator is null, the visibility - -- of the operator must be determined from the interpretation of the - -- right operand. This processing must be done for Any_Access, which - -- is the internal representation of the type of the literal null. - - or else T1 = Any_Access + if T1 = Universal_Integer + or else T1 = Universal_Real + or else T1 = Universal_Access then if not Is_Overloaded (R) then Add_One_Interp (N, Op_Id, Standard_Boolean, Base_Type (Etype (R))); @@ -6782,7 +6781,7 @@ package body Sem_Ch4 is -- operator. -- This is because the expected type for Obj'Access in a call to -- the Standard."=" operator whose formals are of type - -- Universal_Access is Universal_Integer, and Universal_Access + -- Universal_Access is Universal_Access, and Universal_Access -- doesn't have a designated type. For more detail see RM 6.4.1(3) -- and 3.10.2. -- This procedure assumes that the context is a universal_access. @@ -7004,7 +7003,7 @@ package body Sem_Ch4 is -------------------- procedure Try_One_Interp (T1 : Entity_Id) is - Universal_Access : Boolean; + Anonymous_Access : Boolean; Bas : Entity_Id; begin @@ -7025,7 +7024,7 @@ package body Sem_Ch4 is -- In Ada 2005, the equality operator for anonymous access types -- is declared in Standard, and preference rules apply to it. - Universal_Access := Is_Anonymous_Access_Type (T1) + Anonymous_Access := Is_Anonymous_Access_Type (T1) or else References_Anonymous_Access_Type (R, T1); if Present (Scop) then @@ -7040,7 +7039,7 @@ package body Sem_Ch4 is or else In_Instance or else T1 = Universal_Integer or else T1 = Universal_Real - or else T1 = Any_Access + or else T1 = Universal_Access or else T1 = Any_String or else T1 = Any_Composite or else (Ekind (T1) = E_Access_Subprogram_Type @@ -7048,7 +7047,7 @@ package body Sem_Ch4 is then null; - elsif Scop /= Standard_Standard or else not Universal_Access then + elsif Scop /= Standard_Standard or else not Anonymous_Access then -- The scope does not contain an operator for the type @@ -7069,7 +7068,7 @@ package body Sem_Ch4 is then null; - elsif not Universal_Access then + elsif not Anonymous_Access then -- Save candidate type for subsequent error message, if any if not Is_Limited_Type (T1) then @@ -7082,7 +7081,7 @@ package body Sem_Ch4 is -- Ada 2005 (AI-230): Keep restriction imposed by Ada 83 and 95: -- Do not allow anonymous access types in equality operators. - if Ada_Version < Ada_2005 and then Universal_Access then + if Ada_Version < Ada_2005 and then Anonymous_Access then return; end if; @@ -7103,7 +7102,7 @@ package body Sem_Ch4 is -- Finally, also check for RM 4.5.2 (9.6/2). if T1 /= Standard_Void_Type - and then (Universal_Access + and then (Anonymous_Access or else Has_Compatible_Type (R, T1, For_Comparison => True)) @@ -7121,7 +7120,7 @@ package body Sem_Ch4 is or else not Is_Tagged_Type (T1) or else Chars (Op_Id) = Name_Op_Eq) - and then (not Universal_Access + and then (not Anonymous_Access or else Check_Access_Object_Types (R, T1)) then if Found @@ -7136,14 +7135,14 @@ package body Sem_Ch4 is else T_F := It.Typ; - Is_Universal_Access := Universal_Access; + Is_Universal_Access := Anonymous_Access; end if; else Found := True; T_F := T1; I_F := Index; - Is_Universal_Access := Universal_Access; + Is_Universal_Access := Anonymous_Access; end if; if not Analyzed (L) then @@ -8263,7 +8262,7 @@ package body Sem_Ch4 is and then Is_Entity_Name (Name (Parent (Par))) then declare - Proc : Entity_Id; + Proc : Entity_Id; begin -- We should look for an interpretation with the proper @@ -8752,10 +8751,6 @@ package body Sem_Ch4 is -- with the generalized indexing node, which is a call, possibly with a -- dereference operation. - if Comes_From_Source (N) then - Check_Compiler_Unit ("generalized indexing", N); - end if; - -- Create argument list for function call that represents generalized -- indexing. Note that indices (i.e. actuals) may themselves be -- overloaded. @@ -9601,31 +9596,29 @@ package body Sem_Ch4 is begin Error := False; - if Is_Non_Empty_List (Intface_List) then - Intface := First (Intface_List); - while Present (Intface) loop + Intface := First (Intface_List); + while Present (Intface) loop - -- Look for acceptable class-wide homonyms associated with - -- the interface. + -- Look for acceptable class-wide homonyms associated with the + -- interface. - Traverse_Homonyms (Etype (Intface), Error); + Traverse_Homonyms (Etype (Intface), Error); - if Error then - return; - end if; + if Error then + return; + end if; - -- Continue the search by looking at each of the interface's - -- associated interface ancestors. + -- Continue the search by looking at each of the interface's + -- associated interface ancestors. - Traverse_Interfaces (Etype (Intface), Error); + Traverse_Interfaces (Etype (Intface), Error); - if Error then - return; - end if; + if Error then + return; + end if; - Next (Intface); - end loop; - end if; + Next (Intface); + end loop; end Traverse_Interfaces; -- Start of processing for Try_Class_Wide_Operation diff --git a/gcc/ada/sem_ch4.ads b/gcc/ada/sem_ch4.ads index 395b81e..9253180 100644 --- a/gcc/ada/sem_ch4.ads +++ b/gcc/ada/sem_ch4.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index e62161a..41b9ae0 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -142,7 +142,7 @@ package body Sem_Ch5 is -- If the right-hand side of an assignment statement is a build-in-place -- call we cannot build in place, so we insert a temp initialized with -- the call, and transform the assignment statement to copy the temp. - -- Transform_BIP_Assignment does the tranformation, and + -- Transform_BIP_Assignment does the transformation, and -- Should_Transform_BIP_Assignment determines whether we should. -- The same goes for qualified expressions and conversions whose -- operand is such a call. @@ -2906,8 +2906,8 @@ package body Sem_Ch5 is procedure Check_Predicate_Use (T : Entity_Id); -- Diagnose Attempt to iterate through non-static predicate. Note that -- a type with inherited predicates may have both static and dynamic - -- forms. In this case it is not sufficent to check the static predicate - -- function only, look for a dynamic predicate aspect as well. + -- forms. In this case it is not sufficient to check the static + -- predicate function only, look for a dynamic predicate aspect as well. procedure Process_Bounds (R : Node_Id); -- If the iteration is given by a range, create temporaries and @@ -3560,7 +3560,7 @@ package body Sem_Ch5 is Set_Is_Null_Loop (Loop_Nod); Null_Range := True; - -- Suppress other warnigns about the body of the loop, as + -- Suppress other warnings about the body of the loop, as -- it will never execute. Set_Suppress_Loop_Warnings (Loop_Nod); end if; diff --git a/gcc/ada/sem_ch5.ads b/gcc/ada/sem_ch5.ads index c320665..22675c2 100644 --- a/gcc/ada/sem_ch5.ads +++ b/gcc/ada/sem_ch5.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index fa4de4c..a672ea8 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -52,7 +52,6 @@ with Nlists; use Nlists; with Nmake; use Nmake; with Opt; use Opt; with Output; use Output; -with Restrict; use Restrict; with Rtsfind; use Rtsfind; with Sem; use Sem; with Sem_Aux; use Sem_Aux; @@ -669,7 +668,6 @@ package body Sem_Ch6 is procedure Analyze_Extended_Return_Statement (N : Node_Id) is begin - Check_Compiler_Unit ("extended return statement", N); Analyze_Return_Statement (N); end Analyze_Extended_Return_Statement; @@ -1686,7 +1684,7 @@ package body Sem_Ch6 is Error_Msg_Warn := SPARK_Mode /= On; Error_Msg_N ("cannot return a local value by reference<<", N); - Error_Msg_NE ("\& [<<", N, Standard_Program_Error); + Error_Msg_N ("\Program_Error [<<", N); end if; end if; @@ -5042,7 +5040,7 @@ package body Sem_Ch6 is -- object representing the minimum of the accessibility level value that -- is passed in and the accessibility level of the callee's parameter -- and locals and use it in the case of a call to a nested subprogram. - -- This generated object is refered to as a "minimum accessiblity + -- This generated object is referred to as a "minimum accessibility -- level." if Present (Spec_Id) or else Present (Body_Id) then @@ -11639,7 +11637,7 @@ package body Sem_Ch6 is E : Entity_Id; begin - -- Search for entities in the enclosing scope of this synchonized + -- Search for entities in the enclosing scope of this synchronized -- type. pragma Assert (Is_Concurrent_Type (Conc_Typ)); diff --git a/gcc/ada/sem_ch6.ads b/gcc/ada/sem_ch6.ads index 4afcf36..da56ce6 100644 --- a/gcc/ada/sem_ch6.ads +++ b/gcc/ada/sem_ch6.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb index 6e79949..e94971f 100644 --- a/gcc/ada/sem_ch7.adb +++ b/gcc/ada/sem_ch7.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch7.ads b/gcc/ada/sem_ch7.ads index 064ffb2..6ebd2fc 100644 --- a/gcc/ada/sem_ch7.ads +++ b/gcc/ada/sem_ch7.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 34f7ac1..e575602 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1594,9 +1594,18 @@ package body Sem_Ch8 is return; end if; - -- Check for Text_IO special unit (we may be renaming a Text_IO child) + -- Check for Text_IO special units (we may be renaming a Text_IO child), + -- but make sure not to catch renamings generated for package instances + -- that have nothing to do with them but are nevertheless homonyms. - Check_Text_IO_Special_Unit (Name (N)); + if Is_Entity_Name (Name (N)) + and then Present (Entity (Name (N))) + and then Is_Generic_Instance (Entity (Name (N))) + then + null; + else + Check_Text_IO_Special_Unit (Name (N)); + end if; if Current_Scope /= Standard_Standard then Set_Is_Pure (New_P, Is_Pure (Current_Scope)); @@ -5680,8 +5689,27 @@ package body Sem_Ch8 is null; else - Error_Msg_N -- CODEFIX - ("non-visible declaration#!", N); + -- When the entity comes from a generic instance the + -- normal error message machinery will give the line + -- number of the generic package and the location of + -- the generic instance, but not the name of the + -- the instance. + + -- So, in order to give more descriptive error messages + -- in this case, we include the name of the generic + -- package. + + if Is_Generic_Instance (Scope (Ent)) then + Error_Msg_Name_1 := Chars (Scope (Ent)); + Error_Msg_N -- CODEFIX + ("non-visible declaration from %#!", N); + + -- Otherwise print the message normally + + else + Error_Msg_N -- CODEFIX + ("non-visible declaration#!", N); + end if; if Ekind (Scope (Ent)) /= E_Generic_Package then Found := True; @@ -6423,17 +6451,13 @@ package body Sem_Ch8 is -- Else see if we have a left hand side else - case Is_LHS (N) is - when Yes => + case Known_To_Be_Assigned (N, Only_LHS => True) is + when True => Generate_Reference (E, N, 'm'); - when No => + when False => Generate_Reference (E, N, 'r'); - -- If we don't know now, generate reference later - - when Unknown => - Defer_Reference ((E, N)); end case; end if; end if; @@ -6484,7 +6508,7 @@ package body Sem_Ch8 is if Needs_Variable_Reference_Marker (N => N, Calls_OK => False) then declare - Is_Assignment_LHS : constant Boolean := Is_LHS (N) = Yes; + Is_Assignment_LHS : constant Boolean := Known_To_Be_Assigned (N); begin Build_Variable_Reference_Marker @@ -7077,15 +7101,13 @@ package body Sem_Ch8 is else Set_Entity_Or_Discriminal (N, Id); - case Is_LHS (N) is - when Yes => + case Known_To_Be_Assigned (N, Only_LHS => True) is + when True => Generate_Reference (Id, N, 'm'); - when No => + when False => Generate_Reference (Id, N, 'r'); - when Unknown => - Defer_Reference ((Id, N)); end case; end if; @@ -7181,7 +7203,7 @@ package body Sem_Ch8 is Calls_OK => False) then declare - Is_Assignment_LHS : constant Boolean := Is_LHS (N) = Yes; + Is_Assignment_LHS : constant Boolean := Known_To_Be_Assigned (N); begin Build_Variable_Reference_Marker @@ -10120,7 +10142,7 @@ package body Sem_Ch8 is return; end if; - -- Set P back to the non-renamed package so that visiblilty of the + -- Set P back to the non-renamed package so that visibility of the -- entities within the package can be properly set below. P := Entity (Pack_Name); diff --git a/gcc/ada/sem_ch8.ads b/gcc/ada/sem_ch8.ads index d47f421..23ac599 100644 --- a/gcc/ada/sem_ch8.ads +++ b/gcc/ada/sem_ch8.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb index 5293efb..c27de57 100644 --- a/gcc/ada/sem_ch9.adb +++ b/gcc/ada/sem_ch9.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_ch9.ads b/gcc/ada/sem_ch9.ads index 9c06f72..6b5e590 100644 --- a/gcc/ada/sem_ch9.ads +++ b/gcc/ada/sem_ch9.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_dim.adb b/gcc/ada/sem_dim.adb index 538da57..a24b9d7 100644 --- a/gcc/ada/sem_dim.adb +++ b/gcc/ada/sem_dim.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -2759,7 +2759,7 @@ package body Sem_Dim is -- Insert a blank between the literal and the symbol - Add_Str_To_Name_Buffer (" "); + Add_Char_To_Name_Buffer (' '); Append (Global_Name_Buffer, Symbol_Of (Typ)); Error_Msg_Name_1 := Name_Find; @@ -3032,12 +3032,12 @@ package body Sem_Dim is -- symbol is not empty, then the symbol appears as a -- suffix. Otherwise, a new string is created and appears -- as a suffix of Item. This string results in the - -- successive concatanations between each unit symbol + -- successive concatenations between each unit symbol -- raised by its corresponding dimension power from the -- dimensions of Item. -- * Put_Dim_Of : The output is a new string resulting in the successive - -- concatanations between each dimension symbol raised by + -- concatenations between each dimension symbol raised by -- its corresponding dimension power from the dimensions of -- Item. @@ -3322,13 +3322,13 @@ package body Sem_Dim is if Chars (Name_Call) = Name_Image then Rewrite (N, Make_Function_Call (Loc, - Name => New_Copy (Name_Call), + Name => New_Copy (Name_Call), Parameter_Associations => New_Actuals)); Analyze_And_Resolve (N); else Rewrite (N, Make_Procedure_Call_Statement (Loc, - Name => New_Copy (Name_Call), + Name => New_Copy (Name_Call), Parameter_Associations => New_Actuals)); Analyze (N); end if; @@ -3665,7 +3665,7 @@ package body Sem_Dim is declare G : constant Int := GCD (X.Numerator, X.Denominator); begin - return Rational'(Numerator => Whole (Int (X.Numerator) / G), + return Rational'(Numerator => Whole (Int (X.Numerator) / G), Denominator => Whole (Int (X.Denominator) / G)); end; end Reduce; diff --git a/gcc/ada/sem_dim.ads b/gcc/ada/sem_dim.ads index b2ff685..8e219d1 100644 --- a/gcc/ada/sem_dim.ads +++ b/gcc/ada/sem_dim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb index cba3c9d..cafe2c3 100644 --- a/gcc/ada/sem_disp.adb +++ b/gcc/ada/sem_disp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -478,6 +478,29 @@ package body Sem_Disp is if No (Tagged_Type) or else Is_Class_Wide_Type (Tagged_Type) then return Empty; + -- In the special case of a protected subprogram of a tagged protected + -- type that has a formal of a tagged type (or access formal whose type + -- designates a tagged type), such a formal is not controlling unless + -- it's of the protected type's corresponding record type. The latter + -- can occur for the special wrapper subprograms created for protected + -- subprograms. Such subprograms may occur in the same scope where some + -- formal's tagged type is declared, and we don't want formals of that + -- tagged type being marked as controlling, for one thing because they + -- aren't controlling from the language point of view, but also because + -- this can cause errors for access formals when conformance is checked + -- between the spec and body of the protected subprogram (null-exclusion + -- status of the formals may be set differently, which is the case that + -- led to adding this check). + + elsif Is_Subprogram (Subp) + and then Present (Protected_Subprogram (Subp)) + and then Ekind (Scope (Protected_Subprogram (Subp))) = E_Protected_Type + and then + Base_Type (Tagged_Type) + /= Corresponding_Record_Type (Scope (Protected_Subprogram (Subp))) + then + return Empty; + -- The dispatching type and the primitive operation must be defined in -- the same scope, except in the case of internal operations and formal -- abstract subprograms. diff --git a/gcc/ada/sem_disp.ads b/gcc/ada/sem_disp.ads index f37391b..563b7f3 100644 --- a/gcc/ada/sem_disp.ads +++ b/gcc/ada/sem_disp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_dist.adb b/gcc/ada/sem_dist.adb index e3075f7..ea9c7ef 100644 --- a/gcc/ada/sem_dist.adb +++ b/gcc/ada/sem_dist.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_dist.ads b/gcc/ada/sem_dist.ads index 75dfad5..d9c4cdb 100644 --- a/gcc/ada/sem_dist.ads +++ b/gcc/ada/sem_dist.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb index 29f3069..8e38f8c 100644 --- a/gcc/ada/sem_elab.adb +++ b/gcc/ada/sem_elab.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1752,13 +1752,13 @@ package body Sem_Elab is function Is_Ada_Semantic_Target (Id : Entity_Id) return Boolean; pragma Inline (Is_Ada_Semantic_Target); - -- Determine whether arbitrary entity Id denodes a source or internally + -- Determine whether arbitrary entity Id denotes a source or internally -- generated subprogram which emulates Ada semantics. function Is_Assertion_Pragma_Target (Id : Entity_Id) return Boolean; pragma Inline (Is_Assertion_Pragma_Target); -- Determine whether arbitrary entity Id denotes a procedure which - -- varifies the run-time semantics of an assertion pragma. + -- verifies the run-time semantics of an assertion pragma. function Is_Bodiless_Subprogram (Subp_Id : Entity_Id) return Boolean; pragma Inline (Is_Bodiless_Subprogram); @@ -4949,7 +4949,7 @@ package body Sem_Elab is -- which started the recursive search. If this is not the case, then -- there is a potential ABE if the access value is used to call the -- subprogram. Emit a warning only when switch -gnatw.f (warnings on - -- suspucious 'Access) is in effect. + -- suspicious 'Access) is in effect. elsif Warn_On_Elab_Access and then Present (Body_Decl) @@ -9033,7 +9033,7 @@ package body Sem_Elab is if not Comes_From_Source (Curr) then null; - -- If the traversal came from the handled sequence of statments, + -- If the traversal came from the handled sequence of statements, -- then the node appears at the level of the enclosing construct. -- This is a more reliable test because transients scopes within -- the declarative region of the encapsulator are hard to detect. @@ -9055,7 +9055,7 @@ package body Sem_Elab is elsif Nkind (Curr) in N_Entry_Body | N_Subprogram_Body | N_Task_Body then - -- If the traversal came from the handled sequence of statments, + -- If the traversal came from the handled sequence of statements, -- then the node cannot possibly appear at any level. This is -- a more reliable test because transients scopes within the -- declarative region of the encapsulator are hard to detect. @@ -15382,7 +15382,7 @@ package body Sem_Elab is elsif Present (Vis_Decls) and then List_Containing (FNode) = Vis_Decls - and then (No (Prv_Decls) or else Is_Empty_List (Prv_Decls)) + and then Is_Empty_List (Prv_Decls) then null; diff --git a/gcc/ada/sem_elab.ads b/gcc/ada/sem_elab.ads index 1252a46..b76965b 100644 --- a/gcc/ada/sem_elab.ads +++ b/gcc/ada/sem_elab.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_elim.adb b/gcc/ada/sem_elim.adb index bd3c2ef..44a2780 100644 --- a/gcc/ada/sem_elim.adb +++ b/gcc/ada/sem_elim.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_elim.ads b/gcc/ada/sem_elim.ads index b9c73f4..0687806 100644 --- a/gcc/ada/sem_elim.ads +++ b/gcc/ada/sem_elim.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1997-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb index 7270172..2881a14 100644 --- a/gcc/ada/sem_eval.adb +++ b/gcc/ada/sem_eval.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1916,90 +1916,6 @@ package body Sem_Eval is return False; end Compile_Time_Known_Value; - -------------------------------------- - -- Compile_Time_Known_Value_Or_Aggr -- - -------------------------------------- - - function Compile_Time_Known_Value_Or_Aggr (Op : Node_Id) return Boolean is - begin - -- If we have an entity name, then see if it is the name of a constant - -- and if so, test the corresponding constant value, or the name of - -- an enumeration literal, which is always a constant. - - if Is_Entity_Name (Op) then - declare - E : constant Entity_Id := Entity (Op); - V : Node_Id; - - begin - if Ekind (E) = E_Enumeration_Literal then - return True; - - elsif Ekind (E) /= E_Constant then - return False; - - else - V := Constant_Value (E); - return Present (V) - and then Compile_Time_Known_Value_Or_Aggr (V); - end if; - end; - - -- We have a value, see if it is compile-time-known - - else - if Compile_Time_Known_Value (Op) then - return True; - - elsif Nkind (Op) = N_Aggregate then - - if Present (Expressions (Op)) then - declare - Expr : Node_Id; - begin - Expr := First (Expressions (Op)); - while Present (Expr) loop - if not Compile_Time_Known_Value_Or_Aggr (Expr) then - return False; - else - Next (Expr); - end if; - end loop; - end; - end if; - - if Present (Component_Associations (Op)) then - declare - Cass : Node_Id; - - begin - Cass := First (Component_Associations (Op)); - while Present (Cass) loop - if not - Compile_Time_Known_Value_Or_Aggr (Expression (Cass)) - then - return False; - end if; - - Next (Cass); - end loop; - end; - end if; - - return True; - - elsif Nkind (Op) = N_Qualified_Expression then - return Compile_Time_Known_Value_Or_Aggr (Expression (Op)); - - -- All other types of values are not known at compile time - - else - return False; - end if; - - end if; - end Compile_Time_Known_Value_Or_Aggr; - --------------------------------------- -- CRT_Safe_Compile_Time_Known_Value -- --------------------------------------- @@ -2117,6 +2033,7 @@ package body Sem_Eval is Apply_Compile_Time_Constraint_Error (N, "division by zero", CE_Divide_By_Zero, + Loc => Sloc (Right), Warn => not Stat or SPARK_Mode = On); return; @@ -2139,6 +2056,7 @@ package body Sem_Eval is Apply_Compile_Time_Constraint_Error (N, "mod with zero divisor", CE_Divide_By_Zero, + Loc => Sloc (Right), Warn => not Stat or SPARK_Mode = On); return; @@ -2159,6 +2077,7 @@ package body Sem_Eval is Apply_Compile_Time_Constraint_Error (N, "rem with zero divisor", CE_Divide_By_Zero, + Loc => Sloc (Right), Warn => not Stat or SPARK_Mode = On); return; @@ -2218,7 +2137,8 @@ package body Sem_Eval is else pragma Assert (Nkind (N) = N_Op_Divide); if UR_Is_Zero (Right_Real) then Apply_Compile_Time_Constraint_Error - (N, "division by zero", CE_Divide_By_Zero); + (N, "division by zero", CE_Divide_By_Zero, + Loc => Sloc (Right)); return; end if; @@ -3882,7 +3802,7 @@ package body Sem_Eval is -- Fold will perform the other relevant tests. if Nkind (Parent (N)) /= N_Attribute_Reference - and then Is_LHS (N) = No + and then not Known_To_Be_Assigned (N) and then not Is_Actual_Out_Or_In_Out_Parameter (N) then -- Simplify a selected_component on an aggregate by extracting @@ -4723,7 +4643,7 @@ package body Sem_Eval is ------------------ function Expr_Value_E (N : Node_Id) return Entity_Id is - Ent : constant Entity_Id := Entity (N); + Ent : constant Entity_Id := Entity (N); begin if Ekind (Ent) = E_Enumeration_Literal then return Ent; @@ -7479,13 +7399,11 @@ package body Sem_Eval is procedure Why_Not_Static_List (L : List_Id) is N : Node_Id; begin - if Is_Non_Empty_List (L) then - N := First (L); - while Present (N) loop - Why_Not_Static (N); - Next (N); - end loop; - end if; + N := First (L); + while Present (N) loop + Why_Not_Static (N); + Next (N); + end loop; end Why_Not_Static_List; -- Start of processing for Why_Not_Static diff --git a/gcc/ada/sem_eval.ads b/gcc/ada/sem_eval.ads index c2e08b6..4fdd5a1 100644 --- a/gcc/ada/sem_eval.ads +++ b/gcc/ada/sem_eval.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -113,7 +113,7 @@ package Sem_Eval is -- The expression 'C' is not static in the technical RM sense, but for many -- simple record types, the size is in fact known at compile time. When we -- are trying to perform compile time constant folding (for instance for - -- expressions like C + 1, Is_Static_Expression or Is_OK_Static_Expression + -- expressions like C + 1), Is_Static_Expression or Is_OK_Static_Expression -- are not the right functions to test if folding is possible. Instead, we -- use Compile_Time_Known_Value. All static expressions that do not raise -- constraint error (i.e. those for which Is_OK_Static_Expression is true) @@ -236,15 +236,6 @@ package Sem_Eval is -- WARNING: There is a matching C declaration of this subprogram in fe.h - function Compile_Time_Known_Value_Or_Aggr (Op : Node_Id) return Boolean; - -- Similar to Compile_Time_Known_Value, but also returns True if the value - -- is a compile-time-known aggregate, i.e. an aggregate all of whose - -- constituent expressions are either compile-time-known values (based on - -- calling Compile_Time_Known_Value) or compile-time-known aggregates. - -- Note that the aggregate could still involve run-time checks that might - -- fail (such as for subtype checks in component associations), but the - -- evaluation of the expressions themselves will not raise an exception. - function CRT_Safe_Compile_Time_Known_Value (Op : Node_Id) return Boolean; -- In the case of configurable run-times, there may be an issue calling -- Compile_Time_Known_Value with non-static expressions where the legality diff --git a/gcc/ada/sem_intr.adb b/gcc/ada/sem_intr.adb index ebedc0c..f4c2adc 100644 --- a/gcc/ada/sem_intr.adb +++ b/gcc/ada/sem_intr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_intr.ads b/gcc/ada/sem_intr.ads index 9afa527..9fbfead 100644 --- a/gcc/ada/sem_intr.ads +++ b/gcc/ada/sem_intr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_mech.adb b/gcc/ada/sem_mech.adb index 3bc6ce0..67ee844 100644 --- a/gcc/ada/sem_mech.adb +++ b/gcc/ada/sem_mech.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_mech.ads b/gcc/ada/sem_mech.ads index ceadc42..4537d2f 100644 --- a/gcc/ada/sem_mech.ads +++ b/gcc/ada/sem_mech.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 9fdec53..f9169ee 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -398,14 +398,12 @@ package body Sem_Prag is CC := Get_String_Char (Strval (N), J); if Opt.External_Name_Exp_Casing = Uppercase - and then CC >= Get_Char_Code ('a') - and then CC <= Get_Char_Code ('z') + and then CC in Get_Char_Code ('a') .. Get_Char_Code ('z') then Store_String_Char (CC - 32); elsif Opt.External_Name_Exp_Casing = Lowercase - and then CC >= Get_Char_Code ('A') - and then CC <= Get_Char_Code ('Z') + and then CC in Get_Char_Code ('A') .. Get_Char_Code ('Z') then Store_String_Char (CC + 32); @@ -7115,7 +7113,7 @@ package body Sem_Prag is if From_Aspect_Specification (N) then - -- Change appearence of "pragma" in message to "aspect" + -- Change appearance of "pragma" in message to "aspect" J := Res'First; while J <= Res_Last - 5 loop @@ -12974,10 +12972,6 @@ package body Sem_Prag is then Mark_Ghost_Pragma (N, Entity (Get_Pragma_Arg (Nam_Arg))); end if; - - -- Not allowed in compiler units (bootstrap issues) - - Check_Compiler_Unit ("Entity for pragma Annotate", N); end if; -- Continue the processing with last argument removed for now @@ -14338,50 +14332,6 @@ package body Sem_Prag is Process_Compile_Time_Warning_Or_Error; - --------------------------- - -- Compiler_Unit_Warning -- - --------------------------- - - -- pragma Compiler_Unit_Warning; - - -- Historical note - - -- Originally, we had only pragma Compiler_Unit, and it resulted in - -- errors not warnings. This means that we had introduced a big extra - -- inertia to compiler changes, since even if we implemented a new - -- feature, and even if all versions to be used for bootstrapping - -- implemented this new feature, we could not use it, since old - -- compilers would give errors for using this feature in units - -- having Compiler_Unit pragmas. - - -- By changing Compiler_Unit to Compiler_Unit_Warning, we solve the - -- problem. We no longer have any units mentioning Compiler_Unit, - -- so old compilers see Compiler_Unit_Warning which is unrecognized, - -- and thus generates a warning which can be ignored. So that deals - -- with the problem of old compilers not implementing the newer form - -- of the pragma. - - -- Newer compilers recognize the new pragma, but generate warning - -- messages instead of errors, which again can be ignored in the - -- case of an old compiler which implements a wanted new feature - -- but at the time felt like warning about it for older compilers. - - -- We retain Compiler_Unit so that new compilers can be used to build - -- older run-times that use this pragma. That's an unusual case, but - -- it's easy enough to handle, so why not? - - when Pragma_Compiler_Unit - | Pragma_Compiler_Unit_Warning - => - GNAT_Pragma; - Check_Arg_Count (0); - - -- Only recognized in main unit - - if Current_Sem_Unit = Main_Unit then - Compiler_Unit := True; - end if; - ----------------------------- -- Complete_Representation -- ----------------------------- @@ -25694,10 +25644,6 @@ package body Sem_Prag is Reason := End_String; Arg_Count := Arg_Count - 1; - -- Not allowed in compiler units (bootstrap issues) - - Check_Compiler_Unit ("Reason for pragma Warnings", N); - -- No REASON string, set null string as reason else @@ -26639,7 +26585,7 @@ package body Sem_Prag is -- The current refinement clause is legally constructed following -- the rules in SPARK RM 7.2.5, therefore it can be removed from - -- the pool of candidates. The seach continues because a single + -- the pool of candidates. The search continues because a single -- dependence clause may have multiple matching refinements. if Inputs_Match and Outputs_Match then @@ -30957,8 +30903,8 @@ package body Sem_Prag is return Stmt; -- The subprogram declaration is an internally generated spec - -- for a stand-alone subrogram body declared inside a protected - -- body. + -- for a stand-alone subprogram body declared inside a + -- protected body. elsif Present (Corresponding_Body (Stmt)) and then Comes_From_Source (Corresponding_Body (Stmt)) @@ -31441,7 +31387,7 @@ package body Sem_Prag is -- whether appearance of some name in a given pragma is to be considered -- as a reference for the purposes of warnings about unreferenced objects. - -- -1 indicates that appearence in any argument is significant + -- -1 indicates that appearance in any argument is significant -- 0 indicates that appearance in any argument is not significant -- +n indicates that appearance as argument n is significant, but all -- other arguments are not significant @@ -31490,8 +31436,6 @@ package body Sem_Prag is Pragma_CUDA_Global => -1, Pragma_Compile_Time_Error => -1, Pragma_Compile_Time_Warning => -1, - Pragma_Compiler_Unit => -1, - Pragma_Compiler_Unit_Warning => -1, Pragma_Complete_Representation => 0, Pragma_Complex_Representation => 0, Pragma_Component_Alignment => 0, @@ -32733,7 +32677,7 @@ package body Sem_Prag is -------------------------------------------- procedure Defer_Compile_Time_Warning_Error_To_BE (N : Node_Id) is - Arg1 : constant Node_Id := First (Pragma_Argument_Associations (N)); + Arg1 : constant Node_Id := First (Pragma_Argument_Associations (N)); begin Compile_Time_Warnings_Errors.Append (New_Val => CTWE_Entry'(Eloc => Sloc (Arg1), diff --git a/gcc/ada/sem_prag.ads b/gcc/ada/sem_prag.ads index fed24fd..44590ac 100644 --- a/gcc/ada/sem_prag.ads +++ b/gcc/ada/sem_prag.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 84612c3..4f66b71 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -302,7 +302,7 @@ package body Sem_Res is -- of the context, or the type of the other operand has a user-defined -- literal aspect that can be applied to the literal to resolve the node. -- If such aspect exists, replace literal with a call to the - -- corresponing function and return True, return false otherwise. + -- corresponding function and return True, return false otherwise. ------------------------- -- Ambiguous_Character -- @@ -1774,12 +1774,12 @@ package body Sem_Res is elsif Opnd_Type = Universal_Real then Orig_Type := Type_In_P (Is_Real_Type'Access); + elsif Opnd_Type = Universal_Access then + Orig_Type := Type_In_P (Is_Definite_Access_Type'Access); + elsif Opnd_Type = Any_String then Orig_Type := Type_In_P (Is_String_Type'Access); - elsif Opnd_Type = Any_Access then - Orig_Type := Type_In_P (Is_Definite_Access_Type'Access); - elsif Opnd_Type = Any_Composite then Orig_Type := Type_In_P (Is_Composite_Type'Access); @@ -3439,7 +3439,7 @@ package body Sem_Res is end case; -- Mark relevant use-type and use-package clauses as effective using - -- the original node because constant folding may have occured and + -- the original node because constant folding may have occurred and -- removed references that need to be examined. if Nkind (Original_Node (N)) in N_Op then @@ -8748,7 +8748,7 @@ package body Sem_Res is Set_Etype (N, Any_Type); return; - elsif T = Any_Access + elsif T = Universal_Access or else Ekind (T) in E_Allocator_Type | E_Access_Attribute_Type then T := Find_Unique_Access_Type; @@ -9774,7 +9774,7 @@ package body Sem_Res is ---------------------------- procedure Resolve_Set_Membership is - Alt : Node_Id; + Alt : Node_Id; begin -- If the left operand is overloaded, find type compatible with not @@ -10185,7 +10185,7 @@ package body Sem_Res is ("\\interpretation as call yields&", Arg, Typ); Error_Msg_NE ("\\interpretation as indexing of call yields&", - Arg, Component_Type (Typ)); + Arg, Ctyp); else Error_Msg_N ("ambiguous operand for concatenation!", Arg); @@ -10208,10 +10208,30 @@ package body Sem_Res is end; end if; - Resolve (Arg, Component_Type (Typ)); + Resolve (Arg, Ctyp); if Nkind (Arg) = N_String_Literal then - Set_Etype (Arg, Component_Type (Typ)); + Set_Etype (Arg, Ctyp); + + elsif Is_Scalar_Type (Etype (Arg)) + and then Compile_Time_Known_Value (Arg) + then + -- Determine if the out-of-range violation constitutes a + -- warning or an error according to the expression base type, + -- according to Ada 2022 RM 4.9 (35/2). + + if Is_Out_Of_Range (Arg, Base_Type (Ctyp)) then + Apply_Compile_Time_Constraint_Error + (Arg, "value not in range of}", CE_Range_Check_Failed, + Ent => Base_Type (Ctyp), + Typ => Base_Type (Ctyp)); + + elsif Is_Out_Of_Range (Arg, Ctyp) then + Apply_Compile_Time_Constraint_Error + (Arg, "value not in range of}??", CE_Range_Check_Failed, + Ent => Ctyp, + Typ => Ctyp); + end if; end if; if Arg = Left_Opnd (N) then @@ -10574,7 +10594,7 @@ package body Sem_Res is end if; -- AI12-0100: Once the qualified expression is resolved, check whether - -- operand statisfies a static predicate of the target subtype, if any. + -- operand satisfies a static predicate of the target subtype, if any. -- In the static expression case, a predicate check failure is an error. if Has_Predicates (Target_Typ) then @@ -10754,6 +10774,30 @@ package body Sem_Res is Fold_Uint (H, Expr_Value (H), Static => True); end if; end if; + + -- If we have a compile-time-known null range, we warn, because that is + -- likely to be a mistake. (Dynamic null ranges make sense, but often + -- compile-time-known ones do not.) Warn only if this is in a subtype + -- declaration. We do this here, rather than while analyzing a subtype + -- declaration, in case we decide to expand the cases. We do not want to + -- warn in all cases, because some are idiomatic, such as an empty + -- aggregate (1 .. 0 => <>). + + -- We don't warn in generics or their instances, because there might be + -- some instances where the range is null, and some where it is not, + -- which would lead to false alarms. + + if not (Inside_A_Generic or In_Instance) + and then Comes_From_Source (N) + and then Compile_Time_Compare + (Low_Bound (N), High_Bound (N), Assume_Valid => True) = GT + and then Nkind (Parent (N)) = N_Range_Constraint + and then Nkind (Parent (Parent (N))) = N_Subtype_Indication + and then Nkind (Parent (Parent (Parent (N)))) = N_Subtype_Declaration + and then Is_OK_Static_Range (N) + then + Error_Msg_N ("null range??", N); + end if; end Resolve_Range; -------------------------- @@ -11026,7 +11070,7 @@ package body Sem_Res is -- resolution was complete to do this, since otherwise we can't tell if -- we are an lvalue or not. - if May_Be_Lvalue (N) then + if Known_To_Be_Assigned (N) then Generate_Reference (Entity (S), S, 'm'); else Generate_Reference (Entity (S), S, 'r'); @@ -11052,7 +11096,7 @@ package body Sem_Res is if Is_Entity_Name (P) and then Has_Deferred_Reference (Entity (P)) then - if May_Be_Lvalue (N) then + if Known_To_Be_Assigned (N) then Generate_Reference (Entity (P), P, 'm'); else Generate_Reference (Entity (P), P, 'r'); @@ -11722,14 +11766,14 @@ package body Sem_Res is Comp_Typ_Hi : constant Node_Id := Type_High_Bound (Component_Type (Typ)); - Char_Val : Int; + Char_Val : Uint; begin if Compile_Time_Known_Value (Comp_Typ_Lo) and then Compile_Time_Known_Value (Comp_Typ_Hi) then for J in 1 .. Strlen loop - Char_Val := Int (Get_String_Char (Str, J)); + Char_Val := UI_From_CC (Get_String_Char (Str, J)); if Char_Val < Expr_Value (Comp_Typ_Lo) or else Char_Val > Expr_Value (Comp_Typ_Hi) @@ -11737,7 +11781,7 @@ package body Sem_Res is Apply_Compile_Time_Constraint_Error (N, "character out of range??", CE_Range_Check_Failed, - Loc => Source_Ptr (Int (Loc) + J)); + Loc => Loc + Source_Ptr (J)); end if; end loop; @@ -12172,7 +12216,7 @@ package body Sem_Res is end if; -- Ada 2012: Once the type conversion is resolved, check whether the - -- operand statisfies a static predicate of the target subtype, if any. + -- operand satisfies a static predicate of the target subtype, if any. -- In the static expression case, a predicate check failure is an error. if Has_Predicates (Target_Typ) then @@ -13128,7 +13172,7 @@ package body Sem_Res is function In_Instance_Code return Boolean; -- Return True if expression is within an instance but is not in one of -- the actuals of the instantiation. Type conversions within an instance - -- are not rechecked because type visbility may lead to spurious errors, + -- are not rechecked because type visibility may lead to spurious errors -- but conversions in an actual for a formal object must be checked. function Is_Discrim_Of_Bad_Access_Conversion_Argument diff --git a/gcc/ada/sem_res.ads b/gcc/ada/sem_res.ads index 1014021..29a5005 100644 --- a/gcc/ada/sem_res.ads +++ b/gcc/ada/sem_res.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_scil.adb b/gcc/ada/sem_scil.adb index f56d95e..9b6acfc 100644 --- a/gcc/ada/sem_scil.adb +++ b/gcc/ada/sem_scil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_scil.ads b/gcc/ada/sem_scil.ads index 78f969b..d618c8c 100644 --- a/gcc/ada/sem_scil.ads +++ b/gcc/ada/sem_scil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2009-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2009-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_smem.adb b/gcc/ada/sem_smem.adb index fff850b..4096080 100644 --- a/gcc/ada/sem_smem.adb +++ b/gcc/ada/sem_smem.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_smem.ads b/gcc/ada/sem_smem.ads index 73555a6..e935c66 100644 --- a/gcc/ada/sem_smem.ads +++ b/gcc/ada/sem_smem.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index 4419fb3..8a00e97 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -235,7 +235,9 @@ package body Sem_Type is if Ada_Version >= Ada_2005 then if Nkind (N) in N_Binary_Op then Abstr_Op := Binary_Op_Interp_Has_Abstract_Op (N, Name); - elsif Nkind (N) = N_Function_Call then + elsif Nkind (N) = N_Function_Call + and then Ekind (Name) = E_Function + then Abstr_Op := Function_Interp_Has_Abstract_Op (N, Name); end if; end if; @@ -770,7 +772,7 @@ package body Sem_Type is function Real_Actual (T : Entity_Id) return Entity_Id; -- If an actual in an inner instance is the formal of an enclosing -- generic, the actual in the enclosing instance is the one that can - -- create an accidental ambiguity, and the check on compatibily of + -- create an accidental ambiguity, and the check on compatibility of -- generic actual types must use this enclosing actual. ---------------------- @@ -913,10 +915,10 @@ package body Sem_Type is elsif (T2 = Universal_Integer and then Is_Integer_Type (T1)) or else (T2 = Universal_Real and then Is_Real_Type (T1)) or else (T2 = Universal_Fixed and then Is_Fixed_Point_Type (T1)) + or else (T2 = Universal_Access and then Is_Access_Type (T1)) or else (T2 = Any_Fixed and then Is_Fixed_Point_Type (T1)) or else (T2 = Any_Character and then Is_Character_Type (T1)) or else (T2 = Any_String and then Is_String_Type (T1)) - or else (T2 = Any_Access and then Is_Access_Type (T1)) then return True; @@ -1213,7 +1215,7 @@ package body Sem_Type is and then Is_Access_Type (T2) and then Designated_Type (T1) = Designated_Type (T2)) or else - (T1 = Any_Access + (T1 = Universal_Access and then Is_Access_Type (Underlying_Type (T2))) or else (T2 = Any_Composite @@ -2357,19 +2359,24 @@ package body Sem_Type is Form_Parm : Node_Id; begin - -- Why is check on E needed below ??? - -- In any case this para needs comments ??? + if Is_Overloaded (N) then + -- Move through the formals and actuals of the call to + -- determine if an abstract interpretation exists. - if Is_Overloaded (N) and then Is_Overloadable (E) then Act_Parm := First_Actual (N); Form_Parm := First_Formal (E); while Present (Act_Parm) and then Present (Form_Parm) loop Act := Act_Parm; + -- Extract the actual from a parameter association + if Nkind (Act) = N_Parameter_Association then Act := Explicit_Actual_Parameter (Act); end if; + -- Use the actual and the type of its correponding formal to test + -- for an abstract interpretation and return it when found. + Abstr_Op := Has_Abstract_Op (Act, Etype (Form_Parm)); if Present (Abstr_Op) then @@ -2381,6 +2388,8 @@ package body Sem_Type is end loop; end if; + -- Otherwise, return empty + return Empty; end Function_Interp_Has_Abstract_Op; @@ -3379,12 +3388,12 @@ package body Sem_Type is elsif T1 = Any_Character and then Is_Character_Type (T2) then return B2; - elsif T1 = Any_Access + elsif T1 = Universal_Access and then (Is_Access_Type (T2) or else Is_Remote_Access (T2)) then return T2; - elsif T2 = Any_Access + elsif T2 = Universal_Access and then (Is_Access_Type (T1) or else Is_Remote_Access (T1)) then return T1; @@ -3392,7 +3401,7 @@ package body Sem_Type is -- In an instance, the specific type may have a private view. Use full -- view to check legality. - elsif T2 = Any_Access + elsif T2 = Universal_Access and then Is_Private_Type (T1) and then Present (Full_View (T1)) and then Is_Access_Type (Full_View (T1)) diff --git a/gcc/ada/sem_type.ads b/gcc/ada/sem_type.ads index dfe4c7c..bdb44d6 100644 --- a/gcc/ada/sem_type.ads +++ b/gcc/ada/sem_type.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 882eb23..3c55dda 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -503,7 +503,7 @@ package body Sem_Util is (Scope (Defining_Identifier (Par)))); when N_Assignment_Statement => - -- Return the accessiblity level of the left-hand part + -- Return the accessibility level of the left-hand part return Accessibility_Level (Expr => Name (Par), @@ -1659,7 +1659,7 @@ package body Sem_Util is Typ : Entity_Id; Suggest_Static : Boolean := False) is - Gen : Entity_Id; + Gen : Entity_Id; begin -- Avoid cascaded errors @@ -1970,6 +1970,12 @@ package body Sem_Util is -- Similar to previous one, for discriminated components constrained -- by the discriminant of the enclosing object. + function Build_Discriminant_Reference + (Discrim_Name : Node_Id; Obj : Node_Id := P) return Node_Id; + -- Build a reference to the discriminant denoted by Discrim_Name. + -- The prefix of the result is usually Obj, but it could be + -- a prefix of Obj in some corner cases. + function Copy_And_Maybe_Dereference (N : Node_Id) return Node_Id; -- Copy the subtree rooted at N and insert an explicit dereference if it -- is of an access type. @@ -1993,11 +1999,7 @@ package body Sem_Util is Old_Hi := Type_High_Bound (Etype (Indx)); if Denotes_Discriminant (Old_Lo) then - Lo := - Make_Selected_Component (Loc, - Prefix => Copy_And_Maybe_Dereference (P), - Selector_Name => New_Occurrence_Of (Entity (Old_Lo), Loc)); - + Lo := Build_Discriminant_Reference (Old_Lo); else Lo := New_Copy_Tree (Old_Lo); @@ -2011,11 +2013,7 @@ package body Sem_Util is end if; if Denotes_Discriminant (Old_Hi) then - Hi := - Make_Selected_Component (Loc, - Prefix => Copy_And_Maybe_Dereference (P), - Selector_Name => New_Occurrence_Of (Entity (Old_Hi), Loc)); - + Hi := Build_Discriminant_Reference (Old_Hi); else Hi := New_Copy_Tree (Old_Hi); Set_Analyzed (Hi, False); @@ -2041,10 +2039,7 @@ package body Sem_Util is D := First_Elmt (Discriminant_Constraint (Desig_Typ)); while Present (D) loop if Denotes_Discriminant (Node (D)) then - D_Val := Make_Selected_Component (Loc, - Prefix => Copy_And_Maybe_Dereference (P), - Selector_Name => New_Occurrence_Of (Entity (Node (D)), Loc)); - + D_Val := Build_Discriminant_Reference (Node (D)); else D_Val := New_Copy_Tree (Node (D)); end if; @@ -2056,6 +2051,90 @@ package body Sem_Util is return Constraints; end Build_Actual_Record_Constraint; + ---------------------------------- + -- Build_Discriminant_Reference -- + ---------------------------------- + + function Build_Discriminant_Reference + (Discrim_Name : Node_Id; Obj : Node_Id := P) return Node_Id + is + Discrim : constant Entity_Id := Entity (Discrim_Name); + + function Obj_Is_Good_Prefix return Boolean; + -- Returns True if Obj.Discrim makes sense; that is, if + -- Obj has Discrim as one of its discriminants (or is an + -- access value that designates such an object). + + ------------------------ + -- Obj_Is_Good_Prefix -- + ------------------------ + + function Obj_Is_Good_Prefix return Boolean is + Obj_Type : Entity_Id := + Implementation_Base_Type (Etype (Obj)); + + Discriminated_Type : constant Entity_Id := + Implementation_Base_Type + (Scope (Original_Record_Component (Discrim))); + begin + -- The order of the following two tests matters in the + -- access-to-class-wide case. + + if Is_Access_Type (Obj_Type) then + Obj_Type := Implementation_Base_Type + (Designated_Type (Obj_Type)); + end if; + + if Is_Class_Wide_Type (Obj_Type) then + Obj_Type := Implementation_Base_Type + (Find_Specific_Type (Obj_Type)); + end if; + + -- If a type T1 defines a discriminant D1, then Obj.D1 is ok (for + -- our purposes here) if T1 is an ancestor of the type of Obj. + -- So that's what we would like to test for here. + -- The bad news: Is_Ancestor is only defined in the tagged case. + -- The good news: in the untagged case, Implementation_Base_Type + -- looks through derived types so we can use a simpler test. + + if Is_Tagged_Type (Discriminated_Type) then + return Is_Ancestor (Discriminated_Type, Obj_Type); + else + return Discriminated_Type = Obj_Type; + end if; + end Obj_Is_Good_Prefix; + + -- Start of processing for Build_Discriminant_Reference + + begin + if not Obj_Is_Good_Prefix then + -- If the given discriminant is not a component of the given + -- object, then try the enclosing object. + + if Nkind (Obj) = N_Selected_Component then + return Build_Discriminant_Reference + (Discrim_Name => Discrim_Name, + Obj => Prefix (Obj)); + elsif Nkind (Obj) in N_Has_Entity + and then Nkind (Parent (Entity (Obj))) = + N_Object_Renaming_Declaration + then + -- Look through a renaming (a corner case of a corner case). + return Build_Discriminant_Reference + (Discrim_Name => Discrim_Name, + Obj => Name (Parent (Entity (Obj)))); + else + -- We are in some unexpected case here, so revert to the + -- old behavior (by falling through to it). + null; + end if; + end if; + + return Make_Selected_Component (Loc, + Prefix => Copy_And_Maybe_Dereference (Obj), + Selector_Name => New_Occurrence_Of (Discrim, Loc)); + end Build_Discriminant_Reference; + ------------------------------------ -- Build_Access_Record_Constraint -- ------------------------------------ @@ -4364,6 +4443,44 @@ package body Sem_Util is end if; end Check_Nonvolatile_Function_Profile; + ------------------- + -- Check_Parents -- + ------------------- + + function Check_Parents (N : Node_Id; List : Elist_Id) return Boolean is + + function Check_Node + (Parent_Node : Node_Id; + N : Node_Id) return Traverse_Result; + -- Process a single node. + + ---------------- + -- Check_Node -- + ---------------- + + function Check_Node + (Parent_Node : Node_Id; + N : Node_Id) return Traverse_Result is + begin + if Nkind (N) = N_Identifier + and then Parent (N) /= Parent_Node + and then Present (Entity (N)) + and then Contains (List, Entity (N)) + then + return Abandon; + end if; + + return OK; + end Check_Node; + + function Traverse is new Traverse_Func_With_Parent (Check_Node); + + -- Start of processing for Check_Parents + + begin + return Traverse (N) = OK; + end Check_Parents; + ----------------------------- -- Check_Part_Of_Reference -- ----------------------------- @@ -5967,31 +6084,29 @@ package body Sem_Util is -- Traverse the graph of ancestor interfaces - if Is_Non_Empty_List (Abstract_Interface_List (Full_T)) then - Id := First (Abstract_Interface_List (Full_T)); - while Present (Id) loop - Iface := Etype (Id); + Id := First (Abstract_Interface_List (Full_T)); + while Present (Id) loop + Iface := Etype (Id); - -- Protect against wrong uses. For example: - -- type I is interface; - -- type O is tagged null record; - -- type Wrong is new I and O with null record; -- ERROR + -- Protect against wrong uses. For example: + -- type I is interface; + -- type O is tagged null record; + -- type Wrong is new I and O with null record; -- ERROR - if Is_Interface (Iface) then - if Exclude_Parents - and then Etype (T) /= T - and then Interface_Present_In_Ancestor (Etype (T), Iface) - then - null; - else - Collect (Iface); - Append_Unique_Elmt (Iface, Ifaces_List); - end if; + if Is_Interface (Iface) then + if Exclude_Parents + and then Etype (T) /= T + and then Interface_Present_In_Ancestor (Etype (T), Iface) + then + null; + else + Collect (Iface); + Append_Unique_Elmt (Iface, Ifaces_List); end if; + end if; - Next (Id); - end loop; - end if; + Next (Id); + end loop; end Collect; -- Start of processing for Collect_Interfaces @@ -6525,7 +6640,7 @@ package body Sem_Util is Error_Msg_Warn := Warn or SPARK_Mode /= On; -- A static constraint error in an instance body is not a fatal error. - -- we choose to inhibit the message altogether, because there is no + -- We choose to inhibit the message altogether, because there is no -- obvious node (for now) on which to post it. On the other hand the -- offending node must be replaced with a constraint_error in any case. @@ -6630,24 +6745,23 @@ package body Sem_Util is if Present (Conc_Typ) and then not Comes_From_Source (Conc_Typ) then - Error_Msg_NEL - ("\& [<<", N, Standard_Constraint_Error, Eloc); + Error_Msg ("\& [<<", Eloc, N); else if GNATprove_Mode then - Error_Msg_NEL - ("\& would have been raised for objects of this " - & "type", N, Standard_Constraint_Error, Eloc); + Error_Msg + ("\Constraint_Error would have been raised" + & " for objects of this type", Eloc, N); else - Error_Msg_NEL - ("\& will be raised for objects of this type??", - N, Standard_Constraint_Error, Eloc); + Error_Msg + ("\Constraint_Error will be raised" + & " for objects of this type??", Eloc, N); end if; end if; end; else - Error_Msg_NEL ("\& [<<", N, Standard_Constraint_Error, Eloc); + Error_Msg ("\Constraint_Error [<<", Eloc, N); end if; else @@ -6871,7 +6985,10 @@ package body Sem_Util is -- Copy_Subprogram_Spec -- -------------------------- - function Copy_Subprogram_Spec (Spec : Node_Id) return Node_Id is + function Copy_Subprogram_Spec + (Spec : Node_Id; + New_Sloc : Source_Ptr := No_Location) return Node_Id + is Def_Id : Node_Id; Formal_Spec : Node_Id; Result : Node_Id; @@ -6880,7 +6997,7 @@ package body Sem_Util is -- The structure of the original tree must be replicated without any -- alterations. Use New_Copy_Tree for this purpose. - Result := New_Copy_Tree (Spec); + Result := New_Copy_Tree (Spec, New_Sloc => New_Sloc); -- However, the spec of a null procedure carries the corresponding null -- statement of the body (created by the parser), and this cannot be @@ -7702,62 +7819,30 @@ package body Sem_Util is function Derivation_Too_Early_To_Inherit (Typ : Entity_Id; Streaming_Op : TSS_Name_Type) return Boolean is + Btyp : constant Entity_Id := Implementation_Base_Type (Typ); Parent_Type : Entity_Id; + + Real_Rep : Node_Id; + + -- Start of processing for Derivation_Too_Early_To_Inherit + begin if Is_Derived_Type (Btyp) then Parent_Type := Implementation_Base_Type (Etype (Btyp)); pragma Assert (Parent_Type /= Btyp); + if Has_Stream_Attribute_Definition - (Parent_Type, Streaming_Op) + (Parent_Type, Streaming_Op, Real_Rep => Real_Rep) + and then In_Same_Extended_Unit (Btyp, Parent_Type) and then Instantiation (Get_Source_File_Index (Sloc (Btyp))) = Instantiation (Get_Source_File_Index (Sloc (Parent_Type))) then - declare - -- ??? Avoid code duplication here with - -- Sem_Cat.Has_Stream_Attribute_Definition by introducing a - -- new function to be called from both places? - - Rep_Item : Node_Id := First_Rep_Item (Parent_Type); - Real_Rep : Node_Id; - Found : Boolean := False; - begin - while Present (Rep_Item) loop - Real_Rep := Rep_Item; - - if Nkind (Rep_Item) = N_Aspect_Specification then - Real_Rep := Aspect_Rep_Item (Rep_Item); - end if; - - if Nkind (Real_Rep) = N_Attribute_Definition_Clause then - case Chars (Real_Rep) is - when Name_Read => - Found := Streaming_Op = TSS_Stream_Read; - - when Name_Write => - Found := Streaming_Op = TSS_Stream_Write; - - when Name_Input => - Found := Streaming_Op = TSS_Stream_Input; - - when Name_Output => - Found := Streaming_Op = TSS_Stream_Output; - - when others => - null; - end case; - end if; - - if Found then - return Earlier_In_Extended_Unit (Btyp, Real_Rep); - end if; - - Next_Rep_Item (Rep_Item); - end loop; - end; + return Earlier_In_Extended_Unit (Btyp, Real_Rep); end if; end if; + return False; end Derivation_Too_Early_To_Inherit; @@ -8314,7 +8399,7 @@ package body Sem_Util is -- Local variables - Owner : Node_Id; + Owner : Node_Id := Empty; -- Start of processing for End_Keyword_Location @@ -8932,7 +9017,7 @@ package body Sem_Util is function Expression_Of_Expression_Function (Subp : Entity_Id) return Node_Id is - Expr_Func : Node_Id; + Expr_Func : Node_Id := Empty; begin pragma Assert (Is_Expression_Function_Or_Completion (Subp)); @@ -9111,6 +9196,12 @@ package body Sem_Util is then Call_Nam := Name (Call); + -- A call to an entry family may appear as an indexed component + + if Nkind (Call_Nam) = N_Indexed_Component then + Call_Nam := Prefix (Call_Nam); + end if; + -- A call to a protected or task entry appears as a selected -- component rather than an expanded name. @@ -9120,7 +9211,11 @@ package body Sem_Util is if Is_Entity_Name (Call_Nam) and then Present (Entity (Call_Nam)) - and then Is_Overloadable (Entity (Call_Nam)) + and then (Is_Generic_Subprogram (Entity (Call_Nam)) + or else Is_Overloadable (Entity (Call_Nam)) + or else Ekind (Entity (Call_Nam)) in E_Entry_Family + | E_Subprogram_Body + | E_Subprogram_Type) and then not Is_Overloaded (Call_Nam) then -- If node is name in call it is not an actual @@ -10634,7 +10729,7 @@ package body Sem_Util is ------------------------------------- function Get_Actual_Subtype_If_Available (N : Node_Id) return Entity_Id is - Typ : constant Entity_Id := Etype (N); + Typ : constant Entity_Id := Etype (N); begin -- If what we have is an identifier that references a subprogram @@ -10878,7 +10973,12 @@ package body Sem_Util is ---------------------- function Get_Fullest_View - (E : Entity_Id; Include_PAT : Boolean := True) return Entity_Id is + (E : Entity_Id; + Include_PAT : Boolean := True; + Recurse : Boolean := True) return Entity_Id + is + New_E : Entity_Id := Empty; + begin -- Prevent cascaded errors @@ -10886,47 +10986,45 @@ package body Sem_Util is return E; end if; - -- Strictly speaking, the recursion below isn't necessary, but - -- it's both simplest and safest. + -- Look at each kind of entity to see where we may need to go deeper. case Ekind (E) is when Incomplete_Kind => if From_Limited_With (E) then - return Get_Fullest_View (Non_Limited_View (E), Include_PAT); + New_E := Non_Limited_View (E); elsif Present (Full_View (E)) then - return Get_Fullest_View (Full_View (E), Include_PAT); + New_E := Full_View (E); elsif Ekind (E) = E_Incomplete_Subtype then - return Get_Fullest_View (Etype (E)); + New_E := Etype (E); end if; when Private_Kind => if Present (Underlying_Full_View (E)) then - return - Get_Fullest_View (Underlying_Full_View (E), Include_PAT); + New_E := Underlying_Full_View (E); elsif Present (Full_View (E)) then - return Get_Fullest_View (Full_View (E), Include_PAT); + New_E := Full_View (E); elsif Etype (E) /= E then - return Get_Fullest_View (Etype (E), Include_PAT); + New_E := Etype (E); end if; when Array_Kind => if Include_PAT and then Present (Packed_Array_Impl_Type (E)) then - return Get_Fullest_View (Packed_Array_Impl_Type (E)); + New_E := Packed_Array_Impl_Type (E); end if; when E_Record_Subtype => if Present (Cloned_Subtype (E)) then - return Get_Fullest_View (Cloned_Subtype (E), Include_PAT); + New_E := Cloned_Subtype (E); end if; when E_Class_Wide_Type => - return Get_Fullest_View (Root_Type (E), Include_PAT); + New_E := Root_Type (E); when E_Class_Wide_Subtype => if Present (Equivalent_Type (E)) then - return Get_Fullest_View (Equivalent_Type (E), Include_PAT); + New_E := Equivalent_Type (E); elsif Present (Cloned_Subtype (E)) then - return Get_Fullest_View (Cloned_Subtype (E), Include_PAT); + New_E := Cloned_Subtype (E); end if; when E_Protected_Subtype @@ -10935,25 +11033,29 @@ package body Sem_Util is | E_Task_Type => if Present (Corresponding_Record_Type (E)) then - return Get_Fullest_View (Corresponding_Record_Type (E), - Include_PAT); + New_E := Corresponding_Record_Type (E); end if; when E_Access_Protected_Subprogram_Type | E_Anonymous_Access_Protected_Subprogram_Type => if Present (Equivalent_Type (E)) then - return Get_Fullest_View (Equivalent_Type (E), Include_PAT); + New_E := Equivalent_Type (E); end if; when E_Access_Subtype => - return Get_Fullest_View (Base_Type (E), Include_PAT); + New_E := Base_Type (E); when others => null; end case; - return E; + -- If we found a fuller view, either return it or recurse. Otherwise, + -- return our input. + + return (if No (New_E) then E + elsif Recurse then Get_Fullest_View (New_E, Include_PAT, Recurse) + else New_E); end Get_Fullest_View; ------------------------ @@ -12974,18 +13076,15 @@ package body Sem_Util is Node : Node_Id; begin - if Is_Non_Empty_List (L) then - Node := First (L); + Node := First (L); - loop - if Nkind (Node) not in N_Null_Statement | N_Call_Marker then - return True; - end if; + while Present (Node) loop + if Nkind (Node) not in N_Null_Statement | N_Call_Marker then + return True; + end if; - Next (Node); - exit when Node = Empty; - end loop; - end if; + Next (Node); + end loop; return False; end Has_Non_Null_Statements; @@ -13044,28 +13143,26 @@ package body Sem_Util is Node : Node_Id; begin - if Is_Non_Empty_List (L) then - Node := First (L); + Node := First (L); - loop - case Nkind (Node) is - when N_Null_Statement | N_Call_Marker | N_Raise_xxx_Error => - null; - when N_Object_Declaration => - if Present (Expression (Node)) - and then not Side_Effect_Free (Expression (Node)) - then - return False; - end if; + while Present (Node) loop + case Nkind (Node) is + when N_Null_Statement | N_Call_Marker | N_Raise_xxx_Error => + null; - when others => + when N_Object_Declaration => + if Present (Expression (Node)) + and then not Side_Effect_Free (Expression (Node)) + then return False; - end case; + end if; - Next (Node); - exit when Node = Empty; - end loop; - end if; + when others => + return False; + end case; + + Next (Node); + end loop; return True; end Side_Effect_Free_Statements; @@ -16189,7 +16286,7 @@ package body Sem_Util is end if; -- The packages may come from the same package chain or from entirely - -- different hierarcies. To determine this, climb the scope stack until + -- different hierarchies. To determine this, climb the scope stack until -- a common root is found. -- (root) (root 1) (root 2) @@ -16709,7 +16806,18 @@ package body Sem_Util is | N_Private_Type_Declaration | N_Subtype_Declaration and then Comes_From_Source (P) - and then Defining_Entity (P) = Typ + + -- If the type has a previous incomplete declaration, the + -- reference in the type definition may have the incomplete + -- view. So, here we detect if this incomplete view is a current + -- instance by checking if its full view is the entity of the + -- full declaration begin analyzed. + + and then + (Defining_Entity (P) = Typ + or else + (Ekind (Typ) = E_Incomplete_Type + and then Full_View (Typ) = Defining_Entity (P))) then return True; @@ -18192,60 +18300,124 @@ package body Sem_Util is return Is_Array_Type (Container_Typ); end Is_Iterator_Over_Array; - ------------ - -- Is_LHS -- - ------------ + -------------------------- + -- Known_To_Be_Assigned -- + -------------------------- + + function Known_To_Be_Assigned + (N : Node_Id; + Only_LHS : Boolean := False) return Boolean + is + function Known_Assn (N : Node_Id) return Boolean is + (Known_To_Be_Assigned (N, Only_LHS)); + -- Local function to simplify the passing of parameters for recursive + -- calls. - -- We seem to have a lot of overlapping functions that do similar things - -- (testing for left hand sides or lvalues???). + P : constant Node_Id := Parent (N); + Form : Entity_Id := Empty; + Call : Node_Id := Empty; - function Is_LHS (N : Node_Id) return Is_LHS_Result is - P : constant Node_Id := Parent (N); + -- Start of processing for Known_To_Be_Assigned begin - -- Return True if we are the left hand side of an assignment statement + -- Check for out parameters - if Nkind (P) = N_Assignment_Statement then - if Name (P) = N then - return Yes; - else - return No; - end if; + Find_Actual (N, Form, Call); - -- Case of prefix of indexed or selected component or slice + if Present (Form) then + return Ekind (Form) /= E_In_Parameter and then not Only_LHS; + end if; - elsif Nkind (P) in N_Indexed_Component | N_Selected_Component | N_Slice - and then N = Prefix (P) - then - -- Here we have the case where the parent P is N.Q or N(Q .. R). - -- If P is an LHS, then N is also effectively an LHS, but there - -- is an important exception. If N is of an access type, then - -- what we really have is N.all.Q (or N.all(Q .. R)). In either - -- case this makes N.all a left hand side but not N itself. + -- Otherwise look at the parent - -- If we don't know the type yet, this is the case where we return - -- Unknown, since the answer depends on the type which is unknown. + case Nkind (P) is - if No (Etype (N)) then - return Unknown; + -- Test left side of assignment - -- We have an Etype set, so we can check it + when N_Assignment_Statement => + return N = Name (P); - elsif Is_Access_Type (Etype (N)) then - return No; + -- Test prefix of component or attribute. Note that the prefix of an + -- explicit or implicit dereference cannot be an l-value. In the case + -- of a 'Read attribute, the reference can be an actual in the + -- argument list of the attribute. - -- OK, not access type case, so just test whole expression + when N_Attribute_Reference => + return + not Only_LHS and then + ((N = Prefix (P) + and then Name_Implies_Lvalue_Prefix (Attribute_Name (P))) + or else + Attribute_Name (P) = Name_Read); - else - return Is_LHS (P); - end if; + -- For an expanded name, the name is an lvalue if the expanded name + -- is an lvalue, but the prefix is never an lvalue, since it is just + -- the scope where the name is found. - -- All other cases are not left hand sides + when N_Expanded_Name => + if N = Prefix (P) then + return Known_Assn (P); + else + return False; + end if; - else - return No; - end if; - end Is_LHS; + -- For a selected component A.B, A is certainly an lvalue if A.B is. + -- B is a little interesting, if we have A.B := 3, there is some + -- discussion as to whether B is an lvalue or not, we choose to say + -- it is. Note however that A is not an lvalue if it is of an access + -- type since this is an implicit dereference. + + when N_Selected_Component => + if N = Prefix (P) + and then Present (Etype (N)) + and then Is_Access_Type (Etype (N)) + then + return False; + else + return Known_Assn (P); + end if; + + -- For an indexed component or slice, the index or slice bounds is + -- never an lvalue. The prefix is an lvalue if the indexed component + -- or slice is an lvalue, except if it is an access type, where we + -- have an implicit dereference. + + when N_Indexed_Component | N_Slice => + if N /= Prefix (P) + or else (Present (Etype (N)) and then Is_Access_Type (Etype (N))) + then + return False; + else + return Known_Assn (P); + end if; + + -- Prefix of a reference is an lvalue if the reference is an lvalue + + when N_Reference => + return Known_Assn (P); + + -- Prefix of explicit dereference is never an lvalue + + when N_Explicit_Dereference => + return False; + + -- Test for appearing in a conversion that itself appears in an + -- lvalue context, since this should be an lvalue. + + when N_Type_Conversion => + return Known_Assn (P); + + -- Test for appearance in object renaming declaration + + when N_Object_Renaming_Declaration => + return not Only_LHS; + + -- All other references are definitely not lvalues + + when others => + return False; + end case; + end Known_To_Be_Assigned; ----------------------------- -- Is_Library_Level_Entity -- @@ -21779,7 +21951,7 @@ package body Sem_Util is ------------------------------------ function Prefix_Has_Volatile_Components (P : Node_Id) return Boolean is - Typ : constant Entity_Id := Etype (P); + Typ : constant Entity_Id := Etype (P); begin if Is_Access_Type (Typ) then @@ -22059,6 +22231,13 @@ package body Sem_Util is Get_Current_Value_Condition (N, Op, Val); + -- If Get_Current_Value_Condition were to return Val = N, then the + -- recursion below could be infinite. + + if Val = N then + raise Program_Error; + end if; + if Known_Null (Val) then if Op = N_Op_Eq then return True; @@ -22082,121 +22261,6 @@ package body Sem_Util is return False; end Known_Null; - -------------------------- - -- Known_To_Be_Assigned -- - -------------------------- - - function Known_To_Be_Assigned (N : Node_Id) return Boolean is - P : constant Node_Id := Parent (N); - - begin - case Nkind (P) is - - -- Test left side of assignment - - when N_Assignment_Statement => - return N = Name (P); - - -- Function call arguments are never lvalues - - when N_Function_Call => - return False; - - -- Positional parameter for procedure or accept call - - when N_Accept_Statement - | N_Procedure_Call_Statement - => - declare - Proc : Entity_Id; - Form : Entity_Id; - Act : Node_Id; - - begin - Proc := Get_Subprogram_Entity (P); - - if No (Proc) then - return False; - end if; - - -- If we are not a list member, something is strange, so - -- be conservative and return False. - - if not Is_List_Member (N) then - return False; - end if; - - -- We are going to find the right formal by stepping forward - -- through the formals, as we step backwards in the actuals. - - Form := First_Formal (Proc); - Act := N; - loop - -- If no formal, something is weird, so be conservative - -- and return False. - - if No (Form) then - return False; - end if; - - Prev (Act); - exit when No (Act); - Next_Formal (Form); - end loop; - - return Ekind (Form) /= E_In_Parameter; - end; - - -- Named parameter for procedure or accept call - - when N_Parameter_Association => - declare - Proc : Entity_Id; - Form : Entity_Id; - - begin - Proc := Get_Subprogram_Entity (Parent (P)); - - if No (Proc) then - return False; - end if; - - -- Loop through formals to find the one that matches - - Form := First_Formal (Proc); - loop - -- If no matching formal, that's peculiar, some kind of - -- previous error, so return False to be conservative. - -- Actually this also happens in legal code in the case - -- where P is a parameter association for an Extra_Formal??? - - if No (Form) then - return False; - end if; - - -- Else test for match - - if Chars (Form) = Chars (Selector_Name (P)) then - return Ekind (Form) /= E_In_Parameter; - end if; - - Next_Formal (Form); - end loop; - end; - - -- Test for appearing in a conversion that itself appears - -- in an lvalue context, since this should be an lvalue. - - when N_Type_Conversion => - return Known_To_Be_Assigned (P); - - -- All other references are definitely not known to be modifications - - when others => - return False; - end case; - end Known_To_Be_Assigned; - --------------------------- -- Last_Source_Statement -- --------------------------- @@ -22682,195 +22746,6 @@ package body Sem_Util is return True; end Matching_Static_Array_Bounds; - ------------------- - -- May_Be_Lvalue -- - ------------------- - - function May_Be_Lvalue (N : Node_Id) return Boolean is - P : constant Node_Id := Parent (N); - - begin - case Nkind (P) is - - -- Test left side of assignment - - when N_Assignment_Statement => - return N = Name (P); - - -- Test prefix of component or attribute. Note that the prefix of an - -- explicit or implicit dereference cannot be an l-value. In the case - -- of a 'Read attribute, the reference can be an actual in the - -- argument list of the attribute. - - when N_Attribute_Reference => - return (N = Prefix (P) - and then Name_Implies_Lvalue_Prefix (Attribute_Name (P))) - or else - Attribute_Name (P) = Name_Read; - - -- For an expanded name, the name is an lvalue if the expanded name - -- is an lvalue, but the prefix is never an lvalue, since it is just - -- the scope where the name is found. - - when N_Expanded_Name => - if N = Prefix (P) then - return May_Be_Lvalue (P); - else - return False; - end if; - - -- For a selected component A.B, A is certainly an lvalue if A.B is. - -- B is a little interesting, if we have A.B := 3, there is some - -- discussion as to whether B is an lvalue or not, we choose to say - -- it is. Note however that A is not an lvalue if it is of an access - -- type since this is an implicit dereference. - - when N_Selected_Component => - if N = Prefix (P) - and then Present (Etype (N)) - and then Is_Access_Type (Etype (N)) - then - return False; - else - return May_Be_Lvalue (P); - end if; - - -- For an indexed component or slice, the index or slice bounds is - -- never an lvalue. The prefix is an lvalue if the indexed component - -- or slice is an lvalue, except if it is an access type, where we - -- have an implicit dereference. - - when N_Indexed_Component - | N_Slice - => - if N /= Prefix (P) - or else (Present (Etype (N)) and then Is_Access_Type (Etype (N))) - then - return False; - else - return May_Be_Lvalue (P); - end if; - - -- Prefix of a reference is an lvalue if the reference is an lvalue - - when N_Reference => - return May_Be_Lvalue (P); - - -- Prefix of explicit dereference is never an lvalue - - when N_Explicit_Dereference => - return False; - - -- Positional parameter for subprogram, entry, or accept call. - -- In older versions of Ada function call arguments are never - -- lvalues. In Ada 2012 functions can have in-out parameters. - - when N_Accept_Statement - | N_Entry_Call_Statement - | N_Subprogram_Call - => - if Nkind (P) = N_Function_Call and then Ada_Version < Ada_2012 then - return False; - end if; - - -- The following mechanism is clumsy and fragile. A single flag - -- set in Resolve_Actuals would be preferable ??? - - declare - Proc : Entity_Id; - Form : Entity_Id; - Act : Node_Id; - - begin - Proc := Get_Subprogram_Entity (P); - - if No (Proc) then - return True; - end if; - - -- If we are not a list member, something is strange, so be - -- conservative and return True. - - if not Is_List_Member (N) then - return True; - end if; - - -- We are going to find the right formal by stepping forward - -- through the formals, as we step backwards in the actuals. - - Form := First_Formal (Proc); - Act := N; - loop - -- If no formal, something is weird, so be conservative and - -- return True. - - if No (Form) then - return True; - end if; - - Prev (Act); - exit when No (Act); - Next_Formal (Form); - end loop; - - return Ekind (Form) /= E_In_Parameter; - end; - - -- Named parameter for procedure or accept call - - when N_Parameter_Association => - declare - Proc : Entity_Id; - Form : Entity_Id; - - begin - Proc := Get_Subprogram_Entity (Parent (P)); - - if No (Proc) then - return True; - end if; - - -- Loop through formals to find the one that matches - - Form := First_Formal (Proc); - loop - -- If no matching formal, that's peculiar, some kind of - -- previous error, so return True to be conservative. - -- Actually happens with legal code for an unresolved call - -- where we may get the wrong homonym??? - - if No (Form) then - return True; - end if; - - -- Else test for match - - if Chars (Form) = Chars (Selector_Name (P)) then - return Ekind (Form) /= E_In_Parameter; - end if; - - Next_Formal (Form); - end loop; - end; - - -- Test for appearing in a conversion that itself appears in an - -- lvalue context, since this should be an lvalue. - - when N_Type_Conversion => - return May_Be_Lvalue (P); - - -- Test for appearance in object renaming declaration - - when N_Object_Renaming_Declaration => - return True; - - -- All other references are definitely not lvalues - - when others => - return False; - end case; - end May_Be_Lvalue; - ----------------- -- Might_Raise -- ----------------- @@ -23560,8 +23435,7 @@ package body Sem_Util is Elmt := First_Elmt (Decls); while Present (Elmt) loop Decl := Node (Elmt); - New_E := Make_Defining_Identifier (Sloc (Decl), - New_Internal_Name ('P')); + New_E := Make_Temporary (Sloc (Decl), 'P'); if Nkind (Decl) = N_Expression_Function then Decl := Specification (Decl); @@ -25143,7 +25017,7 @@ package body Sem_Util is -- * Semantic fields of nodes such as First_Real_Statement must be -- updated to reference the proper replicated nodes. - -- Finally, quantified expressions contain an implicit delaration for + -- Finally, quantified expressions contain an implicit declaration for -- the bound variable. Given that quantified expressions appearing -- in contracts are copied to create pragmas and eventually checking -- procedures, a new bound variable must be created for each copy, to @@ -28968,7 +28842,7 @@ package body Sem_Util is Source_Text (Get_Source_File_Index (Loc)); Src_Ptr : Source_Ptr := Loc; - C : Character := Sbuffer (Src_Ptr); + C : Character := Sbuffer (Src_Ptr); -- Current source program character function Belongs_To_Numeric_Literal (C : Character) return Boolean; @@ -28981,9 +28855,7 @@ package body Sem_Util is function Belongs_To_Numeric_Literal (C : Character) return Boolean is begin case C is - when '0' .. '9' - | '_' | '.' | 'e' | '#' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' - => + when '0' .. '9' | '_' | '.' | 'e' | '#' | 'A' .. 'F' => return True; -- Make sure '+' or '-' is part of an exponent @@ -28992,7 +28864,7 @@ package body Sem_Util is declare Prev_C : constant Character := Sbuffer (Src_Ptr - 1); begin - return Prev_C = 'e' or else Prev_C = 'E'; + return Prev_C in 'e' | 'E'; end; -- Other characters cannot belong to a numeric literal diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index b2bd9d5..695158a 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -448,6 +448,10 @@ package Sem_Util is -- Verify that the profile of nonvolatile function Func_Id does not contain -- effectively volatile parameters or return type for reading. + function Check_Parents (N : Node_Id; List : Elist_Id) return Boolean; + -- Return True if all the occurrences of subtree N referencing entities in + -- the given List have the right value in their Parent field. + procedure Check_Part_Of_Reference (Var_Id : Entity_Id; Ref : Node_Id); -- Verify the legality of reference Ref to variable Var_Id when the -- variable is a constituent of a single protected/task type. @@ -623,10 +627,13 @@ package Sem_Util is -- aspect specifications. If From has no aspects, the routine has no -- effect. - function Copy_Subprogram_Spec (Spec : Node_Id) return Node_Id; + function Copy_Subprogram_Spec + (Spec : Node_Id; + New_Sloc : Source_Ptr := No_Location) return Node_Id; -- Replicate a function or a procedure specification denoted by Spec. The -- resulting tree is an exact duplicate of the original tree. New entities - -- are created for the unit name and the formal parameters. + -- are created for the unit name and the formal parameters. For definition + -- of New_Sloc, see the comment for New_Copy_Tree. function Corresponding_Generic_Type (T : Entity_Id) return Entity_Id; -- If a type is a generic actual type, return the corresponding formal in @@ -1351,10 +1358,13 @@ package Sem_Util is -- CRec_Typ - the corresponding record type of the full views function Get_Fullest_View - (E : Entity_Id; Include_PAT : Boolean := True) return Entity_Id; + (E : Entity_Id; + Include_PAT : Boolean := True; + Recurse : Boolean := True) return Entity_Id; -- Get the fullest possible view of E, looking through private, limited, -- packed array and other implementation types. If Include_PAT is False, - -- don't look inside packed array types. + -- don't look inside packed array types. If Recurse is False, just + -- go down one level (so it's no longer the "fullest" view). function Has_Access_Values (T : Entity_Id) return Boolean; -- Returns true if the underlying type of T is an access type, or has a @@ -2153,16 +2163,6 @@ package Sem_Util is -- an array, either inside a loop of the form 'for X of A' or a quantified -- expression of the form 'for all/some X of A' where A is of array type. - type Is_LHS_Result is (Yes, No, Unknown); - function Is_LHS (N : Node_Id) return Is_LHS_Result; - -- Returns Yes if N is definitely used as Name in an assignment statement. - -- Returns No if N is definitely NOT used as a Name in an assignment - -- statement. Returns Unknown if we can't tell at this stage (happens in - -- the case where we don't know the type of N yet, and we have something - -- like N.A := 3, where this counts as N being used on the left side of - -- an assignment only if N is not an access type. If it is an access type - -- then it is N.all.A that is assigned, not N. - function Is_Library_Level_Entity (E : Entity_Id) return Boolean; -- A library-level declaration is one that is accessible from Standard, -- i.e. a library unit or an entity declared in a library package. @@ -2583,12 +2583,13 @@ package Sem_Util is -- and returns True if so. Returns False otherwise. It is an error to call -- this function if N is not of an access type. - function Known_To_Be_Assigned (N : Node_Id) return Boolean; + function Known_To_Be_Assigned + (N : Node_Id; + Only_LHS : Boolean := False) return Boolean; -- The node N is an entity reference. This function determines whether the -- reference is for sure an assignment of the entity, returning True if - -- so. This differs from May_Be_Lvalue in that it defaults in the other - -- direction. Cases which may possibly be assignments but are not known to - -- be may return True from May_Be_Lvalue, but False from this function. + -- so. Only_LHS will modify this behavior such that actuals for out or + -- in out parameters will not be considered assigned. function Last_Source_Statement (HSS : Node_Id) return Node_Id; -- HSS is a handled statement sequence. This function returns the last @@ -2612,7 +2613,7 @@ package Sem_Util is -- follows: -- -- Checks - Save the status of Elaboration_Check - -- Level - Save the declaration level of N_Id (if appicable) + -- Level - Save the declaration level of N_Id (if applicable) -- Modes - Save the Ghost and SPARK modes in effect (if applicable) -- Warnings - Save the status of Elab_Warnings @@ -2627,17 +2628,6 @@ package Sem_Util is -- same number of dimensions, and the same static bounds for each index -- position. - function May_Be_Lvalue (N : Node_Id) return Boolean; - -- Determines if N could be an lvalue (e.g. an assignment left hand side). - -- An lvalue is defined as any expression which appears in a context where - -- a name is required by the syntax, and the identity, rather than merely - -- the value of the node is needed (for example, the prefix of an Access - -- attribute is in this category). Note that, as implied by the name, this - -- test is conservative. If it cannot be sure that N is NOT an lvalue, then - -- it returns True. It tries hard to get the answer right, but it is hard - -- to guarantee this in all cases. Note that it is more possible to give - -- correct answer if the tree is fully analyzed. - function Might_Raise (N : Node_Id) return Boolean; -- True if evaluation of N might raise an exception. This is conservative; -- if we're not sure, we return True. If N is a subprogram body, this is diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index 951b9f8..e02f6e0 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -513,7 +513,7 @@ package body Sem_Warn is -- If this is an lvalue, then definitely abandon, since -- this could be a direct modification of the variable. - if May_Be_Lvalue (N) then + if Known_To_Be_Assigned (N) then return Abandon; end if; @@ -559,7 +559,7 @@ package body Sem_Warn is and then Present (Renamed_Object (Entity (N))) and then Is_Entity_Name (Renamed_Object (Entity (N))) and then Entity (Renamed_Object (Entity (N))) = Var - and then May_Be_Lvalue (N) + and then Known_To_Be_Assigned (N) then return Abandon; @@ -1700,7 +1700,11 @@ package body Sem_Warn is and then ((Ekind (E1) /= E_Variable and then Ekind (E1) /= E_Constant and then Ekind (E1) /= E_Component) - or else not Is_Task_Type (E1T)) + + -- Check that E1T is not a task or a composite type + -- with a task component. + + or else not Has_Task (E1T)) -- For subunits, only place warnings on the main unit itself, -- since parent units are not completely compiled. @@ -4596,10 +4600,11 @@ package body Sem_Warn is if Nkind (Parent (LA)) in N_Parameter_Association | N_Procedure_Call_Statement then - Error_Msg_NE - ("?m?& modified by call, but value might not be " - & "referenced", LA, Ent); - + if Warn_On_All_Unread_Out_Parameters then + Error_Msg_NE + ("?m?& modified by call, but value might not " + & "be referenced", LA, Ent); + end if; else Error_Msg_NE -- CODEFIX ("?m?possibly useless assignment to&, value " diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads index 50a4df2..bcf74ab 100644 --- a/gcc/ada/sem_warn.ads +++ b/gcc/ada/sem_warn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/set_targ.adb b/gcc/ada/set_targ.adb index 5af7f1a..dcb2fd0 100644 --- a/gcc/ada/set_targ.adb +++ b/gcc/ada/set_targ.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/set_targ.ads b/gcc/ada/set_targ.ads index 4afd7b0..1e57fc9 100644 --- a/gcc/ada/set_targ.ads +++ b/gcc/ada/set_targ.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2013-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2013-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sfn_scan.adb b/gcc/ada/sfn_scan.adb index 61e8971..b6ab92f 100644 --- a/gcc/ada/sfn_scan.adb +++ b/gcc/ada/sfn_scan.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sfn_scan.ads b/gcc/ada/sfn_scan.ads index b430c49..3c0dd9d 100644 --- a/gcc/ada/sfn_scan.ads +++ b/gcc/ada/sfn_scan.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2000-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2000-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sigtramp-armdroid.c b/gcc/ada/sigtramp-armdroid.c index 6caff8c..cd15b32 100644 --- a/gcc/ada/sigtramp-armdroid.c +++ b/gcc/ada/sigtramp-armdroid.c @@ -6,7 +6,7 @@ * * * Asm Implementation File * * * - * Copyright (C) 2015-2021, Free Software Foundation, Inc. * + * Copyright (C) 2015-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sigtramp-ios.c b/gcc/ada/sigtramp-ios.c index 8403a18..ec829da 100644 --- a/gcc/ada/sigtramp-ios.c +++ b/gcc/ada/sigtramp-ios.c @@ -6,7 +6,7 @@ * * * Asm Implementation File * * * - * Copyright (C) 2015-2021, Free Software Foundation, Inc. * + * Copyright (C) 2015-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sigtramp-qnx.c b/gcc/ada/sigtramp-qnx.c index e638beb..f44b971 100644 --- a/gcc/ada/sigtramp-qnx.c +++ b/gcc/ada/sigtramp-qnx.c @@ -6,7 +6,7 @@ * * * Asm Implementation File * * * - * Copyright (C) 2017-2021, Free Software Foundation, Inc. * + * Copyright (C) 2017-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sigtramp-vxworks-target.h b/gcc/ada/sigtramp-vxworks-target.h index 8c43451..153426e 100644 --- a/gcc/ada/sigtramp-vxworks-target.h +++ b/gcc/ada/sigtramp-vxworks-target.h @@ -6,7 +6,7 @@ * * * Asm Implementation Include File * * * - * Copyright (C) 2011-2021, Free Software Foundation, Inc. * + * Copyright (C) 2011-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sigtramp-vxworks.c b/gcc/ada/sigtramp-vxworks.c index 2455f6e..138e3d0 100644 --- a/gcc/ada/sigtramp-vxworks.c +++ b/gcc/ada/sigtramp-vxworks.c @@ -6,7 +6,7 @@ * * * Asm Implementation File * * * - * Copyright (C) 2011-2021, Free Software Foundation, Inc. * + * Copyright (C) 2011-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sigtramp.h b/gcc/ada/sigtramp.h index 6527e5e..1bd6878 100644 --- a/gcc/ada/sigtramp.h +++ b/gcc/ada/sigtramp.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 2011-2021, Free Software Foundation, Inc. * + * Copyright (C) 2011-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/sinfo-cn.adb b/gcc/ada/sinfo-cn.adb index c676d47..73ecbb1 100644 --- a/gcc/ada/sinfo-cn.adb +++ b/gcc/ada/sinfo-cn.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinfo-cn.ads b/gcc/ada/sinfo-cn.ads index bf3231b..f4acd29 100644 --- a/gcc/ada/sinfo-cn.ads +++ b/gcc/ada/sinfo-cn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinfo-utils.adb b/gcc/ada/sinfo-utils.adb index ad8606f..121a039 100644 --- a/gcc/ada/sinfo-utils.adb +++ b/gcc/ada/sinfo-utils.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinfo-utils.ads b/gcc/ada/sinfo-utils.ads index e3bb8d4..78b2d0e 100644 --- a/gcc/ada/sinfo-utils.ads +++ b/gcc/ada/sinfo-utils.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb index 8c5c32a..72853f5 100644 --- a/gcc/ada/sinfo.adb +++ b/gcc/ada/sinfo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index b99edf7..a5f348f 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -200,7 +200,7 @@ package Sinfo is -- The exceptions to this rule occur with {DEFINING_IDENTIFIERS} in all -- contexts, which is handled as described in the previous section, and - -- with {,library_unit_NAME} in the N_With_Clause mode, which is handled + -- with {,library_unit_NAME} in the N_With_Clause node, which is handled -- using the First_Name and Last_Name flags, as further detailed in the -- description of the N_With_Clause node. @@ -1842,7 +1842,7 @@ package Sinfo is -- Is_Read -- Present in variable reference markers. Set when the original variable - -- reference constitues a read of the variable. + -- reference constitutes a read of the variable. -- Is_Source_Call -- Present in call marker nodes. Set when the related call came from @@ -1902,7 +1902,7 @@ package Sinfo is -- Is_Write -- Present in variable reference markers. Set when the original variable - -- reference constitues a write of the variable. + -- reference constitutes a write of the variable. -- Itype -- Used in N_Itype_Reference node to reference an itype for which it is diff --git a/gcc/ada/sinput-c.adb b/gcc/ada/sinput-c.adb index cbb80b0..50a9947 100644 --- a/gcc/ada/sinput-c.adb +++ b/gcc/ada/sinput-c.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinput-c.ads b/gcc/ada/sinput-c.ads index f2d9f61..fa5d305 100644 --- a/gcc/ada/sinput-c.ads +++ b/gcc/ada/sinput-c.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinput-d.adb b/gcc/ada/sinput-d.adb index 2722913..deee179 100644 --- a/gcc/ada/sinput-d.adb +++ b/gcc/ada/sinput-d.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2002-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2002-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinput-d.ads b/gcc/ada/sinput-d.ads index e1eb6ab..55286d3 100644 --- a/gcc/ada/sinput-d.ads +++ b/gcc/ada/sinput-d.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinput-l.adb b/gcc/ada/sinput-l.adb index 2d5efb0..8086a51 100644 --- a/gcc/ada/sinput-l.adb +++ b/gcc/ada/sinput-l.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -420,7 +420,7 @@ package body Sinput.L is if Null_Source_Buffer_Ptr (Src) then Source_File.Decrement_Last; - if FD = Null_FD then + if FD = Osint.Null_FD then return No_Source_File; else return No_Access_To_Source_File; diff --git a/gcc/ada/sinput-l.ads b/gcc/ada/sinput-l.ads index f05caf5..dac32c1 100644 --- a/gcc/ada/sinput-l.ads +++ b/gcc/ada/sinput-l.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sinput.adb b/gcc/ada/sinput.adb index e62bf45..4df735c 100644 --- a/gcc/ada/sinput.adb +++ b/gcc/ada/sinput.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -329,7 +329,7 @@ package body Sinput is begin for X in 1 .. Source_File.Last loop declare - S : Source_File_Record renames Source_File.Table (X); + S : Source_File_Record renames Source_File.Table (X); begin if S.Instance = No_Instance_Id then Free_Source_Buffer (S.Source_Text); diff --git a/gcc/ada/sinput.ads b/gcc/ada/sinput.ads index 881e775..2890563 100644 --- a/gcc/ada/sinput.ads +++ b/gcc/ada/sinput.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index cf4327a..fa7ac8a 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -181,12 +181,9 @@ package Snames is Name_uController : constant Name_Id := N + $; Name_uCPU : constant Name_Id := N + $; Name_uDispatching_Domain : constant Name_Id := N + $; - Name_uEntry_Bodies : constant Name_Id := N + $; - Name_uExpunge : constant Name_Id := N + $; Name_uFinalizer : constant Name_Id := N + $; Name_uFinalizer_Old : constant Name_Id := N + $; Name_uFinalization_Controller : constant Name_Id := N + $; - Name_uIdepth : constant Name_Id := N + $; Name_uInit : constant Name_Id := N + $; Name_uInit_Level : constant Name_Id := N + $; Name_uInvariant : constant Name_Id := N + $; @@ -197,22 +194,18 @@ package Snames is Name_uPostcond_Enabled : constant Name_Id := N + $; Name_uPre : constant Name_Id := N + $; Name_uPriority : constant Name_Id := N + $; - Name_uProcess_ATSD : constant Name_Id := N + $; Name_uRelative_Deadline : constant Name_Id := N + $; Name_uResult : constant Name_Id := N + $; Name_uResult_Object_For_Postcond : constant Name_Id := N + $; Name_uReturn_Success_For_Postcond : constant Name_Id := N + $; Name_uSecondary_Stack : constant Name_Id := N + $; Name_uSecondary_Stack_Size : constant Name_Id := N + $; - Name_uService : constant Name_Id := N + $; Name_uSize : constant Name_Id := N + $; Name_uStack : constant Name_Id := N + $; - Name_uTags : constant Name_Id := N + $; Name_uTask : constant Name_Id := N + $; Name_uTask_Id : constant Name_Id := N + $; Name_uTask_Info : constant Name_Id := N + $; Name_uTask_Name : constant Name_Id := N + $; - Name_uTrace_Sp : constant Name_Id := N + $; Name_uType_Invariant : constant Name_Id := N + $; Name_uVariants : constant Name_Id := N + $; @@ -339,7 +332,6 @@ package Snames is Name_Origin : constant Name_Id := N + $; Name_Params : constant Name_Id := N + $; Name_Partition : constant Name_Id := N + $; - Name_Partition_Interface : constant Name_Id := N + $; Name_Ras : constant Name_Id := N + $; Name_uCall : constant Name_Id := N + $; Name_RCI_Name : constant Name_Id := N + $; @@ -349,7 +341,6 @@ package Snames is Name_Operation : constant Name_Id := N + $; Name_Argument : constant Name_Id := N + $; Name_Arg_Modes : constant Name_Id := N + $; - Name_Handler : constant Name_Id := N + $; Name_Target : constant Name_Id := N + $; Name_Req : constant Name_Id := N + $; Name_Obj_TypeCode : constant Name_Id := N + $; @@ -425,8 +416,6 @@ package Snames is Name_Check_Policy : constant Name_Id := N + $; -- GNAT Name_Compile_Time_Error : constant Name_Id := N + $; -- GNAT Name_Compile_Time_Warning : constant Name_Id := N + $; -- GNAT - Name_Compiler_Unit : constant Name_Id := N + $; -- GNAT - Name_Compiler_Unit_Warning : constant Name_Id := N + $; -- GNAT Name_Component_Alignment : constant Name_Id := N + $; -- GNAT Name_Convention_Identifier : constant Name_Id := N + $; -- GNAT Name_Debug_Policy : constant Name_Id := N + $; -- GNAT @@ -797,14 +786,12 @@ package Snames is Name_By_Entry : constant Name_Id := N + $; Name_By_Protected_Procedure : constant Name_Id := N + $; Name_Casing : constant Name_Id := N + $; - Name_Check_All : constant Name_Id := N + $; Name_Code : constant Name_Id := N + $; Name_Component : constant Name_Id := N + $; Name_Component_Size_4 : constant Name_Id := N + $; Name_Copy : constant Name_Id := N + $; Name_Copy_From : constant Name_Id := N + $; Name_Copy_To : constant Name_Id := N + $; - Name_D_Float : constant Name_Id := N + $; Name_Decreases : constant Name_Id := N + $; Name_Disable : constant Name_Id := N + $; Name_Dot_Replacement : constant Name_Id := N + $; @@ -812,12 +799,8 @@ package Snames is Name_Eliminated : constant Name_Id := N + $; Name_Ensures : constant Name_Id := N + $; Name_Entity : constant Name_Id := N + $; - Name_Entry_Count : constant Name_Id := N + $; Name_External_Name : constant Name_Id := N + $; - Name_First_Optional_Parameter : constant Name_Id := N + $; - Name_Force : constant Name_Id := N + $; Name_Form : constant Name_Id := N + $; - Name_G_Float : constant Name_Id := N + $; Name_Gcc : constant Name_Id := N + $; Name_General : constant Name_Id := N + $; Name_Gnat : constant Name_Id := N + $; @@ -826,7 +809,6 @@ package Snames is Name_Gnatprove : constant Name_Id := N + $; Name_GPL : constant Name_Id := N + $; Name_High_Order_First : constant Name_Id := N + $; - Name_IEEE_Float : constant Name_Id := N + $; Name_Ignore : constant Name_Id := N + $; Name_In_Out : constant Name_Id := N + $; Name_Increases : constant Name_Id := N + $; @@ -845,13 +827,9 @@ package Snames is Name_Mode : constant Name_Id := N + $; Name_Modified_GPL : constant Name_Id := N + $; Name_Name : constant Name_Id := N + $; - Name_NCA : constant Name_Id := N + $; Name_New_Name : constant Name_Id := N + $; Name_No : constant Name_Id := N + $; - Name_No_Access_Parameter_Allocators : constant Name_Id := N + $; - Name_No_Coextensions : constant Name_Id := N + $; Name_No_Dependence : constant Name_Id := N + $; - Name_No_Dynamic_Accessibility_Checks : constant Name_Id := N + $; Name_No_Dynamic_Attachment : constant Name_Id := N + $; Name_No_Dynamic_Interrupts : constant Name_Id := N + $; Name_No_Elaboration_Code : constant Name_Id := N + $; @@ -860,7 +838,6 @@ package Snames is Name_No_Requeue : constant Name_Id := N + $; Name_No_Requeue_Statements : constant Name_Id := N + $; Name_No_Specification_Of_Aspect : constant Name_Id := N + $; - Name_No_Standard_Allocators_After_Elaboration : constant Name_Id := N + $; Name_No_Task_Attributes : constant Name_Id := N + $; Name_No_Task_Attributes_Package : constant Name_Id := N + $; Name_No_Use_Of_Attribute : constant Name_Id := N + $; @@ -868,10 +845,8 @@ package Snames is Name_No_Use_Of_Pragma : constant Name_Id := N + $; Name_No_Unroll : constant Name_Id := N + $; Name_No_Unrecognized_Aspects : constant Name_Id := N + $; - Name_No_Unrecognized_Pragmas : constant Name_Id := N + $; Name_No_Vector : constant Name_Id := N + $; Name_Nominal : constant Name_Id := N + $; - Name_Non_Volatile : constant Name_Id := N + $; Name_None : constant Name_Id := N + $; Name_Null_Address : constant Name_Id := N + $; Name_On : constant Name_Id := N + $; @@ -901,26 +876,19 @@ package Snames is Name_Stack_Size : constant Name_Id := N + $; Name_Strict : constant Name_Id := N + $; Name_Subunit_File_Name : constant Name_Id := N + $; - Name_Suppressed : constant Name_Id := N + $; Name_Suppressible : constant Name_Id := N + $; Name_Synchronous : constant Name_Id := N + $; Name_Task_Stack_Size_Default : constant Name_Id := N + $; Name_Task_Type : constant Name_Id := N + $; Name_Time_Slicing_Enabled : constant Name_Id := N + $; Name_Top_Guard : constant Name_Id := N + $; - Name_UBA : constant Name_Id := N + $; - Name_UBS : constant Name_Id := N + $; - Name_UBSB : constant Name_Id := N + $; Name_Unit_Name : constant Name_Id := N + $; - Name_Unknown : constant Name_Id := N + $; Name_Unrestricted : constant Name_Id := N + $; Name_Unroll : constant Name_Id := N + $; Name_Uppercase : constant Name_Id := N + $; Name_User : constant Name_Id := N + $; Name_Variant : constant Name_Id := N + $; - Name_VAX_Float : constant Name_Id := N + $; Name_Vector : constant Name_Id := N + $; - Name_Vtable_Ptr : constant Name_Id := N + $; Name_Warn : constant Name_Id := N + $; Name_Working_Storage : constant Name_Id := N + $; @@ -1387,10 +1355,6 @@ package Snames is subtype Ada_95_Reserved_Words is Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word; - -- Miscellaneous names used in semantic checking - - Name_Raise_Exception : constant Name_Id := N + $; - -- Additional names used by the Repinfo unit Name_Discriminant : constant Name_Id := N + $; @@ -1407,9 +1371,7 @@ package Snames is Name_Cursor : constant Name_Id := N + $; Name_Element : constant Name_Id := N + $; - Name_Element_Type : constant Name_Id := N + $; Name_Has_Element : constant Name_Id := N + $; - Name_No_Element : constant Name_Id := N + $; Name_Forward_Iterator : constant Name_Id := N + $; Name_Reversible_Iterator : constant Name_Id := N + $; Name_Previous : constant Name_Id := N + $; @@ -1777,8 +1739,6 @@ package Snames is Pragma_Check_Policy, Pragma_Compile_Time_Error, Pragma_Compile_Time_Warning, - Pragma_Compiler_Unit, - Pragma_Compiler_Unit_Warning, Pragma_Component_Alignment, Pragma_Convention_Identifier, Pragma_Debug_Policy, diff --git a/gcc/ada/socket.c b/gcc/ada/socket.c index 5074c8e..720b1d3 100644 --- a/gcc/ada/socket.c +++ b/gcc/ada/socket.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2003-2021, Free Software Foundation, Inc. * + * Copyright (C) 2003-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/spark_xrefs.adb b/gcc/ada/spark_xrefs.adb index 1961106..15ca374 100644 --- a/gcc/ada/spark_xrefs.adb +++ b/gcc/ada/spark_xrefs.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/spark_xrefs.ads b/gcc/ada/spark_xrefs.ads index 86e9fbc..92ceca9 100644 --- a/gcc/ada/spark_xrefs.ads +++ b/gcc/ada/spark_xrefs.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2011-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2011-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb index ba2ab3a..67861ba 100644 --- a/gcc/ada/sprint.adb +++ b/gcc/ada/sprint.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -309,7 +309,7 @@ package body Sprint is procedure Write_Param_Specs (N : Node_Id); -- Output parameter specifications for node N (which is a subprogram, or -- entry or entry family or access-subprogram-definition, all of which - -- have a Parameter_Specificatioons field). + -- have a Parameter_Specifications field). procedure Write_Rewrite_Str (S : String); -- Writes out a string (typically containing <<< or >>>}) for a node @@ -1135,7 +1135,7 @@ package body Sprint is -- Note: the following code for N_Aspect_Specification is not -- normally used, since we deal with aspects as part of a -- declaration, but it is here in case we deliberately try - -- to print an N_Aspect_Speficiation node (e.g. from GDB). + -- to print an N_Aspect_Specification node (e.g. from GDB). when N_Aspect_Specification => Sprint_Node (Identifier (Node)); @@ -4806,7 +4806,7 @@ package body Sprint is -- Set true if we output at least one parameter begin - -- Write out explicit specs from Parameter_Speficiations list + -- Write out explicit specs from Parameter_Specifications list if Specs_Present then Write_Str_With_Col_Check (" ("); diff --git a/gcc/ada/sprint.ads b/gcc/ada/sprint.ads index e3fd582..6e117bd 100644 --- a/gcc/ada/sprint.ads +++ b/gcc/ada/sprint.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/stand.ads b/gcc/ada/stand.ads index f322656..8819b0e 100644 --- a/gcc/ada/stand.ads +++ b/gcc/ada/stand.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -375,9 +375,6 @@ package Stand is -- them the type is still Any_Type, the node has no possible interpretation -- and an error can be emitted (and Any_Type will be propagated upwards). - Any_Access : Entity_Id; - -- Used to resolve the overloaded literal NULL - Any_Array : Entity_Id; -- Used to represent some unknown array type @@ -451,6 +448,9 @@ package Stand is -- universal integer and universal real, it is never used for runtime -- calculations). + Universal_Access : Entity_Id; + -- Entity for universal access type. It is only used for the literal null + Standard_Integer_8 : Entity_Id; Standard_Integer_16 : Entity_Id; Standard_Integer_32 : Entity_Id; diff --git a/gcc/ada/stringt.adb b/gcc/ada/stringt.adb index d97e60e..e96b96f 100644 --- a/gcc/ada/stringt.adb +++ b/gcc/ada/stringt.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/stringt.ads b/gcc/ada/stringt.ads index ff15a0c..be6fcbf 100644 --- a/gcc/ada/stringt.ads +++ b/gcc/ada/stringt.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/stringt.h b/gcc/ada/stringt.h index 701b0aa..ac90370 100644 --- a/gcc/ada/stringt.h +++ b/gcc/ada/stringt.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/strub.adb b/gcc/ada/strub.adb index 8414658..485c263 100644 --- a/gcc/ada/strub.adb +++ b/gcc/ada/strub.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/strub.ads b/gcc/ada/strub.ads index 2753dd0..3a67632 100644 --- a/gcc/ada/strub.ads +++ b/gcc/ada/strub.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2021-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/style.adb b/gcc/ada/style.adb index c2bff83..60bfc93 100644 --- a/gcc/ada/style.adb +++ b/gcc/ada/style.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/style.ads b/gcc/ada/style.ads index 60f542f..814bb2b 100644 --- a/gcc/ada/style.ads +++ b/gcc/ada/style.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/styleg.adb b/gcc/ada/styleg.adb index 188af1a..205bad0 100644 --- a/gcc/ada/styleg.adb +++ b/gcc/ada/styleg.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/styleg.ads b/gcc/ada/styleg.ads index 6930246..116d6ef 100644 --- a/gcc/ada/styleg.ads +++ b/gcc/ada/styleg.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/stylesw.adb b/gcc/ada/stylesw.adb index f4e4d9c..87d6b7c 100644 --- a/gcc/ada/stylesw.adb +++ b/gcc/ada/stylesw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/stylesw.ads b/gcc/ada/stylesw.ads index 1a5f1e9..9fae062 100644 --- a/gcc/ada/stylesw.ads +++ b/gcc/ada/stylesw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch-b.adb b/gcc/ada/switch-b.adb index a735978..780a071 100644 --- a/gcc/ada/switch-b.adb +++ b/gcc/ada/switch-b.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -312,7 +312,7 @@ package body Switch.B is Ptr := Max + 1; - if not Is_Read_Accessible_File (Force_Elab_Order_File.all) then + if not Is_Regular_File (Force_Elab_Order_File.all) then Osint.Fail (Force_Elab_Order_File.all & ": file not found"); end if; diff --git a/gcc/ada/switch-b.ads b/gcc/ada/switch-b.ads index 4acd2fc..7ba7bca 100644 --- a/gcc/ada/switch-b.ads +++ b/gcc/ada/switch-b.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb index 4072738..a34e841 100644 --- a/gcc/ada/switch-c.adb +++ b/gcc/ada/switch-c.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1285,7 +1285,7 @@ package body Switch.C is else declare - OK : Boolean; + OK : Boolean; begin Set_Validity_Check_Options @@ -1408,7 +1408,7 @@ package body Switch.C is Store_Switch := False; declare - OK : Boolean; + OK : Boolean; begin Set_Style_Check_Options diff --git a/gcc/ada/switch-c.ads b/gcc/ada/switch-c.ads index a9d6ef7..7375cc29 100644 --- a/gcc/ada/switch-c.ads +++ b/gcc/ada/switch-c.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch-m.adb b/gcc/ada/switch-m.adb index 99082fe..61049f6 100644 --- a/gcc/ada/switch-m.adb +++ b/gcc/ada/switch-m.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch-m.ads b/gcc/ada/switch-m.ads index 9edc50b..657378e 100644 --- a/gcc/ada/switch-m.ads +++ b/gcc/ada/switch-m.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch.adb b/gcc/ada/switch.adb index d8aecde..b9bbe8e 100644 --- a/gcc/ada/switch.adb +++ b/gcc/ada/switch.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/switch.ads b/gcc/ada/switch.ads index 8ea9c27..b468c7d 100644 --- a/gcc/ada/switch.ads +++ b/gcc/ada/switch.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c index 2c50b36..5e9cf70 100644 --- a/gcc/ada/sysdep.c +++ b/gcc/ada/sysdep.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/table.adb b/gcc/ada/table.adb index 02f8f79..ce558cd 100644 --- a/gcc/ada/table.adb +++ b/gcc/ada/table.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/table.ads b/gcc/ada/table.ads index e934c27..c76d215 100644 --- a/gcc/ada/table.ads +++ b/gcc/ada/table.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/targext.c b/gcc/ada/targext.c index 90174a1..4e81521 100644 --- a/gcc/ada/targext.c +++ b/gcc/ada/targext.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2005-2021, Free Software Foundation, Inc. * + * Copyright (C) 2005-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb index 4390c0e..cbf9944 100644 --- a/gcc/ada/targparm.adb +++ b/gcc/ada/targparm.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -157,15 +157,12 @@ package body Targparm is return; end if; - Name_Buffer (1 .. 10) := "system.ads"; - Name_Len := 10; - - Read_Source_File (Name_Find, 0, Hi, Text, FD); + Read_Source_File (Name_Find ("system.ads"), 0, Hi, Text, FD); if Null_Source_Buffer_Ptr (Text) then Write_Line ("fatal error, run-time library not installed correctly"); - if FD = Null_FD then + if FD = Osint.Null_FD then Write_Line ("cannot locate file system.ads"); else Write_Line ("no read access for file system.ads"); diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads index 302247f..9353d92 100644 --- a/gcc/ada/targparm.ads +++ b/gcc/ada/targparm.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb index bcd77c7..5aa9fbc 100644 --- a/gcc/ada/tbuild.adb +++ b/gcc/ada/tbuild.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/tbuild.ads b/gcc/ada/tbuild.ads index 5199e6d..07e9266 100644 --- a/gcc/ada/tbuild.ads +++ b/gcc/ada/tbuild.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/tempdir.adb b/gcc/ada/tempdir.adb index 0273496..29b0af6 100644 --- a/gcc/ada/tempdir.adb +++ b/gcc/ada/tempdir.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/tempdir.ads b/gcc/ada/tempdir.ads index c1ac5a7..715d4f1 100644 --- a/gcc/ada/tempdir.ads +++ b/gcc/ada/tempdir.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c index a2dd489..32d30a4 100644 --- a/gcc/ada/terminals.c +++ b/gcc/ada/terminals.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2008-2021, AdaCore * + * Copyright (C) 2008-2022, AdaCore * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c index 8fa5608..54e547d 100644 --- a/gcc/ada/tracebak.c +++ b/gcc/ada/tracebak.c @@ -6,7 +6,7 @@ * * * C Implementation File * * * - * Copyright (C) 2000-2021, Free Software Foundation, Inc. * + * Copyright (C) 2000-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb index aa06506..a63c9be 100644 --- a/gcc/ada/treepr.adb +++ b/gcc/ada/treepr.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -23,32 +23,33 @@ -- -- ------------------------------------------------------------------------------ -with Aspects; use Aspects; -with Atree; use Atree; -with Csets; use Csets; -with Debug; use Debug; -with Einfo; use Einfo; -with Einfo.Entities; use Einfo.Entities; -with Einfo.Utils; use Einfo.Utils; -with Elists; use Elists; -with Lib; use Lib; -with Namet; use Namet; -with Nlists; use Nlists; -with Output; use Output; -with Seinfo; use Seinfo; -with Sinfo; use Sinfo; -with Sinfo.Nodes; use Sinfo.Nodes; -with Sinfo.Utils; use Sinfo.Utils; -with Snames; use Snames; -with Sinput; use Sinput; -with Stand; use Stand; -with Stringt; use Stringt; -with SCIL_LL; use SCIL_LL; -with Uintp; use Uintp; -with Urealp; use Urealp; -with Uname; use Uname; +with Aspects; use Aspects; +with Atree; use Atree; +with Debug; use Debug; +with Einfo; use Einfo; +with Einfo.Entities; use Einfo.Entities; +with Einfo.Utils; use Einfo.Utils; +with Elists; use Elists; +with GNAT.Dynamic_HTables; use GNAT.Dynamic_HTables; +with Lib; use Lib; +with Namet; use Namet; +with Nlists; use Nlists; +with Output; use Output; +with Seinfo; use Seinfo; +with Sem_Eval; use Sem_Eval; +with Sinfo; use Sinfo; +with Sinfo.Nodes; use Sinfo.Nodes; +with Sinfo.Utils; use Sinfo.Utils; +with Snames; use Snames; +with Sinput; use Sinput; +with Stand; use Stand; +with Stringt; use Stringt; +with System.Case_Util; use System.Case_Util; +with SCIL_LL; use SCIL_LL; +with Uintp; use Uintp; +with Urealp; use Urealp; +with Uname; use Uname; with Unchecked_Conversion; -with Unchecked_Deallocation; package body Treepr is @@ -80,24 +81,32 @@ package body Treepr is -- Set True to print low-level information useful for debugging Atree and -- the like. - type Hash_Record is record - Serial : Nat; - -- Serial number for hash table entry. A value of zero means that - -- the entry is currently unused. - - Id : Int; - -- If serial number field is non-zero, contains corresponding Id value - end record; - - type Hash_Table_Type is array (Nat range <>) of Hash_Record; - type Access_Hash_Table_Type is access Hash_Table_Type; - Hash_Table : Access_Hash_Table_Type; + function Hash (Key : Int) return GNAT.Bucket_Range_Type; + -- Simple Hash function for Node_Ids, List_Ids and Elist_Ids + + procedure Destroy (Value : in out Nat) is null; + pragma Annotate (CodePeer, False_Positive, "unassigned parameter", + "in out parameter is required to instantiate generic"); + -- Dummy routine for destroing hashed values + + package Serial_Numbers is new Dynamic_Hash_Tables + (Key_Type => Int, + Value_Type => Nat, + No_Value => 0, + Expansion_Threshold => 1.5, + Expansion_Factor => 2, + Compression_Threshold => 0.3, + Compression_Factor => 2, + "=" => "=", + Destroy_Value => Destroy, + Hash => Hash); + -- Hash tables with dynamic resizing based on load factor. They provide + -- reasonable performance both when the printed AST is small (e.g. when + -- printing from debugger) and large (e.g. when printing with -gnatdt). + + Hash_Table : Serial_Numbers.Dynamic_Hash_Table; -- The hash table itself, see Serial_Number function for details of use - Hash_Table_Len : Nat; - -- Range of Hash_Table is from 0 .. Hash_Table_Len - 1 so that dividing - -- by Hash_Table_Len gives a remainder that is in Hash_Table'Range. - Next_Serial_Number : Nat; -- Number of last visited node or list. Used during the marking phase to -- set proper node numbers in the hash table, and during the printing @@ -126,9 +135,9 @@ package body Treepr is function From_Union is new Unchecked_Conversion (Union_Id, Uint); function From_Union is new Unchecked_Conversion (Union_Id, Ureal); - function Capitalize (S : String) return String; - procedure Capitalize (S : in out String); - -- Turns an identifier into Mixed_Case + function To_Mixed (S : String) return String; + -- Turns an identifier into Mixed_Case. For bootstrap reasons, we cannot + -- use To_Mixed function from System.Case_Util. function Image (F : Node_Or_Entity_Field) return String; @@ -246,34 +255,16 @@ package body Treepr is -- descendants are to be printed. Prefix_Str is to be added to all -- printed lines. - ---------------- - -- Capitalize -- - ---------------- + ---------- + -- Hash -- + ---------- - procedure Capitalize (S : in out String) is - Cap : Boolean := True; + function Hash (Key : Int) return GNAT.Bucket_Range_Type is + function Cast is new Unchecked_Conversion + (Source => Int, Target => GNAT.Bucket_Range_Type); begin - for J in S'Range loop - declare - Old : constant Character := S (J); - begin - if Cap then - S (J) := Fold_Upper (S (J)); - else - S (J) := Fold_Lower (S (J)); - end if; - - Cap := Old = '_'; - end; - end loop; - end Capitalize; - - function Capitalize (S : String) return String is - begin - return Result : String (S'Range) := S do - Capitalize (Result); - end return; - end Capitalize; + return Cast (Key); + end Hash; ----------- -- Image -- @@ -380,7 +371,7 @@ package body Treepr is when others => declare - Result : constant String := Capitalize (F'Img); + Result : constant String := To_Mixed (F'Img); begin return Result (3 .. Result'Last); -- Remove "F_" end; @@ -794,6 +785,10 @@ package body Treepr is procedure Print_Initial; -- Print the initial stuff that goes before the value + ------------------- + -- Print_Initial -- + ------------------- + procedure Print_Initial is begin Printed := True; @@ -808,6 +803,8 @@ package body Treepr is Write_Str (" = "); end Print_Initial; + -- Start of processing for Print_Field + begin if Phase /= Printing then return; @@ -1068,23 +1065,12 @@ package body Treepr is ---------------- procedure Print_Init is - Max_Hash_Entries : constant Nat := - Approx_Num_Nodes_And_Entities + Num_Lists + Num_Elists; begin Printing_Descendants := True; Write_Eol; - -- Allocate and clear serial number hash table. The size is 150% of - -- the maximum possible number of entries, so that the hash table - -- cannot get significantly overloaded. - - Hash_Table_Len := (150 * Max_Hash_Entries) / 100; - Hash_Table := new Hash_Table_Type (0 .. Hash_Table_Len - 1); - - for J in Hash_Table'Range loop - Hash_Table (J).Serial := 0; - end loop; - + pragma Assert (not Serial_Numbers.Present (Hash_Table)); + Hash_Table := Serial_Numbers.Create (512); end Print_Init; --------------- @@ -1628,6 +1614,24 @@ package body Treepr is end if; end if; + -- If this is a discrete expression whose value is known, print that + -- value. + + if Nkind (N) in N_Subexpr + and then Compile_Time_Known_Value (N) + and then Present (Etype (N)) + and then Is_Discrete_Type (Etype (N)) + then + if Is_Entity_Name (N) -- e.g. enumeration literal + or else Nkind (N) in N_Integer_Literal + | N_Character_Literal + | N_Unchecked_Type_Conversion + then + Print_Str (" val = "); + UI_Write (Expr_Value (N)); + end if; + end if; + if Nkind (N) in N_Entity then Write_Str (" (Entity_Id="); else @@ -1680,22 +1684,8 @@ package body Treepr is -------------------------- procedure Print_Str_Mixed_Case (S : String) is - Ucase : Boolean; - begin - if Phase = Printing then - Ucase := True; - - for J in S'Range loop - if Ucase then - Write_Char (S (J)); - else - Write_Char (Fold_Lower (S (J))); - end if; - - Ucase := (S (J) = '_'); - end loop; - end if; + Print_Str (To_Mixed (S)); end Print_Str_Mixed_Case; ---------------- @@ -1703,11 +1693,8 @@ package body Treepr is ---------------- procedure Print_Term is - procedure Free is new Unchecked_Deallocation - (Hash_Table_Type, Access_Hash_Table_Type); - begin - Free (Hash_Table); + Serial_Numbers.Destroy (Hash_Table); end Print_Term; --------------------- @@ -1812,40 +1799,14 @@ package body Treepr is -- Serial_Number -- ------------------- - -- The hashing algorithm is to use the remainder of the ID value divided - -- by the hash table length as the starting point in the table, and then - -- handle collisions by serial searching wrapping at the end of the table. - - Hash_Slot : Nat; + Hash_Id : Int; -- Set by an unsuccessful call to Serial_Number (one which returns zero) - -- to save the slot that should be used if Set_Serial_Number is called. + -- to save the Id that should be used if Set_Serial_Number is called. function Serial_Number (Id : Int) return Nat is - H : Int := Id mod Hash_Table_Len; - begin - while Hash_Table (H).Serial /= 0 loop - - if Id = Hash_Table (H).Id then - return Hash_Table (H).Serial; - end if; - - H := H + 1; - - if H > Hash_Table'Last then - H := 0; - end if; - end loop; - - -- Entry was not found, save slot number for possible subsequent call - -- to Set_Serial_Number, and unconditionally save the Id in this slot - -- in case of such a call (the Id field is never read if the serial - -- number of the slot is zero, so this is harmless in the case where - -- Set_Serial_Number is not subsequently called). - - Hash_Slot := H; - Hash_Table (H).Id := Id; - return 0; + Hash_Id := Id; + return Serial_Numbers.Get (Hash_Table, Id); end Serial_Number; ----------------------- @@ -1854,10 +1815,21 @@ package body Treepr is procedure Set_Serial_Number is begin - Hash_Table (Hash_Slot).Serial := Next_Serial_Number; + Serial_Numbers.Put (Hash_Table, Hash_Id, Next_Serial_Number); Next_Serial_Number := Next_Serial_Number + 1; end Set_Serial_Number; + -------------- + -- To_Mixed -- + -------------- + + function To_Mixed (S : String) return String is + begin + return Result : String (S'Range) := S do + To_Mixed (Result); + end return; + end To_Mixed; + --------------- -- Tree_Dump -- --------------- @@ -2322,8 +2294,8 @@ package body Treepr is begin Nod := N; while Present (Nod) loop - Visit_Descendant (Union_Id (Next_Entity (Nod))); Next_Entity (Nod); + Visit_Descendant (Union_Id (Nod)); end loop; end; end if; diff --git a/gcc/ada/treepr.ads b/gcc/ada/treepr.ads index 8c496cb..81b8407 100644 --- a/gcc/ada/treepr.ads +++ b/gcc/ada/treepr.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -26,7 +26,7 @@ with Types; use Types; package Treepr is --- This package provides printing routines for the abstract syntax tree +-- This package provides printing routines for the abstract syntax tree. -- These routines are intended only for debugging use. procedure Tree_Dump; @@ -42,11 +42,11 @@ package Treepr is procedure Print_Tree_List (L : List_Id); -- Prints a single node list, without printing the descendants of any - -- of the nodes in the list + -- of the nodes in the list. procedure Print_Tree_Elist (E : Elist_Id); -- Prints a single node list, without printing the descendants of any - -- of the nodes in the list + -- of the nodes in the list. procedure Print_Node_Subtree (N : Node_Id); -- Prints the subtree rooted at a specified tree node, including all diff --git a/gcc/ada/ttypes.ads b/gcc/ada/ttypes.ads index 62a1c4f..a1fbaf3 100644 --- a/gcc/ada/ttypes.ads +++ b/gcc/ada/ttypes.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/types.adb b/gcc/ada/types.adb index 46ca369..6faf769 100644 --- a/gcc/ada/types.adb +++ b/gcc/ada/types.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads index 673f7c6..a44aa13 100644 --- a/gcc/ada/types.ads +++ b/gcc/ada/types.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/types.h b/gcc/ada/types.h index 0938365..7f86996 100644 --- a/gcc/ada/types.h +++ b/gcc/ada/types.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/uintp.adb b/gcc/ada/uintp.adb index 06f6680..5c13061 100644 --- a/gcc/ada/uintp.adb +++ b/gcc/ada/uintp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/uintp.ads b/gcc/ada/uintp.ads index 08f6738..05b4e6e 100644 --- a/gcc/ada/uintp.ads +++ b/gcc/ada/uintp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/uintp.h b/gcc/ada/uintp.h index 5ca1560..c4d6672 100644 --- a/gcc/ada/uintp.h +++ b/gcc/ada/uintp.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/uname.adb b/gcc/ada/uname.adb index 18cb6d1..82bc7dc 100644 --- a/gcc/ada/uname.adb +++ b/gcc/ada/uname.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/uname.ads b/gcc/ada/uname.ads index 60f46f9..3f9aabe 100644 --- a/gcc/ada/uname.ads +++ b/gcc/ada/uname.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/urealp.adb b/gcc/ada/urealp.adb index 1367ad3..8305207 100644 --- a/gcc/ada/urealp.adb +++ b/gcc/ada/urealp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -1520,7 +1520,7 @@ package body Urealp is -- We defer to the implementation of UR_Write in all cases, either directly -- for values that are naturally written in a JSON compatible format, or by - -- first computing a decimal approxixmation for other values. + -- first computing a decimal approximation for other values. procedure UR_Write_To_JSON (Real : Ureal) is Val : constant Ureal_Entry := Ureals.Table (Real); @@ -1561,7 +1561,7 @@ package body Urealp is elsif Val.Rbase = 0 and then Val.Num mod Val.Den = 0 then T := Real; - -- For other constants, compute an approxixmation in base 10 + -- For other constants, compute an approximation in base 10 else declare diff --git a/gcc/ada/urealp.ads b/gcc/ada/urealp.ads index 5c625f9..3fe31d0 100644 --- a/gcc/ada/urealp.ads +++ b/gcc/ada/urealp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/urealp.h b/gcc/ada/urealp.h index e98ad85..0cf524f 100644 --- a/gcc/ada/urealp.h +++ b/gcc/ada/urealp.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2021, Free Software Foundation, Inc. * + * Copyright (C) 1992-2022, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * diff --git a/gcc/ada/usage.adb b/gcc/ada/usage.adb index 207303b..a3d59b6 100644 --- a/gcc/ada/usage.adb +++ b/gcc/ada/usage.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/usage.ads b/gcc/ada/usage.ads index 20e3bc4..fb07107 100644 --- a/gcc/ada/usage.ads +++ b/gcc/ada/usage.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/validsw.adb b/gcc/ada/validsw.adb index 790fe5e..22d82fc 100644 --- a/gcc/ada/validsw.adb +++ b/gcc/ada/validsw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/validsw.ads b/gcc/ada/validsw.ads index cd2f957..8b04f46 100644 --- a/gcc/ada/validsw.ads +++ b/gcc/ada/validsw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2001-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/vast.adb b/gcc/ada/vast.adb index 62099a6..cd501e1 100644 --- a/gcc/ada/vast.adb +++ b/gcc/ada/vast.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/vast.ads b/gcc/ada/vast.ads index 77e9e15..f0128b7 100644 --- a/gcc/ada/vast.ads +++ b/gcc/ada/vast.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2020-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2020-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/warnsw.adb b/gcc/ada/warnsw.adb index 149e2fd..4a7dcc3 100644 --- a/gcc/ada/warnsw.adb +++ b/gcc/ada/warnsw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/warnsw.ads b/gcc/ada/warnsw.ads index f58be1e..8fe5ef7 100644 --- a/gcc/ada/warnsw.ads +++ b/gcc/ada/warnsw.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/widechar.adb b/gcc/ada/widechar.adb index 183870d..8fd497c 100644 --- a/gcc/ada/widechar.adb +++ b/gcc/ada/widechar.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/widechar.ads b/gcc/ada/widechar.ads index 4604f09..713e43b 100644 --- a/gcc/ada/widechar.ads +++ b/gcc/ada/widechar.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xoscons.adb b/gcc/ada/xoscons.adb index 37dd85a..043915a 100644 --- a/gcc/ada/xoscons.adb +++ b/gcc/ada/xoscons.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2008-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 2008-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xr_tabls.adb b/gcc/ada/xr_tabls.adb index a4c52d0..22e4705 100644 --- a/gcc/ada/xr_tabls.adb +++ b/gcc/ada/xr_tabls.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xr_tabls.ads b/gcc/ada/xr_tabls.ads index 2f4dea0..e8662b7 100644 --- a/gcc/ada/xr_tabls.ads +++ b/gcc/ada/xr_tabls.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xref_lib.adb b/gcc/ada/xref_lib.adb index 9a584a4..a215467 100644 --- a/gcc/ada/xref_lib.adb +++ b/gcc/ada/xref_lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xref_lib.ads b/gcc/ada/xref_lib.ads index 3bc06d0..467e3a5 100644 --- a/gcc/ada/xref_lib.ads +++ b/gcc/ada/xref_lib.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xsnamest.adb b/gcc/ada/xsnamest.adb index 60e7b3c..88f09fd 100644 --- a/gcc/ada/xsnamest.adb +++ b/gcc/ada/xsnamest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xutil.adb b/gcc/ada/xutil.adb index ddc7f40..c733b5b 100644 --- a/gcc/ada/xutil.adb +++ b/gcc/ada/xutil.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/xutil.ads b/gcc/ada/xutil.ads index 746f743..bfe456a 100644 --- a/gcc/ada/xutil.ads +++ b/gcc/ada/xutil.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2021, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2022, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index 3d69fe2..af77c28 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,72 @@ +2022-01-11 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/102692 + * diagnostic-manager.cc + (class auto_disable_complexity_checks): Rename to... + (class auto_checking_feasibility): ...this, updating + the calls accordingly. + (epath_finder::explore_feasible_paths): Update for renaming. + * region-model-manager.cc + (region_model_manager::region_model_manager): Update for change from + m_check_complexity to m_checking_feasibility. + (region_model_manager::reject_if_too_complex): Likewise. + (region_model_manager::get_or_create_unknown_svalue): Handle + m_checking_feasibility. + (region_model_manager::create_unique_svalue): New. + (region_model_manager::maybe_fold_binop): Handle BIT_AND_EXPR and + BIT_IOR_EXPRs on booleans where we know the result. + * region-model.cc (test_binop_svalue_folding): Add test coverage + for the above. + * region-model.h (region_model_manager::create_unique_svalue): New + decl. + (region_model_manager::enable_complexity_check): Replace with... + (region_model_manager::begin_checking_feasibility): ...this. + (region_model_manager::disable_complexity_check): Replace with... + (region_model_manager::end_checking_feasibility): ...this. + (region_model_manager::m_check_complexity): Replace with... + (region_model_manager::m_checking_feasibility): ...this. + (region_model_manager::m_managed_dynamic_svalues): New field. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * engine.cc (impl_run_checkers): Pass logger to engine ctor. + * region-model-manager.cc + (region_model_manager::region_model_manager): Add logger param and + use it to initialize m_logger. + * region-model.cc (engine::engine): New. + * region-model.h (region_model_manager::region_model_manager): + Add logger param. + (region_model_manager::get_logger): New. + (region_model_manager::m_logger): New field. + (engine::engine): New. + * store.cc (store_manager::get_logger): New. + (store::set_value): Log scope. Log when marking a cluster as + unknown due to possible aliasing. + * store.h (store_manager::get_logger): New decl. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * region-model-impl-calls.cc (cmp_decls): New. + (cmp_decls_ptr_ptr): New. + (region_model::impl_call_analyzer_dump_escaped): New. + * region-model.cc (region_model::on_stmt_pre): Handle + __analyzer_dump_escaped. + * region-model.h (region_model::impl_call_analyzer_dump_escaped): + New decl. + * store.h (binding_cluster::get_base_region): New accessor. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * region.cc (region::is_named_decl_p): New. + * region.h (region::is_named_decl_p): New decl. + +2022-01-06 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/103546 + * store.cc (store::eval_alias_1): Refactor handling of decl + regions, adding a test for may_be_aliased, rejecting those for + which it returns false. + 2021-12-12 Jonathan Wakely <jwakely@redhat.com> * engine.cc: Define INCLUDE_MEMORY instead of INCLUDE_UNIQUE_PTR. diff --git a/gcc/analyzer/diagnostic-manager.cc b/gcc/analyzer/diagnostic-manager.cc index e9b8fe3..73c133d 100644 --- a/gcc/analyzer/diagnostic-manager.cc +++ b/gcc/analyzer/diagnostic-manager.cc @@ -303,18 +303,21 @@ private: Hence this is an RAII class for temporarily disabling complexity-checking in the region_model_manager, for use within - epath_finder::explore_feasible_paths. */ + epath_finder::explore_feasible_paths. -class auto_disable_complexity_checks + We also disable the creation of unknown_svalue instances during feasibility + checking, instead creating unique svalues, to avoid paradoxes in paths. */ + +class auto_checking_feasibility { public: - auto_disable_complexity_checks (region_model_manager *mgr) : m_mgr (mgr) + auto_checking_feasibility (region_model_manager *mgr) : m_mgr (mgr) { - m_mgr->disable_complexity_check (); + m_mgr->begin_checking_feasibility (); } - ~auto_disable_complexity_checks () + ~auto_checking_feasibility () { - m_mgr->enable_complexity_check (); + m_mgr->end_checking_feasibility (); } private: region_model_manager *m_mgr; @@ -406,7 +409,7 @@ epath_finder::explore_feasible_paths (const exploded_node *target_enode, exploded_path *best_path = NULL; { - auto_disable_complexity_checks sentinel (mgr); + auto_checking_feasibility sentinel (mgr); while (process_worklist_item (&worklist, tg, &fg, target_enode, diag_idx, &best_path)) diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc index 0d456a1..346b659 100644 --- a/gcc/analyzer/engine.cc +++ b/gcc/analyzer/engine.cc @@ -5329,7 +5329,7 @@ impl_run_checkers (logger *logger) FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) node->get_untransformed_body (); - engine eng; + engine eng (logger); /* Create the supergraph. */ supergraph sg (logger); diff --git a/gcc/analyzer/region-model-impl-calls.cc b/gcc/analyzer/region-model-impl-calls.cc index 9063acd..c20058e 100644 --- a/gcc/analyzer/region-model-impl-calls.cc +++ b/gcc/analyzer/region-model-impl-calls.cc @@ -264,6 +264,75 @@ region_model::impl_call_analyzer_dump_capacity (const gcall *call, warning_at (call->location, 0, "capacity: %qs", desc.m_buffer); } +/* Compare D1 and D2 using their names, and then IDs to order them. */ + +static int +cmp_decls (tree d1, tree d2) +{ + gcc_assert (DECL_P (d1)); + gcc_assert (DECL_P (d2)); + if (DECL_NAME (d1) && DECL_NAME (d2)) + if (int cmp = strcmp (IDENTIFIER_POINTER (DECL_NAME (d1)), + IDENTIFIER_POINTER (DECL_NAME (d2)))) + return cmp; + return (int)DECL_UID (d1) - (int)DECL_UID (d2); +} + +/* Comparator for use by vec<tree>::qsort, + using their names, and then IDs to order them. */ + +static int +cmp_decls_ptr_ptr (const void *p1, const void *p2) +{ + tree const *d1 = (tree const *)p1; + tree const *d2 = (tree const *)p2; + + return cmp_decls (*d1, *d2); +} + +/* Handle a call to "__analyzer_dump_escaped". + + Emit a warning giving the number of decls that have escaped, followed + by a comma-separated list of their names, in alphabetical order. + + This is for use when debugging, and may be of use in DejaGnu tests. */ + +void +region_model::impl_call_analyzer_dump_escaped (const gcall *call) +{ + auto_vec<tree> escaped_decls; + for (auto iter : m_store) + { + const binding_cluster *c = iter.second; + if (!c->escaped_p ()) + continue; + if (tree decl = c->get_base_region ()->maybe_get_decl ()) + escaped_decls.safe_push (decl); + } + + /* Sort them into deterministic order; alphabetical is + probably most user-friendly. */ + escaped_decls.qsort (cmp_decls_ptr_ptr); + + pretty_printer pp; + pp_format_decoder (&pp) = default_tree_printer; + pp_show_color (&pp) = pp_show_color (global_dc->printer); + bool first = true; + for (auto iter : escaped_decls) + { + if (first) + first = false; + else + pp_string (&pp, ", "); + pp_printf (&pp, "%qD", iter); + } + /* Print the number to make it easier to write DejaGnu tests for + the "nothing has escaped" case. */ + warning_at (call->location, 0, "escaped: %i: %s", + escaped_decls.length (), + pp_formatted_text (&pp)); +} + /* Handle a call to "__analyzer_eval" by evaluating the input and dumping as a dummy warning, so that test cases can use dg-warning to validate the result (and so unexpected warnings will diff --git a/gcc/analyzer/region-model-manager.cc b/gcc/analyzer/region-model-manager.cc index 19e1a93..903cdfde 100644 --- a/gcc/analyzer/region-model-manager.cc +++ b/gcc/analyzer/region-model-manager.cc @@ -66,13 +66,14 @@ namespace ana { /* region_model_manager's ctor. */ -region_model_manager::region_model_manager () -: m_next_region_id (0), +region_model_manager::region_model_manager (logger *logger) +: m_logger (logger), + m_next_region_id (0), m_root_region (alloc_region_id ()), m_stack_region (alloc_region_id (), &m_root_region), m_heap_region (alloc_region_id (), &m_root_region), m_unknown_NULL (NULL), - m_check_complexity (true), + m_checking_feasibility (false), m_max_complexity (0, 0), m_code_region (alloc_region_id (), &m_root_region), m_fndecls_map (), m_labels_map (), @@ -165,7 +166,7 @@ region_model_manager::too_complex_p (const complexity &c) const bool region_model_manager::reject_if_too_complex (svalue *sval) { - if (!m_check_complexity) + if (m_checking_feasibility) return false; const complexity &c = sval->get_complexity (); @@ -237,6 +238,11 @@ region_model_manager::get_or_create_int_cst (tree type, poly_int64 val) const svalue * region_model_manager::get_or_create_unknown_svalue (tree type) { + /* Don't create unknown values when doing feasibility testing; + instead, create a unique svalue. */ + if (m_checking_feasibility) + return create_unique_svalue (type); + /* Special-case NULL, so that the hash_map can use NULL as the "empty" value. */ if (type == NULL_TREE) @@ -254,6 +260,16 @@ region_model_manager::get_or_create_unknown_svalue (tree type) return sval; } +/* Return a freshly-allocated svalue of TYPE, owned by this manager. */ + +const svalue * +region_model_manager::create_unique_svalue (tree type) +{ + svalue *sval = new placeholder_svalue (type, "unique"); + m_managed_dynamic_svalues.safe_push (sval); + return sval; +} + /* Return the svalue * for the initial value of REG, creating it if necessary. */ @@ -583,6 +599,42 @@ region_model_manager::maybe_fold_binop (tree type, enum tree_code op, cst1, arg1)) return sval; } + if (arg0->get_type () == boolean_type_node + && arg1->get_type () == boolean_type_node) + { + /* If the LHS are both _Bool, then... */ + /* ..."(1 & x) -> x". */ + if (cst0 && !zerop (cst0)) + return get_or_create_cast (type, arg1); + /* ..."(x & 1) -> x". */ + if (cst1 && !zerop (cst1)) + return get_or_create_cast (type, arg0); + /* ..."(0 & x) -> 0". */ + if (cst0 && zerop (cst0)) + return get_or_create_int_cst (type, 0); + /* ..."(x & 0) -> 0". */ + if (cst1 && zerop (cst1)) + return get_or_create_int_cst (type, 0); + } + break; + case BIT_IOR_EXPR: + if (arg0->get_type () == boolean_type_node + && arg1->get_type () == boolean_type_node) + { + /* If the LHS are both _Bool, then... */ + /* ..."(1 | x) -> 1". */ + if (cst0 && !zerop (cst0)) + return get_or_create_int_cst (type, 1); + /* ..."(x | 1) -> 1". */ + if (cst1 && !zerop (cst1)) + return get_or_create_int_cst (type, 1); + /* ..."(0 | x) -> x". */ + if (cst0 && zerop (cst0)) + return get_or_create_cast (type, arg1); + /* ..."(x | 0) -> x". */ + if (cst1 && zerop (cst1)) + return get_or_create_cast (type, arg0); + } break; case TRUTH_ANDIF_EXPR: case TRUTH_AND_EXPR: diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc index b737194..b58d089 100644 --- a/gcc/analyzer/region-model.cc +++ b/gcc/analyzer/region-model.cc @@ -999,6 +999,8 @@ region_model::on_stmt_pre (const gimple *stmt, impl_call_analyzer_describe (call, ctxt); else if (is_special_named_call_p (call, "__analyzer_dump_capacity", 1)) impl_call_analyzer_dump_capacity (call, ctxt); + else if (is_special_named_call_p (call, "__analyzer_dump_escaped", 0)) + impl_call_analyzer_dump_escaped (call); else if (is_special_named_call_p (call, "__analyzer_dump_path", 0)) { /* Handle the builtin "__analyzer_dump_path" by queuing a @@ -3963,6 +3965,13 @@ rejected_ranges_constraint::dump_to_pp (pretty_printer *pp) const /* class engine. */ +/* engine's ctor. */ + +engine::engine (logger *logger) +: m_mgr (logger) +{ +} + /* Dump the managed objects by class to LOGGER, and the per-class totals. */ void @@ -4546,6 +4555,39 @@ test_binop_svalue_folding () = mgr.get_or_create_binop (integer_type_node, PLUS_EXPR, x_init_plus_one, cst_sval[1]); ASSERT_EQ (x_init_plus_one_plus_one, x_init_plus_two); + + /* Verify various binops on booleans. */ + { + const svalue *sval_true = mgr.get_or_create_int_cst (boolean_type_node, 1); + const svalue *sval_false = mgr.get_or_create_int_cst (boolean_type_node, 0); + const svalue *sval_unknown + = mgr.get_or_create_unknown_svalue (boolean_type_node); + const placeholder_svalue sval_placeholder (boolean_type_node, "v"); + for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR}) + { + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_true, sval_unknown), + sval_true); + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_false, sval_unknown), + sval_unknown); + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_false, &sval_placeholder), + &sval_placeholder); + } + for (auto op : {BIT_AND_EXPR, TRUTH_AND_EXPR}) + { + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_false, sval_unknown), + sval_false); + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_true, sval_unknown), + sval_unknown); + ASSERT_EQ (mgr.get_or_create_binop (boolean_type_node, op, + sval_true, &sval_placeholder), + &sval_placeholder); + } + } } /* Verify that sub_svalues are folded as expected. */ diff --git a/gcc/analyzer/region-model.h b/gcc/analyzer/region-model.h index 8e35be1..c78efe8 100644 --- a/gcc/analyzer/region-model.h +++ b/gcc/analyzer/region-model.h @@ -240,7 +240,7 @@ namespace ana { class region_model_manager { public: - region_model_manager (); + region_model_manager (logger *logger = NULL); ~region_model_manager (); /* svalue consolidation. */ @@ -286,6 +286,11 @@ public: const svalue *maybe_get_char_from_string_cst (tree string_cst, tree byte_offset_cst); + /* Dynamically-allocated svalue instances. + The number of these within the analysis can grow arbitrarily. + They are still owned by the manager. */ + const svalue *create_unique_svalue (tree type); + /* region consolidation. */ const stack_region * get_stack_region () const { return &m_stack_region; } const heap_region *get_heap_region () const { return &m_heap_region; } @@ -332,8 +337,10 @@ public: void log_stats (logger *logger, bool show_objs) const; - void enable_complexity_check (void) { m_check_complexity = true; } - void disable_complexity_check (void) { m_check_complexity = false; } + void begin_checking_feasibility (void) { m_checking_feasibility = true; } + void end_checking_feasibility (void) { m_checking_feasibility = false; } + + logger *get_logger () const { return m_logger; } private: bool too_complex_p (const complexity &c) const; @@ -358,6 +365,8 @@ private: const svalue *maybe_fold_asm_output_svalue (tree type, const vec<const svalue *> &inputs); + logger *m_logger; + unsigned m_next_region_id; root_region m_root_region; stack_region m_stack_region; @@ -425,7 +434,12 @@ private: asm_output_svalue *> asm_output_values_map_t; asm_output_values_map_t m_asm_output_values_map; - bool m_check_complexity; + bool m_checking_feasibility; + + /* "Dynamically-allocated" svalue instances. + The number of these within the analysis can grow arbitrarily. + They are still owned by the manager. */ + auto_delete_vec<svalue> m_managed_dynamic_svalues; /* Maximum complexity of svalues that weren't rejected. */ complexity m_max_complexity; @@ -573,6 +587,7 @@ class region_model region_model_context *ctxt); void impl_call_analyzer_dump_capacity (const gcall *call, region_model_context *ctxt); + void impl_call_analyzer_dump_escaped (const gcall *call); void impl_call_analyzer_eval (const gcall *call, region_model_context *ctxt); void impl_call_builtin_expect (const call_details &cd); @@ -1079,6 +1094,7 @@ private: class engine { public: + engine (logger *logger = NULL); region_model_manager *get_model_manager () { return &m_mgr; } void log_stats (logger *logger) const; diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc index befcaa4..161e7e1 100644 --- a/gcc/analyzer/region.cc +++ b/gcc/analyzer/region.cc @@ -638,6 +638,20 @@ region::symbolic_for_unknown_ptr_p () const return false; } +/* Return true if this is a region for a decl with name DECL_NAME. + Intended for use when debugging (for assertions and conditional + breakpoints). */ + +DEBUG_FUNCTION bool +region::is_named_decl_p (const char *decl_name) const +{ + if (tree decl = maybe_get_decl ()) + if (DECL_NAME (decl) + && !strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), decl_name)) + return true; + return false; +} + /* region's ctor. */ region::region (complexity c, unsigned id, const region *parent, tree type) diff --git a/gcc/analyzer/region.h b/gcc/analyzer/region.h index fbb50a1..d97bbc1 100644 --- a/gcc/analyzer/region.h +++ b/gcc/analyzer/region.h @@ -189,6 +189,8 @@ public: const complexity &get_complexity () const { return m_complexity; } + bool is_named_decl_p (const char *decl_name) const; + protected: region (complexity c, unsigned id, const region *parent, tree type); diff --git a/gcc/analyzer/store.cc b/gcc/analyzer/store.cc index 8729aa8..ade6dec 100644 --- a/gcc/analyzer/store.cc +++ b/gcc/analyzer/store.cc @@ -1987,6 +1987,12 @@ binding_cluster::maybe_get_simple_value (store_manager *mgr) const /* class store_manager. */ +logger * +store_manager::get_logger () const +{ + return m_mgr->get_logger (); +} + /* binding consolidation. */ const concrete_binding * @@ -2353,6 +2359,9 @@ store::set_value (store_manager *mgr, const region *lhs_reg, const svalue *rhs_sval, uncertainty_t *uncertainty) { + logger *logger = mgr->get_logger (); + LOG_SCOPE (logger); + remove_overlapping_bindings (mgr, lhs_reg); rhs_sval = simplify_for_binding (rhs_sval); @@ -2405,6 +2414,18 @@ store::set_value (store_manager *mgr, const region *lhs_reg, gcc_unreachable (); case tristate::TS_UNKNOWN: + if (logger) + { + pretty_printer *pp = logger->get_printer (); + logger->start_log_line (); + logger->log_partial ("possible aliasing of "); + iter_base_reg->dump_to_pp (pp, true); + logger->log_partial (" when writing SVAL: "); + rhs_sval->dump_to_pp (pp, true); + logger->log_partial (" to LHS_REG: "); + lhs_reg->dump_to_pp (pp, true); + logger->end_log_line (); + } iter_cluster->mark_region_as_unknown (mgr, iter_base_reg, uncertainty); break; @@ -2456,13 +2477,17 @@ store::eval_alias_1 (const region *base_reg_a, = base_reg_a->dyn_cast_symbolic_region ()) { const svalue *sval_a = sym_reg_a->get_pointer (); - if (sval_a->get_kind () == SK_INITIAL) - if (tree decl_b = base_reg_b->maybe_get_decl ()) - if (!is_global_var (decl_b)) - { - /* The initial value of a pointer can't point to a local. */ - return tristate::TS_FALSE; - } + if (tree decl_b = base_reg_b->maybe_get_decl ()) + { + if (!may_be_aliased (decl_b)) + return tristate::TS_FALSE; + if (sval_a->get_kind () == SK_INITIAL) + if (!is_global_var (decl_b)) + { + /* The initial value of a pointer can't point to a local. */ + return tristate::TS_FALSE; + } + } if (sval_a->get_kind () == SK_INITIAL && base_reg_b->get_kind () == RK_HEAP_ALLOCATED) { diff --git a/gcc/analyzer/store.h b/gcc/analyzer/store.h index 4672886..ee084dd 100644 --- a/gcc/analyzer/store.h +++ b/gcc/analyzer/store.h @@ -559,6 +559,8 @@ public: bool symbolic_p () const; + const region *get_base_region () const { return m_base_region; } + void dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const; void dump (bool simple) const; @@ -785,6 +787,8 @@ class store_manager public: store_manager (region_model_manager *mgr) : m_mgr (mgr) {} + logger *get_logger () const; + /* binding consolidation. */ const concrete_binding * get_concrete_binding (bit_offset_t start_bit_offset, diff --git a/gcc/builtins.c b/gcc/builtins.c index 39b08af..c780340 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5791,35 +5791,22 @@ expand_builtin_sync_lock_release (machine_mode mode, tree exp) static enum memmodel get_memmodel (tree exp) { - rtx op; - unsigned HOST_WIDE_INT val; - location_t loc - = expansion_point_location_if_in_system_header (input_location); - /* If the parameter is not a constant, it's a run time value so we'll just convert it to MEMMODEL_SEQ_CST to avoid annoying runtime checking. */ if (TREE_CODE (exp) != INTEGER_CST) return MEMMODEL_SEQ_CST; - op = expand_normal (exp); + rtx op = expand_normal (exp); - val = INTVAL (op); + unsigned HOST_WIDE_INT val = INTVAL (op); if (targetm.memmodel_check) val = targetm.memmodel_check (val); else if (val & ~MEMMODEL_MASK) - { - warning_at (loc, OPT_Winvalid_memory_model, - "unknown architecture specifier in memory model to builtin"); - return MEMMODEL_SEQ_CST; - } + return MEMMODEL_SEQ_CST; /* Should never see a user explicit SYNC memodel model, so >= LAST works. */ if (memmodel_base (val) >= MEMMODEL_LAST) - { - warning_at (loc, OPT_Winvalid_memory_model, - "invalid memory model argument to builtin"); - return MEMMODEL_SEQ_CST; - } + return MEMMODEL_SEQ_CST; /* Workaround for Bugzilla 59448. GCC doesn't track consume properly, so be conservative and promote consume to acquire. */ @@ -5866,28 +5853,17 @@ expand_builtin_atomic_compare_exchange (machine_mode mode, tree exp, { rtx expect, desired, mem, oldval; rtx_code_label *label; - enum memmodel success, failure; tree weak; bool is_weak; - location_t loc - = expansion_point_location_if_in_system_header (input_location); - success = get_memmodel (CALL_EXPR_ARG (exp, 4)); - failure = get_memmodel (CALL_EXPR_ARG (exp, 5)); + memmodel success = get_memmodel (CALL_EXPR_ARG (exp, 4)); + memmodel failure = get_memmodel (CALL_EXPR_ARG (exp, 5)); if (failure > success) - { - warning_at (loc, OPT_Winvalid_memory_model, - "failure memory model cannot be stronger than success " - "memory model for %<__atomic_compare_exchange%>"); - success = MEMMODEL_SEQ_CST; - } + success = MEMMODEL_SEQ_CST; if (is_mm_release (failure) || is_mm_acq_rel (failure)) { - warning_at (loc, OPT_Winvalid_memory_model, - "invalid failure memory model for " - "%<__atomic_compare_exchange%>"); failure = MEMMODEL_SEQ_CST; success = MEMMODEL_SEQ_CST; } @@ -5992,29 +5968,15 @@ expand_ifn_atomic_compare_exchange (gcall *call) int size = tree_to_shwi (gimple_call_arg (call, 3)) & 255; gcc_assert (size == 1 || size == 2 || size == 4 || size == 8 || size == 16); machine_mode mode = int_mode_for_size (BITS_PER_UNIT * size, 0).require (); - rtx expect, desired, mem, oldval, boolret; - enum memmodel success, failure; - tree lhs; - bool is_weak; - location_t loc - = expansion_point_location_if_in_system_header (gimple_location (call)); - success = get_memmodel (gimple_call_arg (call, 4)); - failure = get_memmodel (gimple_call_arg (call, 5)); + memmodel success = get_memmodel (gimple_call_arg (call, 4)); + memmodel failure = get_memmodel (gimple_call_arg (call, 5)); if (failure > success) - { - warning_at (loc, OPT_Winvalid_memory_model, - "failure memory model cannot be stronger than success " - "memory model for %<__atomic_compare_exchange%>"); - success = MEMMODEL_SEQ_CST; - } + success = MEMMODEL_SEQ_CST; if (is_mm_release (failure) || is_mm_acq_rel (failure)) { - warning_at (loc, OPT_Winvalid_memory_model, - "invalid failure memory model for " - "%<__atomic_compare_exchange%>"); failure = MEMMODEL_SEQ_CST; success = MEMMODEL_SEQ_CST; } @@ -6026,15 +5988,15 @@ expand_ifn_atomic_compare_exchange (gcall *call) } /* Expand the operands. */ - mem = get_builtin_sync_mem (gimple_call_arg (call, 0), mode); + rtx mem = get_builtin_sync_mem (gimple_call_arg (call, 0), mode); - expect = expand_expr_force_mode (gimple_call_arg (call, 1), mode); - desired = expand_expr_force_mode (gimple_call_arg (call, 2), mode); + rtx expect = expand_expr_force_mode (gimple_call_arg (call, 1), mode); + rtx desired = expand_expr_force_mode (gimple_call_arg (call, 2), mode); - is_weak = (tree_to_shwi (gimple_call_arg (call, 3)) & 256) != 0; + bool is_weak = (tree_to_shwi (gimple_call_arg (call, 3)) & 256) != 0; - boolret = NULL; - oldval = NULL; + rtx boolret = NULL; + rtx oldval = NULL; if (!expand_atomic_compare_and_swap (&boolret, &oldval, mem, expect, desired, is_weak, success, failure)) @@ -6043,7 +6005,7 @@ expand_ifn_atomic_compare_exchange (gcall *call) return; } - lhs = gimple_call_lhs (call); + tree lhs = gimple_call_lhs (call); if (lhs) { rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); @@ -6062,24 +6024,15 @@ expand_ifn_atomic_compare_exchange (gcall *call) static rtx expand_builtin_atomic_load (machine_mode mode, tree exp, rtx target) { - rtx mem; - enum memmodel model; - - model = get_memmodel (CALL_EXPR_ARG (exp, 1)); + memmodel model = get_memmodel (CALL_EXPR_ARG (exp, 1)); if (is_mm_release (model) || is_mm_acq_rel (model)) - { - location_t loc - = expansion_point_location_if_in_system_header (input_location); - warning_at (loc, OPT_Winvalid_memory_model, - "invalid memory model for %<__atomic_load%>"); - model = MEMMODEL_SEQ_CST; - } + model = MEMMODEL_SEQ_CST; if (!flag_inline_atomics) return NULL_RTX; /* Expand the operand. */ - mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); + rtx mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); return expand_atomic_load (target, mem, model); } @@ -6093,26 +6046,17 @@ expand_builtin_atomic_load (machine_mode mode, tree exp, rtx target) static rtx expand_builtin_atomic_store (machine_mode mode, tree exp) { - rtx mem, val; - enum memmodel model; - - model = get_memmodel (CALL_EXPR_ARG (exp, 2)); + memmodel model = get_memmodel (CALL_EXPR_ARG (exp, 2)); if (!(is_mm_relaxed (model) || is_mm_seq_cst (model) || is_mm_release (model))) - { - location_t loc - = expansion_point_location_if_in_system_header (input_location); - warning_at (loc, OPT_Winvalid_memory_model, - "invalid memory model for %<__atomic_store%>"); - model = MEMMODEL_SEQ_CST; - } + model = MEMMODEL_SEQ_CST; if (!flag_inline_atomics) return NULL_RTX; /* Expand the operands. */ - mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); - val = expand_expr_force_mode (CALL_EXPR_ARG (exp, 1), mode); + rtx mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); + rtx val = expand_expr_force_mode (CALL_EXPR_ARG (exp, 1), mode); return expand_atomic_store (mem, val, model, false); } @@ -6370,29 +6314,19 @@ expand_ifn_atomic_op_fetch_cmp_0 (gcall *call) static rtx expand_builtin_atomic_clear (tree exp) { - machine_mode mode; - rtx mem, ret; - enum memmodel model; - - mode = int_mode_for_size (BOOL_TYPE_SIZE, 0).require (); - mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); - model = get_memmodel (CALL_EXPR_ARG (exp, 1)); + machine_mode mode = int_mode_for_size (BOOL_TYPE_SIZE, 0).require (); + rtx mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode); + memmodel model = get_memmodel (CALL_EXPR_ARG (exp, 1)); if (is_mm_consume (model) || is_mm_acquire (model) || is_mm_acq_rel (model)) - { - location_t loc - = expansion_point_location_if_in_system_header (input_location); - warning_at (loc, OPT_Winvalid_memory_model, - "invalid memory model for %<__atomic_store%>"); - model = MEMMODEL_SEQ_CST; - } + model = MEMMODEL_SEQ_CST; /* Try issuing an __atomic_store, and allow fallback to __sync_lock_release. Failing that, a store is issued by __atomic_store. The only way this can fail is if the bool type is larger than a word size. Unlikely, but handle it anyway for completeness. Assume a single threaded model since there is no atomic support in this case, and no barriers are required. */ - ret = expand_atomic_store (mem, const0_rtx, model, true); + rtx ret = expand_atomic_store (mem, const0_rtx, model, true); if (!ret) emit_move_insn (mem, const0_rtx); return const0_rtx; @@ -10372,7 +10306,8 @@ fold_builtin_object_size (tree ptr, tree ost, enum built_in_function fcode) if (TREE_CODE (ptr) == ADDR_EXPR) { compute_builtin_object_size (ptr, object_size_type, &bytes); - if (int_fits_type_p (bytes, size_type_node)) + if ((object_size_type & OST_DYNAMIC) + || int_fits_type_p (bytes, size_type_node)) return fold_convert (size_type_node, bytes); } else if (TREE_CODE (ptr) == SSA_NAME) @@ -10381,7 +10316,8 @@ fold_builtin_object_size (tree ptr, tree ost, enum built_in_function fcode) later. Maybe subsequent passes will help determining it. */ if (compute_builtin_object_size (ptr, object_size_type, &bytes) - && int_fits_type_p (bytes, size_type_node)) + && ((object_size_type & OST_DYNAMIC) + || int_fits_type_p (bytes, size_type_node))) return fold_convert (size_type_node, bytes); } diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index afb584e..91f9b5e 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,34 @@ +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c/101537 + PR c/103881 + * c-warn.c (conversion_warning): Handle BIT_AND_EXPR, BIT_IOR_EXPR + and BIT_XOR_EXPR. + +2022-01-10 Richard Biener <rguenther@suse.de> + + PR middle-end/101530 + * c-common.c (c_build_shufflevector): Wrap the BIT_FIELD_REF + in a TARGET_EXPR to force a temporary. + +2022-01-06 Marek Polacek <polacek@redhat.com> + + PR c++/103758 + * c-pragma.c (handle_pragma_scalar_storage_order): Use %< %> in + diagnostic messages. + (handle_pragma_diagnostic): Likewise. + +2022-01-03 Marek Polacek <polacek@redhat.com> + + PR c++/103758 + * c-format.c (check_tokens): Accept "decl-specifier*". + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/103600 + * c-attribs.c (handle_non_overlapping_attribute): New function. + (c_common_attribute_table): Add "non overlapping" attribute. + 2021-12-30 Jakub Jelinek <jakub@redhat.com> PR c++/103012 diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c index dbb892e..bdf72ce 100644 --- a/gcc/c-family/c-attribs.c +++ b/gcc/c-family/c-attribs.c @@ -5516,7 +5516,8 @@ handle_optimize_attribute (tree *node, tree name, tree args, if (saved_global_options != NULL) { - cl_optimization_compare (saved_global_options, &global_options); + if (!seen_error ()) + cl_optimization_compare (saved_global_options, &global_options); free (saved_global_options); } } diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 13341fa..4a6a4ed 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -1243,6 +1243,13 @@ c_build_shufflevector (location_t loc, tree v0, tree v1, tree lpartt = build_vector_type (TREE_TYPE (ret_type), mask.length ()); ret = build3_loc (loc, BIT_FIELD_REF, lpartt, ret, TYPE_SIZE (lpartt), bitsize_zero_node); + /* Wrap the lowpart operation in a TARGET_EXPR so it gets a separate + temporary during gimplification. See PR101530 for cases where + we'd otherwise end up with non-toplevel BIT_FIELD_REFs. */ + tree tem = create_tmp_var_raw (lpartt); + DECL_CONTEXT (tem) = current_function_decl; + ret = build4 (TARGET_EXPR, lpartt, tem, ret, NULL_TREE, NULL_TREE); + TREE_SIDE_EFFECTS (ret) = 1; } if (!c_dialect_cxx () && !wrap) diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c index 7d3b311..afa7781 100644 --- a/gcc/c-family/c-format.c +++ b/gcc/c-family/c-format.c @@ -3194,7 +3194,7 @@ check_tokens (const token_t *tokens, unsigned ntoks, wlen, format_chars); else { - /* Diagnose some common missspellings. */ + /* Diagnose some common misspellings. */ for (unsigned i = 0; i != sizeof badwords / sizeof *badwords; ++i) { unsigned badwlen = strspn (badwords[i].name, " -"); @@ -3215,6 +3215,12 @@ check_tokens (const token_t *tokens, unsigned ntoks, plural = "s"; } + /* As an exception, don't warn about "decl-specifier*" since + it's a C++ grammar production. */ + if (badwords[i].name[0] == 'd' + && startswith (format_chars, "decl-specifier")) + continue; + format_warning_substr (format_string_loc, format_string_cst, fmtchrpos, fmtchrpos + badwords[i].len, opt, diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c index ecf4457..8dde5b8 100644 --- a/gcc/c-family/c-pragma.c +++ b/gcc/c-family/c-pragma.c @@ -441,7 +441,8 @@ handle_pragma_scalar_storage_order (cpp_reader *ARG_UNUSED(dummy)) token = pragma_lex (&x); if (token != CPP_NAME) - GCC_BAD ("missing [big-endian|little-endian|default] after %<#pragma scalar_storage_order%>"); + GCC_BAD ("missing %<big-endian%>, %<little-endian%>, or %<default%> after " + "%<#pragma scalar_storage_order%>"); kind_string = IDENTIFIER_POINTER (x); if (strcmp (kind_string, "default") == 0) global_sso = default_sso; @@ -450,7 +451,8 @@ handle_pragma_scalar_storage_order (cpp_reader *ARG_UNUSED(dummy)) else if (strcmp (kind_string, "little") == 0) global_sso = SSO_LITTLE_ENDIAN; else - GCC_BAD ("expected [big-endian|little-endian|default] after %<#pragma scalar_storage_order%>"); + GCC_BAD ("expected %<big-endian%>, %<little-endian%>, or %<default%> after " + "%<#pragma scalar_storage_order%>"); } /* GCC supports two #pragma directives for renaming the external @@ -771,8 +773,9 @@ handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy)) if (token != CPP_NAME) { warning_at (loc, OPT_Wpragmas, - "missing [error|warning|ignored|push|pop|ignored_attributes]" - " after %<#pragma GCC diagnostic%>"); + "missing %<error%>, %<warning%>, %<ignored%>, %<push%>, " + "%<pop%>, or %<ignored_attributes%> after " + "%<#pragma GCC diagnostic%>"); return; } @@ -830,8 +833,9 @@ handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy)) else { warning_at (loc, OPT_Wpragmas, - "expected [error|warning|ignored|push|pop|ignored_attributes]" - " after %<#pragma GCC diagnostic%>"); + "expected %<error%>, %<warning%>, %<ignored%>, %<push%>, " + "%<pop%>, %<ignored_attributes%> after " + "%<#pragma GCC diagnostic%>"); return; } diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index 005c9ac..1ce2202 100644 --- a/gcc/c-family/c-warn.c +++ b/gcc/c-family/c-warn.c @@ -1304,6 +1304,34 @@ conversion_warning (location_t loc, tree type, tree expr, tree result) || conversion_warning (loc, type, op2, result)); } + case BIT_AND_EXPR: + if (TREE_CODE (expr_type) == INTEGER_TYPE + && TREE_CODE (type) == INTEGER_TYPE) + for (int i = 0; i < 2; ++i) + { + tree op = TREE_OPERAND (expr, i); + if (TREE_CODE (op) != INTEGER_CST) + continue; + + /* If one of the operands is a non-negative constant + that fits in the target type, then the type of the + other operand does not matter. */ + if (int_fits_type_p (op, c_common_signed_type (type)) + && int_fits_type_p (op, c_common_unsigned_type (type))) + return false; + + /* If constant is unsigned and fits in the target + type, then the result will also fit. */ + if (TYPE_UNSIGNED (TREE_TYPE (op)) && int_fits_type_p (op, type)) + return false; + } + /* FALLTHRU */ + case BIT_IOR_EXPR: + case BIT_XOR_EXPR: + return (conversion_warning (loc, type, TREE_OPERAND (expr, 0), result) + || conversion_warning (loc, type, TREE_OPERAND (expr, 1), + result)); + default_: default: conversion_kind = unsafe_conversion_p (type, expr, result, true); diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index 2d8ea20..61b1a0f 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -415,6 +415,7 @@ get_intel_cpu (struct __processor_model *cpu_model, cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE; break; case 0xa7: + case 0xa8: /* Rocket Lake. */ cpu = "rocketlake"; CHECK___builtin_cpu_is ("corei7"); @@ -487,6 +488,7 @@ get_intel_cpu (struct __processor_model *cpu_model, break; case 0x97: case 0x9a: + case 0xbf: /* Alder Lake. */ cpu = "alderlake"; CHECK___builtin_cpu_is ("corei7"); diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c index 338d09f..c1d8431 100644 --- a/gcc/common/config/riscv/riscv-common.c +++ b/gcc/common/config/riscv/riscv-common.c @@ -64,6 +64,38 @@ static const riscv_implied_info_t riscv_implied_info[] = {"zks", "zbkx"}, {"zks", "zksed"}, {"zks", "zksh"}, + + {"v", "zvl128b"}, + {"v", "zve64d"}, + + {"zve32f", "f"}, + {"zve64f", "f"}, + {"zve64d", "d"}, + + {"zve32x", "zvl32b"}, + {"zve32f", "zve32x"}, + {"zve32f", "zvl32b"}, + + {"zve64x", "zve32x"}, + {"zve64x", "zvl64b"}, + {"zve64f", "zve32f"}, + {"zve64f", "zve64x"}, + {"zve64f", "zvl64b"}, + {"zve64d", "zve64f"}, + {"zve64d", "zvl64b"}, + + {"zvl64b", "zvl32b"}, + {"zvl128b", "zvl64b"}, + {"zvl256b", "zvl128b"}, + {"zvl512b", "zvl256b"}, + {"zvl1024b", "zvl512b"}, + {"zvl2048b", "zvl1024b"}, + {"zvl4096b", "zvl2048b"}, + {"zvl8192b", "zvl4096b"}, + {"zvl16384b", "zvl8192b"}, + {"zvl32768b", "zvl16384b"}, + {"zvl65536b", "zvl32768b"}, + {NULL, NULL} }; @@ -109,6 +141,8 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"c", ISA_SPEC_CLASS_20190608, 2, 0}, {"c", ISA_SPEC_CLASS_2P2, 2, 0}, + {"v", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicsr", ISA_SPEC_CLASS_20191213, 2, 0}, {"zicsr", ISA_SPEC_CLASS_20190608, 2, 0}, @@ -131,6 +165,26 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"zksh", ISA_SPEC_CLASS_NONE, 1, 0}, {"zkt", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve32x", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve32f", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve32d", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve64x", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve64f", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve64d", ISA_SPEC_CLASS_NONE, 1, 0}, + + {"zvl32b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl64b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl128b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl256b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl512b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl1024b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl2048b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl4096b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl8192b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl16384b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl32768b", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zvl65536b", ISA_SPEC_CLASS_NONE, 1, 0}, + /* Terminate the list. */ {NULL, ISA_SPEC_CLASS_NONE, 0, 0} }; @@ -785,24 +839,58 @@ riscv_subset_list::parse_multiletter_ext (const char *p, bool explicit_version_p = false; char *ext; char backup; + size_t len; + size_t end_of_version_pos, i; + bool found_any_number = false; + bool found_minor_version = false; - while (*++q != '\0' && *q != '_' && !ISDIGIT (*q)) + /* Parse until end of this extension including version number. */ + while (*++q != '\0' && *q != '_') ; backup = *q; *q = '\0'; - ext = xstrdup (subset); + len = q - subset; *q = backup; + end_of_version_pos = len; + /* Find the begin of version string. */ + for (i = len -1; i > 0; --i) + { + if (ISDIGIT (subset[i])) + { + found_any_number = true; + continue; + } + /* Might be version seperator, but need to check one more char, + we only allow <major>p<minor>, so we could stop parsing if found + any more `p`. */ + if (subset[i] == 'p' && + !found_minor_version && + found_any_number && ISDIGIT (subset[i-1])) + { + found_minor_version = true; + continue; + } + + end_of_version_pos = i + 1; + break; + } + + backup = subset[end_of_version_pos]; + subset[end_of_version_pos] = '\0'; + ext = xstrdup (subset); + subset[end_of_version_pos] = backup; + end_of_version - = parsing_subset_version (ext, q, &major_version, &minor_version, + = parsing_subset_version (ext, subset + end_of_version_pos, &major_version, &minor_version, /* std_ext_p= */ false, &explicit_version_p); free (ext); if (end_of_version == NULL) return NULL; - *q = '\0'; + subset[end_of_version_pos] = '\0'; if (strlen (subset) == 1) { @@ -931,6 +1019,7 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"f", &gcc_options::x_target_flags, MASK_HARD_FLOAT}, {"d", &gcc_options::x_target_flags, MASK_DOUBLE_FLOAT}, {"c", &gcc_options::x_target_flags, MASK_RVC}, + {"v", &gcc_options::x_target_flags, MASK_VECTOR}, {"zicsr", &gcc_options::x_riscv_zi_subext, MASK_ZICSR}, {"zifencei", &gcc_options::x_riscv_zi_subext, MASK_ZIFENCEI}, @@ -951,6 +1040,37 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"zksh", &gcc_options::x_riscv_zk_subext, MASK_ZKSH}, {"zkt", &gcc_options::x_riscv_zk_subext, MASK_ZKT}, + {"zve32x", &gcc_options::x_target_flags, MASK_VECTOR}, + {"zve32f", &gcc_options::x_target_flags, MASK_VECTOR}, + {"zve64x", &gcc_options::x_target_flags, MASK_VECTOR}, + {"zve64f", &gcc_options::x_target_flags, MASK_VECTOR}, + {"zve64d", &gcc_options::x_target_flags, MASK_VECTOR}, + + /* We don't need to put complete EEW/EEW_FP info here, due to the + implication relation of vector extension. + e.g. v -> zve64d ... zve32x, so v has set MASK_VECTOR_EEW_FP_64, + MASK_VECTOR_EEW_FP_32, MASK_VECTOR_EEW_64 and MASK_VECTOR_EEW_32 + due to the extension implication. */ + {"zve32x", &gcc_options::x_riscv_vector_eew_flags, MASK_VECTOR_EEW_32}, + {"zve32f", &gcc_options::x_riscv_vector_eew_flags, MASK_VECTOR_EEW_FP_32}, + {"zve64x", &gcc_options::x_riscv_vector_eew_flags, MASK_VECTOR_EEW_64}, + {"zve64f", &gcc_options::x_riscv_vector_eew_flags, MASK_VECTOR_EEW_FP_32}, + {"zve64d", &gcc_options::x_riscv_vector_eew_flags, MASK_VECTOR_EEW_FP_64}, + + {"zvl32b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL32B}, + {"zvl64b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL64B}, + {"zvl128b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL128B}, + {"zvl256b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL256B}, + {"zvl512b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL512B}, + {"zvl1024b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL1024B}, + {"zvl2048b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL2048B}, + {"zvl4096b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL4096B}, + {"zvl8192b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL8192B}, + {"zvl16384b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL16384B}, + {"zvl32768b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL32768B}, + {"zvl65536b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL65536B}, + + {NULL, NULL, 0} }; diff --git a/gcc/config.gcc b/gcc/config.gcc index 89e0992..f1b8d83 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1620,7 +1620,7 @@ csky-*-*) esac ;; epiphany-*-elf | epiphany-*-rtems*) - tm_file="${tm_file} dbxelf.h elfos.h" + tm_file="dbxelf.h elfos.h ${tm_file}" tmake_file="${tmake_file} epiphany/t-epiphany" case ${target} in epiphany-*-rtems*) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 5920b29..1bca2a31 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -16337,7 +16337,7 @@ aarch64_parse_boolean_options (const char *option, /* We ended with a comma, print something. */ if (!(*specs)) { - error ("%s string ill-formed\n", option_name); + error ("%qs string ill-formed", option_name); return 0; } @@ -16393,7 +16393,7 @@ aarch64_parse_sve_width_string (const char *tune_string, int n = sscanf (tune_string, "%d", &width); if (n == EOF) { - error ("invalid format for sve_width"); + error ("invalid format for %<sve_width%>"); return; } switch (width) @@ -16405,7 +16405,7 @@ aarch64_parse_sve_width_string (const char *tune_string, case SVE_2048: break; default: - error ("invalid sve_width value: %d", width); + error ("invalid %<sve_width%> value: %d", width); } tune->sve_width = (enum aarch64_sve_vector_bits_enum) width; } @@ -16628,7 +16628,7 @@ aarch64_override_options_internal (struct gcc_options *opts) if (opts->x_aarch64_stack_protector_guard_reg_str) { if (strlen (opts->x_aarch64_stack_protector_guard_reg_str) > 100) - error ("specify a system register with a small string length."); + error ("specify a system register with a small string length"); } if (opts->x_aarch64_stack_protector_guard_offset_str) @@ -16832,7 +16832,7 @@ aarch64_print_hint_for_extensions (const std::string &str) inform (input_location, "valid arguments are: %s;" " did you mean %qs?", s, hint); else - inform (input_location, "valid arguments are: %s;", s); + inform (input_location, "valid arguments are: %s", s); XDELETEVEC (s); } @@ -16933,7 +16933,7 @@ aarch64_validate_sls_mitigation (const char *const_str) temp |= SLS_RETBR; else if (strcmp (str, "none") == 0 || strcmp (str, "all") == 0) { - error ("%<%s%> must be by itself for %<-mharden-sls=%>", str); + error ("%qs must be by itself for %<-mharden-sls=%>", str); break; } else @@ -17572,11 +17572,11 @@ aarch64_handle_attr_arch (const char *str) error ("missing name in %<target(\"arch=\")%> pragma or attribute"); break; case AARCH64_PARSE_INVALID_ARG: - error ("invalid name (\"%s\") in %<target(\"arch=\")%> pragma or attribute", str); + error ("invalid name (%qs) in %<target(\"arch=\")%> pragma or attribute", str); aarch64_print_hint_for_arch (str); break; case AARCH64_PARSE_INVALID_FEATURE: - error ("invalid feature modifier %s of value (\"%s\") in " + error ("invalid feature modifier %s of value (%qs) in " "%<target()%> pragma or attribute", invalid_extension.c_str (), str); aarch64_print_hint_for_extensions (invalid_extension); break; @@ -17614,11 +17614,11 @@ aarch64_handle_attr_cpu (const char *str) error ("missing name in %<target(\"cpu=\")%> pragma or attribute"); break; case AARCH64_PARSE_INVALID_ARG: - error ("invalid name (\"%s\") in %<target(\"cpu=\")%> pragma or attribute", str); + error ("invalid name (%qs) in %<target(\"cpu=\")%> pragma or attribute", str); aarch64_print_hint_for_core (str); break; case AARCH64_PARSE_INVALID_FEATURE: - error ("invalid feature modifier %s of value (\"%s\") in " + error ("invalid feature modifier %s of value (%qs) in " "%<target()%> pragma or attribute", invalid_extension.c_str (), str); aarch64_print_hint_for_extensions (invalid_extension); break; @@ -17645,7 +17645,7 @@ aarch64_handle_attr_cpu (const char *str) " attribute"); break; case AARCH64_PARSE_INVALID_ARG: - error ("invalid protection type (\"%s\") in %<target(\"branch-protection" + error ("invalid protection type (%qs) in %<target(\"branch-protection" "=\")%> pragma or attribute", err_str); break; case AARCH64_PARSE_OK: @@ -17680,7 +17680,7 @@ aarch64_handle_attr_tune (const char *str) switch (parse_res) { case AARCH64_PARSE_INVALID_ARG: - error ("invalid name (\"%s\") in %<target(\"tune=\")%> pragma or attribute", str); + error ("invalid name (%qs) in %<target(\"tune=\")%> pragma or attribute", str); aarch64_print_hint_for_core (str); break; default: @@ -17725,7 +17725,7 @@ aarch64_handle_attr_isa_flags (char *str) break; case AARCH64_PARSE_INVALID_FEATURE: - error ("invalid feature modifier %s of value (\"%s\") in " + error ("invalid feature modifier %s of value (%qs) in " "%<target()%> pragma or attribute", invalid_extension.c_str (), str); break; diff --git a/gcc/config/arm/aarch-common.c b/gcc/config/arm/aarch-common.c index 812017a..04a53d7 100644 --- a/gcc/config/arm/aarch-common.c +++ b/gcc/config/arm/aarch-common.c @@ -641,7 +641,7 @@ arm_md_asm_adjust (vec<rtx> &outputs, vec<rtx> & /*inputs*/, rtx x = gen_rtx_REG (mode, CC_REGNUM); x = gen_rtx_fmt_ee (code, word_mode, x, const0_rtx); - if (dest_mode == word_mode) + if (dest_mode == word_mode && REG_P (dest)) emit_insn (gen_rtx_SET (dest, x)); else { diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index eff5843..63e6834 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -392,7 +392,7 @@ cris_postdbr_cmpelim () /* Consider filled delay slots; there might be a comparison there. It's only the second insn in a sequence that is interesting. */ if (GET_CODE (pat) == SEQUENCE) - insn = as_a <rtx_insn *> XVECEXP (pat, 0, 1); + insn = as_a <rtx_insn *> (XVECEXP (pat, 0, 1)); /* The "else" eliminates temptations to consider an insn in a delay slot for elimination; it can only be a prev_cc_setter. */ else if (prev_cc_setter != 0 && GET_CODE (pat) == SET) @@ -725,7 +725,7 @@ cris_op_str (rtx x) an operator, for immediate output. If that ever happens for MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure we notice. */ - internal_error ("MULT case in cris_op_str"); + internal_error ("MULT case in %<cris_op_str%>"); break; case DIV: @@ -2213,7 +2213,7 @@ cris_side_effect_mode_ok (enum rtx_code code, rtx *ops, } /* If we get here, the caller got its initial tests wrong. */ - internal_error ("internal error: cris_side_effect_mode_ok with bad operands"); + internal_error ("internal error: %<cris_side_effect_mode_ok%> with bad operands"); } /* Queue an .ident string in the queue of top-level asm statements. @@ -2296,7 +2296,7 @@ cris_option_override (void) if (cris_cpu_version < 0 || cris_cpu_version > 10) error ("unknown CRIS version specification in %<-march=%> or " - "%<-mcpu=%> : %s", cris_cpu_str); + "%<-mcpu=%>: %s", cris_cpu_str); /* Set the target flags. */ if (cris_cpu_version >= CRIS_CPU_ETRAX4) @@ -2331,7 +2331,7 @@ cris_option_override (void) cris_tune = 10; if (cris_tune < 0 || cris_tune > 32) - error ("unknown CRIS cpu version specification in %<-mtune=%> : %s", + error ("unknown CRIS cpu version specification in %<-mtune=%>: %s", cris_tune_str); if (cris_tune >= CRIS_CPU_SVINTO) diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index c4d635b..8235509 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see /* We don't want to use gcc_assert for everything, as that can be compiled out. */ #define CRIS_ASSERT(x) \ - do { if (!(x)) internal_error ("CRIS-port assertion failed: " #x); } while (0) + do { if (!(x)) internal_error ("CRIS-port assertion failed: %s", #x); } while (0) /* Replacement for REG_P since it does not match SUBREGs. Happens for testcase Axis-20000320 with gcc-2.9x. */ diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c index e93ef1c..8b1266f 100644 --- a/gcc/config/i386/i386-expand.c +++ b/gcc/config/i386/i386-expand.c @@ -615,6 +615,23 @@ ix86_expand_vector_move (machine_mode mode, rtx operands[]) return; } + /* Special case TImode to V1TImode conversions, via V2DI. */ + if (mode == V1TImode + && SUBREG_P (op1) + && GET_MODE (SUBREG_REG (op1)) == TImode + && TARGET_64BIT && TARGET_SSE + && can_create_pseudo_p ()) + { + rtx tmp = gen_reg_rtx (V2DImode); + rtx lo = gen_reg_rtx (DImode); + rtx hi = gen_reg_rtx (DImode); + emit_move_insn (lo, gen_lowpart (DImode, SUBREG_REG (op1))); + emit_move_insn (hi, gen_highpart (DImode, SUBREG_REG (op1))); + emit_insn (gen_vec_concatv2di (tmp, lo, hi)); + emit_move_insn (op0, gen_lowpart (V1TImode, tmp)); + return; + } + /* If operand0 is a hard register, make operand1 a pseudo. */ if (can_create_pseudo_p () && !ix86_hardreg_mov_ok (op0, op1)) @@ -3882,7 +3899,7 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false) { op_true = force_reg (mode, op_true); - gen = gen_mmx_pblendvb64; + gen = gen_mmx_pblendvb_v8qi; if (mode != V8QImode) d = gen_reg_rtx (V8QImode); op_false = gen_lowpart (V8QImode, op_false); @@ -3896,7 +3913,7 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false) { op_true = force_reg (mode, op_true); - gen = gen_mmx_pblendvb32; + gen = gen_mmx_pblendvb_v4qi; if (mode != V4QImode) d = gen_reg_rtx (V4QImode); op_false = gen_lowpart (V4QImode, op_false); @@ -3904,6 +3921,14 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false) cmp = gen_lowpart (V4QImode, cmp); } break; + case E_V2QImode: + if (TARGET_SSE4_1) + { + op_true = force_reg (mode, op_true); + + gen = gen_mmx_pblendvb_v2qi; + } + break; case E_V16QImode: case E_V8HImode: case E_V8HFmode: @@ -4427,6 +4452,12 @@ ix86_expand_int_sse_cmp (rtx dest, enum rtx_code code, rtx cop0, rtx cop1, else if (code == GT && TARGET_SSE4_1) gen = gen_sminv4qi3; break; + case E_V2QImode: + if (code == GTU && TARGET_SSE2) + gen = gen_uminv2qi3; + else if (code == GT && TARGET_SSE4_1) + gen = gen_sminv2qi3; + break; case E_V8HImode: if (code == GTU && TARGET_SSE4_1) gen = gen_uminv8hi3; @@ -4520,6 +4551,7 @@ ix86_expand_int_sse_cmp (rtx dest, enum rtx_code code, rtx cop0, rtx cop1, case E_V16QImode: case E_V8QImode: case E_V4QImode: + case E_V2QImode: case E_V8HImode: case E_V4HImode: case E_V2HImode: @@ -16245,10 +16277,11 @@ ix86_expand_vector_set (bool mmx_ok, rtx target, rtx val, int elt) goto half; case E_V16HFmode: - if (TARGET_AVX2) + /* For ELT == 0, vec_setv8hf_0 can save 1 vpbroadcastw. */ + if (TARGET_AVX2 && elt != 0) { mmode = SImode; - gen_blendm = gen_avx2_pblendph; + gen_blendm = gen_avx2_pblendph_1; blendm_const = true; break; } @@ -18437,9 +18470,9 @@ expand_vec_perm_blend (struct expand_vec_perm_d *d) vperm = force_reg (vmode, vperm); if (GET_MODE_SIZE (vmode) == 4) - emit_insn (gen_mmx_pblendvb32 (target, op0, op1, vperm)); + emit_insn (gen_mmx_pblendvb_v4qi (target, op0, op1, vperm)); else if (GET_MODE_SIZE (vmode) == 8) - emit_insn (gen_mmx_pblendvb64 (target, op0, op1, vperm)); + emit_insn (gen_mmx_pblendvb_v8qi (target, op0, op1, vperm)); else if (GET_MODE_SIZE (vmode) == 16) emit_insn (gen_sse4_1_pblendvb (target, op0, op1, vperm)); else @@ -18730,7 +18763,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) { unsigned i, nelt, eltsz, mask; unsigned char perm[64]; - machine_mode vmode = V16QImode; + machine_mode vmode; struct expand_vec_perm_d nd; rtx rperm[64], vperm, target, op0, op1; @@ -18754,6 +18787,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) case 16: if (!TARGET_XOP) return false; + vmode = V16QImode; break; case 32: @@ -18803,6 +18837,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) case 16: if (!TARGET_SSSE3) return false; + vmode = V16QImode; break; case 32: @@ -18894,6 +18929,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) /* Or if vpermps can be used. */ else if (d->vmode == V16SFmode) vmode = V16SImode; + if (vmode == V64QImode) { /* vpshufb only works intra lanes, it is not @@ -18946,8 +18982,10 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) machine_mode vpmode = vmode; - if (vmode == V4QImode - || vmode == V8QImode) + nelt = GET_MODE_SIZE (vmode); + + /* Emulate narrow modes with V16QI instructions. */ + if (nelt < 16) { rtx m128 = GEN_INT (-128); @@ -18955,19 +18993,15 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) account for inactive top elements from the first operand. */ if (!d->one_operand_p) { - int sz = GET_MODE_SIZE (vmode); - for (i = 0; i < nelt; ++i) { - int ival = INTVAL (rperm[i]); - if (ival >= sz) - ival += 16-sz; - rperm[i] = GEN_INT (ival); + unsigned ival = UINTVAL (rperm[i]); + if (ival >= nelt) + rperm[i] = GEN_INT (ival + 16 - nelt); } } - /* V4QI/V8QI is emulated with V16QI instruction, fill inactive - elements in the top positions with zeros. */ + /* Fill inactive elements in the top positions with zeros. */ for (i = nelt; i < 16; ++i) rperm[i] = m128; diff --git a/gcc/config/i386/i386-opts.h b/gcc/config/i386/i386-opts.h index b31f950..8f71e89 100644 --- a/gcc/config/i386/i386-opts.h +++ b/gcc/config/i386/i386-opts.h @@ -124,8 +124,8 @@ enum instrument_return { enum harden_sls { harden_sls_none = 0, harden_sls_return = 1 << 0, - harden_sls_indirect_branch = 1 << 1, - harden_sls_all = harden_sls_return | harden_sls_indirect_branch + harden_sls_indirect_jmp = 1 << 1, + harden_sls_all = harden_sls_return | harden_sls_indirect_jmp }; #endif diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1a964fe..fb9b626 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2065,7 +2065,8 @@ merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) static int classify_argument (machine_mode mode, const_tree type, - enum x86_64_reg_class classes[MAX_CLASSES], int bit_offset) + enum x86_64_reg_class classes[MAX_CLASSES], int bit_offset, + int &zero_width_bitfields) { HOST_WIDE_INT bytes = mode == BLKmode ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode); @@ -2123,6 +2124,16 @@ classify_argument (machine_mode mode, const_tree type, misaligned integers. */ if (DECL_BIT_FIELD (field)) { + if (integer_zerop (DECL_SIZE (field))) + { + if (DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD (field)) + continue; + if (zero_width_bitfields != 2) + { + zero_width_bitfields = 1; + continue; + } + } for (i = (int_bit_position (field) + (bit_offset % 64)) / 8 / 8; i < ((int_bit_position (field) + (bit_offset % 64)) @@ -2160,7 +2171,8 @@ classify_argument (machine_mode mode, const_tree type, num = classify_argument (TYPE_MODE (type), type, subclasses, (int_bit_position (field) - + bit_offset) % 512); + + bit_offset) % 512, + zero_width_bitfields); if (!num) return 0; pos = (int_bit_position (field) @@ -2178,7 +2190,8 @@ classify_argument (machine_mode mode, const_tree type, { int num; num = classify_argument (TYPE_MODE (TREE_TYPE (type)), - TREE_TYPE (type), subclasses, bit_offset); + TREE_TYPE (type), subclasses, bit_offset, + zero_width_bitfields); if (!num) return 0; @@ -2211,7 +2224,7 @@ classify_argument (machine_mode mode, const_tree type, num = classify_argument (TYPE_MODE (TREE_TYPE (field)), TREE_TYPE (field), subclasses, - bit_offset); + bit_offset, zero_width_bitfields); if (!num) return 0; for (i = 0; i < num && i < words; i++) @@ -2231,7 +2244,7 @@ classify_argument (machine_mode mode, const_tree type, X86_64_SSEUP_CLASS, everything should be passed in memory. */ if (classes[0] != X86_64_SSE_CLASS) - return 0; + return 0; for (i = 1; i < words; i++) if (classes[i] != X86_64_SSEUP_CLASS) @@ -2257,8 +2270,8 @@ classify_argument (machine_mode mode, const_tree type, classes[i] = X86_64_SSE_CLASS; } - /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS, - everything should be passed in memory. */ + /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS, + everything should be passed in memory. */ if (classes[i] == X86_64_X87UP_CLASS && (classes[i - 1] != X86_64_X87_CLASS)) { @@ -2487,6 +2500,44 @@ classify_argument (machine_mode mode, const_tree type, } } +/* Wrapper around classify_argument with the extra zero_width_bitfields + argument, to diagnose GCC 12.1 ABI differences for C. */ + +static int +classify_argument (machine_mode mode, const_tree type, + enum x86_64_reg_class classes[MAX_CLASSES], int bit_offset) +{ + int zero_width_bitfields = 0; + static bool warned = false; + int n = classify_argument (mode, type, classes, bit_offset, + zero_width_bitfields); + if (!zero_width_bitfields || warned || !warn_psabi) + return n; + enum x86_64_reg_class alt_classes[MAX_CLASSES]; + zero_width_bitfields = 2; + if (classify_argument (mode, type, alt_classes, bit_offset, + zero_width_bitfields) != n) + zero_width_bitfields = 3; + else + for (int i = 0; i < n; i++) + if (classes[i] != alt_classes[i]) + { + zero_width_bitfields = 3; + break; + } + if (zero_width_bitfields == 3) + { + warned = true; + const char *url + = CHANGES_ROOT_URL "gcc-12/changes.html#zero_width_bitfields"; + + inform (input_location, + "the ABI of passing C structures with zero-width bit-fields" + " has changed in GCC %{12.1%}", url); + } + return n; +} + /* Examine the argument and return set number of register required in each class. Return true iff parameter should be passed in memory. */ @@ -5535,15 +5586,30 @@ ix86_output_ssemov (rtx_insn *insn, rtx *operands) case MODE_DI: /* Handle broken assemblers that require movd instead of movq. */ - if (!HAVE_AS_IX86_INTERUNIT_MOVQ - && (GENERAL_REG_P (operands[0]) - || GENERAL_REG_P (operands[1]))) - return "%vmovd\t{%1, %0|%0, %1}"; + if (GENERAL_REG_P (operands[0])) + { + if (HAVE_AS_IX86_INTERUNIT_MOVQ) + return "%vmovq\t{%1, %q0|%q0, %1}"; + else + return "%vmovd\t{%1, %q0|%q0, %1}"; + } + else if (GENERAL_REG_P (operands[1])) + { + if (HAVE_AS_IX86_INTERUNIT_MOVQ) + return "%vmovq\t{%q1, %0|%0, %q1}"; + else + return "%vmovd\t{%q1, %0|%0, %q1}"; + } else return "%vmovq\t{%1, %0|%0, %1}"; case MODE_SI: - return "%vmovd\t{%1, %0|%0, %1}"; + if (GENERAL_REG_P (operands[0])) + return "%vmovd\t{%1, %k0|%k0, %1}"; + else if (GENERAL_REG_P (operands[1])) + return "%vmovd\t{%k1, %0|%0, %k1}"; + else + return "%vmovd\t{%1, %0|%0, %1}"; case MODE_HI: if (GENERAL_REG_P (operands[0])) @@ -16037,7 +16103,7 @@ ix86_output_jmp_thunk_or_indirect (const char *thunk_name, const int regno) fprintf (asm_out_file, "\tjmp\t"); assemble_name (asm_out_file, thunk_name); putc ('\n', asm_out_file); - if ((ix86_harden_sls & harden_sls_indirect_branch)) + if ((ix86_harden_sls & harden_sls_indirect_jmp)) fputs ("\tint3\n", asm_out_file); } else @@ -16263,7 +16329,7 @@ ix86_output_indirect_jmp (rtx call_op) } else output_asm_insn ("%!jmp\t%A0", &call_op); - return (ix86_harden_sls & harden_sls_indirect_branch) ? "int3" : ""; + return (ix86_harden_sls & harden_sls_indirect_jmp) ? "int3" : ""; } /* Output return instrumentation for current function if needed. */ @@ -16367,11 +16433,14 @@ ix86_output_indirect_function_return (rtx ret_op) } else output_indirect_thunk (regno); - - return ""; } else - return "%!jmp\t%A0"; + { + output_asm_insn ("%!jmp\t%A0", &ret_op); + if (ix86_harden_sls & harden_sls_indirect_jmp) + fputs ("\tint3\n", asm_out_file); + } + return ""; } /* Output the assembly for a call instruction. */ @@ -16430,7 +16499,7 @@ ix86_output_call_insn (rtx_insn *insn, rtx call_op) { output_asm_insn (xasm, &call_op); if (!direct_p - && (ix86_harden_sls & harden_sls_indirect_branch)) + && (ix86_harden_sls & harden_sls_indirect_jmp)) return "int3"; } return ""; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index f027608..3ac0f69 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -486,7 +486,7 @@ extern unsigned char ix86_prefetch_sse; /* Fence to use after loop using storent. */ -extern tree x86_mfence; +extern GTY(()) tree x86_mfence; #define FENCE_FOLLOWING_MOVNT x86_mfence /* Once GDB has been enhanced to deal with functions without frame diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9b424a3..376df1d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2580,13 +2580,9 @@ return standard_sse_constant_opcode (insn, operands); if (SSE_REG_P (operands[0])) - return MEM_P (operands[1]) - ? "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}" - : "%vpinsrw\t{$0, %k1, %d0|%d0, %k1, 0}"; + return "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}"; else - return MEM_P (operands[0]) - ? "%vpextrw\t{$0, %1, %0|%0, %1, 0}" - : "%vpextrw\t{$0, %1, %k0|%k0, %1, 0}"; + return "%vpextrw\t{$0, %1, %0|%0, %1, 0}"; case TYPE_MSKLOG: if (operands[1] == const0_rtx) @@ -2614,13 +2610,13 @@ (const_string "mskmov") (eq_attr "alternative" "8") (const_string "msklog") - (eq_attr "alternative" "9,10,13,14") + (eq_attr "alternative" "13,14") (if_then_else (match_test "TARGET_AVX512FP16") (const_string "ssemov") (const_string "sselog1")) (eq_attr "alternative" "11") (const_string "sselog1") - (eq_attr "alternative" "12") + (eq_attr "alternative" "9,10,12") (const_string "ssemov") (match_test "optimize_function_for_size_p (cfun)") (const_string "imov") @@ -2644,7 +2640,11 @@ ] (const_string "orig"))) (set (attr "mode") - (cond [(eq_attr "alternative" "9,10,13,14") + (cond [(eq_attr "alternative" "9,10") + (if_then_else (match_test "TARGET_AVX512FP16") + (const_string "HI") + (const_string "SI")) + (eq_attr "alternative" "13,14") (if_then_else (match_test "TARGET_AVX512FP16") (const_string "HI") (const_string "TI")) @@ -3876,13 +3876,9 @@ return standard_sse_constant_opcode (insn, operands); if (SSE_REG_P (operands[0])) - return MEM_P (operands[1]) - ? "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}" - : "%vpinsrw\t{$0, %k1, %d0|%d0, %k1, 0}"; + return "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}"; else - return MEM_P (operands[0]) - ? "%vpextrw\t{$0, %1, %0|%0, %1, 0}" - : "%vpextrw\t{$0, %1, %k0|%k0, %1, 0}"; + return "%vpextrw\t{$0, %1, %0|%0, %1, 0}"; default: if (get_attr_mode (insn) == MODE_SI) @@ -3901,9 +3897,9 @@ (set (attr "type") (cond [(eq_attr "alternative" "4") (const_string "sselog1") - (eq_attr "alternative" "5") + (eq_attr "alternative" "5,6,8") (const_string "ssemov") - (eq_attr "alternative" "6,7,8,9") + (eq_attr "alternative" "7,9") (if_then_else (match_test ("TARGET_AVX512FP16")) (const_string "ssemov") @@ -3930,7 +3926,12 @@ (set (attr "mode") (cond [(eq_attr "alternative" "4") (const_string "V4SF") - (eq_attr "alternative" "6,7,8,9") + (eq_attr "alternative" "6,8") + (if_then_else + (match_test "TARGET_AVX512FP16") + (const_string "HI") + (const_string "SI")) + (eq_attr "alternative" "7,9") (if_then_else (match_test "TARGET_AVX512FP16") (const_string "HI") diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index e69955b..eb829d1 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -1144,7 +1144,7 @@ EnumValue Enum(harden_sls) String(return) Value(harden_sls_return) EnumValue -Enum(harden_sls) String(indirect-branch) Value(harden_sls_indirect_branch) +Enum(harden_sls) String(indirect-jmp) Value(harden_sls_indirect_jmp) EnumValue Enum(harden_sls) String(all) Value(harden_sls_all) diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 67b0266..fa67278 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -63,6 +63,12 @@ ;; 4-byte integer vector modes (define_mode_iterator VI_32 [V4QI V2HI]) +;; 4-byte and 2-byte integer vector modes +(define_mode_iterator VI_16_32 [V4QI V2QI V2HI]) + +;; 4-byte and 2-byte QImode vector modes +(define_mode_iterator VI1_16_32 [V4QI V2QI]) + ;; V2S* modes (define_mode_iterator V2FI [V2SF V2SI]) @@ -71,7 +77,8 @@ ;; Mapping from integer vector mode to mnemonic suffix (define_mode_attr mmxvecsize - [(V8QI "b") (V4QI "b") (V4HI "w") (V2HI "w") (V2SI "d") (V1DI "q")]) + [(V8QI "b") (V4QI "b") (V2QI "b") + (V4HI "w") (V2HI "w") (V2SI "d") (V1DI "q")]) (define_mode_attr mmxdoublemode [(V8QI "V8HI") (V4HI "V4SI")]) @@ -250,7 +257,7 @@ (define_expand "mov<mode>" [(set (match_operand:V_32 0 "nonimmediate_operand") (match_operand:V_32 1 "nonimmediate_operand"))] - "TARGET_SSE2" + "" { ix86_expand_vector_move (<MODE>mode, operands); DONE; @@ -261,8 +268,7 @@ "=r ,m ,v,v,v,m,r,v") (match_operand:V_32 1 "general_operand" "rmC,rC,C,v,m,v,v,r"))] - "TARGET_SSE2 - && !(MEM_P (operands[0]) && MEM_P (operands[1]))" + "!(MEM_P (operands[0]) && MEM_P (operands[1]))" { switch (get_attr_type (insn)) { @@ -279,7 +285,12 @@ gcc_unreachable (); } } - [(set (attr "type") + [(set (attr "isa") + (cond [(eq_attr "alternative" "6,7") + (const_string "sse2") + ] + (const_string "*"))) + (set (attr "type") (cond [(eq_attr "alternative" "2") (const_string "sselog1") (eq_attr "alternative" "3,4,5,6,7") @@ -300,12 +311,15 @@ (const_string "V4SF") (match_test "TARGET_AVX") (const_string "TI") - (match_test "optimize_function_for_size_p (cfun)") + (ior (not (match_test "TARGET_SSE2")) + (match_test "optimize_function_for_size_p (cfun)")) (const_string "V4SF") ] (const_string "TI")) + (and (eq_attr "alternative" "4,5") - (match_test "<MODE>mode == V2HFmode")) + (ior (match_test "<MODE>mode == V2HFmode") + (not (match_test "TARGET_SSE2")))) (const_string "SF") ] (const_string "SI"))) @@ -321,29 +335,19 @@ (define_insn "*push<mode>2_rex64" [(set (match_operand:V_32 0 "push_operand" "=X,X") (match_operand:V_32 1 "nonmemory_no_elim_operand" "rC,*v"))] - "TARGET_SSE2 && TARGET_64BIT" + "TARGET_64BIT" "@ push{q}\t%q1 #" [(set_attr "type" "push,multi") (set_attr "mode" "DI")]) -(define_insn "*push<mode>2" - [(set (match_operand:V_32 0 "push_operand" "=<,<") - (match_operand:V_32 1 "general_no_elim_operand" "rC*m,*v"))] - "TARGET_SSE2 && !TARGET_64BIT" - "@ - push{l}\t%1 - #" - [(set_attr "type" "push,multi") - (set_attr "mode" "SI")]) - (define_split [(set (match_operand:V_32 0 "push_operand") (match_operand:V_32 1 "sse_reg_operand"))] - "TARGET_SSE2 && reload_completed" + "TARGET_64BIT && TARGET_SSE && reload_completed" [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2))) - (set (match_dup 0) (match_dup 1))] + (set (match_dup 0) (match_dup 1))] { operands[2] = GEN_INT (-PUSH_ROUNDING (GET_MODE_SIZE (<V_32:MODE>mode))); /* Preserve memory attributes. */ @@ -353,7 +357,7 @@ (define_expand "movmisalign<mode>" [(set (match_operand:V_32 0 "nonimmediate_operand") (match_operand:V_32 1 "nonimmediate_operand"))] - "TARGET_SSE2" + "" { ix86_expand_vector_move (<MODE>mode, operands); DONE; @@ -393,13 +397,9 @@ return standard_sse_constant_opcode (insn, operands); if (SSE_REG_P (operands[0])) - return MEM_P (operands[1]) - ? "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}" - : "%vpinsrw\t{$0, %k1, %d0|%d0, %k1, 0}"; + return "%vpinsrw\t{$0, %1, %d0|%d0, %1, 0}"; else - return MEM_P (operands[0]) - ? "%vpextrw\t{$0, %1, %0|%0, %1, 0}" - : "%vpextrw\t{$0, %1, %k0|%k0, %1, 0}"; + return "%vpextrw\t{$0, %1, %0|%0, %1, 0}"; case TYPE_SSEMOV: return ix86_output_ssemov (insn, operands); @@ -409,20 +409,20 @@ } } [(set (attr "isa") - (cond [(eq_attr "alternative" "4,5,6,8,9") + (cond [(eq_attr "alternative" "6,8,9") (const_string "sse2") (eq_attr "alternative" "7") (const_string "sse4") ] (const_string "*"))) (set (attr "type") - (cond [(eq_attr "alternative" "6,7,8,9") + (cond [(eq_attr "alternative" "6,7") (if_then_else (match_test "TARGET_AVX512FP16") (const_string "ssemov") (const_string "sselog1")) (eq_attr "alternative" "4") (const_string "sselog1") - (eq_attr "alternative" "5") + (eq_attr "alternative" "5,8,9") (const_string "ssemov") (match_test "optimize_function_for_size_p (cfun)") (const_string "imov") @@ -444,10 +444,14 @@ ] (const_string "orig"))) (set (attr "mode") - (cond [(eq_attr "alternative" "6,7,8,9") + (cond [(eq_attr "alternative" "6,7") (if_then_else (match_test "TARGET_AVX512FP16") (const_string "HI") (const_string "TI")) + (eq_attr "alternative" "8,9") + (if_then_else (match_test "TARGET_AVX512FP16") + (const_string "HI") + (const_string "SI")) (eq_attr "alternative" "4") (cond [(match_test "TARGET_AVX") (const_string "TI") @@ -1820,10 +1824,10 @@ (set_attr "mode" "DI,TI,TI")]) (define_insn "*<insn><mode>3" - [(set (match_operand:VI_32 0 "register_operand" "=x,Yw") - (sat_plusminus:VI_32 - (match_operand:VI_32 1 "register_operand" "<comm>0,Yw") - (match_operand:VI_32 2 "register_operand" "x,Yw")))] + [(set (match_operand:VI_16_32 0 "register_operand" "=x,Yw") + (sat_plusminus:VI_16_32 + (match_operand:VI_16_32 1 "register_operand" "<comm>0,Yw") + (match_operand:VI_16_32 2 "register_operand" "x,Yw")))] "TARGET_SSE2" "@ p<plusminus_mnemonic><mmxvecsize>\t{%2, %0|%0, %2} @@ -2151,11 +2155,11 @@ (match_operand:V4HI 2 "register_operand")))] "TARGET_MMX_WITH_SSE") -(define_insn "<code>v4qi3" - [(set (match_operand:V4QI 0 "register_operand" "=Yr,*x,Yv") - (smaxmin:V4QI - (match_operand:V4QI 1 "register_operand" "%0,0,Yv") - (match_operand:V4QI 2 "register_operand" "Yr,*x,Yv")))] +(define_insn "<code><mode>3" + [(set (match_operand:VI1_16_32 0 "register_operand" "=Yr,*x,Yv") + (smaxmin:VI1_16_32 + (match_operand:VI1_16_32 1 "register_operand" "%0,0,Yv") + (match_operand:VI1_16_32 2 "register_operand" "Yr,*x,Yv")))] "TARGET_SSE4_1" "@ p<maxmin_int>b\t{%2, %0|%0, %2} @@ -2229,11 +2233,11 @@ (match_operand:V8QI 2 "register_operand")))] "TARGET_MMX_WITH_SSE") -(define_insn "<code>v4qi3" - [(set (match_operand:V4QI 0 "register_operand" "=x,Yw") - (umaxmin:V4QI - (match_operand:V4QI 1 "register_operand" "%0,Yw") - (match_operand:V4QI 2 "register_operand" "x,Yw")))] +(define_insn "<code><mode>3" + [(set (match_operand:VI1_16_32 0 "register_operand" "=x,Yw") + (umaxmin:VI1_16_32 + (match_operand:VI1_16_32 1 "register_operand" "%0,Yw") + (match_operand:VI1_16_32 2 "register_operand" "x,Yw")))] "TARGET_SSE2" "@ p<maxmin_int>b\t{%2, %0|%0, %2} @@ -2280,9 +2284,9 @@ "TARGET_SSSE3 && TARGET_MMX_WITH_SSE") (define_insn "abs<mode>2" - [(set (match_operand:VI_32 0 "register_operand" "=Yv") - (abs:VI_32 - (match_operand:VI_32 1 "register_operand" "Yv")))] + [(set (match_operand:VI_16_32 0 "register_operand" "=Yv") + (abs:VI_16_32 + (match_operand:VI_16_32 1 "register_operand" "Yv")))] "TARGET_SSSE3" "%vpabs<mmxvecsize>\t{%1, %0|%0, %1}" [(set_attr "type" "sselog1") @@ -2414,10 +2418,10 @@ (set_attr "mode" "DI,TI,TI")]) (define_insn "*eq<mode>3" - [(set (match_operand:VI_32 0 "register_operand" "=x,x") - (eq:VI_32 - (match_operand:VI_32 1 "register_operand" "%0,x") - (match_operand:VI_32 2 "register_operand" "x,x")))] + [(set (match_operand:VI_16_32 0 "register_operand" "=x,x") + (eq:VI_16_32 + (match_operand:VI_16_32 1 "register_operand" "%0,x") + (match_operand:VI_16_32 2 "register_operand" "x,x")))] "TARGET_SSE2" "@ pcmpeq<mmxvecsize>\t{%2, %0|%0, %2} @@ -2442,10 +2446,10 @@ (set_attr "mode" "DI,TI,TI")]) (define_insn "*gt<mode>3" - [(set (match_operand:VI_32 0 "register_operand" "=x,x") - (gt:VI_32 - (match_operand:VI_32 1 "register_operand" "0,x") - (match_operand:VI_32 2 "register_operand" "x,x")))] + [(set (match_operand:VI_16_32 0 "register_operand" "=x,x") + (gt:VI_16_32 + (match_operand:VI_16_32 1 "register_operand" "0,x") + (match_operand:VI_16_32 2 "register_operand" "x,x")))] "TARGET_SSE2" "@ pcmpgt<mmxvecsize>\t{%2, %0|%0, %2} @@ -2469,10 +2473,10 @@ (set_attr "mode" "TI")]) (define_insn "*xop_maskcmp<mode>3" - [(set (match_operand:VI_32 0 "register_operand" "=x") - (match_operator:VI_32 1 "ix86_comparison_int_operator" - [(match_operand:VI_32 2 "register_operand" "x") - (match_operand:VI_32 3 "register_operand" "x")]))] + [(set (match_operand:VI_16_32 0 "register_operand" "=x") + (match_operator:VI_16_32 1 "ix86_comparison_int_operator" + [(match_operand:VI_16_32 2 "register_operand" "x") + (match_operand:VI_16_32 3 "register_operand" "x")]))] "TARGET_XOP" "vpcom%Y1<mmxvecsize>\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "sse4arg") @@ -2497,10 +2501,10 @@ (set_attr "mode" "TI")]) (define_insn "*xop_maskcmp_uns<mode>3" - [(set (match_operand:VI_32 0 "register_operand" "=x") - (match_operator:VI_32 1 "ix86_comparison_uns_operator" - [(match_operand:VI_32 2 "register_operand" "x") - (match_operand:VI_32 3 "register_operand" "x")]))] + [(set (match_operand:VI_16_32 0 "register_operand" "=x") + (match_operator:VI_16_32 1 "ix86_comparison_uns_operator" + [(match_operand:VI_16_32 2 "register_operand" "x") + (match_operand:VI_16_32 3 "register_operand" "x")]))] "TARGET_XOP" "vpcom%Y1u<mmxvecsize>\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "ssecmp") @@ -2523,10 +2527,10 @@ }) (define_expand "vec_cmp<mode><mode>" - [(set (match_operand:VI_32 0 "register_operand") - (match_operator:VI_32 1 "" - [(match_operand:VI_32 2 "register_operand") - (match_operand:VI_32 3 "register_operand")]))] + [(set (match_operand:VI_16_32 0 "register_operand") + (match_operator:VI_16_32 1 "" + [(match_operand:VI_16_32 2 "register_operand") + (match_operand:VI_16_32 3 "register_operand")]))] "TARGET_SSE2" { bool ok = ix86_expand_int_vec_cmp (operands); @@ -2547,10 +2551,10 @@ }) (define_expand "vec_cmpu<mode><mode>" - [(set (match_operand:VI_32 0 "register_operand") - (match_operator:VI_32 1 "" - [(match_operand:VI_32 2 "register_operand") - (match_operand:VI_32 3 "register_operand")]))] + [(set (match_operand:VI_16_32 0 "register_operand") + (match_operator:VI_16_32 1 "" + [(match_operand:VI_16_32 2 "register_operand") + (match_operand:VI_16_32 3 "register_operand")]))] "TARGET_SSE2" { bool ok = ix86_expand_int_vec_cmp (operands); @@ -2576,14 +2580,14 @@ }) (define_expand "vcond<mode><mode>" - [(set (match_operand:VI_32 0 "register_operand") - (if_then_else:VI_32 + [(set (match_operand:VI_16_32 0 "register_operand") + (if_then_else:VI_16_32 (match_operator 3 "" - [(match_operand:VI_32 4 "register_operand") - (match_operand:VI_32 5 "register_operand")]) - (match_operand:VI_32 1) - (match_operand:VI_32 2)))] - "TARGET_SSE2" + [(match_operand:VI_16_32 4 "register_operand") + (match_operand:VI_16_32 5 "register_operand")]) + (match_operand:VI_16_32 1) + (match_operand:VI_16_32 2)))] + "TARGET_SSE4_1" { bool ok = ix86_expand_int_vcond (operands); gcc_assert (ok); @@ -2608,14 +2612,14 @@ }) (define_expand "vcondu<mode><mode>" - [(set (match_operand:VI_32 0 "register_operand") - (if_then_else:VI_32 + [(set (match_operand:VI_16_32 0 "register_operand") + (if_then_else:VI_16_32 (match_operator 3 "" - [(match_operand:VI_32 4 "register_operand") - (match_operand:VI_32 5 "register_operand")]) - (match_operand:VI_32 1) - (match_operand:VI_32 2)))] - "TARGET_SSE2" + [(match_operand:VI_16_32 4 "register_operand") + (match_operand:VI_16_32 5 "register_operand")]) + (match_operand:VI_16_32 1) + (match_operand:VI_16_32 2)))] + "TARGET_SSE4_1" { bool ok = ix86_expand_int_vcond (operands); gcc_assert (ok); @@ -2636,19 +2640,19 @@ }) (define_expand "vcond_mask_<mode><mode>" - [(set (match_operand:VI_32 0 "register_operand") - (vec_merge:VI_32 - (match_operand:VI_32 1 "register_operand") - (match_operand:VI_32 2 "register_operand") - (match_operand:VI_32 3 "register_operand")))] - "TARGET_SSE2" + [(set (match_operand:VI_16_32 0 "register_operand") + (vec_merge:VI_16_32 + (match_operand:VI_16_32 1 "register_operand") + (match_operand:VI_16_32 2 "register_operand") + (match_operand:VI_16_32 3 "register_operand")))] + "TARGET_SSE4_1" { ix86_expand_sse_movcc (operands[0], operands[3], operands[1], operands[2]); DONE; }) -(define_insn "mmx_pblendvb64" +(define_insn "mmx_pblendvb_v8qi" [(set (match_operand:V8QI 0 "register_operand" "=Yr,*x,x") (unspec:V8QI [(match_operand:V8QI 1 "register_operand" "0,0,x") @@ -2668,12 +2672,12 @@ (set_attr "btver2_decode" "vector") (set_attr "mode" "TI")]) -(define_insn "mmx_pblendvb32" - [(set (match_operand:V4QI 0 "register_operand" "=Yr,*x,x") - (unspec:V4QI - [(match_operand:V4QI 1 "register_operand" "0,0,x") - (match_operand:V4QI 2 "register_operand" "Yr,*x,x") - (match_operand:V4QI 3 "register_operand" "Yz,Yz,x")] +(define_insn "mmx_pblendvb_<mode>" + [(set (match_operand:VI_16_32 0 "register_operand" "=Yr,*x,x") + (unspec:VI_16_32 + [(match_operand:VI_16_32 1 "register_operand" "0,0,x") + (match_operand:VI_16_32 2 "register_operand" "Yr,*x,x") + (match_operand:VI_16_32 3 "register_operand" "Yz,Yz,x")] UNSPEC_BLENDV))] "TARGET_SSE4_1" "@ @@ -2756,6 +2760,45 @@ "TARGET_SSE2" "operands[2] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode));") +(define_insn "one_cmplv2qi2" + [(set (match_operand:V2QI 0 "register_operand" "=r,&x,&v") + (not:V2QI + (match_operand:V2QI 1 "register_operand" "0,x,v")))] + "" + "#" + [(set_attr "isa" "*,sse2,avx512vl") + (set_attr "type" "negnot,sselog1,sselog1") + (set_attr "mode" "SI,TI,TI")]) + +(define_split + [(set (match_operand:V2QI 0 "general_reg_operand") + (not:V2QI + (match_operand:V2QI 1 "general_reg_operand")))] + "reload_completed" + [(set (match_dup 0) + (not:SI (match_dup 1)))] +{ + operands[1] = gen_lowpart (SImode, operands[1]); + operands[0] = gen_lowpart (SImode, operands[0]); +}) + +(define_split + [(set (match_operand:V2QI 0 "sse_reg_operand") + (not:V2QI + (match_operand:V2QI 1 "sse_reg_operand")))] + "TARGET_SSE2 && reload_completed" + [(set (match_dup 0) + (xor:V4QI + (match_dup 0) (match_dup 1)))] +{ + emit_insn + (gen_rtx_SET (gen_rtx_REG (V16QImode, REGNO (operands[0])), + CONSTM1_RTX (V16QImode))); + + operands[1] = gen_lowpart (V4QImode, operands[1]); + operands[0] = gen_lowpart (V4QImode, operands[0]); +}) + (define_insn "mmx_andnot<mode>3" [(set (match_operand:MMXMODEI 0 "register_operand" "=y,x,x,v") (and:MMXMODEI @@ -2786,6 +2829,69 @@ (set_attr "type" "sselog") (set_attr "mode" "TI")]) +(define_insn "*andnotv2qi3" + [(set (match_operand:V2QI 0 "register_operand" "=&r,r,x,x,v") + (and:V2QI + (not:V2QI (match_operand:V2QI 1 "register_operand" "0,r,0,x,v")) + (match_operand:V2QI 2 "register_operand" "r,r,x,x,v"))) + (clobber (reg:CC FLAGS_REG))] + "" + "#" + [(set_attr "isa" "*,bmi,sse2_noavx,avx,avx512vl") + (set_attr "type" "alu,bitmanip,sselog,sselog,sselog") + (set_attr "mode" "SI,SI,TI,TI,TI")]) + +(define_split + [(set (match_operand:V2QI 0 "general_reg_operand") + (and:V2QI + (not:V2QI (match_operand:V2QI 1 "general_reg_operand")) + (match_operand:V2QI 2 "general_reg_operand"))) + (clobber (reg:CC FLAGS_REG))] + "TARGET_BMI && reload_completed" + [(parallel + [(set (match_dup 0) + (and:SI (not:SI (match_dup 1)) (match_dup 2))) + (clobber (reg:CC FLAGS_REG))])] +{ + operands[2] = gen_lowpart (SImode, operands[2]); + operands[1] = gen_lowpart (SImode, operands[1]); + operands[0] = gen_lowpart (SImode, operands[0]); +}) + +(define_split + [(set (match_operand:V2QI 0 "general_reg_operand") + (and:V2QI + (not:V2QI (match_operand:V2QI 1 "general_reg_operand")) + (match_operand:V2QI 2 "general_reg_operand"))) + (clobber (reg:CC FLAGS_REG))] + "!TARGET_BMI && reload_completed" + [(set (match_dup 0) + (not:SI (match_dup 1))) + (parallel + [(set (match_dup 0) + (and:SI (match_dup 0) (match_dup 2))) + (clobber (reg:CC FLAGS_REG))])] +{ + operands[2] = gen_lowpart (SImode, operands[2]); + operands[1] = gen_lowpart (SImode, operands[1]); + operands[0] = gen_lowpart (SImode, operands[0]); +}) + +(define_split + [(set (match_operand:V2QI 0 "sse_reg_operand") + (and:V2QI + (not:V2QI (match_operand:V2QI 1 "sse_reg_operand")) + (match_operand:V2QI 2 "sse_reg_operand"))) + (clobber (reg:CC FLAGS_REG))] + "TARGET_SSE2 && reload_completed" + [(set (match_dup 0) + (and:V4QI (not:V4QI (match_dup 1)) (match_dup 2)))] +{ + operands[2] = gen_lowpart (V4QImode, operands[2]); + operands[1] = gen_lowpart (V4QImode, operands[1]); + operands[0] = gen_lowpart (V4QImode, operands[0]); +}) + (define_expand "mmx_<code><mode>3" [(set (match_operand:MMXMODEI 0 "register_operand") (any_logic:MMXMODEI @@ -2832,6 +2938,50 @@ (set_attr "type" "sselog") (set_attr "mode" "TI")]) +(define_insn "<code>v2qi3" + [(set (match_operand:V2QI 0 "register_operand" "=r,x,x,v") + (any_logic:V2QI + (match_operand:V2QI 1 "register_operand" "%0,0,x,v") + (match_operand:V2QI 2 "register_operand" "r,x,x,v"))) + (clobber (reg:CC FLAGS_REG))] + "" + "#" + [(set_attr "isa" "*,sse2_noavx,avx,avx512vl") + (set_attr "type" "alu,sselog,sselog,sselog") + (set_attr "mode" "SI,TI,TI,TI")]) + +(define_split + [(set (match_operand:V2QI 0 "general_reg_operand") + (any_logic:V2QI + (match_operand:V2QI 1 "general_reg_operand") + (match_operand:V2QI 2 "general_reg_operand"))) + (clobber (reg:CC FLAGS_REG))] + "reload_completed" + [(parallel + [(set (match_dup 0) + (any_logic:SI (match_dup 1) (match_dup 2))) + (clobber (reg:CC FLAGS_REG))])] +{ + operands[2] = gen_lowpart (SImode, operands[2]); + operands[1] = gen_lowpart (SImode, operands[1]); + operands[0] = gen_lowpart (SImode, operands[0]); +}) + +(define_split + [(set (match_operand:V2QI 0 "sse_reg_operand") + (any_logic:V2QI + (match_operand:V2QI 1 "sse_reg_operand") + (match_operand:V2QI 2 "sse_reg_operand"))) + (clobber (reg:CC FLAGS_REG))] + "TARGET_SSE2 && reload_completed" + [(set (match_dup 0) + (any_logic:V4QI (match_dup 1) (match_dup 2)))] +{ + operands[2] = gen_lowpart (V4QImode, operands[2]); + operands[1] = gen_lowpart (V4QImode, operands[1]); + operands[0] = gen_lowpart (V4QImode, operands[0]); +}) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Parallel integral element swizzling @@ -4216,6 +4366,26 @@ (set_attr "type" "sseiadd") (set_attr "mode" "TI")]) +(define_insn "uavgv2qi3_ceil" + [(set (match_operand:V2QI 0 "register_operand" "=x,Yw") + (truncate:V2QI + (lshiftrt:V2HI + (plus:V2HI + (plus:V2HI + (zero_extend:V2HI + (match_operand:V2QI 1 "register_operand" "%0,Yw")) + (zero_extend:V2HI + (match_operand:V2QI 2 "register_operand" "x,Yw"))) + (const_vector:V2HI [(const_int 1) (const_int 1)])) + (const_int 1))))] + "TARGET_SSE2" + "@ + pavgb\t{%2, %0|%0, %2} + vpavgb\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") + (set_attr "mode" "TI")]) + (define_insn "uavgv2hi3_ceil" [(set (match_operand:V2HI 0 "register_operand" "=x,Yw") (truncate:V2HI diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 033b60d..0864748 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3895,6 +3895,22 @@ UNSPEC_PCMP_ITER))] "operands[4] = GEN_INT (INTVAL (operands[3]) ^ 4);") +(define_insn "*<avx512>_eq<mode>3<mask_scalar_merge_name>_1" + [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k,k") + (unspec:<avx512fmaskmode> + [(match_operand:VI12_AVX512VL 1 "nonimm_or_0_operand" "%v,v") + (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "vm,C") + (const_int 0)] + UNSPEC_PCMP_ITER))] + "TARGET_AVX512BW && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "@ + vpcmpeq<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2} + vptestnm<ssemodesuffix>\t{%1, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %1}" + [(set_attr "type" "ssecmp") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) + (define_insn "<avx512>_ucmp<mode>3<mask_scalar_merge_name>" [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k") (unspec:<avx512fmaskmode> @@ -3977,6 +3993,22 @@ (set_attr "prefix" "evex") (set_attr "mode" "<VI12_AVX512VL:sseinsnmode>")]) +(define_insn "*<avx512>_eq<mode>3<mask_scalar_merge_name>_1" + [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k,k") + (unspec:<avx512fmaskmode> + [(match_operand:VI48_AVX512VL 1 "nonimm_or_0_operand" "%v,v") + (match_operand:VI48_AVX512VL 2 "nonimm_or_0_operand" "vm,C") + (const_int 0)] + UNSPEC_PCMP_ITER))] + "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "@ + vpcmpeq<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2} + vptestnm<ssemodesuffix>\t{%1, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %1}" + [(set_attr "type" "ssecmp") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) + (define_insn "<avx512>_ucmp<mode>3<mask_scalar_merge_name>" [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k") (unspec:<avx512fmaskmode> @@ -4750,7 +4782,8 @@ "TARGET_SSE && ix86_pre_reload_split ()" "#" "&& 1" - [(set (match_dup 0) (match_dup 1))]) + [(set (match_dup 0) (match_dup 1))] + "operands[1] = force_reg (<MODE>mode, operands[1]);") (define_expand "copysign<mode>3" [(set (match_dup 4) @@ -16247,38 +16280,6 @@ "TARGET_AVX512F" "ix86_fixup_binary_operands_no_copy (EQ, <MODE>mode, operands);") -(define_insn "*<avx512>_eq<mode>3<mask_scalar_merge_name>_1" - [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k,k") - (unspec:<avx512fmaskmode> - [(match_operand:VI12_AVX512VL 1 "nonimm_or_0_operand" "%v,v") - (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "vm,C") - (const_int 0)] - UNSPEC_PCMP))] - "TARGET_AVX512BW && !(MEM_P (operands[1]) && MEM_P (operands[2]))" - "@ - vpcmpeq<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2} - vptestnm<ssemodesuffix>\t{%1, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %1}" - [(set_attr "type" "ssecmp") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "evex") - (set_attr "mode" "<sseinsnmode>")]) - -(define_insn "*<avx512>_eq<mode>3<mask_scalar_merge_name>_1" - [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k,k") - (unspec:<avx512fmaskmode> - [(match_operand:VI48_AVX512VL 1 "nonimm_or_0_operand" "%v,v") - (match_operand:VI48_AVX512VL 2 "nonimm_or_0_operand" "vm,C") - (const_int 0)] - UNSPEC_PCMP))] - "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))" - "@ - vpcmpeq<ssemodesuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2} - vptestnm<ssemodesuffix>\t{%1, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %1}" - [(set_attr "type" "ssecmp") - (set_attr "prefix_extra" "1") - (set_attr "prefix" "evex") - (set_attr "mode" "<sseinsnmode>")]) - (define_insn "*sse4_1_eqv2di3" [(set (match_operand:V2DI 0 "register_operand" "=Yr,*x,x") (eq:V2DI @@ -16630,7 +16631,7 @@ (define_insn "*andnot<mode>3" [(set (match_operand:VI 0 "register_operand" "=x,x,v") (and:VI - (not:VI (match_operand:VI 1 "register_operand" "0,x,v")) + (not:VI (match_operand:VI 1 "vector_operand" "0,x,v")) (match_operand:VI 2 "bcst_vector_operand" "xBm,xm,vmBr")))] "TARGET_SSE" { @@ -21291,10 +21292,7 @@ (lt:VI1_AVX2 (match_dup 3) (match_dup 4))] UNSPEC_BLENDV))] "operands[3] = gen_lowpart (<MODE>mode, operands[3]);") -(define_mode_attr blendsuf - [(V8HI "w") (V8HF "ph")]) - -(define_insn "sse4_1_pblend<blendsuf>" +(define_insn "sse4_1_pblend<ssemodesuffix>" [(set (match_operand:V8_128 0 "register_operand" "=Yr,*x,x") (vec_merge:V8_128 (match_operand:V8_128 2 "vector_operand" "YrBm,*xBm,xm") @@ -21313,11 +21311,11 @@ (set_attr "mode" "TI")]) ;; The builtin uses an 8-bit immediate. Expand that. -(define_expand "avx2_pblendw" - [(set (match_operand:V16HI 0 "register_operand") - (vec_merge:V16HI - (match_operand:V16HI 2 "nonimmediate_operand") - (match_operand:V16HI 1 "register_operand") +(define_expand "avx2_pblend<ssemodesuffix>" + [(set (match_operand:V16_256 0 "register_operand") + (vec_merge:V16_256 + (match_operand:V16_256 2 "nonimmediate_operand") + (match_operand:V16_256 1 "register_operand") (match_operand:SI 3 "const_0_to_255_operand")))] "TARGET_AVX2" { @@ -21325,11 +21323,11 @@ operands[3] = GEN_INT (val << 8 | val); }) -(define_expand "avx2_pblendph" - [(set (match_operand:V16HF 0 "register_operand") - (vec_merge:V16HF - (match_operand:V16HF 2 "register_operand") - (match_operand:V16HF 1 "register_operand") +(define_expand "avx2_pblend<ssemodesuffix>_1" + [(set (match_operand:V16_256 0 "register_operand") + (vec_merge:V16_256 + (match_operand:V16_256 2 "register_operand") + (match_operand:V16_256 1 "register_operand") (match_operand:SI 3 "const_int_operand")))] "TARGET_AVX2 && !((INTVAL (operands[3]) & 0xff) && (INTVAL (operands[3]) & 0xff00))" @@ -21339,7 +21337,7 @@ emit_move_insn (operands[0], operands[1]); else { - rtx tmp = gen_reg_rtx (V16HImode); + rtx tmp = gen_reg_rtx (<MODE>mode); rtx blendw_idx, blendd_idx; if (mask & 0xff) @@ -21352,13 +21350,12 @@ blendw_idx = GEN_INT (mask >> 8 & 0xff); blendd_idx = GEN_INT (240); } - operands[1] = lowpart_subreg (V16HImode, operands[1], V16HFmode); - operands[2] = lowpart_subreg (V16HImode, operands[2], V16HFmode); - emit_insn (gen_avx2_pblendw (tmp, operands[1], operands[2], blendw_idx)); + emit_insn (gen_avx2_pblend<ssemodesuffix> (tmp, operands[1], + operands[2], blendw_idx)); - operands[0] = lowpart_subreg (V8SImode, operands[0], V16HFmode); - tmp = lowpart_subreg (V8SImode, tmp, V16HImode); - operands[1] = lowpart_subreg (V8SImode, operands[1], V16HImode); + operands[0] = lowpart_subreg (V8SImode, operands[0], <MODE>mode); + tmp = lowpart_subreg (V8SImode, tmp, <MODE>mode); + operands[1] = lowpart_subreg (V8SImode, operands[1], <MODE>mode); emit_insn (gen_avx2_pblenddv8si (operands[0], operands[1], tmp, blendd_idx)); } @@ -21366,11 +21363,11 @@ DONE; }) -(define_insn "*avx2_pblendw" - [(set (match_operand:V16HI 0 "register_operand" "=x") - (vec_merge:V16HI - (match_operand:V16HI 2 "nonimmediate_operand" "xm") - (match_operand:V16HI 1 "register_operand" "x") +(define_insn "*avx2_pblend<ssemodesuffix>" + [(set (match_operand:V16_256 0 "register_operand" "=x") + (vec_merge:V16_256 + (match_operand:V16_256 2 "nonimmediate_operand" "xm") + (match_operand:V16_256 1 "register_operand" "x") (match_operand:SI 3 "avx2_pblendw_operand" "n")))] "TARGET_AVX2" { diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h index 728dff0..d61bd70 100644 --- a/gcc/config/nvptx/nvptx.h +++ b/gcc/config/nvptx/nvptx.h @@ -319,7 +319,7 @@ struct GTY(()) machine_function #define NO_DOT_IN_LABEL #define ASM_COMMENT_START "//" -#define STORE_FLAG_VALUE -1 +#define STORE_FLAG_VALUE 1 #define FLOAT_STORE_FLAG_VALUE(MODE) REAL_VALUE_ATOF("1.0", (MODE)) #define CASE_VECTOR_MODE SImode diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index 77ac36d..ce74672 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -215,7 +215,7 @@ ;; get variables in this mode and pseudos are never spilled. (define_insn "movbi" [(set (match_operand:BI 0 "nvptx_register_operand" "=R,R,R") - (match_operand:BI 1 "nvptx_nonmemory_operand" "R,P0,Pn"))] + (match_operand:BI 1 "nvptx_nonmemory_operand" "R,P0,P1"))] "" "@ %.\\tmov%t0\\t%0, %1; @@ -592,6 +592,13 @@ "" "%.\\tnot.b%T0\\t%0, %1;") +(define_insn "*cnot<mode>2" + [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") + (eq:HSDIM (match_operand:HSDIM 1 "nvptx_register_operand" "R") + (const_int 0)))] + "" + "%.\\tcnot.b%T0\\t%0, %1;") + (define_insn "bitrev<mode>2" [(set (match_operand:SDIM 0 "nvptx_register_operand" "=R") (unspec:SDIM [(match_operand:SDIM 1 "nvptx_register_operand" "R")] @@ -859,12 +866,26 @@ ;; Conditional stores -(define_insn "setcc_from_bi" - [(set (match_operand:SI 0 "nvptx_register_operand" "=R") - (ne:SI (match_operand:BI 1 "nvptx_register_operand" "R") - (const_int 0)))] +(define_insn "setcc<mode>_from_bi" + [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") + (ne:HSDIM (match_operand:BI 1 "nvptx_register_operand" "R") + (const_int 0)))] + "" + "%.\\tselp%t0\\t%0, 1, 0, %1;") + +(define_insn "extendbi<mode>2" + [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") + (sign_extend:HSDIM + (match_operand:BI 1 "nvptx_register_operand" "R")))] "" - "%.\\tselp%t0 %0,-1,0,%1;") + "%.\\tselp%t0\\t%0, -1, 0, %1;") + +(define_insn "zero_extendbi<mode>2" + [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") + (zero_extend:HSDIM + (match_operand:BI 1 "nvptx_register_operand" "R")))] + "" + "%.\\tselp%t0\\t%0, 1, 0, %1;") (define_insn "sel_true<mode>" [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") @@ -902,22 +923,6 @@ "" "%.\\tselp%t0\\t%0, %3, %2, %1;") -(define_insn "setcc_int<mode>" - [(set (match_operand:SI 0 "nvptx_register_operand" "=R") - (match_operator:SI 1 "nvptx_comparison_operator" - [(match_operand:HSDIM 2 "nvptx_register_operand" "R") - (match_operand:HSDIM 3 "nvptx_nonmemory_operand" "Ri")]))] - "" - "%.\\tset%t0%c1\\t%0, %2, %3;") - -(define_insn "setcc_int<mode>" - [(set (match_operand:SI 0 "nvptx_register_operand" "=R") - (match_operator:SI 1 "nvptx_float_comparison_operator" - [(match_operand:SDFM 2 "nvptx_register_operand" "R") - (match_operand:SDFM 3 "nvptx_nonmemory_operand" "RF")]))] - "" - "%.\\tset%t0%c1\\t%0, %2, %3;") - (define_insn "setcc_float<mode>" [(set (match_operand:SF 0 "nvptx_register_operand" "=R") (match_operator:SF 1 "nvptx_comparison_operator" @@ -934,29 +939,35 @@ "" "%.\\tset%t0%c1\\t%0, %2, %3;") -(define_expand "cstorebi4" - [(set (match_operand:SI 0 "nvptx_register_operand") - (match_operator:SI 1 "ne_operator" - [(match_operand:BI 2 "nvptx_register_operand") - (match_operand:BI 3 "const0_operand")]))] - "" - "") - (define_expand "cstore<mode>4" [(set (match_operand:SI 0 "nvptx_register_operand") (match_operator:SI 1 "nvptx_comparison_operator" - [(match_operand:HSDIM 2 "nvptx_register_operand") - (match_operand:HSDIM 3 "nvptx_nonmemory_operand")]))] + [(match_operand:HSDIM 2 "nvptx_register_operand") + (match_operand:HSDIM 3 "nvptx_nonmemory_operand")]))] "" - "") +{ + rtx reg = gen_reg_rtx (BImode); + rtx cmp = gen_rtx_fmt_ee (GET_CODE (operands[1]), BImode, + operands[2], operands[3]); + emit_move_insn (reg, cmp); + emit_insn (gen_setccsi_from_bi (operands[0], reg)); + DONE; +}) (define_expand "cstore<mode>4" [(set (match_operand:SI 0 "nvptx_register_operand") (match_operator:SI 1 "nvptx_float_comparison_operator" - [(match_operand:SDFM 2 "nvptx_register_operand") - (match_operand:SDFM 3 "nvptx_nonmemory_operand")]))] + [(match_operand:SDFM 2 "nvptx_register_operand") + (match_operand:SDFM 3 "nvptx_nonmemory_operand")]))] "" - "") +{ + rtx reg = gen_reg_rtx (BImode); + rtx cmp = gen_rtx_fmt_ee (GET_CODE (operands[1]), BImode, + operands[2], operands[3]); + emit_move_insn (reg, cmp); + emit_insn (gen_setccsi_from_bi (operands[0], reg)); + DONE; +}) ;; Calls diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 6a0354d..929e4e3 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -105,4 +105,35 @@ enum stack_protector_guard { #define TARGET_ZKSH ((riscv_zk_subext & MASK_ZKSH) != 0) #define TARGET_ZKT ((riscv_zk_subext & MASK_ZKT) != 0) +#define MASK_VECTOR_EEW_32 (1 << 0) +#define MASK_VECTOR_EEW_64 (1 << 1) +#define MASK_VECTOR_EEW_FP_32 (1 << 2) +#define MASK_VECTOR_EEW_FP_64 (1 << 3) + +#define MASK_ZVL32B (1 << 0) +#define MASK_ZVL64B (1 << 1) +#define MASK_ZVL128B (1 << 2) +#define MASK_ZVL256B (1 << 3) +#define MASK_ZVL512B (1 << 4) +#define MASK_ZVL1024B (1 << 5) +#define MASK_ZVL2048B (1 << 6) +#define MASK_ZVL4096B (1 << 7) +#define MASK_ZVL8192B (1 << 8) +#define MASK_ZVL16384B (1 << 9) +#define MASK_ZVL32768B (1 << 10) +#define MASK_ZVL65536B (1 << 11) + +#define TARGET_ZVL32B ((riscv_zvl_flags & MASK_ZVL32B) != 0) +#define TARGET_ZVL64B ((riscv_zvl_flags & MASK_ZVL64B) != 0) +#define TARGET_ZVL128B ((riscv_zvl_flags & MASK_ZVL128B) != 0) +#define TARGET_ZVL256B ((riscv_zvl_flags & MASK_ZVL256B) != 0) +#define TARGET_ZVL512B ((riscv_zvl_flags & MASK_ZVL512B) != 0) +#define TARGET_ZVL1024B ((riscv_zvl_flags & MASK_ZVL1024B) != 0) +#define TARGET_ZVL2048B ((riscv_zvl_flags & MASK_ZVL2048B) != 0) +#define TARGET_ZVL4096B ((riscv_zvl_flags & MASK_ZVL4096B) != 0) +#define TARGET_ZVL8192B ((riscv_zvl_flags & MASK_ZVL8192B) != 0) +#define TARGET_ZVL16384B ((riscv_zvl_flags & MASK_ZVL16384B) != 0) +#define TARGET_ZVL32768B ((riscv_zvl_flags & MASK_ZVL32768B) != 0) +#define TARGET_ZVL65536B ((riscv_zvl_flags & MASK_ZVL65536B) != 0) + #endif /* ! GCC_RISCV_OPTS_H */ diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index 486121b..9fffc08 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -146,6 +146,8 @@ Mask(RVC) Mask(RVE) +Mask(VECTOR) + mriscv-attribute Target Var(riscv_emit_attribute_p) Init(-1) Emit RISC-V ELF attribute. @@ -201,6 +203,12 @@ int riscv_zb_subext TargetVariable int riscv_zk_subext +TargetVariable +int riscv_vector_eew_flags + +TargetVariable +int riscv_zvl_flags + Enum Name(isa_spec_class) Type(enum riscv_isa_spec_class) Supported ISA specs (for use with the -misa-spec= option): diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index db64af9..24a081c 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -2002,6 +2002,12 @@ altivec_resolve_overloaded_builtin (location_t loc, tree fndecl, the overloaded call to that instance. */ for (; instance != NULL; instance = instance->next) { + /* It is possible for an instance to require a data type that isn't + defined on this target, in which case instance->fntype will be + NULL. */ + if (!instance->fntype) + continue; + bool mismatch = false; tree nextparm = TYPE_ARG_TYPES (instance->fntype); diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 55e082e..1d1c89c 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -73,6 +73,7 @@ extern int expand_block_move (rtx[], bool); extern bool expand_block_compare (rtx[]); extern bool expand_strn_compare (rtx[], int); extern bool rs6000_is_valid_mask (rtx, int *, int *, machine_mode); +extern bool rs6000_is_valid_rotate_dot_mask (rtx mask, machine_mode mode); extern bool rs6000_is_valid_and_mask (rtx, machine_mode); extern bool rs6000_is_valid_shift_mask (rtx, rtx, machine_mode); extern bool rs6000_is_valid_insert_mask (rtx, rtx, machine_mode); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6c93c1f1..7759f75 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -71,6 +71,9 @@ #include "tree-vector-builder.h" #include "context.h" #include "tree-pass.h" +#include "symbol-summary.h" +#include "ipa-prop.h" +#include "ipa-fnsummary.h" #include "except.h" #if TARGET_XCOFF #include "xcoffout.h" /* get declarations of xcoff_*_section_name */ @@ -1779,6 +1782,12 @@ static const struct attribute_spec rs6000_attribute_table[] = #undef TARGET_INVALID_CONVERSION #define TARGET_INVALID_CONVERSION rs6000_invalid_conversion + +#undef TARGET_NEED_IPA_FN_TARGET_INFO +#define TARGET_NEED_IPA_FN_TARGET_INFO rs6000_need_ipa_fn_target_info + +#undef TARGET_UPDATE_IPA_FN_TARGET_INFO +#define TARGET_UPDATE_IPA_FN_TARGET_INFO rs6000_update_ipa_fn_target_info /* Processor table. */ @@ -4212,13 +4221,11 @@ rs6000_option_override_internal (bool global_init_p) if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128) { /* Determine if the user can change the default long double type at - compilation time. Only C and C++ support this, and you need GLIBC - 2.32 or newer. Only issue one warning. */ + compilation time. You need GLIBC 2.32 or newer to be able to + change the long double type. Only issue one warning. */ static bool warned_change_long_double; - if (!warned_change_long_double - && (!glibc_supports_ieee_128bit () - || (!lang_GNU_C () && !lang_GNU_CXX ()))) + if (!warned_change_long_double && !glibc_supports_ieee_128bit ()) { warned_change_long_double = true; if (TARGET_IEEEQUAD) @@ -11385,6 +11392,13 @@ rs6000_is_valid_mask (rtx mask, int *b, int *e, machine_mode mode) return true; } +bool +rs6000_is_valid_rotate_dot_mask (rtx mask, machine_mode mode) +{ + int nb, ne; + return rs6000_is_valid_mask (mask, &nb, &ne, mode) && nb >= ne && ne > 0; +} + /* Return whether MASK (a CONST_INT) is a valid mask for any rlwinm, rldicl, or rldicr instruction, to implement an AND with it in mode MODE. */ @@ -24825,7 +24839,6 @@ rs6000_disable_incompatible_switches (void) const HOST_WIDE_INT dep_flags; /* flags that depend on this option. */ const char *const name; /* name of the switch. */ } flags[] = { - { OPTION_MASK_POWER10, OTHER_POWER10_MASKS, "power10" }, { OPTION_MASK_P9_VECTOR, OTHER_P9_VECTOR_MASKS, "power9-vector" }, { OPTION_MASK_P8_VECTOR, OTHER_P8_VECTOR_MASKS, "power8-vector" }, { OPTION_MASK_VSX, OTHER_VSX_VECTOR_MASKS, "vsx" }, @@ -25308,7 +25321,63 @@ rs6000_generate_version_dispatcher_body (void *node_p) return resolver; } - +/* Hook to decide if we need to scan function gimple statements to + collect target specific information for inlining, and update the + corresponding RS6000_FN_TARGET_INFO_* bit in INFO if we are able + to predict which ISA feature is used at this time. Return true + if we need to scan, otherwise return false. */ + +static bool +rs6000_need_ipa_fn_target_info (const_tree decl, + unsigned int &info ATTRIBUTE_UNUSED) +{ + tree target = DECL_FUNCTION_SPECIFIC_TARGET (decl); + if (!target) + target = target_option_default_node; + struct cl_target_option *opts = TREE_TARGET_OPTION (target); + + /* See PR102059, we only handle HTM for now, so will only do + the consequent scannings when HTM feature enabled. */ + if (opts->x_rs6000_isa_flags & OPTION_MASK_HTM) + return true; + + return false; +} + +/* Hook to update target specific information INFO for inlining by + checking the given STMT. Return false if we don't need to scan + any more, otherwise return true. */ + +static bool +rs6000_update_ipa_fn_target_info (unsigned int &info, const gimple *stmt) +{ + /* Assume inline asm can use any instruction features. */ + if (gimple_code (stmt) == GIMPLE_ASM) + { + /* Should set any bits we concerned, for now OPTION_MASK_HTM is + the only bit we care about. */ + info |= RS6000_FN_TARGET_INFO_HTM; + return false; + } + else if (gimple_code (stmt) == GIMPLE_CALL) + { + tree fndecl = gimple_call_fndecl (stmt); + if (fndecl && fndecl_built_in_p (fndecl, BUILT_IN_MD)) + { + enum rs6000_gen_builtins fcode + = (enum rs6000_gen_builtins) DECL_MD_FUNCTION_CODE (fndecl); + /* HTM bifs definitely exploit HTM insns. */ + if (bif_is_htm (rs6000_builtin_info[fcode])) + { + info |= RS6000_FN_TARGET_INFO_HTM; + return false; + } + } + } + + return true; +} + /* Hook to determine if one function can safely inline another. */ static bool @@ -25336,6 +25405,17 @@ rs6000_can_inline_p (tree caller, tree callee) else caller_isa = rs6000_isa_flags; + cgraph_node *callee_node = cgraph_node::get (callee); + if (ipa_fn_summaries && ipa_fn_summaries->get (callee_node) != NULL) + { + unsigned int info = ipa_fn_summaries->get (callee_node)->target_info; + if ((info & RS6000_FN_TARGET_INFO_HTM) == 0) + { + callee_isa &= ~OPTION_MASK_HTM; + explicit_isa &= ~OPTION_MASK_HTM; + } + } + /* The callee's options must be a subset of the caller's options, i.e. a vsx function may inline an altivec function, but a no-vsx function must not inline a vsx function. However, for those options that the diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index acc909a..a02dbbd 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -604,6 +604,11 @@ extern int rs6000_vector_align[]; && TARGET_P8_VECTOR \ && TARGET_POWERPC64) +/* Inlining allows targets to define the meanings of bits in target_info + field of ipa_fn_summary by itself, the used bits for rs6000 are listed + below. */ +#define RS6000_FN_TARGET_INFO_HTM 1 + /* Whether the various reciprocal divide/square root estimate instructions exist, and whether we should automatically generate code for the instruction by default. */ diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 1582dda..6f74075 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -3767,6 +3767,44 @@ (set_attr "dot" "yes") (set_attr "length" "8,12")]) +(define_insn_and_split "*branch_anddi3_dot" + [(set (pc) + (if_then_else (eq (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r") + (match_operand:DI 2 "const_int_operand" "n,n")) + (const_int 0)) + (label_ref (match_operand 3 "")) + (pc))) + (clobber (match_scratch:DI 0 "=r,r")) + (clobber (reg:CC CR0_REGNO))] + "rs6000_is_valid_rotate_dot_mask (operands[2], DImode) + && TARGET_POWERPC64" + "#" + "&& reload_completed" + [(pc)] +{ + int nb, ne; + if (rs6000_is_valid_mask (operands[2], &nb, &ne, DImode) + && nb >= ne + && ne > 0) + { + unsigned HOST_WIDE_INT val = INTVAL (operands[2]); + int shift = 63 - nb; + rtx tmp = gen_rtx_ASHIFT (DImode, operands[1], GEN_INT (shift)); + tmp = gen_rtx_AND (DImode, tmp, GEN_INT (val << shift)); + rtx cr0 = gen_rtx_REG (CCmode, CR0_REGNO); + rs6000_emit_dot_insn (operands[0], tmp, 1, cr0); + rtx loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands[3]); + rtx cond = gen_rtx_EQ (CCEQmode, cr0, const0_rtx); + rtx ite = gen_rtx_IF_THEN_ELSE (VOIDmode, cond, loc_ref, pc_rtx); + emit_jump_insn (gen_rtx_SET (pc_rtx, ite)); + DONE; + } + else + FAIL; +} + [(set_attr "type" "shift") + (set_attr "dot" "yes") + (set_attr "length" "8,12")]) (define_expand "<code><mode>3" [(set (match_operand:SDI 0 "gpc_reg_operand") @@ -6320,6 +6358,14 @@ "mffscrn %0,%1" [(set_attr "type" "fp")]) +(define_insn "rs6000_mffscrni" + [(set (match_operand:DF 0 "gpc_reg_operand" "=d") + (unspec_volatile:DF [(match_operand:SI 1 "const_0_to_3_operand" "n")] + UNSPECV_MFFSCRN))] + "TARGET_P9_MISC" + "mffscrni %0,%1" + [(set_attr "type" "fp")]) + (define_insn "rs6000_mffscdrn" [(set (match_operand:DF 0 "gpc_reg_operand" "=d") (unspec_volatile:DF [(const_int 0)] UNSPECV_MFFSCDRN)) @@ -6329,7 +6375,7 @@ [(set_attr "type" "fp")]) (define_expand "rs6000_set_fpscr_rn" - [(match_operand:DI 0 "reg_or_cint_operand")] + [(match_operand:SI 0 "reg_or_cint_operand")] "TARGET_HARD_FLOAT" { rtx tmp_df = gen_reg_rtx (DFmode); @@ -6338,9 +6384,14 @@ new rounding mode bits from operands[0][62:63] into FPSCR[62:63]. */ if (TARGET_P9_MISC) { - rtx src_df = force_reg (DImode, operands[0]); - src_df = simplify_gen_subreg (DFmode, src_df, DImode, 0); - emit_insn (gen_rs6000_mffscrn (tmp_df, src_df)); + if (const_0_to_3_operand (operands[0], VOIDmode)) + emit_insn (gen_rs6000_mffscrni (tmp_df, operands[0])); + else + { + rtx op0 = convert_to_mode (DImode, operands[0], false); + rtx src_df = simplify_gen_subreg (DFmode, op0, DImode, 0); + emit_insn (gen_rs6000_mffscrn (tmp_df, src_df)); + } DONE; } @@ -6362,7 +6413,8 @@ rtx tmp_di = gen_reg_rtx (DImode); /* Extract new RN mode from operand. */ - emit_insn (gen_anddi3 (tmp_rn, operands[0], GEN_INT (0x3))); + rtx op0 = convert_to_mode (DImode, operands[0], false); + emit_insn (gen_anddi3 (tmp_rn, op0, GEN_INT (3))); /* Insert new RN mode into FSCPR. */ emit_insn (gen_rs6000_mffs (tmp_df)); diff --git a/gcc/config/rs6000/smmintrin.h b/gcc/config/rs6000/smmintrin.h index 1fda048..b9cb46b 100644 --- a/gcc/config/rs6000/smmintrin.h +++ b/gcc/config/rs6000/smmintrin.h @@ -113,9 +113,13 @@ _mm_blend_epi16 (__m128i __A, __m128i __B, const int __imm8) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_blendv_epi8 (__m128i __A, __m128i __B, __m128i __mask) { +#ifdef _ARCH_PWR10 + return (__m128i) vec_blendv ((__v16qi) __A, (__v16qi) __B, (__v16qu) __mask); +#else const __v16qu __seven = vec_splats ((unsigned char) 0x07); __v16qu __lmask = vec_sra ((__v16qu) __mask, __seven); - return (__m128i) vec_sel ((__v16qu) __A, (__v16qu) __B, __lmask); + return (__m128i) vec_sel ((__v16qi) __A, (__v16qi) __B, __lmask); +#endif } extern __inline __m128 @@ -149,9 +153,13 @@ extern __inline __m128 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_blendv_ps (__m128 __A, __m128 __B, __m128 __mask) { +#ifdef _ARCH_PWR10 + return (__m128) vec_blendv ((__v4sf) __A, (__v4sf) __B, (__v4su) __mask); +#else const __v4si __zero = {0}; const __vector __bool int __boolmask = vec_cmplt ((__v4si) __mask, __zero); return (__m128) vec_sel ((__v4su) __A, (__v4su) __B, (__v4su) __boolmask); +#endif } extern __inline __m128d @@ -174,9 +182,13 @@ extern __inline __m128d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_blendv_pd (__m128d __A, __m128d __B, __m128d __mask) { +#ifdef _ARCH_PWR10 + return (__m128d) vec_blendv ((__v2df) __A, (__v2df) __B, (__v2du) __mask); +#else const __v2di __zero = {0}; const __vector __bool long long __boolmask = vec_cmplt ((__v2di) __mask, __zero); return (__m128d) vec_sel ((__v2du) __A, (__v2du) __B, (__v2du) __boolmask); +#endif } #endif diff --git a/gcc/coretypes.h b/gcc/coretypes.h index 0769a78..f355937 100644 --- a/gcc/coretypes.h +++ b/gcc/coretypes.h @@ -228,15 +228,17 @@ enum stack_protector { SPCT_FLAG_EXPLICIT = 4 }; -/* Types of unwind/exception handling info that can be generated. */ +/* Types of unwind/exception handling info that can be generated. + Note that a UI_TARGET (or larger) setting is considered to be + incompatible with -freorder-blocks-and-partition. */ enum unwind_info_type { UI_NONE, UI_SJLJ, UI_DWARF2, - UI_TARGET, - UI_SEH + UI_SEH, + UI_TARGET }; /* Callgraph node profile representation. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 26a2c67..756d135 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,209 @@ +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/101597 + * class.c (build_vfn_ref): Build OBJ_TYPE_REF with INTEGER_CST + OBJ_TYPE_REF_TOKEN with type equal to OBJ_TYPE_REF_OBJECT type. + * error.c (resolve_virtual_fun_from_obj_type_ref): Use type of + OBJ_TYPE_REF_TOKEN rather than type of OBJ_TYPE_REF_OBJECT as + obj_type. + +2022-01-11 Patrick Palka <ppalka@redhat.com> + + PR c++/103831 + * call.c (build_new_method_call): Consider dependent bases only + if 'this' is available. + +2022-01-11 Olivier Hainque <hainque@adacore.com> + + * decl.c (cxx_init_decl_processing): Move code possibly + altering flag_weak before code testing it. + +2022-01-10 Patrick Palka <ppalka@redhat.com> + + PR c++/103879 + * constexpr.c (cxx_fold_indirect_ref): Split out object/offset + canonicalization step into a local lambda. Strengthen it to + absorb more components at position 0. Use it before both calls + to cxx_fold_indirect_ref_1. + +2022-01-10 Patrick Palka <ppalka@redhat.com> + + PR c++/103783 + * call.c (cand_parms_match): Skip over 'this' when given one + static and one non-static member function. + +2022-01-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/103912 + * semantics.c (expand_or_defer_fn): For immediate functions, set + node->body_removed to true and clear analyzed, definition and + force_output. + * decl2.c (c_parse_final_cleanups): Ignore immediate functions for + expand_or_defer_fn. + +2022-01-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/89074 + * constexpr.c (cxx_maybe_fold_addr_pointer_plus): New function. + (cxx_eval_binary_expression): Use it. + +2022-01-08 Jason Merrill <jason@redhat.com> + + PR c++/103946 + * init.c (build_vec_init): Remove assert. + * tree.c (build_vec_init_expr): Likewise. + +2022-01-08 Jason Merrill <jason@redhat.com> + + PR c++/100588 + * call.c (build_op_delete_call): Ignore destroying delete + if alloc_fn. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/20040 + * init.c (build_new_1): Also build pointer cleanup if + TYPE_GETS_DELETE. + * cp-tree.h (TYPE_GETS_VEC_DELETE): New. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/103936 + PR c++/65591 + * cp-gimplify.c (cp_gimplify_expr): Restore VEC_INIT_EXPR handling. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/103711 + * init.c (perform_target_ctor): Select destructor by in_chrg. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/61611 + * except.c (in_nested_catch): New. + (expand_end_catch_block): Check it. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/33799 + PR c++/102191 + * except.c (maybe_splice_retval_cleanup): Check + current_binding_level. + * semantics.c (do_poplevel): Call it here. + * parser.c (cp_parser_compound_statement): Not here. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/53868 + * decl.c (cp_finish_decl): Use wrap_temporary_cleanups for + cleanups from set_up_extended_ref_temp. + (wrap_temporary_cleanups): Ignore array cleanups. + (initialize_local_var): Don't check for array here. + * cp-tree.h (BIND_EXPR_VEC_DTOR): New. + * init.c (build_vec_delete_1): Set it. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/66451 + * init.c (build_vec_delete_1): Handle throwing dtor. + (build_vec_init): Tell it we're in a cleanup already. + +2022-01-07 Jason Merrill <jason@redhat.com> + + * typeck2.c (split_nonconstant_init_1): Don't cleanup the last elt. + (split_nonconstant_init): Adjust. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/66139 + PR c++/52320 + * constexpr.c (replace_decl): Rename from replace_result_decl. + * cp-tree.h (replace_decl): Declare it. + * cp-gimplify.c (cp_gimplify_init_expr): Call it. + (cp_gimplify_expr): Don't handle VEC_INIT_EXPR. + (cp_genericize_init, cp_genericize_init_expr) + (cp_genericize_target_expr): New. + (cp_fold_r): Call them. + * tree.c (build_array_copy): Add a TARGET_EXPR. + * typeck2.c (digest_init_r): Look through a TARGET_EXPR. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/94041 + * decl.c (initialize_local_var): Fix comment. + * init.c (build_new_1): Do stabilize array init. + (build_vec_init): Use TARGET_EXPR for cleanup. Initialization + of an element from an explicit initializer is not a + full-expression. + * tree.c (expand_vec_init_expr): Pass flags through. + * typeck2.c (split_nonconstant_init_1): Handle VEC_INIT_EXPR. + (split_nonconstant_init): Handle array cleanups. + * cp-tree.h: Adjust. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/94041 + * decl.c (check_initializer): Remove obsolete comment. + (wrap_cleanups_r): Don't wrap CLEANUP_EH_ONLY. + (initialize_local_var): Change assert to test. + * typeck2.c (maybe_push_temp_cleanup): New. + (split_nonconstant_init_1): Use it. + (split_nonconstant_init): Clear cleanup flags. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/92385 + * typeck2.c (PICFLAG_VEC_INIT): New. + (process_init_constructor_array): Set it. + (process_init_constructor): Handle it. + (split_nonconstant_init_1): Handle VEC_INIT_EXPR. + * init.c (build_vec_init): Likewise. + * cp-gimplify.c (cp_gimplify_expr): Factor out... + * tree.c (expand_vec_init_expr): ...this function. + (build_vec_init_elt): Handle BRACE_ENCLOSED_INITIALIZER_P. + (build_vec_init_expr): Likewise. + * constexpr.c (cxx_eval_vec_init): Likewise. + (reduced_constant_expression_p): Check arrays before C++20. + * cp-tree.h (expand_vec_init_expr): Declare. + +2022-01-07 Jason Merrill <jason@redhat.com> + + * init.c (build_new_1): Remove preevaluation code. + +2022-01-05 Nathan Sidwell <nathan@acm.org> + + * pt.c (instantiate_class_template_1): Process attribute((used)) set + in class's context. + +2022-01-05 Nathan Sidwell <nathan@acm.org> + + * init.c (build_new_1): Check complain before alignment warning. + +2022-01-04 Jason Merrill <jason@redhat.com> + + * cp-tree.h (class releasing_vec): Add begin/end fns. + +2022-01-04 Jason Merrill <jason@redhat.com> + + * init.c: Include -*- C++ -*- on first line. + +2022-01-03 Marek Polacek <polacek@redhat.com> + + PR c++/103758 + * parser.c (cp_parser_decl_specifier_seq): Replace %<decl-specifier%> + with %qD. + +2022-01-03 Marek Polacek <polacek@redhat.com> + + * parser.c (make_char_string_pack): Add a cast to const unsigned + char *. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/103600 + * rtti.c (get_tinfo_decl_direct): Add "non overlapping" attribute + to DECL_TINFO_P VAR_DECLs. + 2022-01-02 Jason Merrill <jason@redhat.com> * init.c (build_vec_init): Append the decrement to elt_init. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 7f7ee88..d4a07a7 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -7267,6 +7267,8 @@ build_op_delete_call (enum tree_code code, tree addr, tree size, tree oaddr = addr; addr = cp_convert (ptr_type_node, addr, complain); + tree excluded_destroying = NULL_TREE; + if (placement) { /* "A declaration of a placement deallocation function matches the @@ -7352,6 +7354,15 @@ build_op_delete_call (enum tree_code code, tree addr, tree size, dealloc_info di_elt; if (usual_deallocation_fn_p (elt, &di_elt)) { + /* If we're called for an EH cleanup in a new-expression, we can't + use a destroying delete; the exception was thrown before the + object was constructed. */ + if (alloc_fn && di_elt.destroying) + { + excluded_destroying = elt; + continue; + } + if (!fn) { fn = elt; @@ -7499,6 +7510,14 @@ build_op_delete_call (enum tree_code code, tree addr, tree size, return ret; } + /* If there's only a destroying delete that we can't use because the + object isn't constructed yet, and we used global new, use global + delete as well. */ + if (excluded_destroying + && DECL_NAMESPACE_SCOPE_P (alloc_fn)) + return build_op_delete_call (code, addr, size, true, placement, + alloc_fn, complain); + /* [expr.new] If no unambiguous matching deallocation function can be found, @@ -7508,8 +7527,16 @@ build_op_delete_call (enum tree_code code, tree addr, tree size, { if ((complain & tf_warning) && !placement) - warning (0, "no corresponding deallocation function for %qD", - alloc_fn); + { + bool w = warning (0, + "no corresponding deallocation function for %qD", + alloc_fn); + if (w && excluded_destroying) + inform (DECL_SOURCE_LOCATION (excluded_destroying), "destroying " + "delete %qD cannot be used to release the allocated memory" + " if the initialization throws because the object is not " + "constructed yet", excluded_destroying); + } return NULL_TREE; } @@ -11098,7 +11125,7 @@ build_new_method_call (tree instance, tree fns, vec<tree, va_gc> **args, we know we really need it. */ cand->first_arg = instance; } - else if (any_dependent_bases_p ()) + else if (current_class_ptr && any_dependent_bases_p ()) /* We can't tell until instantiation time whether we can use *this as the implicit object argument. */; else @@ -11918,7 +11945,7 @@ joust_maybe_elide_copy (z_candidate *&cand) /* True if the defining declarations of the two candidates have equivalent parameters. */ -bool +static bool cand_parms_match (z_candidate *c1, z_candidate *c2) { tree fn1 = c1->fn; @@ -11940,8 +11967,19 @@ cand_parms_match (z_candidate *c1, z_candidate *c2) fn1 = DECL_TEMPLATE_RESULT (t1); fn2 = DECL_TEMPLATE_RESULT (t2); } - return compparms (TYPE_ARG_TYPES (TREE_TYPE (fn1)), - TYPE_ARG_TYPES (TREE_TYPE (fn2))); + tree parms1 = TYPE_ARG_TYPES (TREE_TYPE (fn1)); + tree parms2 = TYPE_ARG_TYPES (TREE_TYPE (fn2)); + if (DECL_FUNCTION_MEMBER_P (fn1) + && DECL_FUNCTION_MEMBER_P (fn2) + && (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn1) + != DECL_NONSTATIC_MEMBER_FUNCTION_P (fn2))) + { + /* Ignore 'this' when comparing the parameters of a static member + function with those of a non-static one. */ + parms1 = skip_artificial_parms_for (fn1, parms1); + parms2 = skip_artificial_parms_for (fn2, parms2); + } + return compparms (parms1, parms2); } /* Compare two candidates for overloading as described in diff --git a/gcc/cp/class.c b/gcc/cp/class.c index acbdbe4..e5cc6f1 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -778,7 +778,8 @@ build_vfn_ref (tree instance_ptr, tree idx) cp_build_addr_expr (aref, tf_warning_or_error)); /* Remember this as a method reference, for later devirtualization. */ - aref = build3 (OBJ_TYPE_REF, TREE_TYPE (aref), aref, instance_ptr, idx); + aref = build3 (OBJ_TYPE_REF, TREE_TYPE (aref), aref, instance_ptr, + fold_convert (TREE_TYPE (instance_ptr), idx)); return aref; } diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 72be45c..d0da4a7 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -2251,24 +2251,26 @@ cxx_eval_dynamic_cast_fn (const constexpr_ctx *ctx, tree call, return cp_build_addr_expr (obj, complain); } -/* Data structure used by replace_result_decl and replace_result_decl_r. */ +/* Data structure used by replace_decl and replace_decl_r. */ -struct replace_result_decl_data +struct replace_decl_data { - /* The RESULT_DECL we want to replace. */ + /* The _DECL we want to replace. */ tree decl; /* The replacement for DECL. */ tree replacement; + /* Trees we've visited. */ + hash_set<tree> *pset; /* Whether we've performed any replacements. */ bool changed; }; -/* Helper function for replace_result_decl, called through cp_walk_tree. */ +/* Helper function for replace_decl, called through cp_walk_tree. */ static tree -replace_result_decl_r (tree *tp, int *walk_subtrees, void *data) +replace_decl_r (tree *tp, int *walk_subtrees, void *data) { - replace_result_decl_data *d = (replace_result_decl_data *) data; + replace_decl_data *d = (replace_decl_data *) data; if (*tp == d->decl) { @@ -2276,24 +2278,25 @@ replace_result_decl_r (tree *tp, int *walk_subtrees, void *data) d->changed = true; *walk_subtrees = 0; } - else if (TYPE_P (*tp)) + else if (TYPE_P (*tp) + || d->pset->add (*tp)) *walk_subtrees = 0; return NULL_TREE; } -/* Replace every occurrence of DECL, a RESULT_DECL, with (an unshared copy of) - REPLACEMENT within the reduced constant expression *TP. Returns true iff a +/* Replace every occurrence of DECL with (an unshared copy of) + REPLACEMENT within the expression *TP. Returns true iff a replacement was performed. */ -static bool -replace_result_decl (tree *tp, tree decl, tree replacement) +bool +replace_decl (tree *tp, tree decl, tree replacement) { - gcc_checking_assert (TREE_CODE (decl) == RESULT_DECL - && (same_type_ignoring_top_level_qualifiers_p - (TREE_TYPE (decl), TREE_TYPE (replacement)))); - replace_result_decl_data data = { decl, replacement, false }; - cp_walk_tree_without_duplicates (tp, replace_result_decl_r, &data); + gcc_checking_assert (same_type_ignoring_top_level_qualifiers_p + (TREE_TYPE (decl), TREE_TYPE (replacement))); + hash_set<tree> pset; + replace_decl_data data = { decl, replacement, &pset, false }; + cp_walk_tree (tp, replace_decl_r, &data, NULL); return data.changed; } @@ -2962,7 +2965,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, if (!*non_constant_p && ctx->object && CLASS_TYPE_P (TREE_TYPE (res)) && !is_empty_class (TREE_TYPE (res))) - if (replace_result_decl (&result, res, ctx->object)) + if (replace_decl (&result, res, ctx->object)) cacheable = false; } else @@ -3020,8 +3023,7 @@ reduced_constant_expression_p (tree t) if (TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE) /* An initialized vector would have a VECTOR_CST. */ return false; - else if (cxx_dialect >= cxx20 - && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE) + else if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE) { /* There must be a valid constant initializer at every array index. */ @@ -3288,6 +3290,38 @@ cxx_fold_pointer_plus_expression (const constexpr_ctx *ctx, tree t, return NULL_TREE; } +/* Try to fold expressions like + (struct S *) (&a[0].D.2378 + 12) + into + &MEM <struct T> [(void *)&a + 12B] + This is something normally done by gimple_fold_stmt_to_constant_1 + on GIMPLE, but is undesirable on GENERIC if we are e.g. going to + dereference the address because some details are lost. + For pointer comparisons we want such folding though so that + match.pd address_compare optimization works. */ + +static tree +cxx_maybe_fold_addr_pointer_plus (tree t) +{ + while (CONVERT_EXPR_P (t) + && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (t, 0)))) + t = TREE_OPERAND (t, 0); + if (TREE_CODE (t) != POINTER_PLUS_EXPR) + return NULL_TREE; + tree op0 = TREE_OPERAND (t, 0); + tree op1 = TREE_OPERAND (t, 1); + if (TREE_CODE (op1) != INTEGER_CST) + return NULL_TREE; + while (CONVERT_EXPR_P (op0) + && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))) + op0 = TREE_OPERAND (op0, 0); + if (TREE_CODE (op0) != ADDR_EXPR) + return NULL_TREE; + op1 = fold_convert (ptr_type_node, op1); + tree r = fold_build2 (MEM_REF, TREE_TYPE (TREE_TYPE (op0)), op0, op1); + return build1_loc (EXPR_LOCATION (t), ADDR_EXPR, TREE_TYPE (op0), r); +} + /* Subroutine of cxx_eval_constant_expression. Like cxx_eval_unary_expression, except for binary expressions. */ @@ -3347,6 +3381,15 @@ cxx_eval_binary_expression (const constexpr_ctx *ctx, tree t, else if (TREE_CODE (rhs) == PTRMEM_CST) rhs = cplus_expand_constant (rhs); } + if (r == NULL_TREE + && TREE_CODE_CLASS (code) == tcc_comparison + && POINTER_TYPE_P (TREE_TYPE (lhs))) + { + if (tree lhso = cxx_maybe_fold_addr_pointer_plus (lhs)) + lhs = fold_convert (TREE_TYPE (lhs), lhso); + if (tree rhso = cxx_maybe_fold_addr_pointer_plus (rhs)) + rhs = fold_convert (TREE_TYPE (rhs), rhso); + } if (code == POINTER_PLUS_EXPR && !*non_constant_p && integer_zerop (lhs) && !integer_zerop (rhs)) { @@ -4955,8 +4998,36 @@ cxx_eval_vec_init (const constexpr_ctx *ctx, tree t, { tree atype = TREE_TYPE (t); tree init = VEC_INIT_EXPR_INIT (t); - tree r = cxx_eval_vec_init_1 (ctx, atype, init, - VEC_INIT_EXPR_VALUE_INIT (t), + bool value_init = VEC_INIT_EXPR_VALUE_INIT (t); + if (!init || !BRACE_ENCLOSED_INITIALIZER_P (init)) + ; + else if (CONSTRUCTOR_NELTS (init) == 0) + { + /* Handle {} as value-init. */ + init = NULL_TREE; + value_init = true; + } + else + { + /* This is a more complicated case, like needing to loop over trailing + elements; call build_vec_init and evaluate the result. */ + tsubst_flags_t complain = ctx->quiet ? tf_none : tf_warning_or_error; + constexpr_ctx new_ctx = *ctx; + if (!ctx->object) + { + /* We want to have an initialization target for an VEC_INIT_EXPR. + If we don't already have one in CTX, use the VEC_INIT_EXPR_SLOT. */ + new_ctx.object = VEC_INIT_EXPR_SLOT (t); + tree ctor = new_ctx.ctor = build_constructor (atype, NULL); + CONSTRUCTOR_NO_CLEARING (ctor) = true; + ctx->global->values.put (new_ctx.object, ctor); + ctx = &new_ctx; + } + init = expand_vec_init_expr (ctx->object, t, complain); + return cxx_eval_constant_expression (ctx, init, lval, non_constant_p, + overflow_p); + } + tree r = cxx_eval_vec_init_1 (ctx, atype, init, value_init, lval, non_constant_p, overflow_p); if (*non_constant_p) return t; @@ -5144,6 +5215,25 @@ cxx_fold_indirect_ref (const constexpr_ctx *ctx, location_t loc, tree type, if (!INDIRECT_TYPE_P (subtype)) return NULL_TREE; + /* Canonicalizes the given OBJ/OFF pair by iteratively absorbing + the innermost component into the offset until it would make the + offset positive, so that cxx_fold_indirect_ref_1 can identify + more folding opportunities. */ + auto canonicalize_obj_off = [] (tree& obj, tree& off) { + while (TREE_CODE (obj) == COMPONENT_REF + && (tree_int_cst_sign_bit (off) || integer_zerop (off))) + { + tree field = TREE_OPERAND (obj, 1); + tree pos = byte_position (field); + if (integer_zerop (off) && integer_nonzerop (pos)) + /* If the offset is already 0, keep going as long as the + component is at position 0. */ + break; + off = int_const_binop (PLUS_EXPR, off, pos); + obj = TREE_OPERAND (obj, 0); + } + }; + if (TREE_CODE (sub) == ADDR_EXPR) { tree op = TREE_OPERAND (sub, 0); @@ -5162,7 +5252,12 @@ cxx_fold_indirect_ref (const constexpr_ctx *ctx, location_t loc, tree type, return op; } else - return cxx_fold_indirect_ref_1 (ctx, loc, type, op, 0, empty_base); + { + tree off = integer_zero_node; + canonicalize_obj_off (op, off); + gcc_assert (integer_zerop (off)); + return cxx_fold_indirect_ref_1 (ctx, loc, type, op, 0, empty_base); + } } else if (TREE_CODE (sub) == POINTER_PLUS_EXPR && tree_fits_uhwi_p (TREE_OPERAND (sub, 1))) @@ -5174,17 +5269,7 @@ cxx_fold_indirect_ref (const constexpr_ctx *ctx, location_t loc, tree type, if (TREE_CODE (op00) == ADDR_EXPR) { tree obj = TREE_OPERAND (op00, 0); - while (TREE_CODE (obj) == COMPONENT_REF - && tree_int_cst_sign_bit (off)) - { - /* Canonicalize this object/offset pair by iteratively absorbing - the innermost component into the offset until the offset is - nonnegative, so that cxx_fold_indirect_ref_1 can identify - more folding opportunities. */ - tree field = TREE_OPERAND (obj, 1); - off = int_const_binop (PLUS_EXPR, off, byte_position (field)); - obj = TREE_OPERAND (obj, 0); - } + canonicalize_obj_off (obj, off); return cxx_fold_indirect_ref_1 (ctx, loc, type, obj, tree_to_uhwi (off), empty_base); } diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 27e78ee..8b097c4 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -239,12 +239,21 @@ cp_gimplify_init_expr (tree *expr_p) tree to = TREE_OPERAND (*expr_p, 0); tree t; - /* What about code that pulls out the temp and uses it elsewhere? I - think that such code never uses the TARGET_EXPR as an initializer. If - I'm wrong, we'll abort because the temp won't have any RTL. In that - case, I guess we'll need to replace references somehow. */ - if (TREE_CODE (from) == TARGET_EXPR && TARGET_EXPR_INITIAL (from)) - from = TARGET_EXPR_INITIAL (from); + if (TREE_CODE (from) == TARGET_EXPR) + if (tree init = TARGET_EXPR_INITIAL (from)) + { + if (VOID_TYPE_P (TREE_TYPE (init)) + && TREE_CODE (init) != AGGR_INIT_EXPR) + { + /* If this was changed by cp_genericize_target_expr, we need to + walk into it to replace uses of the slot. */ + replace_decl (&init, TARGET_EXPR_SLOT (from), to); + *expr_p = init; + return; + } + else + from = init; + } /* Look through any COMPOUND_EXPRs, since build_compound_expr pushes them inside the TARGET_EXPR. */ @@ -462,21 +471,14 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) case VEC_INIT_EXPR: { - location_t loc = input_location; - tree init = VEC_INIT_EXPR_INIT (*expr_p); - int from_array = (init && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE); - gcc_assert (EXPR_HAS_LOCATION (*expr_p)); - input_location = EXPR_LOCATION (*expr_p); - *expr_p = build_vec_init (VEC_INIT_EXPR_SLOT (*expr_p), NULL_TREE, - init, VEC_INIT_EXPR_VALUE_INIT (*expr_p), - from_array, - tf_warning_or_error); + *expr_p = expand_vec_init_expr (NULL_TREE, *expr_p, + tf_warning_or_error); + hash_set<tree> pset; cp_walk_tree (expr_p, cp_fold_r, &pset, NULL); cp_genericize_tree (expr_p, false); copy_if_shared (expr_p); ret = GS_OK; - input_location = loc; } break; @@ -875,6 +877,57 @@ omp_cxx_notice_variable (struct cp_genericize_omp_taskreg *omp_ctx, tree decl) } } +/* If we might need to clean up a partially constructed object, break down the + CONSTRUCTOR with split_nonconstant_init. Also expand VEC_INIT_EXPR at this + point. If initializing TO with FROM is non-trivial, overwrite *REPLACE with + the result. */ + +static void +cp_genericize_init (tree *replace, tree from, tree to) +{ + if (TREE_CODE (from) == VEC_INIT_EXPR) + { + tree init = expand_vec_init_expr (to, from, tf_warning_or_error); + + /* Make cp_gimplify_init_expr call replace_decl. */ + *replace = fold_convert (void_type_node, init); + } + else if (flag_exceptions + && TREE_CODE (from) == CONSTRUCTOR + && TREE_SIDE_EFFECTS (from) + && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (from))) + { + to = cp_stabilize_reference (to); + replace_placeholders (from, to); + *replace = split_nonconstant_init (to, from); + } +} + +/* For an INIT_EXPR, replace the INIT_EXPR itself. */ + +static void +cp_genericize_init_expr (tree *stmt_p) +{ + tree to = TREE_OPERAND (*stmt_p, 0); + tree from = TREE_OPERAND (*stmt_p, 1); + if (SIMPLE_TARGET_EXPR_P (from) + /* Return gets confused if we clobber its INIT_EXPR this soon. */ + && TREE_CODE (to) != RESULT_DECL) + from = TARGET_EXPR_INITIAL (from); + cp_genericize_init (stmt_p, from, to); +} + +/* For a TARGET_EXPR, change the TARGET_EXPR_INITIAL. We will need to use + replace_decl later when we know what we're initializing. */ + +static void +cp_genericize_target_expr (tree *stmt_p) +{ + cp_genericize_init (&TARGET_EXPR_INITIAL (*stmt_p), + TARGET_EXPR_INITIAL (*stmt_p), + TARGET_EXPR_SLOT (*stmt_p)); +} + /* Genericization context. */ struct cp_genericize_data @@ -1014,6 +1067,14 @@ cp_fold_r (tree *stmt_p, int *walk_subtrees, void *data) } break; + case INIT_EXPR: + cp_genericize_init_expr (stmt_p); + break; + + case TARGET_EXPR: + cp_genericize_target_expr (stmt_p); + break; + default: break; } diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 824fe98..f8225c1 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -465,6 +465,7 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; OVL_USING_P (in OVERLOAD) IMPLICIT_CONV_EXPR_NONTYPE_ARG (in IMPLICIT_CONV_EXPR) BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (in BASELINK) + BIND_EXPR_VEC_DTOR (in BIND_EXPR) 2: IDENTIFIER_KIND_BIT_2 (in IDENTIFIER_NODE) ICS_THIS_FLAG (in _CONV) DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (in VAR_DECL) @@ -712,6 +713,10 @@ typedef struct ptrmem_cst * ptrmem_cst_t; #define BIND_EXPR_TRY_BLOCK(NODE) \ TREE_LANG_FLAG_0 (BIND_EXPR_CHECK (NODE)) +/* This BIND_EXPR is from build_vec_delete_1. */ +#define BIND_EXPR_VEC_DTOR(NODE) \ + TREE_LANG_FLAG_1 (BIND_EXPR_CHECK (NODE)) + /* Used to mark the block around the member initializers and cleanups. */ #define BIND_EXPR_BODY_BLOCK(NODE) \ TREE_LANG_FLAG_3 (BIND_EXPR_CHECK (NODE)) @@ -1008,6 +1013,9 @@ public: (bootstrap/91828). */ tree& operator[] (ptrdiff_t i) const { return (*v)[i]; } + tree *begin() { return ::begin (v); } + tree *end() { return ::end (v); } + void release () { release_tree_vector (v); v = NULL; } ~releasing_vec () { release_tree_vector (v); } @@ -2387,6 +2395,7 @@ struct GTY(()) lang_type { /* Nonzero for _CLASSTYPE means that operator delete is defined. */ #define TYPE_GETS_DELETE(NODE) (LANG_TYPE_CLASS_CHECK (NODE)->gets_delete) #define TYPE_GETS_REG_DELETE(NODE) (TYPE_GETS_DELETE (NODE) & 1) +#define TYPE_GETS_VEC_DELETE(NODE) (TYPE_GETS_DELETE (NODE) & 2) /* Nonzero if `new NODE[x]' should cause the allocation of extra storage to indicate how many array elements are in use. */ @@ -7008,7 +7017,8 @@ extern tree build_new (location_t, int, tsubst_flags_t); extern tree get_temp_regvar (tree, tree); extern tree build_vec_init (tree, tree, tree, bool, int, - tsubst_flags_t); + tsubst_flags_t, + vec<tree, va_gc> ** = nullptr); extern tree build_delete (location_t, tree, tree, special_function_kind, int, int, tsubst_flags_t); @@ -7776,6 +7786,8 @@ extern bool array_of_runtime_bound_p (tree); extern bool vla_type_p (tree); extern tree build_array_copy (tree); extern tree build_vec_init_expr (tree, tree, tsubst_flags_t); +extern tree expand_vec_init_expr (tree, tree, tsubst_flags_t, + vec<tree,va_gc>** = nullptr); extern void diagnose_non_constexpr_vec_init (tree); extern tree hash_tree_cons (tree, tree, tree); extern tree hash_tree_chain (tree, tree); @@ -8379,6 +8391,7 @@ extern tree fold_sizeof_expr (tree); extern void clear_cv_and_fold_caches (void); extern tree unshare_constructor (tree CXX_MEM_STAT_INFO); extern bool decl_implicit_constexpr_p (tree); +extern bool replace_decl (tree *, tree, tree); /* An RAII sentinel used to restrict constexpr evaluation so that it doesn't do anything that causes extra DECL_UID generation. */ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 0b71c00..0e37f1a 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4718,6 +4718,9 @@ cxx_init_decl_processing (void) nullptr_node = build_int_cst (nullptr_type_node, 0); } + if (! supports_one_only ()) + flag_weak = 0; + abort_fndecl = build_library_fn_ptr ("__cxa_pure_virtual", void_ftype, ECF_NORETURN | ECF_NOTHROW | ECF_COLD); @@ -4733,9 +4736,6 @@ cxx_init_decl_processing (void) if (flag_exceptions) init_exception_processing (); - if (! supports_one_only ()) - flag_weak = 0; - if (modules_p ()) init_modules (parse_in); @@ -7257,11 +7257,6 @@ check_initializer (tree decl, tree init, int flags, vec<tree, va_gc> **cleanups) if (init && TREE_CODE (init) != TREE_VEC) { - /* In aggregate initialization of a variable, each element - initialization is a full-expression because there is no - enclosing expression. */ - gcc_assert (stmts_are_full_exprs_p ()); - init_code = store_init_value (decl, init, cleanups, flags); if (DECL_INITIAL (decl) @@ -7428,7 +7423,8 @@ wrap_cleanups_r (tree *stmt_p, int *walk_subtrees, void *data) tree guard = (tree)data; tree tcleanup = TARGET_EXPR_CLEANUP (*stmt_p); - if (tcleanup && !expr_noexcept_p (tcleanup, tf_none)) + if (tcleanup && !CLEANUP_EH_ONLY (*stmt_p) + && !expr_noexcept_p (tcleanup, tf_none)) { tcleanup = build2 (TRY_CATCH_EXPR, void_type_node, tcleanup, guard); /* Tell honor_protect_cleanup_actions to handle this as a separate @@ -7455,11 +7451,24 @@ wrap_cleanups_r (tree *stmt_p, int *walk_subtrees, void *data) they are run on the normal path, but not if they are run on the exceptional path. We implement this by telling honor_protect_cleanup_actions to strip the variable cleanup from the - exceptional path. */ + exceptional path. + + Another approach could be to make the variable cleanup region enclose + initialization, but depend on a flag to indicate that the variable is + initialized; that's effectively what we do for arrays. But the current + approach works fine for non-arrays, and has no code overhead in the usual + case where the temporary destructors are noexcept. */ static void wrap_temporary_cleanups (tree init, tree guard) { + if (TREE_CODE (guard) == BIND_EXPR) + { + /* An array cleanup region already encloses any temporary cleanups, + don't wrap it around them again. */ + gcc_checking_assert (BIND_EXPR_VEC_DTOR (guard)); + return; + } cp_walk_tree_without_duplicates (&init, wrap_cleanups_r, (void *)guard); } @@ -7500,11 +7509,11 @@ initialize_local_var (tree decl, tree init) { tree rinit = (TREE_CODE (init) == INIT_EXPR ? TREE_OPERAND (init, 1) : NULL_TREE); - if (rinit && !TREE_SIDE_EFFECTS (rinit)) + if (rinit && !TREE_SIDE_EFFECTS (rinit) + && TREE_OPERAND (init, 0) == decl) { /* Stick simple initializers in DECL_INITIAL so that -Wno-init-self works (c++/34772). */ - gcc_assert (TREE_OPERAND (init, 0) == decl); DECL_INITIAL (decl) = rinit; if (warn_init_self && TYPE_REF_P (type)) @@ -7522,9 +7531,8 @@ initialize_local_var (tree decl, tree init) /* If we're only initializing a single object, guard the destructors of any temporaries used in its initializer with - its destructor. This isn't right for arrays because each - element initialization is a full-expression. */ - if (cleanup && TREE_CODE (type) != ARRAY_TYPE) + its destructor. */ + if (cleanup) wrap_temporary_cleanups (init, cleanup); gcc_assert (building_stmt_list_p ()); @@ -8372,7 +8380,11 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, if (cleanups) { for (tree t : *cleanups) - push_cleanup (decl, t, false); + { + push_cleanup (decl, t, false); + /* As in initialize_local_var. */ + wrap_temporary_cleanups (init, t); + } release_tree_vector (cleanups); } diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 988ecd2..899a800 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -5272,6 +5272,7 @@ c_parse_final_cleanups (void) if (!DECL_EXTERNAL (decl) && decl_needed_p (decl) && !TREE_ASM_WRITTEN (decl) + && !DECL_IMMEDIATE_FUNCTION_P (decl) && !node->definition) { /* We will output the function; no longer consider it in this diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 1172dbe..8a3b7b5 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2149,7 +2149,7 @@ dump_expr_init_vec (cxx_pretty_printer *pp, vec<constructor_elt, va_gc> *v, static tree resolve_virtual_fun_from_obj_type_ref (tree ref) { - tree obj_type = TREE_TYPE (OBJ_TYPE_REF_OBJECT (ref)); + tree obj_type = TREE_TYPE (OBJ_TYPE_REF_TOKEN (ref)); HOST_WIDE_INT index = tree_to_uhwi (OBJ_TYPE_REF_TOKEN (ref)); tree fun = BINFO_VIRTUALS (TYPE_BINFO (TREE_TYPE (obj_type))); while (index) diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 5c7eeff..9b746be 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -448,6 +448,23 @@ expand_start_catch_block (tree decl) return type; } +/* True if we are in a catch block within a catch block. Assumes that we are + in function scope. */ + +static bool +in_nested_catch (void) +{ + int catches = 0; + + /* Scan through the template parameter scopes. */ + for (cp_binding_level *b = current_binding_level; + b->kind != sk_function_parms; + b = b->level_chain) + if (b->kind == sk_catch + && ++catches == 2) + return true; + return false; +} /* Call this to end a catch block. Its responsible for emitting the code to handle jumping back to the correct place, and for emitting @@ -463,7 +480,8 @@ expand_end_catch_block (void) a handler of the function-try-block of a constructor or destructor. */ if (in_function_try_handler && (DECL_CONSTRUCTOR_P (current_function_decl) - || DECL_DESTRUCTOR_P (current_function_decl))) + || DECL_DESTRUCTOR_P (current_function_decl)) + && !in_nested_catch ()) { tree rethrow = build_throw (input_location, NULL_TREE); /* Disable all warnings for the generated rethrow statement. */ @@ -1294,26 +1312,35 @@ maybe_set_retval_sentinel () current_retval_sentinel, boolean_true_node); } -/* COMPOUND_STMT is the STATEMENT_LIST for the current function body. If - current_retval_sentinel was set in this function, wrap the body in a - CLEANUP_STMT to destroy the return value on throw. */ +/* COMPOUND_STMT is the STATEMENT_LIST for some block. If COMPOUND_STMT is the + current function body or a try block, and current_retval_sentinel was set in + this function, wrap the block in a CLEANUP_STMT to destroy the return value + on throw. */ void maybe_splice_retval_cleanup (tree compound_stmt) { - /* If need_retval_cleanup set current_retval_sentinel, wrap the function body - in a CLEANUP_STMT to handle destroying the return value. */ - if (!DECL_CONSTRUCTOR_P (current_function_decl) + /* If we need a cleanup for the return value, add it in at the same level as + pushdecl_outermost_localscope. And also in try blocks. */ + bool function_body + = (current_binding_level->level_chain + && current_binding_level->level_chain->kind == sk_function_parms); + + if ((function_body || current_binding_level->kind == sk_try) + && !DECL_CONSTRUCTOR_P (current_function_decl) && !DECL_DESTRUCTOR_P (current_function_decl) && current_retval_sentinel) { location_t loc = DECL_SOURCE_LOCATION (current_function_decl); - - /* Add a DECL_EXPR for current_retval_sentinel. */ tree_stmt_iterator iter = tsi_start (compound_stmt); tree retval = DECL_RESULT (current_function_decl); - tree decl_expr = build_stmt (loc, DECL_EXPR, current_retval_sentinel); - tsi_link_before (&iter, decl_expr, TSI_SAME_STMT); + + if (function_body) + { + /* Add a DECL_EXPR for current_retval_sentinel. */ + tree decl_expr = build_stmt (loc, DECL_EXPR, current_retval_sentinel); + tsi_link_before (&iter, decl_expr, TSI_SAME_STMT); + } /* Skip past other decls, they can't contain a return. */ while (TREE_CODE (tsi_stmt (iter)) == DECL_EXPR) diff --git a/gcc/cp/init.c b/gcc/cp/init.c index ff78587..ccc4f5e 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1,4 +1,4 @@ -/* Handle initialization things in C++. +/* Handle initialization things in -*- C++ -*- Copyright (C) 1987-2022 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) @@ -545,6 +545,16 @@ perform_target_ctor (tree init) |LOOKUP_NONVIRTUAL |LOOKUP_DESTRUCTOR, 0, tf_warning_or_error); + if (DECL_HAS_IN_CHARGE_PARM_P (current_function_decl)) + { + tree base = build_delete (input_location, + type, decl, sfk_base_destructor, + LOOKUP_NORMAL + |LOOKUP_NONVIRTUAL + |LOOKUP_DESTRUCTOR, + 0, tf_warning_or_error); + expr = build_if_in_charge (expr, base); + } if (expr != error_mark_node && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) finish_eh_cleanup (expr); @@ -3047,7 +3057,6 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, address of the first array element. This node is a VAR_DECL, and is therefore reusable. */ tree data_addr; - tree init_preeval_expr = NULL_TREE; tree orig_type = type; if (nelts) @@ -3307,6 +3316,12 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, ? TYPE_HAS_ARRAY_NEW_OPERATOR (elt_type) : TYPE_HAS_NEW_OPERATOR (elt_type)); + bool member_delete_p = (!globally_qualified_p + && CLASS_TYPE_P (elt_type) + && (array_p + ? TYPE_GETS_VEC_DELETE (elt_type) + : TYPE_GETS_REG_DELETE (elt_type))); + if (member_new_p) { /* Use a class-specific operator new. */ @@ -3408,7 +3423,8 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, = (type_num_arguments (TREE_TYPE (alloc_fn)) > 1 || varargs_function_p (alloc_fn)); - if (warn_aligned_new + if (complain & tf_warning_or_error + && warn_aligned_new && !placement_allocation_fn_p && TYPE_ALIGN (elt_type) > malloc_alignment () && (warn_aligned_new > 1 @@ -3463,7 +3479,7 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, /* In the simple case, we can stop now. */ pointer_type = build_pointer_type (type); - if (!cookie_size && !is_initialized) + if (!cookie_size && !is_initialized && !member_delete_p) return build_nop (pointer_type, alloc_call); /* Store the result of the allocation call in a variable so that we can @@ -3560,7 +3576,6 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, placement delete. */ if (is_initialized) { - bool stable; bool explicit_value_init_p = false; if (*init != NULL && (*init)->is_empty ()) @@ -3586,7 +3601,6 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, init, elt_type, LOOKUP_NORMAL, complain); - stable = stabilize_init (init_expr, &init_preeval_expr); } else if (array_p) { @@ -3632,11 +3646,6 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, explicit_value_init_p, /*from_array=*/0, complain); - - /* An array initialization is stable because the initialization - of each element is a full-expression, so the temporaries don't - leak out. */ - stable = true; } else { @@ -3693,91 +3702,80 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, = replace_placeholders (TREE_OPERAND (init_expr, 1), TREE_OPERAND (init_expr, 0), &had_placeholder); - stable = (!had_placeholder - && stabilize_init (init_expr, &init_preeval_expr)); } if (init_expr == error_mark_node) return error_mark_node; + } + else + init_expr = NULL_TREE; - /* If any part of the object initialization terminates by throwing an - exception and a suitable deallocation function can be found, the - deallocation function is called to free the memory in which the - object was being constructed, after which the exception continues - to propagate in the context of the new-expression. If no - unambiguous matching deallocation function can be found, - propagating the exception does not cause the object's memory to be - freed. */ - if (flag_exceptions) + /* If any part of the object initialization terminates by throwing an + exception and a suitable deallocation function can be found, the + deallocation function is called to free the memory in which the + object was being constructed, after which the exception continues + to propagate in the context of the new-expression. If no + unambiguous matching deallocation function can be found, + propagating the exception does not cause the object's memory to be + freed. */ + if (flag_exceptions && (init_expr || member_delete_p)) + { + enum tree_code dcode = array_p ? VEC_DELETE_EXPR : DELETE_EXPR; + tree cleanup; + + /* The Standard is unclear here, but the right thing to do + is to use the same method for finding deallocation + functions that we use for finding allocation functions. */ + cleanup = (build_op_delete_call + (dcode, + alloc_node, + size, + globally_qualified_p, + placement_allocation_fn_p ? alloc_call : NULL_TREE, + alloc_fn, + complain)); + + if (cleanup && init_expr && !processing_template_decl) + /* Ack! First we allocate the memory. Then we set our sentry + variable to true, and expand a cleanup that deletes the + memory if sentry is true. Then we run the constructor, and + finally clear the sentry. + + We need to do this because we allocate the space first, so + if there are any temporaries with cleanups in the + constructor args, we need this EH region to extend until + end of full-expression to preserve nesting. + + We used to try to evaluate the args first to avoid this, but + since C++17 [expr.new] says that "The invocation of the + allocation function is sequenced before the evaluations of + expressions in the new-initializer." */ { - enum tree_code dcode = array_p ? VEC_DELETE_EXPR : DELETE_EXPR; - tree cleanup; - - /* The Standard is unclear here, but the right thing to do - is to use the same method for finding deallocation - functions that we use for finding allocation functions. */ - cleanup = (build_op_delete_call - (dcode, - alloc_node, - size, - globally_qualified_p, - placement_allocation_fn_p ? alloc_call : NULL_TREE, - alloc_fn, - complain)); - - if (!cleanup) - /* We're done. */; - else if (stable) - /* This is much simpler if we were able to preevaluate all of - the arguments to the constructor call. */ - { - /* CLEANUP is compiler-generated, so no diagnostics. */ - suppress_warning (cleanup); - init_expr = build2 (TRY_CATCH_EXPR, void_type_node, - init_expr, cleanup); - /* Likewise, this try-catch is compiler-generated. */ - suppress_warning (init_expr); - } - else - /* Ack! First we allocate the memory. Then we set our sentry - variable to true, and expand a cleanup that deletes the - memory if sentry is true. Then we run the constructor, and - finally clear the sentry. - - We need to do this because we allocate the space first, so - if there are any temporaries with cleanups in the - constructor args and we weren't able to preevaluate them, we - need this EH region to extend until end of full-expression - to preserve nesting. */ - { - tree end, sentry, begin; + tree end, sentry, begin; - begin = get_target_expr (boolean_true_node); - CLEANUP_EH_ONLY (begin) = 1; + begin = get_target_expr (boolean_true_node); + CLEANUP_EH_ONLY (begin) = 1; - sentry = TARGET_EXPR_SLOT (begin); + sentry = TARGET_EXPR_SLOT (begin); - /* CLEANUP is compiler-generated, so no diagnostics. */ - suppress_warning (cleanup); + /* CLEANUP is compiler-generated, so no diagnostics. */ + suppress_warning (cleanup); - TARGET_EXPR_CLEANUP (begin) - = build3 (COND_EXPR, void_type_node, sentry, - cleanup, void_node); + TARGET_EXPR_CLEANUP (begin) + = build3 (COND_EXPR, void_type_node, sentry, + cleanup, void_node); - end = build2 (MODIFY_EXPR, TREE_TYPE (sentry), - sentry, boolean_false_node); + end = build2 (MODIFY_EXPR, TREE_TYPE (sentry), + sentry, boolean_false_node); - init_expr - = build2 (COMPOUND_EXPR, void_type_node, begin, - build2 (COMPOUND_EXPR, void_type_node, init_expr, - end)); - /* Likewise, this is compiler-generated. */ - suppress_warning (init_expr); - } + init_expr + = build2 (COMPOUND_EXPR, void_type_node, begin, + build2 (COMPOUND_EXPR, void_type_node, init_expr, + end)); + /* Likewise, this is compiler-generated. */ + suppress_warning (init_expr); } } - else - init_expr = NULL_TREE; /* Now build up the return value in reverse order. */ @@ -3809,9 +3807,6 @@ build_new_1 (vec<tree, va_gc> **placement, tree type, tree nelts, rval = build2 (COMPOUND_EXPR, TREE_TYPE (rval), alloc_expr, rval); } - if (init_preeval_expr) - rval = build2 (COMPOUND_EXPR, TREE_TYPE (rval), init_preeval_expr, rval); - /* A new-expression is never an lvalue. */ gcc_assert (!obvalue_p (rval)); @@ -4027,7 +4022,8 @@ build_new (location_t loc, vec<tree, va_gc> **placement, tree type, static tree build_vec_delete_1 (location_t loc, tree base, tree maxindex, tree type, special_function_kind auto_delete_vec, - int use_global_delete, tsubst_flags_t complain) + int use_global_delete, tsubst_flags_t complain, + bool in_cleanup = false) { tree virtual_size; tree ptype = build_pointer_type (type = complete_type (type)); @@ -4112,6 +4108,7 @@ build_vec_delete_1 (location_t loc, tree base, tree maxindex, tree type, tbase_init = build_stmt (loc, DECL_EXPR, tbase); controller = build3 (BIND_EXPR, void_type_node, tbase, NULL_TREE, NULL_TREE); TREE_SIDE_EFFECTS (controller) = 1; + BIND_EXPR_VEC_DTOR (controller) = true; body = build1 (EXIT_EXPR, void_type_node, build2 (EQ_EXPR, boolean_type_node, tbase, @@ -4130,6 +4127,18 @@ build_vec_delete_1 (location_t loc, tree base, tree maxindex, tree type, body = build_compound_expr (loc, body, tmp); loop = build1 (LOOP_EXPR, void_type_node, body); + + /* If one destructor throws, keep trying to clean up the rest, unless we're + already in a build_vec_init cleanup. */ + if (flag_exceptions && !in_cleanup && !expr_noexcept_p (tmp, tf_none)) + { + loop = build2 (TRY_CATCH_EXPR, void_type_node, loop, + unshare_expr (loop)); + /* Tell honor_protect_cleanup_actions to discard this on the + exceptional path. */ + TRY_CATCH_IS_CLEANUP (loop) = true; + } + loop = build_compound_expr (loc, tbase_init, loop); no_destructor: @@ -4313,7 +4322,9 @@ finish_length_check (tree atype, tree iterator, tree obase, unsigned n) tree build_vec_init (tree base, tree maxindex, tree init, bool explicit_value_init_p, - int from_array, tsubst_flags_t complain) + int from_array, + tsubst_flags_t complain, + vec<tree, va_gc>** flags /* = nullptr */) { tree rval; tree base2 = NULL_TREE; @@ -4331,7 +4342,6 @@ build_vec_init (tree base, tree maxindex, tree init, tree stmt_expr; tree compound_stmt; int destroy_temps; - tree try_block = NULL_TREE; HOST_WIDE_INT num_initialized_elts = 0; bool is_global; tree obase = base; @@ -4358,12 +4368,16 @@ build_vec_init (tree base, tree maxindex, tree init, && from_array != 2) init = TARGET_EXPR_INITIAL (init); + if (init && TREE_CODE (init) == VEC_INIT_EXPR) + init = VEC_INIT_EXPR_INIT (init); + bool direct_init = false; if (from_array && init && BRACE_ENCLOSED_INITIALIZER_P (init) && CONSTRUCTOR_NELTS (init) == 1) { tree elt = CONSTRUCTOR_ELT (init, 0)->value; - if (TREE_CODE (TREE_TYPE (elt)) == ARRAY_TYPE) + if (TREE_CODE (TREE_TYPE (elt)) == ARRAY_TYPE + && TREE_CODE (elt) != VEC_INIT_EXPR) { direct_init = DIRECT_LIST_INIT_P (init); init = elt; @@ -4461,7 +4475,9 @@ build_vec_init (tree base, tree maxindex, tree init, current_stmt_tree ()->stmts_are_full_exprs_p = 0; rval = get_temp_regvar (ptype, base); base = get_temp_regvar (ptype, rval); - iterator = get_temp_regvar (ptrdiff_type_node, maxindex); + tree iterator_targ = get_target_expr (maxindex); + add_stmt (iterator_targ); + iterator = TARGET_EXPR_SLOT (iterator_targ); /* If initializing one array from another, initialize element by element. We rely upon the below calls to do the argument @@ -4484,7 +4500,38 @@ build_vec_init (tree base, tree maxindex, tree init, if (flag_exceptions && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) && from_array != 2) { - try_block = begin_try_block (); + tree e; + tree m = cp_build_binary_op (input_location, + MINUS_EXPR, maxindex, iterator, + complain); + + /* Flatten multi-dimensional array since build_vec_delete only + expects one-dimensional array. */ + if (TREE_CODE (type) == ARRAY_TYPE) + m = cp_build_binary_op (input_location, + MULT_EXPR, m, + /* Avoid mixing signed and unsigned. */ + convert (TREE_TYPE (m), + array_type_nelts_total (type)), + complain); + + e = build_vec_delete_1 (input_location, rval, m, + inner_elt_type, sfk_complete_destructor, + /*use_global_delete=*/0, complain, + /*in_cleanup*/true); + if (e == error_mark_node) + errors = true; + TARGET_EXPR_CLEANUP (iterator_targ) = e; + CLEANUP_EH_ONLY (iterator_targ) = true; + + /* Since we push this cleanup before doing any initialization, cleanups + for any temporaries in the initialization are naturally within our + cleanup region, so we don't want wrap_temporary_cleanups to do + anything for arrays. But if the array is a subobject, we need to + tell split_nonconstant_init how to turn off this cleanup in favor of + the cleanup for the complete object. */ + if (flags) + vec_safe_push (*flags, build_tree_list (iterator, maxindex)); } /* Should we try to create a constant initializer? */ @@ -4534,9 +4581,10 @@ build_vec_init (tree base, tree maxindex, tree init, num_initialized_elts++; - current_stmt_tree ()->stmts_are_full_exprs_p = 1; if (digested) one_init = build2 (INIT_EXPR, type, baseref, elt); + else if (TREE_CODE (elt) == VEC_INIT_EXPR) + one_init = expand_vec_init_expr (baseref, elt, complain, flags); else if (MAYBE_CLASS_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE) one_init = build_aggr_init (baseref, elt, 0, complain); else @@ -4572,7 +4620,6 @@ build_vec_init (tree base, tree maxindex, tree init, if (one_init) finish_expr_stmt (one_init); - current_stmt_tree ()->stmts_are_full_exprs_p = 0; one_init = cp_build_unary_op (PREINCREMENT_EXPR, base, false, complain); @@ -4794,6 +4841,17 @@ build_vec_init (tree base, tree maxindex, tree init, } } + /* [class.temporary]: "There are three contexts in which temporaries are + destroyed at a different point than the end of the full- + expression. The first context is when a default constructor is called + to initialize an element of an array with no corresponding + initializer. The second context is when a copy constructor is called + to copy an element of an array while the entire array is copied. In + either case, if the constructor has one or more default arguments, the + destruction of every temporary created in a default argument is + sequenced before the construction of the next array element, if any." + + So, for this loop, statements are full-expressions. */ current_stmt_tree ()->stmts_are_full_exprs_p = 1; if (elt_init && !errors) elt_init = build2 (COMPOUND_EXPR, void_type_node, elt_init, decr); @@ -4811,34 +4869,6 @@ build_vec_init (tree base, tree maxindex, tree init, finish_for_stmt (for_stmt); } - /* Make sure to cleanup any partially constructed elements. */ - if (flag_exceptions && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type) - && from_array != 2) - { - tree e; - tree m = cp_build_binary_op (input_location, - MINUS_EXPR, maxindex, iterator, - complain); - - /* Flatten multi-dimensional array since build_vec_delete only - expects one-dimensional array. */ - if (TREE_CODE (type) == ARRAY_TYPE) - m = cp_build_binary_op (input_location, - MULT_EXPR, m, - /* Avoid mixing signed and unsigned. */ - convert (TREE_TYPE (m), - array_type_nelts_total (type)), - complain); - - finish_cleanup_try_block (try_block); - e = build_vec_delete_1 (input_location, rval, m, - inner_elt_type, sfk_complete_destructor, - /*use_global_delete=*/0, complain); - if (e == error_mark_node) - errors = true; - finish_cleanup (e, try_block); - } - /* The value of the array initialization is the array itself, RVAL is a pointer to the first element. */ finish_stmt_expr_expr (rval, stmt_expr); diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 4475f79..f40e707 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -12751,9 +12751,6 @@ cp_parser_compound_statement (cp_parser *parser, tree in_statement_expr, /* Parse an (optional) statement-seq. */ cp_parser_statement_seq_opt (parser, in_statement_expr); - if (function_body) - maybe_splice_retval_cleanup (compound_stmt); - /* Consume the `}'. */ braces.require_close (parser); @@ -15821,7 +15818,7 @@ cp_parser_decl_specifier_seq (cp_parser* parser, if (found_decl_spec && (flags & CP_PARSER_FLAGS_ONLY_TYPE_OR_CONSTEXPR) && token->keyword != RID_CONSTEXPR) - error ("%<decl-specifier%> invalid in condition"); + error ("%qD invalid in condition", ridpointers[token->keyword]); if (found_decl_spec && (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c587966..0fa4a16 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -12277,6 +12277,14 @@ instantiate_class_template_1 (tree type) perform_instantiation_time_access_checks (pattern, args); perform_deferred_access_checks (tf_warning_or_error); + + /* Now that we've gone through all the members, instantiate those + marked with attribute used. We must do this in the context of + the class -- not the context we pushed from, as that might be + inside a template and change the behaviour of mark_used. */ + for (tree x : used) + mark_used (x); + pop_nested_class (); maximum_field_alignment = saved_maximum_field_alignment; if (!fn_context) @@ -12290,11 +12298,6 @@ instantiate_class_template_1 (tree type) if (TYPE_CONTAINS_VPTR_P (type) && CLASSTYPE_KEY_METHOD (type)) vec_safe_push (keyed_classes, type); - /* Now that we've gone through all the members, instantiate those - marked with attribute used. */ - for (tree x : used) - mark_used (x); - return type; } diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 58f45e9..00100b0 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -624,6 +624,8 @@ do_poplevel (tree stmt_list) { tree block = NULL; + maybe_splice_retval_cleanup (stmt_list); + if (stmts_are_full_exprs_p ()) block = poplevel (kept_level_p (), 1, 0); @@ -4785,6 +4787,17 @@ expand_or_defer_fn (tree fn) emit_associated_thunks (fn); function_depth--; + + if (DECL_IMMEDIATE_FUNCTION_P (fn)) + { + if (cgraph_node *node = cgraph_node::get (fn)) + { + node->body_removed = true; + node->analyzed = false; + node->definition = false; + node->force_output = false; + } + } } } diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 6199801..7f7de86 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -737,12 +737,12 @@ build_cplus_new (tree type, tree init, tsubst_flags_t complain) intialization as a proxy for the full array initialization to get things marked as used and any appropriate diagnostics. - Since we're deferring building the actual constructor calls until - gimplification time, we need to build one now and throw it away so - that the relevant constructor gets mark_used before cgraph decides - what functions are needed. Here we assume that init is either - NULL_TREE, void_type_node (indicating value-initialization), or - another array to copy. */ + This used to be necessary because we were deferring building the actual + constructor calls until gimplification time; now we only do it to set + VEC_INIT_EXPR_IS_CONSTEXPR. + + We assume that init is either NULL_TREE, void_type_node (indicating + value-initialization), or another array to copy. */ static tree build_vec_init_elt (tree type, tree init, tsubst_flags_t complain) @@ -756,13 +756,11 @@ build_vec_init_elt (tree type, tree init, tsubst_flags_t complain) else if (init == void_type_node) return build_value_init (inner_type, complain); - gcc_assert (init == NULL_TREE - || (same_type_ignoring_top_level_qualifiers_p - (type, TREE_TYPE (init)))); - releasing_vec argvec; - if (init) + if (init && !BRACE_ENCLOSED_INITIALIZER_P (init)) { + gcc_assert (same_type_ignoring_top_level_qualifiers_p + (type, TREE_TYPE (init))); tree init_type = strip_array_types (TREE_TYPE (init)); tree dummy = build_dummy_object (init_type); if (!lvalue_p (init)) @@ -788,25 +786,25 @@ build_vec_init_elt (tree type, tree init, tsubst_flags_t complain) tree build_vec_init_expr (tree type, tree init, tsubst_flags_t complain) { - tree slot; - bool value_init = false; + if (init && TREE_CODE (init) == VEC_INIT_EXPR) + return init; + tree elt_init; - if (init && TREE_CODE (init) == CONSTRUCTOR) - { - gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (init)); - /* We built any needed constructor calls in digest_init. */ - elt_init = init; - } + if (init && TREE_CODE (init) == CONSTRUCTOR + && !BRACE_ENCLOSED_INITIALIZER_P (init)) + /* We built any needed constructor calls in digest_init. */ + elt_init = init; else elt_init = build_vec_init_elt (type, init, complain); + bool value_init = false; if (init == void_type_node) { value_init = true; init = NULL_TREE; } - slot = build_local_temp (type); + tree slot = build_local_temp (type); init = build2 (VEC_INIT_EXPR, type, slot, init); TREE_SIDE_EFFECTS (init) = true; SET_EXPR_LOCATION (init, input_location); @@ -819,6 +817,24 @@ build_vec_init_expr (tree type, tree init, tsubst_flags_t complain) return init; } +/* Call build_vec_init to expand VEC_INIT into TARGET (for which NULL_TREE + means VEC_INIT_EXPR_SLOT). */ + +tree +expand_vec_init_expr (tree target, tree vec_init, tsubst_flags_t complain, + vec<tree,va_gc> **flags) +{ + iloc_sentinel ils = EXPR_LOCATION (vec_init); + + if (!target) + target = VEC_INIT_EXPR_SLOT (vec_init); + tree init = VEC_INIT_EXPR_INIT (vec_init); + int from_array = (init && TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE); + return build_vec_init (target, NULL_TREE, init, + VEC_INIT_EXPR_VALUE_INIT (vec_init), + from_array, complain, flags); +} + /* Give a helpful diagnostic for a non-constexpr VEC_INIT_EXPR in a context that requires a constant expression. */ @@ -839,7 +855,8 @@ diagnose_non_constexpr_vec_init (tree expr) tree build_array_copy (tree init) { - return build_vec_init_expr (TREE_TYPE (init), init, tf_warning_or_error); + return get_target_expr (build_vec_init_expr + (TREE_TYPE (init), init, tf_warning_or_error)); } /* Build a TARGET_EXPR using INIT to initialize a new temporary of the @@ -1287,6 +1304,8 @@ move (tree expr) { tree type = TREE_TYPE (expr); gcc_assert (!TYPE_REF_P (type)); + if (xvalue_p (expr)) + return expr; type = cp_build_reference_type (type, /*rval*/true); return build_static_cast (input_location, type, expr, tf_warning_or_error); diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 84cef54..f439dd5 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -459,13 +459,35 @@ cxx_incomplete_type_error (location_t loc, const_tree value, const_tree type) } +/* We've just initialized subobject SUB; also insert a TARGET_EXPR with an + EH-only cleanup for SUB. Because of EH region nesting issues, we need to + make the cleanup conditional on a flag that we will clear once the object is + fully initialized, so push a new flag onto FLAGS. */ + +static void +maybe_push_temp_cleanup (tree sub, vec<tree,va_gc> **flags) +{ + if (tree cleanup + = cxx_maybe_build_cleanup (sub, tf_warning_or_error)) + { + tree tx = get_target_expr (boolean_true_node); + tree flag = TARGET_EXPR_SLOT (tx); + CLEANUP_EH_ONLY (tx) = true; + TARGET_EXPR_CLEANUP (tx) = build3 (COND_EXPR, void_type_node, + flag, cleanup, void_node); + add_stmt (tx); + vec_safe_push (*flags, flag); + } +} + /* The recursive part of split_nonconstant_init. DEST is an lvalue expression to which INIT should be assigned. INIT is a CONSTRUCTOR. Return true if the whole of the value was initialized by the generated statements. */ static bool -split_nonconstant_init_1 (tree dest, tree init, bool nested) +split_nonconstant_init_1 (tree dest, tree init, bool last, + vec<tree,va_gc> **flags) { unsigned HOST_WIDE_INT idx, tidx = HOST_WIDE_INT_M1U; tree field_index, value; @@ -494,16 +516,10 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) } /* For an array, we only need/want a single cleanup region rather - than one per element. */ + than one per element. build_vec_init will handle it. */ tree code = build_vec_init (dest, NULL_TREE, init, false, 1, - tf_warning_or_error); + tf_warning_or_error, flags); add_stmt (code); - if (nested) - /* Also clean up the whole array if something later in an enclosing - init-list throws. */ - if (tree cleanup = cxx_maybe_build_cleanup (dest, - tf_warning_or_error)) - finish_eh_cleanup (cleanup); return true; } /* FALLTHRU */ @@ -522,18 +538,19 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) if (!array_type_p) inner_type = TREE_TYPE (field_index); - if (TREE_CODE (value) == CONSTRUCTOR) - { - tree sub; + tree sub; + if (array_type_p) + sub = build4 (ARRAY_REF, inner_type, dest, field_index, + NULL_TREE, NULL_TREE); + else + sub = build3 (COMPONENT_REF, inner_type, dest, field_index, + NULL_TREE); - if (array_type_p) - sub = build4 (ARRAY_REF, inner_type, dest, field_index, - NULL_TREE, NULL_TREE); - else - sub = build3 (COMPONENT_REF, inner_type, dest, field_index, - NULL_TREE); + bool elt_last = last && idx == CONSTRUCTOR_NELTS (init) - 1; - if (!split_nonconstant_init_1 (sub, value, true) + if (TREE_CODE (value) == CONSTRUCTOR) + { + if (!split_nonconstant_init_1 (sub, value, elt_last, flags) /* For flexible array member with initializer we can't remove the initializer, because only the initializer determines how many elements the @@ -544,7 +561,7 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) && TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE && COMPLETE_TYPE_P (TREE_TYPE (value)) && !integer_zerop (TYPE_SIZE (TREE_TYPE (value))) - && idx == CONSTRUCTOR_NELTS (init) - 1 + && elt_last && TYPE_HAS_TRIVIAL_DESTRUCTOR (strip_array_types (inner_type)))) complete_p = false; @@ -557,10 +574,20 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) num_split_elts++; } } + else if (TREE_CODE (value) == VEC_INIT_EXPR) + { + add_stmt (expand_vec_init_expr (sub, value, tf_warning_or_error, + flags)); + + /* Mark element for removal. */ + CONSTRUCTOR_ELT (init, idx)->index = NULL_TREE; + if (idx < tidx) + tidx = idx; + num_split_elts++; + } else if (!initializer_constant_valid_p (value, inner_type)) { tree code; - tree sub; /* Mark element for removal. */ CONSTRUCTOR_ELT (init, idx)->index = NULL_TREE; @@ -584,13 +611,6 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) } else { - if (array_type_p) - sub = build4 (ARRAY_REF, inner_type, dest, field_index, - NULL_TREE, NULL_TREE); - else - sub = build3 (COMPONENT_REF, inner_type, dest, field_index, - NULL_TREE); - /* We may need to add a copy constructor call if the field has [[no_unique_address]]. */ if (unsafe_return_slot_p (sub)) @@ -616,11 +636,9 @@ split_nonconstant_init_1 (tree dest, tree init, bool nested) code = build2 (INIT_EXPR, inner_type, sub, value); } code = build_stmt (input_location, EXPR_STMT, code); - code = maybe_cleanup_point_expr_void (code); add_stmt (code); - if (tree cleanup - = cxx_maybe_build_cleanup (sub, tf_warning_or_error)) - finish_eh_cleanup (cleanup); + if (!elt_last) + maybe_push_temp_cleanup (sub, flags); } num_split_elts++; @@ -687,10 +705,40 @@ split_nonconstant_init (tree dest, tree init) init = TARGET_EXPR_INITIAL (init); if (TREE_CODE (init) == CONSTRUCTOR) { + /* Subobject initializers are not full-expressions. */ + auto fe = (make_temp_override + (current_stmt_tree ()->stmts_are_full_exprs_p, 0)); + init = cp_fully_fold_init (init); code = push_stmt_list (); - if (split_nonconstant_init_1 (dest, init, false)) + + /* If the complete object is an array, build_vec_init's cleanup is + enough. Otherwise, collect flags for disabling subobject + cleanups once the complete object is fully constructed. */ + vec<tree, va_gc> *flags = nullptr; + if (TREE_CODE (TREE_TYPE (dest)) != ARRAY_TYPE) + flags = make_tree_vector (); + + if (split_nonconstant_init_1 (dest, init, true, &flags)) init = NULL_TREE; + + for (tree f : flags) + { + /* See maybe_push_temp_cleanup. */ + tree d = f; + tree i = boolean_false_node; + if (TREE_CODE (f) == TREE_LIST) + { + /* To disable a build_vec_init cleanup, set + iterator = maxindex. */ + d = TREE_PURPOSE (f); + i = TREE_VALUE (f); + ggc_free (f); + } + add_stmt (build2 (MODIFY_EXPR, TREE_TYPE (d), d, i)); + } + release_tree_vector (flags); + code = pop_stmt_list (code); if (VAR_P (dest) && !is_local_temp (dest)) { @@ -1238,6 +1286,9 @@ digest_init_r (tree type, tree init, int nested, int flags, } } + if (SIMPLE_TARGET_EXPR_P (stripped_init)) + stripped_init = TARGET_EXPR_INITIAL (stripped_init); + if (BRACE_ENCLOSED_INITIALIZER_P (stripped_init) && !TYPE_NON_AGGREGATE_CLASS (type)) return process_init_constructor (type, stripped_init, nested, flags, @@ -1317,6 +1368,7 @@ digest_nsdmi_init (tree decl, tree init, tsubst_flags_t complain) #define PICFLAG_NOT_ALL_CONSTANT 2 #define PICFLAG_NOT_ALL_SIMPLE 4 #define PICFLAG_SIDE_EFFECTS 8 +#define PICFLAG_VEC_INIT 16 /* Given an initializer INIT, return the flag (PICFLAG_*) which better describe it. */ @@ -1460,10 +1512,19 @@ process_init_constructor_array (tree type, tree init, int nested, int flags, if (next) { - picflags |= picflag_from_initializer (next); - if (len > i+1 + if (next != error_mark_node + && ! seen_error () // Improves error-recovery on anew5.C. && (initializer_constant_valid_p (next, TREE_TYPE (next)) - == null_pointer_node)) + != null_pointer_node)) + { + /* Use VEC_INIT_EXPR for non-constant initialization of + trailing elements with no explicit initializers. */ + picflags |= PICFLAG_VEC_INIT; + break; + } + + picflags |= picflag_from_initializer (next); + if (len > i+1) { tree range = build2 (RANGE_EXPR, size_type_node, build_int_cst (size_type_node, i), @@ -1858,6 +1919,13 @@ process_init_constructor (tree type, tree init, int nested, int flags, if (!(picflags & PICFLAG_NOT_ALL_SIMPLE)) TREE_STATIC (init) = 1; } + if (picflags & PICFLAG_VEC_INIT) + { + /* Defer default-initialization of array elements with no corresponding + initializer-clause until later so we can use a loop. */ + TREE_TYPE (init) = init_list_type_node; + init = build_vec_init_expr (type, init, complain); + } return init; } diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 3a4f03c..e36d3ab 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,14 @@ +2022-01-03 Iain Buclaw <ibuclaw@gdcproject.org> + + PR d/103840 + * dmd/MERGE: Merge upstream dmd 001bfd97b. + * Make-lang.in (D_FRONTEND_OBJS): Rename d/complex.o to + d/root-complex.o, and d/utf.o to d/root/utf.o. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + * gdc.texi: Bump @copyrights-d year. + Copyright (C) 2022 Free Software Foundation, Inc. diff --git a/gcc/doc/analyzer.texi b/gcc/doc/analyzer.texi index 6577981..06eb98f 100644 --- a/gcc/doc/analyzer.texi +++ b/gcc/doc/analyzer.texi @@ -487,6 +487,14 @@ will emit a warning describing the capacity of the base region of the region pointed to by the 1st argument. @smallexample +extern void __analyzer_dump_escaped (void); +@end smallexample + +will emit a warning giving the number of decls that have escaped on this +analysis path, followed by a comma-separated list of their names, +in alphabetical order. + +@smallexample __analyzer_dump_path (); @end smallexample @@ -545,3 +553,13 @@ and the exploded graph in compressed JSON form. One approach when tracking down where a particular bogus state is introduced into the @code{exploded_graph} is to add custom code to @code{program_state::validate}. + +The debug function @code{region::is_named_decl_p} can be used when debugging, +such as for assertions and conditional breakpoints. For example, when +tracking down a bug in handling a decl called @code{yy_buffer_stack}, I +temporarily added a: +@smallexample + gcc_assert (!m_base_region->is_named_decl_p ("yy_buffer_stack")); +@end smallexample +to @code{binding_cluster::mark_as_escaped} to trap a point where +@code{yy_buffer_stack} was mistakenly being treated as having escaped. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 9bf486c..db19e28 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -12452,9 +12452,7 @@ This built-in function implements an atomic exchange operation. It writes @var{val} into @code{*@var{ptr}}, and returns the previous contents of @code{*@var{ptr}}. -The valid memory order variants are -@code{__ATOMIC_RELAXED}, @code{__ATOMIC_SEQ_CST}, @code{__ATOMIC_ACQUIRE}, -@code{__ATOMIC_RELEASE}, and @code{__ATOMIC_ACQ_REL}. +All memory order variants are valid. @end deftypefn diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 8568e30..f27ff86 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -32466,8 +32466,8 @@ Force indirect call and jump via register. @opindex mharden-sls Generate code to mitigate against straight line speculation (SLS) with @var{choice}. The default is @samp{none} which disables all SLS -hardening. @samp{return} enables SLS hardening for function return. -@samp{indirect-branch} enables SLS hardening for indirect branch. +hardening. @samp{return} enables SLS hardening for function returns. +@samp{indirect-jmp} enables SLS hardening for indirect jumps. @samp{all} enables all SLS hardening. @item -mindirect-branch-cs-prefix diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 34a949e..eaa5f59 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -11435,6 +11435,37 @@ specific target options and the caller does not use the same options. @end deftypefn @c hook-end +@deftypefn {Target Hook} bool TARGET_UPDATE_IPA_FN_TARGET_INFO (unsigned int& @var{info}, const gimple* @var{stmt}) +Allow target to analyze all gimple statements for the given function to +record and update some target specific information for inlining. A typical +example is that a caller with one isa feature disabled is normally not +allowed to inline a callee with that same isa feature enabled even which is +attributed by always_inline, but with the conservative analysis on all +statements of the callee if we are able to guarantee the callee does not +exploit any instructions from the mismatch isa feature, it would be safe to +allow the caller to inline the callee. +@var{info} is one @code{unsigned int} value to record information in which +one set bit indicates one corresponding feature is detected in the analysis, +@var{stmt} is the statement being analyzed. Return true if target still +need to analyze the subsequent statements, otherwise return false to stop +subsequent analysis. +The default version of this hook returns false. +@end deftypefn + +@deftypefn {Target Hook} bool TARGET_NEED_IPA_FN_TARGET_INFO (const_tree @var{decl}, unsigned int& @var{info}) +Allow target to check early whether it is necessary to analyze all gimple +statements in the given function to update target specific information for +inlining. See hook @code{update_ipa_fn_target_info} for usage example of +target specific information. This hook is expected to be invoked ahead of +the iterating with hook @code{update_ipa_fn_target_info}. +@var{decl} is the function being analyzed, @var{info} is the same as what +in hook @code{update_ipa_fn_target_info}, target can do one time update +into @var{info} without iterating for some case. Return true if target +decides to analyze all gimple statements to collect information, otherwise +return false. +The default version of this hook returns false. +@end deftypefn + @deftypefn {Target Hook} void TARGET_RELAYOUT_FUNCTION (tree @var{fndecl}) @c hook-start:TARGET_RELAYOUT_FUNCTION This target hook fixes function @var{fndecl} after attributes are processed. diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index d401bd4..d6359aa 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -7191,6 +7191,10 @@ on this implementation detail. @hook TARGET_CAN_INLINE_P +@hook TARGET_UPDATE_IPA_FN_TARGET_INFO + +@hook TARGET_NEED_IPA_FN_TARGET_INFO + @hook TARGET_RELAYOUT_FUNCTION @node Emulated TLS @@ -10340,7 +10340,6 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, enum tree_code code = TREE_CODE (exp); rtx subtarget, original_target; int ignore; - tree context; bool reduce_bit_field; location_t loc = EXPR_LOCATION (exp); struct separate_ops ops; @@ -10579,14 +10578,16 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, /* Variables inherited from containing functions should have been lowered by this point. */ if (exp) - context = decl_function_context (exp); - gcc_assert (!exp - || SCOPE_FILE_SCOPE_P (context) - || context == current_function_decl - || TREE_STATIC (exp) - || DECL_EXTERNAL (exp) - /* ??? C++ creates functions that are not TREE_STATIC. */ - || TREE_CODE (exp) == FUNCTION_DECL); + { + tree context = decl_function_context (exp); + gcc_assert (SCOPE_FILE_SCOPE_P (context) + || context == current_function_decl + || TREE_STATIC (exp) + || DECL_EXTERNAL (exp) + /* ??? C++ creates functions that are not + TREE_STATIC. */ + || TREE_CODE (exp) == FUNCTION_DECL); + } /* This is the case of an array whose size is to be determined from its initializer, while the initializer is still being parsed. diff --git a/gcc/flag-types.h b/gcc/flag-types.h index 649021f..d92c167 100644 --- a/gcc/flag-types.h +++ b/gcc/flag-types.h @@ -424,7 +424,15 @@ enum gfc_convert GFC_FLAG_CONVERT_NATIVE = 0, GFC_FLAG_CONVERT_SWAP, GFC_FLAG_CONVERT_BIG, - GFC_FLAG_CONVERT_LITTLE + GFC_FLAG_CONVERT_LITTLE, + GFC_FLAG_CONVERT_R16_IEEE = 4, + GFC_FLAG_CONVERT_R16_IEEE_SWAP, + GFC_FLAG_CONVERT_R16_IEEE_BIG, + GFC_FLAG_CONVERT_R16_IEEE_LITTLE, + GFC_FLAG_CONVERT_R16_IBM = 8, + GFC_FLAG_CONVERT_R16_IBM_SWAP, + GFC_FLAG_CONVERT_R16_IBM_BIG, + GFC_FLAG_CONVERT_R16_IBM_LITTLE, }; diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3a4f03c..3119233 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,132 @@ +2022-01-11 Thomas Koenig <tkoenig@gcc.gnu.org> + + * libgfortran.h (unit_convert): Add flags. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * trans-types.c (gfc_init_kinds): When setting abi_kind to 17, if not + targetting glibc 2.32 or later and -fbuilding-libgfortran, set + gfc_real16_is_float128 and c_float128 in gfc_real_kinds. + (gfc_build_real_type): Don't set c_long_double if c_float128 is + already set. + * trans-intrinsic.c (builtin_decl_for_precision): Don't use + long_double_built_in if gfc_real16_is_float128 and + long_double_type_node == gfc_float128_type_node. + * lang.opt (fbuilding-libgfortran): New undocumented option. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Use + gfc_type_abi_kind. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * trans-io.c (transfer_array_desc): Pass abi kind instead of kind + to libgfortran. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * trans-io.c (transfer_namelist_element): Use gfc_type_abi_kind, + formatting fixes. + (transfer_expr): Use gfc_type_abi_kind, use *REAL128* APIs even + for abi_kind == 17. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * gfortran.h (gfc_real_info): Add abi_kind member. + (gfc_type_abi_kind): Declare. + * trans-types.c (gfc_init_kinds): Initialize abi_kind. + * intrinsic.c (gfc_type_abi_kind): New function. + (conv_name): Use it. + * iresolve.c (resolve_transformational, gfc_resolve_abs, + gfc_resolve_char_achar, gfc_resolve_acos, gfc_resolve_acosh, + gfc_resolve_aimag, gfc_resolve_and, gfc_resolve_aint, gfc_resolve_all, + gfc_resolve_anint, gfc_resolve_any, gfc_resolve_asin, + gfc_resolve_asinh, gfc_resolve_atan, gfc_resolve_atanh, + gfc_resolve_atan2, gfc_resolve_bessel_n2, gfc_resolve_ceiling, + gfc_resolve_cmplx, gfc_resolve_complex, gfc_resolve_cos, + gfc_resolve_cosh, gfc_resolve_count, gfc_resolve_dble, + gfc_resolve_dim, gfc_resolve_dot_product, gfc_resolve_dprod, + gfc_resolve_exp, gfc_resolve_floor, gfc_resolve_hypot, + gfc_resolve_int, gfc_resolve_int2, gfc_resolve_int8, gfc_resolve_long, + gfc_resolve_log, gfc_resolve_log10, gfc_resolve_logical, + gfc_resolve_matmul, gfc_resolve_minmax, gfc_resolve_maxloc, + gfc_resolve_findloc, gfc_resolve_maxval, gfc_resolve_merge, + gfc_resolve_minloc, gfc_resolve_minval, gfc_resolve_mod, + gfc_resolve_modulo, gfc_resolve_nearest, gfc_resolve_or, + gfc_resolve_real, gfc_resolve_realpart, gfc_resolve_reshape, + gfc_resolve_sign, gfc_resolve_sin, gfc_resolve_sinh, gfc_resolve_sqrt, + gfc_resolve_tan, gfc_resolve_tanh, gfc_resolve_transpose, + gfc_resolve_trigd, gfc_resolve_xor, gfc_resolve_random_number): + Likewise. + * trans-decl.c (gfc_build_intrinsic_function_decls): Likewise. + +2022-01-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/103366 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Allow unlimited + polymorphic actual argument passed to assumed type formal. + +2022-01-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/103777 + * simplify.c (gfc_simplify_maskr): Check validity of argument 'I' + before simplifying. + (gfc_simplify_maskl): Likewise. + +2022-01-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/101762 + * expr.c (gfc_check_pointer_assign): For pointer initialization + targets, check that subscripts and substring indices in + specifications are constant expressions. + +2022-01-09 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/103789 + * trans-array.c (arg_evaluated_for_scalarization): Add MASKL, MASKR, + SCAN and VERIFY to the list of intrinsics whose KIND argument is to be + ignored. + +2022-01-07 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103898 + * trans-intrinsic.c (gfc_conv_intrinsic_size): Make size_var + actually be a variable and fix surrounding code. + +2022-01-06 Steve Kargl <kargl@gcc.gnu.org> + Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103287 + * interface.c (argument_rank_mismatch): Replace incorrect assertion + with return. + +2022-01-05 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103258 + * decl.c (gfc_match_char_spec): Suppress errors around call + to gfc_reduce_init_expr. + * error.c (gfc_query_suppress_errors): New. + * gfortran.h (gfc_query_suppress_errors): Declare. + * symbol.c (gfc_set_default_type): Check gfc_query_suppress_errors. + +2022-01-03 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103390 + * expr.c (gfc_is_simply_contiguous): Make it smarter about + function calls. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Do not generate + copy loops for array expressions that are not "variables" (lvalues). + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + Copyright (C) 2022 Free Software Foundation, Inc. diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 4e510cc..c846923 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -3609,7 +3609,9 @@ done: gfc_current_ns = gfc_get_namespace (NULL, 0); e = gfc_copy_expr (len); + gfc_push_suppress_errors (); gfc_reduce_init_expr (e); + gfc_pop_suppress_errors (); if (e->expr_type == EXPR_CONSTANT) { gfc_replace_expr (len, e); diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index be2eb93..e95c083 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -83,6 +83,15 @@ gfc_pop_suppress_errors (void) } +/* Query whether errors are suppressed. */ + +bool +gfc_query_suppress_errors (void) +{ + return suppress_errors > 0; +} + + /* Determine terminal width (for trimming source lines in output). */ static int diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 96a2cd7..a87686d 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -4343,6 +4343,7 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue, { gfc_symbol *sym; bool target; + gfc_ref *ref; if (gfc_is_size_zero_array (rvalue)) { @@ -4372,6 +4373,39 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue, &rvalue->where); return false; } + + for (ref = rvalue->ref; ref; ref = ref->next) + { + switch (ref->type) + { + case REF_ARRAY: + for (int n = 0; n < ref->u.ar.dimen; n++) + if (!gfc_is_constant_expr (ref->u.ar.start[n]) + || !gfc_is_constant_expr (ref->u.ar.end[n]) + || !gfc_is_constant_expr (ref->u.ar.stride[n])) + { + gfc_error ("Every subscript of target specification " + "at %L must be a constant expression", + &ref->u.ar.where); + return false; + } + break; + + case REF_SUBSTRING: + if (!gfc_is_constant_expr (ref->u.ss.start) + || !gfc_is_constant_expr (ref->u.ss.end)) + { + gfc_error ("Substring starting and ending points of target " + "specification at %L must be constant expressions", + &ref->u.ss.start->where); + return false; + } + break; + + default: + break; + } + } } else { diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index d01a9dc..41ac6c0 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1083,6 +1083,7 @@ typedef struct void gfc_push_suppress_errors (void); void gfc_pop_suppress_errors (void); +bool gfc_query_suppress_errors (void); /* Character length structures hold the expression that gives the @@ -2644,7 +2645,7 @@ extern gfc_logical_info gfc_logical_kinds[]; typedef struct { mpfr_t epsilon, huge, tiny, subnormal; - int kind, radix, digits, min_exponent, max_exponent; + int kind, abi_kind, radix, digits, min_exponent, max_exponent; int range, precision; /* The precision of the type as reported by GET_MODE_PRECISION. */ @@ -3500,6 +3501,12 @@ void gfc_intrinsic_init_1 (void); void gfc_intrinsic_done_1 (void); char gfc_type_letter (bt, bool logical_equals_int = false); +int gfc_type_abi_kind (bt, int); +static inline int +gfc_type_abi_kind (gfc_typespec *ts) +{ + return gfc_type_abi_kind (ts->type, ts->kind); +} gfc_symbol * gfc_get_intrinsic_sub_symbol (const char *); gfc_symbol *gfc_get_intrinsic_function_symbol (gfc_expr *); gfc_symbol *gfc_find_intrinsic_symbol (gfc_expr *); diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 4be9583..0fd881d 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2237,7 +2237,11 @@ argument_rank_mismatch (const char *name, locus *where, } else { - gcc_assert (rank2 != -1); + if (rank2 == -1) + /* This is an assumed rank-actual passed to a function without + an explicit interface, which is already diagnosed in + gfc_procedure_use. */ + return; if (rank1 == 0) gfc_error_opt (0, "Rank mismatch between actual argument at %L " "and actual argument at %L (scalar and rank-%d)", diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 32614d0..a7ecdb4 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -103,6 +103,27 @@ gfc_type_letter (bt type, bool logical_equals_int) } +/* Return kind that should be used for ABI purposes in libgfortran + APIs. Usually the same as ts->kind, except for BT_REAL/BT_COMPLEX + for IEEE 754 quad format kind 16 where it returns 17. */ + +int +gfc_type_abi_kind (bt type, int kind) +{ + switch (type) + { + case BT_REAL: + case BT_COMPLEX: + if (kind == 16) + for (int i = 0; gfc_real_kinds[i].kind != 0; i++) + if (gfc_real_kinds[i].kind == kind) + return gfc_real_kinds[i].abi_kind; + return kind; + default: + return kind; + } +} + /* Get a symbol for a resolved name. Note, if needed be, the elemental attribute has be added afterwards. */ @@ -167,8 +188,8 @@ static const char * conv_name (gfc_typespec *from, gfc_typespec *to) { return gfc_get_string ("__convert_%c%d_%c%d", - gfc_type_letter (from->type), from->kind, - gfc_type_letter (to->type), to->kind); + gfc_type_letter (from->type), gfc_type_abi_kind (from), + gfc_type_letter (to->type), gfc_type_abi_kind (to)); } diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c index 8a40a3e..97ac4eb 100644 --- a/gcc/fortran/iresolve.c +++ b/gcc/fortran/iresolve.c @@ -191,7 +191,8 @@ resolve_transformational (const char *name, gfc_expr *f, gfc_expr *array, f->value.function.name = gfc_get_string (PREFIX ("%s%s_%c%d"), prefix, name, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); } @@ -206,7 +207,8 @@ gfc_resolve_abs (gfc_expr *f, gfc_expr *a) f->ts.type = BT_REAL; f->value.function.name - = gfc_get_string ("__abs_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); + = gfc_get_string ("__abs_%c%d", gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -256,7 +258,8 @@ gfc_resolve_char_achar (gfc_expr *f, gfc_expr *x, gfc_expr *kind, f->value.function.name = gfc_get_string ("__%schar_%d_%c%d", is_achar ? "a" : "", f->ts.kind, - gfc_type_letter (x->ts.type), x->ts.kind); + gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -272,7 +275,8 @@ gfc_resolve_acos (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__acos_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__acos_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -282,7 +286,7 @@ gfc_resolve_acosh (gfc_expr *f, gfc_expr *x) f->ts = x->ts; f->value.function.name = gfc_get_string ("__acosh_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } @@ -293,7 +297,7 @@ gfc_resolve_aimag (gfc_expr *f, gfc_expr *x) f->ts.kind = x->ts.kind; f->value.function.name = gfc_get_string ("__aimag_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } @@ -312,7 +316,8 @@ gfc_resolve_and (gfc_expr *f, gfc_expr *i, gfc_expr *j) } f->value.function.name - = gfc_get_string ("__and_%c%d", gfc_type_letter (i->ts.type), f->ts.kind); + = gfc_get_string ("__and_%c%d", gfc_type_letter (i->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -334,7 +339,8 @@ gfc_resolve_aint (gfc_expr *f, gfc_expr *a, gfc_expr *kind) /* The resolved name is only used for specific intrinsics where the return kind is the same as the arg kind. */ f->value.function.name - = gfc_get_string ("__aint_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); + = gfc_get_string ("__aint_%c%d", gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -359,7 +365,7 @@ gfc_resolve_all (gfc_expr *f, gfc_expr *mask, gfc_expr *dim) f->value.function.name = gfc_get_string (PREFIX ("all_%c%d"), gfc_type_letter (mask->ts.type), - mask->ts.kind); + gfc_type_abi_kind (&mask->ts)); } @@ -383,7 +389,7 @@ gfc_resolve_anint (gfc_expr *f, gfc_expr *a, gfc_expr *kind) the return kind is the same as the arg kind. */ f->value.function.name = gfc_get_string ("__anint_%c%d", gfc_type_letter (a->ts.type), - a->ts.kind); + gfc_type_abi_kind (&a->ts)); } @@ -408,7 +414,7 @@ gfc_resolve_any (gfc_expr *f, gfc_expr *mask, gfc_expr *dim) f->value.function.name = gfc_get_string (PREFIX ("any_%c%d"), gfc_type_letter (mask->ts.type), - mask->ts.kind); + gfc_type_abi_kind (&mask->ts)); } @@ -417,7 +423,8 @@ gfc_resolve_asin (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__asin_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__asin_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } void @@ -426,7 +433,7 @@ gfc_resolve_asinh (gfc_expr *f, gfc_expr *x) f->ts = x->ts; f->value.function.name = gfc_get_string ("__asinh_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } void @@ -434,7 +441,8 @@ gfc_resolve_atan (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__atan_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__atan_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } void @@ -443,7 +451,7 @@ gfc_resolve_atanh (gfc_expr *f, gfc_expr *x) f->ts = x->ts; f->value.function.name = gfc_get_string ("__atanh_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } void @@ -452,7 +460,7 @@ gfc_resolve_atan2 (gfc_expr *f, gfc_expr *x, gfc_expr *y ATTRIBUTE_UNUSED) f->ts = x->ts; f->value.function.name = gfc_get_string ("__atan2_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } @@ -507,10 +515,10 @@ gfc_resolve_bessel_n2 (gfc_expr *f, gfc_expr *n1, gfc_expr *n2, gfc_expr *x) if (f->value.function.isym->id == GFC_ISYM_JN2) f->value.function.name = gfc_get_string (PREFIX ("bessel_jn_r%d"), - f->ts.kind); + gfc_type_abi_kind (&f->ts)); else f->value.function.name = gfc_get_string (PREFIX ("bessel_yn_r%d"), - f->ts.kind); + gfc_type_abi_kind (&f->ts)); } @@ -546,7 +554,8 @@ gfc_resolve_ceiling (gfc_expr *f, gfc_expr *a, gfc_expr *kind) ? gfc_default_integer_kind : mpz_get_si (kind->value.integer); f->value.function.name = gfc_get_string ("__ceiling_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -618,12 +627,15 @@ gfc_resolve_cmplx (gfc_expr *f, gfc_expr *x, gfc_expr *y, gfc_expr *kind) if (y == NULL) f->value.function.name = gfc_get_string ("__cmplx0_%d_%c%d", f->ts.kind, - gfc_type_letter (x->ts.type), x->ts.kind); + gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); else f->value.function.name = gfc_get_string ("__cmplx1_%d_%c%d_%c%d", f->ts.kind, - gfc_type_letter (x->ts.type), x->ts.kind, - gfc_type_letter (y->ts.type), y->ts.kind); + gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts), + gfc_type_letter (y->ts.type), + gfc_type_abi_kind (&y->ts)); } @@ -659,8 +671,10 @@ gfc_resolve_complex (gfc_expr *f, gfc_expr *x, gfc_expr *y) f->ts.kind = kind; f->value.function.name = gfc_get_string ("__cmplx1_%d_%c%d_%c%d", f->ts.kind, - gfc_type_letter (x->ts.type), x->ts.kind, - gfc_type_letter (y->ts.type), y->ts.kind); + gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts), + gfc_type_letter (y->ts.type), + gfc_type_abi_kind (&y->ts)); } @@ -677,7 +691,8 @@ gfc_resolve_cos (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__cos_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__cos_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -686,7 +701,8 @@ gfc_resolve_cosh (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__cosh_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__cosh_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -709,7 +725,7 @@ gfc_resolve_count (gfc_expr *f, gfc_expr *mask, gfc_expr *dim, gfc_expr *kind) resolve_mask_arg (mask); f->value.function.name - = gfc_get_string (PREFIX ("count_%d_%c"), f->ts.kind, + = gfc_get_string (PREFIX ("count_%d_%c"), gfc_type_abi_kind (&f->ts), gfc_type_letter (mask->ts.type)); } @@ -810,7 +826,8 @@ gfc_resolve_dble (gfc_expr *f, gfc_expr *a) f->ts.type = BT_REAL; f->ts.kind = gfc_default_double_kind; f->value.function.name - = gfc_get_string ("__dble_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); + = gfc_get_string ("__dble_%c%d", gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -832,7 +849,8 @@ gfc_resolve_dim (gfc_expr *f, gfc_expr *a, gfc_expr *p) } f->value.function.name - = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); + = gfc_get_string ("__dim_%c%d", gfc_type_letter (f->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -850,7 +868,8 @@ gfc_resolve_dot_product (gfc_expr *f, gfc_expr *a, gfc_expr *b) f->ts = temp.ts; f->value.function.name = gfc_get_string (PREFIX ("dot_product_%c%d"), - gfc_type_letter (f->ts.type), f->ts.kind); + gfc_type_letter (f->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -860,7 +879,8 @@ gfc_resolve_dprod (gfc_expr *f, gfc_expr *a ATTRIBUTE_UNUSED, { f->ts.kind = gfc_default_double_kind; f->ts.type = BT_REAL; - f->value.function.name = gfc_get_string ("__dprod_r%d", f->ts.kind); + f->value.function.name = gfc_get_string ("__dprod_r%d", + gfc_type_abi_kind (&f->ts)); } @@ -951,7 +971,8 @@ gfc_resolve_exp (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__exp_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__exp_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -1044,7 +1065,8 @@ gfc_resolve_floor (gfc_expr *f, gfc_expr *a, gfc_expr *kind) ? gfc_default_integer_kind : mpz_get_si (kind->value.integer); f->value.function.name = gfc_get_string ("__floor%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1135,7 +1157,8 @@ void gfc_resolve_hypot (gfc_expr *f, gfc_expr *x, gfc_expr *y ATTRIBUTE_UNUSED) { f->ts = x->ts; - f->value.function.name = gfc_get_string ("__hypot_r%d", x->ts.kind); + f->value.function.name = gfc_get_string ("__hypot_r%d", + gfc_type_abi_kind (&x->ts)); } @@ -1311,7 +1334,8 @@ gfc_resolve_int (gfc_expr *f, gfc_expr *a, gfc_expr *kind) ? gfc_default_integer_kind : mpz_get_si (kind->value.integer); f->value.function.name = gfc_get_string ("__int_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1322,7 +1346,8 @@ gfc_resolve_int2 (gfc_expr *f, gfc_expr *a) f->ts.kind = 2; f->value.function.name = gfc_get_string ("__int_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1333,7 +1358,8 @@ gfc_resolve_int8 (gfc_expr *f, gfc_expr *a) f->ts.kind = 8; f->value.function.name = gfc_get_string ("__int_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1344,7 +1370,8 @@ gfc_resolve_long (gfc_expr *f, gfc_expr *a) f->ts.kind = 4; f->value.function.name = gfc_get_string ("__int_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1498,7 +1525,8 @@ gfc_resolve_log (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__log_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__log_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -1508,7 +1536,7 @@ gfc_resolve_log10 (gfc_expr *f, gfc_expr *x) f->ts = x->ts; f->value.function.name = gfc_get_string ("__log10_%c%d", gfc_type_letter (x->ts.type), - x->ts.kind); + gfc_type_abi_kind (&x->ts)); } @@ -1522,7 +1550,8 @@ gfc_resolve_logical (gfc_expr *f, gfc_expr *a, gfc_expr *kind) f->value.function.name = gfc_get_string ("__logical_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -1579,7 +1608,7 @@ gfc_resolve_matmul (gfc_expr *f, gfc_expr *a, gfc_expr *b) f->value.function.name = gfc_get_string (PREFIX ("matmul_%c%d"), gfc_type_letter (f->ts.type), - f->ts.kind); + gfc_type_abi_kind (&f->ts)); } @@ -1605,7 +1634,8 @@ gfc_resolve_minmax (const char *name, gfc_expr *f, gfc_actual_arglist *args) } f->value.function.name - = gfc_get_string (name, gfc_type_letter (f->ts.type), f->ts.kind); + = gfc_get_string (name, gfc_type_letter (f->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -1689,7 +1719,8 @@ gfc_resolve_maxloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim, f->value.function.name = gfc_get_string (PREFIX ("%s%d_%d_%c%d"), name, d_num, f->ts.kind, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); if (kind) fkind = mpz_get_si (kind->value.integer); @@ -1806,7 +1837,8 @@ gfc_resolve_findloc (gfc_expr *f, gfc_expr *array, gfc_expr *value, f->value.function.name = gfc_get_string (PREFIX ("%s%d_%c%d"), name, d_num, - gfc_type_letter (array->ts.type, true), array->ts.kind); + gfc_type_letter (array->ts.type, true), + gfc_type_abi_kind (&array->ts)); /* We only have a single library function, so we need to convert here. If the function is resolved from within a convert @@ -1868,11 +1900,13 @@ gfc_resolve_maxval (gfc_expr *f, gfc_expr *array, gfc_expr *dim, if (array->ts.type != BT_CHARACTER) f->value.function.name = gfc_get_string (PREFIX ("%s_%c%d"), name, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); else f->value.function.name = gfc_get_string (PREFIX ("%s%d_%c%d"), name, f->rank != 0, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); } @@ -1926,7 +1960,7 @@ gfc_resolve_merge (gfc_expr *f, gfc_expr *tsource, f->ts = tsource->ts; f->value.function.name = gfc_get_string ("__merge_%c%d", gfc_type_letter (tsource->ts.type), - tsource->ts.kind); + gfc_type_abi_kind (&tsource->ts)); } @@ -2017,7 +2051,8 @@ gfc_resolve_minloc (gfc_expr *f, gfc_expr *array, gfc_expr *dim, f->value.function.name = gfc_get_string (PREFIX ("%s%d_%d_%c%d"), name, d_num, f->ts.kind, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); if (fkind != f->ts.kind) { @@ -2082,11 +2117,13 @@ gfc_resolve_minval (gfc_expr *f, gfc_expr *array, gfc_expr *dim, if (array->ts.type != BT_CHARACTER) f->value.function.name = gfc_get_string (PREFIX ("%s_%c%d"), name, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); else f->value.function.name = gfc_get_string (PREFIX ("%s%d_%c%d"), name, f->rank != 0, - gfc_type_letter (array->ts.type), array->ts.kind); + gfc_type_letter (array->ts.type), + gfc_type_abi_kind (&array->ts)); } @@ -2108,7 +2145,8 @@ gfc_resolve_mod (gfc_expr *f, gfc_expr *a, gfc_expr *p) } f->value.function.name - = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), f->ts.kind); + = gfc_get_string ("__mod_%c%d", gfc_type_letter (f->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -2131,7 +2169,7 @@ gfc_resolve_modulo (gfc_expr *f, gfc_expr *a, gfc_expr *p) f->value.function.name = gfc_get_string ("__modulo_%c%d", gfc_type_letter (f->ts.type), - f->ts.kind); + gfc_type_abi_kind (&f->ts)); } void @@ -2143,7 +2181,7 @@ gfc_resolve_nearest (gfc_expr *f, gfc_expr *a, gfc_expr *p) f->ts = a->ts; f->value.function.name = gfc_get_string ("__nearest_%c%d", gfc_type_letter (a->ts.type), - a->ts.kind); + gfc_type_abi_kind (&a->ts)); } void @@ -2187,7 +2225,8 @@ gfc_resolve_or (gfc_expr *f, gfc_expr *i, gfc_expr *j) } f->value.function.name - = gfc_get_string ("__or_%c%d", gfc_type_letter (i->ts.type), f->ts.kind); + = gfc_get_string ("__or_%c%d", gfc_type_letter (i->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -2265,7 +2304,8 @@ gfc_resolve_real (gfc_expr *f, gfc_expr *a, gfc_expr *kind) f->value.function.name = gfc_get_string ("__real_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -2276,7 +2316,8 @@ gfc_resolve_realpart (gfc_expr *f, gfc_expr *a) f->ts.kind = a->ts.kind; f->value.function.name = gfc_get_string ("__real_%d_%c%d", f->ts.kind, - gfc_type_letter (a->ts.type), a->ts.kind); + gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -2361,7 +2402,7 @@ gfc_resolve_reshape (gfc_expr *f, gfc_expr *source, gfc_expr *shape, f->value.function.name = gfc_get_string (PREFIX ("reshape_%c%d"), gfc_type_letter (source->ts.type), - source->ts.kind); + gfc_type_abi_kind (&source->ts)); else if (source->ts.type == BT_CHARACTER) f->value.function.name = gfc_get_string (PREFIX ("reshape_char%d"), kind); @@ -2506,7 +2547,8 @@ gfc_resolve_sign (gfc_expr *f, gfc_expr *a, gfc_expr *b ATTRIBUTE_UNUSED) { f->ts = a->ts; f->value.function.name - = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), a->ts.kind); + = gfc_get_string ("__sign_%c%d", gfc_type_letter (a->ts.type), + gfc_type_abi_kind (&a->ts)); } @@ -2536,7 +2578,8 @@ gfc_resolve_sin (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__sin_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__sin_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -2545,7 +2588,8 @@ gfc_resolve_sinh (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__sinh_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__sinh_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -2639,7 +2683,8 @@ gfc_resolve_sqrt (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__sqrt_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__sqrt_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -2803,7 +2848,8 @@ gfc_resolve_tan (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__tan_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__tan_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -2812,7 +2858,8 @@ gfc_resolve_tanh (gfc_expr *f, gfc_expr *x) { f->ts = x->ts; f->value.function.name - = gfc_get_string ("__tanh_%c%d", gfc_type_letter (x->ts.type), x->ts.kind); + = gfc_get_string ("__tanh_%c%d", gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -3012,7 +3059,7 @@ gfc_resolve_transpose (gfc_expr *f, gfc_expr *matrix) f->value.function.name = gfc_get_string (PREFIX ("transpose_%c%d"), gfc_type_letter (matrix->ts.type), - matrix->ts.kind); + gfc_type_abi_kind (&matrix->ts)); break; case BT_INTEGER: @@ -3060,7 +3107,8 @@ gfc_resolve_trigd (gfc_expr *f, gfc_expr *x) f->ts = x->ts; f->value.function.name = gfc_get_string (PREFIX ("%s_%c%d"), f->value.function.isym->name, - gfc_type_letter (x->ts.type), x->ts.kind); + gfc_type_letter (x->ts.type), + gfc_type_abi_kind (&x->ts)); } @@ -3188,7 +3236,8 @@ gfc_resolve_xor (gfc_expr *f, gfc_expr *i, gfc_expr *j) } f->value.function.name - = gfc_get_string ("__xor_%c%d", gfc_type_letter (i->ts.type), f->ts.kind); + = gfc_get_string ("__xor_%c%d", gfc_type_letter (i->ts.type), + gfc_type_abi_kind (&f->ts)); } @@ -3326,7 +3375,7 @@ gfc_resolve_random_number (gfc_code *c) const char *name; int kind; - kind = c->ext.actual->expr->ts.kind; + kind = gfc_type_abi_kind (&c->ext.actual->expr->ts); if (c->ext.actual->expr->rank == 0) name = gfc_get_string (PREFIX ("random_r%d"), kind); else diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 09d043e..ab92e0e 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -413,6 +413,9 @@ fblas-matmul-limit= Fortran RejectNegative Joined UInteger Var(flag_blas_matmul_limit) Init(30) -fblas-matmul-limit=<n> Size of the smallest matrix for which matmul will use BLAS. +fbuilding-libgfortran +Fortran Undocumented Var(flag_building_libgfortran) + fcheck-array-temporaries Fortran Produce a warning at runtime if a array temporary has been created for a procedure argument. diff --git a/gcc/fortran/libgfortran.h b/gcc/fortran/libgfortran.h index 9055730..ddba41c 100644 --- a/gcc/fortran/libgfortran.h +++ b/gcc/fortran/libgfortran.h @@ -86,14 +86,22 @@ along with GCC; see the file COPYING3. If not see #define GFC_INVALID_UNIT -3 /* Possible values for the CONVERT I/O specifier. */ -/* Keep in sync with GFC_FLAG_CONVERT_* in gcc/flags.h. */ +/* Keep in sync with GFC_FLAG_CONVERT_* in gcc/flag-types.h. */ typedef enum { GFC_CONVERT_NONE = -1, GFC_CONVERT_NATIVE = 0, GFC_CONVERT_SWAP, GFC_CONVERT_BIG, - GFC_CONVERT_LITTLE + GFC_CONVERT_LITTLE, + GFC_CONVERT_R16_IEEE = 4, + GFC_CONVERT_R16_IEEE_SWAP, + GFC_CONVERT_R16_IEEE_BIG, + GFC_CONVERT_R16_IEEE_LITTLE, + GFC_CONVERT_R16_IBM = 8, + GFC_CONVERT_R16_IBM_SWAP, + GFC_CONVERT_R16_IBM_BIG, + GFC_CONVERT_R16_IBM_LITTLE, } unit_convert; diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index ded0745..cc7d33a 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -4878,6 +4878,9 @@ gfc_simplify_maskr (gfc_expr *i, gfc_expr *kind_arg) bool fail = gfc_extract_int (i, &arg); gcc_assert (!fail); + if (!gfc_check_mask (i, kind_arg)) + return &gfc_bad_expr; + result = gfc_get_constant_expr (BT_INTEGER, kind, &i->where); /* MASKR(n) = 2^n - 1 */ @@ -4909,6 +4912,9 @@ gfc_simplify_maskl (gfc_expr *i, gfc_expr *kind_arg) bool fail = gfc_extract_int (i, &arg); gcc_assert (!fail); + if (!gfc_check_mask (i, kind_arg)) + return &gfc_bad_expr; + result = gfc_get_constant_expr (BT_INTEGER, kind, &i->where); /* MASKL(n) = 2^bit_size - 2^(bit_size - n) */ diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 0385595..1a4b022 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -299,7 +299,7 @@ gfc_set_default_type (gfc_symbol *sym, int error_flag, gfc_namespace *ns) if (ts->type == BT_UNKNOWN) { - if (error_flag && !sym->attr.untyped) + if (error_flag && !sym->attr.untyped && !gfc_query_suppress_errors ()) { const char *guessed = lookup_symbol_fuzzy (sym->name, sym); if (guessed) diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 29d0873..a77f331 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -11500,6 +11500,10 @@ arg_evaluated_for_scalarization (gfc_intrinsic_sym *function, { case GFC_ISYM_INDEX: case GFC_ISYM_LEN_TRIM: + case GFC_ISYM_MASKL: + case GFC_ISYM_MASKR: + case GFC_ISYM_SCAN: + case GFC_ISYM_VERIFY: if (strcmp ("kind", gfc_dummy_arg_get_name (*dummy_arg)) == 0) return false; /* Fallthrough. */ diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 066fb3a..08eaa5a 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -3602,8 +3602,9 @@ gfc_build_intrinsic_function_decls (void) rtype = gfc_get_real_type (rkinds[rkind]); if (rtype && itype) { - sprintf (name, PREFIX("pow_r%d_i%d"), rkinds[rkind], - ikinds[ikind]); + sprintf (name, PREFIX("pow_r%d_i%d"), + gfc_type_abi_kind (BT_REAL, rkinds[rkind]), + ikinds[ikind]); gfor_fndecl_math_powi[rkind][ikind].real = gfc_build_library_function_decl (get_identifier (name), rtype, 2, rtype, itype); @@ -3614,8 +3615,9 @@ gfc_build_intrinsic_function_decls (void) ctype = gfc_get_complex_type (rkinds[rkind]); if (ctype && itype) { - sprintf (name, PREFIX("pow_c%d_i%d"), rkinds[rkind], - ikinds[ikind]); + sprintf (name, PREFIX("pow_c%d_i%d"), + gfc_type_abi_kind (BT_REAL, rkinds[rkind]), + ikinds[ikind]); gfor_fndecl_math_powi[rkind][ikind].cmplx = gfc_build_library_function_decl (get_identifier (name), ctype, 2,ctype, itype); diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 381915e..2e15a7e 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -50,10 +50,10 @@ static tree gfc_get_character_len (tree type) { tree len; - + gcc_assert (type && TREE_CODE (type) == ARRAY_TYPE && TYPE_STRING_FLAG (type)); - + len = TYPE_MAX_VALUE (TYPE_DOMAIN (type)); len = (len) ? (len) : (integer_zero_node); return fold_convert (gfc_charlen_type_node, len); @@ -67,10 +67,10 @@ tree gfc_get_character_len_in_bytes (tree type) { tree tmp, len; - + gcc_assert (type && TREE_CODE (type) == ARRAY_TYPE && TYPE_STRING_FLAG (type)); - + tmp = TYPE_SIZE_UNIT (TREE_TYPE (type)); tmp = (tmp && !integer_zerop (tmp)) ? (fold_convert (gfc_charlen_type_node, tmp)) : (NULL_TREE); @@ -5630,6 +5630,16 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) itype = CFI_type_other; // FIXME: Or CFI_type_cptr ? break; case BT_CLASS: + if (UNLIMITED_POLY (e) && fsym->ts.type == BT_ASSUMED) + { + // F2017: 7.3.2.2: "An entity that is declared using the TYPE(*) + // type specifier is assumed-type and is an unlimited polymorphic + // entity." The actual argument _data component is passed. + itype = CFI_type_other; // FIXME: Or CFI_type_cptr ? + break; + } + else + gcc_unreachable (); case BT_PROCEDURE: case BT_HOLLERITH: case BT_UNION: diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 41252c9..dc72d99 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -154,7 +154,9 @@ builtin_decl_for_precision (enum built_in_function base_built_in, i = m->float_built_in; else if (precision == TYPE_PRECISION (double_type_node)) i = m->double_built_in; - else if (precision == TYPE_PRECISION (long_double_type_node)) + else if (precision == TYPE_PRECISION (long_double_type_node) + && (!gfc_real16_is_float128 + || long_double_type_node != gfc_float128_type_node)) i = m->long_double_built_in; else if (precision == TYPE_PRECISION (gfc_float128_type_node)) { @@ -881,7 +883,7 @@ gfc_get_intrinsic_lib_fndecl (gfc_intrinsic_map_t * m, gfc_expr * expr) { snprintf (name, sizeof (name), PREFIX ("%s_%c%d"), m->name, ts->type == BT_COMPLEX ? 'c' : 'r', - ts->kind); + gfc_type_abi_kind (ts)); } argtypes = NULL; @@ -8006,10 +8008,14 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr) cond = gfc_evaluate_now (cond, &se->pre); /* 'block2' contains the arg2 absent case, 'block' the arg2 present case; size_var can be used in both blocks. */ - tree size_var = gfc_tree_array_size (&block2, arg1, e, NULL_TREE); + tree size_var = gfc_create_var (TREE_TYPE (size), "size"); tmp = fold_build2_loc (input_location, MODIFY_EXPR, TREE_TYPE (size_var), size_var, size); gfc_add_expr_to_block (&block, tmp); + size = gfc_tree_array_size (&block2, arg1, e, NULL_TREE); + tmp = fold_build2_loc (input_location, MODIFY_EXPR, + TREE_TYPE (size_var), size_var, size); + gfc_add_expr_to_block (&block2, tmp); tmp = build3_v (COND_EXPR, cond, gfc_finish_block (&block), gfc_finish_block (&block2)); gfc_add_expr_to_block (&se->pre, tmp); diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 92b66be..033b102 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -1765,18 +1765,17 @@ transfer_namelist_element (stmtblock_t * block, const char * var_name, else tmp = build_int_cst (gfc_charlen_type_node, 0); + int abi_kind = gfc_type_abi_kind (ts); if (dtio_proc == null_pointer_node) - tmp = build_call_expr_loc (input_location, - iocall[IOCALL_SET_NML_VAL], 6, - dt_parm_addr, addr_expr, string, - build_int_cst (gfc_int4_type_node, ts->kind), - tmp, dtype); + tmp = build_call_expr_loc (input_location, iocall[IOCALL_SET_NML_VAL], 6, + dt_parm_addr, addr_expr, string, + build_int_cst (gfc_int4_type_node, abi_kind), + tmp, dtype); else - tmp = build_call_expr_loc (input_location, - iocall[IOCALL_SET_NML_DTIO_VAL], 8, - dt_parm_addr, addr_expr, string, - build_int_cst (gfc_int4_type_node, ts->kind), - tmp, dtype, dtio_proc, vtable); + tmp = build_call_expr_loc (input_location, iocall[IOCALL_SET_NML_DTIO_VAL], + 8, dt_parm_addr, addr_expr, string, + build_int_cst (gfc_int4_type_node, abi_kind), + tmp, dtype, dtio_proc, vtable); gfc_add_expr_to_block (block, tmp); /* If the object is an array, transfer rank times: @@ -2298,7 +2297,7 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr, ts->kind = gfc_index_integer_kind; } - kind = ts->kind; + kind = gfc_type_abi_kind (ts); function = NULL; arg2 = NULL; arg3 = NULL; @@ -2318,14 +2317,14 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr, arg2 = build_int_cst (integer_type_node, kind); if (last_dt == READ) { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_REAL128]; else function = iocall[IOCALL_X_REAL]; } else { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_REAL128_WRITE]; else function = iocall[IOCALL_X_REAL_WRITE]; @@ -2337,14 +2336,14 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr, arg2 = build_int_cst (integer_type_node, kind); if (last_dt == READ) { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_COMPLEX128]; else function = iocall[IOCALL_X_COMPLEX]; } else { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_COMPLEX128_WRITE]; else function = iocall[IOCALL_X_COMPLEX_WRITE]; @@ -2529,7 +2528,7 @@ transfer_array_desc (gfc_se * se, gfc_typespec * ts, tree addr_expr) else charlen_arg = build_int_cst (gfc_charlen_type_node, 0); - kind_arg = build_int_cst (integer_type_node, ts->kind); + kind_arg = build_int_cst (integer_type_node, gfc_type_abi_kind (ts)); tmp = gfc_build_addr_expr (NULL_TREE, dt_parm); if (last_dt == READ) diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index d20832c..5de43bb 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -363,6 +363,8 @@ gfc_init_kinds (void) int i_index, r_index, kind; bool saw_i4 = false, saw_i8 = false; bool saw_r4 = false, saw_r8 = false, saw_r10 = false, saw_r16 = false; + scalar_mode r16_mode = QImode; + scalar_mode composite_mode = QImode; i_index = 0; FOR_EACH_MODE_IN_CLASS (int_mode_iter, MODE_INT) @@ -428,6 +430,10 @@ gfc_init_kinds (void) if (!targetm.scalar_mode_supported_p (mode)) continue; + if (MODE_COMPOSITE_P (mode) + && (GET_MODE_PRECISION (mode) + 7) / 8 == 16) + composite_mode = mode; + /* Only let float, double, long double and TFmode go through. Runtime support for others is not provided, so they would be useless. */ @@ -471,7 +477,10 @@ gfc_init_kinds (void) if (kind == 10) saw_r10 = true; if (kind == 16) - saw_r16 = true; + { + saw_r16 = true; + r16_mode = mode; + } /* Careful we don't stumble a weird internal mode. */ gcc_assert (r_index <= 0 || gfc_real_kinds[r_index-1].kind != kind); @@ -479,6 +488,7 @@ gfc_init_kinds (void) gcc_assert (r_index != MAX_REAL_KINDS); gfc_real_kinds[r_index].kind = kind; + gfc_real_kinds[r_index].abi_kind = kind; gfc_real_kinds[r_index].radix = fmt->b; gfc_real_kinds[r_index].digits = fmt->p; gfc_real_kinds[r_index].min_exponent = fmt->emin; @@ -496,6 +506,28 @@ gfc_init_kinds (void) r_index += 1; } + /* Detect the powerpc64le-linux case with -mabi=ieeelongdouble, where + the long double type is non-MODE_COMPOSITE_P TFmode but one can use + -mabi=ibmlongdouble too and get MODE_COMPOSITE_P TFmode with the same + precision. For libgfortran calls pretend the IEEE 754 quad TFmode has + kind 17 rather than 16 and use kind 16 for the IBM extended format + TFmode. */ + if (composite_mode != QImode && saw_r16 && !MODE_COMPOSITE_P (r16_mode)) + { + for (int i = 0; i < r_index; ++i) + if (gfc_real_kinds[i].kind == 16) + { + gfc_real_kinds[i].abi_kind = 17; + if (flag_building_libgfortran + && (TARGET_GLIBC_MAJOR < 2 + || (TARGET_GLIBC_MAJOR == 2 && TARGET_GLIBC_MINOR < 32))) + { + gfc_real16_is_float128 = true; + gfc_real_kinds[i].c_float128 = 1; + } + } + } + /* Choose the default integer kind. We choose 4 unless the user directs us otherwise. Even if the user specified that the default integer kind is 8, the numeric storage size is not 64 bits. In this case, a warning will be @@ -836,7 +868,7 @@ gfc_build_real_type (gfc_real_info *info) info->c_float = 1; if (mode_precision == DOUBLE_TYPE_SIZE) info->c_double = 1; - if (mode_precision == LONG_DOUBLE_TYPE_SIZE) + if (mode_precision == LONG_DOUBLE_TYPE_SIZE && !info->c_float128) info->c_long_double = 1; if (mode_precision != LONG_DOUBLE_TYPE_SIZE && mode_precision == 128) { diff --git a/gcc/fwprop.c b/gcc/fwprop.c index 2eab4fd..3acb552 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -866,10 +866,13 @@ forward_propagate_into (use_info *use, bool reg_prop_only = false) rtx src = SET_SRC (def_set); /* Allow propagations into a loop only for reg-to-reg copies, since - replacing one register by another shouldn't increase the cost. */ + replacing one register by another shouldn't increase the cost. + Propagations from inner loop to outer loop should also be ok. */ struct loop *def_loop = def_insn->bb ()->cfg_bb ()->loop_father; struct loop *use_loop = use->bb ()->cfg_bb ()->loop_father; - if ((reg_prop_only || def_loop != use_loop) + if ((reg_prop_only + || (def_loop != use_loop + && !flow_loop_nested_p (use_loop, def_loop))) && (!reg_single_def_p (dest) || !reg_single_def_p (src))) return false; @@ -4492,7 +4492,10 @@ driver_handle_option (struct gcc_options *opts, case OPT__sysroot_: target_system_root = arg; target_system_root_changed = 1; - do_save = false; + /* Saving this option is useful to let self-specs decide to + provide a default one. */ + do_save = true; + validated = true; break; case OPT_time_: diff --git a/gcc/genopinit.c b/gcc/genopinit.c index c5cda28..fe0791c 100644 --- a/gcc/genopinit.c +++ b/gcc/genopinit.c @@ -320,6 +320,7 @@ main (int argc, const char **argv) " signed char supports_vec_scatter_store[NUM_MACHINE_MODES];\n" "};\n" "extern void init_all_optabs (struct target_optabs *);\n" + "extern bool partial_vectors_supported_p (void);\n" "\n" "extern struct target_optabs default_target_optabs;\n" "extern struct target_optabs *this_fn_optabs;\n" @@ -372,6 +373,33 @@ main (int argc, const char **argv) fprintf (s_file, " ena[%u] = HAVE_%s;\n", i, p->name); fprintf (s_file, "}\n\n"); + fprintf (s_file, + "/* Returns TRUE if the target supports any of the partial vector\n" + " optabs: while_ult_optab, len_load_optab or len_store_optab,\n" + " for any mode. */\n" + "bool\npartial_vectors_supported_p (void)\n{\n"); + bool any_match = false; + fprintf (s_file, "\treturn"); + bool first = true; + for (i = 0; patterns.iterate (i, &p); ++i) + { +#define CMP_NAME(N) !strncmp (p->name, (N), strlen ((N))) + if (CMP_NAME("while_ult") || CMP_NAME ("len_load") + || CMP_NAME ("len_store")) + { + if (first) + fprintf (s_file, " HAVE_%s", p->name); + else + fprintf (s_file, " || HAVE_%s", p->name); + first = false; + any_match = true; + } + } + if (!any_match) + fprintf (s_file, " false"); + fprintf (s_file, ";\n}\n"); + + /* Perform a binary search on a pre-encoded optab+mode*2. */ /* ??? Perhaps even better to generate a minimal perfect hash. Using gperf directly is awkward since it's so geared to working diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 80e7d89..77c551a 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -6283,8 +6283,7 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, tree (*valueize) (tree)) if (gimple_debug_bind_p (stmt)) { tree val = gimple_debug_bind_get_value (stmt); - if (val - && REFERENCE_CLASS_P (val)) + if (val && REFERENCE_CLASS_P (val)) { tree tem = maybe_fold_reference (val); if (tem) @@ -6293,18 +6292,6 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, tree (*valueize) (tree)) changed = true; } } - else if (val - && TREE_CODE (val) == ADDR_EXPR) - { - tree ref = TREE_OPERAND (val, 0); - tree tem = maybe_fold_reference (ref); - if (tem) - { - tem = build_fold_addr_expr_with_type (tem, TREE_TYPE (val)); - gimple_debug_bind_set_value (stmt, tem); - changed = true; - } - } } break; diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc index 144fbc8..e4c078a 100644 --- a/gcc/gimple-ssa-warn-access.cc +++ b/gcc/gimple-ssa-warn-access.cc @@ -29,6 +29,7 @@ #include "gimple.h" #include "tree-pass.h" #include "builtins.h" +#include "diagnostic.h" #include "ssa.h" #include "gimple-pretty-print.h" #include "gimple-ssa-warn-access.h" @@ -38,6 +39,8 @@ #include "gimple-fold.h" #include "gimple-iterator.h" #include "langhooks.h" +#include "memmodel.h" +#include "target.h" #include "tree-dfa.h" #include "tree-ssa.h" #include "tree-cfg.h" @@ -2103,6 +2106,8 @@ private: void maybe_check_dealloc_call (gcall *); void maybe_check_access_sizes (rdwr_map *, tree, tree, gimple *); + bool maybe_warn_memmodel (gimple *, tree, tree, const unsigned char *); + void check_atomic_memmodel (gimple *, tree, tree, const unsigned char *); /* A pointer_query object and its cache to store information about pointers and their targets in. */ @@ -2686,6 +2691,237 @@ pass_waccess::check_read_access (gimple *stmt, tree src, &data, m_ptr_qry.rvals); } +/* Return true if memory model ORD is constant in the context of STMT and + set *CSTVAL to the constant value. Otherwise return false. Warn for + invalid ORD. */ + +bool +memmodel_to_uhwi (tree ord, gimple *stmt, unsigned HOST_WIDE_INT *cstval) +{ + unsigned HOST_WIDE_INT val; + + if (TREE_CODE (ord) == INTEGER_CST) + { + if (!tree_fits_uhwi_p (ord)) + return false; + val = tree_to_uhwi (ord); + } + else + { + /* Use the range query to determine constant values in the absence + of constant proppagation (such as at -O0). */ + value_range rng; + if (!get_range_query (cfun)->range_of_expr (rng, ord, stmt) + || !rng.constant_p () + || !rng.singleton_p (&ord)) + return false; + + wide_int lob = rng.lower_bound (); + if (!wi::fits_uhwi_p (lob)) + return false; + + val = lob.to_shwi (); + } + + if (targetm.memmodel_check) + /* This might warn for an invalid VAL but return a conservatively + valid result. */ + val = targetm.memmodel_check (val); + else if (val & ~MEMMODEL_MASK) + { + tree fndecl = gimple_call_fndecl (stmt); + location_t loc = gimple_location (stmt); + loc = expansion_point_location_if_in_system_header (loc); + + warning_at (loc, OPT_Winvalid_memory_model, + "unknown architecture specifier in memory model " + "%wi for %qD", val, fndecl); + return false; + } + + *cstval = val; + + return true; +} + +/* Valid memory model for each set of atomic built-in functions. */ + +struct memmodel_pair +{ + memmodel modval; + const char* modname; + +#define MEMMODEL_PAIR(val, str) \ + { MEMMODEL_ ## val, "memory_order_" str } +}; + +/* Valid memory models in the order of increasing strength. */ + +static const memmodel_pair memory_models[] = + { MEMMODEL_PAIR (RELAXED, "relaxed"), + MEMMODEL_PAIR (SEQ_CST, "seq_cst"), + MEMMODEL_PAIR (ACQUIRE, "acquire"), + MEMMODEL_PAIR (CONSUME, "consume"), + MEMMODEL_PAIR (RELEASE, "release"), + MEMMODEL_PAIR (ACQ_REL, "acq_rel") + }; + +/* Return the name of the memory model VAL. */ + +static const char* +memmodel_name (unsigned HOST_WIDE_INT val) +{ + val = memmodel_base (val); + + for (unsigned i = 0; i != sizeof memory_models / sizeof *memory_models; ++i) + { + if (val == memory_models[i].modval) + return memory_models[i].modname; + } + return NULL; +} + +/* Indices of valid MEMORY_MODELS above for corresponding atomic operations. */ +static const unsigned char load_models[] = { 0, 1, 2, 3, UCHAR_MAX }; +static const unsigned char store_models[] = { 0, 1, 4, UCHAR_MAX }; +static const unsigned char xchg_models[] = { 0, 1, 3, 4, 5, UCHAR_MAX }; +static const unsigned char flag_clr_models[] = { 0, 1, 4, UCHAR_MAX }; +static const unsigned char all_models[] = { 0, 1, 2, 3, 4, 5, UCHAR_MAX }; + +/* Check the success memory model argument ORD_SUCS to the call STMT to + an atomic function and warn if it's invalid. If nonnull, also check + the failure memory model ORD_FAIL and warn if it's invalid. Return + true if a warning has been issued. */ + +bool +pass_waccess::maybe_warn_memmodel (gimple *stmt, tree ord_sucs, + tree ord_fail, const unsigned char *valid) +{ + unsigned HOST_WIDE_INT sucs, fail = 0; + if (!memmodel_to_uhwi (ord_sucs, stmt, &sucs) + || (ord_fail && !memmodel_to_uhwi (ord_fail, stmt, &fail))) + return false; + + bool is_valid = false; + if (valid) + for (unsigned i = 0; valid[i] != UCHAR_MAX; ++i) + { + memmodel model = memory_models[valid[i]].modval; + if (memmodel_base (sucs) == model) + { + is_valid = true; + break; + } + } + else + is_valid = true; + + tree fndecl = gimple_call_fndecl (stmt); + location_t loc = gimple_location (stmt); + loc = expansion_point_location_if_in_system_header (loc); + + if (!is_valid) + { + bool warned = false; + if (const char *modname = memmodel_name (sucs)) + warned = warning_at (loc, OPT_Winvalid_memory_model, + "invalid memory model %qs for %qD", + modname, fndecl); + else + warned = warning_at (loc, OPT_Winvalid_memory_model, + "invalid memory model %wi for %qD", + sucs, fndecl); + + if (!warned) + return false; + + /* Print a note with the valid memory models. */ + pretty_printer pp; + pp_show_color (&pp) = pp_show_color (global_dc->printer); + for (unsigned i = 0; valid[i] != UCHAR_MAX; ++i) + { + const char *modname = memory_models[valid[i]].modname; + pp_printf (&pp, "%s%qs", i ? ", " : "", modname); + } + + inform (loc, "valid models are %s", pp_formatted_text (&pp)); + return true; + } + + if (!ord_fail) + return false; + + if (fail == MEMMODEL_RELEASE || fail == MEMMODEL_ACQ_REL) + if (const char *failname = memmodel_name (fail)) + { + /* If both memory model arguments are valid but their combination + is not, use their names in the warning. */ + if (!warning_at (loc, OPT_Winvalid_memory_model, + "invalid failure memory model %qs for %qD", + failname, fndecl)) + return false; + + inform (loc, + "valid failure models are %qs, %qs, %qs, %qs", + "memory_order_relaxed", "memory_order_seq_cst", + "memory_order_acquire", "memory_order_consume"); + return true; + } + + if (memmodel_base (fail) <= memmodel_base (sucs)) + return false; + + if (const char *sucsname = memmodel_name (sucs)) + if (const char *failname = memmodel_name (fail)) + { + /* If both memory model arguments are valid but their combination + is not, use their names in the warning. */ + if (!warning_at (loc, OPT_Winvalid_memory_model, + "failure memory model %qs cannot be stronger " + "than success memory model %qs for %qD", + failname, sucsname, fndecl)) + return false; + + /* Print a note with the valid failure memory models which are + those with a value less than or equal to the success mode. */ + char buf[120]; + *buf = '\0'; + for (unsigned i = 0; + memory_models[i].modval <= memmodel_base (sucs); ++i) + { + if (*buf) + strcat (buf, ", "); + + const char *modname = memory_models[valid[i]].modname; + sprintf (buf + strlen (buf), "'%s'", modname); + } + + inform (loc, "valid models are %s", buf); + return true; + } + + /* If either memory model argument value is invalid use the numerical + value of both in the message. */ + return warning_at (loc, OPT_Winvalid_memory_model, + "failure memory model %wi cannot be stronger " + "than success memory model %wi for %qD", + fail, sucs, fndecl); +} + +/* Wrapper for the above. */ + +void +pass_waccess::check_atomic_memmodel (gimple *stmt, tree ord_sucs, + tree ord_fail, const unsigned char *valid) +{ + if (warning_suppressed_p (stmt, OPT_Winvalid_memory_model)) + return; + + if (maybe_warn_memmodel (stmt, ord_sucs, ord_fail, valid)) + return; + + suppress_warning (stmt, OPT_Winvalid_memory_model); +} /* Check a call STMT to an atomic or sync built-in. */ @@ -2699,12 +2935,14 @@ pass_waccess::check_atomic_builtin (gcall *stmt) /* The size in bytes of the access by the function, and the number of the second argument to check (if any). */ unsigned bytes = 0, arg2 = UINT_MAX; + unsigned sucs_arg = UINT_MAX, fail_arg = UINT_MAX; + /* Points to the array of indices of valid memory models. */ + const unsigned char *pvalid_models = NULL; switch (DECL_FUNCTION_CODE (callee)) { #define BUILTIN_ACCESS_SIZE_FNSPEC(N) \ - BUILT_IN_ATOMIC_LOAD_ ## N: \ - case BUILT_IN_SYNC_FETCH_AND_ADD_ ## N: \ + BUILT_IN_SYNC_FETCH_AND_ADD_ ## N: \ case BUILT_IN_SYNC_FETCH_AND_SUB_ ## N: \ case BUILT_IN_SYNC_FETCH_AND_OR_ ## N: \ case BUILT_IN_SYNC_FETCH_AND_AND_ ## N: \ @@ -2720,8 +2958,16 @@ pass_waccess::check_atomic_builtin (gcall *stmt) case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_ ## N: \ case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_ ## N: \ case BUILT_IN_SYNC_LOCK_RELEASE_ ## N: \ - case BUILT_IN_ATOMIC_EXCHANGE_ ## N: \ + bytes = N; \ + break; \ + case BUILT_IN_ATOMIC_LOAD_ ## N: \ + pvalid_models = load_models; \ + sucs_arg = 1; \ + /* FALLTHROUGH */ \ case BUILT_IN_ATOMIC_STORE_ ## N: \ + if (!pvalid_models) \ + pvalid_models = store_models; \ + /* FALLTHROUGH */ \ case BUILT_IN_ATOMIC_ADD_FETCH_ ## N: \ case BUILT_IN_ATOMIC_SUB_FETCH_ ## N: \ case BUILT_IN_ATOMIC_AND_FETCH_ ## N: \ @@ -2735,9 +2981,21 @@ pass_waccess::check_atomic_builtin (gcall *stmt) case BUILT_IN_ATOMIC_FETCH_OR_ ## N: \ case BUILT_IN_ATOMIC_FETCH_XOR_ ## N: \ bytes = N; \ + if (sucs_arg == UINT_MAX) \ + sucs_arg = 2; \ + if (!pvalid_models) \ + pvalid_models = all_models; \ + break; \ + case BUILT_IN_ATOMIC_EXCHANGE_ ## N: \ + bytes = N; \ + sucs_arg = 3; \ + pvalid_models = xchg_models; \ break; \ case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_ ## N: \ bytes = N; \ + sucs_arg = 4; \ + fail_arg = 5; \ + pvalid_models = all_models; \ arg2 = 1 case BUILTIN_ACCESS_SIZE_FNSPEC (1); @@ -2751,10 +3009,28 @@ pass_waccess::check_atomic_builtin (gcall *stmt) case BUILTIN_ACCESS_SIZE_FNSPEC (16); break; + case BUILT_IN_ATOMIC_CLEAR: + sucs_arg = 1; + pvalid_models = flag_clr_models; + break; + default: return false; } + unsigned nargs = gimple_call_num_args (stmt); + if (sucs_arg < nargs) + { + tree ord_sucs = gimple_call_arg (stmt, sucs_arg); + tree ord_fail = NULL_TREE; + if (fail_arg < nargs) + ord_fail = gimple_call_arg (stmt, fail_arg); + check_atomic_memmodel (stmt, ord_sucs, ord_fail, pvalid_models); + } + + if (!bytes) + return true; + tree size = build_int_cstu (sizetype, bytes); tree dst = gimple_call_arg (stmt, 0); check_memop_access (stmt, dst, NULL_TREE, size); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 92b4e75..d64d9c4 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1748,16 +1748,13 @@ force_labels_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) Build a call to internal const function DEFERRED_INIT: 1st argument: SIZE of the DECL; 2nd argument: INIT_TYPE; - 3rd argument: IS_VLA, 0 NO, 1 YES; + 3rd argument: NAME of the DECL; + + as LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, NAME of the DECL). */ - as LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, IS_VLA) - if IS_VLA is false, the LHS is the DECL itself, - if IS_VLA is true, the LHS is a MEM_REF whose address is the pointer - to this DECL. */ static void gimple_add_init_for_auto_var (tree decl, enum auto_init_type init_type, - bool is_vla, gimple_seq *seq_p) { gcc_assert (auto_var_p (decl)); @@ -1767,13 +1764,25 @@ gimple_add_init_for_auto_var (tree decl, tree init_type_node = build_int_cst (integer_type_node, (int) init_type); - tree is_vla_node - = build_int_cst (integer_type_node, (int) is_vla); + + tree decl_name = NULL_TREE; + if (DECL_NAME (decl)) + + decl_name = build_string_literal (IDENTIFIER_LENGTH (DECL_NAME (decl)) + 1, + IDENTIFIER_POINTER (DECL_NAME (decl))); + + else + { + char *decl_name_anonymous = xasprintf ("D.%u", DECL_UID (decl)); + decl_name = build_string_literal (strlen (decl_name_anonymous) + 1, + decl_name_anonymous); + free (decl_name_anonymous); + } tree call = build_call_expr_internal_loc (loc, IFN_DEFERRED_INIT, TREE_TYPE (decl), 3, decl_size, init_type_node, - is_vla_node); + decl_name); gimplify_assign (decl, call, seq_p); } @@ -1947,7 +1956,6 @@ gimplify_decl_expr (tree *stmt_p, gimple_seq *seq_p) { gimple_add_init_for_auto_var (decl, flag_auto_var_init, - is_vla, seq_p); /* The expanding of a call to the above .DEFERRED_INIT will apply block initialization to the whole space covered by this variable. @@ -8123,7 +8131,7 @@ gimplify_omp_affinity (tree *list_p, gimple_seq *pre_p) if (error_operand_p (OMP_CLAUSE_DECL (c))) return; if (gimplify_expr (&OMP_CLAUSE_DECL (c), pre_p, NULL, - is_gimple_val, fb_rvalue) == GS_ERROR) + is_gimple_lvalue, fb_lvalue) == GS_ERROR) return; gimplify_and_add (OMP_CLAUSE_DECL (c), pre_p); } diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 8e6dcc6..31b91ba 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + * gccgo.texi: Bump @copyrights-go year. + 2021-12-28 Martin Liska <mliska@suse.cz> * gccgo.texi: Replace http:// with https. diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 2d04f4b..9cc6a1c 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -d3be41f0a1fca20e241e1db62b4b0f5262caac55 +799e9807c36fc661b14dfff136369556f09a5ebf The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 290d294..e2fd509 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -6890,80 +6890,12 @@ Block::traverse(Traverse* traverse) | Traverse::traverse_expressions | Traverse::traverse_types)) != 0) { - const unsigned int e_or_t = (Traverse::traverse_expressions - | Traverse::traverse_types); - const unsigned int e_or_t_or_s = (e_or_t - | Traverse::traverse_statements); for (Bindings::const_definitions_iterator pb = this->bindings_->begin_definitions(); pb != this->bindings_->end_definitions(); ++pb) { - int t = TRAVERSE_CONTINUE; - switch ((*pb)->classification()) - { - case Named_object::NAMED_OBJECT_CONST: - if ((traverse_mask & Traverse::traverse_constants) != 0) - t = traverse->constant(*pb, false); - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t) != 0) - { - Type* tc = (*pb)->const_value()->type(); - if (tc != NULL - && Type::traverse(tc, traverse) == TRAVERSE_EXIT) - return TRAVERSE_EXIT; - t = (*pb)->const_value()->traverse_expression(traverse); - } - break; - - case Named_object::NAMED_OBJECT_VAR: - case Named_object::NAMED_OBJECT_RESULT_VAR: - if ((traverse_mask & Traverse::traverse_variables) != 0) - t = traverse->variable(*pb); - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t) != 0) - { - if ((*pb)->is_result_variable() - || (*pb)->var_value()->has_type()) - { - Type* tv = ((*pb)->is_variable() - ? (*pb)->var_value()->type() - : (*pb)->result_var_value()->type()); - if (tv != NULL - && Type::traverse(tv, traverse) == TRAVERSE_EXIT) - return TRAVERSE_EXIT; - } - } - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t_or_s) != 0 - && (*pb)->is_variable()) - t = (*pb)->var_value()->traverse_expression(traverse, - traverse_mask); - break; - - case Named_object::NAMED_OBJECT_FUNC: - case Named_object::NAMED_OBJECT_FUNC_DECLARATION: - go_unreachable(); - - case Named_object::NAMED_OBJECT_TYPE: - if ((traverse_mask & e_or_t) != 0) - t = Type::traverse((*pb)->type_value(), traverse); - break; - - case Named_object::NAMED_OBJECT_TYPE_DECLARATION: - case Named_object::NAMED_OBJECT_UNKNOWN: - case Named_object::NAMED_OBJECT_ERRONEOUS: - break; - - case Named_object::NAMED_OBJECT_PACKAGE: - case Named_object::NAMED_OBJECT_SINK: - go_unreachable(); - - default: - go_unreachable(); - } - - if (t == TRAVERSE_EXIT) + if ((*pb)->traverse(traverse, false) == TRAVERSE_EXIT) return TRAVERSE_EXIT; } } @@ -8673,6 +8605,99 @@ Named_object::location() const } } +// Traverse a Named_object. + +int +Named_object::traverse(Traverse* traverse, bool is_global) +{ + const unsigned int traverse_mask = traverse->traverse_mask(); + const unsigned int e_or_t = (Traverse::traverse_expressions + | Traverse::traverse_types); + const unsigned int e_or_t_or_s = (e_or_t + | Traverse::traverse_statements); + + int t = TRAVERSE_CONTINUE; + switch (this->classification_) + { + case Named_object::NAMED_OBJECT_CONST: + if ((traverse_mask & Traverse::traverse_constants) != 0) + t = traverse->constant(this, is_global); + if (t == TRAVERSE_CONTINUE + && (traverse_mask & e_or_t) != 0) + { + Type* tc = this->const_value()->type(); + if (tc != NULL) + { + if (Type::traverse(tc, traverse) == TRAVERSE_EXIT) + return TRAVERSE_EXIT; + } + t = this->const_value()->traverse_expression(traverse); + } + break; + + case Named_object::NAMED_OBJECT_VAR: + case Named_object::NAMED_OBJECT_RESULT_VAR: + if ((traverse_mask & Traverse::traverse_variables) != 0) + t = traverse->variable(this); + if (t == TRAVERSE_CONTINUE + && (traverse_mask & e_or_t) != 0) + { + if (this->is_result_variable() || this->var_value()->has_type()) + { + Type* tv = (this->is_variable() + ? this->var_value()->type() + : this->result_var_value()->type()); + if (tv != NULL) + { + if (Type::traverse(tv, traverse) == TRAVERSE_EXIT) + return TRAVERSE_EXIT; + } + } + } + if (t == TRAVERSE_CONTINUE + && (traverse_mask & e_or_t_or_s) != 0 + && this->is_variable()) + t = this->var_value()->traverse_expression(traverse, + traverse_mask); + break; + + case Named_object::NAMED_OBJECT_FUNC: + if ((traverse_mask & Traverse::traverse_functions) != 0) + t = traverse->function(this); + if (t == TRAVERSE_CONTINUE + && (traverse_mask + & (Traverse::traverse_variables + | Traverse::traverse_constants + | Traverse::traverse_functions + | Traverse::traverse_blocks + | Traverse::traverse_statements + | Traverse::traverse_expressions + | Traverse::traverse_types)) != 0) + t = this->func_value()->traverse(traverse); + break; + + case Named_object::NAMED_OBJECT_TYPE: + if ((traverse_mask & e_or_t) != 0) + t = Type::traverse(this->type_value(), traverse); + break; + + case Named_object::NAMED_OBJECT_PACKAGE: + case Named_object::NAMED_OBJECT_FUNC_DECLARATION: + case Named_object::NAMED_OBJECT_TYPE_DECLARATION: + case Named_object::NAMED_OBJECT_UNKNOWN: + case Named_object::NAMED_OBJECT_ERRONEOUS: + break; + + case Named_object::NAMED_OBJECT_SINK: + go_unreachable(); + + default: + go_unreachable(); + } + + return t; +} + // Export a named object. void @@ -9198,90 +9223,10 @@ Bindings::traverse(Traverse* traverse, bool is_global) // new global objects. const unsigned int e_or_t = (Traverse::traverse_expressions | Traverse::traverse_types); - const unsigned int e_or_t_or_s = (e_or_t - | Traverse::traverse_statements); for (size_t i = 0; i < this->named_objects_.size(); ++i) { Named_object* p = this->named_objects_[i]; - int t = TRAVERSE_CONTINUE; - switch (p->classification()) - { - case Named_object::NAMED_OBJECT_CONST: - if ((traverse_mask & Traverse::traverse_constants) != 0) - t = traverse->constant(p, is_global); - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t) != 0) - { - Type* tc = p->const_value()->type(); - if (tc != NULL - && Type::traverse(tc, traverse) == TRAVERSE_EXIT) - return TRAVERSE_EXIT; - t = p->const_value()->traverse_expression(traverse); - } - break; - - case Named_object::NAMED_OBJECT_VAR: - case Named_object::NAMED_OBJECT_RESULT_VAR: - if ((traverse_mask & Traverse::traverse_variables) != 0) - t = traverse->variable(p); - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t) != 0) - { - if (p->is_result_variable() - || p->var_value()->has_type()) - { - Type* tv = (p->is_variable() - ? p->var_value()->type() - : p->result_var_value()->type()); - if (tv != NULL - && Type::traverse(tv, traverse) == TRAVERSE_EXIT) - return TRAVERSE_EXIT; - } - } - if (t == TRAVERSE_CONTINUE - && (traverse_mask & e_or_t_or_s) != 0 - && p->is_variable()) - t = p->var_value()->traverse_expression(traverse, traverse_mask); - break; - - case Named_object::NAMED_OBJECT_FUNC: - if ((traverse_mask & Traverse::traverse_functions) != 0) - t = traverse->function(p); - - if (t == TRAVERSE_CONTINUE - && (traverse_mask - & (Traverse::traverse_variables - | Traverse::traverse_constants - | Traverse::traverse_functions - | Traverse::traverse_blocks - | Traverse::traverse_statements - | Traverse::traverse_expressions - | Traverse::traverse_types)) != 0) - t = p->func_value()->traverse(traverse); - break; - - case Named_object::NAMED_OBJECT_PACKAGE: - // These are traversed in Gogo::traverse. - go_assert(is_global); - break; - - case Named_object::NAMED_OBJECT_TYPE: - if ((traverse_mask & e_or_t) != 0) - t = Type::traverse(p->type_value(), traverse); - break; - - case Named_object::NAMED_OBJECT_TYPE_DECLARATION: - case Named_object::NAMED_OBJECT_FUNC_DECLARATION: - case Named_object::NAMED_OBJECT_UNKNOWN: - case Named_object::NAMED_OBJECT_ERRONEOUS: - break; - - case Named_object::NAMED_OBJECT_SINK: - default: - go_unreachable(); - } - - if (t == TRAVERSE_EXIT) + if (p->traverse(traverse, is_global) == TRAVERSE_EXIT) return TRAVERSE_EXIT; } diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h index 9ffd120..2ee0fda 100644 --- a/gcc/go/gofrontend/gogo.h +++ b/gcc/go/gofrontend/gogo.h @@ -3047,6 +3047,10 @@ class Named_object Location location() const; + // Traverse a Named_object. + int + traverse(Traverse*, bool is_global); + // Convert a variable to the backend representation. Bvariable* get_backend_variable(Gogo*, Named_object* function); diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 57c02a9..1c67ea0 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -791,8 +791,7 @@ Type::are_convertible(const Type* lhs, const Type* rhs, std::string* reason) // The types are convertible if they have identical underlying // types, ignoring struct field tags. - if ((lhs->named_type() != NULL || rhs->named_type() != NULL) - && Type::are_identical(lhs->base(), rhs->base(), 0, reason)) + if (Type::are_identical(lhs->base(), rhs->base(), 0, reason)) return true; // The types are convertible if they are both unnamed pointer types diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 539887c..9a3e453 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -3064,6 +3064,12 @@ bb_valid_for_noce_process_p (basic_block test_bb, rtx cond, if (!insn_valid_noce_process_p (last_insn, cc)) return false; + + /* Punt on blocks ending with asm goto or jumps with other side-effects, + last_active_insn ignores JUMP_INSNs. */ + if (JUMP_P (BB_END (test_bb)) && !onlyjump_p (BB_END (test_bb))) + return false; + last_set = single_set (last_insn); rtx x = SET_DEST (last_set); diff --git a/gcc/input.c b/gcc/input.c index 0cd212e..82e79be 100644 --- a/gcc/input.c +++ b/gcc/input.c @@ -986,10 +986,11 @@ linemap_client_expand_location_to_spelling_point (location_t loc, } -/* If LOCATION is in a system header and if it is a virtual location for - a token coming from the expansion of a macro, unwind it to the - location of the expansion point of the macro. Otherwise, just return - LOCATION. +/* If LOCATION is in a system header and if it is a virtual location + for a token coming from the expansion of a macro, unwind it to + the location of the expansion point of the macro. If the expansion + point is also in a system header return the original LOCATION. + Otherwise, return the location of the expansion point. This is used for instance when we want to emit diagnostics about a token that may be located in a macro that is itself defined in a @@ -1001,11 +1002,13 @@ linemap_client_expand_location_to_spelling_point (location_t loc, location_t expansion_point_location_if_in_system_header (location_t location) { - if (in_system_header_at (location)) - location = linemap_resolve_location (line_table, location, - LRK_MACRO_EXPANSION_POINT, - NULL); - return location; + if (!in_system_header_at (location)) + return location; + + location_t xloc = linemap_resolve_location (line_table, location, + LRK_MACRO_EXPANSION_POINT, + NULL); + return in_system_header_at (xloc) ? location : xloc; } /* If LOCATION is a virtual location for a token coming from the expansion diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c index b24102a..db16179 100644 --- a/gcc/internal-fn.c +++ b/gcc/internal-fn.c @@ -3011,11 +3011,7 @@ expand_UNIQUE (internal_fn, gcall *stmt) } /* Expand the IFN_DEFERRED_INIT function: - LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, IS_VLA); - - if IS_VLA is false, the LHS is the DECL itself, - if IS_VLA is true, the LHS is a MEM_REF whose address is the pointer - to this DECL. + LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, NAME of the DECL); Initialize the LHS with zero/pattern according to its second argument INIT_TYPE: @@ -3071,8 +3067,8 @@ expand_DEFERRED_INIT (internal_fn, gcall *stmt) if (!reg_lhs) { - /* If this is a VLA or the variable is not in register, - expand to a memset to initialize it. */ + /* If the variable is not in register, expand to a memset + to initialize it. */ mark_addressable (lhs); tree var_addr = build_fold_addr_expr (lhs); diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index d180190..b95babf 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see #include "system.h" #include "coretypes.h" #include "backend.h" +#include "target.h" #include "tree.h" #include "gimple.h" #include "alloc-pool.h" @@ -1149,6 +1150,8 @@ ipa_dump_fn_summary (FILE *f, struct cgraph_node *node) fprintf (f, " calls:\n"); dump_ipa_call_summary (f, 4, node, s); fprintf (f, "\n"); + if (s->target_info) + fprintf (f, " target_info: %x\n", s->target_info); } else fprintf (f, "IPA summary for %s is missing.\n", node->dump_name ()); @@ -2675,6 +2678,12 @@ analyze_function_body (struct cgraph_node *node, bool early) bb_predicate, bb_predicate); + /* Only look for target information for inlinable functions. */ + bool scan_for_target_info = + info->inlinable + && targetm.target_option.need_ipa_fn_target_info (node->decl, + info->target_info); + if (fbi.info) compute_bb_predicates (&fbi, node, info, params_summary); const profile_count entry_count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count; @@ -2895,6 +2904,15 @@ analyze_function_body (struct cgraph_node *node, bool early) } } + /* For target specific information, we want to scan all statements + rather than those statements with non-zero weights, to avoid + missing to scan something interesting for target information, + such as: internal function calls. */ + if (scan_for_target_info) + scan_for_target_info = + targetm.target_option.update_ipa_fn_target_info + (info->target_info, stmt); + /* Account cost of address calculations in the statements. */ for (unsigned int i = 0; i < gimple_num_ops (stmt); i++) { @@ -4116,6 +4134,7 @@ ipa_merge_fn_summary_after_inlining (struct cgraph_edge *edge) toplev_predicate = true; info->fp_expressions |= callee_info->fp_expressions; + info->target_info |= callee_info->target_info; if (callee_info->conds) { @@ -4456,13 +4475,17 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data, bp = streamer_read_bitpack (&ib); if (info) { - info->inlinable = bp_unpack_value (&bp, 1); - info->fp_expressions = bp_unpack_value (&bp, 1); + info->inlinable = bp_unpack_value (&bp, 1); + info->fp_expressions = bp_unpack_value (&bp, 1); + if (!lto_stream_offload_p) + info->target_info = streamer_read_uhwi (&ib); } else { - bp_unpack_value (&bp, 1); - bp_unpack_value (&bp, 1); + bp_unpack_value (&bp, 1); + bp_unpack_value (&bp, 1); + if (!lto_stream_offload_p) + streamer_read_uhwi (&ib); } count2 = streamer_read_uhwi (&ib); @@ -4698,6 +4721,8 @@ ipa_fn_summary_write (void) bp_pack_value (&bp, info->inlinable, 1); bp_pack_value (&bp, info->fp_expressions, 1); streamer_write_bitpack (&bp); + if (!lto_stream_offload_p) + streamer_write_uhwi (ob, info->target_info); streamer_write_uhwi (ob, vec_safe_length (info->conds)); for (i = 0; vec_safe_iterate (info->conds, i, &c); i++) { diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h index fca9222..fc386ee 100644 --- a/gcc/ipa-fnsummary.h +++ b/gcc/ipa-fnsummary.h @@ -126,7 +126,7 @@ public: ipa_fn_summary () : min_size (0), inlinable (false), single_caller (false), - fp_expressions (false), + fp_expressions (false), target_info (0), estimated_stack_size (false), time (0), conds (NULL), size_time_table (), call_size_time_table (vNULL), @@ -141,6 +141,7 @@ public: : min_size (s.min_size), inlinable (s.inlinable), single_caller (s.single_caller), fp_expressions (s.fp_expressions), + target_info (s.target_info), estimated_stack_size (s.estimated_stack_size), time (s.time), conds (s.conds), size_time_table (), call_size_time_table (vNULL), @@ -164,6 +165,10 @@ public: unsigned int single_caller : 1; /* True if function contains any floating point expressions. */ unsigned int fp_expressions : 1; + /* Like fp_expressions field above, but it's to hold some target specific + information, such as some target specific isa flags. Note that for + offloading target compilers, this field isn't streamed. */ + unsigned int target_info; /* Information about function that will result after applying all the inline decisions present in the callgraph. Generally kept up to diff --git a/gcc/ira-build.c b/gcc/ira-build.c index 0547edf..ab3e871 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -497,6 +497,7 @@ ira_create_allocno (int regno, bool cap_p, bitmap_set_bit (loop_tree_node->all_allocnos, ALLOCNO_NUM (a)); ALLOCNO_NREFS (a) = 0; ALLOCNO_FREQ (a) = 0; + ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P (a) = false; ALLOCNO_HARD_REGNO (a) = -1; ALLOCNO_CALL_FREQ (a) = 0; ALLOCNO_CALLS_CROSSED_NUM (a) = 0; @@ -1991,6 +1992,37 @@ propagate_modified_regnos (ira_loop_tree_node_t loop_tree_node) loop_tree_node->modified_regnos); } +/* Propagate ALLOCNO_HARD_REG_COSTS from A to PARENT_A. Use SPILL_COST + as the cost of spilling a register throughout A (which we have to do + for PARENT_A allocations that conflict with A). */ +static void +ira_propagate_hard_reg_costs (ira_allocno_t parent_a, ira_allocno_t a, + int spill_cost) +{ + HARD_REG_SET conflicts = ira_total_conflict_hard_regs (a); + if (ira_caller_save_loop_spill_p (parent_a, a, spill_cost)) + conflicts |= ira_need_caller_save_regs (a); + conflicts &= ~ira_total_conflict_hard_regs (parent_a); + + auto costs = ALLOCNO_HARD_REG_COSTS (a); + if (!hard_reg_set_empty_p (conflicts)) + ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P (a) = true; + else if (!costs) + return; + + auto aclass = ALLOCNO_CLASS (a); + ira_allocate_and_set_costs (&ALLOCNO_HARD_REG_COSTS (parent_a), + aclass, ALLOCNO_CLASS_COST (parent_a)); + auto parent_costs = ALLOCNO_HARD_REG_COSTS (parent_a); + for (int i = 0; i < ira_class_hard_regs_num[aclass]; ++i) + if (TEST_HARD_REG_BIT (conflicts, ira_class_hard_regs[aclass][i])) + parent_costs[i] += spill_cost; + else if (costs) + /* The cost to A of allocating this register to PARENT_A can't + be more than the cost of spilling the register throughout A. */ + parent_costs[i] += MIN (costs[i], spill_cost); +} + /* Propagate new info about allocno A (see comments about accumulated info in allocno definition) to the corresponding allocno on upper loop tree level. So allocnos on upper levels accumulate @@ -2019,33 +2051,51 @@ propagate_allocno_info (void) && bitmap_bit_p (ALLOCNO_LOOP_TREE_NODE (a)->border_allocnos, ALLOCNO_NUM (a))) { + /* Calculate the cost of storing to memory on entry to A's loop, + referencing as memory within A's loop, and restoring from + memory on exit from A's loop. */ + ira_loop_border_costs border_costs (a); + int spill_cost = INT_MAX; + if (ira_subloop_allocnos_can_differ_p (parent_a)) + spill_cost = (border_costs.spill_inside_loop_cost () + + ALLOCNO_MEMORY_COST (a)); + if (! ALLOCNO_BAD_SPILL_P (a)) ALLOCNO_BAD_SPILL_P (parent_a) = false; ALLOCNO_NREFS (parent_a) += ALLOCNO_NREFS (a); ALLOCNO_FREQ (parent_a) += ALLOCNO_FREQ (a); - ALLOCNO_CALL_FREQ (parent_a) += ALLOCNO_CALL_FREQ (a); - merge_hard_reg_conflicts (a, parent_a, true); - ALLOCNO_CALLS_CROSSED_NUM (parent_a) - += ALLOCNO_CALLS_CROSSED_NUM (a); - ALLOCNO_CHEAP_CALLS_CROSSED_NUM (parent_a) - += ALLOCNO_CHEAP_CALLS_CROSSED_NUM (a); - ALLOCNO_CROSSED_CALLS_ABIS (parent_a) - |= ALLOCNO_CROSSED_CALLS_ABIS (a); - ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (parent_a) - |= ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (a); + + /* If A's allocation can differ from PARENT_A's, we can if necessary + spill PARENT_A on entry to A's loop and restore it afterwards. + Doing that has cost SPILL_COST. */ + if (!ira_subloop_allocnos_can_differ_p (parent_a)) + merge_hard_reg_conflicts (a, parent_a, true); + + if (!ira_caller_save_loop_spill_p (parent_a, a, spill_cost)) + { + ALLOCNO_CALL_FREQ (parent_a) += ALLOCNO_CALL_FREQ (a); + ALLOCNO_CALLS_CROSSED_NUM (parent_a) + += ALLOCNO_CALLS_CROSSED_NUM (a); + ALLOCNO_CHEAP_CALLS_CROSSED_NUM (parent_a) + += ALLOCNO_CHEAP_CALLS_CROSSED_NUM (a); + ALLOCNO_CROSSED_CALLS_ABIS (parent_a) + |= ALLOCNO_CROSSED_CALLS_ABIS (a); + ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (parent_a) + |= ALLOCNO_CROSSED_CALLS_CLOBBERED_REGS (a); + } ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (parent_a) += ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (a); aclass = ALLOCNO_CLASS (a); ira_assert (aclass == ALLOCNO_CLASS (parent_a)); - ira_allocate_and_accumulate_costs - (&ALLOCNO_HARD_REG_COSTS (parent_a), aclass, - ALLOCNO_HARD_REG_COSTS (a)); + ira_propagate_hard_reg_costs (parent_a, a, spill_cost); ira_allocate_and_accumulate_costs (&ALLOCNO_CONFLICT_HARD_REG_COSTS (parent_a), aclass, ALLOCNO_CONFLICT_HARD_REG_COSTS (a)); + /* The cost to A of allocating a register to PARENT_A can't be + more than the cost of spilling the register throughout A. */ ALLOCNO_CLASS_COST (parent_a) - += ALLOCNO_CLASS_COST (a); + += MIN (ALLOCNO_CLASS_COST (a), spill_cost); ALLOCNO_MEMORY_COST (parent_a) += ALLOCNO_MEMORY_COST (a); } } diff --git a/gcc/ira-color.c b/gcc/ira-color.c index e0b4e49..59d978f 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -36,6 +36,11 @@ along with GCC; see the file COPYING3. If not see #include "reload.h" #include "cfgloop.h" +/* To prevent soft conflict detection becoming quadratic in the + loop depth. Only for very pathological cases, so it hardly + seems worth a --param. */ +const int max_soft_conflict_loop_depth = 64; + typedef struct allocno_hard_regs *allocno_hard_regs_t; /* The structure contains information about hard registers can be @@ -1707,6 +1712,167 @@ calculate_saved_nregs (int hard_regno, machine_mode mode) return nregs; } +/* Allocnos A1 and A2 are known to conflict. Check whether, in some loop L + that is either the current loop or a nested subloop, the conflict is of + the following form: + + - One allocno (X) is a cap allocno for some non-cap allocno X2. + + - X2 belongs to some loop L2. + + - The other allocno (Y) is a non-cap allocno. + + - Y is an ancestor of some allocno Y2 in L2. (Note that such a Y2 + must exist, given that X and Y conflict.) + + - Y2 is not referenced in L2 (that is, ALLOCNO_NREFS (Y2) == 0). + + - Y can use a different allocation from Y2. + + In this case, Y's register is live across L2 but is not used within it, + whereas X's register is used only within L2. The conflict is therefore + only "soft", in that it can easily be avoided by spilling Y2 inside L2 + without affecting any insn references. + + If the conflict does have this form, return the Y2 that would need to be + spilled in order to allow X and Y (and thus A1 and A2) to use the same + register. Return null otherwise. Returning null is conservatively correct; + any nonnnull return value is an optimization. */ +ira_allocno_t +ira_soft_conflict (ira_allocno_t a1, ira_allocno_t a2) +{ + /* Search for the loop L and its associated allocnos X and Y. */ + int search_depth = 0; + while (ALLOCNO_CAP_MEMBER (a1) && ALLOCNO_CAP_MEMBER (a2)) + { + a1 = ALLOCNO_CAP_MEMBER (a1); + a2 = ALLOCNO_CAP_MEMBER (a2); + if (search_depth++ > max_soft_conflict_loop_depth) + return nullptr; + } + /* This must be true if A1 and A2 conflict. */ + ira_assert (ALLOCNO_LOOP_TREE_NODE (a1) == ALLOCNO_LOOP_TREE_NODE (a2)); + + /* Make A1 the cap allocno (X in the comment above) and A2 the + non-cap allocno (Y in the comment above). */ + if (ALLOCNO_CAP_MEMBER (a2)) + std::swap (a1, a2); + if (!ALLOCNO_CAP_MEMBER (a1)) + return nullptr; + + /* Search for the real allocno that A1 caps (X2 in the comment above). */ + do + { + a1 = ALLOCNO_CAP_MEMBER (a1); + if (search_depth++ > max_soft_conflict_loop_depth) + return nullptr; + } + while (ALLOCNO_CAP_MEMBER (a1)); + + /* Find the associated allocno for A2 (Y2 in the comment above). */ + auto node = ALLOCNO_LOOP_TREE_NODE (a1); + auto local_a2 = node->regno_allocno_map[ALLOCNO_REGNO (a2)]; + + /* Find the parent of LOCAL_A2/Y2. LOCAL_A2 must be a descendant of A2 + for the conflict query to make sense, so this parent lookup must succeed. + + If the parent allocno has no references, it is usually cheaper to + spill at that loop level instead. Keep searching until we find + a parent allocno that does have references (but don't look past + the starting allocno). */ + ira_allocno_t local_parent_a2; + for (;;) + { + local_parent_a2 = ira_parent_allocno (local_a2); + if (local_parent_a2 == a2 || ALLOCNO_NREFS (local_parent_a2) != 0) + break; + local_a2 = local_parent_a2; + } + if (CHECKING_P) + { + /* Sanity check to make sure that the conflict we've been given + makes sense. */ + auto test_a2 = local_parent_a2; + while (test_a2 != a2) + { + test_a2 = ira_parent_allocno (test_a2); + ira_assert (test_a2); + } + } + if (local_a2 + && ALLOCNO_NREFS (local_a2) == 0 + && ira_subloop_allocnos_can_differ_p (local_parent_a2)) + return local_a2; + return nullptr; +} + +/* The caller has decided to allocate HREGNO to A and has proved that + this is safe. However, the allocation might require the kind of + spilling described in the comment above ira_soft_conflict. + The caller has recorded that: + + - The allocnos in ALLOCNOS_TO_SPILL are the ones that would need + to be spilled to satisfy soft conflicts for at least one allocation + (not necessarily HREGNO). + + - The soft conflicts apply only to A allocations that overlap + SOFT_CONFLICT_REGS. + + If allocating HREGNO is subject to any soft conflicts, record the + subloop allocnos that need to be spilled. */ +static void +spill_soft_conflicts (ira_allocno_t a, bitmap allocnos_to_spill, + HARD_REG_SET soft_conflict_regs, int hregno) +{ + auto nregs = hard_regno_nregs (hregno, ALLOCNO_MODE (a)); + bitmap_iterator bi; + unsigned int i; + EXECUTE_IF_SET_IN_BITMAP (allocnos_to_spill, 0, i, bi) + { + /* SPILL_A needs to be spilled for at least one allocation + (not necessarily this one). */ + auto spill_a = ira_allocnos[i]; + + /* Find the corresponding allocno for this loop. */ + auto conflict_a = spill_a; + do + { + conflict_a = ira_parent_or_cap_allocno (conflict_a); + ira_assert (conflict_a); + } + while (ALLOCNO_LOOP_TREE_NODE (conflict_a)->level + > ALLOCNO_LOOP_TREE_NODE (a)->level); + + ira_assert (ALLOCNO_LOOP_TREE_NODE (conflict_a) + == ALLOCNO_LOOP_TREE_NODE (a)); + + if (conflict_a == a) + { + /* SPILL_A is a descendant of A. We don't know (and don't need + to know) which cap allocnos have a soft conflict with A. + All we need to do is test whether the soft conflict applies + to the chosen allocation. */ + if (ira_hard_reg_set_intersection_p (hregno, ALLOCNO_MODE (a), + soft_conflict_regs)) + ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P (spill_a) = true; + } + else + { + /* SPILL_A is a descendant of CONFLICT_A, which has a soft conflict + with A. Test whether the soft conflict applies to the current + allocation. */ + ira_assert (ira_soft_conflict (a, conflict_a) == spill_a); + auto conflict_hregno = ALLOCNO_HARD_REGNO (conflict_a); + ira_assert (conflict_hregno >= 0); + auto conflict_nregs = hard_regno_nregs (conflict_hregno, + ALLOCNO_MODE (conflict_a)); + if (hregno + nregs > conflict_hregno + && conflict_hregno + conflict_nregs > hregno) + ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P (spill_a) = true; + } + } +} + /* Choose a hard register for allocno A. If RETRY_P is TRUE, it means that the function called from function `ira_reassign_conflict_allocnos' and `allocno_reload_assign'. In @@ -1746,6 +1912,8 @@ assign_hard_reg (ira_allocno_t a, bool retry_p) #ifdef STACK_REGS bool no_stack_reg_p; #endif + auto_bitmap allocnos_to_spill; + HARD_REG_SET soft_conflict_regs = {}; ira_assert (! ALLOCNO_ASSIGNED_P (a)); get_conflict_and_start_profitable_regs (a, retry_p, @@ -1833,23 +2001,56 @@ assign_hard_reg (ira_allocno_t a, bool retry_p) mode = ALLOCNO_MODE (conflict_a); conflict_nregs = hard_regno_nregs (hard_regno, mode); - if (conflict_nregs == n_objects && conflict_nregs > 1) + auto spill_a = (retry_p + ? nullptr + : ira_soft_conflict (a, conflict_a)); + if (spill_a) { - int num = OBJECT_SUBWORD (conflict_obj); - - if (REG_WORDS_BIG_ENDIAN) - SET_HARD_REG_BIT (conflicting_regs[word], - hard_regno + n_objects - num - 1); - else - SET_HARD_REG_BIT (conflicting_regs[word], - hard_regno + num); + if (bitmap_set_bit (allocnos_to_spill, + ALLOCNO_NUM (spill_a))) + { + ira_loop_border_costs border_costs (spill_a); + auto cost = border_costs.spill_inside_loop_cost (); + auto note_conflict = [&](int r) + { + SET_HARD_REG_BIT (soft_conflict_regs, r); + auto hri = ira_class_hard_reg_index[aclass][r]; + if (hri >= 0) + { + costs[hri] += cost; + full_costs[hri] += cost; + } + }; + for (int r = hard_regno; + r >= 0 && (int) end_hard_regno (mode, r) > hard_regno; + r--) + note_conflict (r); + for (int r = hard_regno + 1; + r < hard_regno + conflict_nregs; + r++) + note_conflict (r); + } } else - conflicting_regs[word] - |= ira_reg_mode_hard_regset[hard_regno][mode]; - if (hard_reg_set_subset_p (profitable_hard_regs, - conflicting_regs[word])) - goto fail; + { + if (conflict_nregs == n_objects && conflict_nregs > 1) + { + int num = OBJECT_SUBWORD (conflict_obj); + + if (REG_WORDS_BIG_ENDIAN) + SET_HARD_REG_BIT (conflicting_regs[word], + hard_regno + n_objects - num - 1); + else + SET_HARD_REG_BIT (conflicting_regs[word], + hard_regno + num); + } + else + conflicting_regs[word] + |= ira_reg_mode_hard_regset[hard_regno][mode]; + if (hard_reg_set_subset_p (profitable_hard_regs, + conflicting_regs[word])) + goto fail; + } } } else if (! retry_p @@ -1962,6 +2163,8 @@ assign_hard_reg (ira_allocno_t a, bool retry_p) { for (i = hard_regno_nregs (best_hard_regno, mode) - 1; i >= 0; i--) allocated_hardreg_p[best_hard_regno + i] = true; + spill_soft_conflicts (a, allocnos_to_spill, soft_conflict_regs, + best_hard_regno); } if (! retry_p) restore_costs_from_copies (a); @@ -2567,13 +2770,23 @@ ira_loop_edge_freq (ira_loop_tree_node_t loop_node, int regno, bool exit_p) return REG_FREQ_FROM_EDGE_FREQ (freq); } +/* Construct an object that describes the boundary between A and its + parent allocno. */ +ira_loop_border_costs::ira_loop_border_costs (ira_allocno_t a) + : m_mode (ALLOCNO_MODE (a)), + m_class (ALLOCNO_CLASS (a)), + m_entry_freq (ira_loop_edge_freq (ALLOCNO_LOOP_TREE_NODE (a), + ALLOCNO_REGNO (a), false)), + m_exit_freq (ira_loop_edge_freq (ALLOCNO_LOOP_TREE_NODE (a), + ALLOCNO_REGNO (a), true)) +{ +} + /* Calculate and return the cost of putting allocno A into memory. */ static int calculate_allocno_spill_cost (ira_allocno_t a) { int regno, cost; - machine_mode mode; - enum reg_class rclass; ira_allocno_t parent_allocno; ira_loop_tree_node_t parent_node, loop_node; @@ -2586,24 +2799,12 @@ calculate_allocno_spill_cost (ira_allocno_t a) return cost; if ((parent_allocno = parent_node->regno_allocno_map[regno]) == NULL) return cost; - mode = ALLOCNO_MODE (a); - rclass = ALLOCNO_CLASS (a); + ira_loop_border_costs border_costs (a); if (ALLOCNO_HARD_REGNO (parent_allocno) < 0) - cost -= (ira_memory_move_cost[mode][rclass][0] - * ira_loop_edge_freq (loop_node, regno, true) - + ira_memory_move_cost[mode][rclass][1] - * ira_loop_edge_freq (loop_node, regno, false)); + cost -= border_costs.spill_outside_loop_cost (); else - { - ira_init_register_move_cost_if_necessary (mode); - cost += ((ira_memory_move_cost[mode][rclass][1] - * ira_loop_edge_freq (loop_node, regno, true) - + ira_memory_move_cost[mode][rclass][0] - * ira_loop_edge_freq (loop_node, regno, false)) - - (ira_register_move_cost[mode][rclass][rclass] - * (ira_loop_edge_freq (loop_node, regno, false) - + ira_loop_edge_freq (loop_node, regno, true)))); - } + cost += (border_costs.spill_inside_loop_cost () + - border_costs.move_between_loops_cost ()); return cost; } @@ -2985,6 +3186,8 @@ improve_allocation (void) assigning hard register to allocno A even without spilling conflicting allocnos. */ continue; + auto_bitmap allocnos_to_spill; + HARD_REG_SET soft_conflict_regs = {}; mode = ALLOCNO_MODE (a); nwords = ALLOCNO_NUM_OBJECTS (a); /* Process each allocno conflicting with A and update the cost @@ -3010,31 +3213,49 @@ improve_allocation (void) ALLOCNO_COLOR_DATA (conflict_a)->temp = check; if ((conflict_hregno = ALLOCNO_HARD_REGNO (conflict_a)) < 0) continue; - spill_cost = ALLOCNO_UPDATED_MEMORY_COST (conflict_a); - k = (ira_class_hard_reg_index - [ALLOCNO_CLASS (conflict_a)][conflict_hregno]); - ira_assert (k >= 0); - if ((allocno_costs = ALLOCNO_HARD_REG_COSTS (conflict_a)) - != NULL) - spill_cost -= allocno_costs[k]; + auto spill_a = ira_soft_conflict (a, conflict_a); + if (spill_a) + { + if (!bitmap_set_bit (allocnos_to_spill, + ALLOCNO_NUM (spill_a))) + continue; + ira_loop_border_costs border_costs (spill_a); + spill_cost = border_costs.spill_inside_loop_cost (); + } else - spill_cost -= ALLOCNO_UPDATED_CLASS_COST (conflict_a); - spill_cost - += allocno_copy_cost_saving (conflict_a, conflict_hregno); + { + spill_cost = ALLOCNO_UPDATED_MEMORY_COST (conflict_a); + k = (ira_class_hard_reg_index + [ALLOCNO_CLASS (conflict_a)][conflict_hregno]); + ira_assert (k >= 0); + if ((allocno_costs = ALLOCNO_HARD_REG_COSTS (conflict_a)) + != NULL) + spill_cost -= allocno_costs[k]; + else + spill_cost -= ALLOCNO_UPDATED_CLASS_COST (conflict_a); + spill_cost + += allocno_copy_cost_saving (conflict_a, conflict_hregno); + } conflict_nregs = hard_regno_nregs (conflict_hregno, ALLOCNO_MODE (conflict_a)); + auto note_conflict = [&](int r) + { + if (check_hard_reg_p (a, r, + conflicting_regs, profitable_hard_regs)) + { + if (spill_a) + SET_HARD_REG_BIT (soft_conflict_regs, r); + costs[r] += spill_cost; + } + }; for (r = conflict_hregno; r >= 0 && (int) end_hard_regno (mode, r) > conflict_hregno; r--) - if (check_hard_reg_p (a, r, - conflicting_regs, profitable_hard_regs)) - costs[r] += spill_cost; + note_conflict (r); for (r = conflict_hregno + 1; r < conflict_hregno + conflict_nregs; r++) - if (check_hard_reg_p (a, r, - conflicting_regs, profitable_hard_regs)) - costs[r] += spill_cost; + note_conflict (r); } } min_cost = INT_MAX; @@ -3057,6 +3278,7 @@ improve_allocation (void) by spilling some conflicting allocnos does not improve the allocation cost. */ continue; + spill_soft_conflicts (a, allocnos_to_spill, soft_conflict_regs, best); nregs = hard_regno_nregs (best, mode); /* Now spill conflicting allocnos which contain a hard register of A when we assign the best chosen hard register to it. */ @@ -3342,11 +3564,11 @@ static void color_pass (ira_loop_tree_node_t loop_tree_node) { int regno, hard_regno, index = -1, n; - int cost, exit_freq, enter_freq; + int cost; unsigned int j; bitmap_iterator bi; machine_mode mode; - enum reg_class rclass, aclass, pclass; + enum reg_class rclass, aclass; ira_allocno_t a, subloop_allocno; ira_loop_tree_node_t subloop_node; @@ -3391,10 +3613,9 @@ color_pass (ira_loop_tree_node_t loop_tree_node) /* Remove from processing in the next loop. */ bitmap_clear_bit (consideration_allocno_bitmap, j); rclass = ALLOCNO_CLASS (a); - pclass = ira_pressure_class_translate[rclass]; - if (flag_ira_region == IRA_REGION_MIXED - && (loop_tree_node->reg_pressure[pclass] - <= ira_class_hard_regs_num[pclass])) + subloop_allocno = ALLOCNO_CAP_MEMBER (a); + subloop_node = ALLOCNO_LOOP_TREE_NODE (subloop_allocno); + if (ira_single_region_allocno_p (a, subloop_allocno)) { mode = ALLOCNO_MODE (a); hard_regno = ALLOCNO_HARD_REGNO (a); @@ -3404,8 +3625,6 @@ color_pass (ira_loop_tree_node_t loop_tree_node) ira_assert (index >= 0); } regno = ALLOCNO_REGNO (a); - subloop_allocno = ALLOCNO_CAP_MEMBER (a); - subloop_node = ALLOCNO_LOOP_TREE_NODE (subloop_allocno); ira_assert (!ALLOCNO_ASSIGNED_P (subloop_allocno)); ALLOCNO_HARD_REGNO (subloop_allocno) = hard_regno; ALLOCNO_ASSIGNED_P (subloop_allocno) = true; @@ -3428,7 +3647,6 @@ color_pass (ira_loop_tree_node_t loop_tree_node) ira_assert (ALLOCNO_CAP_MEMBER (a) == NULL); mode = ALLOCNO_MODE (a); rclass = ALLOCNO_CLASS (a); - pclass = ira_pressure_class_translate[rclass]; hard_regno = ALLOCNO_HARD_REGNO (a); /* Use hard register class here. ??? */ if (hard_regno >= 0) @@ -3445,32 +3663,12 @@ color_pass (ira_loop_tree_node_t loop_tree_node) ira_assert (ALLOCNO_CLASS (subloop_allocno) == rclass); ira_assert (bitmap_bit_p (subloop_node->all_allocnos, ALLOCNO_NUM (subloop_allocno))); - if ((flag_ira_region == IRA_REGION_MIXED - && (loop_tree_node->reg_pressure[pclass] - <= ira_class_hard_regs_num[pclass])) - || (pic_offset_table_rtx != NULL - && regno == (int) REGNO (pic_offset_table_rtx)) - /* Avoid overlapped multi-registers. Moves between them - might result in wrong code generation. */ - || (hard_regno >= 0 - && ira_reg_class_max_nregs[pclass][mode] > 1)) - { - if (! ALLOCNO_ASSIGNED_P (subloop_allocno)) - { - ALLOCNO_HARD_REGNO (subloop_allocno) = hard_regno; - ALLOCNO_ASSIGNED_P (subloop_allocno) = true; - if (hard_regno >= 0) - update_costs_from_copies (subloop_allocno, true, true); - /* We don't need updated costs anymore. */ - ira_free_allocno_updated_costs (subloop_allocno); - } - continue; - } - exit_freq = ira_loop_edge_freq (subloop_node, regno, true); - enter_freq = ira_loop_edge_freq (subloop_node, regno, false); - ira_assert (regno < ira_reg_equiv_len); - if (ira_equiv_no_lvalue_p (regno)) + if (ira_single_region_allocno_p (a, subloop_allocno) + || !ira_subloop_allocnos_can_differ_p (a, hard_regno >= 0, + false)) { + gcc_assert (!ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P + (subloop_allocno)); if (! ALLOCNO_ASSIGNED_P (subloop_allocno)) { ALLOCNO_HARD_REGNO (subloop_allocno) = hard_regno; @@ -3483,16 +3681,23 @@ color_pass (ira_loop_tree_node_t loop_tree_node) } else if (hard_regno < 0) { + /* If we allocate a register to SUBLOOP_ALLOCNO, we'll need + to load the register on entry to the subloop and store + the register back on exit from the subloop. This incurs + a fixed cost for all registers. Since UPDATED_MEMORY_COST + is (and should only be) used relative to the register costs + for the same allocno, we can subtract this shared register + cost from the memory cost. */ + ira_loop_border_costs border_costs (subloop_allocno); ALLOCNO_UPDATED_MEMORY_COST (subloop_allocno) - -= ((ira_memory_move_cost[mode][rclass][1] * enter_freq) - + (ira_memory_move_cost[mode][rclass][0] * exit_freq)); + -= border_costs.spill_outside_loop_cost (); } else { + ira_loop_border_costs border_costs (subloop_allocno); aclass = ALLOCNO_CLASS (subloop_allocno); ira_init_register_move_cost_if_necessary (mode); - cost = (ira_register_move_cost[mode][rclass][rclass] - * (exit_freq + enter_freq)); + cost = border_costs.move_between_loops_cost (); ira_allocate_and_set_or_copy_costs (&ALLOCNO_UPDATED_HARD_REG_COSTS (subloop_allocno), aclass, ALLOCNO_UPDATED_CLASS_COST (subloop_allocno), @@ -3507,9 +3712,11 @@ color_pass (ira_loop_tree_node_t loop_tree_node) > ALLOCNO_UPDATED_HARD_REG_COSTS (subloop_allocno)[index]) ALLOCNO_UPDATED_CLASS_COST (subloop_allocno) = ALLOCNO_UPDATED_HARD_REG_COSTS (subloop_allocno)[index]; + /* If we spill SUBLOOP_ALLOCNO, we'll need to store HARD_REGNO + on entry to the subloop and restore HARD_REGNO on exit from + the subloop. */ ALLOCNO_UPDATED_MEMORY_COST (subloop_allocno) - += (ira_memory_move_cost[mode][rclass][0] * enter_freq - + ira_memory_move_cost[mode][rclass][1] * exit_freq); + += border_costs.spill_inside_loop_cost (); } } } @@ -3550,7 +3757,6 @@ move_spill_restore (void) { int cost, regno, hard_regno, hard_regno2, index; bool changed_p; - int enter_freq, exit_freq; machine_mode mode; enum reg_class rclass; ira_allocno_t a, parent_allocno, subloop_allocno; @@ -3598,45 +3804,77 @@ move_spill_restore (void) if (subloop_allocno == NULL) continue; ira_assert (rclass == ALLOCNO_CLASS (subloop_allocno)); + ira_loop_border_costs border_costs (subloop_allocno); + /* We have accumulated cost. To get the real cost of - allocno usage in the loop we should subtract costs of - the subloop allocnos. */ - cost -= (ALLOCNO_MEMORY_COST (subloop_allocno) - - (ALLOCNO_HARD_REG_COSTS (subloop_allocno) == NULL - ? ALLOCNO_CLASS_COST (subloop_allocno) - : ALLOCNO_HARD_REG_COSTS (subloop_allocno)[index])); - exit_freq = ira_loop_edge_freq (subloop_node, regno, true); - enter_freq = ira_loop_edge_freq (subloop_node, regno, false); + allocno usage in the loop we should subtract the costs + added by propagate_allocno_info for the subloop allocnos. */ + int reg_cost + = (ALLOCNO_HARD_REG_COSTS (subloop_allocno) == NULL + ? ALLOCNO_CLASS_COST (subloop_allocno) + : ALLOCNO_HARD_REG_COSTS (subloop_allocno)[index]); + + int spill_cost + = (border_costs.spill_inside_loop_cost () + + ALLOCNO_MEMORY_COST (subloop_allocno)); + + /* If HARD_REGNO conflicts with SUBLOOP_A then + propagate_allocno_info will have propagated + the cost of spilling HARD_REGNO in SUBLOOP_NODE. + (ira_subloop_allocnos_can_differ_p must be true + in that case.) If HARD_REGNO is a caller-saved + register, we might have modelled it in the same way. + + Otherwise, SPILL_COST acted as a cap on the propagated + register cost, in cases where the allocations can differ. */ + auto conflicts = ira_total_conflict_hard_regs (subloop_allocno); + if (TEST_HARD_REG_BIT (conflicts, hard_regno) + || (ira_need_caller_save_p (subloop_allocno, hard_regno) + && ira_caller_save_loop_spill_p (a, subloop_allocno, + spill_cost))) + reg_cost = spill_cost; + else if (ira_subloop_allocnos_can_differ_p (a)) + reg_cost = MIN (reg_cost, spill_cost); + + cost -= ALLOCNO_MEMORY_COST (subloop_allocno) - reg_cost; + if ((hard_regno2 = ALLOCNO_HARD_REGNO (subloop_allocno)) < 0) - cost -= (ira_memory_move_cost[mode][rclass][0] * exit_freq - + ira_memory_move_cost[mode][rclass][1] * enter_freq); + /* The register was spilled in the subloop. If we spill + it in the outer loop too then we'll no longer need to + save the register on entry to the subloop and restore + the register on exit from the subloop. */ + cost -= border_costs.spill_inside_loop_cost (); else { - cost - += (ira_memory_move_cost[mode][rclass][0] * exit_freq - + ira_memory_move_cost[mode][rclass][1] * enter_freq); + /* The register was also allocated in the subloop. If we + spill it in the outer loop then we'll need to load the + register on entry to the subloop and store the register + back on exit from the subloop. */ + cost += border_costs.spill_outside_loop_cost (); if (hard_regno2 != hard_regno) - cost -= (ira_register_move_cost[mode][rclass][rclass] - * (exit_freq + enter_freq)); + cost -= border_costs.move_between_loops_cost (); } } if ((parent = loop_node->parent) != NULL && (parent_allocno = parent->regno_allocno_map[regno]) != NULL) { ira_assert (rclass == ALLOCNO_CLASS (parent_allocno)); - exit_freq = ira_loop_edge_freq (loop_node, regno, true); - enter_freq = ira_loop_edge_freq (loop_node, regno, false); + ira_loop_border_costs border_costs (a); if ((hard_regno2 = ALLOCNO_HARD_REGNO (parent_allocno)) < 0) - cost -= (ira_memory_move_cost[mode][rclass][0] * exit_freq - + ira_memory_move_cost[mode][rclass][1] * enter_freq); + /* The register was spilled in the parent loop. If we spill + it in this loop too then we'll no longer need to load the + register on entry to this loop and save the register back + on exit from this loop. */ + cost -= border_costs.spill_outside_loop_cost (); else { - cost - += (ira_memory_move_cost[mode][rclass][1] * exit_freq - + ira_memory_move_cost[mode][rclass][0] * enter_freq); + /* The register was also allocated in the parent loop. + If we spill it in this loop then we'll need to save + the register on entry to this loop and restore the + register on exit from this loop. */ + cost += border_costs.spill_inside_loop_cost (); if (hard_regno2 != hard_regno) - cost -= (ira_register_move_cost[mode][rclass][rclass] - * (exit_freq + enter_freq)); + cost -= border_costs.move_between_loops_cost (); } } if (cost < 0) diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 280befc..1e4cf5a 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -2308,7 +2308,7 @@ ira_tune_allocno_costs (void) { int j, n, regno; int cost, min_cost, *reg_costs; - enum reg_class aclass, rclass; + enum reg_class aclass; machine_mode mode; ira_allocno_t a; ira_allocno_iterator ai; @@ -2347,17 +2347,17 @@ ira_tune_allocno_costs (void) } if (skip_p) continue; - rclass = REGNO_REG_CLASS (regno); cost = 0; if (ira_need_caller_save_p (a, regno)) - cost += (ALLOCNO_CALL_FREQ (a) - * (ira_memory_move_cost[mode][rclass][0] - + ira_memory_move_cost[mode][rclass][1])); + cost += ira_caller_save_cost (a); #ifdef IRA_HARD_REGNO_ADD_COST_MULTIPLIER - cost += ((ira_memory_move_cost[mode][rclass][0] - + ira_memory_move_cost[mode][rclass][1]) - * ALLOCNO_FREQ (a) - * IRA_HARD_REGNO_ADD_COST_MULTIPLIER (regno) / 2); + { + auto rclass = REGNO_REG_CLASS (regno); + cost += ((ira_memory_move_cost[mode][rclass][0] + + ira_memory_move_cost[mode][rclass][1]) + * ALLOCNO_FREQ (a) + * IRA_HARD_REGNO_ADD_COST_MULTIPLIER (regno) / 2); + } #endif if (INT_MAX - cost < reg_costs[j]) reg_costs[j] = INT_MAX; diff --git a/gcc/ira-int.h b/gcc/ira-int.h index 59d2872..e80fdeb 100644 --- a/gcc/ira-int.h +++ b/gcc/ira-int.h @@ -314,6 +314,13 @@ struct ira_allocno vector where a bit with given index represents allocno with the same number. */ unsigned int conflict_vec_p : 1; + /* True if the parent loop has an allocno for the same register and + if the parent allocno's assignment might not be valid in this loop. + This means that we cannot merge this allocno and the parent allocno + together. + + This is only ever true for non-cap allocnos. */ + unsigned int might_conflict_with_parent_p : 1; /* Hard register assigned to given allocno. Negative value means that memory was allocated to the allocno. During the reload, spilled allocno has value equal to the corresponding stack slot @@ -423,6 +430,8 @@ struct ira_allocno #define ALLOCNO_CAP_MEMBER(A) ((A)->cap_member) #define ALLOCNO_NREFS(A) ((A)->nrefs) #define ALLOCNO_FREQ(A) ((A)->freq) +#define ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P(A) \ + ((A)->might_conflict_with_parent_p) #define ALLOCNO_HARD_REGNO(A) ((A)->hard_regno) #define ALLOCNO_CALL_FREQ(A) ((A)->call_freq) #define ALLOCNO_CALLS_CROSSED_NUM(A) ((A)->calls_crossed_num) @@ -1058,6 +1067,7 @@ extern void ira_debug_conflicts (bool); extern void ira_build_conflicts (void); /* ira-color.c */ +extern ira_allocno_t ira_soft_conflict (ira_allocno_t, ira_allocno_t); extern void ira_debug_hard_regs_forest (void); extern int ira_loop_edge_freq (ira_loop_tree_node_t, int, bool); extern void ira_reassign_conflict_allocnos (int); @@ -1539,4 +1549,161 @@ ira_need_caller_save_p (ira_allocno_t a, unsigned int regno) ALLOCNO_MODE (a), regno); } +/* Represents the boundary between an allocno in one loop and its parent + allocno in the enclosing loop. It is usually possible to change a + register's allocation on this boundary; the class provides routines + for calculating the cost of such changes. */ +class ira_loop_border_costs +{ +public: + ira_loop_border_costs (ira_allocno_t); + + int move_between_loops_cost () const; + int spill_outside_loop_cost () const; + int spill_inside_loop_cost () const; + +private: + /* The mode and class of the child allocno. */ + machine_mode m_mode; + reg_class m_class; + + /* Sums the frequencies of the entry edges and the exit edges. */ + int m_entry_freq, m_exit_freq; +}; + +/* Return the cost of storing the register on entry to the loop and + loading it back on exit from the loop. This is the cost to use if + the register is spilled within the loop but is successfully allocated + in the parent loop. */ +inline int +ira_loop_border_costs::spill_inside_loop_cost () const +{ + return (m_entry_freq * ira_memory_move_cost[m_mode][m_class][0] + + m_exit_freq * ira_memory_move_cost[m_mode][m_class][1]); +} + +/* Return the cost of loading the register on entry to the loop and + storing it back on exit from the loop. This is the cost to use if + the register is successfully allocated within the loop but is spilled + in the parent loop. */ +inline int +ira_loop_border_costs::spill_outside_loop_cost () const +{ + return (m_entry_freq * ira_memory_move_cost[m_mode][m_class][1] + + m_exit_freq * ira_memory_move_cost[m_mode][m_class][0]); +} + +/* Return the cost of moving the pseudo register between different hard + registers on entry and exit from the loop. This is the cost to use + if the register is successfully allocated within both this loop and + the parent loop, but the allocations for the loops differ. */ +inline int +ira_loop_border_costs::move_between_loops_cost () const +{ + ira_init_register_move_cost_if_necessary (m_mode); + auto move_cost = ira_register_move_cost[m_mode][m_class][m_class]; + return move_cost * (m_entry_freq + m_exit_freq); +} + +/* Return true if subloops that contain allocnos for A's register can + use a different assignment from A. ALLOCATED_P is true for the case + in which allocation succeeded for A. EXCLUDE_OLD_RELOAD is true if + we should always return false for non-LRA targets. (This is a hack + and should be removed along with old reload.) */ +inline bool +ira_subloop_allocnos_can_differ_p (ira_allocno_t a, bool allocated_p = true, + bool exclude_old_reload = true) +{ + if (exclude_old_reload && !ira_use_lra_p) + return false; + + auto regno = ALLOCNO_REGNO (a); + + if (pic_offset_table_rtx != NULL + && regno == (int) REGNO (pic_offset_table_rtx)) + return false; + + ira_assert (regno < ira_reg_equiv_len); + if (ira_equiv_no_lvalue_p (regno)) + return false; + + /* Avoid overlapping multi-registers. Moves between them might result + in wrong code generation. */ + if (allocated_p) + { + auto pclass = ira_pressure_class_translate[ALLOCNO_CLASS (a)]; + if (ira_reg_class_max_nregs[pclass][ALLOCNO_MODE (a)] > 1) + return false; + } + + return true; +} + +/* Return true if we should treat A and SUBLOOP_A as belonging to a + single region. */ +inline bool +ira_single_region_allocno_p (ira_allocno_t a, ira_allocno_t subloop_a) +{ + if (flag_ira_region != IRA_REGION_MIXED) + return false; + + if (ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P (subloop_a)) + return false; + + auto rclass = ALLOCNO_CLASS (a); + auto pclass = ira_pressure_class_translate[rclass]; + auto loop_used_regs = ALLOCNO_LOOP_TREE_NODE (a)->reg_pressure[pclass]; + return loop_used_regs <= ira_class_hard_regs_num[pclass]; +} + +/* Return the set of all hard registers that conflict with A. */ +inline HARD_REG_SET +ira_total_conflict_hard_regs (ira_allocno_t a) +{ + auto obj_0 = ALLOCNO_OBJECT (a, 0); + HARD_REG_SET conflicts = OBJECT_TOTAL_CONFLICT_HARD_REGS (obj_0); + for (int i = 1; i < ALLOCNO_NUM_OBJECTS (a); i++) + conflicts |= OBJECT_TOTAL_CONFLICT_HARD_REGS (ALLOCNO_OBJECT (a, i)); + return conflicts; +} + +/* Return the cost of saving a caller-saved register before each call + in A's live range and restoring the same register after each call. */ +inline int +ira_caller_save_cost (ira_allocno_t a) +{ + auto mode = ALLOCNO_MODE (a); + auto rclass = ALLOCNO_CLASS (a); + return (ALLOCNO_CALL_FREQ (a) + * (ira_memory_move_cost[mode][rclass][0] + + ira_memory_move_cost[mode][rclass][1])); +} + +/* A and SUBLOOP_A are allocnos for the same pseudo register, with A's + loop immediately enclosing SUBLOOP_A's loop. If we allocate to A a + hard register R that is clobbered by a call in SUBLOOP_A, decide + which of the following approaches should be used for handling the + conflict: + + (1) Spill R on entry to SUBLOOP_A's loop, assign memory to SUBLOOP_A, + and restore R on exit from SUBLOOP_A's loop. + + (2) Spill R before each necessary call in SUBLOOP_A's live range and + restore R after each such call. + + Return true if (1) is better than (2). SPILL_COST is the cost of + doing (1). */ +inline bool +ira_caller_save_loop_spill_p (ira_allocno_t a, ira_allocno_t subloop_a, + int spill_cost) +{ + if (!ira_subloop_allocnos_can_differ_p (a)) + return false; + + /* Calculate the cost of saving a call-clobbered register + before each call and restoring it afterwards. */ + int call_cost = ira_caller_save_cost (subloop_a); + return call_cost && call_cost >= spill_cost; +} + #endif /* GCC_IRA_INT_H */ @@ -2649,6 +2649,8 @@ check_allocation (void) int conflict_hard_regno = ALLOCNO_HARD_REGNO (conflict_a); if (conflict_hard_regno < 0) continue; + if (ira_soft_conflict (a, conflict_a)) + continue; conflict_nregs = hard_regno_nregs (conflict_hard_regno, ALLOCNO_MODE (conflict_a)); diff --git a/gcc/match.pd b/gcc/match.pd index 84c9b91..f5dcbf3 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -2143,6 +2143,11 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (pointer_plus (pointer_plus:s @0 @1) @3) (pointer_plus @0 (plus @1 @3))) +#if GENERIC +(simplify + (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3) + (convert:type (pointer_plus @0 (plus @1 @3)))) +#endif /* Pattern match tem1 = (long) ptr1; diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 2ce51e4..0f67a6d 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,14 @@ +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/101597 + * objc-act.c (objc_rewrite_function_call): Build OBJ_TYPE_REF + with INTEGER_CST OBJ_TYPE_REF_TOKEN with type equal to + OBJ_TYPE_REF_OBJECT type. + * objc-next-runtime-abi-01.c (build_objc_method_call): Likewise. + * objc-gnu-runtime-abi-01.c (build_objc_method_call): Likewise. + * objc-next-runtime-abi-02.c (build_v2_objc_method_fixup_call, + build_v2_build_objc_method_call): Likewise. + 2021-12-05 Iain Sandoe <iain@sandoe.co.uk> * objc-next-metadata-tags.h (objc_rt_trees): Declare here. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index efb19a6..4d95bc6 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -9644,11 +9644,9 @@ objc_rewrite_function_call (tree function, tree first_param) && TREE_CODE (TREE_OPERAND (function, 0)) == ADDR_EXPR && TREE_CODE (TREE_OPERAND (TREE_OPERAND (function, 0), 0)) == FUNCTION_DECL) - { - function = build3 (OBJ_TYPE_REF, TREE_TYPE (function), - TREE_OPERAND (function, 0), - first_param, size_zero_node); - } + function = build3 (OBJ_TYPE_REF, TREE_TYPE (function), + TREE_OPERAND (function, 0), first_param, + build_int_cst (TREE_TYPE (first_param), 0)); return function; } diff --git a/gcc/objc/objc-gnu-runtime-abi-01.c b/gcc/objc/objc-gnu-runtime-abi-01.c index 078a8d5..8aa2044 100644 --- a/gcc/objc/objc-gnu-runtime-abi-01.c +++ b/gcc/objc/objc-gnu-runtime-abi-01.c @@ -725,7 +725,8 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, parms->quick_push (TREE_VALUE (method_params)); /* Build an obj_type_ref, with the correct cast for the method call. */ - t = build3 (OBJ_TYPE_REF, sender_cast, method, lookup_object, size_zero_node); + t = build3 (OBJ_TYPE_REF, sender_cast, method, lookup_object, + build_int_cst (TREE_TYPE (lookup_object), 0)); t = build_function_call_vec (loc, vNULL, t, parms, NULL); vec_free (parms); return t; diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c index 468a0de..a4287e4 100644 --- a/gcc/objc/objc-next-runtime-abi-01.c +++ b/gcc/objc/objc-next-runtime-abi-01.c @@ -883,7 +883,7 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, /* Build an obj_type_ref, with the correct cast for the method call. */ t = build3 (OBJ_TYPE_REF, sender_cast, method, - lookup_object, size_zero_node); + lookup_object, build_int_cst (TREE_TYPE (lookup_object), 0)); t = build_function_call_vec (loc, vNULL, t, parms, NULL); vec_free (parms); return t; diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index 1bf2898..e50ca6e 100644 --- a/gcc/objc/objc-next-runtime-abi-02.c +++ b/gcc/objc/objc-next-runtime-abi-02.c @@ -1663,7 +1663,8 @@ build_v2_objc_method_fixup_call (int super_flag, tree method_prototype, method_params = tree_cons (NULL_TREE, lookup_object, tree_cons (NULL_TREE, selector, method_params)); - t = build3 (OBJ_TYPE_REF, sender_cast, sender, lookup_object, size_zero_node); + t = build3 (OBJ_TYPE_REF, sender_cast, sender, lookup_object, + build_int_cst (TREE_TYPE (lookup_object), 0)); ret_val = build_function_call (input_location, t, method_params); if (check_for_nil) { @@ -1772,7 +1773,7 @@ build_v2_build_objc_method_call (int super, tree method_prototype, /* Build an obj_type_ref, with the correct cast for the method call. */ t = build3 (OBJ_TYPE_REF, sender_cast, method, - lookup_object, size_zero_node); + lookup_object, build_int_cst (TREE_TYPE (lookup_object), 0)); tree ret_val = build_function_call_vec (loc, vNULL, t, parms, NULL); vec_free (parms); if (check_for_nil) diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 1af42eb..a4f6e9e 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -209,10 +209,12 @@ range_operator::fold_range (irange &r, tree type, unsigned num_rh = rh.num_pairs (); // If both ranges are single pairs, fold directly into the result range. - if (num_lh == 1 && num_rh == 1) + // If the number of subranges grows too high, produce a summary result as the + // loop becomes exponential with little benefit. See PR 103821. + if ((num_lh == 1 && num_rh == 1) || num_lh * num_rh > 12) { - wi_fold_in_parts (r, type, lh.lower_bound (0), lh.upper_bound (0), - rh.lower_bound (0), rh.upper_bound (0)); + wi_fold_in_parts (r, type, lh.lower_bound (), lh.upper_bound (), + rh.lower_bound (), rh.upper_bound ()); op1_op2_relation_effect (r, type, lh, rh, rel); return true; } diff --git a/gcc/shrink-wrap.c b/gcc/shrink-wrap.c index 66b6890..f022039 100644 --- a/gcc/shrink-wrap.c +++ b/gcc/shrink-wrap.c @@ -781,14 +781,20 @@ try_shrink_wrapping (edge *entry_edge, rtx_insn *prologue_seq) unsigned max_grow_size = get_uncond_jump_length (); max_grow_size *= param_max_grow_copy_bb_insns; + basic_block checked_pro = NULL; + while (pro != entry) { - while (pro != entry && !can_get_prologue (pro, prologue_clobbered)) + if (pro != checked_pro) { - pro = get_immediate_dominator (CDI_DOMINATORS, pro); + while (pro != entry && !can_get_prologue (pro, prologue_clobbered)) + { + pro = get_immediate_dominator (CDI_DOMINATORS, pro); - if (bitmap_set_bit (bb_with, pro->index)) - vec.quick_push (pro); + if (bitmap_set_bit (bb_with, pro->index)) + vec.quick_push (pro); + } + checked_pro = pro; } if (vec.is_empty ()) diff --git a/gcc/target.def b/gcc/target.def index 873973b..5e1b4a6 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -6522,6 +6522,41 @@ specific target options and the caller does not use the same options.", default_target_can_inline_p) DEFHOOK +(update_ipa_fn_target_info, + "Allow target to analyze all gimple statements for the given function to\n\ +record and update some target specific information for inlining. A typical\n\ +example is that a caller with one isa feature disabled is normally not\n\ +allowed to inline a callee with that same isa feature enabled even which is\n\ +attributed by always_inline, but with the conservative analysis on all\n\ +statements of the callee if we are able to guarantee the callee does not\n\ +exploit any instructions from the mismatch isa feature, it would be safe to\n\ +allow the caller to inline the callee.\n\ +@var{info} is one @code{unsigned int} value to record information in which\n\ +one set bit indicates one corresponding feature is detected in the analysis,\n\ +@var{stmt} is the statement being analyzed. Return true if target still\n\ +need to analyze the subsequent statements, otherwise return false to stop\n\ +subsequent analysis.\n\ +The default version of this hook returns false.", + bool, (unsigned int& info, const gimple* stmt), + default_update_ipa_fn_target_info) + +DEFHOOK +(need_ipa_fn_target_info, + "Allow target to check early whether it is necessary to analyze all gimple\n\ +statements in the given function to update target specific information for\n\ +inlining. See hook @code{update_ipa_fn_target_info} for usage example of\n\ +target specific information. This hook is expected to be invoked ahead of\n\ +the iterating with hook @code{update_ipa_fn_target_info}.\n\ +@var{decl} is the function being analyzed, @var{info} is the same as what\n\ +in hook @code{update_ipa_fn_target_info}, target can do one time update\n\ +into @var{info} without iterating for some case. Return true if target\n\ +decides to analyze all gimple statements to collect information, otherwise\n\ +return false.\n\ +The default version of this hook returns false.", + bool, (const_tree decl, unsigned int& info), + default_need_ipa_fn_target_info) + +DEFHOOK (relayout_function, "This target hook fixes function @var{fndecl} after attributes are processed.\n\ Default does nothing. On ARM, the default function's alignment is updated\n\ diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 416cf4e..116a23b 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -1710,6 +1710,22 @@ default_target_can_inline_p (tree caller, tree callee) return callee_opts == caller_opts; } +/* By default, return false to not need to collect any target information + for inlining. Target maintainer should re-define the hook if the + target want to take advantage of it. */ + +bool +default_need_ipa_fn_target_info (const_tree, unsigned int &) +{ + return false; +} + +bool +default_update_ipa_fn_target_info (unsigned int &, const gimple *) +{ + return false; +} + /* If the machine does not have a case insn that compares the bounds, this means extra overhead for dispatch tables, which raises the threshold for using them. */ diff --git a/gcc/targhooks.h b/gcc/targhooks.h index c3d3af3..ecfa112 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -188,6 +188,8 @@ extern bool default_new_address_profitable_p (rtx, rtx_insn *, rtx); extern bool default_target_option_valid_attribute_p (tree, tree, tree, int); extern bool default_target_option_pragma_parse (tree, tree); extern bool default_target_can_inline_p (tree, tree); +extern bool default_update_ipa_fn_target_info (unsigned int &, const gimple *); +extern bool default_need_ipa_fn_target_info (const_tree, unsigned int &); extern bool default_valid_pointer_mode (scalar_int_mode); extern bool default_ref_may_alias_errno (class ao_ref *); extern scalar_int_mode default_addr_space_pointer_mode (addr_space_t); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4379558..fc0bb7f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,622 @@ +2022-01-11 qing zhao <qing.zhao@oracle.com> + + * c-c++-common/auto-init-1.c: Adjust testcase to reflect the 3rd + argument change of function .DEFERRED_INIT. + * c-c++-common/auto-init-10.c: Likewise. + * c-c++-common/auto-init-11.c: Likewise. + * c-c++-common/auto-init-12.c: Likewise. + * c-c++-common/auto-init-13.c: Likewise. + * c-c++-common/auto-init-14.c: Likewise. + * c-c++-common/auto-init-15.c: Likewise. + * c-c++-common/auto-init-16.c: Likewise. + * c-c++-common/auto-init-2.c: Likewise. + * c-c++-common/auto-init-3.c: Likewise. + * c-c++-common/auto-init-4.c: Likewise. + * c-c++-common/auto-init-5.c: Likewise. + * c-c++-common/auto-init-6.c: Likewise. + * c-c++-common/auto-init-7.c: Likewise. + * c-c++-common/auto-init-8.c: Likewise. + * c-c++-common/auto-init-9.c: Likewise. + * c-c++-common/auto-init-esra.c: Likewise. + * c-c++-common/auto-init-padding-1.c: Likewise. + * gcc.target/aarch64/auto-init-2.c: Likewise. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + * gfortran.dg/pr47614.f: Don't use -mcpu=power4 for + powerpc64le*-*-linux*. + +2022-01-11 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * g++.target/i386/pr100637-1b.C (dg-options): + Use -msse4 instead of -msse2. + * g++.target/i386/pr100637-1w.C (dg-options): Ditto. + * g++.target/i386/pr103861-1.C: New test. + * gcc.target/i386/pr100637-4b.c (dg-options): + Use -msse4 instead of -msse2. + * gcc.target/i386/pr103861-4.c: New test. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c++/101597 + * g++.dg/opt/pr101597.C: New test. + +2022-01-11 Jakub Jelinek <jakub@redhat.com> + + PR c/101537 + PR c/103881 + * c-c++-common/pr101537.c: New test. + * c-c++-common/pr103881.c: New test. + +2022-01-11 Patrick Palka <ppalka@redhat.com> + + PR c++/103831 + * g++.dg/cpp2a/concepts-class3.C: New test. + * g++.dg/template/non-dependent18.C: New test. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * gcc.dg/builtin-dynamic-object-size-0.c: Add new tests. + * gcc.dg/builtin-object-size-1.c (test1) + [__builtin_object_size]: Adjust expected output for dynamic + object sizes. + * gcc.dg/builtin-object-size-2.c (test1) + [__builtin_object_size]: Likewise. + * gcc.dg/builtin-object-size-3.c (test1) + [__builtin_object_size]: Likewise. + * gcc.dg/builtin-object-size-4.c (test1) + [__builtin_object_size]: Likewise. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * gcc.dg/builtin-dynamic-object-size-0.c: Add new tests. + * gcc.dg/builtin-object-size-1.c (test1) + [__builtin_object_size]: Alter expected result for dynamic + object size. + * gcc.dg/builtin-object-size-2.c (test1) + [__builtin_object_size]: Likewise. + * gcc.dg/builtin-object-size-3.c (test1) + [__builtin_object_size]: Likewise. + * gcc.dg/builtin-object-size-4.c (test1) + [__builtin_object_size]: Likewise. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * gcc.dg/builtin-dynamic-object-size-0.c (test_parmsz_simple, + test_parmsz_scaled, test_parmsz_unknown): New functions. + (main): Call them. Add new arguments argc and argv. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + + PR middle-end/70090 + * gcc.dg/builtin-dynamic-object-size-0.c: New tests. + * gcc.dg/builtin-dynamic-object-size-10.c: Add comment. + * gcc.dg/builtin-dynamic-object-size-5-main.c: New file. + * gcc.dg/builtin-dynamic-object-size-5.c: Use it and change test + to dg-do run. + * gcc.dg/builtin-object-size-5.c [!N]: Define N. + (test1, test2, test3, test4) [__builtin_object_size]: Expect + exact result for __builtin_dynamic_object_size. + * gcc.dg/builtin-object-size-1.c [__builtin_object_size]: Expect + exact size expressions for __builtin_dynamic_object_size. + * gcc.dg/builtin-object-size-2.c [__builtin_object_size]: + Likewise. + * gcc.dg/builtin-object-size-3.c [__builtin_object_size]: + Likewise. + * gcc.dg/builtin-object-size-4.c [__builtin_object_size]: + Likewise. + +2022-01-11 Siddhesh Poyarekar <siddhesh@gotplt.org> + Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/103961 + * gcc.dg/pr103961.c: New test case. + +2022-01-11 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/102692 + * gcc.dg/analyzer/pr102692.c: New test. + +2022-01-11 Roger Sayle <roger@nextmovesoftware.com> + Richard Biener <rguenther@suse.de> + + * gcc.target/i386/mult-highpart.c: New test case. + +2022-01-11 Xionghu Luo <luoxhu@linux.ibm.com> + + PR target/102239 + * gcc.target/powerpc/pr102239.c: New test. + +2022-01-11 Xionghu Luo <luoxhu@linux.ibm.com> + + PR testsuite/103820 + * gcc.dg/tree-ssa/recip-3.c: Adjust. + +2022-01-11 Haochen Jiang <haochen.jiang@intel.com> + + PR target/53652 + * gcc.target/i386/pr53652-1.c: New test. + +2022-01-10 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * gcc.target/i386/pr103861-2.c: New test. + +2022-01-10 Patrick Palka <ppalka@redhat.com> + + PR c++/103879 + * g++.dg/cpp1y/constexpr-base2.C: New test. + * g++.dg/cpp1y/constexpr-base2a.C: New test. + +2022-01-10 Patrick Palka <ppalka@redhat.com> + + PR c++/103783 + * g++.dg/cpp2a/concepts-memfun2.C: New test. + +2022-01-10 Jakub Jelinek <jakub@redhat.com> + + PR c++/103912 + * g++.dg/cpp2a/consteval26.C: New test. + +2022-01-10 Paul A. Clarke <pc@us.ibm.com> + + * gcc.target/powerpc/sse4_1-blendvps.c: Copy from gcc.target/i386, + adjust dg directives to suit. + +2022-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com> + + * gcc.target/aarch64/masked_epilogue.c: New test. + +2022-01-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/103366 + * gfortran.dg/pr103366.f90: New test. + +2022-01-10 Jakub Jelinek <jakub@redhat.com> + + PR target/102024 + * gcc.target/i386/pr102024.c: New test. + * g++.target/i386/pr102024.C: New test. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + * gcc.target/aarch64/reg-alloc-4.c: New test. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + * gcc.target/aarch64/reg-alloc-3.c: New test. + +2022-01-10 Richard Sandiford <richard.sandiford@arm.com> + + * gcc.target/aarch64/reg-alloc-2.c: New test. + +2022-01-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/82207 + * gfortran.dg/ieee/signaling_1.f90: New test. + * gfortran.dg/ieee/signaling_1_c.c: New file. + +2022-01-10 Richard Biener <rguenther@suse.de> + + PR middle-end/101530 + * c-c++-common/builtin-shufflevector-3.c: New testcase. + +2022-01-10 Richard Biener <rguenther@suse.de> + + PR tree-optimization/100359 + * gcc.dg/tree-ssa/pr100359.c: New testcase. + +2022-01-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/103777 + * gfortran.dg/masklr_3.f90: New test. + +2022-01-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/101762 + * gfortran.dg/pr101762.f90: New test. + +2022-01-09 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/103789 + * gfortran.dg/maskl_1.f90: New test. + * gfortran.dg/maskr_1.f90: New test. + * gfortran.dg/scan_3.f90: New test. + * gfortran.dg/verify_3.f90: New test. + +2022-01-09 Sandra Loosemore <sandra@codesourcery.com> + + * g++.dg/cpp0x/constexpr-compare1.C: Add explicit + -fdelete-null-pointer-checks option. + * g++.dg/cpp0x/constexpr-compare2.C: Likewise. + * g++.dg/cpp0x/constexpr-typeid2.C: Likewise. + * g++.dg/cpp1y/constexpr-94716.C: Likewise. + * g++.dg/cpp1z/constexpr-compare1.C: Likewise. + * g++.dg/cpp1z/constexpr-if36.C: Likewise. + * gcc.dg/init-compare-1.c: Likewise. + +2022-01-08 Roger Sayle <roger@nextmovesoftware.com> + + * gcc.target/i386/sse2-v1ti-mov-1.c: New test case. + * gcc.target/i386/sse2-v1ti-zext.c: New test case. + +2022-01-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/89074 + * g++.dg/cpp1y/constexpr-89074-2.C: New test. + * g++.dg/cpp1z/constexpr-89074-1.C: New test. + +2022-01-08 Jason Merrill <jason@redhat.com> + + PR c++/103946 + * g++.dg/cpp0x/nsdmi-array1.C: New test. + +2022-01-08 Jason Merrill <jason@redhat.com> + + PR c++/100588 + * g++.dg/cpp2a/destroying-delete5.C: Expect warning. + * g++.dg/cpp2a/destroying-delete6.C: New test. + +2022-01-08 David Malcolm <dmalcolm@redhat.com> + + * gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_escaped): New + decl. + * gcc.dg/analyzer/escaping-1.c: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/20040 + * g++.dg/init/delete4.C: New test. + +2022-01-07 Andrew Pinski <apinski@marvell.com> + + PR target/102941 + * gcc.target/aarch64/asm-flag-7.c: New test. + * gcc.target/arm/asm-flag-7.c: New test. + +2022-01-07 Piotr Trojanek <trojanek@adacore.com> + + * gnat.dg/aggr26.adb: Update expected error message. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + * g++.target/i386/pr103750-fwprop-1.C: New test. + +2022-01-07 Roger Sayle <roger@nextmovesoftware.com> + + * gcc.target/nvptx/cnot-1.c: New test case. + +2022-01-07 Haochen Gui <guihaoc@gcc.gnu.org> + + * gcc.target/powerpc/mffscrni_p9.c: New testcase for mffscrni. + * gcc.target/powerpc/test_fpscr_rn_builtin.c: Test mffscrn and mffscrni + separately. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/103936 + PR c++/65591 + * g++.dg/init/aggr15.C: New test. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + * gcc.target/i386/pr103774.c: New test. + * gcc.target/i386/avx512bw-vpcmpequb-1.c: Adjust scan assembler + from vpcmpub to (?:vpcmpub|vpcmpeqb). + * gcc.target/i386/avx512bw-vpcmpequw-1.c: Ditto. + * gcc.target/i386/avx512bw-vpcmpub-1.c: Ditto. + * gcc.target/i386/avx512bw-vpcmpuw-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpequd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpequq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. + * gcc.target/i386/avx512vl-vpcmpequd-1.c: Ditto. + * gcc.target/i386/avx512vl-vpcmpequq-1.c: Ditto. + * gcc.target/i386/avx512vl-vpcmpuq-1.c: Ditto. + +2022-01-07 liuhongt <hongtao.liu@intel.com> + + * gcc.target/i386/pr103753.c: New test. + +2022-01-07 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103898 + * gfortran.dg/pr103898.f90: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/103711 + * g++.dg/eh/delegating1.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/61611 + * g++.dg/eh/ctor-fntry1.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/33799 + PR c++/102191 + * g++.dg/eh/return1.C: Add temporary in try block case. + * g++.dg/cpp2a/constexpr-dtor11.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/53868 + * g++.dg/eh/ref-temp1.C: New test. + * g++.dg/eh/ref-temp2.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/66451 + * g++.dg/eh/array3.C: New test. + * g++.dg/eh/array1.C: Mark destructor as throw(). + * g++.dg/ipa/devirt-40.C: Likewise. + * g++.dg/warn/pr83054.C: Likewise. + * g++.dg/eh/delete1.C: Shorten array to one element. + +2022-01-07 Jason Merrill <jason@redhat.com> + + * g++.dg/tree-ssa/aggregate1.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/66139 + PR c++/52320 + * g++.dg/cpp0x/initlist116.C: New test. + * g++.dg/cpp0x/initlist117.C: New test. + * g++.dg/cpp0x/lambda/lambda-eh.C: New test. + * g++.dg/eh/aggregate1.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/94041 + * g++.dg/init/array12.C: + * g++.dg/init/aggr7-eh2.C: New test. + * g++.dg/init/aggr7-eh3.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/94041 + * g++.dg/init/aggr7-eh.C: New test. + * g++.dg/cpp0x/initlist122.C: Also test aggregate variable. + +2022-01-07 Jason Merrill <jason@redhat.com> + + PR c++/92385 + * g++.dg/init/array61.C: New test. + +2022-01-07 Jason Merrill <jason@redhat.com> + + * g++.old-deja/g++.martin/new1.C: Don't expect preeval. + * g++.dg/tree-ssa/stabilize1.C: Removed. + +2022-01-06 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/103546 + * gcc.dg/analyzer/aliasing-3.c: New test. + +2022-01-06 Steve Kargl <kargl@gcc.gnu.org> + Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103287 + * gfortran.dg/c-interop/pr103287-1.f90: new. + * gfortran.dg/c-interop/pr103287-2.f90: new. + +2022-01-06 H.J. Lu <hjl.tools@gmail.com> + + PR target/103925 + * gcc.target/i386/harden-sls-6.c: New test. + +2022-01-06 Uroš Bizjak <ubizjak@gmail.com> + + * gcc.target/i386/pr102811-2.c (dg-final): + Update scan-assembler-times directives. + * gcc.target/i386/sse2-float16-2.c (dg-final): + Update scan-assembler directives. + +2022-01-06 Kito Cheng <kito.cheng@sifive.com> + + * gcc.target/riscv/predef-14.c: New. + * gcc.target/riscv/predef-15.c: Ditto. + * gcc.target/riscv/predef-16.c: Ditto. + +2022-01-06 Patrick Palka <ppalka@redhat.com> + + PR c++/69681 + * g++.dg/cpp0x/constexpr-compare2.C: New test. + +2022-01-06 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/103908 + * gcc.target/i386/pr103908.c: New test. + +2022-01-06 Marek Polacek <polacek@redhat.com> + + PR c++/103758 + * gcc.dg/sso-6.c: Update dg-warning. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * gcc.target/i386/pr103861-3.c: New test. + * g++.dg/vect/slp-pr98855.cc (dg-final): Check that + no vectorization using SLP was performed. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103915 + * gcc.target/i386/pr103915.c: New test. + +2022-01-05 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103905 + * gcc.target/i386/pr103905.c: New test. + +2022-01-05 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103258 + * gfortran.dg/pr103258.f90: New. + +2022-01-05 Nathan Sidwell <nathan@acm.org> + + * g++.dg/template/attr-used.C: New. + +2022-01-05 Nathan Sidwell <nathan@acm.org> + + * g++.dg/diagnostic/recur-align.C: New. + +2022-01-05 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103816 + * gcc.dg/torture/pr103816.c: New testcase. + +2022-01-05 Jakub Jelinek <jakub@redhat.com> + + PR fortran/103691 + * gfortran.dg/pr103691.f90: New test. + +2022-01-05 Jakub Jelinek <jakub@redhat.com> + + PR target/103895 + * gcc.target/i386/pr103895.c: Add -msse2 to dg-options. + +2022-01-05 Kewen Lin <linkw@linux.ibm.com> + + PR ipa/102059 + * gcc.dg/lto/pr102059-1_0.c: New test. + * gcc.dg/lto/pr102059-1_1.c: New test. + * gcc.dg/lto/pr102059-1_2.c: New test. + * gcc.dg/lto/pr102059-2_0.c: New test. + * gcc.dg/lto/pr102059-2_1.c: New test. + * gcc.dg/lto/pr102059-2_2.c: New test. + * gcc.target/powerpc/pr102059-1.c: New test. + * gcc.target/powerpc/pr102059-2.c: New test. + * gcc.target/powerpc/pr102059-3.c: New test. + +2022-01-04 Martin Sebor <msebor@redhat.com> + + PR middle-end/99612 + * c-c++-common/pr83059.c: Adjust text of expected diagnostics. + * gcc.dg/atomic-invalid-2.c: Same. + * gcc.dg/atomic-invalid.c: Same. + * c-c++-common/Winvalid-memory-model.c: New test. + * g++.dg/warn/Winvalid-memory-model-2.C: New test. + * g++.dg/warn/Winvalid-memory-model.C: New test. + +2022-01-04 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103861 + * gcc.target/i386/warn-vect-op-2.c: Adjust warnings. + * gcc.target/i386/pr103900.c: New test. + +2022-01-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103800 + * gcc.dg/vect/bb-slp-pr103800.c: New testcase. + +2022-01-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103864 + PR tree-optimization/103544 + * gcc.dg/vect/pr103864.c: New testcase. + +2022-01-04 Chung-Lin Tang <cltang@codesourcery.com> + + * gfortran.dg/gomp/pr103643.f90: New test. + +2022-01-04 liuhongt <hongtao.liu@intel.com> + + * gcc.target/i386/pr103895.c: New test. + +2022-01-04 Andrew Pinski <apinski@marvell.com> + + PR c++/90782 + * g++.dg/cpp1z/class-deduction100.C: New test. + +2022-01-03 Marek Polacek <polacek@redhat.com> + + PR c++/103758 + * g++.dg/cpp0x/constexpr-condition.C: Adjust dg-error. + +2022-01-03 Uroš Bizjak <ubizjak@gmail.com> + + PR target/103894 + * gcc.target/i386/pr103894.c: New test. + +2022-01-03 Sandra Loosemore <sandra@codesourcery.com> + + PR fortran/103390 + * gfortran.dg/c-interop/pr103390-1.f90: New. + * gfortran.dg/c-interop/pr103390-2.f90: New. + * gfortran.dg/c-interop/pr103390-3.f90: New. + * gfortran.dg/c-interop/pr103390-4.f90: New. + * gfortran.dg/c-interop/pr103390-6.f90: New. + * gfortran.dg/c-interop/pr103390-7.f90: New. + * gfortran.dg/c-interop/pr103390-8.f90: New. + * gfortran.dg/c-interop/pr103390-9.f90: New. + * gfortran.dg/c-interop/pr103390-5.f90: New file. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR target/98737 + * gcc.target/i386/pr98737-1.c: New test. + * gcc.target/i386/pr98737-2.c: New test. + * gcc.target/i386/pr98737-3.c: New test. + * gcc.target/i386/pr98737-4.c: New test. + * gcc.target/i386/pr98737-5.c: New test. + * gcc.target/i386/pr98737-6.c: New test. + * gcc.target/i386/pr98737-7.c: New test. + +2022-01-03 Richard Biener <rguenther@suse.de> + + PR middle-end/103851 + * g++.dg/gomp/pr103851.C: New testcase. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/94716 + * gcc.dg/init-compare-1.c: New test. + * g++.dg/cpp0x/constexpr-compare1.C: New test. + * g++.dg/cpp1y/constexpr-94716.C: New test. + * g++.dg/cpp1z/constexpr-compare1.C: New test. + +2022-01-03 Martin Liska <mliska@suse.cz> + + * gcc.target/i386/avx2-i32gatherpd256-4.c: Fix ASAN errors. + * gcc.target/i386/avx2-i32gatherq256-4.c: Likewise. + * gcc.target/i386/avx2-i64gatherpd256-4.c: Likewise. + * gcc.target/i386/avx2-i64gatherq256-4.c: Likewise. + * gcc.target/i386/avx2-vpabsb256-2.c: Likewise. + * gcc.target/i386/avx2-vpabsd256-2.c: Likewise. + * gcc.target/i386/avx2-vpabsw256-2.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-7.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-7.c: Likewise. + * gcc.target/i386/pr64291-1.c: Likewise. + +2022-01-03 Martin Liska <mliska@suse.cz> + + * gcc.dg/vect/vect-simd-18.c: Fix ASAN error. + * gcc.dg/vect/vect-simd-19.c: Likewise. + +2022-01-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/103600 + * g++.dg/cpp0x/constexpr-typeid2.C: New test. + +2022-01-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/66502 + * gcc.dg/tree-ssa/ssa-fre-98.c: New testcase. + +2022-01-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/103615 + * gcc.dg/torture/pr103615.c: New testcase. + 2022-01-02 Uroš Bizjak <ubizjak@gmail.com> PR target/103861 diff --git a/gcc/testsuite/c-c++-common/Winvalid-memory-model.c b/gcc/testsuite/c-c++-common/Winvalid-memory-model.c new file mode 100644 index 0000000..474ea56 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Winvalid-memory-model.c @@ -0,0 +1,239 @@ +/* PR middle-end/99612 - Missing warning on incorrect memory order without + -Wsystem-headers + Verify that constants are propagated through calls to inline functions + even at -O0. + Also verify that the informational notes after each warning mention + the valid memore models for each function. + { dg-do compile } + { dg-options "-O0 -ftrack-macro-expansion=0" } */ + +#if !__cplusplus +# define bool _Bool +#endif + +extern int ei; + +static __attribute__ ((always_inline)) inline +int retval (int val) +{ + return val; +} + +void test_load (int *pi) +{ + int relaxed = retval (__ATOMIC_RELAXED); + *pi++ = __atomic_load_n (&ei, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + *pi++ = __atomic_load_n (&ei, consume); + + int acquire = retval (__ATOMIC_ACQUIRE); + *pi++ = __atomic_load_n (&ei, acquire); + + int release = retval (__ATOMIC_RELEASE); + *pi++ = __atomic_load_n (&ei, release); // { dg-warning "invalid memory model 'memory_order_release'" } + // { dg-message "valid models are 'memory_order_relaxed', 'memory_order_seq_cst', 'memory_order_acquire', 'memory_order_consume'" "note" { target *-*-* } .-1 } + + int acq_rel = retval (__ATOMIC_ACQ_REL); + *pi++ = __atomic_load_n (&ei, acq_rel); // { dg-warning "invalid memory model 'memory_order_acq_rel'" } + + int seq_cst = retval (__ATOMIC_SEQ_CST); + *pi++ = __atomic_load_n (&ei, seq_cst); + + /* Verify a nonconstant range. */ + int r0_1 = *pi++; + if (r0_1 < 0 || 1 < r0_1) + r0_1 = 0; + *pi++ = __atomic_load_n (&ei, r0_1); + + /* Verify an unbounded range. */ + int unknown = *pi++; + *pi++ = __atomic_load_n (&ei, unknown); +} + + +void test_store (int *pi, int x) +{ + int relaxed = retval (__ATOMIC_RELAXED); + __atomic_store_n (pi++, x, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + __atomic_store_n (pi++, x, consume); // { dg-warning "invalid memory model 'memory_order_consume'" } + // { dg-message "valid models are 'memory_order_relaxed', 'memory_order_seq_cst', 'memory_order_release'" "note" { target *-*-* } .-1 } + + int acquire = retval (__ATOMIC_ACQUIRE); + __atomic_store_n (pi++, x, acquire); // { dg-warning "invalid memory model 'memory_order_acquire'" } + + int release = retval (__ATOMIC_RELEASE); + __atomic_store_n (pi++, x, release); + + int acq_rel = retval (__ATOMIC_ACQ_REL); + __atomic_store_n (pi++, x, acq_rel); // { dg-warning "invalid memory model 'memory_order_acq_rel'" } + + int seq_cst = retval (__ATOMIC_SEQ_CST); + __atomic_store_n (pi++, x, seq_cst); + + int unknown = *pi++; + __atomic_store_n (pi++, x, unknown); +} + + +/* All memory models are valid. */ + +void test_exchange (int *pi, int x) +{ + int relaxed = retval (__ATOMIC_RELAXED); + __atomic_exchange_n (pi++, x, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + __atomic_exchange_n (pi++, x, consume); + + int acquire = retval (__ATOMIC_ACQUIRE); + __atomic_exchange_n (pi++, x, acquire); + + int release = retval (__ATOMIC_RELEASE); + __atomic_exchange_n (pi++, x, release); + + int acq_rel = retval (__ATOMIC_ACQ_REL); + __atomic_exchange_n (pi++, x, acq_rel); + + int seq_cst = retval (__ATOMIC_SEQ_CST); + __atomic_exchange_n (pi++, x, seq_cst); + + int unknown = *pi++; + __atomic_exchange_n (pi++, x, unknown); +} + + +void test_compare_exchange (int *pi, int *pj, bool weak) +{ +#define cmpxchg(x, expect, desire, sucs_ord, fail_ord) \ + __atomic_compare_exchange_n (x, expect, desire, weak, sucs_ord, fail_ord) + + int relaxed = retval (__ATOMIC_RELAXED); + cmpxchg (&ei, pi++, *pj++, relaxed, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + cmpxchg (&ei, pi++, *pj++, relaxed, consume); // { dg-warning "failure memory model 'memory_order_consume' cannot be stronger than success memory model 'memory_order_relaxed'" } + + int acquire = retval (__ATOMIC_ACQUIRE); + cmpxchg (&ei, pi++, *pj++, relaxed, acquire); // { dg-warning "failure memory model 'memory_order_acquire' cannot be stronger than success memory model 'memory_order_relaxed'" } + + int release = retval (__ATOMIC_RELEASE); + cmpxchg (&ei, pi++, *pj++, relaxed, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + + int acq_rel = retval (__ATOMIC_ACQ_REL); + cmpxchg (&ei, pi++, *pj++, relaxed, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + + int seq_cst = retval (__ATOMIC_SEQ_CST); + cmpxchg (&ei, pi++, *pj++, relaxed, seq_cst); // { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger than success memory model 'memory_order_relaxed'" } + + + cmpxchg (&ei, pi++, *pj++, consume, relaxed); + cmpxchg (&ei, pi++, *pj++, consume, consume); + cmpxchg (&ei, pi++, *pj++, consume, acquire); // { dg-warning "failure memory model 'memory_order_acquire' cannot be stronger than success memory model 'memory_order_consume'" } + cmpxchg (&ei, pi++, *pj++, consume, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + cmpxchg (&ei, pi++, *pj++, consume, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + cmpxchg (&ei, pi++, *pj++, consume, seq_cst); // { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger than success memory model 'memory_order_consume'" } + + cmpxchg (&ei, pi++, *pj++, acquire, relaxed); + cmpxchg (&ei, pi++, *pj++, acquire, consume); + cmpxchg (&ei, pi++, *pj++, acquire, acquire); + cmpxchg (&ei, pi++, *pj++, acquire, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + cmpxchg (&ei, pi++, *pj++, acquire, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + cmpxchg (&ei, pi++, *pj++, acquire, seq_cst); // { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger than success memory model 'memory_order_acquire'" } + + cmpxchg (&ei, pi++, *pj++, release, relaxed); + cmpxchg (&ei, pi++, *pj++, release, consume); + cmpxchg (&ei, pi++, *pj++, release, acquire); + cmpxchg (&ei, pi++, *pj++, release, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + cmpxchg (&ei, pi++, *pj++, release, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + cmpxchg (&ei, pi++, *pj++, release, seq_cst); // { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger than success memory model 'memory_order_release'" } + + cmpxchg (&ei, pi++, *pj++, acq_rel, relaxed); + cmpxchg (&ei, pi++, *pj++, acq_rel, consume); + cmpxchg (&ei, pi++, *pj++, acq_rel, acquire); + cmpxchg (&ei, pi++, *pj++, acq_rel, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + cmpxchg (&ei, pi++, *pj++, acq_rel, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + cmpxchg (&ei, pi++, *pj++, acq_rel, seq_cst); // { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger than success memory model 'memory_order_acq_rel'" } + + cmpxchg (&ei, pi++, *pj++, seq_cst, relaxed); + cmpxchg (&ei, pi++, *pj++, seq_cst, consume); + cmpxchg (&ei, pi++, *pj++, seq_cst, acquire); + cmpxchg (&ei, pi++, *pj++, seq_cst, release); // { dg-warning "invalid failure memory model 'memory_order_release'" } + cmpxchg (&ei, pi++, *pj++, seq_cst, acq_rel); // { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } + cmpxchg (&ei, pi++, *pj++, seq_cst, seq_cst); + + int unknown = *pi++; + cmpxchg (&ei, pi++, *pj++, unknown, seq_cst); + cmpxchg (&ei, pi++, *pj++, relaxed, unknown); +} + + +/* All memory models are valid. */ + +void test_add_fetch (unsigned *pi, unsigned x) +{ + int relaxed = retval (__ATOMIC_RELAXED); + __atomic_add_fetch (pi++, x, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + __atomic_add_fetch (pi++, x, consume); + + int acquire = retval (__ATOMIC_ACQUIRE); + __atomic_add_fetch (pi++, x, acquire); + + int release = retval (__ATOMIC_RELEASE); + __atomic_add_fetch (pi++, x, release); + + int acq_rel = retval (__ATOMIC_ACQ_REL); + __atomic_add_fetch (pi++, x, acq_rel); + + int seq_cst = retval (__ATOMIC_SEQ_CST); + __atomic_add_fetch (pi++, x, seq_cst); + + int invalid; + if (x & 1) + { + invalid = retval (123); + __atomic_add_fetch (pi++, x, invalid); // { dg-warning "invalid memory model 123 for '\(unsigned int \)?__atomic_add_fetch" } + } + else + { + invalid = retval (456); + __atomic_add_fetch (pi++, x, invalid); // { dg-warning "invalid memory model 456 for '\(unsigned int \)?__atomic_add_fetch" } + } +} + +void test_sub_fetch (unsigned *pi, unsigned x) +{ + int relaxed = retval (__ATOMIC_RELAXED); + __atomic_sub_fetch (pi++, x, relaxed); + + int consume = retval (__ATOMIC_CONSUME); + __atomic_sub_fetch (pi++, x, consume); + + int acquire = retval (__ATOMIC_ACQUIRE); + __atomic_sub_fetch (pi++, x, acquire); + + int release = retval (__ATOMIC_RELEASE); + __atomic_sub_fetch (pi++, x, release); + + int acq_rel = retval (__ATOMIC_ACQ_REL); + __atomic_sub_fetch (pi++, x, acq_rel); + + int seq_cst = retval (__ATOMIC_SEQ_CST); + __atomic_sub_fetch (pi++, x, seq_cst); + + int invalid; + if (x & 1) + { + invalid = retval (123); + __atomic_sub_fetch (pi++, x, invalid); // { dg-warning "invalid memory model 123 for '\(unsigned int \)?__atomic_sub_fetch" } + } + else + { + invalid = retval (456); + __atomic_sub_fetch (pi++, x, invalid); // { dg-warning "invalid memory model 456 for '\(unsigned int \)?__atomic_sub_fetch" } + } +} diff --git a/gcc/testsuite/c-c++-common/auto-init-1.c b/gcc/testsuite/c-c++-common/auto-init-1.c index 84ba0a9..df04358 100644 --- a/gcc/testsuite/c-c++-common/auto-init-1.c +++ b/gcc/testsuite/c-c++-common/auto-init-1.c @@ -29,13 +29,13 @@ void foo() return; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(1, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" { target ilp32 } } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" { target lp64 } } } */ -/* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" { target ilp32 } } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" { target lp64 } } } */ -/* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(1, 2, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 2, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 2, \&\"temp3\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 2, \&\"temp4\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 2, \&\"temp5\"" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 2, \&\"temp5\"" "gimple" { target lp64 } } } */ +/* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 2, \&\"temp6\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 2, \&\"temp7\"" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 2, \&\"temp7\"" "gimple" { target lp64 } } } */ +/* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 2, \&\"temp8\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-10.c b/gcc/testsuite/c-c++-common/auto-init-10.c index f35205f..dda7ea1 100644 --- a/gcc/testsuite/c-c++-common/auto-init-10.c +++ b/gcc/testsuite/c-c++-common/auto-init-10.c @@ -18,5 +18,5 @@ void foo() return; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(2, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(2, 1, \&\"temp1\"" "gimple" } } */ /* { dg-final { scan-tree-dump-not "temp2 = .DEFERRED_INIT \\(" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-11.c b/gcc/testsuite/c-c++-common/auto-init-11.c index a2d6690..6eb4687 100644 --- a/gcc/testsuite/c-c++-common/auto-init-11.c +++ b/gcc/testsuite/c-c++-common/auto-init-11.c @@ -11,4 +11,4 @@ void foo(int n) return; } -/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 2, 1\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 2, \&\"arr\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-12.c b/gcc/testsuite/c-c++-common/auto-init-12.c index f05d743..964291c 100644 --- a/gcc/testsuite/c-c++-common/auto-init-12.c +++ b/gcc/testsuite/c-c++-common/auto-init-12.c @@ -11,4 +11,4 @@ void foo(int n) return; } -/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 1, 1\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 1, \&\"arr\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-13.c b/gcc/testsuite/c-c++-common/auto-init-13.c index b0c0365..aa5883a 100644 --- a/gcc/testsuite/c-c++-common/auto-init-13.c +++ b/gcc/testsuite/c-c++-common/auto-init-13.c @@ -19,5 +19,5 @@ int foo() return d.b + var.bar.b; } -/* { dg-final { scan-tree-dump "d = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "var = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "d = .DEFERRED_INIT \\(4, 1, \&\"d\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "var = .DEFERRED_INIT \\(4, 1, \&\"var\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-14.c b/gcc/testsuite/c-c++-common/auto-init-14.c index 986bb19..dd1ff3e 100644 --- a/gcc/testsuite/c-c++-common/auto-init-14.c +++ b/gcc/testsuite/c-c++-common/auto-init-14.c @@ -19,5 +19,5 @@ int foo() return d.b + var.bar.b; } -/* { dg-final { scan-tree-dump "d = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "var = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "d = .DEFERRED_INIT \\(4, 2, \&\"d\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "var = .DEFERRED_INIT \\(4, 2, \&\"var\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-15.c b/gcc/testsuite/c-c++-common/auto-init-15.c index aa9d7fa..5857287 100644 --- a/gcc/testsuite/c-c++-common/auto-init-15.c +++ b/gcc/testsuite/c-c++-common/auto-init-15.c @@ -10,4 +10,4 @@ void foo(int a) g(x); } -/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 2, 1\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 2, \&\"x\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-16.c b/gcc/testsuite/c-c++-common/auto-init-16.c index 86493ee..1e30995 100644 --- a/gcc/testsuite/c-c++-common/auto-init-16.c +++ b/gcc/testsuite/c-c++-common/auto-init-16.c @@ -10,4 +10,4 @@ void foo(int a) g(x); } -/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 1, 1\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(D.\\d*, 1, \&\"x\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-2.c b/gcc/testsuite/c-c++-common/auto-init-2.c index 69768d6..6ac63bb 100644 --- a/gcc/testsuite/c-c++-common/auto-init-2.c +++ b/gcc/testsuite/c-c++-common/auto-init-2.c @@ -29,13 +29,13 @@ void foo() return; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(1, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" { target ilp32 } } } */ -/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" { target lp64 } } } */ -/* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" { target ilp32 } } } */ -/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" { target lp64 } } } */ -/* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(1, 1, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(2, 1, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(4, 1, \&\"temp3\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(4, 1, \&\"temp4\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(4, 1, \&\"temp5\"" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp5 = .DEFERRED_INIT \\(8, 1, \&\"temp5\"" "gimple" { target lp64 } } } */ +/* { dg-final { scan-tree-dump "temp6 = .DEFERRED_INIT \\(8, 1, \&\"temp6\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(4, 1, \&\"temp7\"" "gimple" { target ilp32 } } } */ +/* { dg-final { scan-tree-dump "temp7 = .DEFERRED_INIT \\(8, 1, \&\"temp7\"" "gimple" { target lp64 } } } */ +/* { dg-final { scan-tree-dump "temp8 = .DEFERRED_INIT \\(1, 1, \&\"temp8\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-3.c b/gcc/testsuite/c-c++-common/auto-init-3.c index 062d60c..9d9c86d 100644 --- a/gcc/testsuite/c-c++-common/auto-init-3.c +++ b/gcc/testsuite/c-c++-common/auto-init-3.c @@ -14,6 +14,6 @@ long double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 2, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 2, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 2, \&\"temp3\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-4.c b/gcc/testsuite/c-c++-common/auto-init-4.c index 9d8f23e..848df2a 100644 --- a/gcc/testsuite/c-c++-common/auto-init-4.c +++ b/gcc/testsuite/c-c++-common/auto-init-4.c @@ -14,6 +14,6 @@ long double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(4, 1, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(8, 1, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((8|12|16), 1, \&\"temp3\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-5.c b/gcc/testsuite/c-c++-common/auto-init-5.c index 9c98a6e..9c4de61 100644 --- a/gcc/testsuite/c-c++-common/auto-init-5.c +++ b/gcc/testsuite/c-c++-common/auto-init-5.c @@ -15,7 +15,7 @@ _Complex long double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 2, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 2, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 2, \&\"temp3\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-6.c b/gcc/testsuite/c-c++-common/auto-init-6.c index 3fe2456..6a40644 100644 --- a/gcc/testsuite/c-c++-common/auto-init-6.c +++ b/gcc/testsuite/c-c++-common/auto-init-6.c @@ -15,7 +15,7 @@ _Complex long double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(8, 1, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(16, 1, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\((16|24|32), 1, \&\"temp3\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-7.c b/gcc/testsuite/c-c++-common/auto-init-7.c index 1998696..b44dd5e 100644 --- a/gcc/testsuite/c-c++-common/auto-init-7.c +++ b/gcc/testsuite/c-c++-common/auto-init-7.c @@ -29,7 +29,7 @@ double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 2, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 2, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 2, \&\"temp3\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 2, \&\"temp4\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-8.c b/gcc/testsuite/c-c++-common/auto-init-8.c index 9778e91..739ac02 100644 --- a/gcc/testsuite/c-c++-common/auto-init-8.c +++ b/gcc/testsuite/c-c++-common/auto-init-8.c @@ -29,7 +29,7 @@ double foo() return result; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 1, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(12, 1, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp2 = .DEFERRED_INIT \\(24, 1, \&\"temp2\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp3 = .DEFERRED_INIT \\(28, 1, \&\"temp3\"" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp4 = .DEFERRED_INIT \\(8, 1, \&\"temp4\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-9.c b/gcc/testsuite/c-c++-common/auto-init-9.c index 29acb7f..113107f 100644 --- a/gcc/testsuite/c-c++-common/auto-init-9.c +++ b/gcc/testsuite/c-c++-common/auto-init-9.c @@ -16,5 +16,5 @@ void foo() return; } -/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(2, 2, 0\\)" "gimple" } } */ -/* { dg-final { scan-tree-dump-not "temp2 = .DEFERRED_INIT \\(8, 2, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump "temp1 = .DEFERRED_INIT \\(2, 2, \&\"temp1\"" "gimple" } } */ +/* { dg-final { scan-tree-dump-not "temp2 = .DEFERRED_INIT \\(8, 2, \&\"temp2\"" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-esra.c b/gcc/testsuite/c-c++-common/auto-init-esra.c index 77ec023..ce6779f 100644 --- a/gcc/testsuite/c-c++-common/auto-init-esra.c +++ b/gcc/testsuite/c-c++-common/auto-init-esra.c @@ -1,6 +1,6 @@ /* Verify the strength reduction adjustment for -ftrivial-auto-var-init. */ /* { dg-do compile } */ -/* { dg-options "-O2 -ftrivial-auto-var-init=zero -fdump-tree-gimple -fdump-tree-esra" } */ +/* { dg-options "-O2 -ftrivial-auto-var-init=zero -fno-PIC -fdump-tree-gimple -fdump-tree-esra" } */ typedef double VECTOR[3]; @@ -31,5 +31,5 @@ void VCross(VECTOR a, const VECTOR b, const VECTOR c) Assign_Vector(a, tmp); } -/* { dg-final { scan-tree-dump-times "tmp = .DEFERRED_INIT \\(24, 2, 0\\)" 1 "gimple" } } */ -/* { dg-final { scan-tree-dump-times ".DEFERRED_INIT \\(8, 2, 0\\)" 3 "esra" } } */ +/* { dg-final { scan-tree-dump-times "tmp = .DEFERRED_INIT \\(24, 2, \&\"tmp\"" 1 "gimple" } } */ +/* { dg-final { scan-tree-dump-times ".DEFERRED_INIT \\(8, 2, \&\"tmp\"" 3 "esra" } } */ diff --git a/gcc/testsuite/c-c++-common/auto-init-padding-1.c b/gcc/testsuite/c-c++-common/auto-init-padding-1.c index 83db8dd..d2e3227 100644 --- a/gcc/testsuite/c-c++-common/auto-init-padding-1.c +++ b/gcc/testsuite/c-c++-common/auto-init-padding-1.c @@ -19,5 +19,5 @@ void foo(int a) g(s); } -/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(24, 1, 0\\)" "gimple" } } */ +/* { dg-final { scan-tree-dump ".DEFERRED_INIT \\(24, 1, \&\"s\"" "gimple" } } */ /* { dg-final { scan-tree-dump "__builtin_clear_padding" "gimple" } } */ diff --git a/gcc/testsuite/c-c++-common/builtin-shufflevector-3.c b/gcc/testsuite/c-c++-common/builtin-shufflevector-3.c new file mode 100644 index 0000000..6e8fb64 --- /dev/null +++ b/gcc/testsuite/c-c++-common/builtin-shufflevector-3.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-Wno-psabi" } */ + +typedef int __attribute__((__vector_size__ (sizeof(int)*4))) V; + +int +foo(V v, int i) +{ + return __builtin_shufflevector (v, v, 2, 3)[i]; +} + +int +bar(V v, int i) +{ + return __builtin_shufflevector(v, v, 4)[0] & i; +} diff --git a/gcc/testsuite/c-c++-common/pr101537.c b/gcc/testsuite/c-c++-common/pr101537.c new file mode 100644 index 0000000..c0c3cfc --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr101537.c @@ -0,0 +1,26 @@ +/* PR c/101537 */ +/* { dg-do compile } */ +/* { dg-options "-Wconversion" } */ + +int +foo () +{ + int aaa = 1; + unsigned char bbb = 0; + bbb |= aaa ? 1 : 0; + return bbb; +} + +int +bar (unsigned char x, int f) +{ + x |= f ? 1 : 0; + return x; +} + +int +baz (unsigned char x, int f) +{ + x = x | f ? 1 : 0; + return x; +} diff --git a/gcc/testsuite/c-c++-common/pr103881.c b/gcc/testsuite/c-c++-common/pr103881.c new file mode 100644 index 0000000..bb3f53b --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr103881.c @@ -0,0 +1,20 @@ +/* PR c/103881 */ +/* { dg-do compile } */ +/* { dg-options "-Wconversion" } */ + +unsigned char bar (void); + +void +foo (void) +{ + unsigned char t = 0; + t |= bar (); + t |= bar () & bar (); /* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */ + t &= bar () & bar (); /* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */ + t = bar () & bar (); + + unsigned char a = bar (); + t |= a & a; + t |= bar () & a; /* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */ + t |= a & bar (); /* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */ +} diff --git a/gcc/testsuite/c-c++-common/pr83059.c b/gcc/testsuite/c-c++-common/pr83059.c index 44ff67c..795faa5 100644 --- a/gcc/testsuite/c-c++-common/pr83059.c +++ b/gcc/testsuite/c-c++-common/pr83059.c @@ -1,10 +1,13 @@ -/* PR c++/83059 */ +/* PR c++/83059 - ICE on invalid C++ code: in tree_to_uhwi, at tree.c:6633 */ /* { dg-do compile } */ void foo (int *p, int *q, int *r) { __atomic_compare_exchange (p, q, r, 0, 0, -1); /* { dg-warning "invalid memory model argument 6" } */ - /* { dg-warning "unknown architecture specifi" "" { target *-*-* } .-1 } */ - /* { dg-warning "failure memory model cannot be stronger than success memory model" "" { target *-*-* } .-2 } */ } + +/* The test triggers several distinct instance of the warning. Prune + them out; they're not relevant to its main purpose -- to verify + there's no ICE. + { dg-prune-output "-Winvalid-memory-model" } */ diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-compare1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-compare1.C index ad65019..603c6d5 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-compare1.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-compare1.C @@ -1,4 +1,5 @@ // { dg-do compile { target c++11 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } extern int a, b; static_assert (&a == &a, ""); diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-compare2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-compare2.C new file mode 100644 index 0000000..5c08dbb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-compare2.C @@ -0,0 +1,11 @@ +// PR c++/69681 +// { dg-do compile { target c++11 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } + +void f(); +void g(); +static_assert(f != g, ""); + +#if __cpp_constexpr >= 201603L +static_assert([]{} != []{}, ""); +#endif diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-condition.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-condition.C index 733d494..e81acba 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-condition.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-condition.C @@ -5,5 +5,5 @@ constexpr int something() { return 3; } int main() { if (constexpr long v = something()) {} - if (static long v = something()) { } // { dg-error "'decl-specifier' invalid" } + if (static long v = something()) { } // { dg-error "'static' invalid" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-typeid2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-typeid2.C index 78c6b8e..8ab76f9 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-typeid2.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-typeid2.C @@ -1,5 +1,6 @@ // PR c++/103600 // { dg-do compile { target c++11 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } #include <typeinfo> diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist116.C b/gcc/testsuite/g++.dg/cpp0x/initlist116.C new file mode 100644 index 0000000..90dd8d7 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist116.C @@ -0,0 +1,29 @@ +// PR c++/66139 +// { dg-do run { target c++11 } } + +int constructed = 0; + +class lock_guard_ext{ +public: + lock_guard_ext() { ++constructed; } + ~lock_guard_ext() { --constructed; } +}; + +struct Access { + lock_guard_ext lock; + int value; +}; + +int t() { + throw 0; +} + +Access foo1() { + return { {}, t() }; +} + +int main () { + try { foo1(); } catch (int) {} + if (constructed != 0) + __builtin_abort(); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist117.C b/gcc/testsuite/g++.dg/cpp0x/initlist117.C new file mode 100644 index 0000000..415a5de --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist117.C @@ -0,0 +1,40 @@ +// PR c++/66139 +// { dg-do run { target c++11 } } + +#include <initializer_list> + +int c, d; + +struct a +{ + a (int i) { if (i) throw i; c++; } + ~a () { d++; } +}; + +void check (void (*f) ()) +{ + try + { + c = d = 0; + f (); + } + catch (int) + { + if (c != 1 || d != 1) + __builtin_abort (); + return; + } + __builtin_abort (); +} + +int main () +{ + struct s { a x, y; }; + check ([] { s t { 0, 1 }; }); + check ([] { s { 0, 1 }; }); + check ([] { a t[2] { 0, 1 }; }); + using array = a[2]; + check ([] { array { 0, 1 }; }); + check ([] { std::initializer_list <a> t { 0, 1 }; }); + check ([] { std::initializer_list <a> { 0, 1 }; }); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist122.C b/gcc/testsuite/g++.dg/cpp0x/initlist122.C index 002bc1e..81953a4 100644 --- a/gcc/testsuite/g++.dg/cpp0x/initlist122.C +++ b/gcc/testsuite/g++.dg/cpp0x/initlist122.C @@ -6,11 +6,19 @@ struct Temp { ~Temp() { gone = true; } }; struct A{ A() {}; A(const Temp&) noexcept {}; }; struct B{ ~B() {}; }; struct Pair{ A a; B b; }; - void foo(const Pair&) noexcept { if (gone) __builtin_abort(); } +B bar() { if (gone) __builtin_abort(); return {}; } + int main() { - foo({A(Temp{}), B()}); + Pair p{A(Temp{}), bar()}; + + if (!gone) __builtin_abort (); + + gone = false; + + foo({A(Temp{})}); + if (!gone) __builtin_abort (); } diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C new file mode 100644 index 0000000..4d1f4f3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C @@ -0,0 +1,34 @@ +// Test that we properly clean up if we get an exception in the middle of +// constructing the closure object. + +// { dg-do run } +// { dg-require-effective-target c++11 } + +struct A +{ + A() {} + A(const A&) { throw 1; } +}; + +int bs; +struct B +{ + B() { ++bs; } + B(const B&) { ++bs; } + ~B() { --bs; } +}; + +int main() +{ + { + B b1, b2; + A a; + + try + { + [b1, a, b2]{ }; + } + catch(...) {} + } + return bs; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-array1.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-array1.C new file mode 100644 index 0000000..1ab1435 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-array1.C @@ -0,0 +1,6 @@ +// PR c++/103946 +// { dg-do compile { target c++11 } } + +struct s1 { s1(); }; +class s2 { s1 f1[2]{}; }; +s2 a; diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-89074-2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-89074-2.C new file mode 100644 index 0000000..6a088ee --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-89074-2.C @@ -0,0 +1,19 @@ +// PR c++/89074 +// { dg-do compile { target c++14 } } + +constexpr bool +foo () +{ + int a[] = { 1, 2 }; + int b[] = { 3, 4 }; + + if (a + 0 == b + 0) + return false; + + if (a + 1 == b + 0) + return false; + + return true; +} + +static_assert (foo (), ""); diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-94716.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-94716.C index 90173f3..5ac8720 100644 --- a/gcc/testsuite/g++.dg/cpp1y/constexpr-94716.C +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-94716.C @@ -1,5 +1,6 @@ // PR c++/94716 // { dg-do compile { target c++14 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } template <int> char v = 0; static_assert (&v<2> == &v<2>, ""); diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C new file mode 100644 index 0000000..a267c14 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C @@ -0,0 +1,15 @@ +// PR c++/103879 +// { dg-do compile { target c++14 } } + +struct A { int n = 42; }; +struct B : A { }; +struct C { B b; }; + +constexpr int f() { + C c; + A& a = static_cast<A&>(c.b); + B& b = static_cast<B&>(a); + return b.n; +} + +static_assert(f() == 42, ""); diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-base2a.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-base2a.C new file mode 100644 index 0000000..9eb72b9 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-base2a.C @@ -0,0 +1,17 @@ +// PR c++/103879 +// { dg-do compile { target c++14 } } + +struct A { int n = 42; }; +struct Y { int m = 0; }; +struct X : Y, A { }; +struct B : X { }; +struct C { B b; }; + +constexpr int f() { + C c; + A& a = static_cast<A&>(c.b); + B& b = static_cast<B&>(a); + return b.n; +} + +static_assert(f() == 42, ""); diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction100.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction100.C new file mode 100644 index 0000000..9fa307f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction100.C @@ -0,0 +1,13 @@ +// PR c++/90782 +// { dg-do compile { target c++17 } } + +template<class... A> +struct bar { + template<class B> + bar(B& obj, void(B::*f)(A...)const=&B::operator()){} +}; +int main() { + const auto f1 = [](){}; + bar f8(f1); +} + diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-89074-1.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-89074-1.C new file mode 100644 index 0000000..ca91765 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-89074-1.C @@ -0,0 +1,26 @@ +// PR c++/89074 +// { dg-do compile { target c++17 } } + +struct S { int s; }; +struct T : public S { }; +struct U : public T { }; + +constexpr bool +foo () +{ + U a[] = { 1, 2, 3, 4 }; + U b[] = { 5, 6, 7, 8 }; + T *c = (T *) a + 1; + S *d = (S *) c + 2; + S *e = (S *) b + 1; + + if (a + 0 == b + 0) + return false; + + if (d == e) + return false; + + return true; +} + +static_assert (foo (), ""); diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-compare1.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-compare1.C index a53c03c..d40d536 100644 --- a/gcc/testsuite/g++.dg/cpp1z/constexpr-compare1.C +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-compare1.C @@ -1,4 +1,5 @@ // { dg-do compile { target c++17 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } inline int a = 0; inline int b = 0; diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C index 4a1b134..e425af2 100644 --- a/gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C @@ -3,6 +3,7 @@ // weakness. // { dg-do compile { target c++17 } } +// { dg-additional-options "-fdelete-null-pointer-checks" } extern void weakfn1 (void); extern void weakfn2 (void); diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-class3.C b/gcc/testsuite/g++.dg/cpp2a/concepts-class3.C new file mode 100644 index 0000000..68b50b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-class3.C @@ -0,0 +1,12 @@ +// PR c++/103831 +// { dg-do compile { target c++20 } } + +struct A { + constexpr int size() { return 42; } // non-static +}; + +template<class T> + requires (T::size() == 42) // { dg-error "without object" } +struct B : T { }; + +template struct B<A>; // { dg-error "constraint" } diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun2.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun2.C new file mode 100644 index 0000000..e3845e4 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun2.C @@ -0,0 +1,25 @@ +// PR c++/103783 +// { dg-do compile { target c++20 } } + +template<bool B> +struct A { + template<class...> void f1() = delete; + template<class...> static void f1() requires B; + + template<class...> void f2() requires B; + template<class...> static void f2() = delete; + + void g1() = delete; + static void g1() requires B; + + void g2() requires B; + static void g2() = delete; +}; + +int main() { + A<true> a; + a.f1(); // OK + a.f2(); // OK + a.g1(); // OK, previously rejected as ambiguous + a.g2(); // OK, previously rejected as ambiguous +} diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval26.C b/gcc/testsuite/g++.dg/cpp2a/consteval26.C new file mode 100644 index 0000000..01acb80 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/consteval26.C @@ -0,0 +1,39 @@ +// PR c++/103912 +// { dg-do run { target c++20 } } +// { dg-additional-options "-O2 -g -fkeep-inline-functions" } + +extern "C" void abort (); + +struct A { A () {} }; + +consteval auto +foo () +{ + if (1) + ; + return [] (A x) { return 1; }; +} + +consteval auto +bar (int a) +{ + int b = a + 4; + if (1) + ; + return [=] (A x) { return a + b; }; +} + +int +main () +{ + A x; + auto h = foo (); + if (h (x) != 1) + abort (); + auto i = bar (5); + if (i (x) != 14) + abort (); + auto j = bar (42); + if (j (x) != 88) + abort (); +} diff --git a/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor11.C b/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor11.C new file mode 100644 index 0000000..e371f89 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor11.C @@ -0,0 +1,12 @@ +// PR c++/102191 +// { dg-do compile { target c++20 } } + +struct X { + struct A { + constexpr ~A() noexcept(false) { } + }; + + constexpr A operator()(auto...) { return {}; } +}; + +void f() { []() consteval { X{}(); }(); } diff --git a/gcc/testsuite/g++.dg/cpp2a/destroying-delete5.C b/gcc/testsuite/g++.dg/cpp2a/destroying-delete5.C index 553c964..6113d7f 100644 --- a/gcc/testsuite/g++.dg/cpp2a/destroying-delete5.C +++ b/gcc/testsuite/g++.dg/cpp2a/destroying-delete5.C @@ -18,7 +18,7 @@ void * Expression::operator new(std::size_t sz) int i; -void Expression::operator delete(Expression *p, std::destroying_delete_t) +void Expression::operator delete(Expression *p, std::destroying_delete_t) // { dg-message "destroying delete" } { Expression * e = p; ::i = e->i; @@ -28,7 +28,7 @@ void Expression::operator delete(Expression *p, std::destroying_delete_t) int main() { - auto p = new Expression(); + auto p = new Expression(); // { dg-warning "no corresponding dealloc" } p->i = 1; delete p; if (i != 1) diff --git a/gcc/testsuite/g++.dg/cpp2a/destroying-delete6.C b/gcc/testsuite/g++.dg/cpp2a/destroying-delete6.C new file mode 100644 index 0000000..be78373 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/destroying-delete6.C @@ -0,0 +1,36 @@ +// PR c++/100588 +// { dg-do run { target c++20 } } + +extern "C" void abort (); +extern "C" int puts (const char *); +#include <new> + +#ifndef DEBUG +#define puts(S) +#endif + +class A { + public: + A() { throw 42; } + ~A() { puts("A::~A"); } + + void operator delete(void* p) { + puts("regular delete invoked"); + ::operator delete(p); + } + + void operator delete(A* p, std::destroying_delete_t) { + puts("destroying delete invoked"); + p->~A(); + ::operator delete(p); + abort (); + } +}; + +int main() { + try { + new A; + } catch (int) { + } +} + diff --git a/gcc/testsuite/g++.dg/diagnostic/recur-align.C b/gcc/testsuite/g++.dg/diagnostic/recur-align.C new file mode 100644 index 0000000..e7d4b9a --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/recur-align.C @@ -0,0 +1,19 @@ +// ICE with diagnostic recursion +// { dg-do compile { target { c++11_only || c++14_only } } } +// { dg-options -Waligned-new } + +struct __attribute__ ((aligned(256))) Aligned +{ + int b; +}; + +template<typename T> +auto Foo (const T* x) -> decltype (new T (*x)) +{ + return new T (*x); // { dg-warning "with extended alignment" } +} + +void Bar () { + Aligned y; + Foo (&y); +} diff --git a/gcc/testsuite/g++.dg/eh/aggregate1.C b/gcc/testsuite/g++.dg/eh/aggregate1.C new file mode 100644 index 0000000..68d0ed7 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/aggregate1.C @@ -0,0 +1,56 @@ +// PR c++/52320 +// { dg-do run } + +#if DEBUG +extern "C" int printf (const char *, ...); +#define FUNCTION_NAME __PRETTY_FUNCTION__ +#define TRACE_FUNCTION printf ("%p->%s\n", this, FUNCTION_NAME); +#else +#define TRACE_FUNCTION +#endif +int c,d; +#define TRACE_CTOR TRACE_FUNCTION ++c +#define TRACE_DTOR TRACE_FUNCTION ++d + +int throw_at = 0; + +struct A { + A() { int i = c+1; if (i == throw_at) throw i; TRACE_CTOR; } + A(int i) { if (i == throw_at) throw i; TRACE_CTOR; } + A(const A&) { throw 10; } + A &operator=(const A&) { throw 11; return *this; } + ~A() { TRACE_DTOR; } +}; + +int fails; + +void try_idx (int i) +{ +#if DEBUG + printf ("trying %d\n", i); +#endif + throw_at = i; + c = d = 0; + int t = 10; + try { + struct X { + A e1[2], e2; + } + x2[3] = { { 1, 2, 3 }, { 4, 5, 6 } }; + } catch (int x) { t = x; } + if (t != i || c != d || c != i-1) + { +#if DEBUG + printf ("%d FAIL\n", i); +#endif + ++fails; + } +} + +int main() +{ + for (int i = 1; i <= 10; ++i) + try_idx (i); + + return fails; +} diff --git a/gcc/testsuite/g++.dg/eh/array1.C b/gcc/testsuite/g++.dg/eh/array1.C index 30b035c..79d62ad 100644 --- a/gcc/testsuite/g++.dg/eh/array1.C +++ b/gcc/testsuite/g++.dg/eh/array1.C @@ -2,10 +2,16 @@ // rather than one for each element. // { dg-options "-fdump-tree-gimple" } +#if __cplusplus < 201100L +#define NOTHROW throw() +#else +#define NOTHROW noexcept +#endif + struct A { A(); - ~A(); + ~A() NOTHROW; }; void f() diff --git a/gcc/testsuite/g++.dg/eh/array3.C b/gcc/testsuite/g++.dg/eh/array3.C new file mode 100644 index 0000000..547541b --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/array3.C @@ -0,0 +1,40 @@ +// PR c++/66451 +// { dg-do run } + +#if __cplusplus > 201100L +#define THROWING noexcept(false) +#else +#define THROWING +#endif + +extern "C" void abort(); + +int c; +struct A +{ + int a; + + A(int new_a) : a(new_a) { ++c; } + A(const A&); // not defined + ~A() THROWING + { + --c; + if(a==4) + throw a; + } +}; + +struct B +{ + A a[2]; + ~B() { } +}; + +int sink; +int main() +{ + try { + B b = {3,4}; + } catch(...) { } + if (c != 0) abort(); +} diff --git a/gcc/testsuite/g++.dg/eh/ctor-fntry1.C b/gcc/testsuite/g++.dg/eh/ctor-fntry1.C new file mode 100644 index 0000000..0c783bb --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/ctor-fntry1.C @@ -0,0 +1,23 @@ +// PR c++/61611 +// { dg-do run } + +struct A { }; +struct B { }; + +struct Test +{ + Test() + try { throw A(); } + catch(const A&) + { + try { throw B(); } + catch(const B&) { } + } +}; + +int +main() +{ + try { Test x; } + catch(const A&) { } +} diff --git a/gcc/testsuite/g++.dg/eh/delegating1.C b/gcc/testsuite/g++.dg/eh/delegating1.C new file mode 100644 index 0000000..c33374a --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/delegating1.C @@ -0,0 +1,28 @@ +// PR c++/103711 +// { dg-do run { target c++11 } } + +int constructions = 0; +int destructions = 0; + +struct A +{ + A() { constructions++; } + virtual ~A() { destructions++; } +}; + +struct B : public virtual A +{ + B(int) { } + B() : B(1) { throw -1; } + virtual ~B() = default; +}; + +struct C : public B { }; + +int main() { + try { + C c; + } + catch (int) {} + return (constructions - destructions); +} diff --git a/gcc/testsuite/g++.dg/eh/delete1.C b/gcc/testsuite/g++.dg/eh/delete1.C index 1727a74..92ed646 100644 --- a/gcc/testsuite/g++.dg/eh/delete1.C +++ b/gcc/testsuite/g++.dg/eh/delete1.C @@ -69,7 +69,7 @@ int ary () { deleted = 0; - Baz *p = new Baz[5]; + Baz *p = new Baz[1]; try { delete[] p; } catch (...) { return deleted != 1;} return 1; diff --git a/gcc/testsuite/g++.dg/eh/ref-temp1.C b/gcc/testsuite/g++.dg/eh/ref-temp1.C new file mode 100644 index 0000000..2df1a49 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/ref-temp1.C @@ -0,0 +1,51 @@ +// PR c++/53868 +// { dg-do run { target c++11 } } + +#if __cplusplus > 201100L +#define THROWING noexcept(false) +#else +#define THROWING +#endif + +extern "C" int printf(const char *, ...); +extern "C" void abort(); + +struct SubobjectInA { + SubobjectInA(); + ~SubobjectInA(); +}; + +int a; +struct A : SubobjectInA { + A() = delete; + A(const A &) = delete; + A(A &&) = delete; + A(int); + ~A(); +}; + +#ifdef DEBUG +#define TRACE_FUNC( ... ) \ +{ printf("%s\n", __PRETTY_FUNCTION__); __VA_ARGS__ } +#else +#define TRACE_FUNC( ... ) \ +{ __VA_ARGS__ } +#endif + +struct Q { + Q() : q(0) TRACE_FUNC() + ~Q() THROWING; + int q; +}; + +int main() { + try { const A &a = Q().q; } + catch (...) { if (!a) return 0; } + abort(); +} + +SubobjectInA::SubobjectInA() TRACE_FUNC() +SubobjectInA::~SubobjectInA() TRACE_FUNC() +A::A(int) TRACE_FUNC(++a;) +A::~A() TRACE_FUNC(--a;) +Q::~Q() THROWING TRACE_FUNC( throw 0; ) diff --git a/gcc/testsuite/g++.dg/eh/ref-temp2.C b/gcc/testsuite/g++.dg/eh/ref-temp2.C new file mode 100644 index 0000000..0c71896 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/ref-temp2.C @@ -0,0 +1,15 @@ +// { dg-do run { target c++11 } } + +struct B { B() {} ~B() noexcept(false) { throw 42; } }; +int a; +struct A { A() { ++a; }; A(B) { ++a; } ~A() { --a; } }; + +using Arr = A[3]; + +int main() +{ + try { + auto&& ref = Arr{B()}; + } catch (...) { } + return a; +} diff --git a/gcc/testsuite/g++.dg/eh/return1.C b/gcc/testsuite/g++.dg/eh/return1.C index 5ef2f1de..ac22254 100644 --- a/gcc/testsuite/g++.dg/eh/return1.C +++ b/gcc/testsuite/g++.dg/eh/return1.C @@ -11,13 +11,16 @@ int c, d; #define THROWS #endif +extern "C" int printf (const char *, ...); +#define DEBUG // printf ("%p %s\n", this, __PRETTY_FUNCTION__) + struct X { - X(bool throws) : throws_(throws) { ++c; } - X(const X& x) : throws_(x.throws_) { ++c; } + X(bool throws) : throws_(throws) { ++c; DEBUG; } + X(const X& x); // not defined ~X() THROWS { - ++d; + ++d; DEBUG; if (throws_) { throw 1; } } private: @@ -42,6 +45,40 @@ void h() #endif } +X i() +{ + try { + X x(true); + return X(false); + } catch(...) {} + return X(false); +} + +X j() +{ + try { + return X(true),X(false); + } catch(...) {} + return X(false); +} + +template <class T> +T k() +{ + try { + return T(true),T(false); + } catch (...) {} + return T(true),T(false); +} + +X l() try { return X(true),X(false); } + catch (...) { return X(true),X(false); } + +template <class T> +T m() + try { return T(true),T(false); } + catch (...) { return T(true),T(false); } + int main() { try { f(); } @@ -53,6 +90,15 @@ int main() try { h(); } catch (...) {} - if (c != d) - throw; + try { i(); } + catch (...) {} + + try { j(); } catch (...) {} + + try { k<X>(); } catch (...) {} + + try { l(); } catch (...) {} + try { m<X>(); } catch (...) {} + + return c - d; } diff --git a/gcc/testsuite/g++.dg/init/aggr15.C b/gcc/testsuite/g++.dg/init/aggr15.C new file mode 100644 index 0000000..a19a0f8 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/aggr15.C @@ -0,0 +1,11 @@ +// PR c++/65591 + +struct ss { + ss() {}; +}; +struct C { + ss s[1000]; +}; +int main() { + C cs[5] = {}; +} diff --git a/gcc/testsuite/g++.dg/init/aggr7-eh.C b/gcc/testsuite/g++.dg/init/aggr7-eh.C new file mode 100644 index 0000000..db45e15 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/aggr7-eh.C @@ -0,0 +1,62 @@ +// PR c++/50866, adjusted +// { dg-do run } + +#if __cplusplus > 201100L +#define THROWING noexcept(false) +#else +#define THROWING +#endif + +extern "C" void abort (); + +int a; +int d = -1; +struct A { + A() { ++a; } + A(const A&); + ~A() THROWING { + --a; + if (a == d) + throw (short)a; + } +}; +int b; +int t; +struct B { + B(const char *, const A& = A()) + { + if (b == t) + throw b; + ++b; + if (a != b) abort (); + } + B(const B&); + ~B() + { + --b; + } +}; +struct C { + B b1, b2, b3; +}; +void f() +{ + try + { + C c = { "a","b","c" }; + if (a != 0) abort (); + if (b != 3) abort (); + } + catch (int i) { } + catch (short s) { } + if (a != 0) abort (); + if (b != 0) abort (); +} + +int main() +{ + for (t = 0; t <= 3; ++t) + f(); + for (d = 0; d <= 2; ++d) + f(); +} diff --git a/gcc/testsuite/g++.dg/init/aggr7-eh2.C b/gcc/testsuite/g++.dg/init/aggr7-eh2.C new file mode 100644 index 0000000..0037b09 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/aggr7-eh2.C @@ -0,0 +1,98 @@ +// PR c++/50866, adjusted +// { dg-do run } + +#if __cplusplus > 201100L +#define THROWING noexcept(false) +#else +#define THROWING +#endif + +extern "C" void abort (); + +#ifdef DEBUG + extern "C" int printf (const char *, ...); + #define dump(X,Y) printf(X,Y) +#define abort() printf("wrong\n"); + +#else + #define dump(X,Y) +#endif + +int a, b; +int d; +struct A { + int n; + A() { n = ++a; dump("A%d\n",a); } + A(const A&); + ~A() THROWING { + dump("~A%d\n",n); + --a; + if (d == 1 ? a == 0 : (b == d && a == 1)) + { + dump ("~A%d throwing\n", n); + throw (short)b; + } + } +}; +int t; +struct B { + int n; + B(const A& = A()) + { + if (b == t) + { + dump ("B%d throwing\n", b+1); + throw b; + } + n = ++b; + dump("B%d\n",b); + + /* The first B has an explicit initializer, so its A lives for the + full-expression. The second B does not, so its A should be destroyed + before we construct the third B. */ + if (a != 2) abort (); + } + B(const char *, const A& = A()) + { + if (b == t) + { + dump ("B%d throwing\n", b+1); + throw b; + } + n = ++b; + dump("B%d\n",b); + if (a != b) abort (); + } + B(const B&); + ~B() + { + dump("~B%d\n",n); + --b; + } +}; +struct C { + B bs[3]; +}; +void f() +{ + a = b = 0; + try + { + C c = { "x" }; + if (a != 0) abort (); + if (b != 3) abort (); + } + catch (int i) { } + catch (short s) { } + if (a != 0) abort (); + if (b != 0) abort (); + dump ("\n", 0); +} + +int main() +{ + for (t = 0; t <= 3; ++t) + f(); + for (d = 1; d <= 3; ++d) + f(); +} diff --git a/gcc/testsuite/g++.dg/init/aggr7-eh3.C b/gcc/testsuite/g++.dg/init/aggr7-eh3.C new file mode 100644 index 0000000..6ddabec --- /dev/null +++ b/gcc/testsuite/g++.dg/init/aggr7-eh3.C @@ -0,0 +1,98 @@ +// PR c++/50866, adjusted +// { dg-do run } + +#if __cplusplus > 201100L +#define THROWING noexcept(false) +#else +#define THROWING +#endif + +extern "C" void abort (); + +#ifdef DEBUG + extern "C" int printf (const char *, ...); + #define dump(X,Y) printf(X,Y) +#define abort() printf("wrong\n"); + +#else + #define dump(X,Y) +#endif + +int a, b; +int d; +struct A { + int n; + A() { n = ++a; dump("A%d\n",a); } + A(const A&); + ~A() THROWING { + dump("~A%d\n",n); + --a; + if (d == 1 ? a == 0 : (b == d && a == 1)) + { + dump ("~A%d throwing\n", n); + throw (short)b; + } + } +}; +int t; +struct B { + int n; + B(const A& = A()) + { + if (b == t) + { + dump ("B%d throwing\n", b+1); + throw b; + } + n = ++b; + dump("B%d\n",b); + + /* The first B has an explicit initializer, so its A lives for the + full-expression. The second B does not, so its A should be destroyed + before we construct the third B. */ + if (a != 2) abort (); + } + B(const char *, const A& = A()) + { + if (b == t) + { + dump ("B%d throwing\n", b+1); + throw b; + } + n = ++b; + dump("B%d\n",b); + if (a != b) abort (); + } + B(const B&); + ~B() + { + dump("~B%d\n",n); + --b; + } +}; +struct C { + B bs[3]; +}; +void f() +{ + a = b = 0; + try + { + B bs[3] = { "x" }; + if (a != 0) abort (); + if (b != 3) abort (); + } + catch (int i) { } + catch (short s) { } + if (a != 0) abort (); + if (b != 0) abort (); + dump ("\n", 0); +} + +int main() +{ + for (t = 0; t <= 3; ++t) + f(); + for (d = 1; d <= 3; ++d) + f(); +} diff --git a/gcc/testsuite/g++.dg/init/array12.C b/gcc/testsuite/g++.dg/init/array12.C index 3bb4800..f45a6e1 100644 --- a/gcc/testsuite/g++.dg/init/array12.C +++ b/gcc/testsuite/g++.dg/init/array12.C @@ -1,5 +1,5 @@ // PR c++/12253 -// Bug: We were failing to destroy the temporary A passed to the +// We should not destroy the temporary A passed to the // constructor for b[0] before going on to construct b[1]. // { dg-do run } @@ -11,18 +11,21 @@ int r; struct A { - A() { printf ("A()\n"); if (c++) r = 1; } + A() { printf ("A()\n"); ++c; } A(const A&) { printf ("A(const A&)\n"); ++c; } ~A() { printf ("~A()\n"); --c; } }; struct B { - B(int, const A& = A()) { printf ("B()\n"); } + B(int i, const A& = A()) { + printf ("B()\n"); + if (c != i) r = 1; + } }; int main() { - B b[] = { 0, 0 }; + B b[] = { 1, 2 }; return r; } diff --git a/gcc/testsuite/g++.dg/init/array61.C b/gcc/testsuite/g++.dg/init/array61.C new file mode 100644 index 0000000..eaf535c --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array61.C @@ -0,0 +1,16 @@ +// PR c++/92385 +// { dg-do compile { target c++11 } } +// { dg-additional-options -fdump-tree-gimple } +// { dg-final { scan-tree-dump-times "item::item" 1 "gimple" } } + +struct item { + int i; + item(); +}; + +struct item_array { + item a[10]; + item_array(); +}; + +item_array::item_array() : a{} {} diff --git a/gcc/testsuite/g++.dg/init/delete4.C b/gcc/testsuite/g++.dg/init/delete4.C new file mode 100644 index 0000000..94932b4 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/delete4.C @@ -0,0 +1,14 @@ +// PR c++/20040 + +class X +{ + void operator delete(void *p) throw () {} // { dg-message "declared private" } +}; + +X xa; + +int mymain() +{ + X *p = new X; // { dg-error "is private" } + return 0; +} diff --git a/gcc/testsuite/g++.dg/ipa/devirt-40.C b/gcc/testsuite/g++.dg/ipa/devirt-40.C index 32e0d22..31fe150 100644 --- a/gcc/testsuite/g++.dg/ipa/devirt-40.C +++ b/gcc/testsuite/g++.dg/ipa/devirt-40.C @@ -1,4 +1,12 @@ /* { dg-options "-O2 -fdump-tree-fre3-details" } */ + +// A throwing dtor in C++98 mode changes the results. +#if __cplusplus < 201100L +#define NOTHROW throw() +#else +#define NOTHROW noexcept +#endif + typedef enum { } UErrorCode; @@ -6,7 +14,7 @@ class UnicodeString { public: UnicodeString (); - virtual ~UnicodeString (); + virtual ~UnicodeString () NOTHROW; }; class A { diff --git a/gcc/testsuite/g++.dg/opt/pr101597.C b/gcc/testsuite/g++.dg/opt/pr101597.C new file mode 100644 index 0000000..3b7b34f --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr101597.C @@ -0,0 +1,13 @@ +// PR c++/101597 +// { dg-do compile } +// { dg-options "-O2 -Warray-bounds" } + +typedef __SIZE_TYPE__ size_t; +struct S { virtual void *foo (size_t) __attribute__((alloc_size (2))); }; + +int +foo (void *p) +{ + char *q = static_cast<char *> (static_cast<S *> (p)->foo (32)); + return q[64]; // { dg-warning "array subscript 64 is outside array bounds of" } +} diff --git a/gcc/testsuite/g++.dg/template/attr-used.C b/gcc/testsuite/g++.dg/template/attr-used.C new file mode 100644 index 0000000..e12bf4c --- /dev/null +++ b/gcc/testsuite/g++.dg/template/attr-used.C @@ -0,0 +1,16 @@ +// { dg-do compile } + +template<typename T> struct X { + void g () {} + void f () __attribute__((__used__)) {} +}; + +extern X<int> x; // X<int> incomplete here + +template <typename T> +void Frob (T t) { + x.g(); // X<int> completed here, X<int>::f's body marked for instantiation +} + +// Make sure X<int>::f is emitted +// { dg-final { scan-assembler "_ZN1XIiE1fEv:" } } diff --git a/gcc/testsuite/g++.dg/template/non-dependent18.C b/gcc/testsuite/g++.dg/template/non-dependent18.C new file mode 100644 index 0000000..3e15568 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/non-dependent18.C @@ -0,0 +1,19 @@ +// PR c++/103831 +// { dg-do compile { target c++11 } } + +struct A { + constexpr int size() { return 42; } // non-static +}; + +template<class T> +struct B : T { + static_assert(A::size() == 42, ""); // { dg-error "without object" } + + static int f() { + static_assert(A::size() == 42, ""); // { dg-error "without object" } + return A::size(); // { dg-error "without object" } + } + + int n = A::size(); + static const int m = A::size(); // { dg-error "without object" } +}; diff --git a/gcc/testsuite/g++.dg/tree-ssa/aggregate1.C b/gcc/testsuite/g++.dg/tree-ssa/aggregate1.C new file mode 100644 index 0000000..3f30a73 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/aggregate1.C @@ -0,0 +1,19 @@ +// Test that we don't bother building a cleanup for the last aggregate element. +// { dg-additional-options -fdump-tree-gimple } +// { dg-final { scan-tree-dump-not {A::~A \(&b\.a} "gimple" } } + +struct A +{ + A(int); + ~A(); +}; + +struct B +{ + A a; +}; + +int main() +{ + B b = { 1 }; +} diff --git a/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C b/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C deleted file mode 100644 index 5eb0bf8..0000000 --- a/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C +++ /dev/null @@ -1,13 +0,0 @@ -// PR c++/53356 -// { dg-options "-fdump-tree-gimple" } -// { dg-final { scan-tree-dump-not "= 0" "gimple" } } - -class A {}; - -struct B { - operator const A &() const; -}; - -A* cause_ICE() { - return new A(B()); -} diff --git a/gcc/testsuite/g++.dg/vect/slp-pr98855.cc b/gcc/testsuite/g++.dg/vect/slp-pr98855.cc index b101032..ff59eb9 100644 --- a/gcc/testsuite/g++.dg/vect/slp-pr98855.cc +++ b/gcc/testsuite/g++.dg/vect/slp-pr98855.cc @@ -81,6 +81,5 @@ void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks, uint32_t *EK) } } -// This used to work on { target x86_64-*-* i?86-*-* } but a fix in SLP -// discovery makes us trip over the threshold again. -// { dg-final { scan-tree-dump-times "not vectorized: vectorization is not profitable" 2 "slp1" { xfail *-*-* } } } +// { dg-final { scan-tree-dump "not vectorized: vectorization is not profitable" "slp1" } } +// { dg-final { scan-tree-dump-not "vectorizing stmts using SLP" "slp1" } } diff --git a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C new file mode 100644 index 0000000..a157061 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C @@ -0,0 +1,79 @@ +/* PR middle-end/99612 - Missing warning on incorrect memory order without + -Wsystem-headers + Verify warnings for atomic functions with optimization. + { dg-do compile { target c++11 } } + { dg-options "-O1" } */ + +#include <atomic> + +static const std::memory_order relaxed = std::memory_order_relaxed; +static const std::memory_order consume = std::memory_order_consume; +static const std::memory_order acquire = std::memory_order_acquire; +static const std::memory_order release = std::memory_order_release; +static const std::memory_order acq_rel = std::memory_order_acq_rel; +static const std::memory_order seq_cst = std::memory_order_seq_cst; + +extern std::atomic<int> eai; + +void test_load (int *pi) +{ + *pi++ = eai.load (relaxed); + *pi++ = eai.load (consume); + *pi++ = eai.load (acquire); + *pi++ = eai.load (release); // warning + *pi++ = eai.load (acq_rel); // warning + *pi++ = eai.load (seq_cst); +} + +/* { dg-regexp " *inlined from \[^\n\r\]+.C:23:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 } + { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */ + + +void test_store (int *pi) +{ + eai.store (*pi++, relaxed); + eai.store (*pi++, consume); // warning + eai.store (*pi++, acquire); // warning + eai.store (*pi++, release); + eai.store (*pi++, acq_rel); // warning + eai.store (*pi++, seq_cst); +} + +/* { dg-regexp " *inlined from \[^\n\r\]+.C:36:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:39:.*" "" { target *-*-* } 0 } + { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */ + + +void test_exchange (const int *pi) +{ + eai.exchange (*pi++, relaxed); + eai.exchange (*pi++, consume); + eai.exchange (*pi++, acquire); + eai.exchange (*pi++, release); + eai.exchange (*pi++, acq_rel); + eai.exchange (*pi++, seq_cst); +} + + +void test_compare_exchange (int *pi, int *pj) +{ +#define cmpxchg(x, y, z, o1, o2) \ + std::atomic_compare_exchange_weak_explicit (x, y, z, o1, o2) + + cmpxchg (&eai, pi++, *pj++, relaxed, relaxed); + cmpxchg (&eai, pi++, *pj++, relaxed, consume); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, acquire); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, release); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, acq_rel); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, seq_cst); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, relaxed); + + /* { dg-regexp " *inlined from \[^\n\r\]+.C:66:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { target *-*-* } 0 } + { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { target *-*-* } 0 } */ +} diff --git a/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C new file mode 100644 index 0000000..5357d54 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C @@ -0,0 +1,84 @@ +/* PR middle-end/99612 - Missing warning on incorrect memory order without + -Wsystem-headers + Verify warings for basic atomic functions with no optimization. + { dg-do compile { target c++11 } } + { dg-options "-O0 -Wall" } */ + +#include <atomic> + +static const std::memory_order relaxed = std::memory_order_relaxed; +static const std::memory_order consume = std::memory_order_consume; +static const std::memory_order acquire = std::memory_order_acquire; +static const std::memory_order release = std::memory_order_release; +static const std::memory_order acq_rel = std::memory_order_acq_rel; +static const std::memory_order seq_cst = std::memory_order_seq_cst; + +extern std::atomic<int> eai; + +void test_load (int *pi) +{ + *pi++ = eai.load (relaxed); + *pi++ = eai.load (consume); + *pi++ = eai.load (acquire); + *pi++ = eai.load (release); // warning + *pi++ = eai.load (acq_rel); // warning + *pi++ = eai.load (seq_cst); +} + +/* { dg-regexp " *inlined from \[^\n\r\]+.C:23:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 } + { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */ + + +void test_store (int *pi) +{ + eai.store (*pi++, relaxed); + eai.store (*pi++, consume); // warning + eai.store (*pi++, acquire); // warning + eai.store (*pi++, release); + eai.store (*pi++, acq_rel); // warning + eai.store (*pi++, seq_cst); +} + +/* { dg-regexp " *inlined from \[^\n\r\]+.C:36:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 } + { dg-regexp " *inlined from \[^\n\r\]+.C:39:.*" "" { target *-*-* } 0 } + { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */ + + +void test_exchange (const int *pi) +{ + eai.exchange (*pi++, relaxed); + eai.exchange (*pi++, consume); + eai.exchange (*pi++, acquire); + eai.exchange (*pi++, release); + eai.exchange (*pi++, acq_rel); + eai.exchange (*pi++, seq_cst); +} + +/* The following tests fail because std::atomic_compare_exchange_weak_explicit + is not declared with attribute always_inline (like the member functions + above are). */ + +void test_compare_exchange (int *pi, int *pj) +{ +#define cmpxchg(x, y, z, o1, o2) \ + std::atomic_compare_exchange_weak_explicit (x, y, z, o1, o2) + + cmpxchg (&eai, pi++, *pj++, relaxed, relaxed); + cmpxchg (&eai, pi++, *pj++, relaxed, consume); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, acquire); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, release); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, acq_rel); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, seq_cst); // warning + cmpxchg (&eai, pi++, *pj++, relaxed, relaxed); + + /* HACK: xfail doesn't seem to work for the dg-regexp directives below, + so disable them by prepending an X to their names... + { Xdg-regexp " *inlined from \[^\n\r\]+.C:66:.*" "" { xfail *-*-* } 0 } + { Xdg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { xfail *-*-* } 0 } + { Xdg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { xfail *-*-* } 0 } + { Xdg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { xfail *-*-* } 0 } + { Xdg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { xfail *-*-* } 0 } + { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { xfail *-*-* } 0 } */ +} diff --git a/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C b/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C new file mode 100644 index 0000000..22e4039 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C @@ -0,0 +1,24 @@ +// PR c++/103480 +// { dg-do compile { target c++14 } } +// { dg-options "-Wuseless-cast" } + +template <typename T, int N> +struct A { typedef T t[N]; }; +template <typename T, int N> +struct B { typename A<T, N>::t b; }; +struct C { + constexpr C (C &&) {} + template <int N> + static auto bar () + { + B<C, N> r; + return r; // { dg-bogus "useless cast to type" } + } + C () = default; +}; + +void +foo () +{ + C::bar<2> (); +} diff --git a/gcc/testsuite/g++.dg/warn/pr83054.C b/gcc/testsuite/g++.dg/warn/pr83054.C index 506c960..5285f94 100644 --- a/gcc/testsuite/g++.dg/warn/pr83054.C +++ b/gcc/testsuite/g++.dg/warn/pr83054.C @@ -2,6 +2,13 @@ // { dg-options "-O3 -Wsuggest-final-types" } // { dg-do compile } +// A throwing dtor in C++98 mode changes the warning. +#if __cplusplus < 201100L +#define NOTHROW throw() +#else +#define NOTHROW noexcept +#endif + extern "C" int printf (const char *, ...); struct foo // { dg-warning "final would enable devirtualization of 5 calls" } { @@ -12,7 +19,7 @@ struct foo // { dg-warning "final would enable devirtualization of 5 calls" } x = count++; printf("this %d = %x\n", x, (void *)this); } - virtual ~foo () { + virtual ~foo () NOTHROW { printf("this %d = %x\n", x, (void *)this); --count; } diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C index 502c4f4..18eb88d 100644 --- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C +++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C @@ -1,5 +1,5 @@ // { dg-do run } -//Lifetime of temporaries: +//Lifetime of temporaries: //egcs 2.92 performs cleanup for temporaries inside new expressions //after the new is complete, not at the end of the full expression. @@ -71,8 +71,8 @@ void test1() func(new B(A(10).addr())); }catch(int){ } - CHECK(ctor_done==1); - CHECK(new_done==2); + CHECK(new_done==1); + CHECK(ctor_done==2); CHECK(func_done==3); CHECK(dtor_done==4); CHECK(delete_done==0); @@ -86,10 +86,10 @@ void test2() func(new B(A(10).addr())); }catch(int){ } - CHECK(ctor_done==1); - CHECK(new_done==2); + CHECK(new_done==1); + CHECK(ctor_done==0); CHECK(func_done==0); - CHECK(dtor_done==3); + CHECK(dtor_done==0); CHECK(delete_done==0); } @@ -101,11 +101,11 @@ void test3() func(new B(A(10).addr())); }catch(int){ } - CHECK(new_done==0); - CHECK(ctor_done==1); + CHECK(new_done==1); + CHECK(ctor_done==2); CHECK(func_done==0); CHECK(dtor_done==0); - CHECK(delete_done==0); + CHECK(delete_done==3); } int main() diff --git a/gcc/testsuite/g++.target/i386/pr100637-1b.C b/gcc/testsuite/g++.target/i386/pr100637-1b.C index 35b5df7..d602ac0 100644 --- a/gcc/testsuite/g++.target/i386/pr100637-1b.C +++ b/gcc/testsuite/g++.target/i386/pr100637-1b.C @@ -1,6 +1,6 @@ /* PR target/100637 */ /* { dg-do compile } */ -/* { dg-options "-O2 -msse2" } */ +/* { dg-options "-O2 -msse4" } */ typedef unsigned char __attribute__((__vector_size__ (4))) __v4qu; typedef char __attribute__((__vector_size__ (4))) __v4qi; diff --git a/gcc/testsuite/g++.target/i386/pr100637-1w.C b/gcc/testsuite/g++.target/i386/pr100637-1w.C index a3ed06f..c605645 100644 --- a/gcc/testsuite/g++.target/i386/pr100637-1w.C +++ b/gcc/testsuite/g++.target/i386/pr100637-1w.C @@ -1,6 +1,6 @@ /* PR target/100637 */ /* { dg-do compile } */ -/* { dg-options "-O2 -msse2" } */ +/* { dg-options "-O2 -msse4" } */ typedef unsigned short __attribute__((__vector_size__ (4))) __v2hu; typedef short __attribute__((__vector_size__ (4))) __v2hi; diff --git a/gcc/testsuite/g++.target/i386/pr102024.C b/gcc/testsuite/g++.target/i386/pr102024.C new file mode 100644 index 0000000..0fbc026 --- /dev/null +++ b/gcc/testsuite/g++.target/i386/pr102024.C @@ -0,0 +1,12 @@ +// PR target/102024 +// { dg-do compile } + +struct S { float a; int : 0; float b; }; +void foo (struct S x); + +void +bar (void) +{ + struct S s = { 0.0f, 0.0f }; + foo (s); // { dg-bogus "the ABI of passing C structures with zero-width bit-fields has changed in GCC 12.1" } +} diff --git a/gcc/testsuite/g++.target/i386/pr103750-fwprop-1.C b/gcc/testsuite/g++.target/i386/pr103750-fwprop-1.C new file mode 100644 index 0000000..26987d3 --- /dev/null +++ b/gcc/testsuite/g++.target/i386/pr103750-fwprop-1.C @@ -0,0 +1,26 @@ +/* PR target/103750. */ +/* { dg-do compile } */ +/* { dg-options "-O2 -std=c++1y -march=cannonlake -fdump-rtl-fwprop1" } */ +/* { dg-final { scan-rtl-dump-not "subreg:HI\[ \\\(\]*reg:SI\[^\n]*\n\[^\n]*UNSPEC_TZCNT" "fwprop1" } } */ + +#include<immintrin.h> +const char16_t *qustrchr(char16_t *n, char16_t *e, char16_t c) noexcept +{ + __m256i mch256 = _mm256_set1_epi16(c); + for ( ; n < e; n += 32) { + __m256i data1 = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(n)); + __m256i data2 = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(n) + 1); + __mmask16 mask1 = _mm256_cmpeq_epu16_mask(data1, mch256); + __mmask16 mask2 = _mm256_cmpeq_epu16_mask(data2, mch256); + if (_kortestz_mask16_u8(mask1, mask2)) + continue; + + unsigned idx = _tzcnt_u32(mask1); + if (mask1 == 0) { + idx = __tzcnt_u16(mask2); + n += 16; + } + return n + idx; + } + return e; +} diff --git a/gcc/testsuite/g++.target/i386/pr103861-1.C b/gcc/testsuite/g++.target/i386/pr103861-1.C new file mode 100644 index 0000000..940c939 --- /dev/null +++ b/gcc/testsuite/g++.target/i386/pr103861-1.C @@ -0,0 +1,17 @@ +/* PR target/103861 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse4" } */ + +typedef unsigned char __attribute__((__vector_size__ (2))) __v2qu; +typedef char __attribute__((__vector_size__ (2))) __v2qi; + +__v2qu au, bu; +__v2qi as, bs; + +__v2qu uu (__v2qu a, __v2qu b) { return (a > b) ? au : bu; } +__v2qu us (__v2qi a, __v2qi b) { return (a > b) ? au : bu; } +__v2qi su (__v2qu a, __v2qu b) { return (a > b) ? as : bs; } +__v2qi ss (__v2qi a, __v2qi b) { return (a > b) ? as : bs; } + +/* { dg-final { scan-assembler-times "pcmpeqb" 2 } } */ +/* { dg-final { scan-assembler-times "pcmpgtb" 2 } } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/aliasing-3.c b/gcc/testsuite/gcc.dg/analyzer/aliasing-3.c new file mode 100644 index 0000000..003077a --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/aliasing-3.c @@ -0,0 +1,75 @@ +#include "analyzer-decls.h" + +#define NULL ((void *)0) + +struct s1 +{ + int f1; +}; + +static struct s1 *p1_glob = NULL; + +void test_1 (struct s1 **pp1, struct s1 *p1_parm) +{ + struct s1 *init_p1_glob = p1_glob; + + __analyzer_eval (p1_glob == init_p1_glob); /* { dg-warning "TRUE" } */ + + if (!p1_glob) + return; + + __analyzer_eval (p1_glob == init_p1_glob); /* { dg-warning "TRUE" } */ + __analyzer_eval (p1_glob != NULL); /* { dg-warning "TRUE" } */ + + *pp1 = p1_parm; + + /* The write through *pp1 can't have changed p1_glob, because + we never take a pointer to p1_glob (and it's static to this TU). */ + __analyzer_eval (p1_glob == init_p1_glob); /* { dg-warning "TRUE" } */ + __analyzer_eval (p1_glob != NULL); /* { dg-warning "TRUE" } */ +} + +struct s2 +{ + int f1; +}; + +static struct s2 *p2_glob = NULL; + +void test_2 (struct s2 **pp2, struct s2 *p2_parm) +{ + /* Ensure that p2_glob is modified. */ + p2_glob = __builtin_malloc (sizeof (struct s2)); + if (!p2_glob) + return; + + __analyzer_eval (p2_glob != NULL); /* { dg-warning "TRUE" } */ + + *pp2 = p2_parm; + + /* The write through *pp2 can't have changed p2_glob, because + we never take a pointer to p2_glob (and it's static to this TU). */ + __analyzer_eval (p2_glob != NULL); /* { dg-warning "TRUE" } */ +} + +struct s3 +{ + int f1; +}; + +struct s3 *p3_glob = NULL; + +void test_3 (struct s3 **pp3, struct s3 *p3_parm) +{ + p3_glob = __builtin_malloc (sizeof (struct s3)); + if (!p3_glob) + return; + + __analyzer_eval (p3_glob != NULL); /* { dg-warning "TRUE" } */ + + *pp3 = p3_parm; + + /* The write through *pp3 could have changed p3_glob, because + another TU could take a pointer to p3_glob. */ + __analyzer_eval (p3_glob != NULL); /* { dg-warning "UNKNOWN" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h b/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h index e8745c0..d052579 100644 --- a/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h +++ b/gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h @@ -18,6 +18,9 @@ extern void __analyzer_dump (void); /* Emit a warning describing the size of the base region of (*ptr). */ extern void __analyzer_dump_capacity (const void *ptr); +/* Dump information about what decls have escaped at this point on the path. */ +extern void __analyzer_dump_escaped (void); + /* Dump information after analysis on all of the exploded nodes at this program point. diff --git a/gcc/testsuite/gcc.dg/analyzer/escaping-1.c b/gcc/testsuite/gcc.dg/analyzer/escaping-1.c new file mode 100644 index 0000000..2dfd02b --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/escaping-1.c @@ -0,0 +1,27 @@ +#include "analyzer-decls.h" + +#define NULL ((void *)0) + +extern void unknown_fn (void *); + +static int only_used_by_test_1; + +static void test_1 (void) +{ + int local_1, local_2; + __analyzer_dump_escaped (); /* { dg-warning "escaped: 0: " } */ + + unknown_fn (NULL); + __analyzer_dump_escaped (); /* { dg-warning "escaped: 0: " } */ + + unknown_fn (&local_1); + __analyzer_dump_escaped (); /* { dg-warning "escaped: 1: 'local_1'" } */ + + /* Should be idempotent. */ + unknown_fn (&local_1); + __analyzer_dump_escaped (); /* { dg-warning "escaped: 1: 'local_1'" } */ + + /* Escape a static global. */ + unknown_fn (&only_used_by_test_1); + __analyzer_dump_escaped (); /* { dg-warning "escaped: 2: 'local_1', 'only_used_by_test_1'" } */ +} diff --git a/gcc/testsuite/gcc.dg/analyzer/pr102692.c b/gcc/testsuite/gcc.dg/analyzer/pr102692.c new file mode 100644 index 0000000..c8993c8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr102692.c @@ -0,0 +1,110 @@ +/* { dg-additional-options "-O2 -Wno-analyzer-too-complex" } */ +/* TODO: remove the need for -Wno-analyzer-too-complex. */ + +struct lisp; +union vectorlike_header { long size; }; + +static struct lisp * +make_lisp_ptr (void *ptr, int type) +{ + char *p = ptr; + void *q = p + type; + return q; +} + +static _Bool +TAGGEDP (struct lisp *a, unsigned tag) +{ + return ! (((unsigned) (long) a - tag) & 7); +} + +static _Bool +VECTORLIKEP (struct lisp *x) +{ + return TAGGEDP (x, 5); +} + +extern _Bool +PSEUDOVECTOR_TYPEP (union vectorlike_header const *a, int code); + +static _Bool +PSEUDOVECTORP (struct lisp *a, int code) +{ + if (! VECTORLIKEP (a)) + return 0; + else + return PSEUDOVECTOR_TYPEP ((union vectorlike_header *) ((char *) a - 5), + code); +} + +struct Lisp_Overlay +{ + union vectorlike_header header; + struct lisp *end; + struct Lisp_Overlay *next; +}; + +static _Bool +OVERLAYP (struct lisp *x) +{ + return PSEUDOVECTORP (x, 4); +} + +static struct Lisp_Overlay * +XOVERLAY (struct lisp *a) +{ + void *r = (char *) a - 5; + return r; +} +struct buffer { struct Lisp_Overlay *overlays_before; }; + +long marker_position (struct lisp *); + +void +fix_overlays_before (struct buffer *bp, long prev, long pos) +{ + struct Lisp_Overlay *tail = bp->overlays_before, *parent = 0, *right_pair; + struct lisp *tem; + long end; + while (tail + && (tem = make_lisp_ptr (tail, 5), + (end = marker_position (XOVERLAY (tem)->end)) >= pos)) + { + parent = tail; + tail = tail->next; + } + if (!tail || end < prev || !tail->next) /* { dg-bogus "use of uninitialized value 'end'" "uninit" { xfail *-*-* } } */ + /* { dg-bogus "dereference of NULL 'tail'" "null deref" { target *-*-* } .-1 } */ + return; + right_pair = parent; + parent = tail; + tail = tail->next; + while (tail) + { + tem = make_lisp_ptr (tail, 5); + end = marker_position (XOVERLAY (tem)->end); + if (end == pos) + { + struct Lisp_Overlay *found = tail; + tail = found->next; + parent->next = tail; + if (!right_pair) + { + found->next = bp->overlays_before; + bp->overlays_before = found; + } + else + { + found->next = right_pair->next; + right_pair->next = found; + } + } + else if (end == prev) + { + parent = tail; + tail = tail->next; + } + else + break; + } +} diff --git a/gcc/testsuite/gcc.dg/atomic-invalid-2.c b/gcc/testsuite/gcc.dg/atomic-invalid-2.c index c73458e..220432c 100644 --- a/gcc/testsuite/gcc.dg/atomic-invalid-2.c +++ b/gcc/testsuite/gcc.dg/atomic-invalid-2.c @@ -38,13 +38,13 @@ exchange (atomic_int *i) { int r; - atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory" } */ - atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory" } */ - atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model cannot be stronger" } */ + atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory model 'memory_order_release'" } */ + atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } */ + atomic_compare_exchange_strong_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model 'memory_order_consume' cannot be stronger than success memory model 'memory_order_relaxed'" } */ - atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory" } */ - atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory" } */ - atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model cannot be stronger" } */ + atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_release); /* { dg-warning "invalid failure memory model 'memory_order_release'" } */ + atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_seq_cst, memory_order_acq_rel); /* { dg-warning "invalid failure memory model 'memory_order_acq_rel'" } */ + atomic_compare_exchange_weak_explicit (i, &r, 0, memory_order_relaxed, memory_order_consume); /* { dg-warning "failure memory model 'memory_order_consume' cannot be stronger than success memory model 'memory_order_relaxed'" } */ } /* atomic_flag_clear(): diff --git a/gcc/testsuite/gcc.dg/atomic-invalid.c b/gcc/testsuite/gcc.dg/atomic-invalid.c index f2adcdf..26da5b7 100644 --- a/gcc/testsuite/gcc.dg/atomic-invalid.c +++ b/gcc/testsuite/gcc.dg/atomic-invalid.c @@ -13,7 +13,7 @@ bool x; int main () { - __atomic_compare_exchange_n (&i, &e, 1, 0, __ATOMIC_RELAXED, __ATOMIC_SEQ_CST); /* { dg-warning "failure memory model cannot be stronger" } */ + __atomic_compare_exchange_n (&i, &e, 1, 0, __ATOMIC_RELAXED, __ATOMIC_SEQ_CST); /* { dg-warning "failure memory model 'memory_order_seq_cst' cannot be stronger" } */ __atomic_compare_exchange_n (&i, &e, 1, 0, __ATOMIC_SEQ_CST, __ATOMIC_RELEASE); /* { dg-warning "invalid failure memory" } */ __atomic_compare_exchange_n (&i, &e, 1, 1, __ATOMIC_SEQ_CST, __ATOMIC_ACQ_REL); /* { dg-warning "invalid failure memory" } */ diff --git a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c new file mode 100644 index 0000000..dd8dc99 --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c @@ -0,0 +1,514 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +typedef __SIZE_TYPE__ size_t; +#define abort __builtin_abort + +void * +__attribute__ ((alloc_size (1))) +__attribute__ ((__nothrow__ , __leaf__)) +__attribute__ ((noinline)) +alloc_func (size_t sz) +{ + return __builtin_malloc (sz); +} + +void * +__attribute__ ((alloc_size (1, 2))) +__attribute__ ((__nothrow__ , __leaf__)) +__attribute__ ((noinline)) +calloc_func (size_t cnt, size_t sz) +{ + return __builtin_calloc (cnt, sz); +} + +void * +__attribute__ ((noinline)) +unknown_allocator (size_t cnt, size_t sz) +{ + return __builtin_calloc (cnt, sz); +} + +size_t +__attribute__ ((noinline)) +test_unknown (size_t cnt, size_t sz) +{ + void *ch = unknown_allocator (cnt, sz); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +/* Malloc-like allocator. */ + +size_t +__attribute__ ((noinline)) +test_malloc (size_t sz) +{ + void *ch = alloc_func (sz); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc (size_t sz) +{ + void *ch = __builtin_malloc (sz); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_cond (int cond) +{ + void *ch = __builtin_malloc (cond ? 32 : 64); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_condphi (int cond) +{ + void *ch; + + if (cond) + ch = __builtin_malloc (32); + else + ch = __builtin_malloc (64); + + size_t ret = __builtin_dynamic_object_size (ch, 0); + + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_condphi2 (int cond, size_t in) +{ + void *ch; + + if (cond) + ch = __builtin_malloc (in); + else + ch = __builtin_malloc (64); + + size_t ret = __builtin_dynamic_object_size (ch, 0); + + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_condphi3 (int cond, size_t in, size_t in2) +{ + void *ch; + + if (cond) + ch = __builtin_malloc (in); + else + ch = __builtin_malloc (in2); + + size_t ret = __builtin_dynamic_object_size (ch, 0); + + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_condphi4 (size_t sz, int cond) +{ + char *a = __builtin_malloc (sz); + char b[sz / 2]; + + size_t ret = __builtin_dynamic_object_size (cond ? b : (void *) &a, 0); + __builtin_free (a); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_malloc_condphi5 (size_t sz, int cond, char *c) +{ + char *a = __builtin_malloc (sz); + + size_t ret = __builtin_dynamic_object_size (cond ? c : (void *) &a, 0); + __builtin_free (a); + return ret; +} + +/* Calloc-like allocator. */ + +size_t +__attribute__ ((noinline)) +test_calloc (size_t cnt, size_t sz) +{ + void *ch = calloc_func (cnt, sz); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_calloc (size_t cnt, size_t sz) +{ + void *ch = __builtin_calloc (cnt, sz); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_calloc_cond (int cond1, int cond2) +{ + void *ch = __builtin_calloc (cond1 ? 32 : 64, cond2 ? 1024 : 16); + size_t ret = __builtin_dynamic_object_size (ch, 0); + __builtin_free (ch); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_builtin_calloc_condphi (size_t cnt, size_t sz, int cond) +{ + struct + { + int a; + char b; + } bin[cnt]; + + char *ch = __builtin_calloc (cnt, sz); + size_t ret = __builtin_dynamic_object_size (cond ? ch : (void *) &bin, 0); + + __builtin_free (ch); + return ret; +} + +/* Passthrough functions. */ + +size_t +__attribute__ ((noinline)) +test_passthrough (size_t sz, char *in) +{ + char *bin = __builtin_malloc (sz); + char *dest = __builtin_memcpy (bin, in, sz); + + size_t ret = __builtin_dynamic_object_size (dest, 0); + __builtin_free (bin); + return ret; +} + +size_t +__attribute__ ((noinline)) +test_passthrough_nonssa (char *in) +{ + char bin[__builtin_strlen (in) + 1]; + char *dest = __builtin_memcpy (bin, in, __builtin_strlen (in) + 1); + + return __builtin_dynamic_object_size (dest, 0); +} + +/* Variable length arrays. */ +size_t +__attribute__ ((noinline)) +test_dynarray (size_t sz) +{ + char bin[sz]; + + return __builtin_dynamic_object_size (bin, 0); +} + +size_t +__attribute__ ((noinline)) +test_dynarray_cond (int cond) +{ + char bin[cond ? 8 : 16]; + + return __builtin_dynamic_object_size (bin, 0); +} + +size_t +__attribute__ ((noinline)) +test_deploop (size_t sz, size_t cond) +{ + char *bin = __builtin_alloca (32); + + for (size_t i = 0; i < sz; i++) + if (i == cond) + bin = __builtin_alloca (sz); + + return __builtin_dynamic_object_size (bin, 0); +} + +/* Address expressions. */ + +struct dynarray_struct +{ + long a; + char c[16]; + int b; +}; + +size_t +__attribute__ ((noinline)) +test_dynarray_struct (size_t sz, size_t off) +{ + struct dynarray_struct bin[sz]; + + return __builtin_dynamic_object_size (&bin[off].c, 0); +} + +size_t +__attribute__ ((noinline)) +test_dynarray_struct_subobj (size_t sz, size_t off) +{ + struct dynarray_struct bin[sz]; + + return __builtin_dynamic_object_size (&bin[off].c[4], 1); +} + +size_t +__attribute__ ((noinline)) +test_dynarray_struct_subobj2 (size_t sz, size_t off, size_t *objsz) +{ + struct dynarray_struct2 + { + long a; + int b; + char c[sz]; + }; + + struct dynarray_struct2 bin; + + *objsz = sizeof (bin); + + return __builtin_dynamic_object_size (&bin.c[off], 1); +} + +size_t +__attribute__ ((noinline)) +test_substring (size_t sz, size_t off) +{ + char str[sz]; + + return __builtin_dynamic_object_size (&str[off], 0); +} + +size_t +__attribute__ ((noinline)) +test_substring_ptrplus (size_t sz, size_t off) +{ + int str[sz]; + + return __builtin_dynamic_object_size (str + off, 0); +} + +size_t +__attribute__ ((noinline)) +test_substring_ptrplus2 (size_t sz, size_t off, size_t off2) +{ + int str[sz]; + int *ptr = &str[off]; + + return __builtin_dynamic_object_size (ptr + off2, 0); +} + +size_t +__attribute__ ((access (__read_write__, 1, 2))) +__attribute__ ((noinline)) +test_parmsz_simple (void *obj, size_t sz) +{ + return __builtin_dynamic_object_size (obj, 0); +} + +size_t +__attribute__ ((noinline)) +__attribute__ ((access (__read_write__, 1, 2))) +test_parmsz (void *obj, size_t sz, size_t off) +{ + return __builtin_dynamic_object_size (obj + off, 0); +} + +size_t +__attribute__ ((access (__read_write__, 1, 2))) +__attribute__ ((noinline)) +test_parmsz_scaled (int *obj, size_t sz) +{ + return __builtin_dynamic_object_size (obj, 0); +} + +size_t +__attribute__ ((noinline)) +__attribute__ ((access (__read_write__, 1, 2))) +test_parmsz_scaled_off (int *obj, size_t sz, size_t off) +{ + return __builtin_dynamic_object_size (obj + off, 0); +} + +size_t +__attribute__ ((access (__read_write__, 1, 3))) +__attribute__ ((noinline)) +test_parmsz_unknown (void *obj, void *unknown, size_t sz, int cond) +{ + return __builtin_dynamic_object_size (cond ? obj : unknown, 0); +} + +size_t +__attribute__ ((noinline)) +__attribute__ ((access (__read_write__, 1, 2))) +test_loop (int *obj, size_t sz, size_t start, size_t end, int incr) +{ + int *ptr = obj + start; + + for (int i = start; i != end; i = i + incr) + { + ptr = ptr + incr; + if (__builtin_dynamic_object_size (ptr, 0) == 0) + return 0; + } + + return __builtin_dynamic_object_size (ptr, 0); +} + +unsigned nfails = 0; + +#define FAIL() ({ \ + __builtin_printf ("Failure at line: %d\n", __LINE__); \ + nfails++; \ +}) + +int +main (int argc, char **argv) +{ + size_t outsz = test_unknown (32, 42); + if (outsz != -1 && outsz != 32) + FAIL (); + if (test_malloc (2048) != 2048) + FAIL (); + if (test_builtin_malloc (2048) != 2048) + FAIL (); + if (test_builtin_malloc_cond (1) != 32) + FAIL (); + if (test_builtin_malloc_cond (0) != 64) + FAIL (); + if (test_builtin_malloc_condphi (1) != 32) + FAIL (); + if (test_builtin_malloc_condphi (0) != 64) + FAIL (); + if (test_builtin_malloc_condphi2 (1, 128) != 128) + FAIL (); + if (test_builtin_malloc_condphi2 (0, 128) != 64) + FAIL (); + if (test_builtin_malloc_condphi3 (1, 128, 256) != 128) + FAIL (); + if (test_builtin_malloc_condphi3 (0, 128, 256) != 256) + FAIL (); + if (test_builtin_malloc_condphi4 (128, 1) != 64) + FAIL (); + if (test_builtin_malloc_condphi4 (128, 0) != sizeof (void *)) + FAIL (); + if (test_builtin_malloc_condphi5 (128, 0, argv[0]) != -1) + FAIL (); + if (test_calloc (2048, 4) != 2048 * 4) + FAIL (); + if (test_builtin_calloc (2048, 8) != 2048 * 8) + FAIL (); + if (test_builtin_calloc_cond (0, 0) != 64 * 16) + FAIL (); + if (test_builtin_calloc_cond (1, 1) != 32 * 1024) + FAIL (); + if (test_builtin_calloc_condphi (128, 1, 0) + != 128 * sizeof (struct { int a; char b; })) + FAIL (); + if (test_builtin_calloc_condphi (128, 1, 1) != 128) + FAIL (); + if (test_passthrough (__builtin_strlen (argv[0]) + 1, argv[0]) + != __builtin_strlen (argv[0]) + 1) + FAIL (); + if (test_passthrough_nonssa (argv[0]) != __builtin_strlen (argv[0]) + 1) + FAIL (); + if (test_dynarray (__builtin_strlen (argv[0])) != __builtin_strlen (argv[0])) + FAIL (); + if (test_dynarray_struct (42, 4) != + ((42 - 4) * sizeof (struct dynarray_struct) + - __builtin_offsetof (struct dynarray_struct, c))) + FAIL (); + if (test_dynarray_struct (42, 48) != 0) + FAIL (); + if (test_substring (128, 4) != 128 - 4) + FAIL (); + if (test_substring (128, 142) != 0) + FAIL (); + if (test_dynarray_struct_subobj (42, 4) != 16 - 4) + FAIL (); + if (test_dynarray_struct_subobj (42, 48) != 0) + FAIL (); + size_t objsz = 0; + if (test_dynarray_struct_subobj2 (42, 4, &objsz) + != objsz - 4 - sizeof (long) - sizeof (int)) + FAIL (); + if (test_substring_ptrplus (128, 4) != (128 - 4) * sizeof (int)) + FAIL (); + if (test_substring_ptrplus (128, 142) != 0) + FAIL (); + if (test_substring_ptrplus2 (128, 4, 4) != (128 - 8) * sizeof (int)) + FAIL (); + if (test_substring_ptrplus2 (128, 4, -3) != (128 - 1) * sizeof (int)) + FAIL (); + if (test_dynarray_cond (0) != 16) + FAIL (); + if (test_dynarray_cond (1) != 8) + FAIL (); + if (test_deploop (128, 4) != 128) + FAIL (); + if (test_deploop (128, 129) != 32) + FAIL (); + if (test_parmsz_simple (argv[0], __builtin_strlen (argv[0]) + 1) + != __builtin_strlen (argv[0]) + 1) + FAIL (); + int arr[42]; + if (test_parmsz_scaled (arr, 42) != sizeof (arr)) + FAIL (); + if (test_parmsz_unknown (argv[0], argv[0], __builtin_strlen (argv[0]) + 1, 0) + != -1) + if (test_parmsz (argv[0], __builtin_strlen (argv[0]) + 1, -1) != 0) + FAIL (); + if (test_parmsz (argv[0], __builtin_strlen (argv[0]) + 1, 0) + != __builtin_strlen (argv[0]) + 1) + FAIL (); + if (test_parmsz (argv[0], __builtin_strlen (argv[0]) + 1, + __builtin_strlen (argv[0])) != 1) + FAIL (); + if (test_parmsz (argv[0], __builtin_strlen (argv[0]) + 1, + __builtin_strlen (argv[0]) + 2) != 0) + FAIL (); + if (test_parmsz_scaled_off (arr, 42, 2) != 40 * sizeof (int)) + FAIL (); + if (test_loop (arr, 42, 0, 32, 1) != 10 * sizeof (int)) + FAIL (); + if (test_loop (arr, 42, 32, -1, -1) != 0) + FAIL (); + if (test_loop (arr, 42, 32, 10, -1) != 32 * sizeof (int)) + FAIL (); + if (test_loop (arr, 42, 42, 0, -1) != 42 * sizeof (int)) + FAIL (); + if (test_loop (arr, 42, 44, 0, -1) != 0) + FAIL (); + if (test_loop (arr, 42, 20, 52, 1) != 0) + FAIL (); + + if (nfails > 0) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c index bc880a5..3a2d982 100644 --- a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c +++ b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c @@ -5,5 +5,7 @@ #define __builtin_object_size __builtin_dynamic_object_size #include "builtin-object-size-10.c" +/* early_objsz should resolve __builtin_dynamic_object_size like + __builtin_object_size. */ /* { dg-final { scan-tree-dump "maximum object size 21" "early_objsz" } } */ /* { dg-final { scan-tree-dump "maximum subobject size 16" "early_objsz" } } */ diff --git a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5-main.c b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5-main.c new file mode 100644 index 0000000..49f459b --- /dev/null +++ b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5-main.c @@ -0,0 +1,32 @@ +#ifdef N +typedef __SIZE_TYPE__ size_t; + +char buf[N]; + +void test1 (size_t); +void test2 (size_t); +void test3 (size_t); +void test4 (size_t); +void test5 (size_t); +void test6 (size_t); +void test7 (size_t); + +int +main (void) +{ + test1 (42); + test2 (42); + test3 (42); + test4 (42); + test5 (42); + test6 (42); + test7 (42); + return 0; +} +#else +int +main (void) +{ + return 0; +} +#endif diff --git a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c index 698b03c..80b77dd 100644 --- a/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c +++ b/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c @@ -1,7 +1,6 @@ -/* { dg-do compile { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } */ -/* { dg-options "-O2" } */ +/* { dg-do run { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } */ +/* { dg-options "-O2 -DN=0x4000000" } */ +/* { dg-additional-sources "builtin-dynamic-object-size-5-main.c" } */ #define __builtin_object_size __builtin_dynamic_object_size #include "builtin-object-size-5.c" - -/* { dg-final { scan-assembler-not "abort" } } */ diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-1.c b/gcc/testsuite/gcc.dg/builtin-object-size-1.c index 0154f4e..161f426 100644 --- a/gcc/testsuite/gcc.dg/builtin-object-size-1.c +++ b/gcc/testsuite/gcc.dg/builtin-object-size-1.c @@ -42,9 +42,17 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (q, 0) != (size_t) -1) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) + != (x < 0 + ? sizeof (a) - __builtin_offsetof (struct A, a) - 9 + : sizeof (a) - __builtin_offsetof (struct A, c) - 1)) + abort (); +#else if (__builtin_object_size (r, 0) != sizeof (a) - __builtin_offsetof (struct A, a) - 9) abort (); +#endif if (x < 6) r = &w[2].a[1]; else @@ -58,37 +66,71 @@ test1 (void *q, int x) if (__builtin_object_size (&y.b, 0) != sizeof (a) - __builtin_offsetof (struct A, b)) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) + != (x < 6 + ? 2 * sizeof (w[0]) - __builtin_offsetof (struct A, a) - 1 + : sizeof (a) - __builtin_offsetof (struct A, a) - 6)) + abort (); +#else if (__builtin_object_size (r, 0) != 2 * sizeof (w[0]) - __builtin_offsetof (struct A, a) - 1) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 16); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) != (x < 20 ? 30 : 2 * 16)) + abort (); +#else /* We may duplicate this test onto the two exit paths. On one path the size will be 32, the other it will be 30. If we don't duplicate this test, then the size will be 32. */ if (__builtin_object_size (r, 0) != 2 * 16 && __builtin_object_size (r, 0) != 30) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 14); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) != (x < 20 ? 30 : 2 * 14)) + abort (); +#else if (__builtin_object_size (r, 0) != 30) abort (); +#endif if (x < 30) r = malloc (sizeof (a)); else r = &a.a[3]; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) != (x < 30 ? sizeof (a) : sizeof (a) - 3)) + abort (); +#else if (__builtin_object_size (r, 0) != sizeof (a)) abort (); +#endif r = memcpy (r, "a", 2); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) != (x < 30 ? sizeof (a) : sizeof (a) - 3)) + abort (); +#else if (__builtin_object_size (r, 0) != sizeof (a)) abort (); +#endif r = memcpy (r + 2, "b", 2) + 2; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) + != (x < 30 ? sizeof (a) - 4 : sizeof (a) - 7)) + abort (); +#else if (__builtin_object_size (r, 0) != sizeof (a) - 4) abort (); +#endif r = &a.a[4]; r = memset (r, 'a', 2); if (__builtin_object_size (r, 0) @@ -119,12 +161,21 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&extb[5], 0) != sizeof (extb) - 5) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (var, 0) != x + 10) + abort (); + if (__builtin_object_size (var + 10, 0) != x) + abort (); + if (__builtin_object_size (&var[5], 0) != x + 5) + abort (); +#else if (__builtin_object_size (var, 0) != (size_t) -1) abort (); if (__builtin_object_size (var + 10, 0) != (size_t) -1) abort (); if (__builtin_object_size (&var[5], 0) != (size_t) -1) abort (); +#endif if (__builtin_object_size (zerol, 0) != 0) abort (); if (__builtin_object_size (&zerol, 0) != 0) @@ -165,6 +216,7 @@ test2 (void) struct B { char buf1[10]; char buf2[10]; } a; char *r, buf3[20]; int i; + size_t res; if (sizeof (a) != 20) return; @@ -181,7 +233,24 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[9]; } - if (__builtin_object_size (r, 0) != 20) +#ifdef __builtin_object_size + res = sizeof (buf3); + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 1; + else if (i == l1) + res = sizeof (a) - __builtin_offsetof (struct B, buf2) - 7; + else if (i == l1 + 1) + res = sizeof (buf3) - 5; + else if (i == l1 + 2) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 9; + } +#else + res = 20; +#endif + if (__builtin_object_size (r, 0) != res) abort (); r = &buf3[20]; for (i = 0; i < 4; ++i) @@ -195,13 +264,45 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[9]; } - if (__builtin_object_size (r, 0) != 15) +#ifdef __builtin_object_size + res = sizeof (buf3) - 20; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 7; + else if (i == l1) + res = sizeof (a) - __builtin_offsetof (struct B, buf2) - 7; + else if (i == l1 + 1) + res = sizeof (buf3) - 5; + else if (i == l1 + 2) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 9; + } + if (__builtin_object_size (r, 0) != res) + abort (); +#else + res = 15; +#endif + if (__builtin_object_size (r, 0) != res) abort (); r += 8; +#ifdef __builtin_object_size + res -= 8; + if (__builtin_object_size (r, 0) != res) + abort (); + if (res >= 6) + { + if (__builtin_object_size (r + 6, 0) != res - 6) + abort (); + } + else if (__builtin_object_size (r + 6, 0) != 0) + abort (); +#else if (__builtin_object_size (r, 0) != 7) abort (); if (__builtin_object_size (r + 6, 0) != 1) abort (); +#endif r = &buf3[18]; for (i = 0; i < 4; ++i) { @@ -214,8 +315,31 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[4]; } +#ifdef __builtin_object_size + res = sizeof (buf3) - 18; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 9; + else if (i == l1) + res = sizeof (a) - __builtin_offsetof (struct B, buf2) - 9; + else if (i == l1 + 1) + res = sizeof (buf3) - 5; + else if (i == l1 + 2) + res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 4; + } + if (res >= 12) + { + if (__builtin_object_size (r + 12, 0) != res - 12) + abort (); + } + else if (__builtin_object_size (r + 12, 0) != 0) + abort (); +#else if (__builtin_object_size (r + 12, 0) != 4) abort (); +#endif } void @@ -358,6 +482,10 @@ test5 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 0) != sizeof (buf) - 8 - 4 * x) + abort (); +#else /* My understanding of ISO C99 6.5.6 is that a conforming program will not end up with p equal to &buf[0] through &buf[7], i.e. calling this function with say @@ -367,6 +495,7 @@ test5 (size_t x) it would be 64 (or conservative (size_t) -1 == unknown). */ if (__builtin_object_size (p, 0) != sizeof (buf) - 8) abort (); +#endif memset (p, ' ', sizeof (buf) - 8 - 4 * 4); } @@ -380,8 +509,13 @@ test6 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 0) != sizeof (t) - 8 - 4 * x) + abort (); +#else if (__builtin_object_size (p, 0) != sizeof (t) - 8) abort (); +#endif memset (p, ' ', sizeof (t) - 8 - 4 * 4); } @@ -436,21 +570,37 @@ test9 (unsigned cond) else p = &buf2[4]; +#ifdef __builtin_object_size + if (__builtin_object_size (&p[-4], 0) != (cond ? 6 : 10)) + abort (); +#else if (__builtin_object_size (&p[-4], 0) != 10) abort (); +#endif for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 0) != ((cond ? 2 : 6) + cond)) + abort (); +#else if (__builtin_object_size (p, 0) != 10) abort (); +#endif p = &y.c[8]; for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 0) + != sizeof (y) - __builtin_offsetof (struct A, c) - 8 + cond) + abort (); +#else if (__builtin_object_size (p, 0) != sizeof (y)) abort (); +#endif } int diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-2.c b/gcc/testsuite/gcc.dg/builtin-object-size-2.c index 5cf2929..2729538 100644 --- a/gcc/testsuite/gcc.dg/builtin-object-size-2.c +++ b/gcc/testsuite/gcc.dg/builtin-object-size-2.c @@ -43,8 +43,15 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (q, 1) != (size_t) -1) abort (); +#ifdef __builtin_object_size + if (x < 0 + ? __builtin_object_size (r, 1) != sizeof (a.a) - 9 + : __builtin_object_size (r, 1) != sizeof (a.c) - 1) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (a.c) - 1) abort (); +#endif if (x < 6) r = &w[2].a[1]; else @@ -55,36 +62,69 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&y.b, 1) != sizeof (a.b)) abort (); +#ifdef __builtin_object_size + if (x < 6 + ? __builtin_object_size (r, 1) != sizeof (a.a) - 1 + : __builtin_object_size (r, 1) != sizeof (a.a) - 6) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (a.a) - 1) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 16); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 1) != (x < 20 ? 30 : 2 * 16)) + abort (); +#else /* We may duplicate this test onto the two exit paths. On one path the size will be 32, the other it will be 30. If we don't duplicate this test, then the size will be 32. */ if (__builtin_object_size (r, 1) != 2 * 16 && __builtin_object_size (r, 1) != 30) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 14); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 1) != (x < 20 ? 30 : 2 * 14)) + abort (); +#else if (__builtin_object_size (r, 1) != 30) abort (); +#endif if (x < 30) r = malloc (sizeof (a)); else r = &a.a[3]; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 1) != (x < 30 ? sizeof (a) : sizeof (a) - 3)) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (a)) abort (); +#endif r = memcpy (r, "a", 2); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 1) != (x < 30 ? sizeof (a) : sizeof (a) - 3)) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (a)) abort (); +#endif r = memcpy (r + 2, "b", 2) + 2; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 0) + != (x < 30 ? sizeof (a) - 4 : sizeof (a) - 7)) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (a) - 4) abort (); +#endif r = &a.a[4]; r = memset (r, 'a', 2); if (__builtin_object_size (r, 1) != sizeof (a.a) - 4) @@ -123,6 +163,20 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&extc[5].c[3], 1) != (size_t) -1) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (var, 1) != x + 10) + abort (); + if (__builtin_object_size (var + 10, 1) != x) + abort (); + if (__builtin_object_size (&var[5], 1) != x + 5) + abort (); + if (__builtin_object_size (vara, 1) != (x + 10) * sizeof (struct A)) + abort (); + if (__builtin_object_size (vara + 10, 1) != x * sizeof (struct A)) + abort (); + if (__builtin_object_size (&vara[5], 1) != (x + 5) * sizeof (struct A)) + abort (); +#else if (__builtin_object_size (var, 1) != (size_t) -1) abort (); if (__builtin_object_size (var + 10, 1) != (size_t) -1) @@ -135,6 +189,7 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&vara[5], 1) != (size_t) -1) abort (); +#endif if (__builtin_object_size (&vara[0].a, 1) != sizeof (vara[0].a)) abort (); if (__builtin_object_size (&vara[10].a[0], 1) != sizeof (vara[0].a)) @@ -185,6 +240,9 @@ test2 (void) struct B { char buf1[10]; char buf2[10]; } a; char *r, buf3[20]; int i; +#ifdef __builtin_object_size + size_t dyn_res; +#endif if (sizeof (a) != 20) return; @@ -201,8 +259,26 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[9]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3); + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a.buf1) - 1; + else if (i == l1) + dyn_res = sizeof (a.buf2) - 7; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a.buf1) - 9; + } + if (__builtin_object_size (r, 1) != dyn_res) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (buf3)) abort (); +#endif r = &buf3[20]; for (i = 0; i < 4; ++i) { @@ -215,13 +291,50 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[9]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3) - 20; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a.buf1) - 7; + else if (i == l1) + dyn_res = sizeof (a.buf2) - 7; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a.buf1) - 9; + } + if (__builtin_object_size (r, 1) != dyn_res) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (buf3) - 5) abort (); +#endif r += 8; +#ifdef __builtin_object_size + if (dyn_res >= 8) + { + dyn_res -= 8; + if (__builtin_object_size (r, 1) != dyn_res) + abort (); + + if (dyn_res >= 6) + { + if (__builtin_object_size (r + 6, 1) != dyn_res - 6) + abort (); + } + else if (__builtin_object_size (r + 6, 1) != 0) + abort (); + } + else if (__builtin_object_size (r, 1) != 0) + abort (); +#else if (__builtin_object_size (r, 1) != sizeof (buf3) - 13) abort (); if (__builtin_object_size (r + 6, 1) != sizeof (buf3) - 19) abort (); +#endif } void @@ -339,8 +452,13 @@ test5 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 1) != sizeof (t.buf) - 8 - 4 * x) + abort (); +#else if (__builtin_object_size (p, 1) != sizeof (t.buf) - 8) abort (); +#endif memset (p, ' ', sizeof (t.buf) - 8 - 4 * 4); } @@ -394,21 +512,36 @@ test8 (unsigned cond) else p = &buf2[4]; +#ifdef __builtin_object_size + if (__builtin_object_size (&p[-4], 1) != (cond ? 6 : 10)) + abort (); +#else if (__builtin_object_size (&p[-4], 1) != 10) abort (); +#endif for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 1) != ((cond ? 2 : 6) + cond)) + abort (); +#else if (__builtin_object_size (p, 1) != 10) abort (); +#endif p = &y.c[8]; for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 1) != sizeof (y.c) - 8 + cond) + abort (); +#else if (__builtin_object_size (p, 1) != sizeof (y.c)) abort (); +#endif } int diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-3.c b/gcc/testsuite/gcc.dg/builtin-object-size-3.c index 3a692c4..db31171 100644 --- a/gcc/testsuite/gcc.dg/builtin-object-size-3.c +++ b/gcc/testsuite/gcc.dg/builtin-object-size-3.c @@ -42,9 +42,17 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (q, 2) != 0) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) + != (x < 0 + ? sizeof (a) - __builtin_offsetof (struct A, a) - 9 + : sizeof (a) - __builtin_offsetof (struct A, c) - 1)) + abort (); +#else if (__builtin_object_size (r, 2) != sizeof (a) - __builtin_offsetof (struct A, c) - 1) abort (); +#endif if (x < 6) r = &w[2].a[1]; else @@ -58,36 +66,71 @@ test1 (void *q, int x) if (__builtin_object_size (&y.b, 2) != sizeof (a) - __builtin_offsetof (struct A, b)) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) + != (x < 6 + ? 2 * sizeof (w[0]) - __builtin_offsetof (struct A, a) - 1 + : sizeof (a) - __builtin_offsetof (struct A, a) - 6)) + abort (); +#else if (__builtin_object_size (r, 2) != sizeof (a) - __builtin_offsetof (struct A, a) - 6) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 16); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) != (x < 20 ? 30 : 2 * 16)) + abort (); +#else if (__builtin_object_size (r, 2) != 30) abort (); +#endif if (x < 20) r = malloc (30); else r = calloc (2, 14); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) != (x < 20 ? 30 : 2 * 14)) + abort (); +#else if (__builtin_object_size (r, 2) != 2 * 14) abort (); +#endif if (x < 30) r = malloc (sizeof (a)); else r = &a.a[3]; +#ifdef __builtin_object_size + size_t objsz = (x < 30 ? sizeof (a) + : sizeof (a) - __builtin_offsetof (struct A, a) - 3); + if (__builtin_object_size (r, 2) != objsz) + abort (); +#else if (__builtin_object_size (r, 2) != sizeof (a) - __builtin_offsetof (struct A, a) - 3) abort (); +#endif r = memcpy (r, "a", 2); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) != objsz) + abort (); +#else if (__builtin_object_size (r, 2) != sizeof (a) - __builtin_offsetof (struct A, a) - 3) abort (); +#endif r = memcpy (r + 2, "b", 2) + 2; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 2) != objsz - 4) + abort (); +#else if (__builtin_object_size (r, 2) != sizeof (a) - __builtin_offsetof (struct A, a) - 3 - 4) abort (); +#endif r = &a.a[4]; r = memset (r, 'a', 2); if (__builtin_object_size (r, 2) @@ -118,12 +161,21 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&extb[5], 2) != sizeof (extb) - 5) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (var, 2) != x + 10) + abort (); + if (__builtin_object_size (var + 10, 2) != x) + abort (); + if (__builtin_object_size (&var[5], 2) != x + 5) + abort (); +#else if (__builtin_object_size (var, 2) != 0) abort (); if (__builtin_object_size (var + 10, 2) != 0) abort (); if (__builtin_object_size (&var[5], 2) != 0) abort (); +#endif if (__builtin_object_size (zerol, 2) != 0) abort (); if (__builtin_object_size (&zerol, 2) != 0) @@ -164,6 +216,9 @@ test2 (void) struct B { char buf1[10]; char buf2[10]; } a; char *r, buf3[20]; int i; +#ifdef __builtin_object_size + size_t dyn_res; +#endif if (sizeof (a) != 20) return; @@ -180,8 +235,26 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[9]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3); + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 1; + else if (i == l1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf2) - 7; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 9; + } + if (__builtin_object_size (r, 2) != dyn_res) + abort (); +#else if (__builtin_object_size (r, 2) != 3) abort (); +#endif r = &buf3[20]; for (i = 0; i < 4; ++i) { @@ -208,13 +281,44 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[4]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3) - 2; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 1; + else if (i == l1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 2; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 4; + } + if (__builtin_object_size (r, 2) != dyn_res) + abort (); +#else if (__builtin_object_size (r, 2) != 15) abort (); +#endif r += 8; +#ifdef __builtin_object_size + dyn_res -= 8; + if (__builtin_object_size (r, 2) != dyn_res) + abort (); + if (dyn_res >= 6) + { + if (__builtin_object_size (r + 6, 2) != dyn_res - 6) + abort (); + } + else if (__builtin_object_size (r + 6, 2) != 0) + abort (); +#else if (__builtin_object_size (r, 2) != 7) abort (); if (__builtin_object_size (r + 6, 2) != 1) abort (); +#endif r = &buf3[18]; for (i = 0; i < 4; ++i) { @@ -227,8 +331,31 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[4]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3) - 18; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 9; + else if (i == l1) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf2) - 9; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a) - __builtin_offsetof (struct B, buf1) - 4; + } + if (dyn_res >= 12) + { + if (__builtin_object_size (r + 12, 2) != dyn_res - 12) + abort (); + } + else if (__builtin_object_size (r + 12, 2) != 0) + abort (); +#else if (__builtin_object_size (r + 12, 2) != 0) abort (); +#endif } void @@ -371,7 +498,11 @@ test5 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 2) != sizeof (buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 2) != 0) +#endif abort (); memset (p, ' ', sizeof (buf) - 8 - 4 * 4); } @@ -386,7 +517,11 @@ test6 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 2) != sizeof (t) - 8 - 4 * x) +#else if (__builtin_object_size (p, 2) != 0) +#endif abort (); memset (p, ' ', sizeof (t) - 8 - 4 * 4); } @@ -442,22 +577,38 @@ test9 (unsigned cond) else p = &buf2[4]; +#ifdef __builtin_object_size + if (__builtin_object_size (&p[-4], 2) != (cond ? 6 : 10)) + abort (); +#else if (__builtin_object_size (&p[-4], 2) != 6) abort (); +#endif for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 2) != ((cond ? 2 : 6) + cond)) + abort (); +#else if (__builtin_object_size (p, 2) != 2) abort (); +#endif p = &y.c[8]; for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 2) + != sizeof (y) - __builtin_offsetof (struct A, c) - 8 + cond) + abort (); +#else if (__builtin_object_size (p, 2) != sizeof (y) - __builtin_offsetof (struct A, c) - 8) abort (); +#endif } int diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-4.c b/gcc/testsuite/gcc.dg/builtin-object-size-4.c index 8738162..f644890 100644 --- a/gcc/testsuite/gcc.dg/builtin-object-size-4.c +++ b/gcc/testsuite/gcc.dg/builtin-object-size-4.c @@ -43,7 +43,12 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (q, 3) != 0) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) + != (x < 0 ? sizeof (a.a) - 9 : sizeof (a.c) - 1)) +#else if (__builtin_object_size (r, 3) != sizeof (a.a) - 9) +#endif abort (); if (x < 6) r = &w[2].a[1]; @@ -55,31 +60,57 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&y.b, 3) != sizeof (a.b)) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) + != (x < 6 ? sizeof (w[2].a) - 1 : sizeof (a.a) - 6)) +#else if (__builtin_object_size (r, 3) != sizeof (a.a) - 6) +#endif abort (); if (x < 20) r = malloc (30); else r = calloc (2, 16); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) != (x < 20 ? 30 : 2 * 16)) +#else if (__builtin_object_size (r, 3) != 30) +#endif abort (); if (x < 20) r = malloc (30); else r = calloc (2, 14); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) != (x < 20 ? 30 : 2 * 14)) +#else if (__builtin_object_size (r, 3) != 2 * 14) +#endif abort (); if (x < 30) r = malloc (sizeof (a)); else r = &a.a[3]; +#ifdef __builtin_object_size + size_t objsz = x < 30 ? sizeof (a) : sizeof (a.a) - 3; + if (__builtin_object_size (r, 3) != objsz) +#else if (__builtin_object_size (r, 3) != sizeof (a.a) - 3) +#endif abort (); r = memcpy (r, "a", 2); +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) != objsz) +#else if (__builtin_object_size (r, 3) != sizeof (a.a) - 3) +#endif abort (); r = memcpy (r + 2, "b", 2) + 2; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) != objsz - 4) +#else if (__builtin_object_size (r, 3) != sizeof (a.a) - 3 - 4) +#endif abort (); r = &a.a[4]; r = memset (r, 'a', 2); @@ -119,6 +150,20 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&extc[5].c[3], 3) != 0) abort (); +#ifdef __builtin_object_size + if (__builtin_object_size (var, 3) != x + 10) + abort (); + if (__builtin_object_size (var + 10, 3) != x) + abort (); + if (__builtin_object_size (&var[5], 3) != x + 5) + abort (); + if (__builtin_object_size (vara, 3) != (x + 10) * sizeof (struct A)) + abort (); + if (__builtin_object_size (vara + 10, 3) != x * sizeof (struct A)) + abort (); + if (__builtin_object_size (&vara[5], 3) != (x + 5) * sizeof (struct A)) + abort (); +#else if (__builtin_object_size (var, 3) != 0) abort (); if (__builtin_object_size (var + 10, 3) != 0) @@ -131,6 +176,7 @@ test1 (void *q, int x) abort (); if (__builtin_object_size (&vara[5], 3) != 0) abort (); +#endif if (__builtin_object_size (&vara[0].a, 3) != sizeof (vara[0].a)) abort (); if (__builtin_object_size (&vara[10].a[0], 3) != sizeof (vara[0].a)) @@ -184,6 +230,9 @@ test2 (void) struct B { char buf1[10]; char buf2[10]; } a; char *r, buf3[20]; int i; +#ifdef __builtin_object_size + size_t dyn_res = 0; +#endif if (sizeof (a) != 20) return; @@ -228,13 +277,38 @@ test2 (void) else if (i == l1 + 2) r = &a.buf1[2]; } +#ifdef __builtin_object_size + dyn_res = sizeof (buf3) - 1; + + for (i = 0; i < 4; ++i) + { + if (i == l1 - 1) + dyn_res = sizeof (a.buf1) - 6; + else if (i == l1) + dyn_res = sizeof (a.buf2) - 4; + else if (i == l1 + 1) + dyn_res = sizeof (buf3) - 5; + else if (i == l1 + 2) + dyn_res = sizeof (a.buf1) - 2; + } + if (__builtin_object_size (r, 3) != dyn_res) + abort (); +#else if (__builtin_object_size (r, 3) != sizeof (a.buf1) - 6) abort (); +#endif r += 2; +#ifdef __builtin_object_size + if (__builtin_object_size (r, 3) != dyn_res - 2) + abort (); + if (__builtin_object_size (r + 1, 3) != dyn_res - 3) + abort (); +#else if (__builtin_object_size (r, 3) != sizeof (a.buf1) - 6 - 2) abort (); if (__builtin_object_size (r + 1, 3) != sizeof (a.buf1) - 6 - 3) abort (); +#endif } void @@ -352,7 +426,11 @@ test5 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 3) != sizeof (t.buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 3) != 0) +#endif abort (); memset (p, ' ', sizeof (t.buf) - 8 - 4 * 4); } @@ -407,21 +485,36 @@ test8 (unsigned cond) else p = &buf2[4]; +#ifdef __builtin_object_size + if (__builtin_object_size (&p[-4], 3) != (cond ? 6 : 10)) + abort (); +#else if (__builtin_object_size (&p[-4], 3) != 6) abort (); +#endif for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 3) != ((cond ? 2 : 6) + cond)) + abort (); +#else if (__builtin_object_size (p, 3) != 2) abort (); +#endif p = &y.c[8]; for (unsigned i = cond; i > 0; i--) p--; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 3) != sizeof (y.c) - 8 + cond) + abort (); +#else if (__builtin_object_size (p, 3) != sizeof (y.c) - 8) abort (); +#endif } int diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-5.c b/gcc/testsuite/gcc.dg/builtin-object-size-5.c index 8e63d9c..cb8f753 100644 --- a/gcc/testsuite/gcc.dg/builtin-object-size-5.c +++ b/gcc/testsuite/gcc.dg/builtin-object-size-5.c @@ -1,9 +1,13 @@ /* { dg-do compile { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } */ /* { dg-options "-O2" } */ +#ifndef N +# define N 0x40000000 +#endif + typedef __SIZE_TYPE__ size_t; extern void abort (void); -extern char buf[0x40000000]; +extern char buf[N]; void test1 (size_t x) @@ -13,7 +17,11 @@ test1 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 0) != sizeof (buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 0) != sizeof (buf) - 8) +#endif abort (); } @@ -25,7 +33,11 @@ test2 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 1) != sizeof (buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 1) != sizeof (buf) - 8) +#endif abort (); } @@ -37,7 +49,11 @@ test3 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 2) != sizeof (buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 2) != 0) +#endif abort (); } @@ -49,7 +65,11 @@ test4 (size_t x) for (i = 0; i < x; ++i) p = p + 4; +#ifdef __builtin_object_size + if (__builtin_object_size (p, 3) != sizeof (buf) - 8 - 4 * x) +#else if (__builtin_object_size (p, 3) != 0) +#endif abort (); } diff --git a/gcc/testsuite/gcc.dg/init-compare-1.c b/gcc/testsuite/gcc.dg/init-compare-1.c index 9208b66..6737c85 100644 --- a/gcc/testsuite/gcc.dg/init-compare-1.c +++ b/gcc/testsuite/gcc.dg/init-compare-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-additional-options "-fdelete-null-pointer-checks" } */ extern int a, b; int c = &a == &a; diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-1_0.c b/gcc/testsuite/gcc.dg/lto/pr102059-1_0.c new file mode 100644 index 0000000..e1004f5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-1_0.c @@ -0,0 +1,12 @@ +/* { dg-lto-do link } */ +/* { dg-skip-if "power10 and above only" { ! { power10_ok } } } */ +/* -Wno-attributes suppresses always_inline warnings. */ +/* { dg-lto-options { "-O2 -mdejagnu-cpu=power8 -flto -Wno-attributes -mno-power8-fusion" } } */ + +int __attribute__ ((always_inline)) +foo1 (int *b) +{ + *b += 100; + return *b; +} + diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-1_1.c b/gcc/testsuite/gcc.dg/lto/pr102059-1_1.c new file mode 100644 index 0000000..7e31fc7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-1_1.c @@ -0,0 +1,9 @@ +extern int foo1 (int *b); + +int __attribute__ ((always_inline)) foo2 (int *b) +{ + int res = foo1 (b); + *b += res; + return *b; +} + diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-1_2.c b/gcc/testsuite/gcc.dg/lto/pr102059-1_2.c new file mode 100644 index 0000000..bfa1e62 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-1_2.c @@ -0,0 +1,11 @@ +extern int foo2 (int *b); + +#pragma GCC target "cpu=power10" +__attribute__ ((always_inline)) +int +main (int *a) +{ + *a = foo2 (a); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-2_0.c b/gcc/testsuite/gcc.dg/lto/pr102059-2_0.c new file mode 100644 index 0000000..ebb0a7b --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-2_0.c @@ -0,0 +1,12 @@ +/* { dg-lto-do link } */ +/* { dg-skip-if "power10 and above only" { ! { power10_ok } } } */ +/* { dg-lto-options { "-O2 -mdejagnu-cpu=power8 -mno-power8-fusion -flto -fdump-ipa-inline" } } */ + +int +foo1 (int *b) +{ + *b += 100; + return *b; +} + +/* { dg-final { scan-wpa-ipa-dump-not "target specific option mismatch" "inline" } } */ diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-2_1.c b/gcc/testsuite/gcc.dg/lto/pr102059-2_1.c new file mode 100644 index 0000000..2e5570d --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-2_1.c @@ -0,0 +1,9 @@ +extern int foo1 (int *b); + +int foo2 (int *b) +{ + int res = foo1 (b); + *b += res; + return *b; +} + diff --git a/gcc/testsuite/gcc.dg/lto/pr102059-2_2.c b/gcc/testsuite/gcc.dg/lto/pr102059-2_2.c new file mode 100644 index 0000000..3195170 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr102059-2_2.c @@ -0,0 +1,10 @@ +extern int foo2 (int *b); + +#pragma GCC target "cpu=power10" +int +main (int *a) +{ + *a = foo2 (a); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/pr103961.c b/gcc/testsuite/gcc.dg/pr103961.c new file mode 100644 index 0000000..2cd5288 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr103961.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern void abort (); + +extern inline __attribute__ ((__gnu_inline__)) int +sprintf (char *restrict s, const char *restrict fmt, ...) +{ + return __builtin___sprintf_chk (s, 1, __builtin_object_size (s, 1), + fmt, __builtin_va_arg_pack ()); +} + +void +cap_to_text (int c) +{ + char buf[1572]; + char *p; + int n, t; + p = 20 + buf; + for (t = 8; t--; ) + { + for (n = 0; n < c; n++) + p += sprintf (p, "a,"); + p--; + if (__builtin_object_size (p, 1) == 0) + abort (); + } +} + +/* { dg-final { scan-assembler-not "abort" } } */ diff --git a/gcc/testsuite/gcc.dg/sso-6.c b/gcc/testsuite/gcc.dg/sso-6.c index e955fa9..5592532 100644 --- a/gcc/testsuite/gcc.dg/sso-6.c +++ b/gcc/testsuite/gcc.dg/sso-6.c @@ -3,7 +3,7 @@ /* { dg-do run } */ /* { dg-require-effective-target int32plus } */ -#pragma scalar_storage_order /* { dg-warning "missing .big-endian.little-endian.default." } */ +#pragma scalar_storage_order /* { dg-warning "missing .big-endian., .little-endian., or .default." } */ #pragma scalar_storage_order big-endian @@ -36,7 +36,7 @@ struct S5 int i; }; -#pragma scalar_storage_order other /* { dg-warning "expected .big-endian.little-endian.default." } */ +#pragma scalar_storage_order other /* { dg-warning "expected .big-endian., .little-endian., or .default." } */ struct S1 my_s1 = { 0x12345678 }; struct S2 my_s2 = { 0x12345678 }; diff --git a/gcc/testsuite/gcc.dg/torture/pr103816.c b/gcc/testsuite/gcc.dg/torture/pr103816.c new file mode 100644 index 0000000..769036a --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr103816.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-w" } */ + +extern struct { + unsigned char a; + unsigned char b; + unsigned char c; + unsigned char d; +} g[]; +void main() { g[0].b = (g[0].b & g[4].b) * g[2305843009213693952ULL].c; } diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr100359.c b/gcc/testsuite/gcc.dg/tree-ssa/pr100359.c new file mode 100644 index 0000000..2924352 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr100359.c @@ -0,0 +1,31 @@ +/* { dg-do link } */ +/* { dg-options "-O3 -fdump-tree-cunrolli-optimized" } */ + +extern void foo(void); +static int b, f, *a = &b; +int **c = &a; +static void d() { + int g, h; + for (f = 0; f < 1; f++) { + int *i = &b; + { + int *j[3], **k = &a; + for (g = 0; g < 3; g++) + for (h = 0; h < 1; h++) + j[g] = &b; + *k = j[0]; + } + *c = i; + } +} +int main() { + d(); + *a = 0; + if (**c) + foo(); + return 0; +} + +/* Verify that we unroll the inner loop early even with -O3. */ +/* { dg-final { scan-tree-dump "loop with 1 iterations completely unrolled" "cunrolli" } } */ +/* { dg-final { scan-tree-dump "loop with 3 iterations completely unrolled" "cunrolli" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr76174.c b/gcc/testsuite/gcc.dg/tree-ssa/pr76174.c new file mode 100644 index 0000000..17a4a0f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr76174.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-cddce1" } */ + +void foo(); + +void l(unsigned int r) { + unsigned int q = 0; + unsigned int c = r; + for (unsigned int x = 0; x<r; x++) { + if (q == c) { + foo(); + c *= 2; + } + q++; + } +} + +/* We should be able to elide the body of the function by means of + figuring out the equality between the two IVs and then simplifying + the q == c test. */ +/* { dg-final { scan-tree-dump-not "foo" "cddce1" } } */ +/* { dg-final { scan-tree-dump-times "bb" 1 "cddce1" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c b/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c index 641c91e..410b280 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fno-trapping-math -funsafe-math-optimizations -fdump-tree-recip" } */ -double F[2] = { 0.0, 0.0 }, e; +double F[5] = { 0.0, 0.0 }, e; /* In this case the optimization is interesting. */ float h () @@ -13,7 +13,7 @@ float h () d = 2.*e; E = 1. - d; - for( i=0; i < 2; i++ ) + for( i=0; i < 5; i++ ) if( d > 0.01 ) { P = ( W < E ) ? (W - E)/d : (E - W)/d; @@ -23,4 +23,4 @@ float h () F[0] += E / d; } -/* { dg-final { scan-tree-dump-times " / " 5 "recip" } } */ +/* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr103800.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr103800.c new file mode 100644 index 0000000..33c2d20 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr103800.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O3" } */ + +int a; +long b; +extern int c[], d[]; +extern _Bool e[]; +void f() { + if (a) + ; + for (;;) { + for (int g = 2; g; g = a) + d[g] = 0; + for (int h = 1; h < 13; h++) + e[h] = b ? (short)c[4 + h - 1] : c[4 + h - 1]; + } +} diff --git a/gcc/testsuite/gcc.dg/vect/pr103864.c b/gcc/testsuite/gcc.dg/vect/pr103864.c new file mode 100644 index 0000000..464d573 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr103864.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O3 -fno-tree-reassoc" } */ + +void +crash_me (short int *crash_me_result, int i, char crash_me_ptr_0) +{ + while (i < 1) + { + int j; + + for (j = 0; j < 2; ++j) + crash_me_result[j] += crash_me_ptr_0 + 1; + + i += 3; + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/asm-flag-7.c b/gcc/testsuite/gcc.target/aarch64/asm-flag-7.c new file mode 100644 index 0000000..6c31b85 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/asm-flag-7.c @@ -0,0 +1,22 @@ +/* Test that "=@cc*" works with MEM_P RTX */ +/* PR target/102941 */ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +#ifndef __GCC_ASM_FLAG_OUTPUTS__ +#error "missing preprocessor define" +#endif +int test_cmpu_x; + +void f(long *); +long +test_cmpu_y() { + long le; + f(&le); + __asm__("cmp %" + "[x], %" + "[y]" + : "=@ccls"(le) + : [x] ""(test_cmpu_x), [y] ""(test_cmpu_y)); + return le; +} diff --git a/gcc/testsuite/gcc.target/aarch64/auto-init-2.c b/gcc/testsuite/gcc.target/aarch64/auto-init-2.c index 2c54e6d..375befd 100644 --- a/gcc/testsuite/gcc.target/aarch64/auto-init-2.c +++ b/gcc/testsuite/gcc.target/aarch64/auto-init-2.c @@ -32,4 +32,4 @@ void foo() /* { dg-final { scan-rtl-dump-times "0xfe\\\]" 1 "expand" } } */ /* { dg-final { scan-rtl-dump-times "0xfffffffffffffefe" 1 "expand" } } */ /* { dg-final { scan-rtl-dump-times "0xfffffffffefefefe" 2 "expand" } } */ -/* { dg-final { scan-rtl-dump-times "0xfefefefefefefefe" 2 "expand" } } */ +/* { dg-final { scan-rtl-dump-times "0xfefefefefefefefe" 3 "expand" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/masked_epilogue.c b/gcc/testsuite/gcc.target/aarch64/masked_epilogue.c new file mode 100644 index 0000000..286a7be --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/masked_epilogue.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-details -march=armv8-a+sve -msve-vector-bits=scalable" } */ + +void f(unsigned char y[restrict], + unsigned char x[restrict], int n) { + for (int i = 0; i < n; ++i) + y[i] = (y[i] + x[i] + 1) >> 1; +} + +/* { dg-final { scan-tree-dump {LOOP EPILOGUE VECTORIZED \(MODE=VNx} "vect" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/reg-alloc-2.c b/gcc/testsuite/gcc.target/aarch64/reg-alloc-2.c new file mode 100644 index 0000000..d4d260c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/reg-alloc-2.c @@ -0,0 +1,47 @@ +/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */ + +#define PROB 0.1 + +struct L +{ + int data; + volatile struct L *next; + volatile struct L *inner; +}; + +/* The thing we're testing here is that the !head->inner path of the outer loop + body has no stack accesses. It's possible that we'll need to update this + pattern for unrelated code changes. but the test should be XFAILed rather + than changed if any new stack accesses occur on the !head->inner path. */ +/* +** foo: +** ... +** ldr (w[0-9]+), \[(x[0-9]+)\] +** add (w[0-9]+), (?:\3, \1|\1, \3) +** ldr (x[0-9]+), \[\2, #?16\] +** str \3, \[\2\] +** ldr \2, \[\2, #?8\] +** cbn?z \4, .* +** ... +** ret +*/ +void +foo (volatile struct L *head, int inc) +{ + while (head) + { + inc = head->data + inc; + volatile struct L *inner = head->inner; + head->data = inc; + head = head->next; + if (__builtin_expect_with_probability (inner != 0, 0, PROB)) + for (int i = 0; i < 1000; ++i) + /* Leave x30 for i. */ + asm volatile ("// foo" ::: + "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", + "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", + "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28"); + } +} diff --git a/gcc/testsuite/gcc.target/aarch64/reg-alloc-3.c b/gcc/testsuite/gcc.target/aarch64/reg-alloc-3.c new file mode 100644 index 0000000..7acdc43 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/reg-alloc-3.c @@ -0,0 +1,65 @@ +/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */ + +#define PROB 0.1 + +struct L +{ + int data; + volatile struct L *next; + volatile struct L *inner; +}; + +void ext(); + +/* The thing we're testing here is that the !head->inner path of the outer loop + body has no stack accesses. It's possible that we'll need to update this + pattern for unrelated code changes. but the test should be XFAILed rather + than changed if any new stack accesses creep into the !head->inner path. */ +/* +** foo: +** ... +** ldr (w[0-9]+), \[(x[0-9]+)\] +** add (w[0-9]+), (?:\3, \1|\1, \3) +** ldr (x[0-9]+), \[\2, #?16\] +** str \3, \[\2\] +** ldr \2, \[\2, #?8\] +** cbn?z \4, .* +** ... +** ret +*/ +void +foo (volatile struct L *head, int inc, double *ptr) +{ + double d = *ptr; + while (head) + { + /* Clobber all call-preserved GPRs, so that the loop has to use + call-clobbered GPRs if it is to avoid spilling. */ + asm volatile ("" ::: + "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28"); + inc = head->data + inc; + volatile struct L *inner = head->inner; + head->data = inc; + head = head->next; + if (__builtin_expect_with_probability (inner != 0, 0, PROB)) + for (int i = 0; i < 1000; ++i) + { + ext (); + /* Hack to create high register pressure, so that IRA doesn't + collapse this loop into the parent loop. */ + d += 1; + asm volatile ("// foo" ::: + "d0", "d1", "d2", "d3", + "d4", "d5", "d6", "d7", + "d8", "d9", "d10", "d11", + "d12", "d13", "d14", "d15", + "d16", "d17", "d18", "d19", + "d20", "d21", "d22", "d23", + "d24", "d25", "d26", "d27", + "d28", "d29", "d30", "d31"); + } + } + *ptr = d; +} diff --git a/gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c b/gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c new file mode 100644 index 0000000..ceb6f50 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c @@ -0,0 +1,69 @@ +/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */ + +#define PROB 0.1 + +struct L +{ + int data; + volatile struct L *next; + volatile struct L *inner; +}; + +/* The thing we're testing here is that the !head->inner path of the outer loop + body has no stack accesses. It's possible that we'll need to update this + pattern for unrelated code changes. but the test should be XFAILed rather + than changed if any new stack accesses occur on the !head->inner path. */ +/* +** foo: +** ... +** ldr (w[0-9]+), \[(x[0-9]+)\] +** add (w[0-9]+), (?:\3, \1|\1, \3) +** ldr (x[0-9]+), \[\2, #?16\] +** str \3, \[\2\] +** ldr \2, \[\2, #?8\] +** cbn?z \4, .* +** ... +** ret +*/ +void +foo (volatile struct L *head, int inc) +{ + while (head) + { + /* Clobber all call-preserved GPRs, so that the loop has to use + call-clobbered GPRs if it is to avoid spilling. */ + asm volatile ("" ::: + "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28"); + inc = head->data + inc; + volatile struct L *inner = head->inner; + head->data = inc; + head = head->next; + if (__builtin_expect_with_probability (inner != 0, 0, PROB)) + for (int i = 0; i < 1000; ++i) + asm volatile ("" :: /* example allocation: */ + "r" (i), /* x0 */ + "r" (inner), /* x1 */ + "r" (inner->next), /* x2 */ + "r" (inner->next), /* x3 */ + "r" (inner->next), /* x4 */ + "r" (inner->next), /* x5 */ + "r" (inner->next), /* x6 */ + "r" (inner->next), /* x7 */ + "r" (inner->next), /* x8 */ + "r" (inner->next), /* x9 */ + "r" (inner->next), /* x10 */ + "r" (inner->next), /* x11 */ + "r" (inner->next), /* x12 */ + "r" (inner->next), /* x13 */ + "r" (inner->next), /* x14 */ + "r" (inner->next), /* x15 */ + "r" (inner->next), /* x16 */ + "r" (inner->next), /* x17 */ + "r" (inner->next), /* x18 */ + "r" (inner->next) : /* x30 */ + "x19", "x20", "x21", "x22", "x23", + "x24", "x25", "x26", "x27", "x28"); + } +} diff --git a/gcc/testsuite/gcc.target/arm/asm-flag-7.c b/gcc/testsuite/gcc.target/arm/asm-flag-7.c new file mode 100644 index 0000000..ac11da0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/asm-flag-7.c @@ -0,0 +1,23 @@ +/* Test that "=@cc*" works with MEM_P RTX */ +/* PR target/102941 */ +/* { dg-do compile } */ +/* { dg-options "-O" } */ +/* { dg-skip-if "" { arm_thumb1 } } */ + +#ifndef __GCC_ASM_FLAG_OUTPUTS__ +#error "missing preprocessor define" +#endif +int test_cmpu_x; + +void f(long *); +long +test_cmpu_y() { + long le; + f(&le); + __asm__("cmp %" + "[x], %" + "[y]" + : "=@ccls"(le) + : [x] ""(test_cmpu_x), [y] ""(test_cmpu_y)); + return le; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequb-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequb-1.c index 31a0afc..9a85753 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequb-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequb-1.c @@ -1,11 +1,11 @@ /* { dg-do compile } */ /* { dg-options "-mavx512bw -mavx512vl -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequw-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequw-1.c index da5c401..a6c7776 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequw-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpequw-1.c @@ -1,11 +1,11 @@ /* { dg-do compile } */ /* { dg-options "-mavx512bw -mavx512vl -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c index 120fe8f..6d8a442 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -mavx512bw -mavx512vl" } */ -/* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c index f17c73b..c0d84de 100644 --- a/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c @@ -5,7 +5,7 @@ /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuw|vpcmpeqw)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c index c02f2b1..3c567c6 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-mavx512f -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c index 1a443d6..f3f35ec 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-mavx512f -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c index 331f95c..be0a8fe 100644 --- a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -mavx512f" } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c index 7c87035..a0bee11 100644 --- a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c @@ -1,9 +1,9 @@ /* { dg-do compile } */ /* { dg-options "-mavx512vl -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c index 4d672a5..c925d32 100644 --- a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c @@ -1,9 +1,9 @@ /* { dg-do compile } */ /* { dg-options "-mavx512vl -O2" } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c index a5491c9..f93fca2 100644 --- a/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c +++ b/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c @@ -2,7 +2,7 @@ /* { dg-options "-O2 -mavx512vl" } */ /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/harden-sls-6.c b/gcc/testsuite/gcc.target/i386/harden-sls-6.c new file mode 100644 index 0000000..9068eb6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/harden-sls-6.c @@ -0,0 +1,18 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -fcf-protection -mharden-sls=indirect-jmp" } */ + +struct _Unwind_Context _Unwind_Resume_or_Rethrow_this_context; + +void offset (int); + +struct _Unwind_Context { + void *reg[7]; +} _Unwind_Resume_or_Rethrow() { + struct _Unwind_Context cur_contextcur_context = + _Unwind_Resume_or_Rethrow_this_context; + offset(0); + __builtin_eh_return ((long) offset, 0); +} + +/* { dg-final { scan-assembler "jmp\[ \t\]+\\*%rcx" } } */ +/* { dg-final { scan-assembler-times "int3" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/mult-highpart.c b/gcc/testsuite/gcc.target/i386/mult-highpart.c new file mode 100644 index 0000000..efde311 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/mult-highpart.c @@ -0,0 +1,167 @@ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2 -Wno-long-long -fdump-tree-optimized" } */ + +typedef unsigned int __attribute ((mode(TI))) uti_t; +typedef int __attribute ((mode(TI))) ti_t; + +long long stest1(long long x, long long y) +{ + return ((ti_t)x * (ti_t)y) >> 64; +} + +long long stest2(long long x) +{ + return ((ti_t)x * 19065) >> 64; +} + +long long stest3(long long x, long long y) +{ + return (uti_t)((ti_t)x * (ti_t)y) >> 64; +} + +long long stest4(long long x) +{ + return (uti_t)((ti_t)x * 19065) >> 64; +} + +ti_t stest5(long long x, long long y) +{ + return ((ti_t)x * (ti_t)y) >> 64; +} + +ti_t stest6(long long x) +{ + return ((ti_t)x * 19065) >> 64; +} + +uti_t stest7(long long x, long long y) +{ + return (uti_t)((ti_t)x * (ti_t)y) >>64; +} + +uti_t stest8(long long x) +{ + return (uti_t)((ti_t)x * 19065) >> 64; +} + +long long stest9(long long x, long long y) +{ + return ((ti_t)x * (ti_t)y) >> 72; +} + +long long stest10(long long x) +{ + return ((ti_t)x * 19065) >> 72; +} + +long long stest11(long long x, long long y) +{ + return (uti_t)((ti_t)x * (ti_t)y) >> 72; +} + +long long stest12(long long x) +{ + return (uti_t)((ti_t)x * 19065) >> 72; +} + +ti_t stest13(long long x, long long y) +{ + return ((ti_t)x * (ti_t)y) >> 72; +} + +ti_t stest14(long long x) +{ + return ((ti_t)x * 19065) >> 72; +} + +uti_t stest15(long long x, long long y) +{ + return (uti_t)((ti_t)x * (ti_t)y) >> 72; +} + +uti_t stest16(long long x) +{ + return (uti_t)((ti_t)x * 19065) >> 72; +} + +unsigned long long utest1(unsigned long long x, unsigned long long y) +{ + return ((uti_t)x * (uti_t)y) >> 64; +} + +unsigned long long utest2(unsigned long long x) +{ + return ((uti_t)x * 19065) >> 64; +} + +unsigned long long utest3(unsigned long long x, unsigned long long y) +{ + return (ti_t)((uti_t)x * (uti_t)y) >> 64; +} + +unsigned long long utest4(unsigned long long x) +{ + return (ti_t)((uti_t)x * 19065) >> 64; +} + +uti_t utest5(unsigned long long x, unsigned long long y) +{ + return ((uti_t)x * (uti_t)y) >> 64; +} + +uti_t utest6(unsigned long long x) +{ + return ((uti_t)x * 19065) >> 64; +} + +ti_t utest7(unsigned long long x, unsigned long long y) +{ + return (ti_t)((uti_t)x * (uti_t)y) >>64; +} + +ti_t utest8(long long x) +{ + return (uti_t)((ti_t)x * 19065) >> 64; +} + +unsigned long long utest9(unsigned long long x, unsigned long long y) +{ + return ((uti_t)x * (uti_t)y) >> 72; +} + +unsigned long long utest10(unsigned long long x) +{ + return ((uti_t)x * 19065) >> 72; +} + +unsigned long long utest11(unsigned long long x, unsigned long long y) +{ + return (ti_t)((uti_t)x * (uti_t)y) >> 72; +} + +unsigned long long utest12(unsigned long long x) +{ + return (ti_t)((uti_t)x * 19065) >> 72; +} + +uti_t utest13(unsigned long long x, unsigned long long y) +{ + return ((uti_t)x * (uti_t)y) >> 72; +} + +uti_t utest14(unsigned long long x) +{ + return ((uti_t)x * 19065) >> 72; +} + +ti_t utest15(unsigned long long x, unsigned long long y) +{ + return (ti_t)((uti_t)x * (uti_t)y) >> 72; +} + +ti_t utest16(unsigned long long x) +{ + return (ti_t)((uti_t)x * 19065) >> 72; +} + +/* { dg-final { scan-tree-dump-times " h\\* " 32 "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr100637-4b.c b/gcc/testsuite/gcc.target/i386/pr100637-4b.c index 198e3dd..add4506 100644 --- a/gcc/testsuite/gcc.target/i386/pr100637-4b.c +++ b/gcc/testsuite/gcc.target/i386/pr100637-4b.c @@ -1,6 +1,6 @@ /* PR target/100637 */ /* { dg-do compile } */ -/* { dg-options "-O2 -ftree-vectorize -msse2" } */ +/* { dg-options "-O2 -ftree-vectorize -msse4" } */ typedef char T; diff --git a/gcc/testsuite/gcc.target/i386/pr102024.c b/gcc/testsuite/gcc.target/i386/pr102024.c new file mode 100644 index 0000000..703195b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr102024.c @@ -0,0 +1,12 @@ +/* PR target/102024 */ +/* { dg-do compile } */ + +struct S { float a; int : 0; float b; }; +void foo (struct S x); + +void +bar (void) +{ + struct S s = { 0.0f, 0.0f }; + foo (s); /* { dg-message "the ABI of passing C structures with zero-width bit-fields has changed in GCC 12.1" "" { target { ! ia32 } } } */ +} diff --git a/gcc/testsuite/gcc.target/i386/pr102811-2.c b/gcc/testsuite/gcc.target/i386/pr102811-2.c index e511c66..97bc9b1 100644 --- a/gcc/testsuite/gcc.target/i386/pr102811-2.c +++ b/gcc/testsuite/gcc.target/i386/pr102811-2.c @@ -1,7 +1,6 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-O2 -mf16c -mno-avx512fp16" } */ -/* { dg-final { scan-assembler-times "pextrw" 1 } } */ -/* { dg-final { scan-assembler-times "pinsrw" 1 } } */ +/* { dg-final { scan-assembler-times "vmovd" 2 } } */ /* { dg-final { scan-assembler-not "\\\(%rsp\\\)"} } */ short test (_Float16 a) { diff --git a/gcc/testsuite/gcc.target/i386/pr103753.c b/gcc/testsuite/gcc.target/i386/pr103753.c new file mode 100644 index 0000000..4b2b3e4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103753.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx2 -mno-avx512f -O2" } */ +/* { dg-final { scan-assembler-not "vpbroadcastw" } } */ + +typedef _Float16 __v16hf __attribute__ ((__vector_size__ (32))); + +__v16hf foo (_Float16 x) +{ + return (__v16hf) { x, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; +} + +typedef short __v16hi __attribute__ ((__vector_size__ (32))); + +__v16hi bar (short x) +{ + return (__v16hi) { x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +} diff --git a/gcc/testsuite/gcc.target/i386/pr103774.c b/gcc/testsuite/gcc.target/i386/pr103774.c new file mode 100644 index 0000000..0dafb1b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103774.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-march=cannonlake -O2" } */ +/* { dg-final { scan-assembler-not {(?n)vmovdq} } } */ +/* There should be no load + vpcmp, just vpcmp with memory operand. */ + +#include<immintrin.h> +__mmask16 +foo (__m256i* n, __m256i mch256) +{ + __m256i data1 = _mm256_loadu_si256(n); + __m256i data2 = _mm256_loadu_si256(n+1); + __mmask16 mask1 = _mm256_cmpeq_epu16_mask(data1, mch256); + __mmask16 mask2 = _mm256_cmpeq_epu16_mask(data2, mch256); + return mask1 + mask2; +} + +__mmask16 +foo1 (__m256i* n, __m256i mch256) +{ + __m256i data1 = _mm256_loadu_si256(n); + __m256i data2 = _mm256_loadu_si256(n+1); + __mmask16 mask1 = _mm256_cmpeq_epu16_mask(mch256, data1); + __mmask16 mask2 = _mm256_cmpeq_epu16_mask(mch256, data2); + return mask1 + mask2; +} diff --git a/gcc/testsuite/gcc.target/i386/pr103861-2.c b/gcc/testsuite/gcc.target/i386/pr103861-2.c new file mode 100644 index 0000000..471f50c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103861-2.c @@ -0,0 +1,21 @@ +/* PR target/103861 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2" } */ + +typedef char vec __attribute__((vector_size(2))); + +vec lt (vec a, vec b) { return a < b; } +vec le (vec a, vec b) { return a <= b; } +vec eq (vec a, vec b) { return a == b; } +vec ne (vec a, vec b) { return a != b; } +vec ge (vec a, vec b) { return a >= b; } +vec gt (vec a, vec b) { return a > b; } + +typedef unsigned char uvec __attribute__((vector_size(2))); + +vec ltu (uvec a, uvec b) { return a < b; } +vec leu (uvec a, uvec b) { return a <= b; } +vec geu (uvec a, uvec b) { return a >= b; } +vec gtu (uvec a, uvec b) { return a > b; } + +/* { dg-final { scan-assembler-not "cmpb" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr103861-3.c b/gcc/testsuite/gcc.target/i386/pr103861-3.c new file mode 100644 index 0000000..e5099ea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103861-3.c @@ -0,0 +1,66 @@ +/* PR target/103861 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-vectorize -msse4" } */ + +char r[2], a[2], b[2]; +unsigned char ur[2], ua[2], ub[2]; + +void maxs (void) +{ + int i; + + for (i = 0; i < 2; i++) + r[i] = a[i] > b[i] ? a[i] : b[i]; +} + +/* { dg-final { scan-assembler "pmaxsb" } } */ + +void maxu (void) +{ + int i; + + for (i = 0; i < 2; i++) + ur[i] = ua[i] > ub[i] ? ua[i] : ub[i]; +} + +/* { dg-final { scan-assembler "pmaxub" } } */ + +void mins (void) +{ + int i; + + for (i = 0; i < 2; i++) + r[i] = a[i] < b[i] ? a[i] : b[i]; +} + +/* { dg-final { scan-assembler "pminsb" } } */ + +void minu (void) +{ + int i; + + for (i = 0; i < 2; i++) + ur[i] = ua[i] < ub[i] ? ua[i] : ub[i]; +} + +/* { dg-final { scan-assembler "pminub" } } */ + +void _abs (void) +{ + int i; + + for (i = 0; i < 2; i++) + r[i] = a[i] < 0 ? -a[i] : a[i]; +} + +/* { dg-final { scan-assembler "pabsb" } } */ + +void avgu (void) +{ + int i; + + for (i = 0; i < 2; i++) + ur[i] = (ua[i] + ub[i] + 1) >> 1; +} + +/* { dg-final { scan-assembler "pavgb" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr103861-4.c b/gcc/testsuite/gcc.target/i386/pr103861-4.c new file mode 100644 index 0000000..54c1859 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103861-4.c @@ -0,0 +1,19 @@ +/* PR target/100637 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-vectorize -msse4" } */ + +typedef char T; + +#define M 2 + +extern T a[M], b[M], s1[M], s2[M], r[M]; + +void foo (void) +{ + int j; + + for (j = 0; j < M; j++) + r[j] = (a[j] < b[j]) ? s1[j] : s2[j]; +} + +/* { dg-final { scan-assembler "pcmpgtb" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr103894.c b/gcc/testsuite/gcc.target/i386/pr103894.c new file mode 100644 index 0000000..69c81046 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103894.c @@ -0,0 +1,13 @@ +/* PR target/103894 */ +/* { dg-do compile } */ +/* { dg-options "-msse -mno-sse2" } */ + +typedef unsigned char __attribute__((__vector_size__ (32))) V; +typedef unsigned char __attribute__((__vector_size__ (2))) W; + +V v; + +W foo (W w) +{ + return __builtin_shufflevector (v, w, 3, 4); +} diff --git a/gcc/testsuite/gcc.target/i386/pr103895.c b/gcc/testsuite/gcc.target/i386/pr103895.c new file mode 100644 index 0000000..e1de4ef --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103895.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-Og -ffloat-store -msse2" } */ + +#include <emmintrin.h> +typedef float vFloat __attribute__((__vector_size__(16))); +float bar_dr; +vFloat bar_f1; +void bar() { + static vFloat m0; + vFloat fa1 = _mm_andnot_ps(m0, bar_f1); + __attribute__((__vector_size__(2 * sizeof(double)))) double v3 = + _mm_cvtps_pd(fa1); + vFloat r1 = _mm_cvtpd_ps(v3); + _mm_storeu_ps(&bar_dr, r1); +} + diff --git a/gcc/testsuite/gcc.target/i386/pr103900.c b/gcc/testsuite/gcc.target/i386/pr103900.c new file mode 100644 index 0000000..8793b49 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103900.c @@ -0,0 +1,25 @@ +/* PR target/103900 */ +/* { dg-do compile } */ +/* { dg-options "-O -fno-tree-dce -fno-tree-dse" } */ + +typedef unsigned char __attribute__((__vector_size__(2))) T; +typedef unsigned char __attribute__((__vector_size__(32))) U; +typedef int __attribute__((__vector_size__(64))) V; +typedef int __attribute__((__vector_size__(32))) W; +T foo0_v128u8_0; +U foo0_v256u8_0; +T foo0_v16u16_0; +int foo0_v128u64_0, foo0_v512u64_0; + +void +foo0() { + V v512u128_0; + T v16u8_0; + foo0_v128u64_0 += (short)v16u8_0; + T v16u8_1 = ~__builtin_shufflevector(foo0_v128u8_0, foo0_v256u8_0, 0, 5); + W v256u128_1; + V v512u8_r = + foo0_v512u64_0 + v512u128_0; + (union {U b;}){}.b + (U)v256u128_1; + T v16u8_r = v16u8_0 + v16u8_1 + foo0_v16u16_0; +} diff --git a/gcc/testsuite/gcc.target/i386/pr103905.c b/gcc/testsuite/gcc.target/i386/pr103905.c new file mode 100644 index 0000000..aef9c4d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103905.c @@ -0,0 +1,25 @@ +/* PR target/103905 */ +/* { dg-do run } */ +/* { dg-require-effective-target xop } */ +/* { dg-options "-O3 -mxop" } */ + +#include "xop-check.h" + +char perm[64]; + +void +__attribute__((noipa)) +foo (int n) +{ + for (int i = 0; i < n; ++i) + perm[i] = i; +} + +static void +xop_test (void) +{ + foo (8); + + if (perm[7] != 7) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/pr103908.c b/gcc/testsuite/gcc.target/i386/pr103908.c new file mode 100644 index 0000000..7c57e1d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103908.c @@ -0,0 +1,24 @@ +/* PR rtl-optimization/103908 */ +/* { dg-do compile } */ +/* { dg-options "-O1 -fdisable-tree-cselim -fno-tree-sink" } */ +/* { dg-final { scan-assembler "# insn 1" } } */ +/* { dg-final { scan-assembler "# insn 2" } } */ + +int a, b; + +void +foo (void) +{ + if (a) + { + b = 1; + asm goto ("# insn 1" : : : : lab1); + lab1:; + } + else + { + b = 1; + asm goto ("# insn 2" : : : : lab2); + lab2:; + } +} diff --git a/gcc/testsuite/gcc.target/i386/pr103915.c b/gcc/testsuite/gcc.target/i386/pr103915.c new file mode 100644 index 0000000..34f1d63 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr103915.c @@ -0,0 +1,11 @@ +/* PR target/103915 */ +/* { dg-do compile } */ +/* { dg-options "-flive-range-shrinkage" } */ + +char __attribute__((__vector_size__ (2))) data; + +void +foo (void) +{ + data = ~data; +} diff --git a/gcc/testsuite/gcc.target/i386/pr53652-1.c b/gcc/testsuite/gcc.target/i386/pr53652-1.c new file mode 100644 index 0000000..bd07ee2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53652-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2" } */ +/* { dg-final { scan-assembler-times "pandn\[ \\t\]" 2 } } */ +/* { dg-final { scan-assembler-not "vpternlogq\[ \\t\]" } } */ + +typedef unsigned long long vec __attribute__((vector_size (16))); +vec g; +vec f1 (vec a, vec b) +{ + return ~a&b; +} +vec f2 (vec a, vec b) +{ + return ~g&b; +} + diff --git a/gcc/testsuite/gcc.target/i386/sse2-float16-2.c b/gcc/testsuite/gcc.target/i386/sse2-float16-2.c index 3da7683..25e1723 100644 --- a/gcc/testsuite/gcc.target/i386/sse2-float16-2.c +++ b/gcc/testsuite/gcc.target/i386/sse2-float16-2.c @@ -13,4 +13,5 @@ foo (union flt x) return x.flt; } -/* { dg-final { scan-assembler {(?n)pinsrw[\t ].*%xmm0} } } */ +/* { dg-final { scan-assembler {(?n)pinsrw[\t ].*%xmm0} { target ia32 } } } */ +/* { dg-final { scan-assembler {(?n)movd[\t ].*%xmm0} { target { ! ia32 } } } } */ diff --git a/gcc/testsuite/gcc.target/i386/sse2-v1ti-mov-1.c b/gcc/testsuite/gcc.target/i386/sse2-v1ti-mov-1.c new file mode 100644 index 0000000..a1ef7b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sse2-v1ti-mov-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2 -msse2" } */ + +typedef unsigned __int128 uv1ti __attribute__ ((__vector_size__ (16))); + +uv1ti foo(__int128 x) +{ + return (uv1ti)x; +} + +/* { dg-final { scan-assembler-not "%\[er\]sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/sse2-v1ti-zext.c b/gcc/testsuite/gcc.target/i386/sse2-v1ti-zext.c new file mode 100644 index 0000000..4dfc655 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sse2-v1ti-zext.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2 -msse2" } */ + +typedef unsigned __int128 uv1ti __attribute__ ((__vector_size__ (16))); + +uv1ti extqi(unsigned char c) { return (uv1ti)(__int128)c; } +uv1ti exthi(unsigned short s) { return (uv1ti)(__int128)s; } +uv1ti extsi(unsigned int i) { return (uv1ti)(__int128)i; } +uv1ti extdi(unsigned long long l) { return (uv1ti)(__int128)l; } + +uv1ti pextqi(unsigned char *pc) { return (uv1ti)(__int128)(*pc); } +uv1ti pexthi(unsigned short *ps) { return (uv1ti)(__int128)(*ps); } +uv1ti pextsi(unsigned int *pi) { return (uv1ti)(__int128)(*pi); } +uv1ti pextdi(unsigned long long *pl) { return (uv1ti)(__int128)(*pl); } + +/* { dg-final { scan-assembler-not "%\[er\]sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/warn-vect-op-2.c b/gcc/testsuite/gcc.target/i386/warn-vect-op-2.c index 5e378b6..4560f70 100644 --- a/gcc/testsuite/gcc.target/i386/warn-vect-op-2.c +++ b/gcc/testsuite/gcc.target/i386/warn-vect-op-2.c @@ -14,7 +14,7 @@ int main (int argc, char *argv[]) v0 + v1, /* { dg-warning "expanded piecewise" } */ v0 - v1, /* { dg-warning "expanded piecewise" } */ v0 > v1, /* { dg-warning "expanded piecewise" } */ - v0 & v1, /* { dg-warning "expanded in parallel" } */ + v0 & v1, /* { dg-warning "expanded piecewise" } */ __builtin_shuffle (v0, v1), /* { dg-warning "expanded piecewise" } */ __builtin_shuffle (v0, v1, v1) /* { dg-warning "expanded piecewise" } */ }; diff --git a/gcc/testsuite/gcc.target/nvptx/cnot-1.c b/gcc/testsuite/gcc.target/nvptx/cnot-1.c new file mode 100644 index 0000000..d0bdccd --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/cnot-1.c @@ -0,0 +1,94 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int test1(int x) +{ + return !x; +} + +int test2(int x) +{ + return x ? 0 : 1; +} + +int test3(int x) +{ + return (x == 0) ? 1 : 0; +} + +unsigned int test4(unsigned int x) +{ + return !x; +} + +unsigned int test5(unsigned int x) +{ + return x ? 0 : 1; +} + +unsigned int test6(unsigned int x) +{ + return (x == 0) ? 1 : 0; +} + +short test7(short x) +{ + return !x; +} + +short test8(short x) +{ + return x ? 0 : 1; +} + +short test9(short x) +{ + return (x == 0) ? 1 : 0; +} + +unsigned short test10(unsigned short x) +{ + return !x; +} + +unsigned short test11(unsigned short x) +{ + return x ? 0 : 1; +} + +unsigned short test12(unsigned short x) +{ + return (x == 0) ? 1 : 0; +} + +long test13(long x) +{ + return !x; +} + +long test14(long x) +{ + return x ? 0 : 1; +} + +long test15(long x) +{ + return (x == 0) ? 1: 0; +} + +unsigned long test16(unsigned long x) +{ + return !x; +} + +unsigned long test17(unsigned long x) +{ + return x ? 0 : 1; +} + +unsigned long test18(unsigned long x) +{ + return (x == 0) ? 1 : 0; +} + +/* { dg-final { scan-assembler-times "cnot.b" 18 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/mffscrni_p9.c b/gcc/testsuite/gcc.target/powerpc/mffscrni_p9.c new file mode 100644 index 0000000..d97c6db --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/mffscrni_p9.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mdejagnu-cpu=power9" } */ +/* { dg-final { scan-assembler-times {\mmffscrni\M} 1 } } */ + +void foo () +{ + int val = 2; + __builtin_set_fpscr_rn (val); +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr102059-1.c b/gcc/testsuite/gcc.target/powerpc/pr102059-1.c new file mode 100644 index 0000000..b969c4c --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr102059-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* -Wno-attributes suppresses always_inline warnings. */ +/* { dg-options "-O2 -mdejagnu-cpu=power8 -Wno-attributes" } */ + +/* Verify the reduced case from PR102059 won't fail. */ + +__attribute__ ((always_inline)) int +foo (int *b) +{ + *b += 10; + return *b; +} + +#pragma GCC target "cpu=power10" +int +bar (int *a) +{ + *a = foo (a); + return 0; +} + diff --git a/gcc/testsuite/gcc.target/powerpc/pr102059-2.c b/gcc/testsuite/gcc.target/powerpc/pr102059-2.c new file mode 100644 index 0000000..52e0092 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr102059-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mdejagnu-cpu=power8 -mno-htm" } */ + +/* Verify target info for inlining still works even if callee + disables HTM explicitly while caller enables it. */ + +static inline int __attribute__ ((always_inline)) +foo (int *b) +{ + *b += 10; + return *b; +} + +#pragma GCC target "htm" +int +bar (int *a) +{ + *a = foo (a); + return 0; +} + diff --git a/gcc/testsuite/gcc.target/powerpc/pr102059-3.c b/gcc/testsuite/gcc.target/powerpc/pr102059-3.c new file mode 100644 index 0000000..21c982d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr102059-3.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mdejagnu-cpu=power8 -mno-power8-fusion -fdump-tree-einline-optimized" } */ + +/* Like pr102059-1.c, to verify the inlining still happens + even without always_inline attribute. */ + +int foo (int *b) +{ + *b += 10; + return *b; +} + +#pragma GCC target "cpu=power10" +int +bar (int *a) +{ + *a = foo (a); + return 0; +} + +/* { dg-final { scan-tree-dump-times {Inlining foo/[0-9]* } 1 "einline"} } */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr102239.c b/gcc/testsuite/gcc.target/powerpc/pr102239.c new file mode 100644 index 0000000..2ff72b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr102239.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O2" } */ + +void foo(long arg) +{ + if (arg & ((1UL << 33) | (1UL << 34))) + asm volatile("# if"); + else + asm volatile("# else"); +} + +/* { dg-final { scan-assembler-times {\mrldicr\.} 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/sse4_1-blendvps.c b/gcc/testsuite/gcc.target/powerpc/sse4_1-blendvps.c new file mode 100644 index 0000000..8fcb553 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/sse4_1-blendvps.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-require-effective-target p8vector_hw } */ +/* { dg-options "-O2 -mpower8-vector -Wno-psabi" } */ + +#include "sse4_1-check.h" + +#include <smmintrin.h> +#include <string.h> + +#define NUM 20 + +static void +init_blendvps (float *src1, float *src2, float *mask) +{ + int i, msk, sign = 1; + + msk = -1; + for (i = 0; i < NUM * 4; i++) + { + if((i % 4) == 0) + msk++; + src1[i] = i* (i + 1) * sign; + src2[i] = (i + 20) * sign; + mask[i] = (i + 120) * i; + if( (msk & (1 << (i % 4)))) + mask[i] = -mask[i]; + sign = -sign; + } +} + +static int +check_blendvps (__m128 *dst, float *src1, float *src2, + float *mask) +{ + float tmp[4]; + int j; + + memcpy (&tmp[0], src1, sizeof (tmp)); + for (j = 0; j < 4; j++) + if (mask [j] < 0.0) + tmp[j] = src2[j]; + + return memcmp (dst, &tmp[0], sizeof (tmp)); +} + +static void +sse4_1_test (void) +{ + union + { + __m128 x[NUM]; + float f[NUM * 4]; + } dst, src1, src2, mask; + int i; + + init_blendvps (src1.f, src2.f, mask.f); + + for (i = 0; i < NUM; i++) + { + dst.x[i] = _mm_blendv_ps (src1.x[i], src2.x[i], mask.x[i]); + if (check_blendvps (&dst.x[i], &src1.f[i * 4], &src2.f[i * 4], + &mask.f[i * 4])) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/powerpc/test_fpscr_rn_builtin.c b/gcc/testsuite/gcc.target/powerpc/test_fpscr_rn_builtin.c index 0d0d3f0..04707ad 100644 --- a/gcc/testsuite/gcc.target/powerpc/test_fpscr_rn_builtin.c +++ b/gcc/testsuite/gcc.target/powerpc/test_fpscr_rn_builtin.c @@ -8,6 +8,10 @@ #define RN_MASK 0x3LL /* RN field mask */ void abort (void); +void __attribute__ ((noipa)) wrap_set_fpscr_rn (int val) +{ + __builtin_set_fpscr_rn (val); +} int main () { @@ -43,7 +47,8 @@ int main () } /* Test float rounding mode builtin with const value argument. */ - __builtin_set_fpscr_rn(3); + val = 3; + __builtin_set_fpscr_rn (val); conv_val.d = __builtin_mffs(); ll_value = conv_val.ll & RN_MASK; @@ -58,7 +63,7 @@ int main () } val = 2; - __builtin_set_fpscr_rn(val); + __builtin_set_fpscr_rn (val); conv_val.d = __builtin_mffs(); ll_value = conv_val.ll & RN_MASK; @@ -74,7 +79,7 @@ int main () /* Reset to 0 for testing */ val = 0; - __builtin_set_fpscr_rn(val); + __builtin_set_fpscr_rn (val); __builtin_mtfsb1(31); conv_val.d = __builtin_mffs(); @@ -157,7 +162,7 @@ int main () /* Test builtin float rounding mode with variable as argument. */ val = 0; - __builtin_set_fpscr_rn(val); + wrap_set_fpscr_rn (val); conv_val.d = __builtin_mffs(); ll_value = conv_val.ll & RN_MASK; @@ -172,7 +177,7 @@ int main () } val = 3; - __builtin_set_fpscr_rn(val); + wrap_set_fpscr_rn (val); conv_val.d = __builtin_mffs(); ll_value = conv_val.ll & RN_MASK; diff --git a/gcc/testsuite/gcc.target/riscv/predef-14.c b/gcc/testsuite/gcc.target/riscv/predef-14.c new file mode 100644 index 0000000..108fc0c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-14.c @@ -0,0 +1,83 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv32iv -mabi=ilp32 -mcmodel=medlow -misa-spec=2.2" } */ + +int main () { + +#ifndef __riscv_arch_test +#error "__riscv_arch_test" +#endif + +#if __riscv_xlen != 32 +#error "__riscv_xlen" +#endif + +#if !defined(__riscv_i) +#error "__riscv_i" +#endif + +#if defined(__riscv_c) +#error "__riscv_c" +#endif + +#if defined(__riscv_e) +#error "__riscv_e" +#endif + +#if defined(__riscv_a) +#error "__riscv_a" +#endif + +#if defined(__riscv_m) +#error "__riscv_m" +#endif + +#if !defined(__riscv_f) +#error "__riscv_f" +#endif + +#if !defined(__riscv_d) +#error "__riscv_d" +#endif + +#if !defined(__riscv_v) +#error "__riscv_v" +#endif + +#if !defined(__riscv_zvl32b) +#error "__riscv_zvl32b" +#endif + +#if !defined(__riscv_zvl64b) +#error "__riscv_zvl64b" +#endif + +#if !defined(__riscv_zvl128b) +#error "__riscv_zvl128b" +#endif + +#if defined(__riscv_zvl256b) +#error "__riscv_zvl256b" +#endif + +#if !defined(__riscv_zve32x) +#error "__riscv_zve32x" +#endif + +#if !defined(__riscv_zve32f) +#error "__riscv_zve32f" +#endif + +#if !defined(__riscv_zve64x) +#error "__riscv_zve64x" +#endif + +#if !defined(__riscv_zve64f) +#error "__riscv_zve64f" +#endif + +#if !defined(__riscv_zve64d) +#error "__riscv_zve64d" +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/predef-15.c b/gcc/testsuite/gcc.target/riscv/predef-15.c new file mode 100644 index 0000000..a37c457 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-15.c @@ -0,0 +1,91 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv64iv_zvl512b -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ + +int main () { + +#ifndef __riscv_arch_test +#error "__riscv_arch_test" +#endif + +#if __riscv_xlen != 64 +#error "__riscv_xlen" +#endif + +#if !defined(__riscv_i) +#error "__riscv_i" +#endif + +#if defined(__riscv_c) +#error "__riscv_c" +#endif + +#if defined(__riscv_e) +#error "__riscv_e" +#endif + +#if defined(__riscv_a) +#error "__riscv_a" +#endif + +#if defined(__riscv_m) +#error "__riscv_m" +#endif + +#if !defined(__riscv_f) +#error "__riscv_f" +#endif + +#if !defined(__riscv_d) +#error "__riscv_d" +#endif + +#if !defined(__riscv_v) +#error "__riscv_v" +#endif + +#if !defined(__riscv_zvl32b) +#error "__riscv_zvl32b" +#endif + +#if !defined(__riscv_zvl64b) +#error "__riscv_zvl64b" +#endif + +#if !defined(__riscv_zvl128b) +#error "__riscv_zvl128b" +#endif + +#if !defined(__riscv_zvl256b) +#error "__riscv_zvl256b" +#endif + +#if !defined(__riscv_zvl512b) +#error "__riscv_zvl512b" +#endif + +#if defined(__riscv_zvl1024b) +#error "__riscv_zvl1024b" +#endif + +#if !defined(__riscv_zve32x) +#error "__riscv_zve32x" +#endif + +#if !defined(__riscv_zve32f) +#error "__riscv_zve32f" +#endif + +#if !defined(__riscv_zve64x) +#error "__riscv_zve64x" +#endif + +#if !defined(__riscv_zve64f) +#error "__riscv_zve64f" +#endif + +#if !defined(__riscv_zve64d) +#error "__riscv_zve64d" +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/predef-16.c b/gcc/testsuite/gcc.target/riscv/predef-16.c new file mode 100644 index 0000000..6c5c874 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-16.c @@ -0,0 +1,91 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv64i_zve64f -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ + +int main () { + +#ifndef __riscv_arch_test +#error "__riscv_arch_test" +#endif + +#if __riscv_xlen != 64 +#error "__riscv_xlen" +#endif + +#if !defined(__riscv_i) +#error "__riscv_i" +#endif + +#if defined(__riscv_c) +#error "__riscv_c" +#endif + +#if defined(__riscv_e) +#error "__riscv_e" +#endif + +#if defined(__riscv_a) +#error "__riscv_a" +#endif + +#if defined(__riscv_m) +#error "__riscv_m" +#endif + +#if !defined(__riscv_f) +#error "__riscv_f" +#endif + +#if defined(__riscv_d) +#error "__riscv_d" +#endif + +#if defined(__riscv_v) +#error "__riscv_v" +#endif + +#if !defined(__riscv_zvl32b) +#error "__riscv_zvl32b" +#endif + +#if !defined(__riscv_zvl64b) +#error "__riscv_zvl64b" +#endif + +#if defined(__riscv_zvl128b) +#error "__riscv_zvl128b" +#endif + +#if defined(__riscv_zvl256b) +#error "__riscv_zvl256b" +#endif + +#if defined(__riscv_zvl512b) +#error "__riscv_zvl512b" +#endif + +#if defined(__riscv_zvl1024b) +#error "__riscv_zvl1024b" +#endif + +#if !defined(__riscv_zve32x) +#error "__riscv_zve32x" +#endif + +#if !defined(__riscv_zve32f) +#error "__riscv_zve32f" +#endif + +#if !defined(__riscv_zve64x) +#error "__riscv_zve64x" +#endif + +#if !defined(__riscv_zve64f) +#error "__riscv_zve64f" +#endif + +#if defined(__riscv_zve64d) +#error "__riscv_zve64d" +#endif + + return 0; +} diff --git a/gcc/testsuite/gfortran.dg/c-interop/pr103287-1.f90 b/gcc/testsuite/gfortran.dg/c-interop/pr103287-1.f90 new file mode 100644 index 0000000..aeca52f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/c-interop/pr103287-1.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } + +subroutine g + call s([1]) +end +subroutine h(x) + integer, pointer :: x(..) + call s(x) ! { dg-error "Assumed-rank argument requires an explicit interface" } +end diff --git a/gcc/testsuite/gfortran.dg/c-interop/pr103287-2.f90 b/gcc/testsuite/gfortran.dg/c-interop/pr103287-2.f90 new file mode 100644 index 0000000..0e724b8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/c-interop/pr103287-2.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } + +subroutine g + call s(1) +end +subroutine h(x) + integer, pointer :: x(..) + call s(x) ! { dg-error "Assumed-rank argument requires an explicit interface" } +end diff --git a/gcc/testsuite/gfortran.dg/gomp/pr103643.f90 b/gcc/testsuite/gfortran.dg/gomp/pr103643.f90 new file mode 100644 index 0000000..3b409f5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/pr103643.f90 @@ -0,0 +1,19 @@ +! PR middle-end/103643 +! { dg-do compile } + +program test_task_affinity + implicit none + integer i + integer, allocatable :: A(:) + + allocate (A(10)) + + !$omp target + !$omp task affinity(A) + do i = 1, 10 + A(i) = 0 + end do + !$omp end task + !$omp end target + +end program test_task_affinity diff --git a/gcc/testsuite/gfortran.dg/ieee/signaling_1.f90 b/gcc/testsuite/gfortran.dg/ieee/signaling_1.f90 new file mode 100644 index 0000000..93c8e18 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ieee/signaling_1.f90 @@ -0,0 +1,91 @@ +! { dg-do run } +! { dg-require-effective-target issignaling } */ +! { dg-additional-sources signaling_1_c.c } +! { dg-additional-options "-w" } +! the -w option is needed to make cc1 not report a warning for +! the -fintrinsic-modules-path option passed by ieee.exp +! +program test + use, intrinsic :: iso_c_binding + use, intrinsic :: ieee_arithmetic + implicit none + + interface + real(kind=c_float) function create_nansf () bind(c) + import :: c_float + end function + + real(kind=c_double) function create_nans () bind(c) + import :: c_double + end function + + real(kind=c_long_double) function create_nansl () bind(c) + import :: c_long_double + end function + end interface + + real(kind=c_float) :: x + real(kind=c_double) :: y + real(kind=c_long_double) :: z + + if (ieee_support_nan(x)) then + x = create_nansf() + if (ieee_class(x) /= ieee_signaling_nan) stop 100 + if (.not. ieee_is_nan(x)) stop 101 + if (ieee_is_negative(x)) stop 102 + if (ieee_is_finite(x)) stop 103 + if (ieee_is_normal(x)) stop 104 + if (.not. ieee_unordered(x, x)) stop 105 + if (.not. ieee_unordered(x, 1._c_float)) stop 106 + + x = ieee_value(y, ieee_quiet_nan) + if (ieee_class(x) /= ieee_quiet_nan) stop 107 + if (.not. ieee_is_nan(x)) stop 108 + if (ieee_is_negative(x)) stop 109 + if (ieee_is_finite(x)) stop 110 + if (ieee_is_normal(x)) stop 111 + if (.not. ieee_unordered(x, x)) stop 112 + if (.not. ieee_unordered(x, 1._c_double)) stop 113 + end if + + if (ieee_support_nan(y)) then + y = create_nans() + if (ieee_class(y) /= ieee_signaling_nan) stop 200 + if (.not. ieee_is_nan(y)) stop 201 + if (ieee_is_negative(y)) stop 202 + if (ieee_is_finite(y)) stop 203 + if (ieee_is_normal(y)) stop 204 + if (.not. ieee_unordered(y, x)) stop 205 + if (.not. ieee_unordered(y, 1._c_double)) stop 206 + + y = ieee_value(y, ieee_quiet_nan) + if (ieee_class(y) /= ieee_quiet_nan) stop 207 + if (.not. ieee_is_nan(y)) stop 208 + if (ieee_is_negative(y)) stop 209 + if (ieee_is_finite(y)) stop 210 + if (ieee_is_normal(y)) stop 211 + if (.not. ieee_unordered(y, y)) stop 212 + if (.not. ieee_unordered(y, 1._c_double)) stop 213 + end if + + if (ieee_support_nan(z)) then + z = create_nansl() + if (ieee_class(z) /= ieee_signaling_nan) stop 300 + if (.not. ieee_is_nan(z)) stop 301 + if (ieee_is_negative(z)) stop 302 + if (ieee_is_finite(z)) stop 303 + if (ieee_is_normal(z)) stop 304 + if (.not. ieee_unordered(z, z)) stop 305 + if (.not. ieee_unordered(z, 1._c_long_double)) stop 306 + + z = ieee_value(y, ieee_quiet_nan) + if (ieee_class(z) /= ieee_quiet_nan) stop 307 + if (.not. ieee_is_nan(z)) stop 308 + if (ieee_is_negative(z)) stop 309 + if (ieee_is_finite(z)) stop 310 + if (ieee_is_normal(z)) stop 311 + if (.not. ieee_unordered(z, z)) stop 312 + if (.not. ieee_unordered(z, 1._c_double)) stop 313 + end if + +end program test diff --git a/gcc/testsuite/gfortran.dg/ieee/signaling_1_c.c b/gcc/testsuite/gfortran.dg/ieee/signaling_1_c.c new file mode 100644 index 0000000..ab19bb7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ieee/signaling_1_c.c @@ -0,0 +1,14 @@ +float create_nansf (void) +{ + return __builtin_nansf(""); +} + +double create_nans (void) +{ + return __builtin_nans(""); +} + +long double create_nansl (void) +{ + return __builtin_nansl(""); +} diff --git a/gcc/testsuite/gfortran.dg/maskl_1.f90 b/gcc/testsuite/gfortran.dg/maskl_1.f90 new file mode 100644 index 0000000..9e25c2c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/maskl_1.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR fortran/103789 +! Check the absence of ICE when generating calls to MASKL with a KIND argument. + +program p + integer :: z(2), y(2) + y = [1, 13] + z = maskl(y, kind=4) + 1 +end program p diff --git a/gcc/testsuite/gfortran.dg/masklr_3.f90 b/gcc/testsuite/gfortran.dg/masklr_3.f90 new file mode 100644 index 0000000..eb689f0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/masklr_3.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! PR fortran/103777 - ICE in gfc_simplify_maskl +! Contributed by G.Steinmetz + +program p + print *, maskl([999]) ! { dg-error "must be less than or equal" } + print *, maskr([999]) ! { dg-error "must be less than or equal" } + print *, maskl([-999]) ! { dg-error "must be nonnegative" } + print *, maskr([-999]) ! { dg-error "must be nonnegative" } + print *, maskl([32],kind=4) + print *, maskl([33],kind=4) ! { dg-error "must be less than or equal" } + print *, maskl([64],kind=8) + print *, maskl([65],kind=8) ! { dg-error "must be less than or equal" } +end diff --git a/gcc/testsuite/gfortran.dg/maskr_1.f90 b/gcc/testsuite/gfortran.dg/maskr_1.f90 new file mode 100644 index 0000000..ebfd3db --- /dev/null +++ b/gcc/testsuite/gfortran.dg/maskr_1.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR fortran/103789 +! Check the absence of ICE when generating calls to MASKR with a KIND argument. + +program p + integer :: z(2), y(2) + y = [1, 13] + z = maskr(y, kind=4) + 1 +end program p diff --git a/gcc/testsuite/gfortran.dg/pr101762.f90 b/gcc/testsuite/gfortran.dg/pr101762.f90 new file mode 100644 index 0000000..9ffd754 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr101762.f90 @@ -0,0 +1,23 @@ +! { dg-do compile } +! PR fortran/101762 - ICE on non-constant pointer initialization targets +! Contributed by G.Steinmetz + +program p + integer, target :: a(3) = [7, 8, 9] + integer, pointer :: x => a(3) + integer, pointer :: y => a(n()) ! { dg-error "constant expression" } + integer, pointer :: z(:) => a(:n()) ! { dg-error "constant expression" } + character(7), target :: c = "abcdefg" + character(3), pointer :: c0 => c(2:4) + character(3), pointer :: c1 => c(m():) ! { dg-error "constant expression" } + character(3), pointer :: c2 => c(:m()) ! { dg-error "constant expression" } + print *, x, y +contains + pure integer function k () + k = 2 + end function k + subroutine s () + integer, pointer :: yy => a(k()) ! { dg-error "constant expression" } + print *, yy + end subroutine s +end diff --git a/gcc/testsuite/gfortran.dg/pr103258.f90 b/gcc/testsuite/gfortran.dg/pr103258.f90 new file mode 100644 index 0000000..4521fcd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103258.f90 @@ -0,0 +1,14 @@ +! { dg-do compile} +! { dg-additional-options "-Wno-pedantic" } +! +! Test from PR103258. This used to ICE due to incorrectly marking the +! no-implicit-type error for n and m in the character length expression +! as already diagnosed during early resolution, when in fact errors are +! ignored in that parsing context. We now expect the errors to be diagnosed +! at the point of the first use of each symbol. + +subroutine s(n) ! { dg-error "Symbol 'n' .*has no IMPLICIT type" } +implicit none +character(n+m) :: c ! { dg-error "Symbol 'm' .*has no IMPLICIT type" } +entry e(m) +end diff --git a/gcc/testsuite/gfortran.dg/pr103366.f90 b/gcc/testsuite/gfortran.dg/pr103366.f90 new file mode 100644 index 0000000..d5d25de --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103366.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! Test the fix for PR103366. +! +! Contributed by Gerhardt Steinmetz <gscfq@t-online.de> +! +program p + call u([1]) +contains + subroutine s(x) bind(c) + type(*) :: x(..) + end + subroutine u(x) + class(*) :: x(..) + call s(x) ! Used to ICE here + end +end diff --git a/gcc/testsuite/gfortran.dg/pr103691.f90 b/gcc/testsuite/gfortran.dg/pr103691.f90 new file mode 100644 index 0000000..f1f551e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103691.f90 @@ -0,0 +1,9 @@ +! PR fortran/103691 +! { dg-do compile } +! { dg-options "-O2 -g" } + +program pr103691 + real, parameter :: a(0) = 2.0 + real, allocatable :: b(:) + allocate (b, mold=a) +end diff --git a/gcc/testsuite/gfortran.dg/pr103898.f90 b/gcc/testsuite/gfortran.dg/pr103898.f90 new file mode 100644 index 0000000..6b4bb30 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103898.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } + +! This test used to ICE during gimplification (PR103898). + +Module g +contains + function mysize(array, dim) + integer :: mysize + integer, dimension(:), intent(in) :: array + integer, optional, intent(in) :: dim + if (present(dim)) then + mysize = size(array, dim=dim) + endif + end function mysize +end module diff --git a/gcc/testsuite/gfortran.dg/pr47614.f b/gcc/testsuite/gfortran.dg/pr47614.f index 500d210..6be2c96 100644 --- a/gcc/testsuite/gfortran.dg/pr47614.f +++ b/gcc/testsuite/gfortran.dg/pr47614.f @@ -1,6 +1,7 @@ ! { dg-do run { target { powerpc*-*-* } } } ! { dg-skip-if "" { powerpc*-*-darwin* } } ! { dg-options "-O3 -funroll-loops -ffast-math -mcpu=power4" } +! { dg-options "-O3 -funroll-loops -ffast-math" { target powerpc64le*-*-linux* } } SUBROUTINE SFCPAR(ZET,NZ,ZMH,TSL,TMES) diff --git a/gcc/testsuite/gfortran.dg/scan_3.f90 b/gcc/testsuite/gfortran.dg/scan_3.f90 new file mode 100644 index 0000000..80262ae --- /dev/null +++ b/gcc/testsuite/gfortran.dg/scan_3.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! +! PR fortran/103789 +! Check the absence of ICE when generating calls to SCAN with a KIND argument. + +program p + character(len=10) :: y(2) + integer :: z(2) + y = ['abc', 'def'] + z = scan(y, 'e', kind=4) + 1 +end program p diff --git a/gcc/testsuite/gfortran.dg/verify_3.f90 b/gcc/testsuite/gfortran.dg/verify_3.f90 new file mode 100644 index 0000000..f01e24e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/verify_3.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! +! PR fortran/103789 +! Check the absence of ICE when generating calls to VERIFY with a KIND argument. + +program p + character(len=10) :: y(2) + integer :: z(2) + y = ['abc', 'def'] + z = verify(y, 'e', kind=4) + 1 +end program p diff --git a/gcc/testsuite/gnat.dg/aggr26.adb b/gcc/testsuite/gnat.dg/aggr26.adb index 0466473..45370fd 100644 --- a/gcc/testsuite/gnat.dg/aggr26.adb +++ b/gcc/testsuite/gnat.dg/aggr26.adb @@ -3,7 +3,7 @@ procedure Aggr26 is type Row is array (Positive) of Integer; - H : array (Positive) of Row := (others => (others => 0)); -- { dg-warning "\"Storage_Error\" will be raised at run time" } + H : array (Positive) of Row := (others => (others => 0)); -- { dg-warning "Storage_Error will be raised at run time" } begin null; diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index bb37793..b7fe313 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3455,19 +3455,14 @@ verify_gimple_call (gcall *stmt) } /* For a call to .DEFERRED_INIT, - LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, IS_VLA) - we should guarantee that the 1st and the 3rd arguments are consistent: - 1st argument: SIZE of the DECL; - 3rd argument: IS_VLA, 0 NO, 1 YES; + LHS = DEFERRED_INIT (SIZE of the DECL, INIT_TYPE, NAME of the DECL) + we should guarantee that when the 1st argument is a constant, it should + be the same as the size of the LHS. */ - if IS_VLA is false, the 1st argument should be a constant and the same as - the size of the LHS. */ if (gimple_call_internal_p (stmt, IFN_DEFERRED_INIT)) { tree size_of_arg0 = gimple_call_arg (stmt, 0); tree size_of_lhs = TYPE_SIZE_UNIT (TREE_TYPE (lhs)); - tree is_vla_node = gimple_call_arg (stmt, 2); - bool is_vla = (bool) TREE_INT_CST_LOW (is_vla_node); if (TREE_CODE (lhs) == SSA_NAME) lhs = SSA_NAME_VAR (lhs); @@ -3477,27 +3472,13 @@ verify_gimple_call (gcall *stmt) &size_from_arg0); bool is_constant_size_lhs = poly_int_tree_p (size_of_lhs, &size_from_lhs); - if (!is_vla) - { - if (!is_constant_size_arg0) - { - error ("%<DEFFERED_INIT%> calls for non-VLA should have " - "constant size for the first argument"); - return true; - } - else if (!is_constant_size_lhs) - { - error ("%<DEFFERED_INIT%> calls for non-VLA should have " - "constant size for the LHS"); - return true; - } - else if (maybe_ne (size_from_arg0, size_from_lhs)) - { - error ("%<DEFFERED_INIT%> calls for non-VLA should have same " - "constant size for the first argument and LHS"); - return true; - } - } + if (is_constant_size_arg0 && is_constant_size_lhs) + if (maybe_ne (size_from_arg0, size_from_lhs)) + { + error ("%<DEFFERED_INIT%> calls should have same " + "constant size for the first argument and LHS"); + return true; + } } /* ??? The C frontend passes unpromoted arguments in case it diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index fbaf57a..3a39e6f 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -32,16 +32,18 @@ along with GCC; see the file COPYING3. If not see #include "gimple-fold.h" #include "gimple-iterator.h" #include "tree-cfg.h" +#include "tree-dfa.h" #include "stringpool.h" #include "attribs.h" #include "builtins.h" +#include "gimplify-me.h" struct object_size_info { int object_size_type; unsigned char pass; bool changed; - bitmap visited, reexamine; + bitmap visited, reexamine, unknowns; unsigned int *depths; unsigned int *stack, *tos; }; @@ -74,7 +76,11 @@ static void check_for_plus_in_loops_1 (struct object_size_info *, tree, object_sizes[1] is upper bound for the object size and number of bytes till the end of the subobject (innermost array or field with address taken). object_sizes[2] is lower bound for the object size and number of bytes till - the end of the object and object_sizes[3] lower bound for subobject. */ + the end of the object and object_sizes[3] lower bound for subobject. + + For static object sizes, the object size and the bytes till the end of the + object are both INTEGER_CST. In the dynamic case, they are finally either a + gimple variable or an INTEGER_CST. */ static vec<object_size> object_sizes[OST_END]; /* Bitmaps what object sizes have been computed already. */ @@ -83,7 +89,16 @@ static bitmap computed[OST_END]; /* Maximum value of offset we consider to be addition. */ static unsigned HOST_WIDE_INT offset_limit; -/* Return true if VAL is represents an unknown size for OBJECT_SIZE_TYPE. */ +/* Return true if VAL represents an initial size for OBJECT_SIZE_TYPE. */ + +static inline bool +size_initval_p (tree val, int object_size_type) +{ + return ((object_size_type & OST_MINIMUM) + ? integer_all_onesp (val) : integer_zerop (val)); +} + +/* Return true if VAL represents an unknown size for OBJECT_SIZE_TYPE. */ static inline bool size_unknown_p (tree val, int object_size_type) @@ -92,6 +107,23 @@ size_unknown_p (tree val, int object_size_type) ? integer_zerop (val) : integer_all_onesp (val)); } +/* Return true if VAL represents a valid size for OBJECT_SIZE_TYPE. */ + +static inline bool +size_valid_p (tree val, int object_size_type) +{ + return ((object_size_type & OST_DYNAMIC) || TREE_CODE (val) == INTEGER_CST); +} + +/* Return true if VAL is usable as an object size in the object_sizes + vectors. */ + +static inline bool +size_usable_p (tree val) +{ + return TREE_CODE (val) == SSA_NAME || TREE_CODE (val) == INTEGER_CST; +} + /* Return a tree with initial value for OBJECT_SIZE_TYPE. */ static inline tree @@ -136,17 +168,43 @@ object_sizes_unknown_p (int object_size_type, unsigned varno) object_size_type); } -/* Return size for VARNO corresponding to OSI. If WHOLE is true, return the - whole object size. */ +/* Return the raw size expression for VARNO corresponding to OSI. This returns + the TREE_VEC as is and should only be used during gimplification. */ + +static inline object_size +object_sizes_get_raw (struct object_size_info *osi, unsigned varno) +{ + gcc_assert (osi->pass != 0); + return object_sizes[osi->object_size_type][varno]; +} + +/* Return a size tree for VARNO corresponding to OSI. If WHOLE is true, return + the whole object size. Use this for building size expressions based on size + of VARNO. */ static inline tree object_sizes_get (struct object_size_info *osi, unsigned varno, bool whole = false) { + tree ret; + int object_size_type = osi->object_size_type; + if (whole) - return object_sizes[osi->object_size_type][varno].wholesize; + ret = object_sizes[object_size_type][varno].wholesize; else - return object_sizes[osi->object_size_type][varno].size; + ret = object_sizes[object_size_type][varno].size; + + if (object_size_type & OST_DYNAMIC) + { + if (TREE_CODE (ret) == MODIFY_EXPR) + return TREE_OPERAND (ret, 0); + else if (TREE_CODE (ret) == TREE_VEC) + return TREE_VEC_ELT (ret, TREE_VEC_LENGTH (ret) - 1); + else + gcc_checking_assert (size_usable_p (ret)); + } + + return ret; } /* Set size for VARNO corresponding to OSI to VAL. */ @@ -161,28 +219,116 @@ object_sizes_initialize (struct object_size_info *osi, unsigned varno, object_sizes[object_size_type][varno].wholesize = wholeval; } +/* Return a MODIFY_EXPR for cases where SSA and EXPR have the same type. The + TREE_VEC is returned only in case of PHI nodes. */ + +static tree +bundle_sizes (tree name, tree expr) +{ + gcc_checking_assert (TREE_TYPE (name) == sizetype); + + if (TREE_CODE (expr) == TREE_VEC) + { + TREE_VEC_ELT (expr, TREE_VEC_LENGTH (expr) - 1) = name; + return expr; + } + + gcc_checking_assert (types_compatible_p (TREE_TYPE (expr), sizetype)); + return build2 (MODIFY_EXPR, sizetype, name, expr); +} + /* Set size for VARNO corresponding to OSI to VAL if it is the new minimum or - maximum. */ + maximum. For static sizes, each element of TREE_VEC is always INTEGER_CST + throughout the computation. For dynamic sizes, each element may either be a + gimple variable, a MODIFY_EXPR or a TREE_VEC. The MODIFY_EXPR is for + expressions that need to be gimplified. TREE_VECs are special, they're + emitted only for GIMPLE_PHI and the PHI result variable is the last element + of the vector. */ -static inline bool +static bool object_sizes_set (struct object_size_info *osi, unsigned varno, tree val, tree wholeval) { int object_size_type = osi->object_size_type; object_size osize = object_sizes[object_size_type][varno]; + bool changed = true; tree oldval = osize.size; tree old_wholeval = osize.wholesize; - enum tree_code code = object_size_type & OST_MINIMUM ? MIN_EXPR : MAX_EXPR; + if (object_size_type & OST_DYNAMIC) + { + if (bitmap_bit_p (osi->reexamine, varno)) + { + if (size_unknown_p (val, object_size_type)) + { + oldval = object_sizes_get (osi, varno); + old_wholeval = object_sizes_get (osi, varno, true); + bitmap_set_bit (osi->unknowns, SSA_NAME_VERSION (oldval)); + bitmap_set_bit (osi->unknowns, SSA_NAME_VERSION (old_wholeval)); + bitmap_clear_bit (osi->reexamine, varno); + } + else + { + val = bundle_sizes (oldval, val); + wholeval = bundle_sizes (old_wholeval, wholeval); + } + } + else + { + gcc_checking_assert (size_initval_p (oldval, object_size_type)); + gcc_checking_assert (size_initval_p (old_wholeval, + object_size_type)); + /* For dynamic object sizes, all object sizes that are not gimple + variables will need to be gimplified. */ + if (wholeval != val && !size_usable_p (wholeval)) + { + bitmap_set_bit (osi->reexamine, varno); + wholeval = bundle_sizes (make_ssa_name (sizetype), wholeval); + } + if (!size_usable_p (val)) + { + bitmap_set_bit (osi->reexamine, varno); + tree newval = bundle_sizes (make_ssa_name (sizetype), val); + if (val == wholeval) + wholeval = newval; + val = newval; + } + /* If the new value is a temporary variable, mark it for + reexamination. */ + else if (TREE_CODE (val) == SSA_NAME && !SSA_NAME_DEF_STMT (val)) + bitmap_set_bit (osi->reexamine, varno); + } + } + else + { + enum tree_code code = (object_size_type & OST_MINIMUM + ? MIN_EXPR : MAX_EXPR); - val = size_binop (code, val, oldval); - wholeval = size_binop (code, wholeval, old_wholeval); + val = size_binop (code, val, oldval); + wholeval = size_binop (code, wholeval, old_wholeval); + changed = (tree_int_cst_compare (val, oldval) != 0 + || tree_int_cst_compare (old_wholeval, wholeval) != 0); + } object_sizes[object_size_type][varno].size = val; object_sizes[object_size_type][varno].wholesize = wholeval; - return (tree_int_cst_compare (oldval, val) != 0 - || tree_int_cst_compare (old_wholeval, wholeval) != 0); + + return changed; +} + +/* Set temporary SSA names for object size and whole size to resolve dependency + loops in dynamic size computation. */ + +static inline void +object_sizes_set_temp (struct object_size_info *osi, unsigned varno) +{ + tree val = object_sizes_get (osi, varno); + + if (size_initval_p (val, osi->object_size_type)) + object_sizes_set (osi, varno, + make_ssa_name (sizetype), + make_ssa_name (sizetype)); } /* Initialize OFFSET_LIMIT variable. */ @@ -203,15 +349,15 @@ init_offset_limit (void) static tree size_for_offset (tree sz, tree offset, tree wholesize = NULL_TREE) { - gcc_checking_assert (TREE_CODE (offset) == INTEGER_CST); - gcc_checking_assert (TREE_CODE (sz) == INTEGER_CST); gcc_checking_assert (types_compatible_p (TREE_TYPE (sz), sizetype)); /* For negative offsets, if we have a distinct WHOLESIZE, use it to get a net offset from the whole object. */ - if (wholesize && tree_int_cst_compare (sz, wholesize)) + if (wholesize && wholesize != sz + && (TREE_CODE (sz) != INTEGER_CST + || TREE_CODE (wholesize) != INTEGER_CST + || tree_int_cst_compare (sz, wholesize))) { - gcc_checking_assert (TREE_CODE (wholesize) == INTEGER_CST); gcc_checking_assert (types_compatible_p (TREE_TYPE (wholesize), sizetype)); @@ -228,13 +374,16 @@ size_for_offset (tree sz, tree offset, tree wholesize = NULL_TREE) if (!types_compatible_p (TREE_TYPE (offset), sizetype)) fold_convert (sizetype, offset); - if (integer_zerop (offset)) - return sz; + if (TREE_CODE (offset) == INTEGER_CST) + { + if (integer_zerop (offset)) + return sz; - /* Negative or too large offset even after adjustment, cannot be within - bounds of an object. */ - if (compare_tree_int (offset, offset_limit) > 0) - return size_zero_node; + /* Negative or too large offset even after adjustment, cannot be within + bounds of an object. */ + if (compare_tree_int (offset, offset_limit) > 0) + return size_zero_node; + } return size_binop (MINUS_EXPR, size_binop (MAX_EXPR, sz, offset), offset); } @@ -398,18 +547,11 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, sz = wholesize = size_unknown (object_size_type); } if (!size_unknown_p (sz, object_size_type)) - { - tree offset = TREE_OPERAND (pt_var, 1); - if (TREE_CODE (offset) != INTEGER_CST - || TREE_CODE (sz) != INTEGER_CST) - sz = wholesize = size_unknown (object_size_type); - else - sz = size_for_offset (sz, offset, wholesize); - } + sz = size_for_offset (sz, TREE_OPERAND (pt_var, 1), wholesize); if (!size_unknown_p (sz, object_size_type) - && TREE_CODE (sz) == INTEGER_CST - && compare_tree_int (sz, offset_limit) < 0) + && (TREE_CODE (sz) != INTEGER_CST + || compare_tree_int (sz, offset_limit) < 0)) { pt_var_size = sz; pt_var_wholesize = wholesize; @@ -429,8 +571,9 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, if (pt_var_size) { - /* Validate the size determined above. */ - if (compare_tree_int (pt_var_size, offset_limit) >= 0) + /* Validate the size determined above if it is a constant. */ + if (TREE_CODE (pt_var_size) == INTEGER_CST + && compare_tree_int (pt_var_size, offset_limit) >= 0) return false; } @@ -454,7 +597,7 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, var = TREE_OPERAND (var, 0); if (! TYPE_SIZE_UNIT (TREE_TYPE (var)) || ! tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (var))) - || (pt_var_size + || (pt_var_size && TREE_CODE (pt_var_size) == INTEGER_CST && tree_int_cst_lt (pt_var_size, TYPE_SIZE_UNIT (TREE_TYPE (var))))) var = pt_var; @@ -468,17 +611,11 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, switch (TREE_CODE (v)) { case ARRAY_REF: - if (TYPE_SIZE_UNIT (TREE_TYPE (TREE_OPERAND (v, 0))) - && TREE_CODE (TREE_OPERAND (v, 1)) == INTEGER_CST) + if (TYPE_SIZE_UNIT (TREE_TYPE (TREE_OPERAND (v, 0)))) { tree domain = TYPE_DOMAIN (TREE_TYPE (TREE_OPERAND (v, 0))); - if (domain - && TYPE_MAX_VALUE (domain) - && TREE_CODE (TYPE_MAX_VALUE (domain)) - == INTEGER_CST - && tree_int_cst_lt (TREE_OPERAND (v, 1), - TYPE_MAX_VALUE (domain))) + if (domain && TYPE_MAX_VALUE (domain)) { v = NULL_TREE; break; @@ -545,20 +682,20 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, var = pt_var; if (var != pt_var) - var_size = TYPE_SIZE_UNIT (TREE_TYPE (var)); + { + var_size = TYPE_SIZE_UNIT (TREE_TYPE (var)); + if (!TREE_CONSTANT (var_size)) + var_size = get_or_create_ssa_default_def (cfun, var_size); + if (!var_size) + return false; + } else if (!pt_var_size) return false; else var_size = pt_var_size; bytes = compute_object_offset (TREE_OPERAND (ptr, 0), var); if (bytes != error_mark_node) - { - if (TREE_CODE (bytes) == INTEGER_CST - && tree_int_cst_lt (var_size, bytes)) - bytes = size_zero_node; - else - bytes = size_binop (MINUS_EXPR, var_size, bytes); - } + bytes = size_for_offset (var_size, bytes); if (var != pt_var && pt_var_size && TREE_CODE (pt_var) == MEM_REF @@ -567,11 +704,7 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, tree bytes2 = compute_object_offset (TREE_OPERAND (ptr, 0), pt_var); if (bytes2 != error_mark_node) { - if (TREE_CODE (bytes2) == INTEGER_CST - && tree_int_cst_lt (pt_var_size, bytes2)) - bytes2 = size_zero_node; - else - bytes2 = size_binop (MINUS_EXPR, pt_var_size, bytes2); + bytes2 = size_for_offset (pt_var_size, bytes2); bytes = size_binop (MIN_EXPR, bytes, bytes2); } } @@ -587,14 +720,18 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, wholebytes = pt_var_wholesize; } - if (TREE_CODE (bytes) != INTEGER_CST - || TREE_CODE (wholebytes) != INTEGER_CST) - return false; + if (!size_unknown_p (bytes, object_size_type) + && size_valid_p (bytes, object_size_type) + && !size_unknown_p (bytes, object_size_type) + && size_valid_p (wholebytes, object_size_type)) + { + *psize = bytes; + if (pwholesize) + *pwholesize = wholebytes; + return true; + } - *psize = bytes; - if (pwholesize) - *pwholesize = wholebytes; - return true; + return false; } @@ -609,7 +746,8 @@ alloc_object_size (const gcall *call, int object_size_type) gcc_assert (is_gimple_call (call)); tree calltype; - if (tree callfn = gimple_call_fndecl (call)) + tree callfn = gimple_call_fndecl (call); + if (callfn) calltype = TREE_TYPE (callfn); else calltype = gimple_call_fntype (call); @@ -629,12 +767,13 @@ alloc_object_size (const gcall *call, int object_size_type) if (TREE_CHAIN (p)) arg2 = TREE_INT_CST_LOW (TREE_VALUE (TREE_CHAIN (p)))-1; } + else if (gimple_call_builtin_p (call, BUILT_IN_NORMAL) + && callfn && ALLOCA_FUNCTION_CODE_P (DECL_FUNCTION_CODE (callfn))) + arg1 = 0; - if (arg1 < 0 || arg1 >= (int)gimple_call_num_args (call) - || TREE_CODE (gimple_call_arg (call, arg1)) != INTEGER_CST - || (arg2 >= 0 - && (arg2 >= (int)gimple_call_num_args (call) - || TREE_CODE (gimple_call_arg (call, arg2)) != INTEGER_CST))) + /* Non-const arguments are OK here, let the caller handle constness. */ + if (arg1 < 0 || arg1 >= (int) gimple_call_num_args (call) + || arg2 >= (int) gimple_call_num_args (call)) return size_unknown (object_size_type); tree bytes = NULL_TREE; @@ -645,7 +784,10 @@ alloc_object_size (const gcall *call, int object_size_type) else if (arg1 >= 0) bytes = fold_convert (sizetype, gimple_call_arg (call, arg1)); - return bytes; + if (bytes) + return STRIP_NOPS (bytes); + + return size_unknown (object_size_type); } @@ -671,6 +813,201 @@ pass_through_call (const gcall *call) return NULL_TREE; } +/* Emit PHI nodes for size expressions fo. */ + +static void +emit_phi_nodes (gimple *stmt, tree size, tree wholesize) +{ + tree phires; + gphi *wholephi = NULL; + + if (wholesize != size) + { + phires = TREE_VEC_ELT (wholesize, TREE_VEC_LENGTH (wholesize) - 1); + wholephi = create_phi_node (phires, gimple_bb (stmt)); + } + + phires = TREE_VEC_ELT (size, TREE_VEC_LENGTH (size) - 1); + gphi *phi = create_phi_node (phires, gimple_bb (stmt)); + gphi *obj_phi = as_a <gphi *> (stmt); + + gcc_checking_assert (TREE_CODE (wholesize) == TREE_VEC); + gcc_checking_assert (TREE_CODE (size) == TREE_VEC); + + for (unsigned i = 0; i < gimple_phi_num_args (stmt); i++) + { + gimple_seq seq = NULL; + tree wsz = TREE_VEC_ELT (wholesize, i); + tree sz = TREE_VEC_ELT (size, i); + + /* If we built an expression, we will need to build statements + and insert them on the edge right away. */ + if (TREE_CODE (wsz) != SSA_NAME) + wsz = force_gimple_operand (wsz, &seq, true, NULL); + if (TREE_CODE (sz) != SSA_NAME) + { + gimple_seq s; + sz = force_gimple_operand (sz, &s, true, NULL); + gimple_seq_add_seq (&seq, s); + } + + if (seq) + gsi_insert_seq_on_edge (gimple_phi_arg_edge (obj_phi, i), seq); + + if (wholephi) + add_phi_arg (wholephi, wsz, + gimple_phi_arg_edge (obj_phi, i), + gimple_phi_arg_location (obj_phi, i)); + + add_phi_arg (phi, sz, + gimple_phi_arg_edge (obj_phi, i), + gimple_phi_arg_location (obj_phi, i)); + } +} + +/* Descend through EXPR and return size_unknown if it uses any SSA variable + object_size_set or object_size_set_temp generated, which turned out to be + size_unknown, as noted in UNKNOWNS. */ + +static tree +propagate_unknowns (object_size_info *osi, tree expr) +{ + int object_size_type = osi->object_size_type; + + switch (TREE_CODE (expr)) + { + case SSA_NAME: + if (bitmap_bit_p (osi->unknowns, SSA_NAME_VERSION (expr))) + return size_unknown (object_size_type); + return expr; + + case MIN_EXPR: + case MAX_EXPR: + { + tree res = propagate_unknowns (osi, TREE_OPERAND (expr, 0)); + if (size_unknown_p (res, object_size_type)) + return res; + + res = propagate_unknowns (osi, TREE_OPERAND (expr, 1)); + if (size_unknown_p (res, object_size_type)) + return res; + + return expr; + } + case MODIFY_EXPR: + { + tree res = propagate_unknowns (osi, TREE_OPERAND (expr, 1)); + if (size_unknown_p (res, object_size_type)) + return res; + return expr; + } + case TREE_VEC: + for (int i = 0; i < TREE_VEC_LENGTH (expr); i++) + { + tree res = propagate_unknowns (osi, TREE_VEC_ELT (expr, i)); + if (size_unknown_p (res, object_size_type)) + return res; + } + return expr; + case PLUS_EXPR: + case MINUS_EXPR: + { + tree res = propagate_unknowns (osi, TREE_OPERAND (expr, 0)); + if (size_unknown_p (res, object_size_type)) + return res; + + return expr; + } + default: + return expr; + } +} + +/* Walk through size expressions that need reexamination and generate + statements for them. */ + +static void +gimplify_size_expressions (object_size_info *osi) +{ + int object_size_type = osi->object_size_type; + bitmap_iterator bi; + unsigned int i; + bool changed; + + /* Step 1: Propagate unknowns into expressions. */ + bitmap reexamine = BITMAP_ALLOC (NULL); + bitmap_copy (reexamine, osi->reexamine); + do + { + changed = false; + EXECUTE_IF_SET_IN_BITMAP (reexamine, 0, i, bi) + { + object_size cur = object_sizes_get_raw (osi, i); + + if (size_unknown_p (propagate_unknowns (osi, cur.size), + object_size_type) + || size_unknown_p (propagate_unknowns (osi, cur.wholesize), + object_size_type)) + { + object_sizes_set (osi, i, + size_unknown (object_size_type), + size_unknown (object_size_type)); + changed = true; + } + } + bitmap_copy (reexamine, osi->reexamine); + } + while (changed); + + /* Release all unknowns. */ + EXECUTE_IF_SET_IN_BITMAP (osi->unknowns, 0, i, bi) + release_ssa_name (ssa_name (i)); + + /* Expand all size expressions to put their definitions close to the objects + for which size is being computed. */ + EXECUTE_IF_SET_IN_BITMAP (osi->reexamine, 0, i, bi) + { + gimple_seq seq = NULL; + object_size osize = object_sizes_get_raw (osi, i); + + gimple *stmt = SSA_NAME_DEF_STMT (ssa_name (i)); + enum gimple_code code = gimple_code (stmt); + + /* PHI nodes need special attention. */ + if (code == GIMPLE_PHI) + emit_phi_nodes (stmt, osize.size, osize.wholesize); + else + { + tree size_expr = NULL_TREE; + + /* Bundle wholesize in with the size to gimplify if needed. */ + if (osize.wholesize != osize.size + && !size_usable_p (osize.wholesize)) + size_expr = size_binop (COMPOUND_EXPR, + osize.wholesize, + osize.size); + else if (!size_usable_p (osize.size)) + size_expr = osize.size; + + if (size_expr) + { + gimple_stmt_iterator gsi; + if (code == GIMPLE_NOP) + gsi = gsi_start_bb (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun))); + else + gsi = gsi_for_stmt (stmt); + + force_gimple_operand (size_expr, &seq, true, NULL); + gsi_insert_seq_before (&gsi, seq, GSI_CONTINUE_LINKING); + } + } + + /* We're done, so replace the MODIFY_EXPRs with the SSA names. */ + object_sizes_initialize (osi, i, + object_sizes_get (osi, i), + object_sizes_get (osi, i, true)); + } +} /* Compute __builtin_object_size value for PTR and set *PSIZE to the resulting value. If the declared object is known and PDECL @@ -716,11 +1053,11 @@ compute_builtin_object_size (tree ptr, int object_size_type, tree offset = gimple_assign_rhs2 (def); ptr = gimple_assign_rhs1 (def); - if (tree_fits_shwi_p (offset) + if (((object_size_type & OST_DYNAMIC) + || tree_fits_shwi_p (offset)) && compute_builtin_object_size (ptr, object_size_type, psize)) { - /* Return zero when the offset is out of bounds. */ *psize = size_for_offset (*psize, offset); return true; } @@ -749,9 +1086,15 @@ compute_builtin_object_size (tree ptr, int object_size_type, osi.visited = BITMAP_ALLOC (NULL); osi.reexamine = BITMAP_ALLOC (NULL); - osi.depths = NULL; - osi.stack = NULL; - osi.tos = NULL; + + if (object_size_type & OST_DYNAMIC) + osi.unknowns = BITMAP_ALLOC (NULL); + else + { + osi.depths = NULL; + osi.stack = NULL; + osi.tos = NULL; + } /* First pass: walk UD chains, compute object sizes that can be computed. osi.reexamine bitmap at the end will @@ -761,6 +1104,14 @@ compute_builtin_object_size (tree ptr, int object_size_type, osi.changed = false; collect_object_sizes_for (&osi, ptr); + if (object_size_type & OST_DYNAMIC) + { + osi.pass = 1; + gimplify_size_expressions (&osi); + BITMAP_FREE (osi.unknowns); + bitmap_clear (osi.reexamine); + } + /* Second pass: keep recomputing object sizes of variables that need reexamination, until no object sizes are increased or all object sizes are computed. */ @@ -891,6 +1242,9 @@ call_object_size (struct object_size_info *osi, tree ptr, gcall *call) gcc_assert (osi->pass == 0); tree bytes = alloc_object_size (call, object_size_type); + if (!size_valid_p (bytes, object_size_type)) + bytes = size_unknown (object_size_type); + object_sizes_set (osi, varno, bytes, bytes); } @@ -969,9 +1323,8 @@ plus_stmt_object_size (struct object_size_info *osi, tree var, gimple *stmt) return false; /* Handle PTR + OFFSET here. */ - if (TREE_CODE (op1) == INTEGER_CST - && (TREE_CODE (op0) == SSA_NAME - || TREE_CODE (op0) == ADDR_EXPR)) + if (size_valid_p (op1, object_size_type) + && (TREE_CODE (op0) == SSA_NAME || TREE_CODE (op0) == ADDR_EXPR)) { if (TREE_CODE (op0) == SSA_NAME) { @@ -990,23 +1343,46 @@ plus_stmt_object_size (struct object_size_info *osi, tree var, gimple *stmt) addr_object_size (osi, op0, object_size_type, &bytes, &wholesize); } - /* In the first pass, do not compute size for offset if either the - maximum size is unknown or the minimum size is not initialized yet; - the latter indicates a dependency loop and will be resolved in - subsequent passes. We attempt to compute offset for 0 minimum size - too because a negative offset could be within bounds of WHOLESIZE, - giving a non-zero result for VAR. */ - if (osi->pass != 0 || !size_unknown_p (bytes, 0)) + /* size_for_offset doesn't make sense for -1 size, but it does for size 0 + since the wholesize could be non-zero and a negative offset could give + a non-zero size. */ + if (!size_unknown_p (bytes, 0)) bytes = size_for_offset (bytes, op1, wholesize); } else bytes = wholesize = size_unknown (object_size_type); + if (!size_valid_p (bytes, object_size_type) + || !size_valid_p (wholesize, object_size_type)) + bytes = wholesize = size_unknown (object_size_type); + if (object_sizes_set (osi, varno, bytes, wholesize)) osi->changed = true; return reexamine; } +/* Compute the dynamic object size for VAR. Return the result in SIZE and + WHOLESIZE. */ + +static void +dynamic_object_size (struct object_size_info *osi, tree var, + tree *size, tree *wholesize) +{ + int object_size_type = osi->object_size_type; + + if (TREE_CODE (var) == SSA_NAME) + { + unsigned varno = SSA_NAME_VERSION (var); + + collect_object_sizes_for (osi, var); + *size = object_sizes_get (osi, varno); + *wholesize = object_sizes_get (osi, varno, true); + } + else if (TREE_CODE (var) == ADDR_EXPR) + addr_object_size (osi, var, object_size_type, size, wholesize); + else + *size = *wholesize = size_unknown (object_size_type); +} /* Compute object_sizes for VAR, defined at STMT, which is a COND_EXPR. Return true if the object size might need reexamination @@ -1028,6 +1404,33 @@ cond_expr_object_size (struct object_size_info *osi, tree var, gimple *stmt) then_ = gimple_assign_rhs2 (stmt); else_ = gimple_assign_rhs3 (stmt); + if (object_size_type & OST_DYNAMIC) + { + tree then_size, then_wholesize, else_size, else_wholesize; + + dynamic_object_size (osi, then_, &then_size, &then_wholesize); + if (!size_unknown_p (then_size, object_size_type)) + dynamic_object_size (osi, else_, &else_size, &else_wholesize); + + tree cond_size, cond_wholesize; + if (size_unknown_p (then_size, object_size_type) + || size_unknown_p (else_size, object_size_type)) + cond_size = cond_wholesize = size_unknown (object_size_type); + else + { + cond_size = fold_build3 (COND_EXPR, sizetype, + gimple_assign_rhs1 (stmt), + then_size, else_size); + cond_wholesize = fold_build3 (COND_EXPR, sizetype, + gimple_assign_rhs1 (stmt), + then_wholesize, else_wholesize); + } + + object_sizes_set (osi, varno, cond_size, cond_wholesize); + + return false; + } + if (TREE_CODE (then_) == SSA_NAME) reexamine |= merge_object_sizes (osi, var, then_); else @@ -1044,6 +1447,113 @@ cond_expr_object_size (struct object_size_info *osi, tree var, gimple *stmt) return reexamine; } +/* Find size of an object passed as a parameter to the function. */ + +static void +parm_object_size (struct object_size_info *osi, tree var) +{ + int object_size_type = osi->object_size_type; + tree parm = SSA_NAME_VAR (var); + + if (!(object_size_type & OST_DYNAMIC) || !POINTER_TYPE_P (TREE_TYPE (parm))) + { + expr_object_size (osi, var, parm); + return; + } + + /* Look for access attribute. */ + rdwr_map rdwr_idx; + + tree fndecl = cfun->decl; + const attr_access *access = get_parm_access (rdwr_idx, parm, fndecl); + tree typesize = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (parm))); + tree sz = NULL_TREE; + + if (access && access->sizarg != UINT_MAX) + { + tree fnargs = DECL_ARGUMENTS (fndecl); + tree arg = NULL_TREE; + unsigned argpos = 0; + + /* Walk through the parameters to pick the size parameter and safely + scale it by the type size. */ + for (arg = fnargs; arg; arg = TREE_CHAIN (arg), ++argpos) + if (argpos == access->sizarg && INTEGRAL_TYPE_P (TREE_TYPE (arg))) + { + sz = get_or_create_ssa_default_def (cfun, arg); + if (sz != NULL_TREE) + { + sz = fold_convert (sizetype, sz); + if (typesize) + sz = size_binop (MULT_EXPR, sz, typesize); + } + break; + } + } + if (!sz) + sz = size_unknown (object_size_type); + + object_sizes_set (osi, SSA_NAME_VERSION (var), sz, sz); +} + +/* Compute an object size expression for VAR, which is the result of a PHI + node. */ + +static void +phi_dynamic_object_size (struct object_size_info *osi, tree var) +{ + int object_size_type = osi->object_size_type; + unsigned int varno = SSA_NAME_VERSION (var); + gimple *stmt = SSA_NAME_DEF_STMT (var); + unsigned i, num_args = gimple_phi_num_args (stmt); + bool wholesize_needed = false; + + /* The extra space is for the PHI result at the end, which object_sizes_set + sets for us. */ + tree sizes = make_tree_vec (num_args + 1); + tree wholesizes = make_tree_vec (num_args + 1); + + /* Bail out if the size of any of the PHI arguments cannot be + determined. */ + for (i = 0; i < num_args; i++) + { + edge e = gimple_phi_arg_edge (as_a <gphi *> (stmt), i); + if (e->flags & EDGE_COMPLEX) + break; + + tree rhs = gimple_phi_arg_def (stmt, i); + tree size, wholesize; + + dynamic_object_size (osi, rhs, &size, &wholesize); + + if (size_unknown_p (size, object_size_type)) + break; + + if (size != wholesize) + wholesize_needed = true; + + TREE_VEC_ELT (sizes, i) = size; + TREE_VEC_ELT (wholesizes, i) = wholesize; + } + + if (i < num_args) + { + ggc_free (sizes); + ggc_free (wholesizes); + sizes = wholesizes = size_unknown (object_size_type); + } + + /* Point to the same TREE_VEC so that we can avoid emitting two PHI + nodes. */ + else if (!wholesize_needed) + { + ggc_free (wholesizes); + wholesizes = sizes; + } + + object_sizes_set (osi, varno, sizes, wholesizes); +} + /* Compute object sizes for VAR. For ADDR_EXPR an object size is the number of remaining bytes to the end of the object (where what is considered an object depends on @@ -1089,6 +1599,9 @@ collect_object_sizes_for (struct object_size_info *osi, tree var) { /* Found a dependency loop. Mark the variable for later re-examination. */ + if (object_size_type & OST_DYNAMIC) + object_sizes_set_temp (osi, varno); + bitmap_set_bit (osi->reexamine, varno); if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -1160,7 +1673,7 @@ collect_object_sizes_for (struct object_size_info *osi, tree var) case GIMPLE_NOP: if (SSA_NAME_VAR (var) && TREE_CODE (SSA_NAME_VAR (var)) == PARM_DECL) - expr_object_size (osi, var, SSA_NAME_VAR (var)); + parm_object_size (osi, var); else /* Uninitialized SSA names point nowhere. */ unknown_object_size (osi, var); @@ -1170,6 +1683,12 @@ collect_object_sizes_for (struct object_size_info *osi, tree var) { unsigned i; + if (object_size_type & OST_DYNAMIC) + { + phi_dynamic_object_size (osi, var); + break; + } + for (i = 0; i < gimple_phi_num_args (stmt); i++) { tree rhs = gimple_phi_arg (stmt, i)->def; @@ -1192,7 +1711,8 @@ collect_object_sizes_for (struct object_size_info *osi, tree var) if (! reexamine || object_sizes_unknown_p (object_size_type, varno)) { bitmap_set_bit (computed[object_size_type], varno); - bitmap_clear_bit (osi->reexamine, varno); + if (!(object_size_type & OST_DYNAMIC)) + bitmap_clear_bit (osi->reexamine, varno); } else { diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index eef1f3e..36097cf 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -412,7 +412,7 @@ extern gimple_opt_pass *make_pass_early_thread_jumps (gcc::context *ctxt); extern gimple_opt_pass *make_pass_split_crit_edges (gcc::context *ctxt); extern gimple_opt_pass *make_pass_laddress (gcc::context *ctxt); extern gimple_opt_pass *make_pass_pre (gcc::context *ctxt); -extern unsigned int tail_merge_optimize (unsigned int); +extern unsigned int tail_merge_optimize (unsigned int, bool); extern gimple_opt_pass *make_pass_profile (gcc::context *ctxt); extern gimple_opt_pass *make_pass_strip_predict_hints (gcc::context *ctxt); extern gimple_opt_pass *make_pass_lower_complex_O0 (gcc::context *ctxt); diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index c2bdfb5..3526625 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -53,19 +53,19 @@ static const char *op_symbol (const_tree); static void newline_and_indent (pretty_printer *, int); static void maybe_init_pretty_print (FILE *); static void print_struct_decl (pretty_printer *, const_tree, int, dump_flags_t); -static void do_niy (pretty_printer *, const_tree, dump_flags_t); +static void do_niy (pretty_printer *, const_tree, int, dump_flags_t); #define INDENT(SPACE) do { \ int i; for (i = 0; i<SPACE; i++) pp_space (pp); } while (0) -#define NIY do_niy (pp, node, flags) +#define NIY do_niy (pp, node, spc, flags) static pretty_printer *tree_pp; /* Try to print something for an unknown tree code. */ static void -do_niy (pretty_printer *pp, const_tree node, dump_flags_t flags) +do_niy (pretty_printer *pp, const_tree node, int spc, dump_flags_t flags) { int i, len; @@ -77,8 +77,8 @@ do_niy (pretty_printer *pp, const_tree node, dump_flags_t flags) len = TREE_OPERAND_LENGTH (node); for (i = 0; i < len; ++i) { - newline_and_indent (pp, 2); - dump_generic_node (pp, TREE_OPERAND (node, i), 2, flags, false); + newline_and_indent (pp, spc+2); + dump_generic_node (pp, TREE_OPERAND (node, i), spc+2, flags, false); } } @@ -4397,6 +4397,7 @@ void print_call_name (pretty_printer *pp, tree node, dump_flags_t flags) { tree op0 = node; + int spc = 0; if (TREE_CODE (op0) == NON_LVALUE_EXPR) op0 = TREE_OPERAND (op0, 0); diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 889c028..e0ea2c7 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -4123,7 +4123,7 @@ get_repl_default_def_ssa_name (struct access *racc, tree reg_type) static void generate_subtree_deferred_init (struct access *access, tree init_type, - tree is_vla, + tree decl_name, gimple_stmt_iterator *gsi, location_t loc) { @@ -4135,7 +4135,7 @@ generate_subtree_deferred_init (struct access *access, gimple *call = gimple_build_call_internal (IFN_DEFERRED_INIT, 3, TYPE_SIZE_UNIT (TREE_TYPE (repl)), - init_type, is_vla); + init_type, decl_name); gimple_call_set_lhs (call, repl); gsi_insert_before (gsi, call, GSI_SAME_STMT); update_stmt (call); @@ -4144,7 +4144,7 @@ generate_subtree_deferred_init (struct access *access, } if (access->first_child) generate_subtree_deferred_init (access->first_child, init_type, - is_vla, gsi, loc); + decl_name, gsi, loc); access = access ->next_sibling; } @@ -4152,7 +4152,7 @@ generate_subtree_deferred_init (struct access *access, } /* For a call to .DEFERRED_INIT: - var = .DEFERRED_INIT (size_of_var, init_type, is_vla); + var = .DEFERRED_INIT (size_of_var, init_type, name_of_var); examine the LHS variable VAR and replace it with a scalar replacement if there is one, also replace the RHS call to a call to .DEFERRED_INIT of the corresponding scalar relacement variable. Examine the subtree and @@ -4164,7 +4164,7 @@ sra_modify_deferred_init (gimple *stmt, gimple_stmt_iterator *gsi) { tree lhs = gimple_call_lhs (stmt); tree init_type = gimple_call_arg (stmt, 1); - tree is_vla = gimple_call_arg (stmt, 2); + tree decl_name = gimple_call_arg (stmt, 2); struct access *lhs_access = get_access_for_expr (lhs); if (!lhs_access) @@ -4185,7 +4185,7 @@ sra_modify_deferred_init (gimple *stmt, gimple_stmt_iterator *gsi) if (lhs_access->first_child) generate_subtree_deferred_init (lhs_access->first_child, - init_type, is_vla, gsi, loc); + init_type, decl_name, gsi, loc); if (lhs_access->grp_covered) { unlink_stmt_vdef (stmt); diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c index 4f1e353..e2ac204 100644 --- a/gcc/tree-ssa-loop-ivcanon.c +++ b/gcc/tree-ssa-loop-ivcanon.c @@ -720,7 +720,7 @@ try_unroll_loop_completely (class loop *loop, exit = NULL; /* See if we can improve our estimate by using recorded loop bounds. */ - if ((allow_peel || maxiter == 0 || ul == UL_NO_GROWTH) + if ((maxiter == 0 || ul != UL_SINGLE_ITER) && maxiter >= 0 && (!n_unroll_found || (unsigned HOST_WIDE_INT)maxiter < n_unroll)) { @@ -729,6 +729,10 @@ try_unroll_loop_completely (class loop *loop, /* Loop terminates before the IV variable test, so we cannot remove it in the last iteration. */ edge_to_cancel = NULL; + /* If we do not allow peeling and we iterate just allow cases + that do not grow code. */ + if (!allow_peel && maxiter != 0) + ul = UL_NO_GROWTH; } if (!n_unroll_found) diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index c4564f9..1b6a57b 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -207,6 +207,9 @@ static struct /* Number of divmod calls inserted. */ int divmod_calls_inserted; + + /* Number of highpart multiplication ops inserted. */ + int highpart_mults_inserted; } widen_mul_stats; /* The instance of "struct occurrence" representing the highest @@ -4548,9 +4551,96 @@ convert_to_divmod (gassign *stmt) return true; } +/* Process a single gimple assignment STMT, which has a RSHIFT_EXPR as + its rhs, and try to convert it into a MULT_HIGHPART_EXPR. The return + value is true iff we converted the statement. */ + +static bool +convert_mult_to_highpart (gassign *stmt, gimple_stmt_iterator *gsi) +{ + tree lhs = gimple_assign_lhs (stmt); + tree stype = TREE_TYPE (lhs); + tree sarg0 = gimple_assign_rhs1 (stmt); + tree sarg1 = gimple_assign_rhs2 (stmt); + + if (TREE_CODE (stype) != INTEGER_TYPE + || TREE_CODE (sarg1) != INTEGER_CST + || TREE_CODE (sarg0) != SSA_NAME + || !tree_fits_uhwi_p (sarg1) + || !has_single_use (sarg0)) + return false; + + gassign *def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (sarg0)); + if (!def) + return false; + + enum tree_code mcode = gimple_assign_rhs_code (def); + if (mcode == NOP_EXPR) + { + tree tmp = gimple_assign_rhs1 (def); + if (TREE_CODE (tmp) != SSA_NAME || !has_single_use (tmp)) + return false; + def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (tmp)); + if (!def) + return false; + mcode = gimple_assign_rhs_code (def); + } + + if (mcode != WIDEN_MULT_EXPR + || gimple_bb (def) != gimple_bb (stmt)) + return false; + tree mtype = TREE_TYPE (gimple_assign_lhs (def)); + if (TREE_CODE (mtype) != INTEGER_TYPE + || TYPE_PRECISION (mtype) != TYPE_PRECISION (stype)) + return false; + + tree mop1 = gimple_assign_rhs1 (def); + tree mop2 = gimple_assign_rhs2 (def); + tree optype = TREE_TYPE (mop1); + bool unsignedp = TYPE_UNSIGNED (optype); + unsigned int prec = TYPE_PRECISION (optype); + + if (unsignedp != TYPE_UNSIGNED (mtype) + || TYPE_PRECISION (mtype) != 2 * prec) + return false; + + unsigned HOST_WIDE_INT bits = tree_to_uhwi (sarg1); + if (bits < prec || bits >= 2 * prec) + return false; + + machine_mode mode = TYPE_MODE (optype); + optab tab = unsignedp ? umul_highpart_optab : smul_highpart_optab; + if (optab_handler (tab, mode) == CODE_FOR_nothing) + return false; + + location_t loc = gimple_location (stmt); + tree highpart1 = build_and_insert_binop (gsi, loc, "highparttmp", + MULT_HIGHPART_EXPR, mop1, mop2); + tree highpart2 = highpart1; + tree ntype = optype; + + if (TYPE_UNSIGNED (stype) != TYPE_UNSIGNED (optype)) + { + ntype = TYPE_UNSIGNED (stype) ? unsigned_type_for (optype) + : signed_type_for (optype); + highpart2 = build_and_insert_cast (gsi, loc, ntype, highpart1); + } + if (bits > prec) + highpart2 = build_and_insert_binop (gsi, loc, "highparttmp", + RSHIFT_EXPR, highpart2, + build_int_cst (ntype, bits - prec)); + + gassign *new_stmt = gimple_build_assign (lhs, NOP_EXPR, highpart2); + gsi_replace (gsi, new_stmt, true); + + widen_mul_stats.highpart_mults_inserted++; + return true; +} + + /* Find integer multiplications where the operands are extended from smaller types, and replace the MULT_EXPR with a WIDEN_MULT_EXPR - where appropriate. */ + or MULT_HIGHPART_EXPR where appropriate. */ namespace { @@ -4656,6 +4746,10 @@ math_opts_dom_walker::after_dom_children (basic_block bb) convert_to_divmod (as_a<gassign *> (stmt)); break; + case RSHIFT_EXPR: + convert_mult_to_highpart (as_a<gassign *> (stmt), &gsi); + break; + default:; } } @@ -4738,6 +4832,8 @@ pass_optimize_widening_mul::execute (function *fun) widen_mul_stats.fmas_inserted); statistics_counter_event (fun, "divmod calls inserted", widen_mul_stats.divmod_calls_inserted); + statistics_counter_event (fun, "highpart multiplications inserted", + widen_mul_stats.highpart_mults_inserted); return cfg_changed ? TODO_cleanup_cfg : 0; } diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index f67bd07..ab24fa9 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -4306,7 +4306,6 @@ fini_pre () value_expressions.release (); constant_value_expressions.release (); expressions.release (); - BITMAP_FREE (inserted_exprs); bitmap_obstack_release (&grand_bitmap_obstack); bitmap_set_pool.release (); pre_expr_pool.release (); @@ -4431,16 +4430,28 @@ pass_pre::execute (function *fun) vn_valueize = NULL; + fini_pre (); + + scev_finalize (); + loop_optimizer_finalize (); + + /* Perform a CFG cleanup before we run simple_dce_from_worklist since + unreachable code regions will have not up-to-date SSA form which + confuses it. */ + bool need_crit_edge_split = false; + if (todo & TODO_cleanup_cfg) + { + cleanup_tree_cfg (); + todo &= ~TODO_cleanup_cfg; + need_crit_edge_split = true; + } + /* Because we don't follow exactly the standard PRE algorithm, and decide not to insert PHI nodes sometimes, and because value numbering of casts isn't perfect, we sometimes end up inserting dead code. This simple DCE-like pass removes any insertions we made that weren't actually used. */ simple_dce_from_worklist (inserted_exprs); - - fini_pre (); - - scev_finalize (); - loop_optimizer_finalize (); + BITMAP_FREE (inserted_exprs); /* TODO: tail_merge_optimize may merge all predecessors of a block, in which case we can merge the block with the remaining predecessor of the block. @@ -4449,7 +4460,7 @@ pass_pre::execute (function *fun) - call merge_blocks after all tail merge iterations - mark TODO_cleanup_cfg when necessary - share the cfg cleanup with fini_pre. */ - todo |= tail_merge_optimize (todo); + todo |= tail_merge_optimize (todo, need_crit_edge_split); free_rpo_vn (); diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index f717bb2..fd33380 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1724,7 +1724,7 @@ update_debug_stmts (void) /* Runs tail merge optimization. */ unsigned int -tail_merge_optimize (unsigned int todo) +tail_merge_optimize (unsigned int todo, bool need_crit_edge_split) { int nr_bbs_removed_total = 0; int nr_bbs_removed; @@ -1738,15 +1738,9 @@ tail_merge_optimize (unsigned int todo) timevar_push (TV_TREE_TAIL_MERGE); - /* We enter from PRE which has critical edges split. Elimination - does not process trivially dead code so cleanup the CFG if we - are told so. And re-split critical edges then. */ - if (todo & TODO_cleanup_cfg) - { - cleanup_tree_cfg (); - todo &= ~TODO_cleanup_cfg; - split_edges_for_insertion (); - } + /* Re-split critical edges when PRE did a CFG cleanup. */ + if (need_crit_edge_split) + split_edges_for_insertion (); if (!dom_info_available_p (CDI_DOMINATORS)) { diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 2b3ec62..dd20ed9 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2721,7 +2721,20 @@ vect_analyze_group_access_1 (vec_info *vinfo, dr_vec_info *dr_info) /* Check that the distance between two accesses is equal to the type size. Otherwise, we have gaps. */ diff = (TREE_INT_CST_LOW (DR_INIT (data_ref)) - - TREE_INT_CST_LOW (prev_init)) / type_size; + - TREE_INT_CST_LOW (prev_init)) / type_size; + if (diff < 1 || diff > UINT_MAX) + { + /* For artificial testcases with array accesses with large + constant indices we can run into overflow issues which + can end up fooling the groupsize constraint below so + check the individual gaps (which are represented as + unsigned int) as well. */ + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "interleaved access with gap larger " + "than representable\n"); + return false; + } if (diff != 1) { /* FORNOW: SLP of accesses with gaps is not supported. */ diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 6afb699..5814a71 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -1052,7 +1052,9 @@ expand_vector_condition (gimple_stmt_iterator *gsi, bitmap dce_ssa_names) } } - if (expand_vec_cond_expr_p (type, TREE_TYPE (a1), code)) + if (expand_vec_cond_expr_p (type, TREE_TYPE (a1), code) + || (integer_all_onesp (b) && integer_zerop (c) + && expand_vec_cmp_expr_p (type, TREE_TYPE (a1), code))) { gcc_assert (TREE_CODE (a) == SSA_NAME || TREE_CODE (a) == VECTOR_CST); return true; diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index ebd7d9c..6ed2b5f 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2936,8 +2936,6 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared) machine_mode autodetected_vector_mode = VOIDmode; opt_loop_vec_info first_loop_vinfo = opt_loop_vec_info::success (NULL); unsigned int mode_i = 0; - unsigned int first_loop_i = 0; - unsigned int first_loop_next_i = 0; unsigned HOST_WIDE_INT simdlen = loop->simdlen; /* First determine the main loop vectorization mode, either the first @@ -2946,7 +2944,6 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared) lowest cost if pick_lowest_cost_p. */ while (1) { - unsigned int loop_vinfo_i = mode_i; bool fatal; opt_loop_vec_info loop_vinfo = vect_analyze_loop_1 (loop, shared, &loop_form_info, @@ -2975,11 +2972,7 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared) first_loop_vinfo = opt_loop_vec_info::success (NULL); } if (first_loop_vinfo == NULL) - { - first_loop_vinfo = loop_vinfo; - first_loop_i = loop_vinfo_i; - first_loop_next_i = mode_i; - } + first_loop_vinfo = loop_vinfo; else { delete loop_vinfo; @@ -3025,32 +3018,37 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared) /* Now analyze first_loop_vinfo for epilogue vectorization. */ poly_uint64 lowest_th = LOOP_VINFO_VERSIONING_THRESHOLD (first_loop_vinfo); - /* Handle the case that the original loop can use partial - vectorization, but want to only adopt it for the epilogue. - The retry should be in the same mode as original. */ - if (LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P (first_loop_vinfo)) + /* For epilogues start the analysis from the first mode. The motivation + behind starting from the beginning comes from cases where the VECTOR_MODES + array may contain length-agnostic and length-specific modes. Their + ordering is not guaranteed, so we could end up picking a mode for the main + loop that is after the epilogue's optimal mode. */ + mode_i = 1; + bool supports_partial_vectors = partial_vectors_supported_p (); + poly_uint64 first_vinfo_vf = LOOP_VINFO_VECT_FACTOR (first_loop_vinfo); + + while (1) { - gcc_assert (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (first_loop_vinfo) - && !LOOP_VINFO_USING_PARTIAL_VECTORS_P (first_loop_vinfo)); + /* If the target does not support partial vectors we can shorten the + number of modes to analyze for the epilogue as we know we can't pick a + mode that has at least as many NUNITS as the main loop's vectorization + factor, since that would imply the epilogue's vectorization factor + would be at least as high as the main loop's and we would be + vectorizing for more scalar iterations than there would be left. */ + if (!supports_partial_vectors + && maybe_ge (GET_MODE_NUNITS (vector_modes[mode_i]), first_vinfo_vf)) + { + mode_i++; + if (mode_i == vector_modes.length ()) + break; + continue; + } + if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, - "***** Re-trying analysis with same vector mode" - " %s for epilogue with partial vectors.\n", - GET_MODE_NAME (first_loop_vinfo->vector_mode)); - mode_i = first_loop_i; - } - else - { - mode_i = first_loop_next_i; - if (mode_i == vector_modes.length ()) - return first_loop_vinfo; - } - - /* ??? If first_loop_vinfo was using VOIDmode then we probably - want to instead search for the corresponding mode in vector_modes[]. */ + "***** Re-trying epilogue analysis with vector " + "mode %s\n", GET_MODE_NAME (vector_modes[mode_i])); - while (1) - { bool fatal; opt_loop_vec_info loop_vinfo = vect_analyze_loop_1 (loop, shared, &loop_form_info, @@ -3102,11 +3100,6 @@ vect_analyze_loop (class loop *loop, vec_info_shared *shared) if (mode_i == vector_modes.length ()) break; - /* Try the next biggest vector size. */ - if (dump_enabled_p ()) - dump_printf_loc (MSG_NOTE, vect_location, - "***** Re-trying epilogue analysis with vector " - "mode %s\n", GET_MODE_NAME (vector_modes[mode_i])); } if (!first_loop_vinfo->epilogue_vinfos.is_empty ()) @@ -7850,17 +7843,15 @@ vectorizable_phi (vec_info *, && !useless_type_conversion_p (vectype, SLP_TREE_VECTYPE (child))) { - /* With bools we can have mask and non-mask precision vectors, - while pattern recog is supposed to guarantee consistency here - bugs in it can cause mismatches (PR103489 for example). + /* With bools we can have mask and non-mask precision vectors + or different non-mask precisions. while pattern recog is + supposed to guarantee consistency here bugs in it can cause + mismatches (PR103489 and PR103800 for example). Deal with them here instead of ICEing later. */ if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "incompatible vector type setup from " "bool pattern detection\n"); - gcc_checking_assert - (VECTOR_BOOLEAN_TYPE_P (SLP_TREE_VECTYPE (child)) - != VECTOR_BOOLEAN_TYPE_P (vectype)); return false; } diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 3566752..c3a1681 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -3325,8 +3325,13 @@ vect_analyze_slp_instance (vec_info *vinfo, = as_a <loop_vec_info> (vinfo)->reductions; scalar_stmts.create (reductions.length ()); for (i = 0; reductions.iterate (i, &next_info); i++) - if (STMT_VINFO_RELEVANT_P (next_info) - || STMT_VINFO_LIVE_P (next_info)) + if ((STMT_VINFO_RELEVANT_P (next_info) + || STMT_VINFO_LIVE_P (next_info)) + /* ??? Make sure we didn't skip a conversion around a reduction + path. In that case we'd have to reverse engineer that conversion + stmt following the chain using reduc_idx and from the PHI + using reduc_def. */ + && STMT_VINFO_DEF_TYPE (next_info) == vect_reduction_def) scalar_stmts.quick_push (next_info); /* If less than two were relevant/live there's nothing to SLP. */ if (scalar_stmts.length () < 2) @@ -3419,13 +3424,8 @@ vect_analyze_slp (vec_info *vinfo, unsigned max_tree_size) vinfo = next; } STMT_VINFO_DEF_TYPE (first_element) = vect_internal_def; - /* It can be still vectorized as part of an SLP reduction. - ??? But only if we didn't skip a conversion around the group. - In that case we'd have to reverse engineer that conversion - stmt following the chain using reduc_idx and from the PHI - using reduc_def. */ - if (STMT_VINFO_DEF_TYPE (last) == vect_reduction_def) - loop_vinfo->reductions.safe_push (last); + /* It can be still vectorized as part of an SLP reduction. */ + loop_vinfo->reductions.safe_push (last); } /* Find SLP sequences starting from groups of reductions. */ diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index e82750c..48eed40 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1887,11 +1887,13 @@ vector_costs::better_epilogue_loop_than_p (const vector_costs *other, { unsigned HOST_WIDE_INT main_vf_max = estimated_poly_value (main_poly_vf, POLY_VALUE_MAX); + unsigned HOST_WIDE_INT other_vf_max + = estimated_poly_value (other_vf, POLY_VALUE_MAX); + unsigned HOST_WIDE_INT this_vf_max + = estimated_poly_value (this_vf, POLY_VALUE_MAX); - other_factor = main_vf_max / estimated_poly_value (other_vf, - POLY_VALUE_MAX); - this_factor = main_vf_max / estimated_poly_value (this_vf, - POLY_VALUE_MAX); + other_factor = CEIL (main_vf_max, other_vf_max); + this_factor = CEIL (main_vf_max, this_vf_max); /* If the loop is not using partial vectors then it will iterate one time less than one that does. It is safe to subtract one here, diff --git a/gcc/tree.def b/gcc/tree.def index 33eb3b7..36b91f0 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -470,7 +470,11 @@ DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1) OBJ_TYPE_REF_OBJECT: Is the object on whose behalf the lookup is being performed. Through this the optimizers may be able to statically determine the dynamic type of the object. - OBJ_TYPE_REF_TOKEN: An integer index to the virtual method table. */ + OBJ_TYPE_REF_TOKEN: An integer index to the virtual method table. + The integer index should have as type the original type of + OBJ_TYPE_REF_OBJECT; as pointer type conversions are useless in GIMPLE, + the type of OBJ_TYPE_REF_OBJECT can change to an unrelated pointer + type during optimizations. */ DEFTREECODE (OBJ_TYPE_REF, "obj_type_ref", tcc_expression, 3) /* Used to represent the brace-enclosed initializers for a structure or an |