aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2015-10-27Split constant handling out of fold_builtin_fmaRichard Sandiford2-10/+11
Just makes an upcoming patch a bit clearer. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_fma): Remove constant handling. (fold_builtin_3): Handle constant fma arguments here. From-SVN: r229428
2015-10-27Remove constant handling from fold_builtin_{,f}absRichard Sandiford2-4/+5
fold_builtin_fabs and fold_builtin_abs had code to handle constant arguments, but this simply duplicated what the following fold_build1_loc would do for ABS_EXPR. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_fabs): Remove constant handling. (fold_builtin_abs): Likewise. From-SVN: r229427
2015-10-27namet.adb, namet.ads: Minor reformatting.Hristian Kirtchev3-161/+171
2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * namet.adb, namet.ads: Minor reformatting. From-SVN: r229426
2015-10-27Move copysign folds to match.pdRichard Sandiford3-41/+26
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_copysign): Delete. (fold_builtin_2): Handle constant copysign arguments here. * match.pd: Add rules previously handled by fold_builtin_copysign. From-SVN: r229425
2015-10-27[multiple changes]Arnaud Charlet11-27/+106
2015-10-27 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Analyze_Allocator): Do not perform legality check on allocators for limited objects in a qualified expression, because expression has not been resolved. * sem_res.adb (Resolve_Allocator): Perform check on legality of limited objects after resolution. Add sem_ch3.adb to context. 2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Analyze_Refined_Global_In_Decl_Part): Add variable States. (Check_Refined_Global_Item): An object or state acts as a constituent only when the corresponding encapsulating state appears in pragma Global. (Collect_Global_Item): Add a state with non-null visible refinement to list States. 2015-10-27 Gary Dismukes <dismukes@adacore.com> * sem_util.ads, par.adb, sem_ch6.adb: Minor reformatting and a few typo corrections. 2015-10-27 Pierre-Marie de Rodat <derodat@adacore.com> * namet.ads, namet.adb (Name_Equals): New function. * namet.h (Name_Equals): New macro. 2015-10-27 Arnaud Charlet <charlet@adacore.com> * exp_ch6.adb (Build_Procedure_Form): Use 'RESULT' for the extra parameter, to avoid ambiguity when generating tmps using _xxx which might end up reusing _result. From-SVN: r229424
2015-10-27Move signbit folds to match.pdRichard Sandiford5-37/+33
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_signbit): Delete. (fold_builtin_2): Handle constant signbit arguments here. * match.pd: Add rules previously handled by fold_builtin_signbit. gcc/testsuite/ PR tree-optimization/68097 * gcc.dg/torture/builtin-nonneg-1.c: Skip at -O0. Add --param max-ssa-name-query-depth=3 to dg-options. From-SVN: r229423
2015-10-27Fold comparisons between sqrt and zeroRichard Sandiford4-0/+80
The expression: signbit(sqrt(x)) is always 0 for -ffast-math. The signbit fold first converts it to: sqrt(x) < 0 and whether we realise that this is false depends on a race between two folders: the sqrt comparison folder, which wants to convert it to x < 0*0 and the generic tree_expr_nonnegative_p rule for ... < 0, which would give the hoped-for 0. The sqrt code already handles comparisons with negative values specially, so this patch simply extends that idea to comparisons with zero. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * match.pd: Handle sqrt(x) cmp 0 specially. gcc/testsuite/ * gcc.dg/torture/builtin-sqrt-cmp-1.c: New test. From-SVN: r229422
2015-10-27[multiple changes]Arnaud Charlet8-38/+162
2015-10-27 Javier Miranda <miranda@adacore.com> * sem_util.ads, sem_util.adb (Defining_Identifier): Adding a formal to indicate the needed behavior in case of nodes with errors. 2015-10-27 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Eval_Attribute): If the prefix of attribute Enum_Rep is an object that is a generated loop variable for an element iterator, no folding is possible. * sem_res.adb (Resolve_Entity_Name): Do not check for a missing initialization in the case of a constant that is an object renaming. * exp_attr.adb (Expand_N_Attribute_Reference, case Enum_Rep): If the prefix is a constant that renames an expression there is nothing to evaluate statically. 2015-10-27 Vincent Celier <celier@adacore.com> * gnatlink.adb: Always delete the response file, even when the invocation of gcc to link failed. 2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not inherit the SPARK_Mode from the context if it has been set already. (Build_Subprogram_Declaration): Relocate relevant pragmas from the subprogram body to the generated corresponding spec. Do not copy aspect SPARK_Mode as this leads to circularity in Copy_Separate_Tree. Inherit the attributes that describe pragmas Ghost and SPARK_Mode. (Move_Pragmas): New routine. From-SVN: r229421
2015-10-27inline.adb (Is_Expression_Function): Removed.Hristian Kirtchev6-44/+85
2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * inline.adb (Is_Expression_Function): Removed. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): An internally generated subprogram body that completes an expression function inherits the SPARK_Mode from the spec. * sem_res.adb (Resolve_Call): Update all calls to Is_Expression_Function. * sem_util.ads, sem_util.adb (Is_Expression_Function): Reimplemented. (Is_Expression_Function_Or_Completion): New routine. From-SVN: r229420
2015-10-27lib-xref-spark_specific.adb, [...]: Minor reformatting.Hristian Kirtchev6-19/+28
2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * lib-xref-spark_specific.adb, a-dirval-mingw.adb, exp_ch6.adb, sem_ch8.adb, s-os_lib.adb: Minor reformatting. From-SVN: r229419
2015-10-27[multiple changes]Arnaud Charlet5-9/+45
2015-10-27 Yannick Moy <moy@adacore.com> * lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Library_Package): detect library-level subprograms and handle entries as subprograms, i.e. now both library-level subprograms and entry bodies act as enclosing scopes. (Traverse_Declarations_Or_Statements): process entry bodies just like subprogram bodies. * lib-xref.ads (Enclosing_Subprogram_Or_Library_Package): comment simplified while keeping its the meaning and minor typo fixed ("of" -> "or"). * spark_xrefs.ads (Xref Section): fix in description of the ALI line for subprogram calls; such lines start with captial "F" followed by a space. 2015-10-27 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Find_Direct_Name): A parameter association is a legal context for applying an implicit dereference. (Analyze_Expanded_Name): Minor code cleanup. From-SVN: r229418
2015-10-27sinput.ads, [...]: Fix typos.Arnaud Charlet4-7/+11
2015-10-27 Arnaud Charlet <charlet@adacore.com> * sinput.ads, spark_xrefs.ads, lib-xref.adb: Fix typos. From-SVN: r229417
2015-10-27[multiple changes]Arnaud Charlet4-13/+45
2015-10-27 Pascal Obry <obry@adacore.com> * a-dirval-mingw.adb: Remove some characters from Invalid_Character set. 2015-10-27 Ed Schonberg <schonberg@adacore.com> * exp_ch6.adb (Rewrite_Function_Call_For_C): Use a named associaion for the added actual in the call because previous actuals may also have been given by explicit associations. * lib-xref.adb: Minor style fixes. From-SVN: r229416
2015-10-27[multiple changes]Arnaud Charlet3-16/+13
2015-10-27 Arnaud Charlet <charlet@adacore.com> * gnat1drv.adb: Remove hard coded restrictions. 2015-10-27 Pascal Obry <obry@adacore.com> * a-dirval-mingw.adb: Minor reformatting. From-SVN: r229415
2015-10-27[multiple changes]Arnaud Charlet6-38/+128
2015-10-27 Javier Miranda <miranda@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Improve previous patch. 2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch12.adb (Analyze_Formal_Package_Declaration): Code cleanup. Set and restore the value of global flag Ignore_Pragma_SPARK_Mode. A formal package declaration acts as a package instantation with respect to SPARK_Mode legality. 2015-10-27 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Check_Constituent_Usage): Use logical operators rather than short circuit operators. Emit an error when a state with visible refinement is not refined. * snames.ads-tmpl: Add names for detecting predefined potentially blocking subprograms. 2015-10-27 Arnaud Charlet <charlet@adacore.com> * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Revert previous change. (Expand_Array_Aggregate): Rewrite previous change here as done for other non GCC back-ends. (Build_Record_Aggr_Code): Add special case. From-SVN: r229414
2015-10-27tree-vect-generic.c (expand_vector_operations_1): Check optab type before ↵Ilya Enkovich2-1/+6
using it. gcc/ * tree-vect-generic.c (expand_vector_operations_1): Check optab type before using it. From-SVN: r229413
2015-10-27[AArch64] Enable autoprefetcher modelling in the schedulerKyrylo Tkachov3-0/+80
* config/aarch64/aarch64-protos.h (struct tune_params): Add autoprefetcher_model field. * config/aarch64/aarch64.c: Include params.h (generic_tunings): Specify autoprefetcher_model value. (cortexa53_tunings): Likewise. (cortexa57_tunings): Likewise. (cortexa72_tunings): Likewise. (thunderx_tunings): Likewise. (xgene1_tunings): Likewise. (aarch64_first_cycle_multipass_dfa_lookahead_guard): New function. (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define. (aarch64_override_options_internal): Set PARAM_SCHED_AUTOPREF_QUEUE_DEPTH param. From-SVN: r229412
2015-10-27Move expN folds to match.pdRichard Sandiford3-46/+21
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * builtins.c (fold_builtin_exponent): Delete. (fold_builtin_2): Handle constant expN arguments here. * match.pd: Fold expN(logN(x)) -> x. From-SVN: r229410
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