aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2015-10-27Move powi folds to match.pdRichard Sandiford5-49/+40
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_powi): Delete. (fold_builtin_2): Handle constant powi arguments here. * match.pd: Add rules previously handled by fold_builtin_powi. gcc/testsuite/ * gcc.dg/builtins-52.c: Add -O to dg-options. From-SVN: r229409
2015-10-27Move pow folds to match.pdRichard Sandiford5-123/+88
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_pow): Delete in favor of... (fold_const_builtin_pow): ...this new function. Only handle constant arguments. (fold_builtin_2): Update accordingly. * match.pd: Add rules previously handled by fold_builtin_pow. gcc/testsuite/ * gcc.dg/torture/builtin-math-1.c: Skip at -O0. From-SVN: r229408
2015-10-27Move hypot folds to match.pdRichard Sandiford3-34/+21
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_hypot): Delete. (fold_builtin_2): Handle constant hypot arguments here. * match.pd: Fold hypot(x, 0) and hypot(0, x) to x. Canonicalize hypot(x, x) to fabs(x)*sqrt(2). From-SVN: r229407
2015-10-27Don't create SSA names until in SSA formRichard Sandiford2-2/+17
An upcoming patch adds a fold from hypot(x,x) to fabs(x)*sqrt(2). This is unusual in that it could trigger in the gimplifier but would require new SSA names to be created. This patch makes sure that we use the usual: if (gimple_in_ssa_p (cfun)) res = make_ssa_name (type); else res = create_tmp_reg (type); formula to cope with cases where we're not yet in SSA form. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * gimple-match-head.c (maybe_push_res_to_seq): Use create_tmp_reg instead of make_ssa_name if not yet in SSA form. From-SVN: r229406
2015-10-27cfg.c (free_edge): Add function argument and use it instead of cfun.Richard Biener25-115/+187
2015-10-27 Richard Biener <rguenther@suse.de> * cfg.c (free_edge): Add function argument and use it instead of cfun. (clear_edges): Likewise. * cfg.h (clear_edges): Adjust prototype. * cfgexpand.c (pass_expand::execute): Adjust. * cfgloop.c (release_recorded_exits): Add function argument and use it instead of cfun. * cfgloop.h (release_recorded_exits): Adjust prototype. (loops_state_satisfies_p): Add overload with function argument. (loops_state_set): Likewise. (loops_state_clear): Likewise. (struct loop_iterator): Add function argument to constructor and iterator and use it instead of cfun. (FOR_EACH_LOOP_FN): New macro. (loop_optimizer_finalize): Add overload with function argument. * loop-init.c (loop_optimizer_init): Adjust. (fix_loop_structure): Likewise. (loop_optimizer_finaliz): Add function argument and use it instead of cfun. * tree-cfg.c (delete_tree_cfg_annotations): Likewise. * tree-cfg.h (delete_tree_cfg_annotations): Adjust prototype. * cgraph.c (release_function_body): Do not push/pop cfun. * final.c (rest_of_clean_state): Adjust. * graphite.c (graphite_finalize): Likewise. * tree-ssa-copy.c (fini_copy_prop): Likewise. * tree-ssa-dce.c (perform_tree_ssa_dce): Likewise. * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Likewise. (tree_unroll_loops_completely): Likewise. (pass_complete_unrolli::execute): Likewise. * tree-ssa-loop-niter.c (free_numbers_of_iterations_estimates): Add function argument and use it instead of cfun. * tree-ssa-loop-niter.h (free_numbers_of_iterations_estimates): Adjust prototype. * tree-ssa-loop.c (tree_ssa_loop_done): Adjust. * tree-ssa.c (delete_tree_ssa): Add function argument and use it instead of cfun. * tree-ssa.h (delete_tree_ssa): Adjust prototype. * tree-ssanames.c (fini_ssanames): Add function argument and use it instead of cfun. * tree-ssanames.c (fini_ssanames): Adjust prototype. * tree-vrp.c (execute_vrp): Adjust. * value-prof.c (free_histograms): Add function argument and use it instead of cfun. * value-prof.h (free_histograms): Adjust prototype. From-SVN: r229405
2015-10-27[PR c/64765, c/64880] Support OpenACC Combined Directives in C, C++Thomas Schwinge23-268/+312
gcc/c-family/ PR c/64765 PR c/64880 * c-common.h (c_oacc_split_loop_clauses): Declare function. * c-omp.c (c_oacc_split_loop_clauses): New function. gcc/c/ PR c/64765 PR c/64880 * c-parser.c (c_parser_oacc_loop): Add mask, cclauses formal parameters, and handle these. Adjust all users. (c_parser_oacc_kernels, c_parser_oacc_parallel): Merge functions into... (c_parser_oacc_kernels_parallel): ... this new function. Adjust all users. * c-tree.h (c_finish_oacc_parallel, c_finish_oacc_kernels): Don't declare functions. (c_finish_omp_construct): Declare function. * c-typeck.c (c_finish_oacc_parallel, c_finish_oacc_kernels): Merge functions into... (c_finish_omp_construct): ... this new function. gcc/cp/ PR c/64765 PR c/64880 * cp-tree.h (finish_oacc_kernels, finish_oacc_parallel): Don't declare functions. (finish_omp_construct): Declare function. * parser.c (cp_parser_oacc_loop): Add p_name, mask, cclauses formal parameters, and handle these. Adjust all users. (cp_parser_oacc_kernels, cp_parser_oacc_parallel): Merge functions into... (cp_parser_oacc_kernels_parallel): ... this new function. Adjust all users. * semantics.c (finish_oacc_kernels, finish_oacc_parallel): Merge functions into... (finish_omp_construct): ... this new function. gcc/ * tree.h (OACC_PARALLEL_BODY, OACC_PARALLEL_CLAUSES) (OACC_KERNELS_BODY, OACC_KERNELS_CLAUSES, OACC_KERNELS_COMBINED) (OACC_PARALLEL_COMBINED): Don't define macros. Adjust all users. gcc/testsuite/ PR c/64765 PR c/64880 * c-c++-common/goacc/loop-1.c: Don't skip for C++. Don't prune sorry message. (PR64765): New function. * gfortran.dg/goacc/coarray_2.f90: XFAIL. * gfortran.dg/goacc/combined_loop.f90: Extend. Don't prune sorry message. * gfortran.dg/goacc/cray.f95: Refine prune directive. * gfortran.dg/goacc/parameter.f95: Likewise. libgomp/ * testsuite/libgomp.oacc-c-c++-common/combdir-1.c: New file. * testsuite/libgomp.oacc-fortran/combdir-1.f90: Likewise. From-SVN: r229404
2015-10-27Add var in push_fields_onto_fieldstackTom de Vries2-5/+11
2015-10-27 Tom de Vries <tom@codesourcery.com> * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add and use var field_type. From-SVN: r229403
2015-10-27loop-invariant.c (struct def): New field can_prop_to_addr_uses.Bin Cheng2-2/+51
* loop-invariant.c (struct def): New field can_prop_to_addr_uses. (inv_can_prop_to_addr_use): New function. (record_use): Call can_prop_to_addr_uses, set the new field. (get_inv_cost): Count cost if inv can't be propagated into its address uses. From-SVN: r229402
2015-10-27Daily bump.GCC Administrator1-1/+1
From-SVN: r229399
2015-10-26DR 2179Jason Merrill3-8/+25
DR 2179 * pt.c (process_partial_specialization): Handle error_mark_node from most_specialized_partial_spec. From-SVN: r229395
2015-10-26* config/linux.h (INCLUDE_DEFAULTS): Add INCLUDE_DEFAULTS_MUSL_LOCAL.Doug Evans2-0/+5
From-SVN: r229392
2015-10-26re PR fortran/66056 (ICEs and endless compilation for lonely labels/numbers ↵Louis Krupp6-2/+29
in type) 2015-10-26 Louis Krupp <louis.krupp@zoho.com> PR fortran/66056 * fortran.h: Include namespace pointer in statement label structure. * symbol.c (gfc_get_st_label): Store pointer to namespace that owns the statement label tree in each label. (gfc_free_st_label): Use namespace owning statement label tree when deleting statement label. * io.c: Initialize format_asterisk with NULL namespace pointer. 2015-10-26 Louis Krupp <louis.krupp@zoho.com> PR fortran/66056 * gfortran.dg/empty_label_typedecl.f90: New test From-SVN: r229390
2015-10-26re PR fortran/36192 (ICE with wrong index types and bad parens)Steven G. Kargl4-2/+24
2015-10-26 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/36192 * array.c (gfc_ref_dimen_size): Check for BT_INTEGER before calling mpz_set. 2015-10-26 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/36192 * gfortran.dg/pr36192.f90: New test. From-SVN: r229387
2015-10-26match.pd (fold_widened_comparison): Apply simplifications to all integral types.Eric Botcazou7-20/+53
* match.pd (fold_widened_comparison): Apply simplifications to all integral types. From-SVN: r229384
2015-10-26target.def (TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P): New hook.Simon Dardis9-1/+108
gcc/ * target.def (TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P): New hook. * doc/tm.texi.in (TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P): Document. * doc/tm.texi: Regenerated. * reorg.c (dbr_schedule): Use new hook. * config/mips/mips.c (mips_no_speculation_in_delay_slots_p): New. testsuite/ * gcc.target/mips/ds-schedule-1.c: New. * gcc.target/mips/ds-schedule-2.c: New. From-SVN: r229383
2015-10-26[multiple changes]Arnaud Charlet9-170/+264
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Add_Item_To_Name_Buffer): Update the comment on usage. Add an output string for loop parameters. (Analyze_Global_Items): Loop parameters are now a valid global item. The share the legality checks of constants. (Analyze_Input_Output): Loop parameters are now a valid dependency item. (Find_Role): Loop parameters share the role of constants. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Generalized_Indexing): In ASIS mode, preserve the Generalized_ indexing link if the context is not a spec expression that will be analyzed anew. 2015-10-26 Javier Miranda <miranda@adacore.com> * exp_ch6.ads, exp_ch6.adb (Build_Procedure_Body_Form): Promote it to library level (to invoke this routine from the semantic analyzer). * sem_ch6.adb (Analyze_Subprogram_Body_Helper): When generating C code, invoke Build_Procedure_Body_Form to transform a function that returns a constrained array type into a procedure with an out parameter that carries the return value. 2015-10-26 Arnaud Charlet <charlet@adacore.com> * a-reatim.ads: Add "Clock_Time with Synchronous" contract in package Ada.Real_Time. * a-taside.ads: Add "Tasking_State with Synchronous" contract in package Ada.Task_Identification. * sem_ch12.adb: minor typo in comment From-SVN: r229377
2015-10-26contracts.adb (Analyze_Object_Contract): Set and restore the SPARK_Mode for ↵Hristian Kirtchev9-69/+184
both constants and objects. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * contracts.adb (Analyze_Object_Contract): Set and restore the SPARK_Mode for both constants and objects. Factor out the semantic checks concerning Ghost objects. * freeze.adb (Freeze_Array_Type): A Ghost array type cannot have a concurrent component type. (Freeze_Entity): A Ghost type cannot also be concurrent. (Freeze_Record_Type): A Ghost record type cannot have a concurrent component. * sem_prag.adb (Analyze_Abstract_State): A Ghost abstract state cannot also be synchronized. (Check_Ghost_Synchronous): New routine. * sem_util.adb (Yields_Synchronized_Object): Correct the case of record components to account for the case where the type has no component list. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * expander.adb (Expand): Expand a single protected declaration. * exp_ch9.ads, exp_ch9.adb (Expand_N_Single_Protected_Declaration): New routine. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_res.adb (Is_OK_Volatile_Context): A volatile object may appear in an object declaration as long as it denotes the name. From-SVN: r229376
2015-10-26[PATCH] [PR tree-optimization/68013] Make sure first block in FSM pathJeff Law4-0/+33
is in VISITED_BBs PR tree-optimization/68013 * tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths): Make sure the first block in the path is in VISITED_BBs. PR tree-optimization/68013 * gcc.c-torture/compile/pr68013.c: New test. From-SVN: r229375
2015-10-26[multiple changes]Arnaud Charlet4-26/+73
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch9.adb (Analyze_Single_Protected_Declaration): The anonymous object no longer comes from source. (Analyze_Single_Task_Declaration): The anonymous object no longer comes from source. * sem_prag.adb (Analyze_Pragma): The analysis of pragma SPARK_Mode now recognizes the internal anonymous object created for a single concurren type as a valid context. (Find_Related_Context): The internal anonymous object created for a single concurrent type is now a valid context. (Find_Related_Declaration_Or_Body): The internal anonymous object created for a single concurrent type is now a valid context. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Inherit_Rep_Item_Chain): Another another guard to prevent circularities in the rep_item_chain of the full view of a type extension in a child unit that extends a private type from the parent. From-SVN: r229374
2015-10-26[multiple changes]Arnaud Charlet14-50/+521
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * atree.ads, atree.adb (Ekind_In): New 10 and 11 parameter versions. * contracts.ads, contracts.adb (Analyze_Initial_Declaration_Contract): New routine. * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Analyze the contract of the initial declaration. (Analyze_Subprogram_Body_Helper): Analyze the contract of the initial declaration. * sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the contract of the initial declaration. * sem_ch9.adb (Analyze_Entry_Body): Analyze the contract of the initial declaration. (Analyze_Protected_Body): Analyze the contract of the initial declaration. (Analyze_Task_Body): Analyze the contract of the initial declaration. * sem_prag.adb (Add_Entity_To_Name_Buffer): Use "type" rather than "unit" as it makes the error messages sound better. (Add_Item_To_Name_Buffer): Update comment on usage. The routine now supports discriminants and current instances of concurrent types. (Analyze_Depends_In_Decl_Part): Install the discriminants of a task type. (Analyze_Global_In_Decl_Part): Install the discriminants of a task type. (Analyze_Global_Item): Add processing for current instances of concurrent types and include discriminants as valid global items. (Analyze_Input_Output): Discriminants and current instances of concurrent types are now valid items. Update various error messages. (Check_Usage): Current instances of protected and task types behaves as formal parameters. (Collect_Subprogram_Inputs_Outputs): There is no longer need to manually analyze [Refined_]Global thanks to freezing of initial declaration contracts. Add processing for the current instance of a concurrent type. (Find_Role): Add categorizations for discriminants, protected and task types. (Is_CCT_Instance): New routine. (Match_Items): Update the comment on usage. Update internal comments. * sem_prag.ads (Collect_Subprogram_Inputs_Outputs): Update the comment on usage. * sem_util.adb (Entity_Of): Ensure that the entity is an object when traversing a potential renaming chain. (Fix_Msg): Use "type" rather than "unit" as it makes the error messages sound better. * sem_util.ads (Fix_Msg): Update the comment on usage. 2015-10-26 Arnaud Charlet <charlet@adacore.com> * par.adb (Par): Do not generate an error when generating SCIL for predefined units or new children of system and co. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * einfo.adb: Access_Disp_Table applies to a private extension. From-SVN: r229373
2015-10-26re PR rtl-optimization/67443 (DSE removes required store instruction)Richard Biener4-7/+70
2015-10-26 Richard Biener <rguenther@suse.de> Dominik Vogt <vogt@linux.vnet.ibm.com> PR middle-end/67443 * alias.c (ao_ref_from_mem): Remove promoted subreg handling. Properly prune ref->ref for accesses outside of ref. * gcc.target/s390/pr67443.c: New testcase. Co-Authored-By: Dominik Vogt <vogt@linux.vnet.ibm.com> From-SVN: r229372
2015-10-26Allow more complex call replacements in gimple-fold.cRichard Sandiford2-1/+19
An upcoming patch adds a match.pd rule that folds pow(pow(x,y),z) to pow(x,y*z). This fold can reuse the existing pow gimple statement and simply replace the operands with x and y*z. However, the y*z itself requires a separate gimple statement and the code wasn't prepared to handle that. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * gimple-fold.c (replace_stmt_with_simplification): Don't allow new statements to be inserted if inplace. Allow calls to have nonempty sequences. From-SVN: r229371
2015-10-26Fix attribution in ChangeLogRichard Sandiford1-1/+1
While going through some history, I noticed that I'd committed one of Alan's changes with my email address rather than his. Sorry for the screw-up. From-SVN: r229366
2015-10-26tree-object-size.c: Remove builtins.h include, include tree-cfg.h.Richard Biener3-97/+75
2015-10-26 Richard Biener <rguenther@suse.de> * tree-object-size.c: Remove builtins.h include, include tree-cfg.h. (do_valueize): New function. (pass_object_sizes::execute): Use gimple_fold_stmt_to_constant and replace_uses_by. * tree-ssa-threadedge.c: Remove builtins.h include, include gimple-fold.h (fold_assignment_stmt): Remove. (threadedge_valueize): New function. (record_temporary_equivalences_from_stmts): Use gimple_fold_stmt_to_constant_1, note additional cleanup opportunities. From-SVN: r229364
2015-10-26[multiple changes]Arnaud Charlet6-266/+33
2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Generalized_Indexing): In ASIS mode, when restoring original node, remove Generalized_Indexing operation so that it is recreated during re- analysis. 2015-10-26 Javier Miranda <miranda@adacore.com> * exp_unst.adb: (Unnest_Subprogram): Replace absolute references to 1 and 0 by their counterpart relative references through Subps_First. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * par-ch3.adb (P_Declarative_Items): In case of misplaced aspect specifications, ensure that flag Done is properly set to continue parse. * sem_prag.adb, sem_prag.ads: Remove Build_Generic_Class_Condition, unused. From-SVN: r229362
2015-10-26[multiple changes]Arnaud Charlet4-26/+31
2015-10-26 Emmanuel Briot <briot@adacore.com> * s-os_lib.adb (Argument_String_To_List): Remove backslashes in argument value. 2015-10-26 Javier Miranda <miranda@adacore.com> * exp_unst.ads, exp_unst.adb (Is_Uplevel_Referenced): Removed. From-SVN: r229361
2015-10-26match.pd ((A & ~B) - (A & B) -> (A ^ B) - B): Add missing :c.Richard Biener2-2/+7
2015-10-26 Richard Biener <rguenther@suse.de> * match.pd ((A & ~B) - (A & B) -> (A ^ B) - B): Add missing :c. ( (X & ~Y) | (~X & Y) -> X ^ Y): Remove redundant :c. From-SVN: r229360
2015-10-26[multiple changes]Arnaud Charlet8-21/+42
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb, sem_aux.adb, exp_attr.adb, sem_eval.adb: Minor reformatting. * sem_util.adb, sem_ch5.adb: Minor reformatting. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * exp_unst.adb (Unnest_Subprogram): Add guard to prevent compiler abort when handling a reference to a formal in an aspect of a nested subprogram declaration as an uplevel reference. From-SVN: r229359
2015-10-26[multiple changes]Arnaud Charlet9-15/+153
2015-10-26 Bob Duff <duff@adacore.com> * snames.ads-tmpl, aspects.adb, aspects.ads: Add the aspect and pragma names and enter into relevant tables. * sem_ch13.adb (Analyze_Aspect_Specifications): Analyze aspect Predicate_Failure. * sem_prag.adb (Predicate_Failure): Analyze pragma Predicate_Failure. * exp_util.adb (Make_Predicate_Check): When building the Check pragma, if Predicate_Failure has been specified, add the relevant String argument to the pragma. * par-prag.adb (Prag): Add Predicate_Failure to list of pragmas handled during semantic analysis. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Assignment): If the left-hand side is an indexed component with generalized indexing, discard interpretation that yields a reference type, which is not assignable. This prevent spurious ambiguities when the right-hand side is an aggregate which does not provide a target type. From-SVN: r229358
2015-10-26[multiple changes]Arnaud Charlet22-821/+1962
2015-10-26 Bob Duff <duff@adacore.com> * exp_ch7.adb, exp_ch6.adb: Minor comment fix. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb (Move_Or_Merge_Aspects): Move all aspects related to a single concurrent type declaration to the declaration of the anonymous object if they qualify. (Relocate_Aspect): Update comment on usage. * aspects.ads Add new sectioon on aspect specifications on single concurrent types. Add new table Aspect_On_Anonymous_Object_OK. (Move_Or_Merge_Aspects): Udate the comment on usage. * atree.adb (Elist36): New routine. (Set_Elist36): New routine. * atree.ads (Elist36): New routine along with pragma Inline. (Set_Elist36): New routine along with pragma Inline. * atree.h: Elist36 is now an alias for Field36. * contracts.adb (Add_Contract_Item): Add processing for protected units and extra processing for variables. (Analyze_Object_Contract): Code cleanup. The processing of Part_Of now depends on wherer the object is a constant or a variable. Add processing for pragmas Depends and Global when they apply to a single concurrent object. Verify that a variable which is part of a single concurrent type has full default initialization. Set/restore the SPARK_Mode of a single concurrent object. (Analyze_Protected_Contract): New routine. * contracts.ads (Add_Contract_Item): Update the comment on usage. (Analyze_Object_Contract): Update the comment on usage. (Analyze_Protected_Contract): New routine. (Analyze_Task_Contract): Update the comment on usage. * einfo.adb Part_Of_Constituents now uses Elist10. (Anonymous_Object): New routine. (Contract): Code cleanup. (Has_Option): Remove the assumption that the only simple option is External. (Is_Synchronized_State): New routine. (Part_Of_Constituents): This attribute applies to variables and uses Elist10. (Set_Anonymous_Object): New routine. (Set_Contract): Code cleanup. (Set_Part_Of_Constituents): This attribute applies to variables and uses Elist10. (Set_SPARK_Aux_Pragma): Code cleanup. (Set_SPARK_Aux_Pragma_Inherited): Code cleanup. (Set_SPARK_Pragma): Code cleanup. This attribute applies to variables. (Set_SPARK_Pragma_Inherited): Code cleanup. This attribute applies to variables. (SPARK_Aux_Pragma): Code cleanup. (SPARK_Aux_Pragma_Inherited): Code cleanup. (SPARK_Pragma): Code cleanup. This attribute applies to variables. (SPARK_Pragma_Inherited): Code cleanup. This attribute applies to variables. (Write_Field9_Name): Remove the output for Part_Of_Constituents. (Write_Field10_Name): Add output for Part_Of_Constituents. (Write_Field30_Name): Add output for Anonymous_Object. (Write_Field34_Name): Output SPARK_Pragma for protected types and variables. * einfo.ads: New attributes Anonymous_Object and Is_Synchronized_State along with usage in entities. Update the documentation of attributes Contract Encapsulating_State Part_Of_Constituents SPARK_Aux_Pragma SPARK_Aux_Pragma_Inherited SPARK_Pragma SPARK_Pragma_Inherited (Anonymous_Object): New routine along with pragma Inline. (Is_Synchronized_State): New routine. (Set_Anonymous_Object): New routine along with pragma Inline. * freeze.adb (Freeze_Record_Type): Ensure that a non-synchronized record does not have synchronized components. * sem_ch3.adb (Analyze_Declarations): Code cleanup. Analyze the contract of protected units. * sem_ch9.adb Add with and use clauses for Sem_Prag. Code cleanup. (Analyze_Single_Protected_Declaration): Reimplemented. (Analyze_Single_Task_Declaration): Reimplemented. * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Part_Of can now apply to a single concurrent type declaration. Rely on Insert_Pragma to place the pragma. Update the error message on usage to reflect the new context. (Insert_Pragma): When inserting pragmas for a protected or task type, create a definition if the type lacks one. * sem_elab.adb (Check_A_Call): Code cleanup. Issue error message related to elaboration issues for SPARK when SPARK_Mode is "on" and the offending entity comes from source. * sem_prag.adb (Analyze_Abstract_State): Add new flag Synchronous_Seen. Update the analysis of simple options Externa, Ghost and Synchronous. Update various error messages to reflect the use of single concurrent types. (Analyze_Depends_Global): Pragmas Depends and Global can now apply to a single task type or a single concurrent object created for a task type. (Analyze_Depends_In_Decl_Part): Do not push a scope when the context is a single concurrent object. (Analyze_Part_Of): Moved out of Analyze_Pragma. The routine has a new profile and comment on usage. (Analyze_Part_Of_In_Decl_Part): New routine. (Analyze_Part_Of_Option): Update the call to Analyze_Part_Of. (Analyze_Pragma): Pragma Abstract_State can now carry simple option Synchronous. Pragma Part_Of can now apply to a single concurrent type declaration. The analysis of pragma Part_Of is delayed when the context is a single concurrent object. (Analyze_Refined_Depends_In_Decl_Part): Use the anonymous object when the context is a single concurren type. (Analyze_Refined_Global_In_Decl_Part): Use the anonymous object when the context is a single concurren type. (Check_Ghost_Constituent): Removed. (Check_Matching_Constituent): Renamed to Match_Constituent. (Check_Matching_State): Renamed to Match_State. (Collect_Constituent): Update the comment on usage. Verify various legality rules related to ghost and synchronized entities. (Find_Related_Declaration_Or_Body): A single task declaration is no longer a valid context for a pragma. (Fix_Msg): Moved to Sem_Util. (Process_Overloadable): Add processing for single task objects. (Process_Visible_Part): Add processing for single concurrent types. (Relocate_Pragmas_To_Anonymous_Object): New routine. * sem_prag.ads Add new table Pragma_On_Anonymous_Object_OK. (Analyze_Part_Of_In_Decl_Part): New routine. (Relocate_Pragmas_To_Anonymous_Object): New routine. * sem_util.adb (Defining_Entity): Code cleanup. (Fix_Msg): Moved from Sem_Prag and augmented to handle mode replacements. (Has_Full_Default_Initialization): New routine. (Is_Descendant_Of_Suspension_Object): Moved out of Is_Effectively_Volatile. (Is_Single_Concurrent_Object): New routine. (Is_Single_Concurrent_Type): New routine. (Is_Single_Concurrent_Type_Declaration): New routine. (Is_Synchronized_Object): New routine. (Yields_Synchronized_Object): New routine. * sem_util.ads (Fix_Msg): Moved form Sem_Prag. Update the comment on usage. (Has_Full_Default_Initialization): New routine. (Is_Single_Concurrent_Object): New routine. (Is_Single_Concurrent_Type): New routine. (Is_Single_Concurrent_Type_Declaration): New routine. (Is_Synchronized_Object): New routine. (Yields_Synchronized_Object): New routine. * snames.ads-tmpl: Add name Synchronous. From-SVN: r229357
2015-10-26sysdep.c (__gnat_get_task_options): Refine the workaround for the ↵Jerome Lambourg3-5/+17
VX_USR_TASK_OPTION bug in VxWorks 7... 2015-10-26 Jerome Lambourg <lambourg@adacore.com> * sysdep.c (__gnat_get_task_options): Refine the workaround for the VX_USR_TASK_OPTION bug in VxWorks 7, as we cannot check the value of VX_DEALLOC_TCB in RTP mode, the macro value not being defined in the headers. * g-arrspl.ads: Fix typo. From-SVN: r229356
2015-10-26[multiple changes]Arnaud Charlet5-22/+195
2015-10-26 Jerome Lambourg <lambourg@adacore.com> * sysdep.c (__gnat_get_task_options): Workaround a VxWorks bug where VX_DEALLOC_TCB task option is forbidden when calling taskCreate but allowed in VX_USR_TASK_OPTIONS. 2015-10-26 Javier Miranda <miranda@adacore.com> * exp_unst.ads, exp_unst.adb (Is_Uplevel_Referenced): New subprogram. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Constant_Indexing_OK): New predicate, subsidiary of Try_Container_Indexing, that implements the name resolution rules given in RM 4.1.6 (13-15). From-SVN: r229355
2015-10-26sem_ch3.adb, [...]: Minor reformatting.Hristian Kirtchev3-21/+32
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch3.adb, sem_util.adb: Minor reformatting. From-SVN: r229354
2015-10-26re PR fortran/66927 (ICE in gfc_conf_procedure_call)Andre Vehreschild2-4/+30
gcc/fortran/ChangeLog: 2015-10-26 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/66927 * trans-array.c (evaluate_bound): For deferred length arrays get the bounds directly from the descriptor, i.e., prevent using constant zero lower bound from the gfc_conv_array_lbound () routine. (gfc_conv_section_startstride): Hand deferred array status to evaluate_bound (). (gfc_conv_expr_descriptor): Same. From-SVN: r229353
2015-10-26[multiple changes]Arnaud Charlet7-52/+97
2015-10-26 Javier Miranda <miranda@adacore.com> * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Return False when generating C code. * sem_ch3.adb: Fix typos. 2015-10-26 Bob Duff <duff@adacore.com> * sem_ch13.adb (Build_Predicate_Functions): Change the structure of the predicate functions to reflect the requirements of AI12-0071. (Add_Condition): New procedure to do the "and-then-ing" in Add_Call and Add_Predicates. * einfo.ads (Static_Real_Or_String_Predicate): Change the documentation to reflect the new structure. * sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Change the walking of the predicate expression to reflect the new structure. * exp_util.adb: Minor comment fix. From-SVN: r229352
2015-10-26s-rident.ads (No_Dynamic_Sized_Objects): New restriction name.Bob Duff6-0/+131
2015-10-26 Bob Duff <duff@adacore.com> * s-rident.ads (No_Dynamic_Sized_Objects): New restriction name. * sem_util.ads, sem_util.adb (All_Composite_Constraints_Static): New function to check that all relevant constraints are static. * sem_aggr.adb (Resolve_Array_Aggregate): Call All_Composite_Constraints_Static on the bounds of named array aggregates. * sem_ch3.adb (Analyze_Subtype_Declaration): Call All_Composite_Constraints_Static if the type is composite and the subtype is constrained. From-SVN: r229351
2015-10-26[multiple changes]Arnaud Charlet3-8/+21
2015-10-26 Javier Miranda <miranda@adacore.com> * exp_ch6.adb (Expand_N_Subprogram_Declaration): Skip the frontend transformation of functions that return a constrained array into a procedure when they are unchecked_conversion instances. 2015-10-26 Gary Dismukes <dismukes@adacore.com> * s-os_lib.ads: Minor reformatting/rewording. From-SVN: r229350
2015-10-26debug.adb: Introduce debug flag -gnatd.5.Arnaud Charlet2-1/+9
2015-10-26 Arnaud Charlet <charlet@adacore.com> * debug.adb: Introduce debug flag -gnatd.5. From-SVN: r229349
2015-10-26s-os_lib.ads, [...] (Kill): New routine.Pascal Obry6-50/+71
2015-10-26 Pascal Obry <obry@adacore.com> * s-os_lib.ads, s-os_lib.adb (Kill): New routine. This routine makes visible support for killing processes in expect.c. * expect.c (__gnat_kill): Removed from here. * adaint.c (__gnat_kill): Added here to be usable in the compiler (System.OS_Lib). * make.adb (Sigint_Intercepted): Use the Kill routine from System.OS_Lib. From-SVN: r229348
2015-10-26einfo.ads, [...] (Needs_Typedef, [...]): Removed, no longer used.Arnaud Charlet4-32/+6
2015-10-26 Arnaud Charlet <charlet@adacore.com> * einfo.ads, einfo.adb, exp_unst.adb (Needs_Typedef, Set_Needs_Typedef): Removed, no longer used. From-SVN: r229347
2015-10-26tree-vect-loop.c (vect_create_epilog_for_reduction): Fix VEC_COND_EXPR types.Alan Hayward2-2/+8
2015-10-26 Alan Hayward <alan.hayward@arm.com> * tree-vect-loop.c (vect_create_epilog_for_reduction): Fix VEC_COND_EXPR types. From-SVN: r229346
2015-10-26[multiple changes]Arnaud Charlet8-33/+83
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * einfo.adb (First_Component): Update the assertion to allow for concurrent types. (First_Component_Or_Discriminant): Update the assertion to allow for concurrent types. * einfo.ads: Update the documentation of attributes First_Component and First_Component_Or_Discriminant along with uses in entities. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_res.adb (Resolve_Actuals): An effectively volatile object may act as an actual when the corresponding formal is of a non-scalar effectively volatile type, not just a non-scalar volatile type. 2015-10-26 Bob Duff <duff@adacore.com> * sinfo.ads, sem_util.ads: Update comments. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Analyze_Refined_Depends_Global_Post): When dealing with protected entries or protected subprograms, use the enclosing protected type to ensure that the protected type declaration is declared in a package spec. Remove an obsolete attempt to ensure the aggregate for of pragma Refined_State as this routine is never called in that case. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop_Over_Container): For an element iterator loop, the element is a constant if the container object is a constant, even if the container type has a Variable_Indexing aspect. From-SVN: r229345
2015-10-26[auto-inc-dec.c] Account for cost of move operation in FORM_PRE_ADD and ↵Kyrylo Tkachov2-22/+23
FORM_POST_ADD cases * auto-inc-dec.c (insert_move_insn_before): Delete. (attempt_change): Remember to cost the simple move in the FORM_PRE_ADD and FORM_POST_ADD cases. From-SVN: r229344
2015-10-26[multiple changes]Arnaud Charlet16-23/+105
2015-10-26 Bob Duff <duff@adacore.com> * s-fileio.adb (Fopen_Mode): Use "r+" for Out_File/Stream_IO, so the file won't be truncated on 'fopen', as required by AI95-00283-1. 2015-10-26 Bob Duff <duff@adacore.com> * gnat1drv.adb, prj.adb, sem_ch6.adb, s-regpat.adb, sem_prag.adb: Fix typos. * einfo.ads, restrict.ads: Minor comment fixes. * err_vars.ads, sem_util.adb, errout.ads: Code clean up. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Assignment): Do not check that the Left-hand side is legal in an inlined body, check is done on the original template. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * exp_util.ads, exp_util.adb (Find_Primitive_Operations): New subprogram to retrieve by name the possibly overloaded set of primitive operations of a type. * sem_ch4.adb (Try_Container_Indexing): Use Find_Primitive_Operations to handle overloaded indexing operations of a derived type. From-SVN: r229343
2015-10-26osint-c.ads: Minor comment update.Arnaud Charlet9-28/+32
2015-10-26 Arnaud Charlet <charlet@adacore.com> * osint-c.ads: Minor comment update. 2015-10-26 Arnaud Charlet <charlet@adacore.com> * s-osinte-hpux.ads, s-osinte-aix.ads, s-osinte-solaris-posix.ads, s-osinte-darwin.ads, s-osinte-android.ads, s-osinte-freebsd.ads, s-taprop-posix.adb (Get_Page_Size): C function returns an int. Adjust callers accordingly. From-SVN: r229342
2015-10-26[multiple changes]Arnaud Charlet4-45/+106
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch4.adb (Is_OK_Object_Reference): New routine. (Substitute_Valid_Check): Perform the 'Valid subsitution but do not suggest the use of the attribute if the left hand operand does not denote an object as it leads to illegal code. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * exp_unst.adb: Minor reformatting. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb: Improve error msg. From-SVN: r229341
2015-10-26[multiple changes]Arnaud Charlet7-15/+92
2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_disp.adb (Check_Controlling_Type): Handle properly the case of an incomplete type whose full view is tagged, when a primitive operation of the type is declared between the two views. 2015-10-26 Bob Duff <duff@adacore.com> * adaint.c (__gnat_locate_exec_on_path): If the PATH environment variable is not set, do not return NULL, because we can still find the executable if it includes a directory name. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_elab.adb (Elab_Warning): Under dynamic elaboration, when elaboration warnings are enabled, emit proper warning header when triggered by an access attribute. 2015-10-26 Steve Baird <baird@adacore.com> * exp_ch11.adb: If CodePeer_Mode is true, generate simplified SCIL for exception declarations. * exp_ch11.adb (Expand_N_Exception_Declaration) If CodePeer_Mode is True, initialize the Full_Name component of the exception record to null instead of to the result of an unchecked conversion. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * exp_unst.adb (Note_Uplevel_Ref) : Handle properly a reference that denotes a function returning a constrained array, that has been rewritten as a procedure. * makeutl.ads: Minor edit. From-SVN: r229340
2015-10-26Minor reformatting.Arnaud Charlet1-3/+3
From-SVN: r229339
2015-10-26[multiple changes]Arnaud Charlet3-38/+42
2015-10-26 Yannick Moy <moy@adacore.com> * lib-xref-spark_specific.adb (Traverse_Protected_Declaration): New procedure for traversal. (Add_SPARK_Xrefs): Remove debugging code. (Traverse_Declaration_Or_Statement): Call the new traversal procedure. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Analyze_Pragma): Pragma Extensions_Visible can now appear on an abstract subprogram declaration. From-SVN: r229338
2015-10-26[multiple changes]Arnaud Charlet3-54/+123
2015-10-26 Yannick Moy <moy@adacore.com> * lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Use character 'r' to denote a reference to a constant which may have variable input, and thus may be treated as a variable in GNATprove, instead of the character 'c' used for constants. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Object_Access_Level): Only aliased formals of functions have the accessibility level of the point of call; aliased formals of procedures have the same level as unaliased formals. (New_Copy_Tree): Add guard on copying itypes. From code reading. From-SVN: r229337