From fad0600db0ecc1bbd55a7faf17046d727dde94c6 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Fri, 10 Apr 2009 17:57:48 +0200 Subject: [PATCH] [multiple changes] 2009-04-10 Robert Dewar * einfo.ads, einfo.adb (Low_Bound_Tested): New name for Low_Bound_Known * sem_prag.adb (Analyze_Pragma, case Check): Remove check for lower bound tested, since this is now done more generally in Sem_Res. * sem_res.adb (Resolve_Comparison_Op): Add call to Check_Lower_Bound_Tested. (Resolve_Equality_Op): Add call to Check_Lower_Bound_Tested * sem_warn.ads, sem_warn.adb (Check_Low_Bound_Tested): New procedure (Low_Bound_Tested): New name for Low_Bound_Known flag * exp_ch5.adb: Minor reformatting * exp_ch4.adb: Add comments on copying the Comes_From_Source flag for allocators * sinfo.ads: Add comments on copying the Comes_From_Source flag for allocators * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Copy Comes_From_Source flag from old allocator to new one. 2009-04-10 Ed Schonberg * sem_ch6.ads: Address missing documentation query 2009-04-10 Vincent Celier * prj-attr.adb: Add new Linker attributes Max_Command_Line_Length, Response_File_Format and Response_File_Switches. * prj-nmsc.adb (Process_Linker): Process new attributes Max_Command_Line_Length, Response_File_Format and Response_File_Switches. * prj.ads (Response_File_Format): New enumeration type (Project_Configuration): New componants Max_Command_Line_Length, Resp_File_Format and Resp_File_Options. * snames.ads-tmpl: Add new standard names for linking response files for gprbuild: GNU, None, Object_List, Option_List, Max_Command_Line_Length, Response_File_Format and Response_File_Switches. 2009-04-10 Geert Bosch * system-aix.ads, system-darwin-ppc.ads, system-darwin-x86.ads, system-freebsd-x86.ads, system-hpux.ads, system-hpux-ia64.ads, system-irix-n32.ads, system-irix-o32.ads, system-linux-alpha.ads, system-linux-hppa.ads, system-linux-ia64.ads, system-linux-ppc.ads, system-linux-s390.ads, system-linux-s390x.ads, system-linux-sh4.ads, system-linux-sparc.ads, system-linux-x86_64.ads, system-linux-x86.ads, system-mingw.ads, system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-solaris-x86.ads, system-tru64.ads, system-vms_64.ads, system-vms.ads, system-vms-ia64.ads, system-vms-zcx.ads, system-vxworks-arm.ads, system-vxworks-m68k.ads, system-vxworks-mips.ads, system-vxworks-ppc.ads, system-vxworks-sparcv9.ads, system-vxworks-x86.ads (Backend_Overflow_Checks): Set to True. From-SVN: r145924 --- gcc/ada/ChangeLog | 64 +++++++++++++++++++++++ gcc/ada/einfo.adb | 12 ++--- gcc/ada/einfo.ads | 24 ++++----- gcc/ada/exp_ch4.adb | 84 +++++++++++++++++++++++++++++- gcc/ada/exp_ch5.adb | 8 +-- gcc/ada/exp_ch6.adb | 13 +++-- gcc/ada/prj-attr.adb | 6 +++ gcc/ada/prj-nmsc.adb | 55 ++++++++++++++++++- gcc/ada/prj.ads | 23 ++++++++ gcc/ada/sem_ch6.ads | 4 +- gcc/ada/sem_prag.adb | 27 ++-------- gcc/ada/sem_res.adb | 2 + gcc/ada/sem_warn.adb | 25 ++++++++- gcc/ada/sem_warn.ads | 7 +++ gcc/ada/sinfo.ads | 7 +++ gcc/ada/snames.ads-tmpl | 7 +++ gcc/ada/system-aix.ads | 2 +- gcc/ada/system-darwin-ppc.ads | 2 +- gcc/ada/system-darwin-x86.ads | 2 +- gcc/ada/system-freebsd-x86.ads | 2 +- gcc/ada/system-hpux-ia64.ads | 2 +- gcc/ada/system-hpux.ads | 2 +- gcc/ada/system-irix-n32.ads | 2 +- gcc/ada/system-irix-o32.ads | 2 +- gcc/ada/system-linux-alpha.ads | 2 +- gcc/ada/system-linux-hppa.ads | 2 +- gcc/ada/system-linux-ia64.ads | 2 +- gcc/ada/system-linux-ppc.ads | 2 +- gcc/ada/system-linux-s390.ads | 2 +- gcc/ada/system-linux-s390x.ads | 2 +- gcc/ada/system-linux-sh4.ads | 2 +- gcc/ada/system-linux-sparc.ads | 2 +- gcc/ada/system-linux-x86.ads | 2 +- gcc/ada/system-linux-x86_64.ads | 2 +- gcc/ada/system-mingw.ads | 2 +- gcc/ada/system-solaris-sparc.ads | 2 +- gcc/ada/system-solaris-sparcv9.ads | 2 +- gcc/ada/system-solaris-x86.ads | 2 +- gcc/ada/system-tru64.ads | 2 +- gcc/ada/system-vms-ia64.ads | 2 +- gcc/ada/system-vms-zcx.ads | 2 +- gcc/ada/system-vms.ads | 2 +- gcc/ada/system-vms_64.ads | 2 +- gcc/ada/system-vxworks-arm.ads | 2 +- gcc/ada/system-vxworks-m68k.ads | 2 +- gcc/ada/system-vxworks-mips.ads | 2 +- gcc/ada/system-vxworks-ppc.ads | 2 +- gcc/ada/system-vxworks-sparcv9.ads | 2 +- gcc/ada/system-vxworks-x86.ads | 2 +- 49 files changed, 348 insertions(+), 86 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 97ba0a6a568..69186b94589 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,67 @@ +2009-04-10 Robert Dewar + + * einfo.ads, einfo.adb (Low_Bound_Tested): New name for Low_Bound_Known + + * sem_prag.adb (Analyze_Pragma, case Check): Remove check for lower + bound tested, since this is now done more generally in Sem_Res. + + * sem_res.adb (Resolve_Comparison_Op): Add call to + Check_Lower_Bound_Tested. + (Resolve_Equality_Op): Add call to Check_Lower_Bound_Tested + + * sem_warn.ads, sem_warn.adb (Check_Low_Bound_Tested): New procedure + (Low_Bound_Tested): New name for Low_Bound_Known flag + + * exp_ch5.adb: Minor reformatting + + * exp_ch4.adb: + Add comments on copying the Comes_From_Source flag for allocators + + * sinfo.ads: + Add comments on copying the Comes_From_Source flag for allocators + + * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Copy + Comes_From_Source flag from old allocator to new one. + +2009-04-10 Ed Schonberg + + * sem_ch6.ads: Address missing documentation query + +2009-04-10 Vincent Celier + + * prj-attr.adb: + Add new Linker attributes Max_Command_Line_Length, Response_File_Format + and Response_File_Switches. + + * prj-nmsc.adb (Process_Linker): Process new attributes + Max_Command_Line_Length, Response_File_Format and + Response_File_Switches. + + * prj.ads (Response_File_Format): New enumeration type + (Project_Configuration): New componants Max_Command_Line_Length, + Resp_File_Format and Resp_File_Options. + + * snames.ads-tmpl: Add new standard names for linking response files + for gprbuild: GNU, None, Object_List, Option_List, + Max_Command_Line_Length, Response_File_Format and + Response_File_Switches. + +2009-04-10 Geert Bosch + + * system-aix.ads, system-darwin-ppc.ads, system-darwin-x86.ads, + system-freebsd-x86.ads, system-hpux.ads, system-hpux-ia64.ads, + system-irix-n32.ads, system-irix-o32.ads, system-linux-alpha.ads, + system-linux-hppa.ads, system-linux-ia64.ads, system-linux-ppc.ads, + system-linux-s390.ads, system-linux-s390x.ads, system-linux-sh4.ads, + system-linux-sparc.ads, system-linux-x86_64.ads, system-linux-x86.ads, + system-mingw.ads, system-solaris-sparc.ads, system-solaris-sparcv9.ads, + system-solaris-x86.ads, system-tru64.ads, system-vms_64.ads, + system-vms.ads, system-vms-ia64.ads, system-vms-zcx.ads, + system-vxworks-arm.ads, system-vxworks-m68k.ads, + system-vxworks-mips.ads, system-vxworks-ppc.ads, + system-vxworks-sparcv9.ads, system-vxworks-x86.ads + (Backend_Overflow_Checks): Set to True. + 2009-04-10 Thomas Quinot * exp_attr.adb: Minor reformatting diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb index 2587dac63f9..72db40fcf84 100644 --- a/gcc/ada/einfo.adb +++ b/gcc/ada/einfo.adb @@ -460,7 +460,7 @@ package body Einfo is -- Itype_Printed Flag202 -- Has_Pragma_Pure Flag203 -- Is_Known_Null Flag204 - -- Low_Bound_Known Flag205 + -- Low_Bound_Tested Flag205 -- Is_Visible_Formal Flag206 -- Known_To_Have_Preelab_Init Flag207 -- Must_Have_Preelab_Init Flag208 @@ -2160,10 +2160,10 @@ package body Einfo is return Node16 (Id); end Lit_Strings; - function Low_Bound_Known (Id : E) return B is + function Low_Bound_Tested (Id : E) return B is begin return Flag205 (Id); - end Low_Bound_Known; + end Low_Bound_Tested; function Machine_Radix_10 (Id : E) return B is begin @@ -4627,11 +4627,11 @@ package body Einfo is Set_Node16 (Id, V); end Set_Lit_Strings; - procedure Set_Low_Bound_Known (Id : E; V : B := True) is + procedure Set_Low_Bound_Tested (Id : E; V : B := True) is begin pragma Assert (Is_Formal (Id)); Set_Flag205 (Id, V); - end Set_Low_Bound_Known; + end Set_Low_Bound_Tested; procedure Set_Machine_Radix_10 (Id : E; V : B := True) is begin @@ -6971,7 +6971,7 @@ package body Einfo is W ("Kill_Range_Checks", Flag33 (Id)); W ("Kill_Tag_Checks", Flag34 (Id)); W ("Known_To_Have_Preelab_Init", Flag207 (Id)); - W ("Low_Bound_Known", Flag205 (Id)); + W ("Low_Bound_Tested", Flag205 (Id)); W ("Machine_Radix_10", Flag84 (Id)); W ("Materialize_Entity", Flag168 (Id)); W ("Must_Be_On_Byte_Boundary", Flag183 (Id)); diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads index 48d2e20a7cd..94861354b70 100644 --- a/gcc/ada/einfo.ads +++ b/gcc/ada/einfo.ads @@ -2757,15 +2757,13 @@ package Einfo is -- the nature and use of this entity for implementing the Image and -- Value attributes for the enumeration type in question. --- Low_Bound_Known (Flag205) +-- Low_Bound_Tested (Flag205) -- Present in all entities. Currently this can only be set True for -- formal parameter entries of a standard unconstrained one-dimensional --- array or string type, where the lower bound of the index type is zero --- or one. Indicates that the low bound is known to be equal to the lower --- bound of the index type (e.g. 1 for String, since the index type is --- Positive). This flag can only be set by a pragma Assert which --- specifies this. If this flag is set, warnings about assuming the index --- low bound to be zero or one are suppressed. +-- array or string type. Indicates that an explicit test of the low bound +-- of the formal appeared in the code, e.g. in a pragma Assert. If this +-- flag is set, warnings about assuming the index low bound to be one +-- are suppressed. -- Machine_Radix_10 (Flag84) -- Present in decimal types and subtypes, set if the Machine_Radix @@ -4520,7 +4518,7 @@ package Einfo is -- Kill_Elaboration_Checks (Flag32) -- Kill_Range_Checks (Flag33) -- Kill_Tag_Checks (Flag34) - -- Low_Bound_Known (Flag205) + -- Low_Bound_Tested (Flag205) -- Materialize_Entity (Flag168) -- Needs_Debug_Info (Flag147) -- Never_Set_In_Source (Flag115) @@ -5008,7 +5006,7 @@ package Einfo is -- Is_Controlling_Formal (Flag97) -- Is_Only_Out_Parameter (Flag226) -- Is_Optional_Parameter (Flag134) - -- Low_Bound_Known (Flag205) + -- Low_Bound_Tested (Flag205) -- Is_Return_Object (Flag209) -- Parameter_Mode (synth) @@ -5899,7 +5897,7 @@ package Einfo is function Limited_View (Id : E) return E; function Lit_Indexes (Id : E) return E; function Lit_Strings (Id : E) return E; - function Low_Bound_Known (Id : E) return B; + function Low_Bound_Tested (Id : E) return B; function Machine_Radix_10 (Id : E) return B; function Master_Id (Id : E) return E; function Materialize_Entity (Id : E) return B; @@ -6450,7 +6448,7 @@ package Einfo is procedure Set_Limited_View (Id : E; V : E); procedure Set_Lit_Indexes (Id : E; V : E); procedure Set_Lit_Strings (Id : E; V : E); - procedure Set_Low_Bound_Known (Id : E; V : B := True); + procedure Set_Low_Bound_Tested (Id : E; V : B := True); procedure Set_Machine_Radix_10 (Id : E; V : B := True); procedure Set_Master_Id (Id : E; V : E); procedure Set_Materialize_Entity (Id : E; V : B := True); @@ -7139,7 +7137,7 @@ package Einfo is pragma Inline (Limited_View); pragma Inline (Lit_Indexes); pragma Inline (Lit_Strings); - pragma Inline (Low_Bound_Known); + pragma Inline (Low_Bound_Tested); pragma Inline (Machine_Radix_10); pragma Inline (Master_Id); pragma Inline (Materialize_Entity); @@ -7527,7 +7525,7 @@ package Einfo is pragma Inline (Set_Limited_View); pragma Inline (Set_Lit_Indexes); pragma Inline (Set_Lit_Strings); - pragma Inline (Set_Low_Bound_Known); + pragma Inline (Set_Low_Bound_Tested); pragma Inline (Set_Machine_Radix_10); pragma Inline (Set_Master_Id); pragma Inline (Set_Materialize_Entity); diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index ccd990eeb6a..6586e619288 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -657,6 +657,11 @@ package body Exp_Ch4 is Make_Allocator (Loc, New_Reference_To (Etype (Exp), Loc))); + -- Copy the Comes_From_Source flag for the allocator we just + -- built, since logically this allocator is a replacement of + -- the original allocator node. This is for proper handling of + -- restriction No_Implicit_Heap_Allocations. + Set_Comes_From_Source (Expression (Tmp_Node), Comes_From_Source (N)); @@ -672,6 +677,7 @@ package body Exp_Ch4 is end if; Convert_Aggr_In_Allocator (N, Tmp_Node, Exp); + else Node := Relocate_Node (N); Set_Analyzed (Node); @@ -727,6 +733,11 @@ package body Exp_Ch4 is Make_Allocator (Loc, New_Reference_To (Etype (Exp), Loc))); + -- Copy the Comes_From_Source flag for the allocator we just + -- built, since logically this allocator is a replacement of + -- the original allocator node. This is for proper handling + -- of restriction No_Implicit_Heap_Allocations. + Set_Comes_From_Source (Expression (Tmp_Node), Comes_From_Source (N)); @@ -929,6 +940,11 @@ package body Exp_Ch4 is Expression => Make_Allocator (Loc, New_Reference_To (Etype (Exp), Loc))); + -- Copy the Comes_From_Source flag for the allocator we just built, + -- since logically this allocator is a replacement of the original + -- allocator node. This is for proper handling of restriction + -- No_Implicit_Heap_Allocations. + Set_Comes_From_Source (Expression (Tmp_Node), Comes_From_Source (N)); @@ -4185,7 +4201,7 @@ package body Exp_Ch4 is Make_Integer_Literal (Loc, Dim))); end Construct_Attribute_Reference; - -- Start processing for Check_Subscripts + -- Start of processing for Check_Subscripts begin for J in 1 .. Number_Dimensions (Typ) loop @@ -7920,6 +7936,72 @@ package body Exp_Ch4 is or else (Is_Fixed_Point_Type (Target_Type) and then Conversion_OK (N))) then + -- Handle case in which type conversions from real types to integers + -- are truncated instead of rounded. For example, in the .NET target + -- the only instructions available for conversion from float types to + -- integers truncate the result. That is, the result of Integer (3.9) + -- is 3 instead of 4. The frontend expansion done here to handle also + -- negative values is the following composition of conditional + -- expressions: + + -- (if Abs (Operand - Float(Integer(Operand))) >= 0.5 then + -- (if Operand >= 0.0 then + -- Integer(Operand) + 1 + -- else + -- Integer(Operand) - 1) + -- else + -- Integer(Operand)) + + if Integer_Truncation_On_Target and then Comes_From_Source (N) then + declare + Conv_Node : Node_Id; + + begin + -- This code is weird, why are we doing all these copy tree + -- operations, instead of just capturing Integer(Operand) + -- once and then reusing the value instead of forcing this + -- conversion to be done four times! ??? + + -- There should be no New_Copy_Tree operations in the below + -- code at all??? + + Conv_Node := New_Copy_Tree (N); + Set_Parent (Conv_Node, Parent (N)); + Set_Comes_From_Source (Conv_Node, False); + Analyze_And_Resolve (Conv_Node, Target_Type); + + Rewrite (N, + Make_Conditional_Expression (Loc, + Expressions => New_List ( + Make_Op_Ge (Loc, + Left_Opnd => + Make_Op_Abs (Loc, + Make_Op_Subtract (Loc, + New_Copy_Tree (Operand), + Make_Type_Conversion (Loc, + New_Reference_To (Etype (Operand), Loc), + New_Copy_Tree (Conv_Node)))), + Right_Opnd => Make_Real_Literal (Loc, Ureal_Half)), + + Make_Conditional_Expression (Loc, + Expressions => New_List ( + Make_Op_Ge (Loc, + Left_Opnd => New_Copy_Tree (Operand), + Right_Opnd => Make_Real_Literal (Loc, Ureal_0)), + Make_Op_Add (Loc, + New_Copy_Tree (Conv_Node), + Make_Integer_Literal (Loc, 1)), + Make_Op_Subtract (Loc, + New_Copy_Tree (Conv_Node), + Make_Integer_Literal (Loc, 1)))), + + New_Copy_Tree (Conv_Node)))); + + Analyze_And_Resolve (N, Target_Type); + return; + end; + end if; + -- One more check here, gcc is still not able to do conversions of -- this type with proper overflow checking, and so gigi is doing an -- approximation of what is required by doing floating-point compares diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index dfc983da087..9c5eabfd9a3 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -2825,12 +2825,14 @@ package body Exp_Ch5 is if Is_Class_Wide_Type (Return_Obj_Typ) then Heap_Allocator := Make_Allocator (Loc, - New_Reference_To - (Etype (Return_Obj_Expr), Loc)); + Expression => + New_Reference_To + (Etype (Return_Obj_Expr), Loc)); else Heap_Allocator := Make_Allocator (Loc, - New_Reference_To (Return_Obj_Typ, Loc)); + Expression => + New_Reference_To (Return_Obj_Typ, Loc)); end if; -- If the object requires default initialization then diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index 045bd046895..2cd2f101a64 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -5005,11 +5005,18 @@ package body Exp_Ch6 is -- is handled separately further below. New_Allocator := - Make_Allocator (Loc, New_Reference_To (Result_Subt, Loc)); + Make_Allocator (Loc, + Expression => New_Reference_To (Result_Subt, Loc)); + Set_No_Initialization (New_Allocator); + + -- Copy attributes to new allocator. Note that the new allocator + -- logically comes from source if the original one did, so copy the + -- relevant flag. This ensures proper treatment of the restriction + -- No_Implicit_Heap_Allocations in this case. - Set_Storage_Pool (New_Allocator, Storage_Pool (Allocator)); + Set_Storage_Pool (New_Allocator, Storage_Pool (Allocator)); Set_Procedure_To_Call (New_Allocator, Procedure_To_Call (Allocator)); - Set_No_Initialization (New_Allocator); + Set_Comes_From_Source (New_Allocator, Comes_From_Source (Allocator)); Rewrite (Allocator, New_Allocator); diff --git a/gcc/ada/prj-attr.adb b/gcc/ada/prj-attr.adb index 1096743be71..7e30de68762 100644 --- a/gcc/ada/prj-attr.adb +++ b/gcc/ada/prj-attr.adb @@ -245,6 +245,12 @@ package body Prj.Attr is "SVlib_dir_switch#" & "SVlib_name_switch#" & + -- Configuration - Response files + + "SVmax_command_line_length#" & + "SVresponse_file_format#" & + "LVresponse_file_switches#" & + -- package Cross_Reference "Pcross_reference#" & diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 7d532892b81..bab813eb205 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -484,9 +484,9 @@ package body Prj.Nmsc is -- Locate a directory. Name is the directory name. Parent is the root -- directory, if Name a relative path name. Dir is set to the canonical -- case path name of the directory, and Display is the directory path name - -- for display purposes. If the directory does not exist and Project_Setup + -- for display purposes. If the directory does not exist and Setup_Projects -- is True and Create is a non null string, an attempt is made to create - -- the directory. If the directory does not exist and Project_Setup is + -- the directory. If the directory does not exist and Setup_Projects is -- false, then Dir and Display are set to No_Name. -- -- Current_Dir should represent the current directory, and is passed for @@ -1839,6 +1839,57 @@ package body Prj.Nmsc is elsif Attribute.Name = Name_Map_File_Option then Data.Config.Map_File_Option := Attribute.Value.Value; + + elsif Attribute.Name = Name_Max_Command_Line_Length then + begin + Data.Config.Max_Command_Line_Length := + Natural'Value (Get_Name_String + (Attribute.Value.Value)); + + exception + when Constraint_Error => + Error_Msg + (Project, + In_Tree, + "value must be positive or equal to 0", + Attribute.Value.Location); + end; + + elsif Attribute.Name = Name_Response_File_Format then + declare + Name : Name_Id; + + begin + Get_Name_String (Attribute.Value.Value); + To_Lower (Name_Buffer (1 .. Name_Len)); + Name := Name_Find; + + if Name = Name_None then + Data.Config.Resp_File_Format := None; + + elsif Name = Name_Gnu then + Data.Config.Resp_File_Format := GNU; + + elsif Name = Name_Object_List then + Data.Config.Resp_File_Format := Object_List; + + elsif Name = Name_Option_List then + Data.Config.Resp_File_Format := Option_List; + + else + Error_Msg + (Project, + In_Tree, + "illegal response file format", + Attribute.Value.Location); + end if; + end; + + elsif Attribute.Name = Name_Response_File_Switches then + Put (Into_List => + Data.Config.Resp_File_Options, + From_List => Attribute.Value.Values, + In_Tree => In_Tree); end if; end if; diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads index c8ce1773d99..adc57472329 100644 --- a/gcc/ada/prj.ads +++ b/gcc/ada/prj.ads @@ -979,6 +979,13 @@ package Prj is Table_Increment => 100); -- The table that contains the lists of project files + type Response_File_Format is + (None, + GNU, + Object_List, + Option_List); + -- The format of the different response files + type Project_Configuration is record Run_Path_Option : Name_List_Index := No_Name_List; -- The option to use when linking to specify the path where to look for @@ -1015,6 +1022,19 @@ package Prj is -- The option to specify the name of a library for linking. Specified in -- the configuration. When not specified, defaults to "-l". + Max_Command_Line_Length : Natural := 0; + -- When positive and when Resp_File_Format (see below) is not None, + -- if the command line for the invocation of the linker would be greater + -- than this value, a response file is used to invoke the linker. + + Resp_File_Format : Response_File_Format := None; + -- The format of a response file, when linking with a response file is + -- supported. + + Resp_File_Options : Name_List_Index := No_Name_List; + -- The switches, if any, that precede the path name of the response + -- file in the invocation of the linker. + -- Libraries Library_Builder : Path_Name_Type := No_Path; @@ -1085,6 +1105,9 @@ package Prj is Linker_Lib_Dir_Option => No_Name, Linker_Lib_Name_Option => No_Name, Library_Builder => No_Path, + Max_Command_Line_Length => 0, + Resp_File_Format => None, + Resp_File_Options => No_Name_List, Lib_Support => None, Archive_Builder => No_Name_List, Archive_Builder_Append_Option => No_Name_List, diff --git a/gcc/ada/sem_ch6.ads b/gcc/ada/sem_ch6.ads index aecb09af949..543f01bf749 100644 --- a/gcc/ada/sem_ch6.ads +++ b/gcc/ada/sem_ch6.ads @@ -119,7 +119,9 @@ package Sem_Ch6 is -- are subtype conformant, post error message if not (RM 6.3.1(16)), -- the flag being placed on the Err_Loc node if it is specified, and -- on the appropriate component of the New_Id construct if not. - -- What is the semantics of Skip_Controlling_Formals??? + -- Skip_Controlling_Formals is True when checking the conformance of + -- a subprogram that implements an interface operation. In that case, + -- only the non-controlling formals can (and must) be examined. procedure Check_Type_Conformant (New_Id : Entity_Id; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index af7cf60ce8b..f6d5209514a 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -5733,25 +5733,6 @@ package body Sem_Prag is else Analyze_And_Resolve (Expr, Any_Boolean); end if; - - -- If assertion is of the form (X'First = literal), where X is - -- a formal, then set Low_Bound_Known flag on this formal. - - if Nkind (Expr) = N_Op_Eq then - declare - Right : constant Node_Id := Right_Opnd (Expr); - Left : constant Node_Id := Left_Opnd (Expr); - begin - if Nkind (Left) = N_Attribute_Reference - and then Attribute_Name (Left) = Name_First - and then Is_Entity_Name (Prefix (Left)) - and then Is_Formal (Entity (Prefix (Left))) - and then Nkind (Right) = N_Integer_Literal - then - Set_Low_Bound_Known (Entity (Prefix (Left))); - end if; - end; - end if; end Check; ---------------- @@ -9608,10 +9589,10 @@ package body Sem_Prag is Check_Precondition_Postcondition (In_Body); - -- If in spec, nothing to do. If in body, then we convert the - -- pragma to pragma Check (Precondition, cond [, msg]). Note we - -- do this whether or not precondition checks are enabled. That - -- works fine since pragma Check will do this check. + -- If in spec, nothing more to do. If in body, then we convert the + -- pragma to pragma Check (Precondition, cond [, msg]). Note we do + -- this whether or not precondition checks are enabled. That works + -- fine since pragma Check will do this check. if In_Body then if Arg_Count = 2 then diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index c9356b6288a..31242c6eb57 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -5393,6 +5393,7 @@ package body Sem_Res is Check_Unset_Reference (L); Check_Unset_Reference (R); Generate_Operator_Reference (N, T); + Check_Low_Bound_Tested (N); Eval_Relational_Op (N); end if; end if; @@ -6135,6 +6136,7 @@ package body Sem_Res is Check_Unset_Reference (L); Check_Unset_Reference (R); Generate_Operator_Reference (N, T); + Check_Low_Bound_Tested (N); -- If this is an inequality, it may be the implicit inequality -- created for a user-defined operation, in which case the corres- diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index d96f697fcbc..7831315ee96 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -604,6 +604,29 @@ package body Sem_Warn is end if; end Check_Infinite_Loop_Warning; + ---------------------------- + -- Check_Low_Bound_Tested -- + ---------------------------- + + procedure Check_Low_Bound_Tested (Expr : Node_Id) is + begin + if Comes_From_Source (Expr) then + declare + L : constant Node_Id := Left_Opnd (Expr); + R : constant Node_Id := Right_Opnd (Expr); + begin + if Nkind (L) = N_Attribute_Reference + and then Attribute_Name (L) = Name_First + and then Is_Entity_Name (Prefix (L)) + and then Is_Formal (Entity (Prefix (L))) + and then Nkind (R) = N_Integer_Literal + then + Set_Low_Bound_Tested (Entity (Prefix (L))); + end if; + end; + end if; + end Check_Low_Bound_Tested; + ---------------------- -- Check_References -- ---------------------- @@ -3633,7 +3656,7 @@ package body Sem_Warn is if Is_Formal (Ent) and then Is_Suspicious_Type (Typ) - and then not Low_Bound_Known (Ent) + and then not Low_Bound_Tested (Ent) then Test_Suspicious_Index; end if; diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads index e3daef471ab..ce97d695efd 100644 --- a/gcc/ada/sem_warn.ads +++ b/gcc/ada/sem_warn.ads @@ -168,6 +168,13 @@ package Sem_Warn is -- N is the node for a loop statement. This procedure checks if a warning -- should be given for a possible infinite loop, and if so issues it. + procedure Check_Low_Bound_Tested (Expr : Node_Id); + -- Expr is the node for a comparison operation. This procedure checks if + -- the comparison is a source comparison of P'First with a literal and if + -- so, sets the Low_Bound_Tested flag in Expr to suppress warnings about + -- improper low bound assumptions (we assume that if the code explicitly + -- checks X'First, then it is not operating in blind assumption mode). + procedure Warn_On_Known_Condition (C : Node_Id); -- C is a node for a boolean expression resulting from a relational -- or membership operation. If the expression has a compile time known diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index fd3a0852ee9..91d286fcc6d 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -3728,6 +3728,13 @@ package Sinfo is -- Is_Dynamic_Coextension (Flag18-Sem) -- plus fields for expression + -- Note: like all nodes, the N_Allocator has the Comes_From_Source flag. + -- This flag has a special function in conjunction with the restriction + -- No_Implicit_Heap_Allocations, which will be triggered if this flag + -- is not set. This means that if a source allocator is replaced with + -- a constructed allocator, the Comes_From_Source flag should be copied + -- to the newly created allocator. + --------------------------------- -- 5.1 Sequence Of Statements -- --------------------------------- diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index 352def5a5df..8943b7a53a5 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -1048,6 +1048,7 @@ package Snames is Name_Global_Config_File : constant Name_Id := N + $; -- GPR Name_Gnatls : constant Name_Id := N + $; Name_Gnatstub : constant Name_Id := N + $; + Name_Gnu : constant Name_Id := N + $; Name_Ide : constant Name_Id := N + $; Name_Implementation : constant Name_Id := N + $; Name_Implementation_Exceptions : constant Name_Id := N + $; @@ -1088,19 +1089,25 @@ package Snames is Name_Mapping_File_Switches : constant Name_Id := N + $; Name_Mapping_Spec_Suffix : constant Name_Id := N + $; Name_Mapping_Body_Suffix : constant Name_Id := N + $; + Name_Max_Command_Line_Length : constant Name_Id := N + $; Name_Metrics : constant Name_Id := N + $; Name_Naming : constant Name_Id := N + $; + Name_None : constant Name_Id := N + $; Name_Object_Generated : constant Name_Id := N + $; + Name_Object_List : constant Name_Id := N + $; Name_Objects_Linked : constant Name_Id := N + $; Name_Objects_Path : constant Name_Id := N + $; Name_Objects_Path_File : constant Name_Id := N + $; Name_Object_Dir : constant Name_Id := N + $; + Name_Option_List : constant Name_Id := N + $; Name_Path_Syntax : constant Name_Id := N + $; Name_Pic_Option : constant Name_Id := N + $; Name_Pretty_Printer : constant Name_Id := N + $; Name_Prefix : constant Name_Id := N + $; Name_Project : constant Name_Id := N + $; Name_Project_Dir : constant Name_Id := N + $; + Name_Response_File_Format : constant Name_Id := N + $; + Name_Response_File_Switches : constant Name_Id := N + $; Name_Roots : constant Name_Id := N + $; -- GPR Name_Required_Switches : constant Name_Id := N + $; Name_Run_Path_Option : constant Name_Id := N + $; diff --git a/gcc/ada/system-aix.ads b/gcc/ada/system-aix.ads index 989cc848379..f76edfa2aa7 100644 --- a/gcc/ada/system-aix.ads +++ b/gcc/ada/system-aix.ads @@ -126,7 +126,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-darwin-ppc.ads b/gcc/ada/system-darwin-ppc.ads index df12ccfe132..0c9c32d5db5 100644 --- a/gcc/ada/system-darwin-ppc.ads +++ b/gcc/ada/system-darwin-ppc.ads @@ -142,7 +142,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-darwin-x86.ads b/gcc/ada/system-darwin-x86.ads index 009f52af7d8..d7f6d0ec272 100644 --- a/gcc/ada/system-darwin-x86.ads +++ b/gcc/ada/system-darwin-x86.ads @@ -142,7 +142,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-freebsd-x86.ads b/gcc/ada/system-freebsd-x86.ads index 37a3275050a..ffec2c11d72 100644 --- a/gcc/ada/system-freebsd-x86.ads +++ b/gcc/ada/system-freebsd-x86.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-hpux-ia64.ads b/gcc/ada/system-hpux-ia64.ads index c866d242879..5c03a2490c9 100644 --- a/gcc/ada/system-hpux-ia64.ads +++ b/gcc/ada/system-hpux-ia64.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-hpux.ads b/gcc/ada/system-hpux.ads index 77c9afa0979..ec6cd1c2c72 100644 --- a/gcc/ada/system-hpux.ads +++ b/gcc/ada/system-hpux.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-irix-n32.ads b/gcc/ada/system-irix-n32.ads index 2c07b5ff334..b26894b52da 100644 --- a/gcc/ada/system-irix-n32.ads +++ b/gcc/ada/system-irix-n32.ads @@ -128,7 +128,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-irix-o32.ads b/gcc/ada/system-irix-o32.ads index 36701fb8bdf..22bbbaac43b 100644 --- a/gcc/ada/system-irix-o32.ads +++ b/gcc/ada/system-irix-o32.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-linux-alpha.ads b/gcc/ada/system-linux-alpha.ads index 401330fd9cc..6ecca643f21 100644 --- a/gcc/ada/system-linux-alpha.ads +++ b/gcc/ada/system-linux-alpha.ads @@ -115,7 +115,7 @@ private AAMP : constant Boolean := False; Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Compiler_System_Version : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; diff --git a/gcc/ada/system-linux-hppa.ads b/gcc/ada/system-linux-hppa.ads index 42b61b50d6b..a23ebde1c9c 100644 --- a/gcc/ada/system-linux-hppa.ads +++ b/gcc/ada/system-linux-hppa.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-linux-ia64.ads b/gcc/ada/system-linux-ia64.ads index 5b436128d03..cb0746f1270 100644 --- a/gcc/ada/system-linux-ia64.ads +++ b/gcc/ada/system-linux-ia64.ads @@ -124,7 +124,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-linux-ppc.ads b/gcc/ada/system-linux-ppc.ads index f3cfb70b3c6..6433e06104f 100644 --- a/gcc/ada/system-linux-ppc.ads +++ b/gcc/ada/system-linux-ppc.ads @@ -124,7 +124,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-linux-s390.ads b/gcc/ada/system-linux-s390.ads index af5d0c25dc9..b44b4d12596 100644 --- a/gcc/ada/system-linux-s390.ads +++ b/gcc/ada/system-linux-s390.ads @@ -115,7 +115,7 @@ private AAMP : constant Boolean := False; Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Compiler_System_Version : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; diff --git a/gcc/ada/system-linux-s390x.ads b/gcc/ada/system-linux-s390x.ads index 4e4ec8b72e5..52937de2521 100644 --- a/gcc/ada/system-linux-s390x.ads +++ b/gcc/ada/system-linux-s390x.ads @@ -115,7 +115,7 @@ private AAMP : constant Boolean := False; Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Compiler_System_Version : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; diff --git a/gcc/ada/system-linux-sh4.ads b/gcc/ada/system-linux-sh4.ads index 4bf78bbd306..6a0fdf47c34 100644 --- a/gcc/ada/system-linux-sh4.ads +++ b/gcc/ada/system-linux-sh4.ads @@ -124,7 +124,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-linux-sparc.ads b/gcc/ada/system-linux-sparc.ads index a42dce5f673..465d8d3a1f0 100644 --- a/gcc/ada/system-linux-sparc.ads +++ b/gcc/ada/system-linux-sparc.ads @@ -115,7 +115,7 @@ private AAMP : constant Boolean := False; Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Compiler_System_Version : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; diff --git a/gcc/ada/system-linux-x86.ads b/gcc/ada/system-linux-x86.ads index a81799c5635..f17f2ef7476 100644 --- a/gcc/ada/system-linux-x86.ads +++ b/gcc/ada/system-linux-x86.ads @@ -124,7 +124,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-linux-x86_64.ads b/gcc/ada/system-linux-x86_64.ads index bd856ae5dc2..94ef86f4f5f 100644 --- a/gcc/ada/system-linux-x86_64.ads +++ b/gcc/ada/system-linux-x86_64.ads @@ -124,7 +124,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-mingw.ads b/gcc/ada/system-mingw.ads index 2e4d1817d0c..6a9131a30d5 100644 --- a/gcc/ada/system-mingw.ads +++ b/gcc/ada/system-mingw.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-solaris-sparc.ads b/gcc/ada/system-solaris-sparc.ads index fde9ef4f727..bc00976c5f9 100644 --- a/gcc/ada/system-solaris-sparc.ads +++ b/gcc/ada/system-solaris-sparc.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-solaris-sparcv9.ads b/gcc/ada/system-solaris-sparcv9.ads index bbbc9d16884..96686f52605 100644 --- a/gcc/ada/system-solaris-sparcv9.ads +++ b/gcc/ada/system-solaris-sparcv9.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-solaris-x86.ads b/gcc/ada/system-solaris-x86.ads index 4ddb7f6e082..57aeb8d8bf8 100644 --- a/gcc/ada/system-solaris-x86.ads +++ b/gcc/ada/system-solaris-x86.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-tru64.ads b/gcc/ada/system-tru64.ads index 01359e02962..e56ae595526 100644 --- a/gcc/ada/system-tru64.ads +++ b/gcc/ada/system-tru64.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-vms-ia64.ads b/gcc/ada/system-vms-ia64.ads index 8961dd005bf..57fece94076 100644 --- a/gcc/ada/system-vms-ia64.ads +++ b/gcc/ada/system-vms-ia64.ads @@ -133,7 +133,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-vms-zcx.ads b/gcc/ada/system-vms-zcx.ads index 6e019bb128d..5b4c3edb5d6 100644 --- a/gcc/ada/system-vms-zcx.ads +++ b/gcc/ada/system-vms-zcx.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-vms.ads b/gcc/ada/system-vms.ads index 58e9ea15d0c..4b6f1eacdad 100644 --- a/gcc/ada/system-vms.ads +++ b/gcc/ada/system-vms.ads @@ -116,7 +116,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-vms_64.ads b/gcc/ada/system-vms_64.ads index f3cb30d7ff4..17b1ab81504 100644 --- a/gcc/ada/system-vms_64.ads +++ b/gcc/ada/system-vms_64.ads @@ -133,7 +133,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := True; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-arm.ads b/gcc/ada/system-vxworks-arm.ads index 04027dd30f4..2c144afb6cd 100644 --- a/gcc/ada/system-vxworks-arm.ads +++ b/gcc/ada/system-vxworks-arm.ads @@ -129,7 +129,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-vxworks-m68k.ads b/gcc/ada/system-vxworks-m68k.ads index 8bee5983861..83bb9656b94 100644 --- a/gcc/ada/system-vxworks-m68k.ads +++ b/gcc/ada/system-vxworks-m68k.ads @@ -129,7 +129,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-vxworks-mips.ads b/gcc/ada/system-vxworks-mips.ads index bc07a3bc159..035e542cbaf 100644 --- a/gcc/ada/system-vxworks-mips.ads +++ b/gcc/ada/system-vxworks-mips.ads @@ -129,7 +129,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-ppc.ads b/gcc/ada/system-vxworks-ppc.ads index 8681e28b44d..d355bae9700 100644 --- a/gcc/ada/system-vxworks-ppc.ads +++ b/gcc/ada/system-vxworks-ppc.ads @@ -129,7 +129,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-vxworks-sparcv9.ads b/gcc/ada/system-vxworks-sparcv9.ads index 58f4f14ef12..5d15daa50a0 100644 --- a/gcc/ada/system-vxworks-sparcv9.ads +++ b/gcc/ada/system-vxworks-sparcv9.ads @@ -131,7 +131,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; diff --git a/gcc/ada/system-vxworks-x86.ads b/gcc/ada/system-vxworks-x86.ads index a16fde29fee..d028ca9103b 100644 --- a/gcc/ada/system-vxworks-x86.ads +++ b/gcc/ada/system-vxworks-x86.ads @@ -129,7 +129,7 @@ private -- of the individual switch values. Backend_Divide_Checks : constant Boolean := False; - Backend_Overflow_Checks : constant Boolean := False; + Backend_Overflow_Checks : constant Boolean := True; Command_Line_Args : constant Boolean := False; Configurable_Run_Time : constant Boolean := False; Denorm : constant Boolean := True; -- 2.30.2