aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-10-20preprocessor: Further fix for EOF in macro args [PR97471]Nathan Sidwell4-2/+2
My previous attempt at fixing this was incorrect. The problem occurs earlier in that _cpp_lex_direct processes the unwinding EOF needs in collect_args mode. This patch changes it not to do that, in the same way as directive parsing works. Also collect_args shouldn't push_back such fake EOFs, and neither should funlike_invocation_p. libcpp/ * lex.c (_cpp_lex_direct): Do not complete EOF processing when parsing_args. * macro.c (collect_args): Do not unwind fake EOF. (funlike_invocation_p): Do not unwind fake EOF. (cpp_context): Replace abort with gcc_assert. gcc/testsuite/ * gcc.dg/cpp/endif.c: Move to ... * c-c++-common/cpp/endif.c: ... here. * gcc.dg/cpp/endif.h: Move to ... * c-c++-common/cpp/endif.h: ... here. * c-c++-common/cpp/eof-2.c: Adjust diagnostic. * c-c++-common/cpp/eof-3.c: Adjust diagnostic.
2020-10-20c++: Add fixed test [PR82239]Marek Polacek1-0/+14
This test was fixed by r256550 but that commit was fixing another issue, and just happened to fix this too. gcc/testsuite/ChangeLog: PR c++/82239 * g++.dg/cpp0x/static_assert16.C: New test.
2020-10-20Simplify and split irange::copy_legacy_range into two functions.Aldy Hernandez2-31/+44
copy_legacy_range was a small but complex function. It was tricky to understand, and easy to introduce bugs into it. It also did unnecessary work on some code paths. This patch splits the function into two functions that are more efficient and easier to read (copy_to_legacy and copy_legacy_to_multi_range). gcc/ChangeLog: * value-range.cc (irange::operator=): Split up call to copy_legacy_range into... (irange::copy_to_legacy): ...this. (irange::copy_legacy_to_multi_range): ...and this. (irange::copy_legacy_range): Remove. * value-range.h: Remove copoy_legacy_range. Add copy_legacy_to_multi_range and copy_to_legacy.
2020-10-20gcc/doc/invoke.texi: Fix @table syntaxTobias Burnus1-1/+1
gcc/ * doc/invoke.texi (NVPTX options): Use @item not @itemx.
2020-10-20Avoid changing PHIs in GIMPLE split_edgeRichard Biener1-33/+17
Previously I've changed gimple_split_edge to avoid PHI node re-allocation, but this introduced swapping of PHI arguments due to the way edge redirection works. This is now a problem for me and which can be solved with the following approach reducing the overhead of split_edge even more. We can simply pretend there are no PHI nodes if we can make sure the new fallthru will have the same dest_idx as the old edge into the destination. 2020-10-20 Richard Biener <rguenther@suse.de> * tree-cfg.c (reinstall_phi_args): Remove. (gimple_split_edge): Remove PHIs around the edge redirection to avoid touching them at all.
2020-10-20Fix latch PHI arg lookup in vectorizable_reduction for double-reductionRichard Biener1-2/+4
We were using the wrong loop to figure the latch arg of a double-reduction PHI. Which isn't a problem in case ->dest_idx match up with the outer loop edges - but that's of course not guaranteed. 2020-10-20 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vectorizable_reduction): Use the correct loops latch edge for the PHI arg lookup.
2020-10-20MSP430: Support a memory operand for op1 of andneghi3Jozef Lawrynowicz1-2/+2
This fixes an ICE caused by an unrecognizeable insn generated when compiling gcc.c-torture/execute/pr97386-1.c at -O0. gcc/ChangeLog: * config/msp430/msp430.md (andneghi3): Allow general operand for op1 and update output assembler template.
2020-10-20collect-utils.c, lto-wrapper + mkoffload: Improve -save-temps filenameTobias Burnus7-29/+43
gcc/ChangeLog: * collect-utils.c (collect_execute, fork_execute): Add at-file suffix argument. * collect-utils.h (collect_execute, fork_execute): Update prototype. * collect2.c (maybe_run_lto_and_relink, do_link, main, do_dsymutil): Update calls by passing NULL. * config/i386/intelmic-mkoffload.c (compile_for_target, generate_host_descr_file, prepare_target_image, main): Likewise. * config/gcn/mkoffload.c (compile_native, main): Pass at-file suffix. * config/nvptx/mkoffload.c (compile_native, main): Likewise. * lto-wrapper.c (compile_offload_image): Likewise.
2020-10-20Special case shifting by zero in operator_rshift::op1_range.Aldy Hernandez1-0/+5
gcc/ChangeLog: * range-op.cc (operator_rshift::op1_range): Special case shifting by zero.
2020-10-20[Ada] Refine type for type constraining routinesPiotr Trojanek1-10/+10
gcc/ada/ * sem_ch3.adb (Constrain_Decimal, Constrain_Enumeration, Constrain_Float, Constrain_Integer, Constrain_Ordinary_Fixed): Refine parameter type from Node_Id to Entity_Id.
2020-10-20[Ada] Prevent crashes when pretty-printing freeze nodes from gdbPiotr Trojanek1-2/+4
gcc/ada/ * sprint.adb (po): Set Dump_Freeze_Null to False; align colons. (ps): Likewise.
2020-10-20[Ada] AI12-0339: Empty function for Aggregate aspect of Ada containersEd Schonberg36-19/+248
gcc/ada/ * sinfo.ads, sinfo.adb: The flag Box_Present can appear in Iterated_Element_Association nodes. * sem_aggr.adb (Resolve_Aggregate): Call Resolve_Container_Aggregate when type of context has corresponding aspect. * sem_type.adb (Covers): In Ada_2020 an aggregate is compatible with a type that carries the corresponding aspect. * exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not create declarations and bodies for inherited primitive functions of null extensions that dispatch on result, when current scope includes an immediately visible non-overloadable homonym of the function. * libgnat/a-cborse.adb, libgnat/a-cborse.ads, libgnat/a-cbhase.ads, libgnat/a-cbhase.adb, libgnat/a-cborma.adb, libgnat/a-cborma.ads, libgnat/a-cbhama.adb, libgnat/a-cbhama.ads, libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-convec.ads, libgnat/a-ciorse.ads, libgnat/a-cihase.ads, libgnat/a-cihase.adb, libgnat/a-ciorma.ads, libgnat/a-cihama.ads, libgnat/a-cihama.adb, libgnat/a-cidlli.ads, libgnat/a-cidlli.adb, libgnat/a-coinve.adb, libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-convec.adb, libgnat/a-coinve.ads, libgnat/a-coorse.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads, libgnat/a-coorma.ads, libgnat/a-cohama.adb, libgnat/a-cohama.ads, libgnat/a-cdlili.ads: Add primitive function Empty for use in aspect Aggregate, and add corresponding body or expression function.
2020-10-20[Ada] Add support for Unreferenced aspect on formal parametersArnaud Charlet8-17/+63
gcc/ada/ * aspects.adb (Has_Aspect_Specifications_Flag): Add N_Parameter_Specification. * par-ch13.adb (Aspect_Specifications_Present): Also handle case of an unknown aspect on the last formal parameter (terminated by a Tok_Right_Paren). Minor reformatting. * par-ch6.adb (P_Formal_Part): Scan aspects on formal parameters. * par.adb: Fix typos. * sem_ch6.adb (Process_Formals): Add processing of aspects and in particular Unreferenced aspect for now. * sinfo.ads: Allow ASPECT_SPECIFICATIONS on a PARAMETER_SPECIFICATION. * doc/gnat_rm/implementation_defined_aspects.rst (Aspect Unreferenced): Update documentation. * gnat_rm.texi: Regenerate.
2020-10-20[Ada] Refine result type of Get_AccessibilityPiotr Trojanek2-2/+2
gcc/ada/ * sem_util.ads, sem_util.adb (Get_Accessibility): Refine result type from Node_Id to Entity_Id.
2020-10-20[Ada] Replace low-level Ekind membership tests with high-level Is_FormalPiotr Trojanek4-5/+5
gcc/ada/ * einfo.adb, exp_attr.adb, sem_ch13.adb, sem_util.adb: Use Is_Formal where possible.
2020-10-20[Ada] Implement AI12-0280 Making 'Old more flexibleSteve Baird8-94/+1245
gcc/ada/ * sem_util.ads: Declare a new package, Old_Attr_Util, which in turn declares two more packages, Conditional_Evaluation and Indirect_Temps. Conditional_Evaluation provides a predicate for deciding whether a given 'Old attribute reference is eligible for conditional evaluation and, in the case where it is eligible, a function that constructs the Boolean-valued condition that is to be evaluated at run time in deciding whether to evaluate the attribute prefix. Indirect_Temps provides support for declaring a temporary which is only initialized conditionally; more specifically, an access type and a variable of that type are declared (unconditionally) and then the variable is (conditionally) initialized with an allocator. The existence of the access type and the pointer variable is hidden from clients, except that a predicate, Is_Access_Type_For_Indirect_Temp, is provided for identifying such access types. This is needed because we want such an access type to be treated like a "normal" access type (specifically with respect to finalization of allocated objects). Other parts of the compiler treat access types differently if Comes_From_Source is False, or if the secondary stack storage pool is used; this predicate is used to disable this special treatment. * sem_attr.adb (Uneval_Old_Msg): Improve message text to reflect Ada202x changes. (Analyze_Attribute): A previously-illegal 'Old attribute reference is accepted in Ada2020 if it is eligible for conditional evaluation. * sem_res.adb (Valid_Conversion): Do not treat a rewritten 'Old attribute like other rewrite substitutions. This makes a difference, for example, in the case where we are generating the expansion of a membership test of the form "Saooaaat'Old in Named_Access_Type"; in this case Valid_Conversion needs to return True (otherwise the expansion will be False - see the call site in exp_ch4.adb). * exp_attr.adb (Expand_N_Attribute_Reference): When expanding a 'Old attribute reference, test for the case where the reference is eligible for conditional evaluation. In that case, use the new "indirect temporary" mechanism provided by Sem_Util. * exp_prag.adb (Expand_Attributes_In_Consequence.Expand_Attributes): If Sem_Util.Indirect_Temp_Needed indicates that there could be correctness problems associated with the old expansion scheme for dealing with 'Old attributes in contract cases consequences, then we use the new "indirect temporary" mechanism provided by Sem_Util instead. We do not want to do this unconditionally. * sem_util.adb: Provide a body for the new Old_Attr_Util package. Further work is needed in several areas for correctness: - The function Is_Repeatedly_Evaluated does not deal with container aggregates yet. - The function Is_Known_On_Entry does not deal with interactions with the Global aspect. Each area where more work is needed is indicated with a "???" comment in the code; a more detailed description can be found there. Some optimization opportunties are similarly indicated with a "???" comment. * exp_ch3.adb (Freeze_Type): In deciding whether to generate expansion for the list controller of an access type, take the predicate Is_Access_Type_For_Indirect_Temp into account. If the predicate yields True, then generate the expansion. * exp_util.adb (Build_Allocate_Deallocate_Proc): We don't normally finalize allocated objects that are allocated on the secondary stack. Add an exception to this rule if the predicate Is_Access_Type_For_Indirect_Temp yields True. As a result of this exception, we have to deal with the fact that gigi expects a different parameter profile if we are using the secondary stack pool; the Pool and Alignment parameters must be omitted in this case.
2020-10-20[Ada] Spurious error in current instance used as formal packageJavier Miranda1-0/+175
gcc/ada/ * sem_ch12.adb (Install_Parents_Of_Generic_Context, Remove_Parents_Of_Generic_Context): New subprograms. (Instantiate_Package_Body): Adding assertions to ensure that installed parents are properly removed.
2020-10-20[Ada] Make attribute Update an obsolescent featureClaire Dross1-0/+5
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Emit a warning on 'Update when Warn_On_Obsolescent_Feature is set to True.
2020-10-20[Ada] CUDA: build procedure calls instead of function callsRichard Kenner1-9/+9
gcc/ada/ * gnat_cuda.adb (Build_Register_Function_Call): Make procedure call instead of function, rename to Build_Register_Procedure_Call. (Build_CUDA_Init_Proc): Make procedure call instead of function.
2020-10-20[Ada] Crash on cond expression as actual for anonymous access formalJustin Squirek1-11/+16
gcc/ada/ * exp_ch6.adb (Expand_Branch): Properly anticipate expansion of conditional expressions producing object declarations in addition to assignment statements, and rename formal.
2020-10-20[Ada] Fixes for pretty command-line GNATprove output with -gnatdFYannick Moy2-40/+82
gcc/ada/ * errout.adb (Write_Source_Code_Line): Adopt display closer to GCC format. (Output_Messages): Deal specially with info messages. * erroutc.adb (Prescan_Message): Fix bug leading to check messages being considered as error messages in pretty output mode.
2020-10-20[Ada] Hang on cond expression as actual for anonymous access formalJustin Squirek1-6/+9
gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Properly handle the case where the condition of a conditional expression has been optimized out when calculating the value of an extra accessibility parameter.
2020-10-20[Ada] gnatpp: Fix documentation of threshold switchesBob Duff1-4/+4
gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst: Change "_" to "-".
2020-10-20[Ada] New warning on not fully initialized box aggregateArnaud Charlet19-47/+89
gcc/ada/ * sem_aggr.adb (Resolve_Aggregate): Warn on not fully initialized box aggregate. * sem_aggr.ads: Fix typo. * sem_res.adb (Resolve_Actuals): Fix typo in error message format marking it incorrectly as a continuation message. * sem_elab.adb (Check_Internal_Call_Continue): Similarly, add missing primary message in case of a call to an actual generic subprogram. * sem_warn.adb (Check_References): Do not warn on read but never assigned variables if the type is partially initialized. * libgnat/a-except.ads, libgnat/a-ststun.ads, libgnat/g-sechas.ads, libgnat/a-cbdlli.ads, libgnat/a-cfdlli.ads, libgnat/a-cobove.ads, libgnat/a-cohata.ads, libgnat/a-crbltr.ads, libgnat/a-cbmutr.ads, libgnat/a-crdlli.ads, libgnat/a-cbsyqu.ads: Address new warning. * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update doc on -gnatwv. * gnat_ugn.texi: Regenerate. gcc/testsuite/ * gnat.dg/opt11.adb: Add new expected warning.
2020-10-20[Ada] Inlining nonstatic calls to static expression functionsGary Dismukes1-0/+6
gcc/ada/ * sem_ch6.adb (Analyze_Expression_Function): Mark static expression functions as inlined.
2020-10-20[Ada] Crash on precondition, discriminant and protected objectsArnaud Charlet1-1/+1
gcc/ada/ * contracts.adb (Is_Prologue_Renaming): This function was missing support for E_Constant which can also be generated in protected objects.
2020-10-20[Ada] Issue with gnatbind -V switch and Ada 2012Arnaud Charlet1-14/+17
gcc/ada/ * bindgen.adb (Gen_Bind_Env_String): Generate Ada 2012 compatible strings. Code cleanup.
2020-10-20[Ada] Fix comments as volatility properties can apply to objectsYannick Moy2-5/+5
gcc/ada/ * sem_util.adb, sem_util.ads: Comment fix.
2020-10-20[Ada] Spurious discriminant check on "for of" loopArnaud Charlet1-2/+26
gcc/ada/ * sem_ch8.adb (Check_Constrained_Object): Suppress discriminant checks when the type has default discriminants and comes from expansion of a "for of" loop.
2020-10-20[Ada] Flexible AST node structureBob Duff24-270/+317
gcc/ada/ * atree.ads: Make Default_Node a constant. Remove the modification of Comes_From_Source, and use a separate flag for that. Change Sloc to 0; it always overwritten, and never left as the No_Location value. (Print_Statistics): Move to spec so we can call it from gnat1drv. (Num_Nodes): Rename to clarify that this is approximate. Correct comment: nodes and entities are never deleted, the count is never decremented, and this is not used by Xref. (Initialize): Correct comment: Error_List is not created here. Other minor naming and comment changes. * atree.adb (Extend_Node, New_Copy, New_Entity, New_Node): Streamline these. Simplify and improve efficiency. Move code from Allocate_Initialize_Node to these, where it can be executed unconditionally. Take advantage of automatic zeroing of the Nodes table. (Allocate_Initialize_Node): Remove this. It was an efficiency bottleneck, and somewhat complicated, because it was called from 4 places, and had all sorts of conditionals to check where it was called from. Better to move most of that code to the call sites, where it can be executed (or not) unconditionally. (Allocate_New_Node): New procedure to partly replace Allocate_Initialize_Node (called from just 2 of those 4 places). (Comes_From_Source_Default): New flag written/read by Set_Comes_From_Source_Default/Get_Comes_From_Source_Default. This allows us to make Default_Node into a constant with all-zeros value. (Set_Paren_Count_Of_Copy): New procedure to avoid duplicated code. (Report): New procedure to encapsulate the call to the reporting procedure. (Atree_Private_Part): We now need a body for this package, to contain package body Nodes. (Approx_Num_Nodes_And_Entities): Was Num_Nodes. For efficiency, compute the answer from Nodes.Last. That way we don't need to increment a counter on every node creation. Other minor naming and comment changes. * gnat1drv.adb: Call Atree.Print_Statistics if -gnatd.A switch was given. Add comment documenting the new order dependency (we must process the command line before calling Atree.Initialize). * debug.adb: Document -gnatd.A. * einfo.adb, sinfo.adb: Remove useless Style_Checks pragmas. * nlists.ads (Allocate_List_Tables): Inline makes node creation a little faster. * nlists.adb (Initialize): Remove local constant E, which didn't seem to add clarity. * treepr.adb (Print_Init): Use renamed Approx_Num_Nodes_And_Entities function. * types.ads: Change the Low and High bounds as described above. * types.h: Change Low and High bounds to match types.ads. * sem_ch8.adb, namet.adb, namet.ads: Move the computation of Last_Name_Id from sem_ch8 to namet, and correct it to not assume Name_Ids are positive. * ali.adb, ali-util.adb, bindo-writers.adb, exp_dist.adb, fmap.adb, fname-uf.adb, osint.adb: Fix various hash functions to avoid assuming the various ranges are positive. Note that "mod" returns a nonnegative result when the second operand is positive. "rem" can return negative values in that case (in particular, if the first operand is negative, which it now is). * switch-c.adb: Allow switch -gnaten to control the value of Nodes_Size_In_Meg. * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Remove traling whitespaces. * opt.ads (Nodes_Size_In_Meg): New Variable.
2020-10-20[Ada] Fix internal error on bit-aligned component of function callEric Botcazou1-16/+21
gcc/ada/ * exp_util.adb (Remove_Side_Effects): Always generate a renaming that is handled by the front-end in the case of an indexed or a selected component whose prefix has a nonstandard representation.
2020-10-20[Ada] Document Ada.Task_InitializationPat Rogers2-725/+707
gcc/ada/ * doc/gnat_rm/the_gnat_library.rst: Add Ada.Task_Initialization. * gnat_rm.texi: Regenerate.
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.