aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-12libstdc++: Make std::atomic_flag::test members constJonathan Wakely3-10/+26
Also fix the tests so they run without an explicit -std=gnu++2a in the RUNTESTFLAGS, and test the new function on const-qualified objects. * include/bits/atomic_base.h (atomic_flag::test): Add missing const qualifiers. * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add dg-options and verify results of test function. * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise.
2020-06-12[Ada] Fix anonymous-to-named access type implicit conversion legality checkingSteve Baird1-6/+83
2020-06-12 Steve Baird <baird@adacore.com> gcc/ada/ * sem_res.adb (Valid_Conversion): The simpler cases of violations of the aforementioned 8.6 rule are already handled correctly. These include cases where the operand of the type conversion is an access parameter or a stand-alone object of an anonymous access type. Add code to detect violations where the operand of the type conversion is an access discriminant whose accessibility level is tied to one of the other simpler cases. This is implemented in a new function, Valid_Conversion.Is_Discrim_Of_Bad_Access_Conversion_Argument, which is called in place of the previous test.
2020-06-12[Ada] Enable Put_Image in pre-Ada-2020 modesBob Duff7-35/+80
2020-06-12 Bob Duff <duff@adacore.com> gcc/ada/ * exp_attr.adb (Put_Image): Remove assertion. This assertion is False in mixed-Ada-version programs. * exp_put_image.adb (Tagged_Put_Image_Enabled): New flag to make it easy to experiment with Put_Image on tagged types. False in this version. (Enable_Put_Image): Enable in pre-2020. Workarounds: Disable for tagged types if Tagged_Put_Image_Enabled is False. Disable for access-to-subprogram types. Disable if errors have been detected, or Sink is unavailable. (Preload_Sink): Move all conditionals here, from Sem_Ch10, so they can be nearby related code in Enable_Put_Image. Load Sink only if we have seen a tagged type. This removes the dilemma about calling Preload_Sink when compiling the compiler, which caused unwanted dependences. * exp_put_image.ads (Preload_Sink): New formal Compilation_Unit, needed to move all conditionals here, from Sem_Ch10. * libgnat/a-stouut.adb (Put_UTF_8): Make this suitable for inlining, so we don't get warnings about inlining in some tests. And so it can be inlined! * opt.ads (Tagged_Seen): New flag (see Preload_Sink). * scng.adb (Scan): Set new Tagged_Seen flag. * sem_ch10.adb (Analyze_Compilation_Unit): Move conditionals and comments regarding Preload_Sink into Preload_Sink.
2020-06-12[Ada] AI12-0074 View conversions and out parameters passed by copyArnaud Charlet1-56/+81
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Actuals): Check for AI12-0074.
2020-06-12[Ada] Bump secondary stack alignment factor in full runtimesOlivier Hainque2-4/+17
2020-06-12 Olivier Hainque <hainque@adacore.com> gcc/ada/ * libgnat/s-secsta.ads (Memory_Alignment): New constant, memory alignment for chunks and allocated blocks. Initialize to Standard'Maximum_Alignment * 2. (Chunk_Memory): Use it. * libgnat/s-secsta.adb (Round_Up): Likewise.
2020-06-12[Ada] Alphabetic ordering for name and pragmasPiotr Trojanek3-21/+21
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * par-prag.adb: Fix ordering. * snames.ads-tmpl (Name_Test_Case, Pragma_Test_Case): Likewise. * sem_prag.adb (Sig_Flags): Likewise.
2020-06-12[Ada] Fix handling of Ada 83 OUT parameter ruleArnaud Charlet1-2/+24
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Entity_Name): Fix handling of expressions containing array attributes wrt Ada 83 detection.
2020-06-12[Ada] Implement AI12-0369Steve Baird4-127/+205
2020-06-12 Steve Baird <baird@adacore.com> gcc/ada/ * sem_util.ads, sem_util.adb: Define 3 new Boolean-valued functions - Statically_Denotes_Entity, Statically_Denotes_Object, and Statically_Names_Object. The first two were taken from sem_attr.adb. The term "statically names" is defined in the Ada RM and the new function Statically_Names_Object is intended to reflect that definition, or more precisely, as described in a comment in the code, to reflect the expected future definition of that term. * sem_attr.adb: Delete functions Statically_Denotes_Object and Statically_Denotes_Entity; these two functions have been moved to package Sem_Util. Replace call to Statically_Denotes_Object with a call to Statically_Names_Object as per AI12-0217 (a binding interpretation, so no Ada_Version check). * exp_ch9.adb (Expand_Entry_Barrier.Is_Simple_Barrier): Change name of function (it was previously Is_Simple_Barrier_Name) because the function should return True in the case of a static expression; implement this requirement. Change function to include a call to Statically_Names_Object so that, for Ada_2020 and later, it will return True for appropriate subcomponent names. (Expand_Entry_Barrier.Is_Pure_Barrier): Handle N_Indexed_Component and N_Selected_Component cases by calling Statically_Names_Object. (Expand_Entry_Barrier): Reorganize to treat Simple_Barriers and Pure_Barriers more uniformly. Prevent cascaded errors.
2020-06-12[Ada] Compiler locks up with -gnatX and formal subprogram with aspectsEd Schonberg1-7/+14
2020-06-12 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch12.adb (Find_Matching_Actual): Add guard on search loops to detect a compilation error when using a compiler built without assertions. (Instantiate_Formal_Subprogram): Create a new subprogram name for the actual only if formal has contract aspects and expansion is enabled.
2020-06-12[Ada] Improve code generated for assignment of dynamic record aggregatesEric Botcazou1-80/+231
2020-06-12 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_aggr.adb: Add with and use clauses for Sem_Mech. (Get_Base_Object): New function to get the base object of a node. (In_Place_Assign_OK): Add Target_Object parameter. Deal with a qualified expression on entry. Remove short-circuit for array aggregates with a single "others" choice. Do not look into the components of the aggregate if the parent is an allocator. (Check_Component): Add T_OK parameter and rewrite. (Safe_Component): Invoke Check_Component with T_OK set to False. (Convert_To_Assignments): Try to use an in-place assignment for any target; for that, call Get_Base_Object on the target and pass the result to In_Place_Assign_OK. (Expand_Array_Aggregate): Use Parent_Kind and Parent_Node more consistently. For an assignment, call Get_Base_Object on the target and pass the result to In_Place_Assign_OK.
2020-06-12[Ada] Don't correct socket timeout on Windows Server 2019Dmitriy Anisimkov3-12/+29
2020-06-12 Dmitriy Anisimkov <anisimko@adacore.com> gcc/ada/ * socket.c (__gnat_minus_500ms): Use GetVersionEx to detect Windows Server version. * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): Remade to Boolean constant. * libgnat/g-socket.adb (Set_Socket_Option): Use Minus_500ms_Windows_Timeout constant instead of function call.
2020-06-12[Ada] AI12-0350 Swap for Indefinite_HoldersArnaud Charlet4-0/+52
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-coinho.ads, libgnat/a-coinho.adb, libgnat/a-coinho__shared.ads, libgnat/a-coinho__shared.adb (Swap): New procedure.
2020-06-12[Ada] Fix handling of subprograms declared in a protected bodyArnaud Charlet4-290/+238
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_ch6.adb (Expand_N_Subprogram_Declaration): Do nothing for a subprogram declared in a protected body. * exp_ch9.ads, exp_ch9.adb (Build_Private_Protected_Declaration): Moved to sem_ch6.adb. (Expand_N_Protected_Body): Do nothing for a subprogram declared in a protected body. * sem_ch6.adb (Build_Internal_Protected_Declaration): Moved from exp_ch9.adb and renamed and fixed to ensure in particular that such subprograms have convention Intrinsic and have no protected version. (Analyze_Subprogram_Body_Helper): Call Build_Internal_Protected_Declaration. (Move_Pragmas): Moved up and merged with the more general version from Build_Private_Protected_Declaration. We only want to copy selected pragmas, most pragmas are not suitable for a copy on the spec.
2020-06-12[Ada] Diagnose illegal overriding indicators in protected bodiesEd Schonberg1-0/+13
2020-06-12 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch6.adb (Check_Overriding_Indicatior): Reject an overriding indicator on a subprogram declared within a protected body.
2020-06-12[Ada] Reuse Is_Entry where possiblePiotr Trojanek6-15/+12
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * contracts.adb, einfo.adb, sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.adb: Replace Ekind_In with Is_Entry.
2020-06-12[Ada] Detect overlapping actuals in entry callsPiotr Trojanek1-0/+7
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Entry_Call): Add call to Warn_On_Overlapping_Actuals.
2020-06-12[Ada] ACATS 4.2Q - BDD2007Arnaud Charlet3-2/+141
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * aspects.ads (Is_Representation_Aspect): New array. * sem_ch13.adb (Analyze_Aspect_Specifications): Check 13.1(9.2/5) for representation aspects. gcc/testsuite/ * gnat.dg/rep_clause8.adb: Update error location.
2020-06-12[Ada] Put_Image: preload type Sink, change what types have it enabledBob Duff4-4/+53
2020-06-12 Bob Duff <duff@adacore.com> gcc/ada/ * exp_put_image.ads, exp_put_image.adb (Preload_Sink): Procedure for preloading type Sink. This has the side effect of loading various dependents, including Ada.Strings.UTF_Encoding. (Enable_Put_Image): Disable Put_Image in pre-2020 versions of Ada. This limitation can probably be lifted later. Enable for tagged types except in predefined units. Disable for CPP types; Put_Image is legal, just prints the type name. * sem_attr.adb (Check_Put_Image_Attribute): Don't complain about Put_Image of CPP types; instead call the "unknown" version of Put_Image. * sem_ch10.adb (Analyze_Compilation_Unit): Call Preload_Sink.
2020-06-12[Ada] Remove redundant iterations in checks for overlapping actualsPiotr Trojanek1-60/+42
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify.
2020-06-12[Ada] Remove suppression for overlapping actuals in internal unitsPiotr Trojanek1-8/+2
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Remove suppression for internal units.
2020-06-12[Ada] ACATS 4.1Q - CDD2A04 - RLS not followedArnaud Charlet6-22/+246
2020-06-12 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * exp_strm.adb (Build_Elementary_Input_Call): Add support for 24 bits elementary types. * rtsfind.ads: Add 24 bits integer streaming routines. * sem_ch13.adb (Analyze_Attribute_Definition_Clause [Attribute_Stream_Size]): Add support for 24 bits elementary types. * libgnat/s-stratt.ads, libgnat/s-stratt.adb, libgnat/s-stratt__xdr.adb: Add support for signed and unsigned 24 bits integers.
2020-06-12[Ada] Simplify getting discriminant value from a list of constraintsPiotr Trojanek1-8/+12
2020-06-12 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch3.adb (Get_Discr_Value): Cleanup.
2020-06-12[Ada] Implement AI12-0175 Preelaborable packages with address clausesEric Botcazou5-19/+181
2020-06-12 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * rtsfind.ads (RTU_Id): Add System_Address_To_Access_Conversions. * sem_elab.adb (Elaboration_Phase_Active): Alphabetize. (Finalize_All_Data_Structures): Likewise. (Error_Preelaborated_Call): New procedure. (Build_Call_Marker): Set Is_Preelaborable_Call flag in marker. (Build_Access_Marker): Likewise. (Build_Subprogram_Invocation): Likewise. (Build_Task_Activation): Likewise. (Check_Preelaborated_Call): Return when the call is preelaborable. Call Error_Preelaborated_Call to give the error otherwise. (Check_Elab_Call): Likewise. * sem_util.adb (Is_Preelaborable_Function): New predicate. (Is_Non_Preelaborable_Construct.Visit): Recurse on the Explicit_Actual_Parameter field of N_Parameter_Association. (Is_Non_Preelaborable_Construct.Visit_Subexpression): In Ada 2020, for a call to a preelaborable function, visit the parameter list; otherwise, raise Non_Preelaborable exception. (Is_Preelaborable_Construct): Likewise, but recursively check the parameters instead and return false upon failure, otherwise true. * sinfo.ads (Is_Preelaborable_Call): New flag in call marker nodes. (Is_Preelaborable_Call): New inline function. (Set_Is_Preelaborable_Call): New inline procedure. * sinfo.adb (Is_Preelaborable_Call): New inline function. (Set_Is_Preelaborable_Call): New inline procedure.
2020-06-12[Ada] Remove unnecessary use_clause from stringt.adsBob Duff1-1/+1
2020-06-12 Bob Duff <duff@adacore.com> gcc/ada/ * stringt.ads: Remove "use System;".
2020-06-12[Ada] Small cleanup in handling of Ada 2012 implicit dereferencesEric Botcazou4-46/+13
2020-06-12 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch4.adb (Try_Container_Indexing): Replace call to First_Discriminant by Get_Reference_Discriminant to get the reference discriminant. * sem_ch13.adb (Check_Indexing_Functions): Likewise. * sem_ch5.adb (Preanalyze_Range): Call Get_Reference_Discriminant to get the reference discriminant. * sem_util.adb (Is_OK_Variable_For_Out_Formal): Treat all Ada 2012 implicit dereferences in only one place. (Is_Variable): Minor tweak.
2020-06-12[Ada] Compiler crash on instance with overloaded actual and aspectsEd Schonberg1-18/+69
2020-06-12 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch12.adb (Has_Contracts): New predicate to check whether a formal subprogram carries an aspect specification for a pre- or postcondition. (Build_Subprogram_Wrappers): If actual is overloaded, create a new name to be used in call inside wrapper body. This names carries the interpretations of the actual, and is resolved when the body is analyzed. (Build_Subprogram_Body_Wrapper): Use this generated name in call. (Build_Subprogram_Decl_Wrapper): Build profile of wrapper from the profile of formal, and reset type entities for subsequent analysis.
2020-06-12[Ada] Put_Image attributeBob Duff4-29/+34
2020-06-12 Bob Duff <duff@adacore.com> gcc/ada/ * debug.adb: Remove usage of -gnatd_z. * exp_attr.adb, exp_put_image.ads, exp_put_image.adb: Clean up the enable/disable code. If Put_Image is disabled for a type, systematically call the "unknown" version. Improve comments. Consolidate workarounds. Remove usage of -gnatd_z.
2020-06-12[Ada] Fix typos in commentsEric Botcazou1-12/+12
2020-06-12 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_elab.adb: Fix typos in comments.
2020-06-12[Ada] Missing accessibility error on object in type conversionJustin Squirek1-1/+12
2020-06-12 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_util.adb (Object_Access_Level): Add processing of implicit dereferences.
2020-06-12[Ada] Ada2020: update Big_Numbers.* specsBob Duff7-31/+41
2020-06-12 Bob Duff <duff@adacore.com> gcc/ada/ * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads, libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads: Update Put_Image, and uncomment the aspect specification. Add pragmas Ada_2020. * libgnat/a-stouut.ads, libgnat/a-stteou.ads: Add Preelaborate, because the Big_Numbers packages have Preelaborate, and now depend on these Text_Output packages.
2020-06-12[Ada] Implement AI12-0269 No_Return for functionsEric Botcazou7-25/+101
2020-06-12 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * einfo.ads (No_Return): Document it for all subprograms. * einfo.adb (Set_No_Return): Adjust assertion accordingly. * sem_ch3.adb (Check_Abstract_Overriding): Implement the check prescribed by RM 6.5.1(6/2) here instead of... (Derive_Subprogram): Adjust comment accordingly. * sem_disp.adb (Override_Dispatching_Operation): ...here. Remove superfluous return statement. * sem_ch6.adb (Check_No_Return_Expression): New procedure. (Analyze_Function_Return): Call it to implement the check prescribed by AI12-0269 for simple return statements of No_Return functions, and also checks extended statements. (Analyze_Return_Statement): Only give an error on a return statement in No_Return procedures. Use idiomatic form. * sem_ch8.adb (Analyze_Subprogram_Renaming): Adjust error message for No_Return renaming subprogram. * sem_prag.adb (Analyze_Pragma) <Pragma_No_Return>: Accept it on functions and generic functions in Ada 2020.
2020-06-12match any program name when pruning collect messagesAlexandre Oliva1-2/+2
When collect* programs have an executable suffix, they may include it in their outputs. Match them when pruning gcc output, making room for other program names to print them. for gcc/testsuite/ChangeLog * lib/prune.exp (prune_gcc_output): Match any executable name in collect messages.
2020-06-12Fix few -Wformat-diag warnings.Martin Liška3-8/+8
Ready for master? Thanks, Martin gcc/ChangeLog: * cgraphunit.c (process_symver_attribute): Wrap weakref keyword. * dbgcnt.c (dbg_cnt_set_limit_by_index): Do not print extra new line. * lto-wrapper.c (merge_and_complain): Wrap option names.
2020-06-12vect: Factor out and rename some functions/macrosKewen Lin4-93/+128
Power supports vector memory access with length (in bytes) instructions. Like existing fully masking for SVE, it is another approach to vectorize the loop using partially-populated vectors. As Richard Sandiford suggested, we should share the codes in approaches with partial vectors if possible. This patch is to: 1) factor out two functions: - vect_min_prec_for_max_niters - vect_known_niters_smaller_than_vf. 2) rename four functions: - vect_iv_limit_for_full_masking - check_load_store_masking - vect_set_loop_condition_masked - vect_set_loop_condition_unmasked 3) rename macros LOOP_VINFO_MASK_COMPARE_TYPE and LOOP_VINFO_MASK_IV_TYPE. Bootstrapped/regtested on aarch64-linux-gnu. gcc/ChangeLog: * tree-vect-loop-manip.c (vect_set_loop_controls_directly): Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE. Rename LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE. (vect_set_loop_condition_masked): Renamed to ... (vect_set_loop_condition_partial_vectors): ... this. Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE. Rename vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors. (vect_set_loop_condition_unmasked): Renamed to ... (vect_set_loop_condition_normal): ... this. (vect_set_loop_condition): Rename vect_set_loop_condition_unmasked to vect_set_loop_condition_normal. Rename vect_set_loop_condition_masked to vect_set_loop_condition_partial_vectors. (vect_prepare_for_masked_peels): Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE. * tree-vect-loop.c (vect_known_niters_smaller_than_vf): New, factored out from ... (vect_analyze_loop_costing): ... this. (_loop_vec_info::_loop_vec_info): Rename mask_compare_type to compare_type. (vect_min_prec_for_max_niters): New, factored out from ... (vect_verify_full_masking): ... this. Rename vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors. Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE. Rename LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE. (vectorizable_reduction): Update some dumpings with partial vectors instead of fully-masked. (vectorizable_live_operation): Likewise. (vect_iv_limit_for_full_masking): Renamed to ... (vect_iv_limit_for_partial_vectors): ... this. * tree-vect-stmts.c (check_load_store_masking): Renamed to ... (check_load_store_for_partial_vectors): ... this. Update some dumpings with partial vectors instead of fully-masked. (vectorizable_store): Rename check_load_store_masking to check_load_store_for_partial_vectors. (vectorizable_load): Likewise. * tree-vectorizer.h (LOOP_VINFO_MASK_COMPARE_TYPE): Renamed to ... (LOOP_VINFO_RGROUP_COMPARE_TYPE): ... this. (LOOP_VINFO_MASK_IV_TYPE): Renamed to ... (LOOP_VINFO_RGROUP_IV_TYPE): ... this. (vect_iv_limit_for_full_masking): Renamed to ... (vect_iv_limit_for_partial_vectors): this. (_loop_vec_info): Rename mask_compare_type to rgroup_compare_type. Rename iv_type to rgroup_iv_type.
2020-06-12recog: Use parameter packs for operator()Richard Sandiford1-35/+5
This patch uses parameter packs to define insn_gen_fn::operator(). I guess in some ways it's C++-ification for its own sake, but it does make things simpler and removes the current artificial limit of 16 arguments. Note that the call is still strongly typed: all arguments have to have implicit conversions to rtx. Error messages for bad arguments look reasonable. I'm sure there are more elegant ways of getting the function type, but this version at least fits on one line, so I didn't try too hard to find an alternative. 2020-06-12 Richard Sandiford <richard.sandiford@arm.com> gcc/ * recog.h (insn_gen_fn::f0, insn_gen_fn::f1, insn_gen_fn::f2) (insn_gen_fn::f3, insn_gen_fn::f4, insn_gen_fn::f5, insn_gen_fn::f6) (insn_gen_fn::f7, insn_gen_fn::f8, insn_gen_fn::f9, insn_gen_fn::f10) (insn_gen_fn::f11, insn_gen_fn::f12, insn_gen_fn::f13) (insn_gen_fn::f14, insn_gen_fn::f15, insn_gen_fn::f16): Delete. (insn_gen_fn::operator()): Replace overloaded definitions with a parameter-pack version.
2020-06-11x86: Add UNSPECV_PATCHABLE_AREAH.J. Lu11-56/+296
Currently patchable area is at the wrong place. It is placed immediately after function label, before both .cfi_startproc and ENDBR. This patch adds UNSPECV_PATCHABLE_AREA for pseudo patchable area instruction and changes ENDBR insertion pass to also insert patchable area instruction. TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY is defined to avoid placing patchable area before .cfi_startproc and ENDBR. gcc/ PR target/93492 * config/i386/i386-features.c (rest_of_insert_endbranch): Renamed to ... (rest_of_insert_endbr_and_patchable_area): Change return type to void. Add need_endbr and patchable_area_size arguments. Don't call timevar_push nor timevar_pop. Replace endbr_queued_at_entrance with insn_queued_at_entrance. Insert UNSPECV_PATCHABLE_AREA for patchable area. (pass_data_insert_endbranch): Renamed to ... (pass_data_insert_endbr_and_patchable_area): This. Change pass name to endbr_and_patchable_area. (pass_insert_endbranch): Renamed to ... (pass_insert_endbr_and_patchable_area): This. Add need_endbr and patchable_area_size;. (pass_insert_endbr_and_patchable_area::gate): Set and check need_endbr and patchable_area_size. (pass_insert_endbr_and_patchable_area::execute): Call timevar_push and timevar_pop. Pass need_endbr and patchable_area_size to rest_of_insert_endbr_and_patchable_area. (make_pass_insert_endbranch): Renamed to ... (make_pass_insert_endbr_and_patchable_area): This. * config/i386/i386-passes.def: Replace pass_insert_endbranch with pass_insert_endbr_and_patchable_area. * config/i386/i386-protos.h (ix86_output_patchable_area): New. (make_pass_insert_endbranch): Renamed to ... (make_pass_insert_endbr_and_patchable_area): This. * config/i386/i386.c (ix86_asm_output_function_label): Set function_label_emitted to true. (ix86_print_patchable_function_entry): New function. (ix86_output_patchable_area): Likewise. (x86_function_profiler): Replace endbr_queued_at_entrance with insn_queued_at_entrance. Generate ENDBR only for TYPE_ENDBR. Call ix86_output_patchable_area to generate patchable area if needed. (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): New. * config/i386/i386.h (queued_insn_type): New. (machine_function): Add function_label_emitted. Replace endbr_queued_at_entrance with insn_queued_at_entrance. * config/i386/i386.md (UNSPECV_PATCHABLE_AREA): New. (patchable_area): New. gcc/testsuite/ PR target/93492 * gcc.target/i386/pr93492-1.c: New test. * gcc.target/i386/pr93492-2.c: Likewise. * gcc.target/i386/pr93492-3.c: Likewise. * gcc.target/i386/pr93492-4.c: Likewise. * gcc.target/i386/pr93492-5.c: Likewise.
2020-06-12Daily bump.GCC Administrator8-1/+596
2020-06-11c++: constrained class template friend [PR93467]Patrick Palka4-0/+60
This fixes two issues in our handling of constrained class template friend declarations. The first issue is that we fail to set the constraints on the injected class template declaration during tsubst_friend_class. The second issue is that the template parameter levels within the parsed constraints of a class template friend declaration are shifted if the enclosing class is a template, and this shift leads to spurious constraint mismatch errors in associate_classtype_constraints if the friend declaration refers to an already declared class template. gcc/cp/ChangeLog: PR c++/93467 * constraint.cc (associate_classtype_constraints): If there is a discrepancy between the current template depth and the template depth of the original declaration, then adjust the template parameter depth within the current constraints appropriately. * pt.c (tsubst_friend_class): Substitute into and set the constraints on the injected declaration. gcc/testsuite/ChangeLog: PR c++/93467 * g++.dg/cpp2a/concepts-friend6.C: New test. * g++.dg/cpp2a/concepts-friend7.C: New test.
2020-06-11contrib: Make prepare-commit-msg hook smarter for amendsJonathan Wakely1-0/+13
With this change the prepare-commit-msg hook can compare the log of a commit being amended with the staged changes, and not run mklog.py unnecessarily. This is controlled by a git config option, gcc-config.mklog-hook-type. contrib/ChangeLog: * prepare-commit-msg: Use the gcc-config.mklog-hook-type Git config key instead of the GCC_FORCE_MKLOG environment variable. Optionally disable generating a new ChangeLog template for amended commits when the existing log is still OK.
2020-06-11PR fortran/95611 - ICE in access_attr_decl, at fortran/decl.c:9075Harald Anlauf2-1/+8
When reporting a duplicate access specification of an operator, refer to the proper symbol. 2020-06-11 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95611 * decl.c (access_attr_decl): Use correct symbol in error message. Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>
2020-06-11PR fortran/95544 - Fix ICE in NULL() argument to intrinsicsHarald Anlauf4-12/+46
Fortran 2018: An argument to an intrinsic procedure other than ASSOCIATED, NULL, or PRESENT shall be a data object. An EXPR_NULL is not a data object. Add checks for intrinsics. 2020-06-11 Steven G. Kargl <kargl@gcc.gnu.org> Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95544 * check.c (invalid_null_arg): Rename to gfc_invalid_null_arg. (gfc_check_associated, gfc_check_kind, gfc_check_merge) (gfc_check_shape, gfc_check_size, gfc_check_spread) (gfc_check_transfer): Adjust. (gfc_check_len_lentrim, gfc_check_trim): Check for NULL() argument. * gfortran.h: Declare gfc_invalid_null_arg (). * intrinsic.c (check_arglist): Check for NULL() argument.
2020-06-11coroutines: Handle lambda closure pointers like 'this'.Iain Sandoe1-18/+5
It was agreed amongst the implementors that the correct interpretation of the standard is that lambda closure pointers should be treated in the same manner as class object pointers. gcc/cp/ChangeLog: * coroutines.cc (instantiate_coro_traits): Pass a reference to lambda closure objects to traits instantiation. (morph_fn_to_coro): Likewise for promise parameter preview and allocator lookup.
2020-06-11libstdc++: Fix istream::ignore discarding too many chars (PR 94749)Jonathan Wakely4-12/+158
The current code assumes that if the next character in the stream is equal to the delimiter then we stopped because we saw that delimiter, and so discards it. But in the testcase for the PR we stop because we reached the maximum number of characters, and it's coincidence that the next character equals the delimiter. We should not discard the next character in that case. The fix is to check that we haven't discarded __n characters already, instead of checking whether the next character equals __delim. Because we've already checked for EOF, if we haven't discarded __n yet then we know we stopped because we saw the delimiter. On the other hand, if the next character is the delimiter we don't know if that's why we stopped. PR libstdc++/94749 * include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)): Only discard an extra character if we didn't already reach the maximum number. * src/c++98/istream.cc (istream::ignore(streamsiz, char)) (wistream::ignore(streamsize, wchar_t)): Likewise. * testsuite/27_io/basic_istream/ignore/char/94749.cc: New test. * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test.
2020-06-11Testsuite: Mark check_effective_target_exceptions_enabled test as C++ test ↵Tamar Christina1-0/+1
input. The test in check_effective_target_exceptions_enabled uses a C++ keyword `throw` and the test fails with a syntax error on any non-g++ test. I now tell the testsuite driver that this is a C++ input file so it runs it as such in all the drivers. gcc/testsuite/ChangeLog: * lib/target-supports.exp (check_effective_target_exceptions_enabled): Mark as C++ test input.
2020-06-11PR fortran/95503 - Fix ICE in gfc_is_simply_contiguous, at fortran/expr.c:5844Harald Anlauf2-1/+10
The check for assigning a pointer that cannot be determined to be simply contiguous at compile time to a contiguous pointer does not need to be invoked if the lhs of the assignment is known to have conflicting attributes. 2020-06-11 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95503 * expr.c (gfc_check_pointer_assign): Skip contiguity check of rhs of pointer assignment if lhs cannot be simply contiguous. gcc/testsuite/ PR fortran/95503 * gfortran.dg/pr95503.f90: New test.
2020-06-11PR95331 - Unlimited polymorphic arrays have wrong bounds.José Rui Faustino de Sousa2-4/+172
When iterating over a class array use the bounds provided by the transformed descriptor (in sym->backend_decl) instead of the original bounds of the array (in the descriptor passed in the class _data) which are passed in se->expr. The patch partially depends on the patch for PR52351 and PR85868, but does not seems to break anything by itself. gcc/fortran/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/95331 * trans-array.c (gfc_conv_array_ref): For class array dummy arguments use the transformed descriptor in sym->backend_decl instead of the original descriptor. gcc/testsuite/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/95331 * gfortran.dg/PR95331.f90: New test.
2020-06-11aix: xfail pure-virtual1.C expects weak __cxa_pure_virtualDavid Edelsohn1-0/+1
The testcase expects __cxa_pure_virtual to be weak to avoid an implicit dependency. This does not occur on AIX, so expect this testcase to fail on AIX. gcc/testsuite/ChangeLog 2020-06-11 David Edelsohn <dje.gcc@gmail.com> * g++.dg/abi/pure-virtual1.C: XFAIL AIX.
2020-06-11Fix formatting in rs6000.c.Martin Liska1-1/+1
gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding style.
2020-06-11aix: Don't implicitly include inttypes.hDavid Edelsohn1-0/+4
AIX stdio.h implicitly includes inttypes.h, which explicitly conflicts with the purpose of this testcase. This patch conditionally adds a macro definition that inhibits the implicit inclusion. gcc/testsuite/ChangeLog 2020-06-11 David Edelsohn <dje.gcc@gmail.com> * gcc.dg/spellcheck-inttypes.c: Don't include inttypes.h on AIX.
2020-06-11rs6000: skip debug info statementsMartin Liska1-0/+3
gcc/ChangeLog: PR target/95627 * config/rs6000/rs6000.c (rs6000_density_test): Skip debug statements.