- 25 Apr, 2017 40 commits
-
-
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb: Minor reformatting. From-SVN: r247179
Hristian Kirtchev committed -
2017-04-25 Bob Duff <duff@adacore.com> * sem_prag.adb (No_Return): Give an error if the pragma applies to a body. Specialize the error for the specless body case, as is done for (e.g.) pragma Convention. * debug.adb: Add switch -gnatd.J to disable the above legality checks. This is mainly for use in our test suite, to avoid rewriting a lot of illegal (but working) code. It might also be useful to customers. Under this switch, if a pragma No_Return applies to a body, and the procedure raises an exception (as it should), the pragma has no effect. If the procedure does return, execution is erroneous. 2017-04-25 Bob Duff <duff@adacore.com> * exp_ch6.adb (Expand_Actuals): This is the root of the problem. It took N as an 'in out' parameter, and in some cases, rewrote N, but then set N to Original_Node(N). So the node returned in N had no Parent. The caller continued processing of this orphaned node. In some cases that caused a crash (e.g. Remove_Side_Effects climbs up Parents in a loop, and trips over the Empty Parent). The solution is to make N an 'in' parameter. Instead of rewriting it, return the list of post-call actions, so the caller can do the rewriting later, after N has been fully processed. (Expand_Call_Helper): Move most of Expand_Call here. It has too many premature 'return' statements, and we want to do the rewriting on return. (Insert_Post_Call_Actions): New procedure to insert the post-call actions in the appropriate place. In the problematic case, that involves rewriting N as an Expression_With_Actions. (Expand_Call): Call the new procedures Expand_Call_Helper and Insert_Post_Call_Actions. From-SVN: r247178
Bob Duff committed -
2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle properly type derived from generic formal types, to handle properly modified version of ACATS 4.1B B611017. 2017-04-25 Javier Miranda <miranda@adacore.com> * exp_unst.adb (Subp_Index): Adding missing support for renamings and functions that return a constrained array type (i.e. functions for which the frontend built a procedure with an extra out parameter). 2017-04-25 Pascal Obry <obry@adacore.com> * s-string.adb: Minor code clean-up. 2017-04-25 Bob Duff <duff@adacore.com> * s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New procedure. * adaint.h, adaint.c (__gnat_portable_no_block_wait): C support function for Non_Blocking_Wait_Process. 2017-04-25 Bob Duff <duff@adacore.com> * prep.adb (Preprocess): Remove incorrect Assert. Current character can be ASCII.CR. From-SVN: r247177
Arnaud Charlet committed -
2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for convention Stdcall, which has a number of exceptions. Convention is legal on a component declaration whose type is an anonymous access to subprogram. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch4.adb: sem_ch4.adb Various reformattings. (Try_One_Prefix_Interpretation): Use the base type when dealing with a subtype created for purposes of constraining a private type with discriminants. 2017-04-25 Javier Miranda <miranda@adacore.com> * einfo.ads, einfo.adb (Has_Private_Extension): new attribute. * warnsw.ads, warnsw.adb (All_Warnings): Set warning on late dispatching primitives (Restore_Warnings): Restore warning on late dispatching primitives (Save_Warnings): Save warning on late dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J to enable/disable this warning. (WA_Warnings): Set warning on late dispatching primitives. * sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember that its parent type has a private extension. * sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension): New subprogram. * usage.adb: Document -gnatw.j and -gnatw.J. From-SVN: r247176
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor reformatting. 2017-04-25 Bob Duff <duff@adacore.com> * binde.adb (Validate): Do not pass dynamic strings to pragma Assert, because older compilers do not support that. 2017-04-25 Bob Duff <duff@adacore.com> * s-fileio.adb (Close): When a temp file is closed, delete it and clean up its Temp_File_Record immediately, rather than waiting until later. (Temp_File_Record): Add File component, so Close can know which Temp_File_Record corresponds to the file being closed. (Delete): Don't delete temp files, because they are deleted by Close. (Open): Set the File component of Temp_File_Record. This requires moving the creation of the Temp_File_Record to the end, after the AFCB has been created. From-SVN: r247175
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * checks.adb (Insert_Valid_Check): Do not generate a validity check when inside a generic. 2017-04-25 Yannick Moy <moy@adacore.com> * sem_res.adb (Resolve_Type_Conversion): Fix bad logic. 2017-04-25 Arnaud Charlet <charlet@adacore.com> * snames.ads-tmpl (Snames): More names for detecting predefined potentially blocking subprograms. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Analyze_Pre_Post_Condition): The rules concerning inheritance of class-wide preconditions do not apply to postconditions. 2017-04-25 Bob Duff <duff@adacore.com> * s-ficobl.ads: Minor comment fix. From-SVN: r247174
Arnaud Charlet committed -
checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to integer in GNATprove mode. 2017-04-25 Yannick Moy <moy@adacore.com> * checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to integer in GNATprove mode. (Apply_Type_Conversion_Checks): Make sure in GNATprove mode to call Apply_Type_Conversion_Checks, so that range checks are properly positioned when needed on conversions, including when converting from float to integer. (Determine_Range): In GNATprove mode, take into account the possibility of conversion from float to integer. * sem_res.adb (Resolve_Type_Conversion): Only enforce range check on conversions from fixed-point to integer, not anymore on conversions from floating-point to integer, when in GNATprove mode. From-SVN: r247173
Yannick Moy committed -
checks.adb (Determine_Range_R): Special case type conversions from integer to float in order to get bounds in... 2017-04-25 Yannick Moy <moy@adacore.com> * checks.adb (Determine_Range_R): Special case type conversions from integer to float in order to get bounds in that case too. * eval_fat.adb (Machine): Avoid issuing warnings in GNATprove mode, for computations involved in interval checking. From-SVN: r247172
Yannick Moy committed -
2017-04-25 Richard Biener <rguenther@suse.de> PR middle-end/80509 * passes.c (pass_manager::pass_manager): Initialize m_name_to_pass_map. From-SVN: r247171
Richard Biener committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * checks.adb (Insert_Valid_Check): Partially reimplement validity checks. * einfo.adb Node36 is now used as Validated_Object. (Validated_Object): New routine. (Set_Validated_Object): New routine. (Write_Field36_Name): Add an entry for Validated_Object. * einfo.ads Add new attribute Validated_Object along with usage in entities. (Validated_Object): New routine along with pragma Inline. (Set_Validated_Object): New routine along with pragma Inline. * exp_attr.adb (Make_Range_Test): Add processing for validation variables to avoid extra reads and copies of the prefix. * exp_ch6.adb (Expand_Actuals): Add copy-back for validation variables in order to reflect any changes done in the variable back into the original object. * sem_util.adb (Is_Validation_Variable_Reference): New routine. * sem_util.ads (Is_Validation_Variable_Reference): New routine. 2017-04-25 Steve Baird <baird@adacore.com> * exp_ch7.adb (Build_Array_Deep_Procs, Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't generate Finalize_Address routines for CodePeer. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of Analyze_Pre_Post_Condition, to implement the legality checks mandated by AI12-0131: Pre'Class shall not be specified for an overriding primitive subprogram of a tagged type T unless the Pre'Class aspect is specified for the corresponding primitive subprogram of some ancestor of T. From-SVN: r247170
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * sem_ch8.adb (Use_One_Type): If a use_type_clause is redundant, set its Used_Operations to empty. This is only necessary for use clauses that appear in the parent of a generic child unit, because those use clauses get reanalyzed when we instantiate the generic, and we don't want the Used_Operations carried over from the original context (where it was probably not redundant). 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch6.adb: Minor reformatting. From-SVN: r247169
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Use Source_Index (Current_Sem_Unit) to find the correct casing. * exp_prag.adb (Expand_Pragma_Check): Use Source_Index (Current_Sem_Unit) to find the correct casing. * par.adb (Par): Null out Current_Source_File, to ensure that the above bugs won't rear their ugly heads again. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Find_Type): For an attribute reference 'Class, if prefix type is synchronized and previous errors have suppressed the creation of the corresponding record type, create a spurious class-wide for the synchonized type itself, to catch other misuses of the attribute 2017-04-25 Steve Baird <baird@adacore.com> * exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode is True, then don't generate the accessibility check for the tag of a tagged result. * exp_intr.adb (Expand_Dispatching_Constructor_Call): if CodePeer_Mode is True, then don't generate the tag checks for the result of call to an instance of Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a descendant of" check and the accessibility check). 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch13.adb: Code cleanups. * a-strbou.ads: minor whitespace fix in Trim for bounded strings. * sem_ch8.ads: Minor comment fix. From-SVN: r247168
Arnaud Charlet committed -
2017-04-25 Eric Botcazou <ebotcazou@adacore.com> * exp_ch4.adb (Library_Level_Target): New function. (Expand_Concatenate): When optimization is enabled, also expand the operation out-of-line if the concatenation is present within the expression of the declaration of a library-level object and not only if it is the expression of the declaration. 2017-04-25 Bob Duff <duff@adacore.com> * freeze.adb (Freeze_Object_Declaration): Do not Remove_Side_Effects if there is a pragma Linker_Section, because in that case we want static initialization in the appropriate section. 2017-04-25 Gary Dismukes <dismukes@adacore.com> * exp_dbug.adb: Minor rewording and reformatting. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Statically_Denotes_Object): New predicate, to handle the proposed changes to rules concerning potentially unevaluated expressions, to include selected components that do not depend on discriminants, and indexed components with static indices. * sem_util.adb (Is_Potentially_Unevaluated): Add check for predicate in quantified expression, and fix bugs in the handling of case expressions and membership test. (Analyze_Attribute_Old_Result): use new predicate. (Analyze_Attribute, case Loop_Entry): ditto. From-SVN: r247167
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * s-secsta.adb (SS_Info): Add a comment explaining why we don't need to walk all the chunks in order to compute the total size. 2017-04-25 Bob Duff <duff@adacore.com> * namet.ads, namet.adb (Global_Name_Buffer): Increase the length of the global name buffer to 4*Max_Line_Length. 2017-04-25 Javier Miranda <miranda@adacore.com> * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a renaming entity for debug information, mark the entity as needing debug info if it comes from sources. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the restriction converning the use of 'Address where the prefix is of a controlled type. 2017-04-25 Pierre-Marie de Rodat <derodat@adacore.com> * exp_dbug.adb: In Debug_Renaming_Declaration, skip slices that are made redundant by an indexed component access. * atree.h: New definition for Original_Node. From-SVN: r247166
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb, sem_prag.ads: Minor reformatting. From-SVN: r247165
Hristian Kirtchev committed -
From-SVN: r247164
Arnaud Charlet committed -
sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolution takes place as well. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolution takes place as well. * sem_util.adb (Check_Internal_Protected_Use): Reject properly internal calls that appear in preconditions of protected operations, in default values for same, and in contract guards for contract cases in SPARK. From-SVN: r247163
Ed Schonberg committed -
2017-04-25 Eric Botcazou <ebotcazou@adacore.com> * a-numaux.ads: Fix description of a-numaux-darwin and a-numaux-x86. (Double): Define to Long_Float. * a-numaux-vxworks.ads (Double): Likewise. * a-numaux-darwin.ads (Double): Likewise. * a-numaux-libc-x86.ads (Double): Define to Long_Long_Float. * a-numaux-x86.ads: Fix package description. * a-numaux-x86.adb (Is_Nan): Minor tweak. (Reduce): Adjust and complete description. Call Is_Nan instead of testing manually. Use an integer temporary to hold rounded value. * a-numaux-darwin.adb (Reduce): Likewise. (Is_Nan): New function. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Analyze_Selected_Component): Additional refinement on analysis of prefix whose type is a current instance of a synchronized type, but where the prefix itself is an entity that is an object. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve the identity of callable entities therein, because they have been properly resolved, and prefixed calls may have been rewritten as normal calls. 2017-04-25 Patrick Bernardi <bernardi@adacore.com> * exp_ch3.adb (Build_Init_Statements): Convert the expression of the pragma/aspect Secondary_Stack_Size to internal type System.Parameters.Size_Type before assigning it to the Secondary_Stack_Size component of the task type's corresponding record. 2017-04-25 Eric Botcazou <ebotcazou@adacore.com> * sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal (etc) optimizations when the type is modular and the offsets are equal. 2017-04-25 Eric Botcazou <ebotcazou@adacore.com> * s-osinte-freebsd.ads: Minor comment tweaks 2017-04-25 Javier Miranda <miranda@adacore.com> * urealp.adb (UR_Write): Reverse previous patch adding documentation on why we generate multiplications instead of divisions (needed to avoid expressions whose computation with large numbers may cause division by 0). 2017-04-25 Bob Duff <duff@adacore.com> * erroutc.adb (Set_Specific_Warning_Off, Set_Warnings_Mode_Off): Use the correct source file for Stop. Was using Current_Source_File, which is only valid during parsing. Current_Source_File will have a leftover value from whatever file happened to be parsed last, because of a with_clause or something. 2017-04-25 Bob Duff <duff@adacore.com> * lib.ads, lib.adb (In_Internal_Unit): New functions similar to In_Predefined_Unit, but including GNAT units. * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem, because Should_Ignore_Pragma was not working reliably outside the parser, because Current_Source_File is not valid. * sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem. * par-prag.adb: Call Should_Ignore_Pragma_Par. From-SVN: r247162
Arnaud Charlet committed -
From-SVN: r247161
Arnaud Charlet committed -
* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in codepeer mode. 2017-04-25 Javier Miranda <miranda@adacore.com> * urealp.adb (UR_Write): Fix output of constants with a base other that 10. 2017-04-25 Justin Squirek <squirek@adacore.com> * sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb. * sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface): Add extra parameter for Process_Interface_Name. (Process_Interface_Name): Add parameter for pragma to analyze corresponding aspect. * sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added from sem_ch13.adb From-SVN: r247160
Arnaud Charlet committed -
re PR tree-optimization/79201 (missed optimization: sinking doesn't handle calls, swap PRE and sinking) 2017-04-25 Richard Biener <rguenther@suse.de> PR tree-optimization/79201 * tree-ssa-sink.c (statement_sink_location): Handle calls. * gcc.dg/tree-ssa/ssa-sink-16.c: New testcase. * gcc.target/i386/pr22152.c: Disable sinking. From-SVN: r247159
Richard Biener committed -
From-SVN: r247158
Arnaud Charlet committed -
2017-04-25 Gary Dismukes <dismukes@adacore.com> * exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo correction. 2017-04-25 Yannick Moy <moy@adacore.com> * sem_res.adb (Resolve_Comparison_Op): Do not attempt evaluation of relational operations inside assertions. 2017-04-25 Justin Squirek <squirek@adacore.com> * exp_util.adb (Add_Interface_Invariants): Restored, code moved back from Build_Invariant_Procedure_Body. (Add_Parent_Invariants): Restored, code moved back from Build_Invariant_Procedure_Body. (Build_Invariant_Procedure_Body): Remove refactored calls and integrated code from Add_Parent_Invariants and Add_Interface_Invariants. 2017-04-25 Johannes Kanig <kanig@adacore.com> * errout.adb (Output_Messages): Adjust computation of total errors * erroutc.adb (Error_Msg): In statistics counts, deal correctly with informational messages that are not warnings. * errutil.adb (Finalize): adjust computation of total errors. 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek> * terminals.c (__gnat_terminate_pid): New. * g-exptty.ads (Terminate_Process): New. Update comments. From-SVN: r247157
Arnaud Charlet committed -
2017-04-25 Arnaud Charlet <charlet@adacore.com> * a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract. 2017-04-25 Justin Squirek <squirek@adacore.com> * sem_ch3.adb (Analyze_Declarations): Minor correction to comments, move out large conditional and scope traversal into a predicate. (Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted logic. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Analyze_Selected_Component): Refine analysis of prefix whose type is a current instance of a synchronized type. If the prefix is an object this is an external call (or requeue) that can only access public operations of the object. The previous predicate was too restrictive, and did not allow public protected operations, only task entries. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch5.adb, fname.adb: Minor reformatting. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * einfo.adb (Is_Anonymous_Access_Type): New routine. * einfo.ads Update the placement of E_Anonymous_Access_Subprogram_Type along with all subtypes that mention the ekind. (Is_Anonymous_Access_Type): New routine. * exp_ch7.adb (Allows_Finalization_Master): Do not generate a master for an access type subject to pragma No_Heap_Finalization. * exp_util.adb (Build_Allocate_Deallocate_Proc): An object being allocated or deallocated does not finalization actions if the associated access type is subject to pragma No_Heap_Finalization. * opt.ads Add new global variable No_Heap_Finalization_Pragma. * par-prag.adb Pragma No_Heap_Finalization does not need special processing from the parser. * sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient ??? comments. Use the new predicate Is_Anonymous_Access_Type. * sem_prag.adb Add an entry in table Sig_Flags for pragma No_Heap_Finalization. (Analyze_Pragma): Add processing for pragma No_Heap_Finalization. Update various error messages to use Duplication_Error. * sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine. * snames.ads-tmpl: Add new predefined name No_Heap_Finalization and corresponding pragma id. From-SVN: r247156
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * freeze.adb (Freeze_Record_Type): Use the underlying type of the component type to determine whether it's elementary. For representation clause purposes, a private type should behave the same as its full type. * fname.ads, fname.adb (Is_Predefined_File_Name): Make sure things like "system.ali" are recognized as predefined. 2017-04-25 Javier Miranda <miranda@adacore.com> * debug.adb: Update documentation of -gnatd.6. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012 element iterator when the name is an overloaded function call, one of whose interpretations yields an array. From-SVN: r247155
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * uname.ads, uname.adb (Is_Predefined_Unit_Name, Is_Internal_Unit_Name): New functions for operating on unit names, as opposed to file names. There's some duplicated code with fname.adb, which is unfortunate, but it seems like we don't want to add dependencies here. * fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name to Is_Predefined_Unit_Name; the former was wrong, because Uname is not a file name at all. * fname.ads, fname.adb: Document the fact that Is_Predefined_File_Name and Is_Internal_File_Name can be called for ALI files, and fix the code so it works properly for ALI files. E.g. these should return True for "system.ali". 2017-04-25 Justin Squirek <squirek@adacore.com> * exp_util.adb (Add_Invariant): Removed, code moved to Add_Invariant_Check, Add_Inherited_Invariant, and Add_Own_Invariant. (Add_Invariant_Check): Used for adding runtime checks from any kind of invariant. (Add_Inherited_Invariant): Generates invariant checks for class-wide invariants (Add_Interface_Invariants): Removed, code moved to Build_Invariant_Procedure_Body (Add_Own_Invariant): Create a types own invariant procedure (Add_Parent_Invariants): Removed, code moved to Build_Invariant_Procedure_Body (Build_Invariant_Procedure_Body): Add refactored calls and integrated code from Add_Parent_Invariants and Add_Interface_Invariants. (Process_Type): Removed, the relavant code was inlined into both Add_Own_Invariant and Add_Inherited_Invariant. From-SVN: r247154
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb, scn.adb, osint.adb, fname.adb: Minor reformatting. 2017-04-25 Pascal Obry <obry@adacore.com> * s-taprop-mingw.adb: Do not check for CloseHandle in Finalize_TCB. From-SVN: r247153
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_util.adb (Check_Part_Of_Reference): Continue to examine the context if the reference appears within an expression function. 2017-04-25 Justin Squirek <squirek@adacore.com> * exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body and Build_Invariant_Procedure_Declaration. * exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body and Build_Invariant_Procedure_Declaration from exp_ch7 and break-out Is_Untagged_Private_Derivation from Build_Invariant_Procedure_Body. (Replace_Type_References): Append an extra parameter to allow for dispatching replacements and add the corrasponding logic. (Type_Invariant): Remove Replace_Typ_Refs and replace its references with calls to Replace_Type_References. * sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7. From-SVN: r247152
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function that returns True when appropriate. * par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas when compiling predefined files. * fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug: "gnat.adc" should not be considered a predefined file name. That required (or at least encouraged) a lot of cleanup of global variable usage. We shouldn't be communicating information via the global name buffer. * bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb, * restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes required by the above-mentioned cleanup. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * osint.adb (Find_File): Handle properly a request for a configuration file whose name is a directory. From-SVN: r247151
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_attr.adb, sem_ch5.adb: Minor reformatting. 2017-04-25 Bob Duff <duff@adacore.com> * types.ads: Minor: Fix '???' comment. * sem_ch8.adb: Minor comment fix. 2017-04-25 Bob Duff <duff@adacore.com> * sem_prag.adb: Remove suspicious uses of Name_Buf. * stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove Add_String_To_Name_Buffer, to avoid using the global Name_Buf. Add String_To_Name with no side effects. 2017-04-25 Justin Squirek <squirek@adacore.com> * sem_ch3.adb (Analyze_Declarations): Add additional condition for edge case. 2017-04-25 Bob Duff <duff@adacore.com> * par-ch2.adb, scans.ads, scn.adb: Do not give an error for reserved words inside pragmas. This is necessary to allow the pragma name Interface to be used in pragma Ignore_Pragma. * par.adb: Minor comment fix. 2017-04-25 Javier Miranda <miranda@adacore.com> * a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract. * rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract. * exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract. * exp_intr.adb (Expand_Dispatching_Constructor_Call): Update occurrences of RE_Type_Is_Abstract 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb (Build_Chain): Account for ancestor subtypes while traversing the derivation chain. From-SVN: r247150
Arnaud Charlet committed -
2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb: minor reformatting. 2017-04-25 Doug Rupp <rupp@adacore.com> * sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on the first pass over an assignment statement with target names, to prevent the generation of subtypes (such as discriminated record components)that may carry the target name outside of the tree for the assignment. The subtypes will be generated when the assignment is reanalyzed in full. (Analyze_Target_Name): Handle properly class-wide types. From-SVN: r247149
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * elists.ads, elists.adb (Prepend_Unique_Elmt): New routine. * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for the purposes of freezing. * exp_util.adb Update the documentation and structure of the type map used in class-wide semantics of assertion expressions. (Add_Inherited_Tagged_DIC): There is really no need to preanalyze and resolve the triaged expression because all substitutions refer to the proper entities. Update the replacement of references. (Build_DIC_Procedure_Body): Add formal parameter For_Freeze. Add local variable Build_Body. Inherited DIC pragmas are now only processed when freezing occurs. Build a body only when one is needed. (Entity_Hash): Removed. (Map_Types): New routine. (Replace_Object_And_Primitive_References): Removed. (Replace_References): New routine. (Replace_Type_References): Moved to the library level of Exp_Util. (Type_Map_Hash): New routine. (Update_Primitives_Mapping): Update the mapping call. (Update_Primitives_Mapping_Of_Types): Removed. * exp_util.ads (Build_DIC_Procedure_Body): Add formal parameter For_Freeze and update the comment on usage. (Map_Types): New routine. (Replace_References): New routine. (Replace_Type_References): Moved to the library level of Exp_Util. (Update_Primitives_Mapping_Of_Types): Removed. * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC properties of the private type to the full view in case the full view derives from a parent type and inherits a DIC pragma. * sem_prag.adb (Analyze_Pragma): Guard against a case where a DIC pragma is placed at the top of a declarative region. 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek> * a-tasatt.adb: Complete previous change and use an unsigned int to avoid overflow checks. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Analyze_Attribute, case 'Access): Specialize the error message when the attribute reference is an actual in a call to a subprogram inherited from a generic formal type with unknown discriminants, which makes the subprogram and its formal parameters intrinsic (see RM 6.3.1 (8) and (13)). From-SVN: r247148
Arnaud Charlet committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb, sem_prag.adb: Minor reformatting. 2017-04-25 Bob Duff <duff@adacore.com> * sem_attr.adb (Type_Key): Add code in the recursive Compute_Type_Key to protect against fetching the source code for Standard, in case a component of the type is declared in Standard. There was already code to do this for the original type, but not for its components. From-SVN: r247147
Arnaud Charlet committed -
2017-04-25 Javier Miranda <miranda@adacore.com> * exp_ch3.adb (Build_Initialization_Call): Handle subtypes of private types when searching for the underlying full view of a private type. 2017-04-25 Javier Miranda <miranda@adacore.com> * sem_res.adb (Set_Mixed_Mode_Operand): A universal real conditional expression can appear in a fixed-type context and must be resolved with that context to facilitate the code generation to the backend. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag, to indicate whether during inline processing, when some unit U1 appears in the context of a unit U2 compiled for instantiation or inlining purposes, the body of U1 needs to be compiled as well. * sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if context is a package declaration. * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration, Analyze_Generic_Package_Declaration): ditto. * inline.adb (Analyze_Inlined_Bodies): Check Body_Needed_For_Inlining. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * par.adb (Current_Assign_Node): Global variable use to record the presence of a target_name in the right hand side of the assignment being parsed. * par-ch4.adb (P_Name): If the name is a target_name, mark the enclosing assignment node accordingly. * par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node appropriately. * sem_ch5.adb (Analyze_Assignment): Disable expansion before analyzing RHS if the statement has target_names. * sem_aggr.adb (Resolve_Iterated_Component_Association): Handle properly choices that are subtype marks. * exp_ch5.adb: Code cleanup. 2017-04-25 Bob Duff <duff@adacore.com> * s-memory.adb: Add a comment regarding efficiency. * atree.adb: Fix the assertion, and combine 2 assertions into one, "the source has an extension if and only if the destination does." * sem_ch3.adb, sem_ch13.adb: Address ??? comments. 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek> * a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits conversion. 2017-04-25 Doug Rupp <rupp@adacore.com> * init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp handling for ppc64-vx7. * sigtramp-vxworks-target.inc [SIGTRAMP_BODY]: Add section for ppc64-vx7. From-SVN: r247146
Arnaud Charlet committed -
From-SVN: r247145
Arnaud Charlet committed -
2017-04-25 Bob Duff <duff@adacore.com> * uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch Direct_Val (Right), instead of the incorrect Direct_Val (Left). (UI_GCD): Remove ??? comment involving possible efficiency improvements. This just isn't important after all these years. Also minor cleanup. * uintp.ads: Minor cleanup. From-SVN: r247144
Bob Duff committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb: Revert previous changes. * scng.adb: Minor reformatting. * s-stratt.ads: Fix unbalanced parens in comment. From-SVN: r247143
Hristian Kirtchev committed -
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb: Minor reformatting. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * scng.adb (Scan): Handle '@' appropriately. * sem_ch5.adb: Code cleanup. From-SVN: r247142
Arnaud Charlet committed -
2017-04-25 Ed Schonberg <schonberg@adacore.com> * freeze.adb (Check_Expression_Function): Do not check for the use of deferred constants if the freezing of the expression function is triggered by its generated body, rather than a premature use. 2017-04-25 Javier Miranda <miranda@adacore.com> * exp_attr.adb (Rewrite_Stream_Proc_Call): Handle subtypes of private types when performing the view conversion. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch3.adb (Freeze_Type): Signal the DIC body is created for the purposes of freezing. * exp_util.adb Update the documentation and structure of the type map used in class-wide semantics of assertion expressions. (Add_Inherited_Tagged_DIC): There is really no need to preanalyze and resolve the triaged expression because all substitutions refer to the proper entities. Update the replacement of references. (Build_DIC_Procedure_Body): Add formal parameter For_Freeze. Add local variable Build_Body. Inherited DIC pragmas are now only processed when freezing occurs. Build a body only when one is needed. (Entity_Hash): Removed. (Map_Types): New routine. (Replace_Object_And_Primitive_References): Removed. (Replace_References): New routine. (Replace_Type_References): Moved to the library level of Exp_Util. (Type_Map_Hash): New routine. (Update_Primitives_Mapping): Update the mapping call. (Update_Primitives_Mapping_Of_Types): Removed. * exp_util.ads (Build_DIC_Procedure_Body): Add formal parameter For_Freeze and update the comment on usage. (Map_Types): New routine. (Replace_References): New routine. (Replace_Type_References): Moved to the library level of Exp_Util. (Update_Primitives_Mapping_Of_Types): Removed. * sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC properties of the private type to the full view in case the full view derives from a parent type and inherits a DIC pragma. * sem_prag.adb (Analyze_Pragma): Guard against a case where a DIC pragma is placed at the top of a declarative region. From-SVN: r247141
Arnaud Charlet committed -
2017-04-25 Tristan Gingold <gingold@adacore.com> * s-mmap.ads (Data): Add pragma Inline. 2017-04-25 Hristian Kirtchev <kirtchev@adacore.com> * checks.adb (Insert_Valid_Check): Do not use a renaming to alias a volatile name because this will lead to multiple evaluations of the volatile name. Use a constant to capture the value instead. 2017-04-25 Doug Rupp <rupp@adacore.com> * init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7. 2017-04-25 Ed Schonberg <schonberg@adacore.com> * exp_util.adb, exp_util.ads (Build_Class_Wide_Expression): Add out parameter to indicate to caller that a wrapper must be constructed for an inherited primitive whose inherited pre/postcondition has called to overridden primitives. * freeze.adb (Check_Inherited_Conditions): Build wrapper body for inherited primitive that requires it. * sem_disp.adb (Check_Dispatching_Operation): Such wrappers are legal primitive operations and belong to the list of bodies generated after the freeze point of a type. * sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature of Build_Class_Wide_Expression. * sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure to construct the specification of the wrapper subprogram created for an inherited operation. From-SVN: r247140
Arnaud Charlet committed
-