Age | Commit message (Collapse) | Author | Files | Lines |
|
gcc/ada/
* doc/gnat_rm/implementation_defined_characteristics.rst: Minor
fixes.
* gnat_rm.texi: Regenerate.
|
|
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.
|
|
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.
|
|
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.
|
|
gcc/ada/
* sem_prag.adb (Process_Convention,
Process_Import_Or_Interface): Fix error message.
|
|
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.
|
|
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.
|
|
gcc/ada/
* sem_attr.adb (Eval_Attribute): Fix oversight for Bit_Position.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
gcc/ada/
* exp_aggr.adb (Expand_N_Aggregate): Refactor repeated calls to
Etype (N).
(Build_Array_Aggr_Code): Fix whitespace.
|
|
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++.
|
|
gcc/ada/
* sem_aggr.adb (Resolve_Array_Aggregate): Use Choice_List, which
internally calls either Choice or Discrete_Choices, depending on
the context.
|
|
gcc/ada/
* sem_aggr.adb (Resolve_Iterated_Component_Association): Use
existing defining identifier for index parameter.
|
|
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.
|
|
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.
|
|
check
gcc/ada/
* exp_ch6.adb (Insert_Post_Call_Actions): Test for
N_Explicit_Dereference as part of the existing test for function
calls.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
gcc/ada/
* libgnarl/s-osinte__lynxos178e.ads: Remove -mthreads switch.
|
|
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.
|
|
gcc/ada/
* sem_ch12.adb (Freeze_Subprogram_Body): Call
Package_Freeze_Node to retrieve the freeze node for the
enclosing body of the generic.
|
|
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.
|
|
gcc/ada/
* exp_ch6.adb (Expand_Actuals): Whitespace cleanup.
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Make minimum
accessibility a constant object.
|
|
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.
|
|
gcc/ada/
* exp_ch7.adb (Build_Finalizer): Disable warnings on referenced
entity.
|
|
gcc/ada/
* einfo.ads, sem_ch3.adb, sem_util.adb: Fix comments.
|
|
gcc/ada/
* sem_ch3.adb (Build_Derived_Type): Propagate convention of
class-wide parent.
|
|
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.
|
|
|
|
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.
|