aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-19[Ada] universal_access equality and 'Access attributesArnaud Charlet1-14/+49
2020-06-19 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch4.adb (Find_Equality_Types.Check_Access_Attribute): New. (Find_Equality_Types): Move universal_access related checks at the end of the processing and add call to Check_Access_Attribute.
2020-06-19[Ada] Remove second warning for convention C_Variadic_nEric Botcazou1-11/+2
2020-06-19 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_prag.adb (Process_Convention): Revert previous change.
2020-06-19[Ada] Small cleanup in Apply_Range_Check implementationEric Botcazou3-172/+137
2020-06-19 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.ads (Apply_Static_Length_Check): Move up. (Apply_Range_Check): Add parameter Insert_Node. * checks.adb (Apply_Selected_Range_Checks): Merge into... (Apply_Range_Check): ...this. Add parameter Insert_Node, pass it as Warn_Node to Selected_Range_Checks and use it as insertion point for the checks. * sem_ch3.adb (Analyze_Subtype_Declaration): Rewrite block dealing with the range checks for the subtype indication. Use local variable and call Apply_Range_Check in both cases.
2020-06-19[Ada] Fix validity checks on attribute 'Old prefixPiotr Trojanek1-5/+11
2020-06-19 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Call Ensure_Valid on the expression of an object declaration that captures the value of 'Old prefix.
2020-06-19[Ada] Add comments about attribute 'Valid_Scalars on private tagged typesPiotr Trojanek3-5/+10
2020-06-19 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Add comment. * sem_attr.adb (Analyze_Attribute): Add ??? comment. * sem_util.ads (Valid_Scalars): This routine is only used for 'Valid_Scalars and not for 'Valid.
2020-06-19[Ada] Simplify processing of 'Valid_Scalars on array typesPiotr Trojanek1-25/+17
2020-06-19 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Do not call Scalar_Part_Present on the array component's type. (Build_Array_VS_Func): Remove Comp_Typ parameter, because it can be easily computed from the Array_Top parameter *and redundant parameters are confusing and error-prone).
2020-06-19[Ada] Fix validity checking for class-wide objectsPiotr Trojanek1-1/+1
2020-06-19 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_attr.adb (Build_Record_VS_Func): Strip privacy and type derivation from the root type when 'Valid_Scalars is applied to a class-wide type.
2020-06-19[Ada] Remove repeated testing of Check_Validity_Of_ParametersPiotr Trojanek1-10/+8
2020-06-19 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb (Apply_Parameter_Validity_Checks): Remove testing of Check_Validity_Of_Parameters for every formal parameter and function result.
2020-06-19[Ada] Add missing warning tag for some overlapping actuals warningsArnaud Charlet1-3/+3
2020-06-19 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Add missing warning tag.
2020-06-19Daily bump.GCC Administrator7-1/+587
2020-06-18c++: More P2002 operator<=> refinements.Jason Merrill4-12/+81
* Disallow && references. * Allow empty unions. * Improve diagnostics for a subobject comparison with non-comparison-category type. gcc/cp/ChangeLog: * method.c (early_check_defaulted_comparison): Check for &&. (build_comparison_op): Allow empty union. Diagnose non-category type. (common_comparison_type): Remove handling for non-category type. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/spaceship-ref1.C: New test. * g++.dg/cpp2a/spaceship-synth-neg4.C: New test. * g++.dg/cpp2a/spaceship-union1.C: New test.
2020-06-18vect: Use vect_relevant_for_alignment_p consistentlyFei Yang1-26/+3
Minor code refactorings in tree-vect-data-refs.c. When trying loop peeling to force alignment, call vect_relevant_for_alignment_p to filter out data references in the loop whose alignment is irrelevant. 2020-06-18 Felix Yang <felix.yang@huawei.com> gcc/ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call vect_relevant_for_alignment_p to filter out data references in the loop whose alignment is irrelevant when trying loop peeling to force alignment.
2020-06-18i386: Fix mode of ZERO_EXTRACT RTXes, remove ext_register_operand predicate.Uros Bizjak19-221/+765
The mode of ZERO_EXTRACT RTX should match the mode of its LOC register operand. The mode should be HI, SI or DImode to enable combine to synthesize extractions from HImode and DImode operands, in addition to existing SImode. Further, these changes tighten allowed modes for extv, extzv and insv named patterns and finally enable removal of ext_register_operand special predicate. 2020-18-06 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/i386.md (*cmpqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *cmpqi_ext_1. (*cmpqi_ext<mode>_2): Ditto. Rename from *cmpqi_ext_2. (*cmpqi_ext<mode>_3): Ditto. Rename from *cmpqi_ext_3. (*cmpqi_ext<mode>_4): Ditto. Rename from *cmpqi_ext_4. (cmpi_ext_3): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*extv<mode>): Use SWI24 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzv<mode>): Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzvqi): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*extzvqi_mem_rex64 and corresponding peephole2): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (@insv<mode>_1): Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*insvqi_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (*insvqi_2): Ditto. (*insvqi_3): Ditto. (*insvqi_1_mem_rex64 and corresponding peephole2): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. (addqi_ext_1): New expander. (*addqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *addqi_ext_1. (*addqi_ext<mode>_2): Ditto. Rename from *addqi_ext_2. (divmodqi4): Use HImode instead of SImode for ZERO_EXTRACT RTX. (udivmodqi4): Ditto. (testqi_ext_1): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*testqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *testqi_ext_1. (*testqi_ext<mode>_2): Ditto. Rename from *testqi_ext_2. (andqi_ext_1): New expander. (*andqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from andqi_ext_1. (*andqi_ext<mode>_1_cc): Ditto. Rename from *andqi_ext_1_cc. (*andqi_ext<mode>_2): Ditto. Rename from *andqi_ext_2. (*<code>qi_ext<mode>_1): Ditto. Rename from *<code>qi_ext_1. (*<code>qi_ext<mode>_2): Ditto. Rename from *<code>qi_ext_2. (xorqi_ext_1_cc): Use HImode instead of SImode for ZERO_EXTRACT RTX. (*xorqi_ext<mode>_1_cc): Use SWI248 mode iterator instead of SImode for ZERO_EXTRACT RTX. Use SWI248 mode iterator for the first operand of ZERO_EXTRACT RTX. Change ext_register_operand predicate to register_operand. Rename from *xorqi_ext_1_cc. * config/i386/i386-expand.c (ix86_split_idivmod): Emit ZERO_EXTRACT in mode, matching its first operand. (promote_duplicated_reg): Update for renamed insv<mode>_1. * config/i386/predicates.md (ext_register_operand): Remove predicate. gcc/testsuite/ChangeLog: * gcc.target/i386/pr78904-1a.c: New test. * gcc.target/i386/pr78904-1b.c: Ditto. * gcc.target/i386/pr78904-2a.c: Ditto. * gcc.target/i386/pr78904-2b.c: Ditto. * gcc.target/i386/pr78904-3a.c: Ditto. * gcc.target/i386/pr78904-3b.c: Ditto. * gcc.target/i386/pr78904-4a.c: Ditto. * gcc.target/i386/pr78904-4b.c: Ditto. * gcc.target/i386/pr78904-5a.c: Ditto. * gcc.target/i386/pr78904-5b.c: Ditto. * gcc.target/i386/pr78904-6a.c: Ditto. * gcc.target/i386/pr78904-6b.c: Ditto. * gcc.target/i386/pr78967-1a.c: Ditto. * gcc.target/i386/pr78967-1b.c: Ditto. * gcc.target/i386/pr78967-2a.c: Ditto. * gcc.target/i386/pr78967-2b.c: Ditto.
2020-06-18Avoid warning for memset writing over multiple members.Martin Sebor3-34/+140
Resolves: PR middle-end/95667 - unintended warning for memset writing across multiple members PR middle-end/92814 - missing -Wstringop-overflow writing into a dynamically allocated flexible array member gcc/ChangeLog: PR middle-end/95667 PR middle-end/92814 * builtins.c (compute_objsize): Remove call to compute_builtin_object_size and instead compute conservative sizes directly here. gcc/testsuite/ChangeLog: PR middle-end/95667 PR middle-end/92814 * gcc.dg/Wstringop-overflow-25.c: Remove xfails. * gcc.dg/Wstringop-overflow-39.c: New test.
2020-06-18c++: ICE in requires-expressions with invalid args [PR95735]Marek Polacek2-0/+13
This ICE-on-invalid goes back to GCC 6. In finish_template_variable, if coerce_innermost_template_parms returns error_mark_node, we pass it down to constraints_satisfied_p and that error_mark_node flows down to various satisfy_* functions and then to various tsubst_* functions, where we crash. diagnose_constraints also doesn't cope with error arglist, so I think we should just return as in the patch below. gcc/cp/ChangeLog: PR c++/95735 * pt.c (finish_template_variable): Return if coerce_innermost_template_parms return error_mark_node. gcc/testsuite/ChangeLog: PR c++/95735 * g++.dg/cpp2a/concepts-err2.C: New test.
2020-06-18Fix use of inaccessible member in pr94052.CChristophe Lyon1-1/+1
The recent PR41437 fix exposed a latent use of an inaccessible member in the below testcase. gcc/testsuite/ChangeLog: * g++.target/aarch64/pr94052.C: Give z::ad public access.
2020-06-18vectorizer: add _bb_vec_info::region_stmts and reverse_region_stmtsMartin Liska4-28/+109
gcc/ChangeLog: * coretypes.h (struct iterator_range): New type. * tree-vect-patterns.c (vect_determine_precisions): Use range-based iterator. (vect_pattern_recog): Likewise. * tree-vect-slp.c (_bb_vec_info): Likewise. (_bb_vec_info::~_bb_vec_info): Likewise. (vect_slp_check_for_constructors): Likewise. * tree-vectorizer.h:Add new iterators and functions that use it.
2020-06-18Add missing PR number to ChangeLog (PR 95378)Jonathan Wakely1-0/+1
gcc/c-family/ChangeLog: * ChangeLog:
2020-06-18rs6000: Fix creation of VEC_COND_EXPRMartin Liska1-6/+9
gcc/ChangeLog: * config/rs6000/rs6000-call.c (fold_build_vec_cmp): Since 502d63b6d6141597bb18fd23c87736a1b384cf8f, first argument of a VEC_COND_EXPR cannot be tcc_comparison and so that a SSA_NAME needs to be created before we use it for the first argument of the VEC_COND_EXPR. (fold_compare_helper): Pass gsi to fold_build_vec_cmp.
2020-06-18OpenMP/Fortran: Reject allocatable components in map clauseTobias Burnus2-0/+21
gcc/fortran/ChangeLog: * openmp.c (resolve_omp_clauses): Reject vars with allocatable components in OpenMP map clauses. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/map-alloc-comp-1.f90: New test.
2020-06-18middle-end/95739 - fix vector condition IFN expansionRichard Biener1-0/+4
This fixes the omission of moving the expansion result to the target. 2020-06-18 Richard Biener <rguenther@suse.de> PR middle-end/95739 * internal-fn.c (expand_vect_cond_optab_fn): Move the result to the target if necessary. (expand_vect_cond_mask_optab_fn): Likewise.
2020-06-18Fix typo in tree-ssa-reassoc.c.Martin Liska1-1/+1
gcc/ChangeLog: * tree-ssa-reassoc.c (ovce_extract_ops): Replace *vcond with vcond as we check for NULL pointer.
2020-06-18gcc-changelog: checkout & pull orderMartin Liska1-1/+1
contrib/ChangeLog: * gcc-changelog/git_update_version.py: First checkout and then run git pull ---rebase.
2020-06-18c++: Fix tsubst ICE with invalid static_cast [PR95728]Marek Polacek2-0/+21
Since r11-423 tsubst_copy_and_build/TREE_LIST uses tsubst_tree_list instead of open coding it. While the latter could return an error node wrapped in a TREE_LIST, the former can return a naked error node. That broke in tsubst_copy_and_build/NEW_EXPR: tree placement = RECUR (TREE_OPERAND (t, 0)); // placement is now error_mark_node, so... for (; placement != NULL_TREE; placement = TREE_CHAIN (placement)) // ... this crashes If we just return, we avoid the ICE and improve the diagnostic a bit. gcc/cp/ChangeLog: PR c++/95728 * pt.c (tsubst_copy_and_build) <case NEW_EXPR>: Return error_mark_node if placement is erroneous. gcc/testsuite/ChangeLog: PR c++/95728 * g++.dg/template/cast6.C: New test.
2020-06-18gcc-changelog: support merge commits in git_update_versionMartin Liska1-3/+11
contrib/ChangeLog: * gcc-changelog/git_update_version.py: Support merge commits and walk only on the branch that is being merged and generate missing ChangeLog entries.
2020-06-18silence empty-body warningTobias Burnus1-1/+3
gcc/ChangeLog: * gimple-pretty-print.c (dump_binary_rhs): Use braces to silence empty-body warning with gcc_fallthrough.
2020-06-18phiopt: Improve minmax optimization [PR95699]Jakub Jelinek2-10/+92
As discussed in the PR, the x < 0x80000000U to (int) x >= 0 optimization stands in the way of minmax_replacement optimization, so for comparisons with most of the constants it works well, but when the above mentioned optimization triggers, it is unable to do it. The match.pd (cond (cmp (convert? x) c1) (op x c2) c3) -> (op (minmax x c1) c2) optimization is able to look through that and this patch teaches minmax_replacement about it too. 2020-06-18 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/95699 * tree-ssa-phiopt.c (minmax_replacement): Treat (signed int)x < 0 as x > INT_MAX and (signed int)x >= 0 as x <= INT_MAX. Move variable declarations to the statements that set them where possible. * gcc.dg/tree-ssa/pr95699.c: New test.
2020-06-18forwprop: simplify_vector_constructor follow-up fix [PR95713]Jakub Jelinek2-7/+19
As the following testcase shows, the exception for the aarch64 vec_pack_trunc_di is not sufficient on x86, the halfvectype "vectors" have SImode but the x86 vec_pack_trunc_si meant for the bool bitmasks combines 2x SImode into DImode, while in the testcase the halfvectype is 1x SImode "vector" with SImode and result is 2x HImode "vector" with SImode. Richard Sandiford's reply: FWIW, since the aarch64 case was only found by inspection and might not be useful, personally I'd prefer to drop that case after all. 2020-06-18 Jakub Jelinek <jakub@redhat.com> PR target/95713 * tree-ssa-forwprop.c (simplify_vector_constructor): Don't allow scalar mode halfvectype other than vector boolean for VEC_PACK_TRUNC_EXPR. * gcc.dg/pr95713.c: New test.
2020-06-18avoid early asm outputRichard Biener1-13/+13
This avoids early assembler output via the gimplifier creating new static CTORs. The output machinery seems to be prepared to output constants recursively and it's just a matter of appropriately defering or not defering output. This also has the advantage of not outputting .string for optimized away local aggregate initializers containing string references. 2020-06-18 Richard Biener <rguenther@suse.de> * varasm.c (assemble_variable): Make sure to not defer output when outputting addressed constants. (output_constant_def_contents): Likewise. (add_constant_to_table): Take and pass on whether to defer output. (output_addressed_constants): Likewise. (output_constant_def): Pass on whether to defer output to add_constant_to_table. (tree_output_constant_def): Defer output of constants.
2020-06-18remove SLP_TREE_TWO_OPERATORS, add SLP permutation nodeRichard Biener4-142/+378
This removes the SLP_TREE_TWO_OPERATORS hack in favor of having explicit SLP nodes for both computations and the blend operation. For this introduce a generic merge + select + permute SLP node (with implementation limits). Building upon earlier patches it adds vect_stmt_dominates_stmt_p and the ability to compute a vector insertion place from vectorized stmts (which now have UID zero) as needed for the permute node. 2020-06-17 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (_slp_tree::two_operators): Remove. (_slp_tree::lane_permutation): New member. (_slp_tree::code): Likewise. (SLP_TREE_TWO_OPERATORS): Remove. (SLP_TREE_LANE_PERMUTATION): New. (SLP_TREE_CODE): Likewise. (vect_stmt_dominates_stmt_p): Declare. * tree-vectorizer.c (vect_stmt_dominates_stmt_p): New function. * tree-vect-stmts.c (vect_model_simple_cost): Remove SLP_TREE_TWO_OPERATORS handling. * tree-vect-slp.c (_slp_tree::_slp_tree): Amend. (_slp_tree::~_slp_tree): Likewise. (vect_two_operations_perm_ok_p): Remove. (vect_build_slp_tree_1): Remove verification of two-operator permutation here. (vect_build_slp_tree_2): When we have two different operators build two computation SLP nodes and a blend. (vect_print_slp_tree): Print the lane permutation if it exists. (slp_copy_subtree): Copy it. (vect_slp_rearrange_stmts): Re-arrange it. (vect_slp_analyze_node_operations_1): Handle SLP_TREE_CODE VEC_PERM_EXPR explicitely. (vect_schedule_slp_instance): Likewise. Remove old SLP_TREE_TWO_OPERATORS code. (vectorizable_slp_permutation): New function.
2020-06-18[Ada] Fix small inefficiency in previous change to expanderEric Botcazou2-77/+57
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Get_Size_For_Range): Only make sure to return a size lower than that of the original type if possible. * libgnat/s-rannum.adb (Random_Discrete): Back out optimization added for 32-bit types.
2020-06-18[Ada] ACATS 4.1J - B854003 - Subtype conformance check missedArnaud Charlet3-11/+46
2020-06-18 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch6.ads, sem_ch6.adb (Check_Formal_Conformance): New subprogram. (Check_Conformance): Move code to Check_Formal_Conformance. * sem_ch8.adb (Analyze_Subprogram_Renaming): Check for formal conformance when needed.
2020-06-18[Ada] Narrow large arithmetic and comparison operationsEric Botcazou2-18/+350
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Narrow_Large_Operation): New procedure to try and narrow large arithmetic and comparison operations. (Expand_N_In): Call it. (Expand_N_Op_Abs): Likewise. (Expand_N_Op_Add): Likewise. (Expand_N_Op_Divide): Likewise. (Expand_N_Op_Eq): Likewise. (Expand_N_Op_Ge): Likewise. (Expand_N_Op_Gt): Likewise. (Expand_N_Op_Le): Likewise. (Expand_N_Op_Lt): Likewise. (Expand_N_Op_Minus): Likewise. (Expand_N_Op_Mod): Likewise. (Expand_N_Op_Multiply): Likewise. (Expand_N_Op_Ne): Likewise. (Expand_N_Op_Plus): Likewise. (Expand_N_Op_Rem): Likewise. (Expand_N_Op_Subtract): Likewise. (Expand_N_Type_Conversion): Use Convert_To procedure. * exp_ch9.adb (Is_Pure_Barrier) <N_Identifier>: Skip all numeric types. <N_Type_Conversion>: Use explicit criterion.
2020-06-18[Ada] Small cleanup in constraint checking code for allocatorsEric Botcazou2-63/+58
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_Allocator_Expression): Apply constraint and predicate checks for the qualified expression on entry, followed by constraint and predicate checks for the allocator itself, and return early if this results in a static error. (Expand_N_Allocator): Do not do the same here. Instead apply constraint and predicate checks for arrays in the subtype indication case. * exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply range checks to allocators here.
2020-06-18[Ada] Crash in tagged type constructor with task componentsJavier Miranda6-25/+66
2020-06-18 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch6.adb (BIP_Suffix_Kind, Is_Build_In_Place_Entity): Move declarations... * exp_ch6.ads: Here. * exp_util.adb (Is_Secondary_Stack_BIP_Func_Call): Do not rely on the name of the scope to locate the extra formal BIPalloc since they are copied when the pointer type associated with dispatching calls is built; rely on routines Is_Build_In_Place_Entity and BIP_Suffix_Kind. * exp_disp.adb (Expand_Dispatching_Call): Set the scope of the first extra formal of the internally built pointer type. * sem_ch3.adb (Derive_Subprogram): Do not inherit extra formals from a limited interface parent since limitedness is not inherited in such case (AI-419) and this affects the extra formals. * sprint.adb (Write_Itype): Output extra formals of subprogram types.
2020-06-18[Ada] Update output of verbose error summaryGhjuvan Lacambre2-18/+64
2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com> gcc/ada/ * errout.adb (Write_Error_Summary): Display number of warnings treated as errors. * errutil.ads: Update comment.
2020-06-18[Ada] Small cleanup in the attribute code of the expanderEric Botcazou2-34/+34
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Analyze_Attribute) <Asm_{In,Out}put>: Alphabetize. <Component_Size>: Add check for universal integer attribute. <Aft>, <Bit_Order>, <Definite>, <Max_Alignment_For_Allocation>, <Scalar_Storage_Order>: Raise Program_Error on them. * sem_attr.adb (Eval_Attribute) <Component_Size>: Add comment on the packed array case.
2020-06-18[Ada] Implement AI12-0032 fixes for 'Old attribute accessibilitySteve Baird2-0/+27
2020-06-18 Steve Baird <baird@adacore.com> gcc/ada/ * sem_util.adb (Object_Access_Level): Treat a 'Old attribute reference like an aggregate in determining its static accessibility level; after the evaluation of the relevant post-condition, the implicitly declared constant associated with an Old attribute reference ceases to exist. Similarly for Loop_Entry attribute. * exp_ch6.adb (Expand_Call_Helper): For an attribute reference that is expanded into a reference to an implicitly declared constant (e.g., a 'Old or 'Loop_Entry attribute), compute the dynamic accessibility level of that constant by looking at the declaration of the constant (as opposed to looking at the attribute reference).
2020-06-18[Ada] No Default_Initial_Condition check when declaring an imported objectSteve Baird1-0/+1
2020-06-18 Steve Baird <baird@adacore.com> gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a default initial condition check for the declaration of an imported object.
2020-06-18[Ada] Add support for XDR streaming in the default runtimeArnaud Charlet13-167/+428
2020-06-18 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * Makefile.rtl: Add s-statxd.o. * bindgen.adb (Gen_Adainit): Add support for XDR_Stream. * bindusg.adb (Display): Add mention of -xdr. * gnatbind.adb: Process -xdr switch. * init.c (__gl_xdr_stream): New. * opt.ads (XDR_Stream): New. * libgnat/s-stratt__xdr.adb: Rename to... * libgnat/s-statxd.adb: this and adjust. * libgnat/s-statxd.ads: New. * libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between default and XDR implementation at runtime. * libgnat/s-ststop.ads: Update comments. * doc/gnat_rm/implementation_advice.rst: Update doc on XDR streaming. * gnat_rm.texi: Regenerate.
2020-06-18[Ada] Fix host/target confusion for attribute To_AddressEric Botcazou1-3/+3
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_attr.adb (Analyze_Attribute) <To_Address>: Use the address size of the target instead of the host when checking the value of a static expression. Also use standard idiom for exponentiation.
2020-06-18[Ada] Add second warning for convention C_Variadic_nEric Botcazou1-0/+10
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_prag.adb (Process_Convention): Give a warning on C_Variadic_n being applied to a subprogram with exactly n parameters.
2020-06-18[Ada] Profile mismatch between C and Ada functionsArnaud Charlet10-60/+60
2020-06-18 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnarl/s-osinte__linux.ads, libgnat/g-io.adb, libgnat/g-socket.adb, libgnat/g-socthi.adb, libgnat/g-socthi.ads, libgnat/g-socthi__vxworks.adb, libgnat/g-socthi__vxworks.ads, libgnat/g-sothco.ads, libgnat/s-io.adb, libgnat/a-except.adb: Fix function profile mismatch with imported C functions.
2020-06-18[Ada] Minor cleanup in Expand_Call_HelperEric Botcazou1-18/+6
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Remove superfluous calls to Relocate_Node and merge calls to Analyze and Resolve in a couple of places. Do not attempt to generate a range check for an actual parameter against the formal's type of a derived subprogram after generating a conversion to the formal's type of the parent subprogram.
2020-06-18[Ada] Improve compile-time evaluation of value rangesEric Botcazou3-615/+667
2020-06-18 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.adb (Compute_Range_For_Arithmetic_Op): New procedure to compute a range for an arithmetical operation extracted from... (Minimize_Eliminate_Overflows): ...here. Call it. (Determine_Range_Cache_O): New cache for Original_Node nodes. (Determine_Range): Call Compute_Range_For_Arithmetic_Op for all arithmetic expressions. Use Attribute_Id in lieu of Attribute_Name for attributes. Add handling for Range_Length alongside Length. Add specific handling for Alignment, Bit, First_Bit, Last_Bit, Max_Size_In_Storage_Elements, Position, Bit_Position, Component_Size, Object_Size, Size, Value_Size, Descriptor_Size. (Enable_Overflow_Check): Omit the check for Abs and Minus if the operand cannot be the largest negative number. (Selected_Length_Checks): Use Pos for Number_Dimensions. * exp_attr.adb (Expand_N_Attribute_Reference): Move compile-time handling of Bit_Position, Descriptor_Size, First_Bit, Last_Bit and Position to... * sem_attr.adb (Eval_Attribute): ...here. Move up Alignment for objects and use Compile_Time_Known_Attribute in this case too.
2020-06-18[Ada] Do not treat pragma Compile_Time_Warning as error even with -gnatweGhjuvan Lacambre9-858/+949
2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com> gcc/ada/ * erroutc.ads: Declare new Is_Compile_Time_Msg boolean, add new Compile_Time_Pragma field to Error_Msg_Object type. (Count_Compile_Time_Pragma_Warnings): New function. * erroutc.adb (Count_Compile_Time_Pragma_Warnings): New function. (Compilation_Errors): Take Compile_Time warnings into account when tallying Errors/Warnings. * errout.ads (Error_Msg): New procedure. * errout.adb (Error_Msg): New procedure. (Error_Msg_Internal): Set new Compile_Time_Pragma field in Error_Msg_Object. * errutil.adb (Error_Msg): Set new Compile_Time_Pragma field in Error_Msg_Object. * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Pass True to new Error_Msg procedure. * doc/gnat_rm/implementation_defined_pragmas.rst: Update doc for the Compile_Time_Warning pragma. * gnat_rm.texi: Regenerate. * opt.ads: Update comment.
2020-06-18[Ada] Suppress CodePeer message on possible uninitialized variableArnaud Charlet1-2/+2
2020-06-18 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch4.adb (Check_Compatible_Profiles): Add explicit initialization.
2020-06-18[Ada] Fix failed assertion on a slice indexed by a subtype_indicationPiotr Trojanek1-0/+4
2020-06-18 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb (Generate_Index_Checks): Handle N_Subtype_Indication returned from Scalar_Range.
2020-06-18[Ada] Cleanups in code related to static expressionsPiotr Trojanek3-15/+14
2020-06-18 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb, sem_ch3.adb: Minor refactorings. * sem_eval.adb (Eval_Qualified_Expression): Fix reference to RM rule in comment; only set a local variable Hex in the branch where it is used.
2020-06-18[Ada] Avoid forced loading of System.Priority in CodePeer modePiotr Trojanek1-1/+1
2020-06-18 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_eval.adb (Check_Non_Static_Context): Use Is_RTE.