2017-09-08 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Check_Generic_Parent): New procedure within
Analyze_Associations, to handle actual packages that depend on
previous instances. If a package IAP that is an instantiation is
used as an actual in a subsequent instantiation SI in the same
scope, and IAP has a body, IAP must be frozen before SI. If
the generic parent of IAP is itself declared in a previous
instantiation in the same scope, that instantiation must also
be frozen before SI.
(Install_Body): Prevent double insertion of freeze node for
instance.
2017-09-08 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Resolve_State): Update the
comment on documentation. Generate a reference to the state once
resolution takes place.
2017-09-08 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications, case
Linker_Section): If the aspect applies to an object declaration
with explicit initialization, do not delay the freezing of the
object, to prevent access-before-elaboration in the generated
initialization code.
2017-09-08 Ed Schonberg <schonberg@adacore.com>
* a-wtdeio.adb (Put, all versions): Use Long_Long_Integer
(Integer_Value (Item)) when the size of the fixed decimal type
is larger than Integer.
From-SVN: r251865
gcc/ChangeLog:
2017-09-07 Carl Love <cel@us.ibm.com>
* config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to the sldi instruction.
From-SVN: r251845
PR target/81979
* output.h (switch_to_other_text_partition): New declaration.
* varasm.c (switch_to_other_text_partition): New function.
* config/rs6000/rs6000.c (uses_TOC): Return 2 if
NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
(rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
to the other text partition before emitting LCL label and switch back
after emitting the word after it.
* gcc.dg/pr81979.c: New test.
From-SVN: r251843
2017-09-07 Yannick Moy <moy@adacore.com>
* a-exetim-mingw.ads: Add contract Global=>null
on all operations that are modeled as having no read or write
of global variables in SPARK.
2017-09-07 Raphael Amiard <amiard@adacore.com>
* a-chtgop.adb, a-chtgop.ads (Generic_Iteration_With_Position): Added
to Hmaps.Generic_Ops.
* a-cohama.adb (Ada.Containers.Hmaps.Iterate): Pass proper position in
cursors.
* a-cihama.adb (Ada.Containers.Indefinite_Hmaps.Iterate): Pass pos in
cursors.
* a-cohase.adb (Ada.Containers.Hashed_Sets.Iterate): Pass proper
position in cursors.
2017-09-07 Javier Miranda <miranda@adacore.com>
* sem_elab.adb (Check_Task_Activation): Adding switch -gnatd.y to
allow disabling the generation of implicit pragma Elaborate_All
on task bodies.
2017-09-07 Javier Miranda <miranda@adacore.com>
* exp_disp.adb (Make_Tags): Avoid suffix counter
in the external name of the elaboration flag. Required to fix
the regressions introduced by the initial version of this patch.
2017-09-07 Bob Duff <duff@adacore.com>
* sem_ch6.adb (Analyze_Function_Return): Do not
insert an explicit conversion to force the displacement of the
"this" pointer to reference the secondary dispatch table in the
case where the return statement is returning a raise expression,
as in "return raise ...".
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* sem_disp.adb (Is_User_Defined_Equality): Removed procedure.
* sem_util.ads, sem_util.adb (Is_User_Defined_Equality): Copied
procedure from sem_disp.adb.
* sem_ch12.ads (Get_Unit_Instantiation_Node): rename Package
with Unit.
* sem_ch12.adb (Get_Unit_Instantiation_Node): function extended to
return the instantiation node for subprograms. Update references
to Get_Unit_Instantiation_Node.
* sem_ch7.adb (Install_Parent_Private_Declarations): update
reference to Get_Unit_Instantiation_Node.
* exp_dist.adb (Build_Package_Stubs): update reference to
Get_Unit_Instantiation_Node.
* sem_ch9.adb: minor typo in comment.
* lib-xref-spark_specific.adb
(Traverse_Declaration_Or_Statement): traverse into task type
definition.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* sem_dim.adb (Analyze_Dimension_Type_Conversion): New procedure
to handle properly various cases of type conversions where the
target type and/or the expression carry dimension information.
(Dimension_System_Root); If a subtype carries dimension
information, obtain the source parent type that carries the
Dimension aspect.
2017-09-07 Dmitriy Anisimkov <anisimko@adacore.com>
* g-socket.adb, g-socket.ads (GNAT.Sockets.To_Ada): New routine.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained):
If the prefix is a reference to an object, rewrite it as an
explicit dereference, as required by 3.7.2 (2) and as is done
with most other attributes whose prefix is an access value.
2017-09-07 Bob Duff <duff@adacore.com>
* par-ch13.adb: Set the Inside_Depends flag if we are inside a
Refined_Depends aspect.
* par-ch2.adb: Set the Inside_Depends flag if we are inside a
Refined_Depends pragma.
* scans.ads: Fix documentation of Inside_Depends flag.
* styleg.adb, styleg.ads: Minor reformatting and comment fixes.
2017-09-07 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch7.adb (Insert_Actions_In_Scope_Around):
Account for the case where the are no lists to insert, but the
secondary stack still requires management.
* a-chtgop.adb, a-cihama.adb, a-cohama.adb, a-cohase.adb, a-tags.adb,
comperr.adb, einfo.adb, exp_aggr.adb, exp_ch3.adb, exp_disp.adb,
lib-xref.adb, lib-xref-spark_specific.adb, sem_ch12.adb, sem_ch13.adb,
sem_ch6.adb, sem_dim.adb, sem_dim.ads, sem_elab.adb, sem_prag.adb:
Minor reformatting.
From-SVN: r251842
2017-09-07 Vincent Celier <celier@adacore.com>
* clean.adb: Do not get the target parameters before calling
gprclean.
2017-09-07 Nicolas Roche <roche@adacore.com>
* s-osinte-solaris-posix.ads: Removed.
From-SVN: r251841
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Collect_States_And_Objects): Detect also instances of
single concurrent objects.
2017-09-07 Javier Miranda <miranda@adacore.com>
* s-regexp.ads: Fix documentation of the globbing grammar.
2017-09-07 Gary Dismukes <dismukes@adacore.com>
* a-tags.ads, einfo.ads, exp_disp.ads: Minor reformatting.
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* gnat1drv.adb (Gnat1drv): Enable pragma Ignore_Pragma (Global)
in CodePeer mode, to support more legacy code automatically.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* exp_disp.adb (Replace_Formals): If thr formal is classwide,
and thus not a controlling argument, preserve its type after
rewriting because it may appear in an nested call with a classwide
parameter.
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* comperr.adb (Delete_SCIL_Files): Handle case of
N_Package_Instantiation.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch10.adb (Remove_Private_With_Clause): If a private with
clause for a unit U appears in a context that includes a regular
with_clause on U, rewrite the redundant private clause into a null
statement, rather than removing it altogether from the context,
so that ASIS tools can reconstruct the original source.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Check_Aspect_At_Freeze_Point): The expression
for aspect Small can be of any real type (not only a universal
real literal) as long as it is a static constant.
2017-09-07 Thomas Quinot <quinot@adacore.com>
* par_sco.adb: Minor reformatting.
From-SVN: r251840
2017-09-07 Nicolas Roche <roche@adacore.com>
* s-traces-default.adb, s-trafor-default.adb, s-trafor-default.ads,
s-traces.adb, s-traces.ads, s-tratas-default.adb, s-tfsetr-default.adb,
s-tfsetr-vxworks.adb, s-tratas.adb, s-tratas.ads, s-tasuti.adb,
s-parame-hpux.ads, s-tassta.adb, s-taasde.adb, s-tasren.adb,
s-taprob.adb, a-caldel.adb, s-parame.ads, Makefile.rtl, s-tpobop.adb,
s-taenca.adb, s-parame-vxworks.ads: Remove support for System.Traces.
2017-09-07 Yannick Moy <moy@adacore.com>
* a-ngelfu.ads Add preconditions to all functions
listed in Ada RM A.5.1(19-33) as having constraints on inputs.
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* lib-xref.adb (Generate_Reference): ignore
references to entities which are Part_Of single concurrent
objects.
2017-09-07 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch7.adb (Hide_Public_Entities): Add paragraph to main
comment.
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* a-taside.adb (Activation_Is_Complete): Raise Program_Error if
Null_Task_Id is passed.
2017-09-07 Javier Miranda <miranda@adacore.com>
* einfo.ads, einfo.adb (Access_Disp_Table_Elab_Flag): New
attribute. Defined for record types and subtypes.
* exp_ch3.ads (Init_Secondary_Tags): Adding new formal
(Init_Tags_List) to facilitate generating separate code in the
IP routine to initialize the object components and for completing
the elaboration of dispatch tables.
* exp_ch3.adb (Build_Init_Procedure): Improve the code
generated in the IP routines by means of keeping separate
the initialization of the object components from the
initialization of its dispatch tables. (Init_Secondary_Tags):
Adding new formal (Init_Tags_List) and adjusting calls to
Ada.Tags.Set_Dynamic_Offset_To_Top since it has a new formal;
adjusting also calls to Ada.Tags.Register_Interface_Offset
because the type of one of its formals has been changed.
* a-tags.ads, a-tags.adb (Register_Interface_Offset): Profile
modified. Instead of receiving a pointer to an object this
routine receives now a primary tag.
(Set_Dyanic_Offset_To_Top): Profile modified. This routine receives an
additional formal: the tag of the primary dispatch table.
* exp_disp.ads (Elab_Flag_Needed): New subprogram.
* exp_disp.adb (Elab_Flag_Needed): New subprogram.
(Make_Tags): Adding the declaration of the elaboration flag (if needed).
* exp_aggr.adb (Build_Record_Aggr_Code): Adding actual of new
formal in calls to Init_Secondary_Tags.
2017-09-07 Javier Miranda <miranda@adacore.com>
* ghost.adb (Mark_And_Set_Ghost_Instantiation.Check_Ghost_Actuals): New
subprogram.
* sem_prag.adb (Pragma_Ghost): Add missing support for ghost
applied to generic subprograms.
From-SVN: r251838
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* sem_util.adb (Check_Part_Of_Reference): rename Conc_Typ to Conc_Obj
(because it refers to the anonymous concurrent object, not its type);
fix condition for emitting error message about task/protected type,
2017-09-07 Bob Duff <duff@adacore.com>
* binde.adb (Debug_Flag_Old): If both -do and -dp
are specified, behave as if just -do was specified, rather than
using a mixture.
2017-09-07 Nicolas Roche <roche@adacore.com>
* system-vxworks-sparcv9.ads, s-vxwork-m68k.ads, s-vxwork-mips.ads,
system-vxworks-m68k.ads, system-vxworks-mips.ads: Removed.
From-SVN: r251837
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Find_Role): The Global_Seen flag
is now consulted not only for abstract states and variables,
but for all kinds of items.
(Collect_Subprogram_Inputs_Outputs): Do not process formal
generic parameters, because unlike ordinary formal parameters,
generic formals only act as input/ outputs if they are explicitly
mentioned in a Global contract.
2017-09-07 Yannick Moy <moy@adacore.com>
* ghost.adb (Check_Ghost_Context): Do not err on ghost code inside
predicate procedure. Check predicate pragma/aspect with Ghost entity.
* exp_ch6.adb, par-ch6.adb, sem_ch13.adb, sem_prag.adb; Minor
reformatting.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* sem_aggr.adb: Move New_Copy_Tree_And_Dimensions to sem_dim
(code cleanup);
* sem_ch3.adb (Build_Derived_Record_Type):i Call
Copy_Dimensions_Of_Components after creating the copy of the
record declaration.
* sem_dim.ads, sem_dim.adb (Copy_Dimensions_Of_Components): For a
derived recor type, copy the dikensions if any of each component
of the parent record to the corresponding component declarations
of the derived record. These expressions are used among other
things as default values in aggregates with box associations.
* a-dirval-mingw.adb, g-cgi.adb, gnatcmd.adb, lib-xref.adb,
repinfo.adb, sem_attr.adb, sem_ch10.adb, sem_ch6.adb, sem_prag.adb:
Minor reformatting.
2017-09-07 Arnaud Charlet <charlet@adacore.com>
* sem_util.adb: Remove extra space after THEN.
2017-09-07 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch7.adb (Has_Referencer): For a subprogram renaming,
also mark the renamed subprogram as referenced.
From-SVN: r251836
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* par-ch6.adb (P_Subprogram): Improve error message on null
procedure with misplaced aspect specification, which the parser
first attempts to interpret as a malformed expression function.
2017-09-07 Gary Dismukes <dismukes@adacore.com>
* sem_attr.adb (Analyze_Attribute_Old_Result):
Allow attributes Result and Old in the case of an expression
function.
2017-09-07 Justin Squirek <squirek@adacore.com>
* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Propagate
Volatile to subcomponents.
2017-09-07 Bob Duff <duff@adacore.com>
* exp_ch7.adb (Find_Last_Init): Check for the
case where a build-in-place function call has been replaced by a
'Reference attribute reference.
2017-09-07 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch7.adb (Has_Referencer): Recurse on Actions of freeze
nodes.
2017-09-07 Bob Duff <duff@adacore.com>
* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration,
Make_Build_In_Place_Call_In_Anonymous_Context): Do not use the
secondary stack for all functions that return limited tagged
types -- just do it for dispatching calls. Misc cleanup.
* sem_util.ads, sem_util.adb (Unqual_Conv): New function to
remove qualifications and type conversions. Fix various bugs
where only a single level of qualification or conversion was
removed, so e.g. "T1'(T2'(X))" would incorrectly return "T2'(X)"
instead of "X".
* checks.adb, exp_util.ads, exp_util.adb, sem_res.adb: Misc related
cleanup.
2017-09-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (setr_Actual_Subtypes): Within a predicate function
do not create actual subtypes that may generate further predicate
functions.
* sem_ch13.adb (Build_Predicate_Functions): Indicate that entity
of body is a predicate function as well.
(Resolve_Aspect_Expressions, Resolve_Name): For a component
association, only the expression needs resolution, not the name.
(Resolve_Aspect_Expressions, case Predicates): Construct and
analyze the predicate function declaration in the scope of the
type, before making the type and its discriminants visible.
From-SVN: r251835
2017-09-07 Richard Biener <rguenther@suse.de>
* passes.def (pass_split_crit_edges): Remove instance before PRE.
* tree-ssa-pre.c (pass_pre::execute): Instead manually split
critical edges here, after loop init.
(pass_data_pre): Remove PROP_no_crit_edges flags.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
for valueization of call args to avoid leaking VN_TOP.
(visit_use): Assert we do not visit default defs.
(init_scc_vn): Use build_decl for VN_TOP to make name nicer.
Use error_mark_node to more easily detect leaking VN_TOP.
All default-defs are varying, not VN_TOP. Mark them visited.
(run_scc_vn): Make code match comment.
* gcc.dg/tree-ssa/ssa-thread-12.c: XFAIL third FSM threading
opportunity.
From-SVN: r251833
* pt.c (tsubst_arg_types): Substitute default arguments for lambdas
in templates.
(retrieve_specialization): Use lambda_fn_in_template_p.
* cp-tree.h: Declare it.
From-SVN: r251826
[gcc]
2017-09-07 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
OPTION_MASK_FLOAT128_KEYWORD.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
support for the -mfloat128-type option, and make -mfloat128
default on PowerPC Linux systems. Define or undefine
__FLOAT128__ and __FLOAT128_HARDWARE__ for the current options.
Define __float128 to be __ieee128 if IEEE 128-bit support is
enabled, or undefine it.
(rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
Delete defining __FLOAT128_TYPE__.
* config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
-mfloat128-type option and make -mfloat128 default on PowerPC
Linux systems.
(TARGET_FLOAT128_TYPE): Likewise.
(-mfloat128-type): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal):
Delete the -mfloat128-type option and make -mfloat128 default on
PowerPC Linux systems. Always use __ieee128 to be the keyword for
the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
128-bit floating point is enabled. Change tests from using
-mfloat128-type to -mfloat128.
(rs6000_mangle_type): Use the correct mangling for the __float128
type even if normal long double is restricted to 64-bits.
(floatn_mode): Enable the _Float128 type by default on VSX Linux
systems.
* config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
(MASK_FLOAT128_KEYWORD): Define new shortcut macro.
(RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
-mfloat128-type.
* doc/invoke.texi (RS/6000 and PowerPC Options): Update
documentation for -mfloat128.
[gcc/testsuite]
2017-09-07 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/float128-1.c: Update options to know that
-mfloat128 is now on by default on PowerPC VSX systems. Remove
-static-libgcc option which is no longer needed. Use -mvsx or
-mpower9-vector to enable VSX or hardware IEEE support, rather
than specifying a particular CPU.
* gcc.target/powerpc/float128-2.c: Likewise.
* gcc.target/powerpc/float128-cmp.c: Likewise.
* gcc.target/powerpc/float128-complex-1.c: Likewise.
* gcc.target/powerpc/float128-complex-2.c: Likewise.
* gcc.target/powerpc/float128-hw.c: Likewise.
* gcc.target/powerpc/float128-mix.c: Likewise.
* gcc.target/powerpc/float128-type-1.c: Likewise.
* gcc.target/powerpc/float128-type-2.c: Likewise.
* gcc.target/powerpc/float128-3.c: New test.
* gcc.target/powerpc/float128-4.c: Likewise.
* gcc.target/powerpc/float128-5.c: Likewise.
From-SVN: r251814
Add an alignment test to check that aligned alloca's really do get
correctly aligned. Some targets may not ensure SP is always a multiple
of STACK_BOUNDARY (particularly with outgoing arguments), which means
aligned alloca does not get correctly aligned. This can be fixed either
by aligning the outgoing arguments or setting STACK_BOUNDARY correctly.
testsuite/
PR middle-end/78468
* gcc.dg/pr78468.c: Add alignment test.
From-SVN: r251811
2017-09-06 Gary Dismukes <dismukes@adacore.com>
* sem_ch5.adb: Minor reformatting and a typo fix
2017-09-06 Arnaud Charlet <charlet@adacore.com>
* sinput-l.ads: minor remove extra period at the end of comment
2017-09-06 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Add_Item_To_Name_Buffer): remove support for
E_Discriminant.
(Find_Role): remove support for E_Discriminant.
2017-09-06 Javier Miranda <miranda@adacore.com>
* exp_ch6.adb (Expand_Simple_Function_Return):
Add missing implicit type conversion to force displacement of the
"this" pointer.
From-SVN: r251807
This patch adds a bit more error checking to parsecpu.awk to ensure
that statements are not missing arguments or have excess arguments
beyond those permitted. It also slightly improves the handling of
errors so that we terminate properly if parsing fails and be as
helpful as we can while in the parsing phase.
* config/arm/parsecpu.awk (fatal): Note that we've encountered an
error. Only quit immediately if parsing is complete.
(BEGIN): Initialize fatal_err and parse_done.
(begin fpu, end fpu): Check number of arguments.
(begin arch, end arch): Likewise.
(begin cpu, end cpu): Likewise.
(cname, tune for, tune flags, architecture, fpu, option): Likewise.
(optalias): Likewise.
From-SVN: r251800
This patch autogenerates arm-isa.h from new entries in arm-cpus.in.
This has the primary advantage that it makes the description file more
self-contained, but it also solves the 'array dimensioning' problem
that Tamar recently encountered. It adds two new constructs to
arm-cpus.in: features and fgroups. Fgroups are simply a way of naming
a group of feature bits so that they can be referenced together. We
follow the convention that feature bits are all lower case, while
fgroups are (predominantly) upper case. This is helpful as in some
contexts they share the same namespace. Most of the minor changes in
this patch are related to adopting this new naming convention.
* config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
* config/arm/arm-isa.h: Delete. Move definitions to ...
* arm-cpus.in: ... here. Use new feature and fgroup values.
* config/arm/arm.c (arm_option_override): Use lower case for feature
bit names.
* config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
(TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
* config/arm/parsecpu.awk (END): Add new command 'isa'.
(isa_pfx): Delete.
(print_isa_bits_for): New function.
(gen_isa): New function.
(gen_comm_data): Use print_isa_bits_for.
(define feature): New keyword.
(define fgroup): New keyword.
* config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
(arm-isa.h): Add rule to generate file.
* common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
case for feature bit names.
From-SVN: r251799
2017-09-06 Richard Biener <rguenther@suse.de>
* tree-ssa-pre.c (NECESSARY): Remove.
(create_expression_by_pieces): Do not touch pass-local flags.
(insert_into_preds_of_block): Likewise.
(do_pre_regular_insertion): Likewise.
(eliminate_insert): Likewise.
(eliminate_dom_walker::before_dom_children): Likewise.
(fini_eliminate): Do not look at inserted_exprs.
(mark_operand_necessary): Remove.
(remove_dead_inserted_code): Replace with simple work-list
algorithm based on inserted_exprs and SSA uses.
(pass_pre::execute): Re-order fini_eliminate and
remove_dead_inserted_code.
From-SVN: r251798
2017-09-06 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch3.adb, sem_aux.adb, sem_res.adb: Minor reformatting.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_ch12.adb (Analyze_Instance_And_Renamings): Refactor to set
global variable Ignore_SPARK_Mode_Pragmas_In_Instance only once.
2017-09-06 Bob Duff <duff@adacore.com>
* sem_ch8.adb: Change Assert to be consistent with
other similar ones.
2017-09-06 Bob Duff <duff@adacore.com>
* binde.adb (Find_Elab_Order): Do not run Elab_Old unless
requested. Previously, the -do switch meant "run Elab_New and
Elab_Old and use the order chosen by Elab_Old, possibly with
debugging printouts comparing the two orders." Now it means
"do not run Elab_New." This is of use if there are bugs that
cause Elab_New to crash.
(Elab_Position, Num_Chosen): Change type to Nat, to avoid various
type conversions.
* ali.ads (Elab_Position): Change type to Nat, to avoid various
type conversions.
2017-09-06 Arnaud Charlet <charlet@adacore.com>
* sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Fix
reference to SPARK RM.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* layout.adb: Use SSU short hand consistently throughout the file.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* freeze.adb (Freeze_Record_Type)
<Sized_Component_Total_Round_RM_Size>: New local variable to
accumulate the rounded RM_Size of components. Update it for
every component whose RM_Size is statically known. Add missing
guard to check that bit packing is really required before issuing
the error about packing. Swap condition for clarity's sake.
* sem_prag.adb (Usage_Error): fix reference to
SPARK RM in comment
2017-09-06 Fedor Rybin <frybin@adacore.com>
* makeutl.adb, makeutl.ads, mlib.adb, mlib.ads, mlib-fil.adb,
mlib-fil.ads, mlib-prj.adb, mlib-prj.ads, mlib-tgt.adb, mlib-tgt.ads,
mlib-tgt-specific.adb, mlib-tgt-specific.ads,
mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb,
mlib-tgt-specific-hpux.adb, mlib-tgt-specific-linux.adb,
mlib-tgt-specific-mingw.adb, mlib-tgt-specific-solaris.adb,
mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb, mlib-utl.adb,
mlib-utl.ads, prj.adb, prj.ads, prj-attr.adb, prj-attr.ads,
prj-attr-pm.adb, prj-attr-pm.ads, prj-com.ads, prj-conf.adb,
prj-conf.ads, prj-dect.adb, prj-dect.ads, prj-env.adb, prj-env.ads,
prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads, prj-makr.adb,
prj-makr.ads, prj-nmsc.adb, prj-nmsc.ads, prj-pars.adb, prj-pars.ads,
prj-part.adb, prj-part.ads, prj-pp.adb, prj-pp.ads, prj-proc.adb,
prj-proc.ads, prj-strt.adb, prj-strt.ads, prj-tree.adb, prj-tree.ads,
prj-util.adb, prj-util.ads, sinput-p.adb, sinput-p.ads: Remove obsolete
project manager sources.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch5.adb (Analyze_Assigment): If the left-hand side is an
entity of a mutable type and the right-hand side is a conditional
expression, resolve the alternatives of the conditional using
the base type of the target entity, because the alternatives
may have distinct subtypes. This is particularly relevant if
the alternatives are aggregates.
From-SVN: r251797
* name-lookup.c (count_fields): Rename to ...
(count_class_fields): ... here. Take a class, don't count
NULL-named fields.
(add_fields_to_record_type): Rename to ...
(field_vec_append_class_fields): ... here. Take a class, don't
add NULL-named fields.
(add_enum_fields_to_record_type): Rename to ...
(field_vec_append_enum_values): ... here.
(set_class_bindings): Adjust, assert we added expected number.
(insert_late_enum_def_bindings): Reimplement. Create vector if
there are now sufficient entries.
From-SVN: r251794
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* checks.adb (Apply_Predicate_Check): If the expression is an
aggregate that is the RHS of an assignment, apply the check to
the LHS after the assignment, rather than to the aggregate. This
is more efficient than creating a temporary for the aggregate,
and prevents back-end crashes when the aggregate includes a
dynamic "others' association.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_ch12.adb (Analyze_Instance_And_Renamings):
Set variable to ignore SPARK_Mode in instance before the analysis
of the generated package declaration.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_res.adb (Resolve_Call): Do not issue a
message for calls inside expression function, unless body was
seen and is candidate for inlining.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_aux.adb (Is_Generic_Formal): Handle properly formal packages.
* sem_ch3.adb (Analyze_Declarations): In a generic subprogram
body. do not freeze the formals of the generic unit.
2017-09-06 Gary Dismukes <dismukes@adacore.com>
* errout.adb (Error_Msg): Separate the
treatment for warning vs. style messages in inlinings and
instantiations. Prevents blowups on calls to Warn_Insertion for
style messages, which should not be called in that case because
Warning_Msg_Char is not set.
2017-09-06 Justin Squirek <squirek@adacore.com>
* sem_prag.adb (Check_VFA_Conflicts): Created
to group all Volatile_Full_Access checks relating to other
representation pragmas (Mark_Component_Or_Object): Created
to centeralize the flagging of attributes for the record type
component case, a pragma applied individually to a component, and
the object case.
(Process_Atomic_Independent_Shared_Volatile):
Add propagation of certain pragmas to record components and move
evaluation of VFA checks
From-SVN: r251793
2017-09-06 Richard Biener <rguenther@suse.de>
* gcc.c-torture/execute/20050604-1.c: Adjust to be a better
test for correctness of vector lowering.
From-SVN: r251792
2017-09-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/82108
* tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
for gap in the non-permutation SLP case.
* gcc.dg/vect/pr82108.c: New testcase.
From-SVN: r251790
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Check_Postcondition_Use_In_Inlined_Subprogram):
Do not warn on conditions that are not obeyed for Inline_Always
subprograms, when assertions are not enabled.
2017-09-06 Arnaud Charlet <charlet@adacore.com>
* sem_util.adb (Unique_Entity): For abstract states return their
non-limited view.
2017-09-06 Bob Duff <duff@adacore.com>
* sem_ch12.adb (Copy_Generic_Node): When we copy a node
that is a proper body corresponding to a stub, we defer the
adjustment of the sloc until after the correct adjustment has
been computed. Otherwise, Adjust_Instantiation_Sloc will ignore
the adjustment, because it will be outside the range in (the old,
incorrect) S_Adjustment.
* inline.adb: Use named notation for readability and uniformity.
* sinput-l.adb: Minor improvements to debugging output printed
for Debug_Flag_L.
* sinput-l.ads (Create_Instantiation_Source): Minor comment
correction.
2017-09-06 Vincent Celier <celier@adacore.com>
* make.adb: Do not invoke gprbuild for -bargs -P.
2017-09-06 Sylvain Dailler <dailler@adacore.com>
* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Adding a
case when Op is of kind N_Qualified_Expression. In this case,
the function is called recursively on the subexpression like in
other cases.
* make.adb: Minor reformatting
2017-09-06 Justin Squirek <squirek@adacore.com>
* einfo.adb (Set_Linker_Section_Pragma): Modify
Set_Linker_Section_Pragma to be consistant with the "getter"
Linker_Section_Pragma.
* exp_ch5.adb (Expand_Formal_Container_Loop): Add proper error
checking for container loops so that the index cursor is not
directly changable by the user with the use of E_Loop_Parameter.
* sem_ch5.adb (Analyze_Block_Statement): Revert previous change.
* sem_warn.adb (Check_References): Revert previous change.
From-SVN: r251789
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (gnat_to_gnu) <N_Selected_Component>: Try
again to translate the prefix after the field if it is incomplete.
From-SVN: r251788
2017-09-06 Bob Duff <duff@adacore.com>
* exp_util.adb (Is_Displace_Call): Make sure it works for indirect
calls and the like.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_prag.adb (Analyze_Depends_Global): Reinforce test on object
declarations to only consider valid uses of Global/Depends those on
single concurrent objects.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch13.adb (Check_Record_Representation_Clause): Give an
error as soon as one of the specified components overlaps the
parent field.
2017-09-06 Arnaud Charlet <charlet@adacore.com>
* sem_prag.ads: minor fix typo in comment.
2017-09-06 Justin Squirek <squirek@adacore.com>
* sem_ch5.adb (Analyze_Block_Statement): Verify a block comes
from source before checking source references.
* sem_warn.adb (Check_References): Add check for internal block
before recursing.
2017-09-06 Vincent Celier <celier@adacore.com>
* make.adb, makeusg.adb, switch-m.adb, switch-m.ads, make_util.adb,
make_util.ads, sinput.adb, sinput.ads, clean.adb, gnatls.adb,
gnatname.adb: Remove the Project Manager from the GNAT tools.
2017-09-06 Bob Duff <duff@adacore.com>
* sem_util.ads: Minor comment fix.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Analyze_Associations, case of Formal_Package):
Generate a freeze node for the actual of a formal package, if
the actual is declared in the same unit and has a corresponding
body, to prevent the current instance from being frozen before
the actual is.
From-SVN: r251786
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch7.adb (Entity_Table_Size): Change to nearest prime number.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_warn.adb: Minor refactoring.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* einfo.ads, einfo.adb (Get_Classwwide_Pragma): New utility,
to retrieve the inherited classwide precondition/postcondition
of a subprogram.
* freeze.adb (Freeze_Entity): Use Get_Classwide_Pragma when
freezing a subprogram, to complete the generation of the
corresponding checking code.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Analyze_Inlined_Bodies): Remove restriction on
loading of parent body with a with clause for the main unit.
* gcc-interface/decl.c (defer_limited_with_list): Document
new usage.
(gnat_to_gnu_entity) <E_Access_Type>: Handle
completed Taft Amendment types declared in external units like
types from limited with clauses. Adjust final processing of
defer_limited_with_list accordingly.
2017-09-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_util.adb (Is_Controlled_Indexing): New routine.
(Is_Displace_Call): Use routine Strip to remove indirections.
(Is_Displacement_Of_Object_Or_Function_Result): Code clean up. Add a
missing case of controlled generalized indexing.
(Is_Source_Object): Use routine Strip to remove indirections.
(Strip): New routine.
2017-09-06 Bob Duff <duff@adacore.com>
* sysdep.c (__gnat_has_cap_sys_nice): If HAVE_CAPABILITY is defined,
we include the proper header. Otherwise, we just declare the necessary
things from the capabilities library. This is so we can build on
machines without that library, while still enabling that library.
At run time, we're using weak symbols, so __gnat_has_cap_sys_nice will
simply return 0 if the library is not present, or not included
in the link.
2017-09-06 Pierre-Marie de Rodat <derodat@adacore.com>
* exp_dbug.adb (Debug_Renaming_Declaration): Do not create an encoding
for renamings that involve function calls in prefix form.
2017-09-06 Bob Duff <duff@adacore.com>
* sem_ch3.adb (Analyze_Subtype_Declaration):
Set Has_Delayed_Freeze on a subtype of an incomplete type.
2017-09-06 Pierre-Marie de Rodat <derodat@adacore.com>
* par_sco.adb (Extend_Statement_Sequence): When the accept statement
has no parameter specification and no entry index, use the entry name
as the end of the generated SCO statement.
From-SVN: r251785
2017-09-06 Steve Baird <baird@adacore.com>
* exp_util.adb (Side_Effect_Free): For CodePeer (only) treat
uses of 'Image and related attributes as having side effects in
order to avoid replicating such uses.
* pprint.ads (Expression_Image) Add new generic formal flag
Hide_Temp_Derefs. The flag defaults to False; CodePeer will
(eventually) override the default.
* pprint.adb (Expression_Image) If the new flag is set, then
suppress the ".all" suffix when displaying a dereference whose
prefix is a use of a value-capturing compiler temp of the sort
generated by Expr_Util.Remove_Side_Effects .
* exp_attr.adb, g-catiio.adb, inline.adb, sem_attr.adb, sem_ch13.adb,
sem_ch7.adb, sem_dim.adb, sem_util.adb, sem_util.ads, sem_warn.adb:
Minor reformatting.
* inline.adb: Minor wording change.
From-SVN: r251784
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch7.adb: Update comment.
2017-09-06 Yannick Moy <moy@adacore.com>
* einfo.adb, einfo.ads (Is_Subprogram_Or_Entry): New predicate.
* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Use new function.
* sem_util.adb, sem_util.ads (Within_Protected_Type): Renaming
with slight modification from Is_Subp_Or_Entry_Inside_Protected,
so that applies to any entity.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_ch3.adb (Derived_Type_Declaration): Use
Incomplete_Or_Partial_View rather than local Find_Partial_View.
2017-09-06 Javier Miranda <miranda@adacore.com>
* g-catiio.ads, g-catiio.adb (Value): Extended to parse an UTC time
following ISO-8861.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_dim.adb (Analyze_Dimension): In an instance, a type
conversion takes its dimensions from the expression, not from
the context type.
(Dimensions_Of_Operand): Ditto.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to
null procedures when GNAT coverage is used, so that their (empty)
bodies are properly covered.
2017-09-06 Bob Duff <duff@adacore.com>
* sem_ch13.adb (Resolve_Aspect_Expressions): If
the entity is a type with discriminants, make the discriminants
directly visible in aspect clauses.
2017-09-06 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve_Arithmentic_Op): If both operands are
Universal_Real and the context is a floating-point type, resolve
both operands to the target type.
From-SVN: r251783
2017-09-06 Hristian Kirtchev <kirtchev@adacore.com>
* a-comlin.adb, exp_aggr.adb, exp_ch6.adb, frontend.adb, gnatbind.adb,
sem_ch3.adb, sem_util.adb: Minor reformatting.
2017-09-06 Yannick Moy <moy@adacore.com>
* freeze.adb (Check_Inherited_Conditions): Rewriting
of inherited preconditions and postconditions should only occur
in GNATprove mode, that is, when GNATprove_Mode is True, not to
be confused with SPARK_Mode being On.
2017-09-06 Yannick Moy <moy@adacore.com>
* sem_warn.adb (Check_References): Take into
account possibility of attribute reference as original node.
2017-09-06 Yannick Moy <moy@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): Protect against invalid
use of attribute.
2017-09-06 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Split_Unconstrained_Function): Also set Is_Inlined
on the procedure created to encapsulate the body.
* sem_ch7.adb: Add with clause for GNAT.HTable.
(Entity_Table_Size): New constant.
(Entity_Hash): New function.
(Subprogram_Table): New instantiation of GNAT.Htable.Simple_HTable.
(Is_Subprogram_Ref): Rename into...
(Scan_Subprogram_Ref): ...this. Record references to subprograms in
the table instead of bailing out on them. Scan the value of constants
if it is not known at compile time.
(Contains_Subprograms_Refs): Rename into...
(Scan_Subprogram_Refs): ...this.
(Has_Referencer): Scan the body of all inlined subprograms. Reset the
Is_Public flag on subprograms if they are not actually referenced.
(Hide_Public_Entities): Beef up comment on the algorithm.
Reset the table of subprograms on entry.
From-SVN: r251781