2017-01-13 Justin Squirek <squirek@adacore.com>
* sem_ch12.adb (Analyze_Package_Instantiation): Move disabiling
of the style check until after preanalysis of acutals.
2017-01-13 Yannick Moy <moy@adacore.com>
* sem_ch13.adb: Minor reformatting.
* par-ch11.adb: minor style fix in whitespace
* gnatbind.adb (Gnatbind): Scope of Std_Lib_File
reduced to Add_Artificial_ALI_File; style fix in declaration of
Text; grammar fix in comment.
* osint-c.adb (Read_Library_Info): strip trailing NUL from result.
* freeze.adb: Cleanup to pass pragma instead of
expression to call.
* exp_spark.adb (Expand_SPARK_Attribute_Reference): New procedure to
replace System'To_Address by equivalent call.
From-SVN: r244401
2017-01-13 Arnaud Charlet <charlet@adacore.com>
* bindusg.adb: Improve usage output for -f switch.
2017-01-13 Hristian Kirtchev <kirtchev@adacore.com>
* frontend.adb, freeze.adb, sem_res.adb, sem_attr.adb, sem_ch8.adb:
Minor reformatting.
2017-01-13 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Is_Predicate_Static): Following the intent of the RM,
treat comparisons on strings as legal in a Static_Predicate.
(Is_Predicate_Static, Is_Type_Ref): Predicate also returns true on
a function call that is the expansion of a string comparison.The
function call is built when compiling the corresponding predicate
function, but the expression has been found legal as a static
predicate during earlier analysis.
* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Handle
properly a function call that is the expansion of a string
comparison operation, in order to recover the Static_Predicate
expression and apply it to a static argument when needed.
From-SVN: r244400
2017-01-13 Tristan Gingold <gingold@adacore.com>
* s-mmap.adb, s-mmap.ads (Open_Read_No_Exception): New function.
(Open_Read): Re-implement using Open_Read_No_Exception.
(Open_Write): Raise exception in case of error.
* s-mmosin-mingw.adb (Open_Common): Do not raise exception.
* s-mmosin-unix.adb (Open_Read, Open_Write): Do not
reaise exception.
* s-mmosin-mingw.ads, s-mmosin-unix.ads (Open_Read): Adjust comment.
2017-01-13 Yannick Moy <moy@adacore.com>
* checks.adb: Code cleanup.
2017-01-13 Yannick Moy <moy@adacore.com>
* freeze.adb (Check_Inherited_Conditions): Use analyzed pragma
expression instead of unanalyzed aspect expression for checking
the validity of inheriting an operation. Also copy the expression
being passing it to Build_Class_Wide_Expression, as this call
modifies its argument.
* sem_util.ads Fix comment to reference correct function name
New_Copy_Tree.
2017-01-13 Javier Miranda <miranda@adacore.com>
* sem_res.adb (Resolve_Generalized_Indexing): Compiling in ASIS mode,
when we propagate information about the indexes back to the original
indexing mode and the prefix of the index is a function call, do not
remove any parameter from such call.
2017-01-13 Gary Dismukes <dismukes@adacore.com>
* exp_ch6.ads (Needs_BIP_Finalization_Master): Update comment.
* exp_ch6.adb (Needs_BIP_Finalization_Master): Return True for
a build-in-place function whose result type is tagged.
2017-01-13 Yannick Moy <moy@adacore.com>
* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
Do not generate a wrapper when the only candidate is a class-wide
subprogram.
(Analyze_Subprogram_Renaming): Do not freeze the renaming or renamed
inside a generic context.
From-SVN: r244399
2017-01-13 Hristian Kirtchev <kirtchev@adacore.com>
* exp_util.adb (Add_Inherited_Tagged_DIC):
Pass the object parameters of both the parent and the derived
type DIC procedure to the reference replacement circuitry.
(Find_DIC_Type): Modify the circuitry to present the partial
view of a private type in case the private type defines its own
DIC pragma.
(Replace_Object_And_Primitive_References): Add two
optional formal parameters. Update the comment on usage. Update
the replacement of references to object parameters.
2017-01-13 Gary Dismukes <dismukes@adacore.com>
* einfo.adb, sem_ch6.adb, atree.adb: Minor reformatting and typo fix.
2017-01-13 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve_Actuals): Apply Scalar_Range_Check to
an out parameter that is a type conversion, independently of th
range check that may apply to the expression of the conversion,
for use in GNATProve.
2017-01-13 Yannick Moy <moy@adacore.com>
* gnat1drv.adb (Gnat1drv): Move the implicit with for System in
GNATprove_Mode here to Frontend.
* frontend.adb (Frontend): Move the implicit with for System
in GNATprove_Mode here as it ismore correct this way; the old
place only worked by chance, since there were no overloaded names.
* rtsfind.ads (RE_Id, RE_Unit_Table): Add RE_Tasking_State.
* sem_attr.adb (Analyze_Attribute): In GNATprove_Mode, for the
four attributes identified in SRM 9(18), add an implicit with
to Ada.Task_Identification.
* sem_ch8.adb (Analyze_Subprogram_Renaming.Build_Class_Wide_Wrapper):
Deal specially with the wrapper introduced for AI05-0071 in GNATprove
mode.
* checks.adb (Apply_Discriminant_Check,
Apply_Selected_Length_Checks, Apply_Selected_Range_Checks):
In GNATprove mode, we do not apply the checks, but we still
analyze the expression to possibly issue errors on SPARK
code when a run-time error can be detected at compile time.
(Selected_Length_Checks, Selected_Range_Checks): Perform analysis
in GNATprove mode.
From-SVN: r244398
2017-01-13 Hristian Kirtchev <kirtchev@adacore.com>
* expander.adb (Expand): Add a warning about using return
statements in Ghost management code.
* exp_ch3.adb (Freeze_Type): Add a warning about using return
statements in Ghost management code.
* exp_ch7.adb (Build_Invariant_Procedure_Body,
Build_Invariant_Procedure_Declaration): Add a warning about
using return statements in Ghost management code.
* exp_disp.adb (Make_DT): Add a warning about using return
statements in Ghost management code.
* exp_util.adb (Build_DIC_Procedure_Body,
Build_DIC_Procedure_Declaration, Make_Predicated_Call): Add a
warning about using return statements in Ghost management code.
* freeze.adb (Freeze_Entity): Add a warning about using return
statements in Ghost management code.
* sem.adb (Analyze, Do_Analyze): Add a warning about using return
statements in Ghost management code.
* sem_ch3.adb (Analyze_Object_Declaration, Process_Full_View): Add
a warning about using return statements in Ghost management code.
* sem_ch5.adb (Analyze_Assignment): Add a warning about using
return statements in Ghost management code.
* sem_ch6.adb (Analyze_Procedure_Call,
Analyze_Subprogram_Body_Helper): Add a warning about using return
statements in Ghost management code.
* sem_ch7.adb (Analyze_Package_Body_Helper): Add a warning about
using return statements in Ghost management code.
* sem_ch12.adb (Analyze_Package_Instantiation,
Analyze_Subprogram_Instantiation, Instantiate_Package_Body,
Instantiate_Subprogram_Body): Add a warning about using return
statements in Ghost management code.
* sem_ch13.adb (Build_Predicate_Functions,
Build_Predicate_Function_Declarations): Add a warning about
using return statements in Ghost management code.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part,
Analyze_Initial_Condition_In_Decl_Part, Analyze_Pragma,
Analyze_Pre_Post_Condition_In_Decl_Part): Add a warning about
using return statements in Ghost management code.
2017-01-13 Tristan Gingold <gingold@adacore.com>
* s-mmosin-mingw.adb: Fix pragma import.
2017-01-13 Arnaud Charlet <charlet@adacore.com>
* gnat1drv.adb (Adjust_Global_Switches): Ignore -gnateE in
codepeer mode.
From-SVN: r244396
2017-01-13 Hristian Kirtchev <kirtchev@adacore.com>
* atree.adb (Allocate_Initialize_Node): A newly created node is
no longer marked as Ghost at this level.
(Mark_New_Ghost_Node): New routine.
(New_Copy): Mark the copy as Ghost.
(New_Entity): Mark the entity as Ghost.
(New_Node): Mark the node as Ghost.
* einfo.adb (Is_Checked_Ghost_Entity): This attribute can now
apply to unanalyzed entities.
(Is_Ignored_Ghost_Entity): This attribute can now apply to unanalyzed
entities.
(Set_Is_Checked_Ghost_Entity): This attribute now
applies to all entities as well as unanalyzed entities.
(Set_Is_Ignored_Ghost_Entity): This attribute now applies to
all entities as well as unanalyzed entities.
* expander.adb Add with and use clauses for Ghost.
(Expand): Install and revert the Ghost region associated with the node
being expanded.
* exp_ch3.adb (Expand_Freeze_Array_Type): Remove all Ghost-related code.
(Expand_Freeze_Class_Wide_Type): Remoe all Ghost-related code.
(Expand_Freeze_Enumeration_Type): Remove all Ghost-related code.
(Expand_Freeze_Record_Type): Remove all Ghost-related code.
(Freeze_Type): Install and revert the Ghost region associated
with the type being frozen.
* exp_ch5.adb Remove with and use clauses for Ghost.
(Expand_N_Assignment_Statement): Remove all Ghost-related code.
* exp_ch6.adb Remove with and use clauses for Ghost.
(Expand_N_Procedure_Call_Statement): Remove all Ghost-relatd code.
(Expand_N_Subprogram_Body): Remove all Ghost-related code.
* exp_ch7.adb (Build_Invariant_Procedure_Body): Install and revert the
Ghost region of the working type.
(Build_Invariant_Procedure_Declaration): Install and revert
the Ghost region of the working type.
(Expand_N_Package_Body): Remove all Ghost-related code.
* exp_ch8.adb Remove with and use clauses for Ghost.
(Expand_N_Exception_Renaming_Declaration): Remove all Ghost-related
code.
(Expand_N_Object_Renaming_Declaration): Remove all Ghost-related code.
(Expand_N_Package_Renaming_Declaration): Remove all Ghost-related code.
(Expand_N_Subprogram_Renaming_Declaration): Remove all Ghost-related
code.
* exp_ch13.adb Remove with and use clauses for Ghost.
(Expand_N_Freeze_Entity): Remove all Ghost-related code.
* exp_disp.adb (Make_DT): Install and revert the Ghost region of
the tagged type. Move the generation of various entities within
the Ghost region of the type.
* exp_prag.adb Remove with and use clauses for Ghost.
(Expand_Pragma_Check): Remove all Ghost-related code.
(Expand_Pragma_Contract_Cases): Remove all Ghost-related code.
(Expand_Pragma_Initial_Condition): Remove all Ghost-related code.
(Expand_Pragma_Loop_Variant): Remove all Ghost-related code.
* exp_util.adb (Build_DIC_Procedure_Body): Install
and revert the Ghost region of the working types.
(Build_DIC_Procedure_Declaration): Install and revert the
Ghost region of the working type.
(Make_Invariant_Call): Install and revert the Ghost region of the
associated type.
(Make_Predicate_Call): Reimplemented. Install and revert the
Ghost region of the associated type.
* freeze.adb (Freeze_Entity): Install and revert the Ghost region
of the entity being frozen.
(New_Freeze_Node): Removed.
* ghost.adb Remove with and use clauses for Opt.
(Check_Ghost_Completion): Update the parameter profile
and all references to formal parameters.
(Ghost_Entity): Update the comment on usage.
(Install_Ghost_Mode): New routines.
(Is_Ghost_Assignment): New routine.
(Is_Ghost_Declaration): New routine.
(Is_Ghost_Pragma): New routine.
(Is_Ghost_Procedure_Call): New routine.
(Is_Ghost_Renaming): Removed.
(Is_OK_Declaration): Reimplemented.
(Is_OK_Pragma): Reimplemented.
(Is_OK_Statement): Reimplemented.
(Is_Subject_To_Ghost): Update the comment on usage.
(Mark_And_Set_Ghost_Assignment): New routine.
(Mark_And_Set_Ghost_Body): New routine.
(Mark_And_Set_Ghost_Completion): New routine.
(Mark_And_Set_Ghost_Declaration): New routine.
(Mark_And_Set_Ghost_Instantiation): New routine.
(Mark_And_Set_Ghost_Procedure_Call): New routine.
(Mark_Full_View_As_Ghost): Removed.
(Mark_Ghost_Declaration_Or_Body): New routine.
(Mark_Ghost_Pragma): New routine.
(Mark_Ghost_Renaming): New routine.
(Mark_Pragma_As_Ghost): Removed.
(Mark_Renaming_As_Ghost): Removed.
(Propagate_Ignored_Ghost_Code): Update the comment on usage.
(Prune_Node): Freeze nodes no longer need special pruning, they
are processed by the general ignored Ghost code mechanism.
(Restore_Ghost_Mode): New routine.
(Set_Ghost_Mode): Reimplemented.
(Set_Ghost_Mode_From_Entity): Removed.
* ghost.ads Add with and use clauses for Ghost.
(Check_Ghost_Completion): Update the parameter profile
along with the comment on usage.
(Install_Ghost_Mode): New routine.
(Is_Ghost_Assignment): New routine.
(Is_Ghost_Declaration): New routine.
(Is_Ghost_Pragma): New routine.
(Is_Ghost_Procedure_Call): New routine.
(Mark_And_Set_Ghost_Assignment): New routine.
(Mark_And_Set_Ghost_Body): New routine.
(Mark_And_Set_Ghost_Completion): New routine.
(Mark_And_Set_Ghost_Declaration): New routine.
(Mark_And_Set_Ghost_Instantiation): New routine.
(Mark_And_Set_Ghost_Procedure_Call): New routine.
(Mark_Full_View_As_Ghost): Removed.
(Mark_Ghost_Pragma): New routine.
(Mark_Ghost_Renaming): New routine.
(Mark_Pragma_As_Ghost): Removed.
(Mark_Renaming_As_Ghost): Removed.
(Restore_Ghost_Mode): New routine.
(Set_Ghost_Mode): Redefined.
(Set_Ghost_Mode_From_Entity): Removed.
* sem.adb (Analyze): Install and revert the Ghost region of the
node being analyzed.
(Do_Analyze): Change the way a clean Ghost
region is installed and reverted.
* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove
all Ghost-related code.
(Analyze_Incomplete_Type_Decl): Remove all Ghost-related code.
(Analyze_Number_Declaration): Remove all Ghost-related code.
(Analyze_Object_Declaration): Install and revert the Ghost region of
a deferred object declaration's completion.
(Array_Type_Declaration): Remove all Ghost-related code.
(Build_Derived_Type): Update the comment on
the propagation of Ghost attributes from a parent to a derived type.
(Derive_Subprogram): Remove all Ghost-related code.
(Make_Class_Wide_Type): Remove all Ghost-related code.
(Make_Implicit_Base): Remove all Ghost-related code.
(Process_Full_View): Install and revert the Ghost region of
the partial view. There is no longer need to check the Ghost
completion here.
* sem_ch5.adb (Analyze_Assignment): Install and revert the Ghost
region of the left hand side.
* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
all Ghost-related code.
(Analyze_Expression_Function): Remove all Ghost-related code.
(Analyze_Generic_Subprogram_Body): Remove all Ghost-related code.
(Analyze_Procedure_Call): Install and revert the Ghost region of
the procedure being called.
(Analyze_Subprogram_Body_Helper): Install and revert the Ghost
region of the spec or body.
(Analyze_Subprogram_Declaration): Remove all Ghost-related code.
(Build_Subprogram_Declaration): Remove all Ghost-related code.
(Find_Corresponding_Spec): Remove all Ghost-related code.
(Process_Formals): Remove all Ghost-related code.
* sem_ch7.adb (Analyze_Package_Body_Helper): Install and revert
the Ghost region of the spec.
(Analyze_Package_Declaration): Remove all Ghost-related code.
* sem_ch8.adb (Analyze_Exception_Renaming): Mark a renaming as
Ghost when it aliases a Ghost entity.
(Analyze_Generic_Renaming): Mark a renaming as Ghost when it aliases
a Ghost entity.
(Analyze_Object_Renaming): Mark a renaming as Ghost when
it aliases a Ghost entity.
(Analyze_Package_Renaming): Mark a renaming as Ghost when it aliases
a Ghost entity.
(Analyze_Subprogram_Renaming): Mark a renaming as Ghost when it
aliases a Ghost entity.
* sem_ch11.adb Remove with and use clauses for Ghost.
(Analyze_Exception_Declaration): Remove all Ghost-related code.
* sem_ch12.adb (Analyze_Generic_Package_Declaration): Remove all
Ghost-related code.
(Analyze_Generic_Subprogram_Declaration): Remove all Ghost-related
code.
(Analyze_Package_Instantiation): Install and revert the Ghost region
of the package instantiation.
(Analyze_Subprogram_Instantiation): Install
and revert the Ghost region of the subprogram instantiation.
(Instantiate_Package_Body): Code clean up. Install and revert the
Ghost region of the package body.
(Instantiate_Subprogram_Body): Code clean up. Install and revert the
Ghost region of the subprogram body.
* sem_ch13.adb (Build_Predicate_Functions): Install
and revert the Ghost region of the related type.
(Build_Predicate_Function_Declaration): Code clean up. Install
and rever the Ghost region of the related type.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
Install and revert the Ghost region of the pragma.
(Analyze_Initial_Condition_In_Decl_Part): Install and revert the
Ghost region of the pragma.
(Analyze_Pragma): Install and revert the Ghost region of various
pragmas. Mark a pragma as Ghost when it is related to a Ghost entity
or encloses a Ghost entity.
(Analyze_Pre_Post_Condition): Install and revert the Ghost
region of the pragma.
(Analyze_Pre_Post_Condition_In_Decl_Part): Install and revert the
Ghost region of the pragma.
* sem_res.adb (Resolve): Remove all Ghost-related code.
* sem_util.adb (Is_Declaration): Reimplemented.
(Is_Declaration_Other_Than_Renaming): New routine.
* sem_util.ads (Is_Declaration_Other_Than_Renaming): New routine.
* sinfo.adb (Is_Checked_Ghost_Pragma): New routine.
(Is_Ghost_Pragma): Removed.
(Is_Ignored_Ghost_Pragma): New routine.
(Set_Is_Checked_Ghost_Pragma): New routine.
(Set_Is_Ghost_Pragma): Removed.
(Set_Is_Ignored_Ghost_Pragma): New routine.
* sinfo.ads: Update the documentation on Ghost mode and
Ghost regions. New attributes Is_Checked_Ghost_Pragma
and Is_Ignored_Ghost_Pragma along with usages in nodes.
Remove attribute Is_Ghost_Pragma along with usages in nodes.
(Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
(Is_Ghost_Pragma): Removed along with pragma Inline.
(Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
(Set_Is_Checked_Ghost_Pragma): New routine along with pragma Inline.
(Set_Is_Ghost_Pragma): Removed along with pragma Inline.
(Set_Is_Ignored_Ghost_Pragma): New routine along with pragma Inline.
From-SVN: r244395
2017-01-13 Richard Biener <rguenther@suse.de>
c/
* gimple-parser.c (c_parser_gimple_postfix_expression): Parse
_Literal ( type-name ) number.
* tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
as _Literal ( type ) number in case usual suffixes do not
preserve all information.
* gcc.dg/gimplefe-22.c: New testcase.
From-SVN: r244393
2017-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/77283
* gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
and ssa-iterators.h.
(is_feasible_trace): Implement a cost model based on joiner
PHI node uses.
* gcc.dg/tree-ssa/split-path-7.c: Adjust.
* gcc.dg/tree-ssa/split-path-8.c: New testcase.
* gcc.dg/tree-ssa/split-path-9.c: Likewise.
From-SVN: r244392
[gcc]
2017-01-12 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/79004
* config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
char or short to __float128/_Float128 directly.
[gcc/testsuite]
2017-01-12 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/79004
* gcc.target/powerpc/pr79004.c: New test.
From-SVN: r244386
* gimple-ssa-sprintf.c (try_substitute_return_value): Remove
info.nowrite calls with no lhs that can't throw. Return bool
whether gsi_remove has been called or not.
(pass_sprintf_length::handle_gimple_call): Return bool whether
try_substitute_return_value called gsi_remove. Formatting fix.
(pass_sprintf_length::execute): Don't use gsi_remove if
handle_gimple_call returned true.
* gcc.dg/tree-ssa/builtin-snprintf-1.c: New test.
From-SVN: r244384
PR bootstrap/79069
* cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
be removed due to side-effects, don't remove following barrier nor
turn the successor edge into fallthru edge.
From-SVN: r244383
2017-01-12 Tristan Gingold <gingold@adacore.com>
* s-mmap.ads, s-mmap.adb, s-mmosin-unix.ads, s-mmosin-unix.adb,
s-mmauni-long.ads, s-mmosin-mingw.ads, s-mmosin-mingw.adb: New files.
2017-01-12 Yannick Moy <moy@adacore.com>
* errout.adb, errout.ads (Initialize): Factor common treatment
in Reset_Warnings.
(Reset_Warnings): New procedure to reset counts related to warnings.
(Record_Compilation_Errors): New variable to store the presence of an
error, used in gnat2why to allow changing the Warning_Mode.
(Compilation_Errors): Use new variable Record_Compilation_Errors to
store the presence of an error.
2017-01-12 Javier Miranda <miranda@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications):
For Interrupt_Handler and Attach_ Handler aspects, decorate the
internally built reference to the protected procedure as coming
from sources and force its analysis.
2017-01-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Build_Derived_Type): For a scalar derived type,
inherit predicates if any from the first_subtype of the parent,
not from the anonymous parent type.
* sem_eval.adb (Is_Static_Subtype): A type that inherits a dynamic
predicate is not a static subtype.
2017-01-12 Gary Dismukes <dismukes@adacore.com>
* freeze.adb (Check_Suspicious_Convention): New procedure
performing a warning check on discriminated record types with
convention C or C++. Factored out of procedure Freeze_Record_Type,
and changed to only apply to base types (to avoid spurious
warnings on subtypes). Minor improvement of warning messages
to refer to discriminated rather than variant record types.
(Freeze_Record_Type): Remove code for performing a suspicious
convention check.
(Freeze_Entity): Only call Freeze_Record_Type
on types that aren't declared within any enclosing generic units
(rather than just excluding the type when the innermost scope
is generic). Call Check_Suspicious_Convention whether or not
the type is declared within a generic unit.
* sem_ch8.adb (In_Generic_Scope): Move this function to Sem_Util.
* sem_util.ads, sem_util.adb (In_Generic_Scope): New function (moved
from Sem_Ch8).
2017-01-12 Tristan Gingold <gingold@adacore.com>
* sysdep.c, adaint.c, rtinit.c, ming32.h:
(__gnat_current_codepage): Renamed from CurrentCodePage
(__gnat_current_ccs_encoding): Renamed from CurrentCCSEncoding
2017-01-12 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Fully_Conformant_Expressions): Handle properly
quantified expressions, following AI12-050: the loop parameters
of two quantified expressions are conformant if they have the
same identifier.
From-SVN: r244369
[gcc]
2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/79044
* config/rs6000/rs6000.c (insn_is_swappable_p): Mark
element-reversing loads and stores as not swappable.
[gcc/testsuite]
2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/79044
* gcc.target/powerpc/swaps-p8-26.c: New.
From-SVN: r244368
2017-01-12 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute_Reference, case Loop_Entry):
Hnadle properly the attribute reference when it appears as part
of an expression in another loop aspect.
2017-01-12 Ed Schonberg <schonberg@adacore.com>
* exp_ch3.adb (Check_Predicated_Discriminant): New procedure,
subsidiary of Build_Initialization_Call, to complete generation
of predicate checks on discriminants whose (sub)types have
predicates, and to add checks on variants that do not have an
others clause.
* sem_util.adb (Gather_Components): A missing Others alternative is
not an error when the type of the discriminant is a static predicate
(and coverage has been checked when analyzing the case statement). A
runtime check is generated to verify that a given discriminant
satisfies the predicate (RM 3.8.1. (21.1/2)).
2017-01-12 Yannick Moy <moy@adacore.com>
* gnat1drv.adb (Adjust_Global_Switches): Only
perform checking of exception mechanism when generating code.
2017-01-12 Justin Squirek <squirek@adacore.com>
* exp_ch7.adb (Add_Type_Invariants, Process_Array_Component):
Remove handling of access component with invariant.
(Build_Invariant_Procedure_Declaration): Remove return on class
wide type.
* freeze.adb (Freeze_Array_Type, Freeze_Record_Type): Remove
conditional exception for component or array so Has_Own_Invariants
flag is not falsly set.
* sem_ch3.adb (Make_Class_Wide_Type): Initialize copy of class
wide type to have no invariant flags.
From-SVN: r244366
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch9.adb, sem_prag.adb, s-tassta.adb, sem_util.adb, s-tarest.adb,
sem_ch13.adb: Minor reformatting.
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* exp_aggr.adb (Build_Record_Aggr_Code): Guard against a missing
adjustment primitive when the ancestor type was not properly frozen.
(Gen_Assign): Guard against a missing initialization
primitive when the component type was not properly frozen.
(Initialize_Array_Component): Guard against a missing adjustment
primitive when the component type was not properly frozen.
(Initialize_Record_Component): Guard against a missing adjustment
primitive when the component type was not properly frozen.
(Process_Transient_Component_Completion): The transient object may
not be finalized when its associated type was not properly frozen.
* exp_ch3.adb (Build_Assignment): Guard against a missing
adjustment primitive when the component type was not properly frozen.
(Build_Initialization_Call): Guard against a missing
initialization primitive when the associated type was not properly
frozen.
(Expand_N_Object_Declaration): Guard against a missing
adjustment primitive when the base type was not properly frozen.
(Predefined_Primitive_Bodies): Create an empty Deep_Adjust
body when there is no adjustment primitive available. Create an
empty Deep_Finalize body when there is no finalization primitive
available.
* exp_ch4.adb (Apply_Accessibility_Check): Guard against a
missing finalization primitive when the designated type was
not properly frozen.
(Expand_N_Allocator): Guard against a missing initialization primitive
when the designated type was not properly frozen.
* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add the adjustment call
only when the corresponding adjustment primitive is available.
* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Generate the
adjustment/finalization statements only when there is an available
primitive to carry out the action.
(Build_Initialize_Statements): Generate the initialization/finalization
statements only when there is an available primitive to carry out the
action.
(Make_Adjust_Call): Do not generate a call when the underlying
type is not present due to a possible missing full view.
(Make_Final_Call): Do not generate a call when the underlying
type is not present due to a possible missing full view.
(Make_Finalize_Address_Stmts): Generate an empty body when the
designated type lacks a finalization primitive.
(Make_Init_Call): Do not generate a call when the underlying type is
not present due to a possible missing full view.
(Process_Component_For_Adjust): Add the adjustment call only when the
corresponding adjustment primitive is available.
(Process_Component_For_Finalize): Add the finalization call only when
the corresponding finalization primitive is available.
(Process_Object_Declaration): Use a null statement to emulate a
missing call to the finalization primitive of the object type.
* exp_ch7.ads (Make_Adjust_Call): Update the comment on usage.
(Make_Final_Call): Update the comment on usage.
(Make_Init_Call): Update the comment on usage.
* exp_util.adb (Build_Transient_Object_Statements): Code reformatting.
2017-01-12 Arnaud Charlet <charlet@adacore.com>
* einfo.ads: Update documentation of Address_Taken.
* sem_attr.adb (Analyze_Access_Attribute, Resolve_Attribute
[Access_Attribute]): Only consider 'Access/'Unchecked_Access
for subprograms when setting Address_Taken flag.
2017-01-12 Patrick Bernardi <bernardi@adacore.com>
* sem_ch10.adb (Analyze_With_Clause): Removed code that turned
Configurable_Run_Time_Mode off when analysing with'ed predefined
libraries.
From-SVN: r244365
2017-01-12 Gary Dismukes <dismukes@adacore.com>
* sem_prag.adb: Minor reformatting.
* sem_util.adb (Unique_Entity): fix result for
bodies of entry families.
From-SVN: r244363
2017-01-12 Justin Squirek <squirek@adacore.com>
* sem_prag.adb (Analyze_Pragma): Add appropriate calls to
Resolve_Suppressible in the pragma Assertion_Policy case.
(Resolve_Suppressible): Created this function to factor out
common code used to resolve Suppress to either Ignore or Check
* snames.ads-tmpl: Add name for Suppressible.
From-SVN: r244362
2017-01-12 Arnaud Charlet <charlet@adacore.com>
* sem_util.adb (Unique_Entity): For concurrent
bodies that are defined with stubs and complete a declaration
of a single concurrent object return the entity of an implicit
concurrent type, not the entity of the anonymous concurrent
object.
* debug.adb: -gnatd.J is no longer used.
* make.adb (Globalize): Removed, no longer used.
* sem_ch9.adb: minor typo in comment for entry index
2017-01-12 Patrick Bernardi <bernardi@adacore.com>
* aspect.adb, aspect.ads: Added new aspect Secondary_Stack_Size.
* exp_ch3.adb (Build_Init_Statements): As part of initialising
the value record of a task, set its _Secondary_Stack_Size field
if present.
* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create
a _Secondary_Stack_Size field in the value record of
the task if a Secondary_Stack_Size rep item is present.
(Make_Task_Create_Call): Include secondary stack size
parameter. If No_Secondary_Stack restriction is in place, passes
stack size of 0.
* par-prag.adb, sem_prag.adb, sem_prag.ads: Added new pragma
Secondary_Stack_Size.
* s-secsta.adb, s-secsta.ads (Minimum_Secondary_Stack_Size): New
function to define the overhead of the secondary stack.
* s-tarest.adb (Create_Restricted_Task,
Create_Restricted_Task_Sequential): Functions now include
Secondary_Stack_Size parameter to pass to Initialize_ATCB.
* s-tarest.adb (Create_Restricted_Task,
Create_Restricted_Task_Sequential): Calls to Initialize_ATCB now
include Secondary_Stack_Size parameter.
(Task_Wrapper): Secondary stack now allocated to the size specified by
the Secondary_Stack_Size parameter in the task's ATCB.
* s-taskin.adb, s-taskin.adb (Common_ATCB, Initialize_ATCB): New
Secondary_Stack_Size component.
* s-tassta.adb, s-tassta.ads (Create_Restricted_Task,
Create_Restricted_Task_Sequential): Function now include
Secondary_Stack_Size parameter.
(Task_Wrapper): Secondary stack now allocated to the size
specified by the Secondary_Stack_Size parameter in the task's
ATCB.
* s-tproft.adb (Register_Foreign_Thread): Amended Initialize_ATCB call
to include Secondary_Stack_Size parameter.
* sem_ch13.adb (Analyze_Aspect_Specification): Add support for
Secondary_Stack_Size aspect, turning the aspect into its corresponding
internal attribute.
(Analyze_Attribute_Definition): Process Secondary_Stack_Size attribute.
* snames.adb-tmpl, snames.ads-tmpl: Added names
Name_Secondary_Stack_Size, Name_uSecondary_Stack_Size,
Attribute_Secondary_Stack_Size and Pragma_Secondary_Stack_Size.
From-SVN: r244358
2017-01-12 Yannick Moy <moy@adacore.com>
* exp_spark.adb (Expand_SPARK_Potential_Renaming): Fix sloc of copied
subtree.
2017-01-12 Justin Squirek <squirek@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference):
Fix Finalization_Size case by properly resolving the type after
rewritting the node.
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* exp_util.adb (Build_DIC_Procedure_Body): Semi-insert the body into
the tree.
(Build_DIC_Procedure_Declaration): Semi-insert the body into the tree.
* binde.adb, exp_ch5.adb, sem_type.adb, sem.ads, sem_res.adb,
exp_sel.ads: Minor reformatting.
2017-01-12 Justin Squirek <squirek@adacore.com>
* exp_ch6.adb (Expand_Call): Add guard to prevent
invariant checks from being created for internally generated
subprograms.
2017-01-12 Bob Duff <duff@adacore.com>
* lib-writ.ads: Remove incorrect comment.
2017-01-12 Javier Miranda <miranda@adacore.com>
* debug.adb (-gnatd.K): Enable generation of contract-only
procedures in CodePeer mode.
* contracts.adb (Build_And_Analyze_Contract_Only_Subprograms):
New subprogram.
(Analyze_Contracts): Generate contract-only procedures if -gnatdK is
set.
* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): New
subprogram.
(Get_Contract_Only_Missing_Body_Name): New subprogram.
(Get_Contract_Only_Body): New subprogram.
(Set_Contract_Only_Body): New subprogram.
(Is_Contract_Only_Body): New subprogram.
(Set_Is_Contract_Only_Body): New subprogram.
(SCIL_Nodes): Replace table by hash-table.
From-SVN: r244356
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch6.adb: Minor reformatting.
* spark_xrefs.ads: minor cleanup of comments for SPARK xrefs
2017-01-12 Bob Duff <duff@adacore.com>
* binde.adb (Forced): New reason for a dependence.
(Force_Elab_Order): Implementation of the new switch.
* binde.ads: Minor comment fixes.
* bindusg.adb: Add -f switch. Apparently, there was an -f switch
long ago that is no longer supported; removed comment about that.
* opt.ads (Force_Elab_Order_File): Name of file specified for
-f switch.
* switch-b.adb: Parse -f switch.
From-SVN: r244355
2017-01-12 Justin Squirek <squirek@adacore.com>
* exp_ch6.adb (Check_View_Conversion): Created this function
to properly chain calls to check type invariants that may be
present in a subprogram call after the subprogram.
(Expand_Call): Add a conditional to identify when a view conversion
needs to be checked.
* nlists.adb, nlists.ads (Prepend_New): New routine.
(Prepend_New_To): New routine.
From-SVN: r244354
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* sinfo.ads: Minor reformatting.
2017-01-12 Gary Dismukes <dismukes@adacore.com>
* exp_util.adb, exp_util.ads, einfo.ads: Minor typo fixes and
reformatting.
2017-01-12 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Add new
variable Definite. Create a local object and pass its 'Access to the
BIP function when the result type is either definite or it does not
require any finalization or secondary stack management.
From-SVN: r244353
2017-01-12 Bob Duff <duff@adacore.com>
* contracts.adb, einfo.adb, errout.adb, exp_attr.adb,
exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_prag.adb, freeze.adb,
frontend.adb, ghost.adb, inline.adb, lib-writ.adb, lib-xref.adb,
par.adb, par-ch10.adb, par-ch2.adb, par-prag.adb, par_sco.adb,
sem_attr.adb, sem_aux.adb, sem_ch10.adb, sem_ch12.adb,
sem_ch13.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb, sem_elab.adb,
sem_prag.adb, sem_res.adb, sem_util.adb, sem_util.ads,
sem_warn.adb, sinfo.adb, sinfo.ads, sprint.adb (Pragma_Name):
Change name to Pragma_Name_Unmapped.
(Pragma_Name_Mapped): Change name to Pragma_Name.
This is because the "mapped" version should be the usual case.
From-SVN: r244352
2017-01-12 Richard Biener <rguenther@suse.de>
* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
and TS_TARGET_OPTION directly derive from TS_BASE.
* tree-core.h (tree_optimization_option): Derive from tree_base.
(tree_target_option): Likewise.
From-SVN: r244349