aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
AgeCommit message (Collapse)AuthorFilesLines
2020-10-22[Ada] Minor fixes in GNAT RMEric Botcazou2-8/+6
gcc/ada/ * doc/gnat_rm/implementation_defined_characteristics.rst: Minor fixes. * gnat_rm.texi: Regenerate.
2020-10-22[Ada] Reduce scope of local variables for detecting extra WITH clausesPiotr Trojanek1-10/+12
gcc/ada/ * sem_warn.adb (Check_Unused_Withs): Move local variables from to a nested procedure; Lunit is passed as a parameter to Check_System_Aux and its type is refined from Node_Id to Entity_Id; Cnode is now a constant.
2020-10-22[Ada] Add No_Implicit_Task_Allocations and No_Implicit_PO_Allocations to JorvikPatrick Bernardi1-42/+9
gcc/ada/ * libgnat/s-rident.ads (Profile_Info): Use a common profile definition for Jorvik and GNAT Extended Ravenscar, using the GNAT Extended Ravenscar definition.
2020-10-22[Ada] Build support units for 128-bit integer types on 64-bit platformsEric Botcazou1-60/+160
gcc/ada/ * Makefile.rtl (64-bit platforms): Add GNATRTL_128BIT_PAIRS to the LIBGNAT_TARGET_PAIRS list and also GNATRTL_128BIT_OBJS to the EXTRA_GNATRTL_NONTASKING_OBJS list.
2020-10-22[Ada] Fix error message for import aspectGhjuvan Lacambre1-6/+18
gcc/ada/ * sem_prag.adb (Process_Convention, Process_Import_Or_Interface): Fix error message.
2020-10-22[Ada] Fix transformation of Suppress aspect into pragmaGhjuvan Lacambre1-59/+72
gcc/ada/ * sem_ch13.adb (Make_Aitem_Pragma): Turn into function. This removes a side-effect on the Aitem variable. (Analyze_Aspect_Specifications): Handle Suppress and Unsuppress aspects differently from the Linker_Section aspect. (Ceck_Aspect_At_Freeze_Point): Don't expect Suppress/Unsuppress to be delayed anymore.
2020-10-22[Ada] Ada_2020: ongoing work for aggregates for bounded containersEd Schonberg2-95/+176
gcc/ada/ * sem_aggr.adb: (Resolve_Container_Aggregate): For an indexed container, verify that expressions and component associations are not both present. * exp_aggr.adb: Code reorganization, additional comments. (Expand_Container_Aggregate): Use Aggregate_Size for Iterated_ Component_Associations for indexed aggregates. If present, the default value of the formal in the constructor function is used when the size of the aggregate cannot be determined statically.
2020-10-22[Ada] Fix oversight in Eval_Attribute for Bit_PositionEric Botcazou1-1/+1
gcc/ada/ * sem_attr.adb (Eval_Attribute): Fix oversight for Bit_Position.
2020-10-22[Ada] AI12-0307: uniform resolution rules for aggregatesEd Schonberg4-1/+37
gcc/ada/ * sem_util.ads, sem_util.adb (Check_Ambiguous_Aggregate): When a subprogram call is found to be ambiguous, check whether ambiguity is caused by an aggregate actual. and indicate that it should carry a type qualification. * sem_ch4.adb (Traverse_Hoonyms, Try_Primitive_Operation): Call it. * sem_res.adb (Report_Ambiguous_Argument): Call it.
2020-10-22[Ada] Cleanup repeated code in checks for unused WITH clausesPiotr Trojanek1-51/+43
gcc/ada/ * sem_warn.adb (Check_One_Unit): Avoid repeated calls by using a local variable Lunit; remove local constant Eitem, which was identical to Lunit.
2020-10-22use wraplf for low-precision elementary functions on x86*-vxworks tooAlexandre Oliva1-0/+3
The earlier patch that introduced the wraplf variants missed the x86*-vxworks* ports. This fixes them. for gcc/ada/ChangeLog * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <x86*-vxworks*>: Select nolibm and wraplf variants like other vxworks ports.
2020-10-22Daily bump.GCC Administrator1-0/+605
2020-10-22Implement no_stack_protector attribute.Martin Liska1-1/+30
gcc/ChangeLog: 2020-05-18 Martin Liska <mliska@suse.cz> PR c/94722 * cfgexpand.c (stack_protect_decl_phase): Guard with lookup_attribute("no_stack_protector") at various places. (expand_used_vars): Likewise here. * doc/extend.texi: Document no_stack_protector attribute. gcc/ada/ChangeLog: 2020-05-18 Martin Liska <mliska@suse.cz> PR c/94722 * gcc-interface/utils.c (handle_no_stack_protect_attribute): New. (handle_stack_protect_attribute): Add error message for a no_stack_protector function. gcc/c-family/ChangeLog: 2020-05-18 Martin Liska <mliska@suse.cz> PR c/94722 * c-attribs.c (handle_no_stack_protect_function_attribute): New. (handle_stack_protect_attribute): Add error message for a no_stack_protector function. gcc/testsuite/ChangeLog: 2020-05-18 Martin Liska <mliska@suse.cz> PR c/94722 * g++.dg/no-stack-protector-attr-2.C: New test. * g++.dg/no-stack-protector-attr-3.C: New test. * g++.dg/no-stack-protector-attr.C: New test.
2020-10-22Use Aux_Long_Float for all real types on LynxOSAlexandre Oliva1-0/+3
Its libc does not offer *f or *l elementary functions, so rely on the C double ones only. for gcc/ada/ChangeLog * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <lynxos178>: Rely on Aux_Long_Float for all real types.
2020-10-22vxworks float EFs not precise enough -> use long floatAlexandre Oliva3-0/+182
Some acats-4 tests that check the precision of Float elementary functions fail with vxworks 7.2's implementations of single-precision math functions. This patch arranges for us to bypass the single-precision functions, and use the Aux_Long_Float implementation, based on the double-typed calls from the C library, for Float and Short_Float. for gcc/ada/ChangeLog * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use Long Float-based variant of Aux_Short_Float and Aux_Float on vxworks targets. * libgnat/a-nashfl__wraplf.ads: New. * libgnat/a-nuaufl__wraplf.ads: New.
2020-10-22Use Aux_Long_Long_Float wraplf for sparc*-sun-solaris tooRainer Orth1-0/+1
Like aarch64-* and ppc*-linux-gnu, sparc*-sun-solaris has Long_Long_Float mapped to double rather than long double, so the intrinsics in the default version of a-nallfl.ads have mismatching types. Adopt the wraplf workaround for it as well. for gcc/ada/ChangeLog * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <sparc*-sun-solaris>: Use wraplf version of a-nallfl.
2020-10-22aarch64-* and ppc*-linux-gnu long long float/long double mismatchAlexandre Oliva2-0/+93
Some platforms have failed to build because long long float is mapped to double rather than long double, and then the attempts to import intrinsics for long double in Aux_Long_Long_Float raise warnings turned into errors. This patch is a work around for the mismatch, arranging for Aux_Long_Long_Float to map to Aux_Long_Float. for gcc/ada/ChangeLog * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use a-nallfl__wraplf.ads on aarch64-* and ppc*-linux-gnu targets. * libgnat/a-nallfl__wraplf.ads: New.
2020-10-22Move nested function info out of cgraph_nodeJan Hubicka1-1/+3
this patch moves nested function information out of symbol table (to a summary). This saves memory (especially at WPA time) and also makes nested function support more contained. gcc/ChangeLog: 2020-10-22 Jan Hubicka <hubicka@ucw.cz> * cgraph.c: Include tree-nested.h (cgraph_node::create): Call maybe_record_nested_function. (cgraph_node::remove): Do not remove function from nested function infos. (cgraph_node::dump): Update. (cgraph_node::unnest): Move to tree-nested.c (cgraph_node::verify_node): Update. (cgraph_c_finalize): Call nested_function_info::release. * cgraph.h (struct symtab_node): Remove nested function info. * cgraphclones.c (cgraph_node::create_clone): Do not clone nested function info. * cgraphunit.c (cgraph_node::analyze): Update. (cgraph_node::expand): Do not worry about nested functions; they are lowered. (symbol_table::finalize_compilation_unit): Call nested_function_info::release. * gimplify.c: Include tree-nested.h (unshare_body): Update. (unvisit_body): Update. * omp-offload.c (omp_discover_implicit_declare_target): Update. * tree-nested.c: Include alloc-pool.h, tree-nested.h, symbol-summary.h (nested_function_sum): New static variable. (nested_function_info::get): New member function. (nested_function_info::get_create): New member function. (unnest_function): New function. (nested_function_info::~nested_function_info): New member function. (nested_function_info::release): New function. (maybe_record_nested_function): New function. (lookup_element_for_decl): Update. (check_for_nested_with_variably_modified): Update. (create_nesting_tree): Update. (unnest_nesting_tree_1): Update. (gimplify_all_functions): Update. (lower_nested_functions): Update. * tree-nested.h (class nested_function_info): New class. (maybe_record_nested_function): Declare. (unnest_function): Declare. (first_nested_function): New inline function. (next_nested_function): New inline function. (nested_function_origin): New inline function. gcc/ada/ChangeLog: 2020-10-22 Jan Hubicka <hubicka@ucw.cz> * gcc-interface/trans.c: Include tree-nested.h (walk_nesting_tree): Update for new nested function info. gcc/c-family/ChangeLog: 2020-10-22 Jan Hubicka <hubicka@ucw.cz> * c-gimplify.c: Include tree-nested.h (c_genericize): Update for new nested function info. gcc/d/ChangeLog: 2020-10-22 Jan Hubicka <hubicka@ucw.cz> * decl.cc: Include tree-nested.h (get_symbol_decl): Update for new nested function info.
2020-10-21[Ada] Support of the Ada.Text_IO hierarchy for 128-bit typesEric Botcazou37-1993/+1865
gcc/ada/ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add a-llltio, a-lllwti, a-lllzti and remove a-timoau, a-wtmoau and a-ztmoau. (GNATRTL_128BIT_PAIRS): Add a-tiinio.adb, a-timoio.adb, a-wtinio.adb, a-wtmoio.adb, a-ztinio.adb and a-ztmoio.adb. * impunit.adb (Non_Imp_File_Names_95): Add a-llltio, a-lllwti and a-lllzti. * krunch.ads: Document trick for Ada.Long_Long_Long_Integer_*_IO. * krunch.adb (Krunch): Add trick for Ada.Long_Long_Long_Integer_*_IO. * libgnat/a-llltio.ads: Instantiate Ada.Text_IO.Integer_IO. * libgnat/a-lllwti.ads: Instantiate Ada.Wide_Text_IO.Integer_IO. * libgnat/a-lllzti.ads: Instantiate Ada.Wide_Wide_Text_IO.Integer_IO. * libgnat/a-tigeau.ads (Load_Integer): New procedure. * libgnat/a-tigeau.adb (Load_Integer): Likewise. * libgnat/a-tiinau.ads, libgnat/a-tiinau.adb: Change to generic package. * libgnat/a-tiinio.adb: Instantiate it. * libgnat/a-tiinio__128.adb: Likewise. * libgnat/a-timoau.ads, libgnat/a-timoau.adb: Change to generic package. * libgnat/a-timoio.adb: Instantiate it. * libgnat/a-timoio__128.adb: Likewise. * libgnat/a-wtgeau.ads (Load_Integer): New procedure. * libgnat/a-wtgeau.adb (Load_Integer): Likewise. * libgnat/a-wtinau.ads, libgnat/a-wtinau.adb: Change to generic package. * libgnat/a-wtinio.adb: Instantiate it. * libgnat/a-wtinio__128.adb: Likewise. * libgnat/a-wtmoau.ads, libgnat/a-wtmoau.adb: Change to generic package. * libgnat/a-wtmoio.adb: Instantiate it. * libgnat/a-wtmoio__128.adb: Likewise. * libgnat/a-ztgeau.ads (Load_Integer): New procedure. * libgnat/a-ztgeau.adb (Load_Integer): Likewise. * libgnat/a-ztinau.ads, libgnat/a-ztinau.adb: Change to generic package. * libgnat/a-ztinio.adb: Instantiate it. * libgnat/a-ztinio__128.adb: Likewise. * libgnat/a-ztmoau.ads, libgnat/a-ztmoau.adb: Change to generic package. * libgnat/a-ztmoio.adb: Instantiate it. * libgnat/a-ztmoio__128.adb: Likewise.
2020-10-21[Ada] Fix problematic placement of freeze node after instantiationEric Botcazou1-6/+1
gcc/ada/ * sem_ch12.adb (Freeze_Subprogram_Body): Do not move the freeze node of the package body enclosing the instance when its parent is in the same declarative part as the freeze node of the parent.
2020-10-21[Ada] Implement missing function result finalization.Steve Baird1-7/+73
gcc/ada/ * exp_ch6.adb (Insert_Post_Call_Actions): When a function's result type requires finalization and we decide to make copy of a call to the function and subsequently refer only to the copy, then don't forget to finalize the original function result object.
2020-10-21[Ada] Support of attributes Image, Put_Image, Val and Width for 128-bit typesEric Botcazou62-2014/+2516
gcc/ada/ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-widint, s-widthi, s-widuns, s-widuns. (GNATRTL_128BIT_OBJS): Add s-imglllb, s-imgllli, s-imglllu, s-imglllw, s-valllli, s-vallllu, s-widllli, s-widlllu. * exp_imgv.adb (Expand_Image_Attribute): Deal with 128-bit types. (Expand_Value_Attribute): Likewise. (Expand_Width_Attribute): Likewise. * exp_put_image.adb (Build_Elementary_Put_Image_Call): Likewise. * krunch.adb (Krunch): Deal with s-img, s-val and s-wid prefixes. * rtsfind.ads (RTU_Id): Add System_Img_LLLI, System_Img_LLLU, System_Val_LLLI, System_Val_LLL, System_Wid_Int, System_Wid_LLLI, System_Wid_LLLU, System_Wid_Uns). (RE_Id): Add RE_Image_Long_Long_Long_Integer, RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer, RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer, RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned, RE_Image_Long_Long_Long_Integer, RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer, RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer, RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned. * libgnat/s-imageb.ads, libgnat/s-imageb.adb: New generic package. * libgnat/s-imagei.ads, libgnat/s-imagei.adb: Likewise. * libgnat/s-imageu.ads, libgnat/s-imageu.adb: Likewise. * libgnat/s-imagew.ads, libgnat/s-imagew.adb: Likewise. * libgnat/s-imgbiu.ads: Instantiate System.Image_B. * libgnat/s-imgbiu.adb: Add pragma No_Body. * libgnat/s-imgint.ads: Instantiate System.Image_I. * libgnat/s-imgint.adb: Add pragma No_Body. * libgnat/s-imgllb.ads: Instantiate System.Image_B. * libgnat/s-imgllb.adb: Add pragma No_Body0 * libgnat/s-imglli.ads: Instantiate System.Image_I. * libgnat/s-imglli.adb: Add pragma No_Body. * libgnat/s-imglllb.ads: Instantiate System.Image_B. * libgnat/s-imgllli.ads: Instantiate System.Image_I. * libgnat/s-imglllu.ads: Instantiate System.Image_U. * libgnat/s-imglllw.ads: Instantiate System.Image_W. * libgnat/s-imgllu.ads: Instantiate System.Image_U. * libgnat/s-imgllu.adb: Add pragma No_Body. * libgnat/s-imgllw.ads: Instantiate System.Image_W. * libgnat/s-imgllw.adb: Add pragma No_Body. * libgnat/s-imgrea.adb: Remove clauses for System.Unsigned_Types. * libgnat/s-imguns.ads: Instantiate System.Image_U. * libgnat/s-imguns.adb: Add pragma No_Body. * libgnat/s-imgwiu.ads: Instantiate System.Image_W. * libgnat/s-imgwiu.adb: Add pragma No_Body. * libgnat/s-putima.ads (Long_Long_Long_Unsigned): New subtype. (Put_Image_Long_Long_Long_Unsigned): New procedure. * libgnat/s-putima.adb (Small): Rename to Integer_Images. (Large): Rename to LL_Integer_Images. (LLL_Integer_Images): New instantiation. (Put_Image_Long_Long_Long_Integer): New renaming. (Put_Image_Long_Long_Long_Unsigned): Likewise. * libgnat/s-valint.ads: Instantiate System.Value_I. * libgnat/s-valint.adb: Add pragma No_Body. * libgnat/s-vallli.ads: Instantiate System.Value_I. * libgnat/s-vallli.adb: Add pragma No_Body. * libgnat/s-valllli.ads: Instantiate System.Value_I. * libgnat/s-vallllu.ads: Instantiate System.Value_U. * libgnat/s-valllu.ads: Instantiate System.Value_U. * libgnat/s-valllu.adb: Add pragma No_Body. * libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic package. * libgnat/s-valueu.ads, libgnat/s-valueu.adb: Likewise. * libgnat/s-valuns.ads: Instantiate System.Value_U. * libgnat/s-valuns.adb: Add pragma No_Body. * libgnat/s-widint.ads: Instantiate System.Width_I. * libgnat/s-widlli.ads: Likewise. * libgnat/s-widlli.adb: Add pragma No_Body. * libgnat/s-widllli.ads: Instantiate System.Width_I. * libgnat/s-widlllu.ads: Instantiate System.Width_U. * libgnat/s-widllu.ads: Likewise. * libgnat/s-widllu.adb: Add pragma No_Body. * libgnat/s-widthi.ads, libgnat/s-widthi.adb: New generic package. * libgnat/s-widthu.ads, libgnat/s-widthu.adb: Likewise. * libgnat/s-widuns.ads: Instantiate System.Width_U.
2020-10-21[Ada] Work around missing Long_Long_Long_Size entry in .atp fileEric Botcazou1-3/+10
gcc/ada/ * set_targ.adb (DTN): Fix oversight. (Read_Target_Dependent_Values): Do not error out on missing Long_Long_Long_Size entry and reuse Long_Long_Size for it.
2020-10-21[Ada] Fix analysis of iterated component expression with null rangePiotr Trojanek1-1/+25
gcc/ada/ * exp_aggr.adb (Gen_Loop): Analyze copy of the expression in the scope of the implicit loop with name of the index parameter visible.
2020-10-21[Ada] Basic support for 128-bit typesEric Botcazou207-1179/+21012
gcc/ada/ * Makefile.rtl (GNATRTL_128BIT_PAIRS): New variable. (GNATRTL_128BIT_OBJS): Likewise. (Windows): In 64-bit mode, add the former to LIBGNAT_TARGET_PAIRS and the latter to EXTRA_GNATRTL_NONTASKING_OBJS. (x86_64/linux): Likewise, but unconditionally. (GNATRTL_NONTASKING_OBJS): Add s-aridou, s-exponn, s-expont, s-exponu. * ada_get_targ.adb (Get_Long_Long_Long_Size): New function. * checks.adb (Apply_Arithmetic_Overflow_Strict): Use Integer_Type_For to find an appropriate integer type; if it does not exist and the max integer size is larger than 64, use the 128-bit arithmetic routines. * cstand.adb (Create_Standard): Build Standard_Long_Long_Long_Integer and its base type. Use it for Etype of Any_Integer, Any_Modular and Any_Numeric. Use its size for Build Standard_Long_Long_Long_Unsigned and Universal_Integer. (Print_Standard): Print Long_Long_Long_Integer. * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Mod>: Adjust comment. * exp_ch3.adb (Simple_Init_Initialize_Scalars_Type): Deal with 128-bit types. * exp_ch4.adb (Expand_Array_Comparison): Likewise. (Expand_N_Op_Expon): Likewise. (Narrow_Large_Operation): Likewise. * exp_dbug.adb (Bounds_Match_Size): Handle 128-bit size. * exp_fixd.adb (Build_Double_Divide_Code): Use RE_Double_Divide64. * exp_intr.adb (Expand_Binary_Operator_Call): Handle 128-bit size. * exp_pakd.ads (E_Array): Extend range to 127. (Bits_Id): Fill in up to 127. (Get_Id): Likewise. (GetU_Id): Likewise. (Set_Id): Likewise. (SetU_Id): Likewise. * exp_pakd.adb (Revert_Storage_Order): Handle 128-bit size. * exp_util.adb (Integer_Type_For): Likewise. (Small_Integer_Type_For): Likewise. * fname.adb (Is_Predefined_File_Name): Do not return False for names larger than 12 characters if they start with "s-". * freeze.adb (Adjust_Esize_For_Alignment): Change the maximum value to System_Max_Integer_Size. (Check_Suspicious_Modulus): Adjust comment. (Freeze_Entity): Likewise. * get_targ.ads (Get_Long_Long_Long_Size): New function. * get_targ.adb (Get_Long_Long_Long_Size): Likewise. (Width_From_Size): Deal with 128-bit size. * gnat1drv.adb (Adjust_Global_Switches): Deal with 128-bit types. * impunit.adb (Get_Kind_Of_File): Bump buffer size. Accept files with 13 characters if they start with 's'. Compare slice of Buffer. (Not_Impl_Defined_Unit): Accept files with 13 characters if they start with 's'. * krunch.ads: Document length for 128-bit support units. * krunch.adb (Krunch): Set length to 9 for 128-bit support units. * layout.adb (Layout_Type): Use System_Max_Integer_Size as alignment limit. * rtsfind.ads (RTU_Id): Add System_Arith_128, System_Compare_Array_Signed_128, System_Compare_Array_Unsigned_128, System_Exn_LLLI, System_Exp_LLLU, System_Pack_[65..127]. (RE_Id): Add RE_Integer_128, RE_Unsigned_128, RE_Add_With_Ovflo_Check128 RE_Multiply_With_Ovflo_Check128, RE_Subtract_With_Ovflo_Check128, RE_Bswap_128, RE_Compare_Array_S128, RE_Compare_Array_U128, RE_Exn_Long_Long_Long_Integer, RE_Exp_Long_Long_Long_Integer, RE_Exp_Long_Long_Long_Unsigned, RE_Bits_[65-127], RE_Get_[65-127], RE_Set_[65-127], RE_IS_Is16, RE_IS_Iu16, RE_Integer_128 and RE_Unsigned_128. Rename RE_Add_With_Ovflo_Check, RE_Double_Divide, RE_Multiply_With_Ovflo_Check, RE_Scaled_Divide and RE_Subtract_With_Ovflo_Check. Remove RE_IS_Iz1, RE_IS_Iz2, RE_IS_Iz4, RE_IS_Iz8, RE_Long_Unsigned, RE_Short_Unsigned, RE_Short_Short_Unsigned (RE_Unit_Table): Likewise. * sem_aux.adb (Corresponding_Unsigned_Type): Deal with a size equal to that of Standard_Long_Long_Long_Integer. (First_Subtype): Deal with Standard_Long_Long_Long_Integer'Base. * sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Attribute_Size>: Check the size against powers of 2 and System_Max_Integer_Size for objects as well. (Set_Enum_Esize): Deal with 128-bit bounds. * sem_ch3.adb (Set_Modular_Size): Handle 128-bit size. (Modular_Type_Declaration): Deal with 128-bit types. (Signed_Integer_Type_Declaration): Support derivation from Standard_Long_Long_Long_Integer. * sem_ch4.adb (Analyze_Mod): Handle 128-bit modulus. * sem_intr.adb: Add with and use clauses for Ttypes. (Check_Shift): Handle 128-bit size and modulus. * sem_prag.adb (Analyze_Pragma) <Pragma_Initialize_Scalars>: Deal with Signed_128 and Unsigned_128. (Analyze_Integer_Value): Handle 128-bit size. * sem_util.ads (Addressable): Adjust description. * sem_util.adb (Addressable): Return true for 128 if the system supports 128 bits. (Set_Invalid_Binder_Values): Deal with Signed_128 and Unsigned_128. * set_targ.ads (Long_Long_Long_Size): New variable. * set_targ.adb (S_Long_Long_Long_Size): New constant. (DTN): Add entry for S_Long_Long_Long_Size. (DTV): Add entry for Long_Long_Long_Size. (Set_Targ): Set Long_Long_Long_Size. * snames.ads-tmpl (Name_Max_Integer_Size): New attribute name. (Name_Signed_128): New scalar name. (Name_Unsigned_128): Likewise. (Scalar_Id): Adjust. (Integer_Scalar_Id): Likewise. (Attribute_Id): Add Attribute_Max_Integer_Size. * stand.ads (Standard_Entity_Type): Add S_Long_Long_Long_Integer. (Standard_Long_Long_Long_Integer): New renaming. (Universal_Integer): Adjust description. (Standard_Long_Long_Long_Unsigned): New variable. * switch-c.adb (Scan_Front_End_Switches): Deal with -gnate128. * ttypes.ads (Standard_Long_Long_Long_Integer_Size): New variable. (Standard_Long_Long_Long_Integer_Width): Likewise. (System_Max_Integer_Size): Turn into variable. (System_Max_Binary_Modulus_Power): Likewise. * uintp.ads (Uint_127): New constant. * uintp.adb (UI_Power_2): Extednd to 128. (UI_Power_10): Likewise. (UI_Expon): Deal with exponent up to 128 specially. * usage.adb (Write_Switch_Char): Print -gnate128 switch. * libgnat/a-tifiio.adb (Put_Scaled): Call Scaled_Divide64. * libgnat/interfac__2020.ads (Integer_128): New integer type. (Unsigned_128): New modular type. (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left, Rotate_Right): New intrinsic functions operating on it. * libgnat/s-aridou.ads, libgnat/s-aridou.adb: New generic package. * libgnat/s-arit64.ads, libgnat/s-arit64.adb: Instantiate System.Arithmetic_Double. * libgnat/s-arit128.ads, libgnat/s-arit128.adb: Likewise. * libgnat/s-bytswa.ads: Add with clause for Interfaces, use subtypes of unsigned types defined in Interfaces and add Bswap_128. * libgnat/s-casi128.ads, libgnat/s-casi128.adb: New package. * libgnat/s-caun128.ads, libgnat/s-caun128.adb: Likewise. * libgnat/s-exnint.ads: Instantiate System.Exponn. * libgnat/s-exnint.adb: Add pragma No_Body. * libgnat/s-exnlli.ads: Instantiate System.Exponn. * libgnat/s-exnlli.adb: Add pragma No_Body. * libgnat/s-exnllli.ads: Instantiate System.Exponn. * libgnat/s-expint.ads: Likewise. * libgnat/s-expint.adb: Add pragma No_Body. * libgnat/s-explli.ads: Instantiate System.Exponn. * libgnat/s-explli.adb: Add pragma No_Body. * libgnat/s-expllli.ads: Instantiate System.Exponn. * libgnat/s-explllu.ads: Instantiate System.Exponu. * libgnat/s-expllu.ads: Likewise. * libgnat/s-expllu.adb: Add pragma No_Body. * libgnat/s-exponn.ads, libgnat/s-exponn.adb: New generic function. * libgnat/s-expont.ads, libgnat/s-expont.adb: Likewise. * libgnat/s-exponu.ads, libgnat/s-exponu.adb: Likewise. * libgnat/s-expuns.ads, libgnat/s-expuns.adb: Likewise. * libgnat/s-pack65.ads, libgnat/s-pack65.adb: New package. * libgnat/s-pack66.ads, libgnat/s-pack66.adb: New package. * libgnat/s-pack67.ads, libgnat/s-pack67.adb: New package. * libgnat/s-pack68.ads, libgnat/s-pack68.adb: New package. * libgnat/s-pack69.ads, libgnat/s-pack69.adb: New package. * libgnat/s-pack70.ads, libgnat/s-pack70.adb: New package. * libgnat/s-pack71.ads, libgnat/s-pack71.adb: New package. * libgnat/s-pack72.ads, libgnat/s-pack72.adb: New package. * libgnat/s-pack73.ads, libgnat/s-pack73.adb: New package. * libgnat/s-pack74.ads, libgnat/s-pack74.adb: New package. * libgnat/s-pack75.ads, libgnat/s-pack75.adb: New package. * libgnat/s-pack76.ads, libgnat/s-pack76.adb: New package. * libgnat/s-pack77.ads, libgnat/s-pack77.adb: New package. * libgnat/s-pack78.ads, libgnat/s-pack78.adb: New package. * libgnat/s-pack79.ads, libgnat/s-pack79.adb: New package. * libgnat/s-pack80.ads, libgnat/s-pack80.adb: New package. * libgnat/s-pack81.ads, libgnat/s-pack81.adb: New package. * libgnat/s-pack82.ads, libgnat/s-pack82.adb: New package. * libgnat/s-pack83.ads, libgnat/s-pack83.adb: New package. * libgnat/s-pack84.ads, libgnat/s-pack84.adb: New package. * libgnat/s-pack85.ads, libgnat/s-pack85.adb: New package. * libgnat/s-pack86.ads, libgnat/s-pack86.adb: New package. * libgnat/s-pack87.ads, libgnat/s-pack87.adb: New package. * libgnat/s-pack88.ads, libgnat/s-pack88.adb: New package. * libgnat/s-pack89.ads, libgnat/s-pack89.adb: New package. * libgnat/s-pack90.ads, libgnat/s-pack90.adb: New package. * libgnat/s-pack91.ads, libgnat/s-pack91.adb: New package. * libgnat/s-pack92.ads, libgnat/s-pack92.adb: New package. * libgnat/s-pack93.ads, libgnat/s-pack93.adb: New package. * libgnat/s-pack94.ads, libgnat/s-pack94.adb: New package. * libgnat/s-pack95.ads, libgnat/s-pack95.adb: New package. * libgnat/s-pack96.ads, libgnat/s-pack96.adb: New package. * libgnat/s-pack97.ads, libgnat/s-pack97.adb: New package. * libgnat/s-pack98.ads, libgnat/s-pack98.adb: New package. * libgnat/s-pack99.ads, libgnat/s-pack99.adb: New package. * libgnat/s-pack100.ads, libgnat/s-pack100.adb: New package. * libgnat/s-pack101.ads, libgnat/s-pack101.adb: New package. * libgnat/s-pack102.ads, libgnat/s-pack102.adb: New package. * libgnat/s-pack103.ads, libgnat/s-pack103.adb: New package. * libgnat/s-pack104.ads, libgnat/s-pack104.adb: New package. * libgnat/s-pack105.ads, libgnat/s-pack105.adb: New package. * libgnat/s-pack106.ads, libgnat/s-pack106.adb: New package. * libgnat/s-pack107.ads, libgnat/s-pack107.adb: New package. * libgnat/s-pack108.ads, libgnat/s-pack108.adb: New package. * libgnat/s-pack109.ads, libgnat/s-pack109.adb: New package. * libgnat/s-pack110.ads, libgnat/s-pack110.adb: New package. * libgnat/s-pack111.ads, libgnat/s-pack111.adb: New package. * libgnat/s-pack112.ads, libgnat/s-pack112.adb: New package. * libgnat/s-pack113.ads, libgnat/s-pack113.adb: New package. * libgnat/s-pack114.ads, libgnat/s-pack114.adb: New package. * libgnat/s-pack115.ads, libgnat/s-pack115.adb: New package. * libgnat/s-pack116.ads, libgnat/s-pack116.adb: New package. * libgnat/s-pack117.ads, libgnat/s-pack117.adb: New package. * libgnat/s-pack118.ads, libgnat/s-pack118.adb: New package. * libgnat/s-pack119.ads, libgnat/s-pack119.adb: New package. * libgnat/s-pack120.ads, libgnat/s-pack120.adb: New package. * libgnat/s-pack121.ads, libgnat/s-pack121.adb: New package. * libgnat/s-pack122.ads, libgnat/s-pack122.adb: New package. * libgnat/s-pack123.ads, libgnat/s-pack123.adb: New package. * libgnat/s-pack124.ads, libgnat/s-pack124.adb: New package. * libgnat/s-pack125.ads, libgnat/s-pack125.adb: New package. * libgnat/s-pack126.ads, libgnat/s-pack126.adb: New package. * libgnat/s-pack127.ads, libgnat/s-pack127.adb: New package. * libgnat/s-rannum.ads (Random): New function returning 128-bit. * libgnat/s-rannum.adb (Random): Implement it. * libgnat/s-scaval.ads: Add with clause for Interfaces, use subtypes of unsigned types defined in Interfaces. * libgnat/s-scaval.adb: Add use clause for Interfaces. * libgnat/s-scaval__128.ads, libgnat/s-scaval__128.adb: New package. * libgnat/s-unstyp.ads (Long_Long_Long_Unsigned): New modular type. (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left, Rotate_Right): New intrinsic functions operating on it. gcc/testsuite/ * gnat.dg/multfixed.adb: Update expected exception message.
2020-10-21[Ada] Document Long_Long_Long_Integer in implementation characteristicsEric Botcazou2-19/+30
gcc/ada/ * doc/gnat_rm/implementation_defined_characteristics.rst: Add Long_Long_Long_Integer to the list of predefined integer types. * gnat_rm.texi: Regenerate.
2020-10-21[Ada] Fix target configuration file used for CodePeer/SPARK for new intsYannick Moy1-23/+24
gcc/ada/ * ada_get_targ.adb (Width_From_Size): Add case for 128 bits. Reorder declarations in the same order as get_targ.adb to facilitate diffs.
2020-10-21[Ada] Refactor repeated calls to Etype in aggregate expansionPiotr Trojanek1-9/+9
gcc/ada/ * exp_aggr.adb (Expand_N_Aggregate): Refactor repeated calls to Etype (N). (Build_Array_Aggr_Code): Fix whitespace.
2020-10-21[Ada] Fix bootstrap with old GCCDmitriy Anisimkov1-1/+11
gcc/ada/ * adaint.c (__gnat_file_time): Use regular arithmetic instead of __builtin_*_overflow routines if GCC version 4 or less and compiler is g++.
2020-10-21[Ada] Fix crash on illegal OTHERS in iterated_component_associationPiotr Trojanek1-1/+1
gcc/ada/ * sem_aggr.adb (Resolve_Array_Aggregate): Use Choice_List, which internally calls either Choice or Discrete_Choices, depending on the context.
2020-10-21[Ada] Use index parameter for iterated_component_associationPiotr Trojanek1-7/+2
gcc/ada/ * sem_aggr.adb (Resolve_Iterated_Component_Association): Use existing defining identifier for index parameter.
2020-10-21[Ada] Wrong detection of potentially blocking call in protected objectJavier Miranda1-0/+12
gcc/ada/ * exp_ch9.adb (Build_Task_Activation_Call): Do not generate a call to activate tasks if we are within the scope of a protected type and pragma Detect_Blocking is active.
2020-10-21[Ada] Codepeer remarks take into accountLiaiss Merzougue14-16/+229
gcc/ada/ * libgnat/s-carsi8.adb (Compare_Array_S8): Add pragma Assert to avoid warning concerning Left_Len and RighLen value regarding Bytes_Compared_As_Words. * libgnat/s-carun8.adb (Compare_Array_U8): Likewise. * libgnat/s-geveop.adb (Binary_Operation, Unary_Operation): Add pragma Assert concerning divide by 0 warning. * libgnat/s-imgcha.adb (Image_Character): Code update to prevent constant operation warning. (Image_Character): Add pragma Assert concerning the unchecked String size. * libgnat/s-imgdec.adb (Round): Upate loop code to prevent warning concerning Digs'First access. (Round): Add pragma assert. (Set): Add pragma Assert for the unchecked string size. (Set_Digits): Add pragma Assert for the input range. (Set_Decimal_Digits): Add pragma Assert. (Set_Blank_And_Sign): Add pragma Assert for the input range. * libgnat/s-arit64.adb (DoubleDivide): Add pragma Assert concerning Du /= 0. (Multiply_With_Ovflo_Check): Add pragma Annotate to avoid warning concerning unsigned -> signed conversion. * libgnat/s-imguns.adb (Set_Image_Unsigned): Add pragma Assert to prevent overflow check warning. Add pragma Assert for controlling S'First = 1. * libgnat/s-imgrea.adb (Image_Floating_Point, Set, Set_Digs, Set_Special_Fill, Convert_Integer): Add pragma Annotate to prevent overflow check warning. (Set_Image_Real): Add pragma Annotate to avoid dead code warning on float check. Add pragma Assert to prevent overflow check warning. * libgnat/s-imgwiu.adb (Set_Digits, Set_Image_Width_Unsigned): Add pragma assert to prevent overflow check warning. * libgnat/s-imgllu.adb (Set_Image_Long_Long_Unsigned): Add pragma assert to prevent overflow check warning. * libgnat/s-imgint.adb (Set_Digits): Add Assert for input constraint and to prevent overflow check warning, create Non_Positive subtype, and change the T parameter as Non_Positive instead Integer. (Set_Image_Integer): Add pragma assert to prevent overflow check warning. * libgnat/s-imglli.adb (Set_Digits): Add Assert for input constraint and to prevent overflow check warning, create Non_Positive subtype, and change the T parameter as Non_Positive instead Integer. (Set_Image_Long_Long_Integer): Add pragma assert to prevent overflow check warning. * libgnat/s-fatgen.adb (Decompose, Pred, Succ): Add pragma Annotate to prevent dead code due to invalid float check. * libgnat/s-imenne.adb (Image_Enumeration_8, Image_Enumeration_16, Image_Enumeration_32): Add pragma Assert to prevent overflow check warning. Add Names_Index subtype for restricting Index_table content.
2020-10-21[Ada] Compiler crash on prefixed call to controlled function with invariant ↵Gary Dismukes1-0/+3
check gcc/ada/ * exp_ch6.adb (Insert_Post_Call_Actions): Test for N_Explicit_Dereference as part of the existing test for function calls.
2020-10-21[Ada] Fix bogus error for bit-packed array with volatile componentEric Botcazou1-1/+4
gcc/ada/ * freeze.adb (Check_Strict_Alignment): Do not set the flag for a bit-packed array type, even if it is a by-reference type.
2020-10-21[Ada] Improve precision of Ada.Directories.Modification_TimeDmitriy Anisimkov2-24/+115
gcc/ada/ * adaint.c (__gnat_file_time): New routine. (__gnat_copy_attribs): Copy timestamps in nanoseconds. * libgnat/a-direct.adb (C_Modification_Time): Bind to __gnat_file_time. (Modification_Time): Call to C_Modification_Time.
2020-10-21[Ada] Fix crash with iterated_component_association and -gnatcPiotr Trojanek1-1/+7
gcc/ada/ * sem_aggr.adb (Resolve_Iterated_Component_Association): Expression's copy and now has the same parent as the original expression. (Resolve_Array_Aggregate): Add ??? comment about a still existing minor issue that led to discovery of the above crash.
2020-10-21[Ada] Spurious error in current instance used as formal packageJavier Miranda1-132/+90
gcc/ada/ * sem_ch12.adb (Install_Parents_Of_Generic_Context): Simplify functionality; collect and install parents of generic child package. (Remove_Parents_Of_Generic_Context): Code cleanup. (Instantiate_Package_Body): Hide parents of generic context from visibility before installing the parent instance; restore their visibility when the instance is analyzed
2020-10-21[Ada] Remove -mthreads from Linker_Options pragma for x86-lynx178eDoug Rupp1-4/+0
gcc/ada/ * libgnarl/s-osinte__lynxos178e.ads: Remove -mthreads switch.
2020-10-21[Ada] Use VxWorks 7 APIs for accessing environment variables in kernel modePatrick Bernardi1-11/+20
gcc/ada/ * env.c (__gnat_setenv): call setenv for VxWorks 7 kernel mode. (__gnat_environ): envGet takes an int instead of a NULL pointer. (__gnat_unsetenv): call unsetenv for VxWorks 7 kernel mode. (__gnat_clearenv): use __gnat_unsetenv to clear environment variables.
2020-10-21[Ada] Use helper function in Freeze_Subprogram_BodyEric Botcazou1-12/+4
gcc/ada/ * sem_ch12.adb (Freeze_Subprogram_Body): Call Package_Freeze_Node to retrieve the freeze node for the enclosing body of the generic.
2020-10-21[Ada] Incorrect associations for extra accessibility parametersJustin Squirek1-12/+12
gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Modify calls to Add_Extra_Actual to use Extra_Accessibility instead of Get_Accessibility for the EF parameter.
2020-10-21[Ada] Make minimum accessibility level a constant objectPiotr Trojanek2-7/+8
gcc/ada/ * exp_ch6.adb (Expand_Actuals): Whitespace cleanup. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Make minimum accessibility a constant object.
2020-10-21[Ada] Simplify the VxWorks implementation of __gnat_environPatrick Bernardi1-21/+6
gcc/ada/ * env.c (__gnat_environ): For VxWorks kernel simply return the result of the envGet call. Do this for VxWorks 6 and 7 as they both support the same API.
2020-10-21[Ada] Disable warnings on entities when building finalizersGhjuvan Lacambre1-0/+8
gcc/ada/ * exp_ch7.adb (Build_Finalizer): Disable warnings on referenced entity.
2020-10-21[Ada] Fix typos and style in comments related to Default_Initial_ConditionPiotr Trojanek3-4/+4
gcc/ada/ * einfo.ads, sem_ch3.adb, sem_util.adb: Fix comments.
2020-10-21[Ada] Spurious error in taft ammendment derivation of CPP typeJavier Miranda1-0/+7
gcc/ada/ * sem_ch3.adb (Build_Derived_Type): Propagate convention of class-wide parent.
2020-10-21[Ada] Raise Capacity_Error on formal vector insertionClaire Dross1-2/+8
gcc/ada/ * libgnat/a-cofove.adb (Copy): Add explanation in case of Capacity_Error. (Insert_Space): Raise Capacity_Error if the new length is greater than the capacity. (Reserve_Capacity): Raise Capacity_Error instead of Constraint_Error.
2020-10-21Daily bump.GCC Administrator1-0/+438
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.