aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-10-20[Ada] Display source code pointing at locations in messages for GNATproveYannick Moy4-11/+114
gcc/ada/ * errout.adb: (Error_Msg-Internal): Pass the location for a line insertion if any in the message. (Output_Messages: Add display of source code lines if -gnatdF is set. (Write_Source_Code_Line): Code clean up. * erroutc.adb (Prescan_Message): Apply prescan for continuation lines when -gnatdF is set, and record presence of line insertion. * erroutc.ads (Has_Insertion_Line): New global for prescan. (Error_Msg_Object): Add field to record line insertion if present. * errutil.adb (Error_Msg): Pass no location for Insertion_Sloc.
2020-10-20[Ada] Remove extra validity check in case statementArnaud Charlet1-1/+29
gcc/ada/ * exp_ch5.adb (Expand_N_Case_Statement): Do not generate validity check when possible.
2020-10-20[Ada] Ada_2020: Further code cleanup for container aggregatesEd Schonberg1-32/+37
gcc/ada/ * exp_aggr.adb (Expand_Iterated_Component): Reorganize code to ensure that Loop_Id is properly initialized on all paths, and remove code duplication.
2020-10-20[Ada] Propagate predicate function to a full view of a private subtypePiotr Trojanek1-0/+10
gcc/ada/ * sem_ch3.adb (Analyze_Subtype_Declaration): Propagate predicate function to full view of the created type as well, if it was created.
2020-10-20[Ada] Code clean upArnaud Charlet1-15/+4
gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Merge handling of Simple_Storage_Pool and Storage_Pool.
2020-10-20[Ada] Support for new aspect Subprogram_Variant on recursive subprogramsPiotr Trojanek23-130/+845
gcc/ada/ * aspects.ads: Introduce Subprogram_Variant aspect with the following properties: GNAT-specific, with mandatory expression, not a representation aspect, never delayed. * contracts.adb (Expand_Subprogram_Contract): Mention new aspect in the comment. (Add_Contract_Item): Support addition of pragma Subprogram_Variant to N_Contract node. (Analyze_Entry_Or_Subprogram_Contract): Mention new aspect in the comment; add pragma Subprogram_Variant to N_Contract node. (Build_Postconditions_Procedure): Adapt call to Insert_Before_First_Source_Declaration, which is now reused in expansion of new aspect. (Process_Contract_Cases_For): Also process Subprogram_Variant, which is stored in N_Contract node together with Contract_Cases. * contracts.ads (Analyze_Entry_Or_Subprogram_Contract): Mention new aspect in the comment. (Analyze_Entry_Or_Subprogram_Body_Contract): Likewise. * einfo.adb (Get_Pragma): Support retrieval of new pragma. * einfo.ads (Get_Pragma): Likewise. * exp_ch6.adb (Check_Subprogram_Variant): New routine for emitting call to check Subprogram_Variant expressions at run time. (Expand_Call_Helper): Check Subprogram_Variant expressions at recursive calls. * exp_prag.adb (Make_Op): Moved from expansion of pragma Loop_Variant to Exp_Util, so it is now reused for expansion of pragma Subprogram_Variant. (Process_Variant): Adapt call to Make_Op after moving it to Exp_Util. (Expand_Pragma_Subprogram_Variant): New routine. * exp_prag.ads (Expand_Pragma_Subprogram_Variant): Likewise. * exp_util.adb (Make_Variant_Comparison): Moved from Exp_Prag (see above). * exp_util.ads (Make_Variant_Comparison): Likewise. * inline.adb (Remove_Aspects_And_Pragmas): Handle aspect/pragma Subprogram_Variant just like similar contracts. * par-prag.adb (Prag): Likewise. * sem.adb (Insert_Before_First_Source_Declaration): Moved from Contracts (see above). * sem.ads (Insert_Before_First_Source_Declaration): Likewise. * sem_ch12.adb: Mention new aspect in the comment about "Implementation of Generic Contracts", just like similar aspects are mentioned there. * sem_ch13.adb (Insert_Pragma): Mention new aspect in the comment, because this routine is now used for Subprogram_Variant just like for other similar aspects. (Analyze_Aspect_Specifications): Mention new aspect in comments; it is handled just like aspect Contract_Cases. (Check_Aspect_At_Freeze_Point): Do not expect aspect Subprogram_Variant just like we don't expect aspect Contract_Cases. * sem_prag.adb (Ensure_Aggregate_Form): Now also used for pragma Subprogram_Variant, so update comment. (Analyze_Pragma): Add initial checks for pragma Subprogram_Variant. (Analyze_Subprogram_Variant_In_Decl_Part): New routine with secondary checks on the new pragma. (Sig_Flags): Handle references within pragma Subprogram_Variant expression just like references in similar pragma Contract_Cases. (Is_Valid_Assertion_Kind): Handle Subprogram_Variant just like other similar contracts. * sem_prag.ads (Analyze_Subprogram_Variant_In_Decl_Part): New routine. * sem_res.adb (Same_Or_Aliased_Subprograms): Moved to Sem_Util, so it can be reused for detection of recursive calls where Subprogram_Variant needs to be verified. * sem_util.adb (Is_Subprogram_Contract_Annotation): Handle new Subprogram_Variant annotation just like other similar annotations. (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above). * sem_util.ads (Is_Subprogram_Contract_Annotation): Mention new aspect in the comment. (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above). * sinfo.ads (N_Contract): Document handling of Subprogram_Variant. * snames.ads-tmpl: Add name for the internally generated procedure with checks for Subprogram_Variant expression, name for the new aspect and new pragma corresponding to aspect Subprogram_Variant.
2020-10-20[Ada] Minor reorder subprogram declarations alphabeticallyPiotr Trojanek1-5/+5
gcc/ada/ * exp_util.ads: Reorder declaration.
2020-10-20tree-optimization/97496 - avoid SLP externs in patternsRichard Biener2-1/+16
I forgot to guard the promotion to external for the case where the def is in a pattern. 2020-10-20 Richard Biener <rguenther@suse.de> PR tree-optimization/97496 * tree-vect-slp.c (vect_get_and_check_slp_defs): Guard extern promotion with not in pattern. * gcc.dg/vect/bb-slp-pr97496.c: New testcase.
2020-10-20Add { target int128 } to gcc.dg/pr97488.cAldy Hernandez1-1/+1
__int128 does not exist on 32-bit targets. gcc/testsuite/ChangeLog: * gcc.dg/pr97488.c: Add target int128 predicate.
2020-10-20IBM Z: Emit vector alignment hints for strlenStefan Schulze Frielinghaus1-4/+5
In case the vectorized version of strlen is used, then each memory access inside the loop is 16-byte aligned. Thus add this kind of information so that vector alignment hints can later on be emitted. gcc/ChangeLog: * config/s390/s390.c (s390_expand_vec_strlen): Add alignment for memory access inside loop.
2020-10-20Daily bump.GCC Administrator5-1/+428
2020-10-19Use precision and sign to compare types for rangesAndrew MacLeod4-11/+52
Sanity check ranges by comparing just SIGN and PRECISION. gcc/ PR tree-optimization/97360 * gimple-range.h (range_compatible_p): New. * gimple-range-gori.cc (is_gimple_logical_p): Use range_compatible_p. (range_is_either_true_or_false): Ditto. (gori_compute::outgoing_edge_range_p): Cast result to the correct type if necessary. (logical_stmt_cache::cacheable_p): Use range_compatible_p. * gimple-range.cc (gimple_ranger::calc_stmt): Check range_compatible_p before casting the range. (gimple_ranger::range_on_exit): Use range_compatible_p. (gimple_ranger::range_on_edge): Ditto. gcc/testsuite/ * gcc.dg/pr97360-2.c: New test.
2020-10-19testsuite: Enable and adjust powerpc vec-extract and vsu testcases.David Edelsohn30-32/+31
This patch remove unnecessary target requirements from many vec-extract testcases and enables the vsu testcases on AIX. gcc/testsuite/ChangeLog: * gcc.target/powerpc/sad-vectorize-1.c: Remove target. * gcc.target/powerpc/sad-vectorize-2.c: Remove target. * gcc.target/powerpc/vec-extract-v16qi-df.c: Remove target. * gcc.target/powerpc/vec-extract-v16qi.c: Remove target. * gcc.target/powerpc/vec-extract-v16qiu-df.c: Remove target. * gcc.target/powerpc/vec-extract-v16qiu.c: Remove target. * gcc.target/powerpc/vec-extract-v2df.c: Remove target. * gcc.target/powerpc/vec-extract-v2di.c: Require lp64. * gcc.target/powerpc/vec-extract-v4sf.c: Remove target. * gcc.target/powerpc/vec-extract-v4si-df.c: Remove target. * gcc.target/powerpc/vec-extract-v4si.c: Remove target. * gcc.target/powerpc/vec-extract-v4siu-df.c: Remove target. * gcc.target/powerpc/vec-extract-v4siu.c: Remove target. * gcc.target/powerpc/vec-extract-v8hi-df.c: Remove target. * gcc.target/powerpc/vec-extract-v8hi.c: Remove target. * gcc.target/powerpc/vec-extract-v8hiu-df.c: Remove target. * gcc.target/powerpc/vec-extract-v8hiu.c: Remove target. * gcc.target/powerpc/vec-init-1.c: Remove target. * gcc.target/powerpc/vec-init-2.c: Require lp64. * gcc.target/powerpc/vec-init-3.c: Require lp64. * gcc.target/powerpc/vec-init-4.c: Remove target. * gcc.target/powerpc/vec-init-5.c: Remove target. * gcc.target/powerpc/vec-init-6.c: Require lp64. * gcc.target/powerpc/vec-init-7.c: Require lp64. * gcc.target/powerpc/vec-init-8.c: Remove target. * gcc.target/powerpc/vec-init-9.c: Require lp64. * gcc.target/powerpc/vec-setup-double.c: Remove target. * gcc.target/powerpc/vec-setup-long.c: Remove target. * gcc.target/powerpc/vsu/vec-xl-len-13.c: Correct expected warnings. * gcc.target/powerpc/vsu/vsu.exp: Enable on AIX.
2020-10-19testsuite: Enable and adjust powerpc fold-vec-extract/insert testcases.David Edelsohn31-37/+39
This patch enables a number of testcases on non-Linux targets, adjusts the target requirements, and updates the expected results. gcc/testsuite/ChangeLog: * gcc.target/powerpc/fold-vec-extract-char.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-char.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-char.p9.c: Remove target. Expect 3 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-double.p7.c: Remove target. Add -mbig-endian for Linux. * gcc.target/powerpc/fold-vec-extract-double.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-float.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-extract-int.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-int.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-int.p9.c: Remove target. Expect 3 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Remove target. Expect 4 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Remove target. Expect 4 addi for ilp32. * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-extract-short.p7.c: Remove target. * gcc.target/powerpc/fold-vec-extract-short.p8.c: Remove target. * gcc.target/powerpc/fold-vec-extract-short.p9.c: Require lp64. * gcc.target/powerpc/fold-vec-insert-char-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-char-p9.c: Remove target. * gcc.target/powerpc/fold-vec-insert-double.c: Remove target. * gcc.target/powerpc/fold-vec-insert-float-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-float-p9.c: Remove target. * gcc.target/powerpc/fold-vec-insert-int-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-int-p9.c: Remove target. Require 8 addi for ilp32. * gcc.target/powerpc/fold-vec-insert-longlong.c: Remove target. * gcc.target/powerpc/fold-vec-insert-short-p8.c: Remove target. * gcc.target/powerpc/fold-vec-insert-short-p9.c: Remove target. * gcc.target/powerpc/fold-vec-select-double.c: Remove target. * gcc.target/powerpc/fold-vec-select-float.c: Remove target. * gcc.target/powerpc/fold-vec-splats-int.c: Require lp64. * gcc.target/powerpc/fold-vec-splats-longlong.c: Require lp64.
2020-10-19coroutines: Emit error for invalid promise return types [PR97438].Iain Sandoe2-0/+55
At one stage, use cases were proposed for allowing the promise type to contain both return_value and return_void. That was not accepted into C++20, so we should reject it as per the PR. gcc/cp/ChangeLog: PR c++/97438 * coroutines.cc (struct coroutine_info): Add a field to record that we emitted a promise type error. (coro_promise_type_found_p): Check for the case that the promise type contains both return_void and return_value. Emit an error if so, with information about the wrong type methods. gcc/testsuite/ChangeLog: PR c++/97438 * g++.dg/coroutines/pr97438.C: New test.
2020-10-19cplxlower: Avoid a transform when looking at a default definitionMartin Jambor2-1/+42
In PR 97456, IPA-SRA triggers a bug in tree-complex.c where it converts: <bb 2> a$_M_value_21 = COMPLEX_EXPR <ISRA.18_10(D), ISRA.18_10(D)>; (where ISRA.18 is IPA-SRA created PARM_DECL with DECL_IGNORED_P set, which is why it only happens with IPA-SRA) into: <bb 2> a$_M_value_21 = COMPLEX_EXPR <a$_M_value$real_10(D), a$_M_value$real_10(D)>; i.e. it replaces two uses of the parameter default-def with two uninitialized default-defs of a new variable - all in hope to produce code with better debug info. This patch fixes it by avoiding the transform when the SSA_NAME to be replaced is a default definition. gcc/ChangeLog: 2020-10-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/97456 * tree-complex.c (set_component_ssa_name): Do not replace ignored decl default definitions with new component vars. Reorder if conditions. gcc/testsuite/ChangeLog: 2020-10-19 Martin Jambor <mjambor@suse.cz> PR tree-optimization/97456 * gcc.dg/tree-ssa/pr97456.c: New test.
2020-10-19preprocessor: Fix non-fn fn-like macro at EOF [PR97471]Nathan Sidwell1-0/+10
We inject EOF tokens between macro argument lists, but had confused/stale logic in the non-fn invocation. Renamed the magic 'eof' token, as it's now only used for macro argument termination. Always rewind the non-OPEN_PAREN token. libcpp/ * internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'. * init.c (cpp_create_reader): Adjust. * macro.c (collect_args): Use endarg for separator. Always rewind in the not-fn case. gcc/testsuite/ * c-c++-common/cpp/pr97471.c: New.
2020-10-19rs6000: correct BE vextract_fp_from_short[hl] vperm masksDavid Edelsohn1-2/+2
xvcvhpsp instruction converts a vector of bfloat16 half precision to single precision. The intrinsics vextract_fp_from_shorth and vextract_fp_from_shortl select the high or low four elements of a half precision vector to convert. The intrinsics use vperm to select the appropriate portion of the half precision vector and redistribute the values for the xvcvhpsp instruction. The big endian versions of the masks for the intrinsics were initialized wrong. This patch replaces the masks with the correct values. This corrects the failure of builtins-3-p9-runnable.c testcase on big endian systems. Bootstrapped powerpc-ibm-aix7.2.3.0 Power9. gcc/ChangeLog: * config/rs6000/vsx.md (vextract_fp_from_shorth): Fix vals_be. (vextract_fp_from_shortl) Same.
2020-10-19Gracefully handle right shifts larger than the precision.Aldy Hernandez2-0/+15
gcc/ChangeLog: PR tree-optimization/97488 * range-op.cc (operator_lshift::op1_range): Handle large right shifts. gcc/testsuite/ChangeLog: * gcc.dg/pr97488.c: New test.
2020-10-19IPA: fix one more UBSAN errorMartin Liska1-1/+1
It fixes: /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482:22: runtime error: load of value 255, which is not a valid value for type 'bool' #0 0x18e5df3 in modref_tree<int>::merge(modref_tree<int>*, vec<modref_parm_map, va_heap, vl_ptr>*) /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482 #1 0x18dc180 in ipa_merge_modref_summary_after_inlining(cgraph_edge*) /home/marxin/Programming/gcc2/gcc/ipa-modref.c:1779 #2 0x18c1c72 in inline_call(cgraph_edge*, bool, vec<cgraph_edge*, va_heap, vl_ptr>*, int*, bool, bool*) /home/marxin/Programming/gcc2/gcc/ipa-inline-transform.c:492 #3 0x4a3589c in inline_small_functions /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2216 #4 0x4a3b230 in ipa_inline /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2697 #5 0x4a3d902 in execute /home/marxin/Programming/gcc2/gcc/ipa-inline.c:3096 #6 0x1edf831 in execute_one_pass(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2509 #7 0x1ee26af in execute_ipa_pass_list(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2936 #8 0x103f31b in ipa_passes /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2700 #9 0x103fb40 in symbol_table::compile() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2777 #10 0x104092b in symbol_table::finalize_compilation_unit() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:3022 #11 0x235723b in compile_file /home/marxin/Programming/gcc2/gcc/toplev.c:485 #12 0x235fff9 in do_compile /home/marxin/Programming/gcc2/gcc/toplev.c:2321 #13 0x23605fc in toplev::main(int, char**) /home/marxin/Programming/gcc2/gcc/toplev.c:2460 #14 0x4e2b93b in main /home/marxin/Programming/gcc2/gcc/main.c:39 #15 0x7ffff6f0ae09 in __libc_start_main ../csu/libc-start.c:314 #16 0x9a0be9 in _start (/home/marxin/Programming/gcc2/objdir/gcc/cc1+0x9a0be9) gcc/ChangeLog: * ipa-modref.c (compute_parm_map): Clear vector.
2020-10-19tree-optimization/97486 - avoid edge insertion in SLP vectorizingRichard Biener2-0/+36
This avoids edge inserting and eventual splitting during BB SLP vectorization for now. 2020-10-19 Richard Biener <rguenther@suse.de> PR tree-optimization/97486 * tree-vect-slp.c (vect_slp_function): Split after stmts ending a BB. * gcc.dg/vect/bb-slp-pr97486.c: New testcase.
2020-10-19doc: Add closing parenthesis to -ffat-lto-objects docsJonathan Wakely1-1/+1
gcc/ChangeLog: * doc/invoke.texi (OPptimize Options): Add missing closing parenthesis.
2020-10-19[Ada] Ada_2020: Implement Key_Expression for named container aggregatesEd Schonberg3-39/+149
gcc/ada/ * par-ch4.adb: (P_Aggregate_Or_Paren_Expr): Recognize Iterated_Element_Component. (P_Iterated_Component_Association): Rebuild node as an Iterated_ Element_Association when Key_Expression is present, and attach either the Loop_Parameter_Specification or the Iterator_Specification to the new node. * sem_aggr.adb: (Resolve_Container_Aggregate): Resolve_Iterated_Association handles bota Iterated_Component_ and Iterated_Element_Associations, in which case it analyzes and resoles the orresponding Key_Expression. * exp_aggr.adb (Expand_Iterated_Component): If a Key_Expression is present, use it as the required parameter in the call to the insertion routine for the destination container aggregate. Call this routine for both kinds of Iterated_Associations.
2020-10-19[Ada] Missing check on array concatenationArnaud Charlet1-2/+3
gcc/ada/ * exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
2020-10-19[Ada] Suppress warnings in expansion of "for ... of" loopsBob Duff1-1/+7
gcc/ada/ * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Set the Warnings_Off flag on the pointer object used in the expansion of iterators and similar.
2020-10-19[Ada] Use alternate stack for signal handling on PowerPC/LinuxEric Botcazou1-1/+1
gcc/ada/ * Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead of s-taspri__posix-noaltstack.ads for s-taspri.ads.
2020-10-19[Ada] Remove excessive guards in building predicate functionsPiotr Trojanek1-4/+4
gcc/ada/ * sem_ch13.adb (Add_Call): Remove excessive condition and unnecessary call to Set_Has_Predicates.
2020-10-19[Ada] Alternative display of multi-line messages for GNATproveYannick Moy3-15/+39
gcc/ada/ * debug.adb: Use debug switch -gnatdF for this alternative display of messages. * errout.adb (Output_Messages): Alternative display when -gnatdF is used. * erroutc.adb (Output_Msg_Text): Likewise.
2020-10-19[Ada] AI12-0352: Early derivation and equality of untagged typesArnaud Charlet1-2/+19
gcc/ada/ * sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
2020-10-19[Ada] Compiler abort on in_out function parameter with type invariantEd Schonberg1-1/+7
gcc/ada/ * exp_ch6.adb (Add_View_Conversion_Invariants): Do not insert generated invariant checks when the call is a function call. These tests are properly inserted in the code in procedure Insert_Post_Call_Actions, which takes care of finding the proper insertion point for the checks. (Insert_Post_Call_Actions): Add question marks to indicate possible gap in handling function calls that appear as aggregate components.
2020-10-19[Ada] Wrong freezing for expression function with contracts in a genericArnaud Charlet2-2/+2
gcc/ada/ * contracts.adb (Process_Preconditions_For): Do not exclude instances. * sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious warning on internally generated variables.
2020-10-19[Ada] Implement initialization of CUDA runtimeGhjuvan Lacambre8-2/+731
gcc/ada/ * debug.adb: Document -gnatd_c flag as being used for CUDA. * gnat_cuda.ads: New file. * gnat_cuda.adb: New file. * rtsfind.ads: Add Interfaces_C_Strings package and RE_Fatbin_Wrapper, RE_Register_Fat_Binary, RE_Register_Fat_Binary_End, RE_Register_Function, RE_Chars_Ptr, RE_New_Char_Array entities. * rtsfind.adb: Create new Interfaces_C_Descendant subtype, handle it. * sem_ch7.adb (Analyze_Package_Body_Helper): Call CUDA init procedure. * sem_prag.adb (Analyze_Pragma): Call Add_Cuda_Kernel procedure. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add gnat_cuda.o.
2020-10-19[Ada] Expanded names in ghost assignmentsBob Duff10-202/+246
gcc/ada/ * ghost.adb (Whole_Object_Ref): New function to compute the name of the whole object. (Mark_And_Set_Ghost_Assignment): Rewrite to use Whole_Object_Ref. We need to partly analyze the left-hand side in order to distinguish expanded names and record components. * lib-xref.ads, lib-xref.adb (Deferred_References): Move table to body, and add Defer_Reference to update the table, avoiding duplicates. (Generate_Reference): Avoid duplicates. * sem_ch8.ads, sem_ch8.adb (Find_Direct_Name): Remove _OK parameters, which are no longer needed. Ignore errors in Ignore_Errors mode. * sem_util.ads, sem_util.adb (Preanalyze_Without_Errors): Make this public, so we can call it from Ghost. * errout.ads, scng.adb, sem_prag.adb: Minor.
2020-10-19[Ada] Do not replace bounds for packed arrays that depend on discriminantsGhjuvan Lacambre1-1/+5
gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Check if type depends on discriminant.
2020-10-19[Ada] Ada2020: AI12-0304 Put_Image attrs of lang-def typesBob Duff2-10/+16
gcc/ada/ * libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call Iterate.
2020-10-19[Ada] ACATS 4.1R - Exception missedArnaud Charlet2-7/+19
gcc/ada/ * sem_aggr.adb (Resolve_Record_Aggregate): Properly apply subtype constraints when using a Default_Value. * freeze.adb: Fix typo.
2020-10-19[Ada] Reject use of Relaxed_Initialization on scalar/access param or resultYannick Moy1-0/+23
gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix bug where a call to Error_Msg_N leads to crash due to Error_Msg_Name_1 being removed by the call, while a subsequent call to Error_Msg_N tries to use it. The variable Error_Msg_Name_1 should be restored prior to the next call. Also add checking for the new rules.
2020-10-19[Ada] No range check on fixed point to integer conversionArnaud Charlet4-36/+55
gcc/ada/ * checks.adb (Apply_Type_Conversion_Checks): Minor code clean up. * exp_ch4.adb (Discrete_Range_Check): Optimize range checks. Update comments. (Expand_N_Type_Conversion): Generate range check when rewriting a type conversion if needed. Add assertion. * exp_ch6.adb (Expand_Simple_Function_Return): Minor code clean up. * sem_res.adb (Resolve_Type_Conversion): Apply range check when needed. Update comments.
2020-10-19[Ada] Clarify protection offered by preconditions on Ada.Text_IO unitsYannick Moy1-2/+3
gcc/ada/ * libgnat/a-textio.ads: Update top-level comment.
2020-10-19[Ada] Fix typo in error message about contract casesPiotr Trojanek1-1/+1
gcc/ada/ * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
2020-10-19[Ada] Simplify detection of by-copy typesPiotr Trojanek1-3/+1
gcc/ada/ * exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy types.
2020-10-19[Ada] Clarify current design of Errout wrt global variable usageYannick Moy1-0/+9
gcc/ada/ * errout.ads: Add comment regarding lack of preservation of Errout state across successive calls to the API.
2020-10-19[Ada] Ada2020: AI12-0304 Put_Image attrs of lang-def typesBob Duff61-43/+904
gcc/ada/ * exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the base type to recognize various cases of access types. * libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb, libgnat/a-cbhama.ads, libgnat/a-cbhase.adb, libgnat/a-cbhase.ads, libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads, libgnat/a-cborma.adb, libgnat/a-cborma.ads, libgnat/a-cborse.adb, libgnat/a-cborse.ads, libgnat/a-cdlili.adb, libgnat/a-cdlili.ads, libgnat/a-cidlli.adb, libgnat/a-cidlli.ads, libgnat/a-cihama.adb, libgnat/a-cihama.ads, libgnat/a-cihase.adb, libgnat/a-cihase.ads, libgnat/a-cimutr.adb, libgnat/a-cimutr.ads, libgnat/a-ciorma.adb, libgnat/a-ciorma.ads, libgnat/a-ciormu.adb, libgnat/a-ciormu.ads, libgnat/a-ciorse.adb, libgnat/a-ciorse.ads, libgnat/a-coboho.adb, libgnat/a-coboho.ads, libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-cohama.adb, libgnat/a-cohama.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads, libgnat/a-coinho.adb, libgnat/a-coinho.ads, libgnat/a-coinho__shared.adb, libgnat/a-coinho__shared.ads, libgnat/a-coinve.adb, libgnat/a-coinve.ads, libgnat/a-comutr.adb, libgnat/a-comutr.ads, libgnat/a-coorma.adb, libgnat/a-coorma.ads, libgnat/a-coormu.adb, libgnat/a-coormu.ads, libgnat/a-coorse.adb, libgnat/a-coorse.ads, libgnat/a-strunb.adb, libgnat/a-strunb.ads, libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads: Implement Put_Image attibute. * libgnat/a-stteou.ads, libgnat/s-putima.ads, libgnat/a-stouut.ads, libgnat/a-stoubu.adb: Make Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and System.Put_Images Pure, so they can be with'ed by Pure units that should have Put_Image defined. * libgnat/a-stouut.adb: Add missing column adjustments, and remove a redundant one. * libgnat/s-putima.adb (Put_Arrow): New routine to print an arrow. Avoids adding a with clause to some containers.
2020-10-19[Ada] Ada2020: matching parentheses and bracketsBob Duff3-13/+34
gcc/ada/ * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Require matching parens or brackets. * par.adb, par-tchk.adb (T_Right_Bracket): New procedure to give an error on missing ].
2020-10-19[Ada] Crash in expression function defined in protected objectJavier Miranda1-0/+17
gcc/ada/ * sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration of the Entity attribute in constants associated with discriminals of protected types.
2020-10-19[Ada] AI12-0170: Abstract subprogram calls in class-wide precond exprsGary Dismukes1-2/+6
gcc/ada/ * sem_disp.adb (Check_Dispatching_Context): When the enclosing subprogram is abstract, bypass early return if the call is tag-indeterminate, to continue with the later error checking.
2020-10-19[Ada] Private type unexpectedly visibleJavier Miranda1-0/+19
gcc/ada/ * sem_ch7.adb (Uninstall_Declarations): Uninstall the declaration of a subtype declaration defined in the private part of a package.
2020-10-19[Ada] Clean up support of square bracketsArnaud Charlet2-4/+9
gcc/ada/ * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify code since we are always under -gnatX if we encounter a Tok_Left_Bracket. * scng.adb (Scan): [] is an aggregate under -gnatX and a wide character otherwise.
2020-10-19[Ada] Remove useless initialization and refine type of a local variablePiotr Trojanek1-1/+1
gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Cleanup.
2020-10-19[Ada] Refine type of a local variablePiotr Trojanek1-1/+1
gcc/ada/ * exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to Entity_Id.