* gcc-interface/Make-lang.in (ada/%.o): Replace individual rules with
generic rule and add $(POSTCOMPILE).
(ADA_DEPS): New.
(.adb.o): Add @$(ADA_DEPS).
(.ads.o): Likewise.
(ada/a-except.o): Likewise.
(ada/s-excdeb.): Likewise.
(ada/s-assert.o): Likewise.
(ada/a-tags.o): Likewise.
(ada_generated_files): New variable.
Use them as dependency order for GNAT1_ADA_OBJS and GNATBIND_OBJS.
(ADA_DEPFILES): New variable.
Include them.
(ada_OBJS): Define.
Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r203508
2013-10-13 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Check_Mode): Do
not emit an error when we are looking at inputs and
the item is an unconstrained or tagged out parameter.
(Check_Mode_Restriction_In_Enclosing_Context): Use Get_Pragma
to find whether the context is subject to aspect/pragma Global.
(Collect_Subprogram_Inputs_Outputs): Unconstrained or tagged
out parameters are now considered inputs. Use Get_Pragma to
find wheher the subprogram is subject to aspect/pragma Global.
(Is_Unconstrained_Or_Tagged_Item): New routine.
2013-10-13 Thomas Quinot <quinot@adacore.com>
* einfo.ads: Minor reformatting.
* gcc-interface/Make-lang.in: Update dependencies.
From-SVN: r203506
2013-10-13 Robert Dewar <dewar@adacore.com>
* gnat_rm.texi: Add documentation for pragmas Pre[_Class]
Post[_Class].
* par-ch2.adb (Skip_Pragma_Semicolon): Handle extra semicolon nicely.
* par-prag.adb: Add entries for pragmas Pre[_Class] and
Post[_Class].
* sem_prag.adb: Add handling of pragmas Pre[_Class] and
Post[_Class].
* sem_util.adb (Original_Aspect_Name): Moved here from
Sem_Prag.Original_Name, and modified to handle pragmas
Pre/Post/Pre_Class/Post_Class.
* sem_util.ads (Original_Aspect_Name): Moved here from
Sem_Prag.Original_Name.
* snames.ads-tmpl: Add entries for pragmas Pre[_Class] and
Post[_Class].
2013-10-13 Robert Dewar <dewar@adacore.com>
* einfo.adb, sem_ch6.adb: Minor reformatting.
From-SVN: r203505
2013-10-13 Hristian Kirtchev <kirtchev@adacore.com>
* einfo.adb: Add node/list usage for Refined_State
and Refinement_Constituents.
(Get_Pragma): Update the
initialization of Is_CDG to include Refined_Global and
Refined_Depends. Rename constant Delayed to In_Contract and update
all of its occurrences.
(Is_Non_Volatile_State): New routine.
(Is_Volatile_State): Removed.
(Refined_State): New routine.
(Refinement_Constituents): New routine.
(Set_Refined_State): New routine.
(Set_Refinement_Constituents): New routine.
(Write_Field8_Name): Add output for Refinement_Constituents.
(Write_Field10_Name): Add output for Refined_State.
* einfo.ads: Add new synthesized attribute Is_Non_Volatile_State.
Remove synthesized attribute Is_Volatile_State. Add new
attributes Refined_State and Refinement_Constituents along with
usage in nodes.
(Get_Pragma): Update the comment on usage.
(Is_Non_Volatile_State): New routine.
(Is_Volatile_State): Removed.
(Refined_State): New routine and pragma Inline.
(Refinement_Constituents): New routine and pragma Inline.
(Set_Refined_State): New routine and pragma Inline.
(Set_Refinement_Constituents): New routine and pragma Inline.
* elists.ads, elists.adb (Clone): Removed.
(New_Copy_Elist): New routine.
(Remove): New routine.
* sem_ch3.adb (Analyze_Declarations): Use Defining_Entity
to get the entity of the subprogram [body].
(Analyze_Object_Declaration): Add initialization for
Refined_State.
* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing
for Refined_Global and Refined_Depends. Emit an error when
the body requires Refined_Global, but the aspect/pragma is
not present.
* sem_ch6.ads (Analyze_Subprogram_Body_Contract): Change
procedure signature and add comment on usage.
* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
for aspect Refined_Global.
* sem_prag.adb (Analyze_Abstract_State): Add initialization
of attributes Refined_State and Refinement_Constituents.
(Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part,
Analyze_Contract_Cases_In_Decl_Part): Remove local
constant Arg1.
(Analyze_Pragma): Add processing for pragma
Refined_Global. The analysis of Refined_Post and Refined_Pre
has been merged. Update an error message in the processing of
pragma Refined_State.
(Analyze_Refined_Global_In_Decl_Part): Provide implementation.
(Analyze_Refined_Pragma): New routine.
(Analyze_Refined_Pre_Post_Condition): Removed.
(Analyze_Refined_State_In_Decl_Part): Update the call to Clone.
(Analyze_Refinement_Clause): Make State_Id visible to all
nested subprogram.
(Check_Matching_Constituent): Establish
a relation between a refined state and its constituent.
(Collect_Hidden_States_In_Decls): Remove ??? comment. Look at
the entity of the object declaration to establish its kind.
* sem_util.adb: Alphabetize with and use clauses.
(Contains_Refined_State): New routine.
* sem_util.ads (Contains_Refined_State): New routine.
From-SVN: r203504
2013-10-13 Thomas Quinot <quinot@adacore.com>
* scos.ads: Minor documentation clarification.
2013-10-13 Thomas Quinot <quinot@adacore.com>
* s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when
building on AIX 5.3 or later, and to CLOCK_REALTIME on older
versions of AIX.
* init.c (pthread_condattr_setclock): Remove now useless weak symbol.
* thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2
compatibility shim.
* s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit
type).
(clock_gettime): Import from C runtime library.
* s-osinte-aix.adb (clock_gettime): Remove bogus emulation body,
this routine is provided by the system in current supported
versions of AIX.
2013-10-13 Robert Dewar <dewar@adacore.com>
* sem_ch3.adb: Minor reformatting.
2013-10-13 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): For a function whose return type
is incomplete, do not replace the type with the full view if the
type is a limited view. In that case the full view appears in a
different unit, and the back-end will retrieve it at the proper
elaboration point.
2013-10-13 Yannick Moy <moy@adacore.com>
* exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for
actuals.
From-SVN: r203503
2013-10-13 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb: in Ada 2012 access_to_function types can have
in-out parameters.
(Derived_Type_Declaration): SPARK restriction
must be flagged on the original node, since it may have been
written as a subtype declaration.
(Analyze_Subtype_Declaration): Do not enter name of
entity in declaration if it is the current entity, because it may
have been inserted in a previous analysis and it appears in the
else_part of an if-statement that is rewritten during expansion.
2013-10-13 Yannick Moy <moy@adacore.com>
* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove procedure.
(Expand_SPARK): Remove call to Expand_SPARK_N_Attribute_Reference and
Expand_SPARK_N_Simple_Return_Statement.
(Expand_SPARK_N_Simple_Return_Statement,
Expand_SPARK_Simple_Function_Return): Remove procedures.
From-SVN: r203502
2013-10-13 Vincent Celier <celier@adacore.com>
* gnat_ugn.texi: Minor editing.
2013-10-13 Ed Schonberg <schonberg@adacore.com>
* sem_ch3.adb (Check_Abstract_Overriding): If a synchronized
operation implements an interface primitive, mark the operation
as referenced, to prevent usually spurious messages about unused
entities: such operations are called in dispatching select
statements that are not visible to the compiler.
From-SVN: r203501
PR rtl-optimization/58662
* combine.c (try_combine): Take into account death nodes on I2 when
splitting a PARALLEL of two independent SETs. Fix dump message.
From-SVN: r203498
PR target/51244
* config/sh/sh_treg_combine.cc: New SH specific RTL pass.
* config.gcc (SH extra_objs): Add sh_ifcvt.o.
* config/sh/t-sh (sh_treg_combine.o): New entry.
* config/sh/sh.c (sh_fixed_condition_code_regs): New function that
implements the target hook TARGET_FIXED_CONDITION_CODE_REGS.
(register_sh_passes): New function. Register sh_treg_combine pass.
(sh_option_override): Invoke it.
(sh_canonicalize_comparison): Handle op0_preserve_value.
* sh.md (*cbranch_t"): Do not try to optimize missed test and branch
opportunities. Canonicalize branch condition.
(nott): Allow only if pseudos can be created for non-SH2A.
PR target/51244
* gcc.dg/torture/p51244-21.c: New.
* gcc.target/sh/pr51244-20.c: New.
* gcc.target/sh/pr51244-20-sh2a.c: New.
From-SVN: r203492
* config/i386/i386.c (ix86_expand_sse_compare_and_jump): Use mode
provided by ix86_fp_compare_mode instead of CCFPUmode.
testsuite/:
* gcc.target/i386/builtin-ucmp.c: New test.
From-SVN: r203483
PR libgomp/58691
* config/linux/proc.c (gomp_cpuset_popcount): Add unused attribute
to check variable.
(gomp_init_num_threads): Move i variable declaration into
#ifdef CPU_ALLOC_SIZE block.
* config/linux/affinity.c (gomp_affinity_init_level): Test
gomp_places_list_len == 0 rather than gomp_places_list == 0
when checking for topology reading error.
* team.c (gomp_team_start): Don't handle bind == omp_proc_bind_false.
* env.c (parse_affinity): Add ignore argument, if true, don't populate
gomp_places_list, only parse env var and always return false.
(parse_places_var): Likewise. Don't check gomp_global_icv.bind_var.
(initialize_env): Always parse OMP_PLACES and GOMP_CPU_AFFINITY env
vars, default to OMP_PROC_BIND=true if OMP_PROC_BIND wasn't specified
and either of these variables were parsed correctly into a places
list.
From-SVN: r203479
If an interface has hidden methods, we must make the interface
table comdat if it is for an unnamed type.
When we create a stub method for an unnamed type, don't make
it publically visible.
From-SVN: r203468
2013-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/vector.md (vec_realign_load<mode>): Generate vperm
directly to circumvent subtract from splat{31} workaround.
* config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_le): New
prototype.
* config/rs6000/rs6000.c (altivec_expand_vec_perm_le): New.
* config/rs6000/altivec.md (define_c_enum "unspec"): Add
UNSPEC_VPERM_X and UNSPEC_VPERM_UNS_X.
(altivec_vperm_<mode>): Convert to define_insn_and_split to
separate big and little endian logic.
(*altivec_vperm_<mode>_internal): New define_insn.
(altivec_vperm_<mode>_uns): Convert to define_insn_and_split to
separate big and little endian logic.
(*altivec_vperm_<mode>_uns_internal): New define_insn.
(vec_permv16qi): Add little endian logic.
From-SVN: r203457