exp_ch4.adb
295 KB
-
exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing for conversion… · 0669bebe
exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing for conversion of a Float_Type'Truncation to integer. 2007-04-06 Geert Bosch <bosch@adacore.com> Ed Schonberg <schonberg@adacore.com> Javier Miranda <miranda@adacore.com> Bob Duff <duff@adacore.com> * exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing for conversion of a Float_Type'Truncation to integer. * exp_attr.adb (Is_Inline_Floating_Point_Attribute): New function to check if a node is an attribute that can be handled directly by the back end. (Expand_N_Attribute_Reference): Suppress expansion of floating-point attributes that can be handled directly by the back end. (Expand_N_Attribute_Reference, case 'Access and 'Unchecked_Access): use new predicate Is_Access_Protected_Subprogram_Type. (Expand_N_Attribute_Reference, case 'Write): The reference is legal for and Unchecked_Union if it is generated as part of the default Output procedure for a type with default discriminants. (Expand_N_Attribute_Reference): Avoid the expansion of dispatching calls if we are compiling under restriction No_Dispatching_Calls. (Constrained): Use Underlying_Type, in case the type is private without discriminants, but the full type has discriminants. (Expand_N_Attribute_Reference): Replace call to Get_Access_Level by call to Build_Get_Access_Level. (Expand_N_Attribute_Reference): The use of 'Address with class-wide interface objects requires a call to the run-time subprogram that returns the base address of the object. (Valid_Conversion): Improve error message on illegal attempt to store an anonymous access to subprogram value into a record component. * sem_res.adb (Resolve_Equality_Op): Detect ambiguity for "X'Access = null". (Simplify_Type_Conversion): New procedure that performs simplification of Int_Type (Float_Type'Truncation (X)). (Resolve_Type_Conversion): Call above procedure after resolving operand and before performing checks. This replaces the existing ineffective code in Exp_Ch4. (Set_String_Literal_Subtype): When creating the internal static lower bound subtype for a string literal, use a newly created copy of the subtree representing the lower bound. (Resolve_Call): Exclude build-in-place function calls from transient scope treatment. Update comments to describe this exception. (Resolve_Equality_Op): In case of dispatching call check violation of restriction No_Dispatching_Calls. (Resolve_Call): If the call returns an array, the context imposes the component type of the array, and the function has one non-defaulted parameter, rewrite the call as the indexing of a call with a single parameter, to handle an Ada 2005 syntactic ambiguity for calls written in prefix form. (Resolve_Actuals): If an actual is an allocator for an access parameter, the master of the created object is the innermost enclosing statement. (Remove_Conversions): For a binary operator, check if type of second formal is numeric, to check if an abstract interpretation is present in the case of exponentiation as well. From-SVN: r123552
Geert Bosch committed