aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-01-10Fortran: Allow IEEE_CLASS to identify signaling NaNsFrancois-Xavier Coudert5-4/+128
We use the issignaling macro, present in some libc's (notably glibc), when it is available. Compile all IEEE-related files in the library (both C and Fortran sources) with -fsignaling-nans to ensure maximum compatibility. libgfortran/ChangeLog: PR fortran/82207 * Makefile.am: Pass -fsignaling-nans for IEEE files. * Makefile.in: Regenerate. * ieee/ieee_helper.c: Use issignaling macro to recognized signaling NaNs. gcc/testsuite/ChangeLog: PR fortran/82207 * gfortran.dg/ieee/signaling_1.f90: New test. * gfortran.dg/ieee/signaling_1_c.c: New file.
2022-01-10middle-end/101530 - fix shufflevector loweringRichard Biener2-0/+22
This makes __builtin_shufflevector lowering force the result of the BIT_FIELD_REF lowpart operation to a temporary as to fulfil the IL verifier constraint that BIT_FIELD_REFs should be always in outermost handled component position. Trying to enforce this during gimplification isn't as straight-forward as here where we know we're dealing with an rvalue. FAIL: c-c++-common/torture/builtin-shufflevector-1.c -O0 execution test 2022-01-05 Richard Biener <rguenther@suse.de> PR middle-end/101530 gcc/c-family/ * c-common.c (c_build_shufflevector): Wrap the BIT_FIELD_REF in a TARGET_EXPR to force a temporary. gcc/testsuite/ * c-c++-common/builtin-shufflevector-3.c: New testcase.
2022-01-10tree-optimization/100359 - restore unroll at -O3Richard Biener2-1/+36
This fixes a mistake done with r8-5008 when introducing allow_peel to the unroll code. The intent was to allow peeling that doesn't grow code but the result was that with -O3 and UL_ALL this wasn't done. The following instantiates the desired effect by adjusting ul to UL_NO_GROWTH if peeling is not allowed. 2022-01-05 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. * gcc.dg/tree-ssa/pr100359.c: New testcase.
2022-01-10[Ada] Fix bogus error on call to subprogram with incomplete profileEric Botcazou1-2/+29
gcc/ada/ * 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[Ada] Fix internal error on unchecked union with component clausesEric Botcazou1-12/+17
gcc/ada/ * 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[Ada] Make pragma Inspection_Point work for constantsEric Botcazou1-0/+17
gcc/ada/ * 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[Ada] Reduce runtime dependencies on stage1Arnaud Charlet1-29/+26
gcc/ada/ * 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[Ada] Switch from __sync to __atomic builtins for Lock_Free_Try_WritePiotr Trojanek2-19/+15
gcc/ada/ * 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[Ada] Remove CodePeer annotations for pragma Loop_VariantPiotr Trojanek5-15/+0
gcc/ada/ * 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[Ada] Disable expansion of pragma Loop_Variant in CodePeer modePiotr Trojanek1-1/+4
gcc/ada/ * exp_prag.adb (Expand_Pragma_Loop_Variant): Disable expansion in CodePeer mode.
2022-01-10[Ada] Fix typo in comment about unit familiesPiotr Trojanek1-1/+1
gcc/ada/ * sem_util.adb (Is_Child_Or_Sibling): Fix typo in comment.
2022-01-10[Ada] Adjust the alignment to the size for bit-packed arraysEric Botcazou1-0/+13
gcc/ada/ * exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply the canonical adjustment to its alignment.
2022-01-10[Ada] Switch from __sync to __atomic builtins for atomic countersPiotr Trojanek1-16/+26
gcc/ada/ * 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[Ada] Fix error on too large size clause for bit-packed arrayEric Botcazou2-2/+6
gcc/ada/ * 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[Ada] Task arrays trigger spurious unreferenced warningsJustin Squirek1-1/+8
gcc/ada/ * sem_warn.adb (Check_References): Handle arrays of tasks similar to task objects.
2022-01-10Daily bump.GCC Administrator4-1/+56
2022-01-09Fortran: check arguments of MASKL/MASKR intrinsics before simplificationHarald Anlauf2-0/+20
gcc/fortran/ChangeLog: PR fortran/103777 * simplify.c (gfc_simplify_maskr): Check validity of argument 'I' before simplifying. (gfc_simplify_maskl): Likewise. gcc/testsuite/ChangeLog: PR fortran/103777 * gfortran.dg/masklr_3.f90: New test.
2022-01-09Fortran: reject invalid non-constant pointer initialization targetsHarald Anlauf2-0/+57
gcc/fortran/ChangeLog: PR fortran/101762 * expr.c (gfc_check_pointer_assign): For pointer initialization targets, check that subscripts and substring indices in specifications are constant expressions. gcc/testsuite/ChangeLog: PR fortran/101762 * gfortran.dg/pr101762.f90: New test.
2022-01-09Fortran: Ignore KIND argument of a few more intrinsics. [PR103789]Mikael Morin5-0/+46
After PR97896 for which some code was added to ignore the KIND argument of the INDEX intrinsics, and PR87711 for which that was extended to LEN_TRIM as well, this propagates it further to MASKL, MASKR, SCAN and VERIFY. PR fortran/103789 gcc/fortran/ChangeLog: * 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. gcc/testsuite/ChangeLog: * 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-08Testsuite: Make dependence on -fdelete-null-pointer-checks explicitSandra Loosemore8-0/+8
nios2-elf target defaults to -fno-delete-null-pointer-checks, breaking tests that implicitly depend on that optimization. Add the option explicitly on these tests. 2022-01-08 Sandra Loosemore <sandra@codesourcery.com> gcc/testsuite/ * 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. libstdc++-v3/ * testsuite/18_support/type_info/constexpr.cc: Add explicit -fdelete-null-pointer-checks option.
2022-01-09Daily bump.GCC Administrator4-1/+52
2022-01-08x86_64: Improve (interunit) moves from TImode to V1TImode.Roger Sayle3-0/+44
This patch improves the code generated when moving a 128-bit value in TImode, represented by two 64-bit registers, to V1TImode, which is a single SSE register. Currently, the simple move: typedef unsigned __int128 uv1ti __attribute__ ((__vector_size__ (16))); uv1ti foo(__int128 x) { return (uv1ti)x; } is always transferred via memory, as: foo: movq %rdi, -24(%rsp) movq %rsi, -16(%rsp) movdqa -24(%rsp), %xmm0 ret with this patch, we now generate (with -msse2): foo: movq %rdi, %xmm1 movq %rsi, %xmm2 punpcklqdq %xmm2, %xmm1 movdqa %xmm1, %xmm0 ret and with -mavx2: foo: vmovq %rdi, %xmm1 vpinsrq $1, %rsi, %xmm1, %xmm0 ret Even more dramatic is the improvement of zero extended transfers. uv1ti bar(unsigned char c) { return (uv1ti)(__int128)c; } Previously generated: bar: movq $0, -16(%rsp) movzbl %dil, %eax movq %rax, -24(%rsp) vmovdqa -24(%rsp), %xmm0 ret Now generates: bar: movzbl %dil, %edi movq %rdi, %xmm0 ret My first attempt at this functionality attempted to use a simple define_split, but unfortunately, this triggers very late during the compilation preventing some of the simplifications we'd like (in combine). For example the foo case above becomes: foo: movq %rsi, -16(%rsp) movq %rdi, %xmm0 movhps -16(%rsp), %xmm0 transferring half directly, and the other half via memory. And for the bar case above, GCC fails to appreciate that movq/vmovq clears the high bits, resulting in: bar: movzbl %dil, %eax xorl %edx, %edx vmovq %rax, %xmm1 vpinsrq $1, %rdx, %xmm1, %xmm0 ret Hence the solution (i.e. this patch) is to add a special case to ix86_expand_vector_move for TImode to V1TImode transfers. 2022-01-08 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog * config/i386/i386-expand.c (ix86_expand_vector_move): Add special case for TImode to V1TImode moves, going via V2DImode. gcc/testsuite/ChangeLog * gcc.target/i386/sse2-v1ti-mov-1.c: New test case. * gcc.target/i386/sse2-v1ti-zext.c: New test case.
2022-01-08c++, match.pd: Evaluate in constant evaluation comparisons like &var1 + 12 ↵Jakub Jelinek4-0/+91
== &var2 + 24 [PR89074] The match.pd address_comparison simplification can only handle ADDR_EXPR comparisons possibly converted to some other type (I wonder if we shouldn't restrict it in address_compare to casts to pointer types or pointer-sized integer types, I think we shouldn't optimize (short) (&var) == (short) (&var2) because we really don't know whether it will be true or false). On GIMPLE, most of pointer to pointer casts are useless and optimized away and further we have in gimple_fold_stmt_to_constant_1 an optimization that folds &something p+ const_int into &MEM_REF[..., off] On GENERIC, we don't do that and e.g. for constant evaluation it could be pretty harmful if e.g. such pointers are dereferenced, because it can lose what exact field it was starting with etc., all it knows is the base and offset, type and alias set. Instead of teaching the match.pd address_compare about 3 extra variants where one or both compared operands are pointer_plus, this patch attempts to fold operands of comparisons similarly to gimple_fold_stmt_to_constant_1 before calling fold_binary on it. There is another thing though, while we do have (x p+ y) p+ z to x p+ (y + z) simplification which works on GIMPLE well because of the useless pointer conversions, on GENERIC we can have pointer casts in between and at that point we can end up with large expressions like ((type3) (((type2) ((type1) (&var + 2) + 2) + 2) + 2)) etc. Pointer-plus doesn't really care what exact pointer type it has as long as it is a pointer, so the following match.pd simplification for GENERIC only (it is useless for GIMPLE) also moves the cast so that nested p+ can be simplified. Note, I've noticed we don't really diagnose going out of bounds with pointer_plus (unlike e.g. with ARRAY_REF) during constant evaluation, I think another patch for cxx_eval_binary_expression with POINTER_PLUS will be needed. But it isn't clear to me what exactly it should do in case of subobjects. If we start with address of a whole var, (&var), I guess we should diagnose if the pointer_plus gets before start of the var (i.e. "negative") or 1 byte past the end of the var, but what if we start with &var.field or &var.field[3] ? For &var.field, shall we diagnose out of bounds of field (except perhaps flexible members?) or the whole var? For ARRAY_REFs, I assume we must at least strip all the outer ARRAY_REFs and so start with &var.field too, right? 2022-01-08 Jakub Jelinek <jakub@redhat.com> PR c++/89074 gcc/ * match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC simplification. gcc/cp/ * constexpr.c (cxx_maybe_fold_addr_pointer_plus): New function. (cxx_eval_binary_expression): Use it. gcc/testsuite/ * g++.dg/cpp1y/constexpr-89074-2.C: New test. * g++.dg/cpp1z/constexpr-89074-1.C: New test.
2022-01-08c++: default mem-init of array [PR103946]Jason Merrill3-8/+8
In the patch for PR92385 I added asserts to see if we tried to make a vec_init of a vec_init, but didn't see any in regression testing. This testcase is one case, which seems reasonable: we create a VEC_INIT_EXPR for the aggregate initializer, and then again to express the actual initialization of the member. We already do similar collapsing of TARGET_EXPR. So let's just remove the asserts. PR c++/103946 gcc/cp/ChangeLog: * init.c (build_vec_init): Remove assert. * tree.c (build_vec_init_expr): Likewise. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/nsdmi-array1.C: New test.
2022-01-07c++: destroying delete, throw in new-expr [PR100588]Jason Merrill3-4/+67
The standard says that a destroying operator delete is preferred, but that only applies to the delete-expression, not the cleanup if a new-expression initialization throws. As a result of this patch, several of the destroying delete tests don't get EH cleanups, but I'm turning off the warning in cases where the initialization can't throw anyway. It's unclear what should happen if the class does not declare a non-deleting operator delete; a proposal in CWG was to call the global delete, which makes sense to me if the class doesn't declare its own operator new. If it does, we warn and don't call any deallocation function if initialization throws. PR c++/100588 gcc/cp/ChangeLog: * call.c (build_op_delete_call): Ignore destroying delete if alloc_fn. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/destroying-delete5.C: Expect warning. * g++.dg/cpp2a/destroying-delete6.C: New test.
2022-01-08Daily bump.GCC Administrator8-1/+651
2022-01-07analyzer: add logging of aliasingDavid Malcolm6-4/+40
gcc/analyzer/ChangeLog: * 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-07analyzer: implement __analyzer_dump_escapedDavid Malcolm7-0/+112
PR analyzer/103546 seems to involve an issue in how the analyzer tracks which decls have escaped, so this patch adds a way to directly test this from DejaGnu. gcc/analyzer/ChangeLog: * 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. gcc/ChangeLog: * doc/analyzer.texi (Special Functions for Debugging the Analyzer): Document __analyzer_dump_escaped. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_escaped): New decl. * gcc.dg/analyzer/escaping-1.c: New test.
2022-01-07analyzer: add region::is_named_decl_pDavid Malcolm3-0/+26
This patch adds a debug function that I've found handy when debugging a problem with handling the decl "yy_buffer_stack" in PR analyzer/103546. gcc/analyzer/ChangeLog: * region.cc (region::is_named_decl_p): New. * region.h (region::is_named_decl_p): New decl. gcc/ChangeLog: * doc/analyzer.texi (Other Debugging Techniques): Document region::is_named_decl_p. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2022-01-07c++: check delete access with trivial init [PR20040]Jason Merrill3-61/+82
Apparently we need to check the accessibility of the deallocation function even if there is no initialization. PR c++/20040 gcc/cp/ChangeLog: * init.c (build_new_1): Also build pointer cleanup if TYPE_GETS_DELETE. * cp-tree.h (TYPE_GETS_VEC_DELETE): New. gcc/testsuite/ChangeLog: * g++.dg/init/delete4.C: New test.
2022-01-07target: [PR102941] Fix inline-asm flags with non-REG_P outputAndrew Pinski3-1/+46
So the problem here is that arm_md_asm_adjust would just create a set directly to the output memory which is wrong. It needs to output to a temp register first and then do a move. OK? Bootstrapped and tested on aarch64-linux-gnu with no regressions. I have no way to test on arm even though this touches common code. PR target/102941 gcc/ChangeLog: * config/arm/aarch-common.c (arm_md_asm_adjust): Use a temp if !REG_P. gcc/testsuite/ChangeLog: * gcc.target/aarch64/asm-flag-7.c: New test. * gcc.target/arm/asm-flag-7.c: New test.
2022-01-07i386: Robustify V2QI and V4QI move patternsUros Bizjak1-4/+12
Add sse2 isa attribute where needed and remove where not needed. 2022-01-07 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute. (*movv2qi_internal): Remve sse2 requirement for alternatives 4,5.
2022-01-07[Ada] Read directory in Ada.Directories.Start_Search rather than Get_Next_EntryPatrick Bernardi3-308/+330
gcc/ada/ * 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[Ada] Fix the check of the 'Old prefixEtienne Servais1-1/+4
gcc/ada/ * sem_attr.adb (Check_Reference): Fix condition.
2022-01-07[Ada] Fix uses of pragma Unreferenced in MinGW runtime unitGhjuvan Lacambre1-2/+0
gcc/ada/ * libgnarl/s-taprop__mingw.adb (Timed_Sleep): Remove "pragma Unreferenced" for Result. (Timed_Delay): Likewise.
2022-01-07[Ada] Fix layout of pragma Inline in generated AST unitPiotr Trojanek1-1/+2
gcc/ada/ * 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[Ada] Fix style in expansion of multi-dimensional array aggregatesPiotr Trojanek1-6/+4
gcc/ada/ * exp_aggr.adb (Build_Array_Aggr_Code): Fix inconsistent style in comments and code.
2022-01-07[Ada] More default initialization for multi-dim array aggregatesPiotr Trojanek1-15/+4
gcc/ada/ * 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[Ada] Crash in class-wide pre/postconditionsJavier Miranda5-12/+433
gcc/ada/ * 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[Ada] Fix typo on "Placement" in commentEtienne Servais1-1/+1
gcc/ada/ * sem_attr.adb (Check_Placement_In_Test_Case): Fix typo.
2022-01-07[Ada] Cleanup and modification of unreferenced warningsJustin Squirek61-753/+255
gcc/ada/ * 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[Ada] Spurious error caused by order of interfaces in full viewJavier Miranda1-2/+2
gcc/ada/ * 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[Ada] Fix __gnat_kill on WindowsDmitriy Anisimkov1-5/+13
gcc/ada/ * 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[Ada] Fix a couple of issues with pragma Inspection_PointEric Botcazou1-23/+26
gcc/ada/ * 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[Ada] Remove repeated routines for printing AST in Mixed_CasePiotr Trojanek2-50/+21
gcc/ada/ * 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[Ada] Simplify traversal in hooking of transient scopesPiotr Trojanek1-15/+7
gcc/ada/ * 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[Ada] Remove extra space before THEN keywordsPiotr Trojanek5-5/+5
gcc/ada/ * 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[Ada] Fix exit status of GNAT.Expect.Close call on running processDmitriy Anisimkov2-14/+13
gcc/ada/ * 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[Ada] Remove explicit expansion of block with general case statementPiotr Trojanek1-2/+0
gcc/ada/ * exp_ch5.adb (Expand_N_Case_Statement): Remove explicit expansion.
2022-01-07[Ada] Update -gnatwr doc for import of parent packageEtienne Servais2-1/+6
gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update -gnatwr documentation. * gnat_ugn.texi: Regenerate.