aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2021-07-08[Ada] Transient scope cleanupBob Duff7-20/+24
gcc/ada/ * comperr.adb (Compiler_Abort): Call Sinput.Unlock, because if this is called late, then Source_Dump would crash otherwise. * debug.adb: Correct documentation of the -gnatd.9 switch. * exp_ch4.adb (Expand_Allocator_Expression): Add a comment. * exp_ch6.adb: Minor comment fixes. Add assertion. * exp_ch6.ads (Is_Build_In_Place_Result_Type): Correct comment. * exp_ch7.adb, checks.ads: Minor comment fixes.
2021-07-08[Ada] Rename sigtramp-vxworks-target.inc to sigtramp-vxworks-target.hDoug Rupp3-3/+3
gcc/ada/ * sigtramp-vxworks-target.inc: Rename to... * sigtramp-vxworks-target.h: ... this. * sigtramp-vxworks.c, Makefile.rtl: Likewise.
2021-07-08[Ada] Duplicated D lines in ali filesGhjuvan Lacambre2-1/+6
gcc/ada/ * lib-writ.ads: Mention SCOs dependency as reason for duplicates. * lib.ads (Units): Update documentation to mention duplicated units.
2021-07-08[Ada] Spurious style message on missing overriding indicatorEd Schonberg1-0/+4
gcc/ada/ * style.adb (Missing_Overriding): Do not emit message when parent of subprogram is a full type declaration.
2021-07-08[Ada] AI12-0156 Use subtype indication in generalized iteratorsArnaud Charlet2-15/+80
gcc/ada/ * par-ch5.adb (P_Iterator_Specification): Add support for access definition in loop parameter. * sem_ch5.adb (Check_Subtype_Indication): Renamed... (Check_Subtype_Definition): ... into this and check for conformance on access definitions, and improve error messages. (Analyze_Iterator_Specification): Add support for access definition in loop parameter.
2021-07-08[Ada] Spurious warning in generic instanceArnaud Charlet3-17/+24
gcc/ada/ * sem_util.ads, sem_util.adb (Apply_Compile_Time_Constraint_Error): New parameter Emit_Message. * sem_ch4.adb (Analyze_Selected_Component): Disable warning within an instance.
2021-07-08[Ada] Fix violation of No_Implicit_Loops restriction for enumeration typeEric Botcazou1-3/+8
gcc/ada/ * exp_imgv.adb: Add with and use clause for Restrict and Rident. (Build_Enumeration_Image_Tables): Do not generate the hash function if the No_Implicit_Loops restriction is active.
2021-07-08[Ada] Simplify redundant checks for non-empty listsPiotr Trojanek4-11/+3
gcc/ada/ * sem_ch12.adb, sem_ch6.adb, sem_ch9.adb, sprint.adb: Simplify checks for non-empty lists.
2021-07-08[Ada] Remove redundant condition for listing compilation unitsPiotr Trojanek1-14/+12
gcc/ada/ * par-ch10.adb (Unit_Display): Remove redundant condition; fix whitespace.
2021-07-08[Ada] Restore context on failure in loading of renamed child unitPiotr Trojanek1-2/+2
gcc/ada/ * lib-load.adb (Load): Replace early return with goto to properly restore context on failure.
2021-07-08[Ada] Replace low-level condition with a high-level callPiotr Trojanek1-1/+1
gcc/ada/ * lib-writ.adb (Ensure_System_Dependency): Simplify condition.
2021-07-08[Ada] Fix style in comments and code related to compilation unitsPiotr Trojanek3-14/+14
gcc/ada/ * lib-load.adb (Load_Unit): Fix style in comment. * par-load.adb (Load): Likewise. * scng.adb (Initialize_Scanner): Fix whitespace.
2021-07-08[Ada] Prevent infinite recursion when there is no expected unitPiotr Trojanek1-2/+3
gcc/ada/ * par-load.adb (Load): Don't remove unit, but flag it as erroneous and return.
2021-07-08[Ada] Fix use of single question mark in error messageGhjuvan Lacambre1-1/+1
gcc/ada/ * exp_prag.adb (Expand_Pragma_Inspection_Point): Fix error message.
2021-07-08[Ada] Skip types in error for test to compute array sizeYannick Moy1-0/+1
gcc/ada/ * layout.adb (Layout_Type): Do not call Number_Dimensions if the type does not have First_Index set.
2021-07-08[Ada] Prevent crash on inspection point for unfrozen entityGhjuvan Lacambre1-0/+31
gcc/ada/ * exp_prag.adb (Expand_Pragma_Inspection_Point): After expansion of the Inspection_Point pragma, check if referenced entities that have a freeze node are already frozen. If they aren't, emit a warning and turn the pragma into a no-op.
2021-07-08[Ada] Fix on computation of packed array size in case of errorYannick Moy1-9/+19
gcc/ada/ * layout.adb (Layout_Type): Add guard before calling Expr_Value.
2021-07-08[Ada] Compute sizes when possible for packed array with Component_SizeYannick Moy1-0/+42
gcc/ada/ * layout.adb (Layout_Type): Special case when RM_Size and Esize can be computed for packed arrays.
2021-07-08[Ada] Unsynchronized concurrent access to a Boolean variableSteve Baird3-21/+81
gcc/ada/ * rtsfind.ads, rtsfind.adb: Add support for finding the packages System.Atomic_Operations and System.Atomic_Operations.Test_And_Set and the declarations within that latter package of the type Test_And_Set_Flag and the function Atomic_Test_And_Set. * exp_ch11.adb (Expand_N_Exception_Declaration): If an exception is declared other than at library level, then we need to call Register_Exception the first time (and only the first time) the declaration is elaborated. In order to decide whether to perform this call for a given elaboration of the declaration, we used to unconditionally use a (library-level) Boolean variable. Now we instead use a variable of type System.Atomic_Operations.Test_And_Set.Test_And_Set_Flag unless either that type is unavailable or a No_Tasking restriction is in effect (in which case we use a Boolean variable as before).
2021-07-08[Ada] Add No_Tasking restriction is system.ads for bootstrapArnaud Charlet1-0/+4
gcc/ada/ * gcc-interface/system.ads: Add No_Tasking restriction.
2021-07-08[Ada] Incorrect iteration over hashed containers after multiple InsertsEd Schonberg4-4/+41
gcc/ada/ * libgnat/a-cohama.ads: Introduce an equality operator over cursors. * libgnat/a-cohase.ads: Ditto. * libgnat/a-cohama.adb: Add body for "=" over cursors. (Insert): Do not set the Position component of the cursor that denotes the inserted element. * libgnat/a-cohase.adb: Ditto.
2021-07-08[Ada] Make runtime code compatible with No_Dynamic_Accessibility_ChecksArnaud Charlet10-43/+40
gcc/ada/ * 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-cobove.adb, libgnat/a-textio.adb, libgnat/a-witeio.adb, libgnat/a-ztexio.adb: Make code compatible with No_Dynamic_Accessibility_Checks restriction.
2021-07-08[Ada] Revert meaning of -gnatd_bArnaud Charlet3-31/+34
gcc/ada/ * debug.adb, sem_util.adb: Revert meaning of -gnatd_b. * sem_res.adb: Minor reformatting.
2021-07-08[Ada] Make tools compatible with No_Dynamic_Accessibility_ChecksArnaud Charlet2-6/+8
gcc/ada/ * make.adb, osint.adb: Make code compatible with No_Dynamic_Accessibility_Checks restriction.
2021-07-08[Ada] Avoid linear search when ensuring dependency on SystemPiotr Trojanek1-7/+5
gcc/ada/ * lib-writ.adb (Ensure_System_Dependency): Replace search in Lib.Units with a search in Lib.Unit_Names.
2021-07-08[Ada] Simplify string manipulation related to preprocessingPiotr Trojanek1-17/+7
gcc/ada/ * sinput-l.adb (Load_File): Simplify foreword manipulation with concatenation; similar for filename with preprocessed output.
2021-07-08vect: Remove always-true conditionRichard Sandiford1-26/+24
vectorizable_reduction had code guarded by: if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def || STMT_VINFO_DEF_TYPE (stmt_info) == vect_double_reduction_def) But that's always true after: if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def && STMT_VINFO_DEF_TYPE (stmt_info) != vect_double_reduction_def && STMT_VINFO_DEF_TYPE (stmt_info) != vect_nested_cycle) return false; if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_nested_cycle) { … return true; } (I wasn't sure at first how the empty “else” for the first “if” above was supposed to work.) gcc/ * tree-vect-loop.c (vectorizable_reduction): Remove always-true if condition.
2021-07-08match.pd: Relax rule to include POLY_INT_CSTsRichard Sandiford2-1/+15
match.pd has a rule to simplify an extension, operation and truncation back to the original type: (simplify (convert (op:s@0 (convert1?@3 @1) (convert2?@4 @2))) Currently it handles cases in which @2 is an INTEGER_CST, but it also works for POLY_INT_CSTs.[*] For INTEGER_CST it doesn't matter whether we test @2 or @4, but for POLY_INT_CST it is possible to have unfolded (convert …)s. Originally I saw this leading to some bad ivopts decisions, because we weren't folding away redundancies from candidate iv expressions. It's also possible to test the fold directly using the SVE ACLE. [*] Not all INTEGER_CST rules work for POLY_INT_CSTs, since extensions don't necessarily distribute over the internals of the POLY_INT_CST. But in this case that isn't an issue. gcc/ * match.pd: Simplify an extend-operate-truncate sequence involving a POLY_INT_CST. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general/cntb_1.c: New test.
2021-07-08PR tree-optimization/40210: Fold (bswap(X)>>C1)&C2 to (X>>C3)&C2 in match.pdRoger Sayle3-2/+697
All of the optimizations/transformations mentioned in bugzilla for PR tree-optimization/40210 are already implemented in mainline GCC, with one exception. In comment #5, there's a suggestion that (bswap64(x)>>56)&0xff can be implemented without the bswap as (unsigned char)x, or equivalently x&0xff. This patch implements the above optimization, and closely related variants. For any single bit, (bswap(X)>>C1)&1 can be simplified to (X>>C2)&1, where bit position C2 is the appropriate permutation of C1. Similarly, the bswap can eliminated if the desired set of bits all lie within the same byte, hence (bswap(x)>>8)&255 can always be optimized, as can (bswap(x)>>8)&123. Previously, int foo(long long x) { return (__builtin_bswap64(x) >> 56) & 0xff; } compiled with -O2 to foo: movq %rdi, %rax bswap %rax shrq $56, %rax ret with this patch, it now compiles to foo: movzbl %dil, %eax ret 2021-07-08 Roger Sayle <roger@nextmovesoftware.com> Richard Biener <rguenther@suse.de> gcc/ChangeLog PR tree-optimization/40210 * match.pd (bswap optimizations): Simplify (bswap(x)>>C1)&C2 as (x>>C3)&C2 when possible. Simplify bswap(x)>>C1 as ((T)x)>>C2 when possible. Simplify bswap(x)&C1 as (x>>C2)&C1 when 0<=C1<=255. gcc/testsuite/ChangeLog PR tree-optimization/40210 * gcc.dg/builtin-bswap-13.c: New test. * gcc.dg/builtin-bswap-14.c: New test.
2021-07-08i386: Add pack/unpack patterns for 32bit vectors [PR100637]Uros Bizjak3-17/+105
V1SI mode shift is needed to shift 32bit operands and consequently we need to implement V1SI moves and pushes. 2021-07-08 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/100637 * config/i386/i386-expand.c (ix86_expand_sse_unpack): Handle V4QI mode. * config/i386/mmx.md (V_32): New mode iterator. (mov<V_32:mode>): Use V_32 mode iterator. (*mov<V_32:mode>_internal): Ditto. (*push<V_32:mode>2_rex64): Ditto. (*push<V_32:mode>2): Ditto. (movmisalign<V_32:mode>): Ditto. (mmx_<any_shiftrt:insn>v1si3): New insn pattern. (sse4_1_<any_extend:code>v2qiv2hi2): Ditto. (vec_unpacks_lo_v4qi): New expander. (vec_unpacks_hi_v4qi): Ditto. (vec_unpacku_lo_v4qi): Ditto. (vec_unpacku_hi_v4qi): Ditto. * config/i386/i386.h (VALID_SSE2_REG_MODE): Add V1SImode. (VALID_INT_MODE_P): Ditto.
2021-07-07Generate 128-bit int divide/modulus on power10.Michael Meissner2-0/+61
This patch adds support for the VDIVSQ, VDIVUQ, VMODSQ, and VMODUQ instructions to do 128-bit arithmetic. 2021-07-07 Michael Meissner <meissner@linux.ibm.com> gcc/ PR target/100809 * config/rs6000/rs6000.md (udivti3): New insn. (divti3): New insn. (umodti3): New insn. (modti3): New insn. gcc/testsuite/ PR target/100809 * gcc.target/powerpc/p10-vdivq-vmodq.c: New test.
2021-07-08Daily bump.GCC Administrator5-1/+410
2021-07-07analyzer: remove add_any_constraints_from_ssa_def_stmtDavid Malcolm17-270/+361
I'm working on reimplementing -Wanalyzer-use-of-uninitialized-value, but I ran into issues with region_model::add_any_constraints_from_ssa_def_stmt. This function is from the initial commit of the analyzer and walks the SSA names finding conditions that were missed due to the GCC 10 era region_model not retaining useful information on how values were created; as of GCC 11 the symbolic values contain this information, and so the conditions can be reconstructed from them instead. region_model::add_any_constraints_from_ssa_def_stmt is a liability when tracking uninitialized values as it requires looking up SSA values when those values may have been purged, thus greatly complicating detection of uses of uninitialized values. It's simplest to eliminate it and reimplement the condition-finding via the makeup of the svalues, which this patch does. Doing so requires supporting add_condition on svalues rather than just on trees, which requires some changes to ana::state_machine and its subclasses. gcc/analyzer/ChangeLog: * diagnostic-manager.cc (null_assignment_sm_context::get_state): New overload. (null_assignment_sm_context::set_next_state): New overload. (null_assignment_sm_context::get_diagnostic_tree): New. * engine.cc (impl_sm_context::get_state): New overload. (impl_sm_context::set_next_state): New overload. (impl_sm_context::get_diagnostic_tree): New overload. (impl_region_model_context::on_condition): Convert params from tree to const svalue *. * exploded-graph.h (impl_region_model_context::on_condition): Likewise. * region-model.cc (region_model::on_call_pre): Move handling of internal calls to before checking for get_fndecl_for_call. (region_model::add_constraints_from_binop): New. (region_model::add_constraint): Split out into a new overload working on const svalue * rather than tree. Call add_constraints_from_binop. Drop call to add_any_constraints_from_ssa_def_stmt. (region_model::add_any_constraints_from_ssa_def_stmt): Delete. (region_model::add_any_constraints_from_gassign): Delete. (region_model::add_any_constraints_from_gcall): Delete. * region-model.h (region_model::add_any_constraints_from_ssa_def_stmt): Delete. (region_model::add_any_constraints_from_gassign): Delete. (region_model::add_any_constraints_from_gcall): Delete. (region_model::add_constraint): Add overload decl. (region_model::add_constraints_from_binop): New decl. (region_model_context::on_condition): Convert params from tree to const svalue *. (noop_region_model_context::on_condition): Likewise. * sm-file.cc (fileptr_state_machine::condition): Likewise. * sm-malloc.cc (malloc_state_machine::on_condition): Likewise. * sm-pattern-test.cc: Include tristate.h, selftest.h, analyzer/call-string.h, analyzer/program-point.h, analyzer/store.h, and analyzer/region-model.h. (pattern_test_state_machine::on_condition): Convert params from tree to const svalue *. * sm-sensitive.cc (sensitive_state_machine::on_condition): Delete. * sm-signal.cc (signal_state_machine::on_condition): Delete. * sm-taint.cc (taint_state_machine::on_condition): Convert params from tree to const svalue *. * sm.cc: Include tristate.h, selftest.h, analyzer/call-string.h, analyzer/program-point.h, analyzer/store.h, and analyzer/region-model.h. (any_pointer_p): Add overload taking const svalue *sval. * sm.h (any_pointer_p): Add overload taking const svalue *sval. (state_machine::on_condition): Convert params from tree to const svalue *. Provide no-op default implementation. (sm_context::get_state): Add overload taking const svalue *sval. (sm_context::set_next_state): Likewise. (sm_context::on_transition): Likewise. (sm_context::get_diagnostic_tree): Likewise. * svalue.cc (svalue::all_zeroes_p): New. (constant_svalue::all_zeroes_p): New. (repeated_svalue::all_zeroes_p): Convert to vfunc. * svalue.h (svalue::all_zeroes_p): New decl. (constant_svalue::all_zeroes_p): New decl. (repeated_svalue::all_zeroes_p): Convert decl to vfunc. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/pattern-test-2.c: Update expected results. * gcc.dg/plugin/analyzer_gil_plugin.c (gil_state_machine::on_condition): Remove. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-07-07Correct handling of variable offset minus constant in -Warray-bounds [PR100137]Martin Sebor31-371/+817
Resolves: PR tree-optimization/100137 - -Warray-bounds false positive on varying offset plus negative PR tree-optimization/99121 - ICE in -Warray-bounds on a multidimensional PR tree-optimization/97027 - missing warning on buffer overflow storing a larger scalar into a smaller array gcc/ChangeLog: PR tree-optimization/100137 PR tree-optimization/99121 PR tree-optimization/97027 * builtins.c (access_ref::access_ref): Also set offmax. (access_ref::offset_in_range): Define new function. (access_ref::add_offset): Set offmax. (access_ref::inform_access): Handle access_none. (handle_mem_ref): Clear ostype. (compute_objsize_r): Handle ASSERT_EXPR. * builtins.h (struct access_ref): Add offmax member. * gimple-array-bounds.cc (array_bounds_checker::check_mem_ref): Use compute_objsize() and simplify. gcc/testsuite/ChangeLog: PR tree-optimization/100137 PR tree-optimization/99121 PR tree-optimization/97027 * c-c++-common/Warray-bounds-3.c: Remove xfail * c-c++-common/Warray-bounds-4.c: Add an expected warning. * c-c++-common/Warray-bounds-9.c: New test. * c-c++-common/Warray-bounds-10.c: New test. * g++.dg/asan/asan_test.C: Suppress expected warnings. * g++.dg/pr95768.C: Same. * g++.dg/warn/Warray-bounds-10.C: Adjust text of expected messages. * g++.dg/warn/Warray-bounds-11.C: Same. * g++.dg/warn/Warray-bounds-12.C: Same. * g++.dg/warn/Warray-bounds-13.C: Same. * g++.dg/warn/Warray-bounds-17.C: Same. * g++.dg/warn/Warray-bounds-20.C: Same. * gcc.dg/Warray-bounds-29.c: Same. * gcc.dg/Warray-bounds-30.c: Add xfail. * gcc.dg/Warray-bounds-31.c: Adjust text of expected messages. * gcc.dg/Warray-bounds-32.c: Same. * gcc.dg/Warray-bounds-52.c: Same. * gcc.dg/Warray-bounds-53.c: Same. * gcc.dg/Warray-bounds-58.c: Remove xfail. * gcc.dg/Warray-bounds-63.c: Adjust text of expected messages. * gcc.dg/Warray-bounds-66.c: Same. * gcc.dg/Warray-bounds-69.c: Same. * gcc.dg/Wstringop-overflow-34.c: Same. * gcc.dg/Wstringop-overflow-47.c: Same. * gcc.dg/Wstringop-overflow-61.c: Same. * gcc.dg/Warray-bounds-77.c: New test. * gcc.dg/Warray-bounds-78.c: New test. * gcc.dg/Warray-bounds-79.c: New test.
2021-07-07rs6000: Harden mma_init_builtinsPeter Bergner1-1/+2
The previous MMA patch added some fragile code to initialize its new built-ins. This patch hardens the initialization. 2021-07-07 Peter Bergner <bergner@linux.ibm.com> gcc/ * config/rs6000/rs6000-call.c (mma_init_builtins): Use VSX_BUILTIN_LXVP and VSX_BUILTIN_STXVP.
2021-07-07[Ada] Remove unused defineDmitriy Anisimkov1-6/+0
gcc/ada/ * s-oscons-tmplt.c (MSG_WAITALL): Remove wrong #ifdef __MINWGW32__.
2021-07-07[Ada] Assertion errors on concurrent types with -gnatc and extensions enabledGary Dismukes2-6/+18
gcc/ada/ * einfo-utils.adb (Primitive_Operations): Default to returning Direct_Primitive_Operations in the case of concurrent types (when Corresponding_Record_Type not present). * sem_ch9.adb (Analyze_Protected_Type_Declaration): Initialize Direct_Primitive_Operations to an empty element list. (Analyze_Task_Type_Declaration): Initialize Direct_Primitive_Operations to an empty element list.
2021-07-07[Ada] Stronger assertion about flag for checking static expressionsPiotr Trojanek1-4/+3
gcc/ada/ * sem_eval.adb (Set_Checking_Potentially_Static_Expression): Stronger assertion.
2021-07-07[Ada] Front-end inlining and instantiations of UCArnaud Charlet1-1/+8
gcc/ada/ * sem_ch12.adb (Analyze_Subprogram_Instantiation): Mark Anon_Id intrinsic before calling Analyze_Instance_And_Renamings because this flag may be propagated to other nodes.
2021-07-07[Ada] Keepalive control on WindowsDmitriy Anisimkov1-0/+18
gcc/ada/ * s-oscons-tmplt.c (TCP_KEEPCNT TCP_KEEPIDLE, TCP_KEEPINTVL): Hardcode on Windows if undefined.
2021-07-07[Ada] Optimize away certain elaboration checksBob Duff5-14/+20
gcc/ada/ * checks.adb (Install_Primitive_Elaboration_Check): Do not generate elaboration checks for primitives if pragma Pure or Preelaborate is present. Misc comment fixes, including referring to the correct kind of check (elaboration, not accessibility). * checks.ads, restrict.adb, sem_cat.ads, sinfo.ads: Minor reformatting and comment fixes.
2021-07-07[Ada] Simplify code by reusing Remove on list of primitive operationsPiotr Trojanek1-7/+1
gcc/ada/ * sem_prag.adb (Analyze_Pragma): Simplify processing of pragma CPP_Constructor.
2021-07-07[Ada] Minor code cleanupArnaud Charlet1-1/+1
gcc/ada/ * libgnat/g-debpoo.adb (Code_Address_For_Allocate_End): Default Initialize.
2021-07-07[Ada] Code cleanups in System.Atomic_CountersArnaud Charlet2-16/+5
gcc/ada/ * libgnat/s-atocou.ads, libgnat/s-atocou__builtin.adb: Code cleanups.
2021-07-07[Ada] Implement new legality checks specified by AI12-0412Gary Dismukes6-46/+159
gcc/ada/ * freeze.adb (Check_Inherited_Conditions): Setting of Ekind, LSP_Subprogram, and Is_Wrapper needs to happen for null procedures as well as other wrapper cases, so the code is moved from the else part in front of the if statement. (Fixes a latent bug encountered while working on this set of changes.) * sem_attr.adb (Resolve_Attribute): Report an error for the case of an Access attribute applied to a primitive of an abstract type when the primitive has any nonstatic Pre'Class or Post'Class expressions. * sem_ch8.adb (Analyze_Subprogram_Renaming): Report an error for the case of a actual subprogram associated with a nonabstract formal subprogram when the actual is a primitive of an abstract type and the primitive has any nonstatic Pre'Class or Post'Class expressions. * sem_disp.adb (Check_Dispatching_Context): Remove special testing for null procedures, and replace it with a relaxed test that avoids getting an error about illegal calls to abstract subprograms in cases where RM 6.1.1(7/5) applies in Pre/Post'Class aspects. Also, remove special test for Postcondition, which seems to be unnecessary, update associated comments, and fix a typo in one comment. (Check_Dispatching_Call): Remove an unneeded return statement, and report an error for the case of a nondispatching call to a nonabstract subprogram of an abstract type where the subprogram has nonstatic Pre/Post'Class aspects. * sem_util.ads (Is_Prim_Of_Abst_Type_With_Nonstatic_CW_Pre_Post): New function. (In_Pre_Post_Condition): Add a flag formal Class_Wide_Only, defaulted to False, for indicating whether the function should only test for the node being within class-wide pre- and postconditions. * sem_util.adb (Is_Prim_Of_Abst_Type_With_Nonstatic_CW_Pre_Post): New function to determine whether a subprogram is a primitive of an abstract type where the primitive has class-wide Pre/Post'Class aspects specified with nonstatic expressions. (In_Pre_Post_Condition): Extend testing to account for the new formal Class_Wide_Only.
2021-07-07[Ada] Fix location of errors about volatile compatibilityPiotr Trojanek1-1/+1
gcc/ada/ * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Errors emitted via Check_Volatility_Compatibility are now emitted at Actual, just like other errors emitted by Check_Shared_Variable_Control_Aspects.
2021-07-07[Ada] Use bounded string buffer in Get_Unit_NamePiotr Trojanek1-20/+5
gcc/ada/ * uname.adb (Get_Unit_Name): Simplify with a bounded string buffer; also, this addresses a ??? comment about the max length being exceeded.
2021-07-07[Ada] Replace obsolete calls that use global name bufferPiotr Trojanek1-47/+53
gcc/ada/ * uname.adb (Get_Body_Name, Get_Parent_Body_Name, Get_Parent_Spec_Name, Get_Spec_Name, Is_Child_Name, Is_Body_Name, Is_Spec_Name, Name_To_Unit_Name): Use a local instead of the global buffer.
2021-07-07[Ada] Fix bugs in Value_Size clauses and refactorBob Duff6-142/+145
gcc/ada/ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Combine processing of Size and Value_Size clauses. Ensure that Value_Size is treated the same as Size, in the cases where both are allowed (i.e. the prefix denotes a first subtype). Misc cleanup. * einfo-utils.adb (Init_Size): Add assertions. (Size_Clause): Return a Value_Size clause if present, instead of just looking for a Size clause. * einfo.ads (Has_Size_Clause, Size_Clause): Change documentation to include Value_Size. * sem_ch13.ads, layout.ads, layout.adb: Comment modifications.
2021-07-07[Ada] Improve interactions between DSA and Put_Image routines for tagged typesSteve Baird1-23/+3
gcc/ada/ * exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): Add TSS_Put_Image to list of predefined primitives that need special treatment. (Build_General_Calling_Stubs, Build_Subprogram_Receiving_Stubs): Remove previous hack for dealing with TSS_Put_Image procedures.