Commit Graph

141676 Commits

Author SHA1 Message Date
Richard Sandiford 8acda9b2c0 Move expN folds to match.pd
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-27 09:32:11 +00:00
Richard Sandiford 5ddc84ca83 Move powi folds to match.pd
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-27 09:31:28 +00:00
Richard Sandiford b4838d7701 Move pow folds to match.pd
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-27 09:30:32 +00:00
Richard Sandiford 4d7836c436 Move hypot folds to match.pd
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-27 09:29:40 +00:00
Richard Sandiford 4aecfe1986 Don't create SSA names until in SSA form
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-27 09:07:44 +00:00
Richard Biener 61183076f1 cfg.c (free_edge): Add function argument and use it instead of cfun.
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 08:56:03 +00:00
Thomas Schwinge 88bae6f494 [PR c/64765, c/64880] Support OpenACC Combined Directives in C, C++
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-27 09:39:15 +01:00
Tom de Vries 5acdb61b69 Add var in push_fields_onto_fieldstack
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-27 07:09:58 +00:00
Bin Cheng 5b92e1895e loop-invariant.c (struct def): New field can_prop_to_addr_uses.
* 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-27 05:26:27 +00:00
John David Anglin bda9c2451e re PR libffi/65441 (FAIL: libffi.call/float2.c -W -Wall -Wno-psabi (test for excess errors))
PR libffi/65441
	* testsuite/lib/libffi.exp: Load target-supports-dg.exp.
	* testsuite/libffi.call/float2.c: Don't run on hppa*-*-hpux*.

From-SVN: r229400
2015-10-27 00:39:32 +00:00
GCC Administrator f3e7688d8e Daily bump.
From-SVN: r229399
2015-10-27 00:16:12 +00:00
Jason Merrill 6337bd75e2 DR 2179
DR 2179
	* pt.c (process_partial_specialization): Handle error_mark_node
	from most_specialized_partial_spec.

From-SVN: r229395
2015-10-26 17:17:50 -04:00
Doug Evans 59010ede55 * config/linux.h (INCLUDE_DEFAULTS): Add INCLUDE_DEFAULTS_MUSL_LOCAL.
From-SVN: r229392
2015-10-26 20:07:43 +00:00
Louis Krupp 388902dab9 re PR fortran/66056 (ICEs and endless compilation for lonely labels/numbers 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-26 19:18:08 +00:00
Mike Frysinger 96f3dd0a66 libjava: fix locale handling when sorting JNI methods
When building under LANG=cs_CZ.UTF-8, the JNI method check fails:

/bin/bash ../../scripts/check_jni_methods.sh
Found a problem with the JNI methods declared and implemented.
(<) missing in implementation, (>) missing in header files
> Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent
> Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState
... lots more ...

While the sed commands are run under LC_ALL=C, the two sort commands are
not, and they end up producing unexpected output (for the test).  Once we
run both under LC_ALL=C, the check passes.  While we're here, we can also
combine latter the `sort|uniq` into `sort -u` to match the earlier code.

URL: https://bugs.gentoo.org/563710
Reported-by: Miroslav Šulc <fordfrog@gentoo.org>

From-SVN: r229388
2015-10-26 18:32:41 +00:00
Steven G. Kargl 15c918bc76 re PR fortran/36192 (ICE with wrong index types and bad parens)
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-26 17:39:07 +00:00
Eric Botcazou f6c1575958 match.pd (fold_widened_comparison): Apply simplifications to all integral types.
* match.pd (fold_widened_comparison): Apply simplifications to all
	integral types.

From-SVN: r229384
2015-10-26 17:02:48 +00:00
Simon Dardis f52a73a48e target.def (TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P): New hook.
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 16:29:31 +00:00
Thomas Schwinge bdeb752cf8 abort might not flush all open streams before process termination
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/abort-1.c: Print to stderr.
	* testsuite/libgomp.oacc-c-c++-common/abort-3.c: Likewise.

From-SVN: r229382
2015-10-26 17:25:04 +01:00
Thomas Schwinge ecd4fd4382 libgomp testsuite: Remove some explicit acc_device_nvidia usage.
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/lib-1.c: Remove explicit
	acc_device_nvidia usage.
	* testsuite/libgomp.oacc-c-c++-common/lib-10.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/lib-9.c: Likewise.

From-SVN: r229381
2015-10-26 17:24:54 +01:00
Thomas Schwinge aa8b7d3051 libgomp: Additional acc_shutdown bug fixing and testing
libgomp/
	* oacc-init.c (acc_shutdown): Call gomp_init_targets_once.
	* testsuite/libgomp.oacc-c-c++-common/lib-8.c: New file.

From-SVN: r229380
2015-10-26 17:24:44 +01:00
Thomas Schwinge 7c8f138de6 [libgomp/66518] Resolve XFAIL in libgomp.oacc-c-c++-common/lib-3.c
libgomp/
	PR libgomp/66518
	* testsuite/libgomp.oacc-c-c++-common/lib-3.c: Resolve XFAIL.

From-SVN: r229379
2015-10-26 17:24:28 +01:00
Thomas Schwinge 8baa7864a6 [PR libgomp/65437, libgomp/66518] Initialize runtime in acc_update_device, acc_update_self
libgomp/
	PR libgomp/65437
	PR libgomp/66518
	* oacc-mem.c (update_dev_host): Call goacc_lazy_initialize.
	* testsuite/libgomp.oacc-c-c++-common/lib-42.c: Remove XFAIL.

From-SVN: r229378
2015-10-26 17:24:17 +01:00
Arnaud Charlet 4039e17351 [multiple changes]
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-26 16:44:32 +01:00
Hristian Kirtchev 58996b09ca contracts.adb (Analyze_Object_Contract): Set and restore the SPARK_Mode for 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 16:40:10 +01:00
Jeff Law c67e519463 [PATCH] [PR tree-optimization/68013] Make sure first block in FSM path
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 09:36:04 -06:00
Arnaud Charlet 335dde2981 [multiple changes]
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 16:35:49 +01:00
Arnaud Charlet 378dc6ca34 [multiple changes]
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-26 16:34:11 +01:00
Richard Biener e802444145 re PR rtl-optimization/67443 (DSE removes required store instruction)
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-26 15:24:45 +00:00
Richard Sandiford fec40d06da Allow more complex call replacements in gimple-fold.c
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-26 14:59:36 +00:00
Ilya Verbin 0b7c37ee71 offload_host.cpp (OffloadDescriptor::setup_misc_data): Use calloc instead of malloc.
liboffloadmic/
	* runtime/offload_host.cpp (OffloadDescriptor::setup_misc_data): Use
	calloc instead of malloc.
	(__offload_fini_library): Set mic_engines_total to zero.

Co-Authored-By: Aleksander Ivanushenko <aleksander.ivanushenko@intel.com>

From-SVN: r229368
2015-10-26 14:38:02 +00:00
Richard Sandiford 6a112b50ef Fix attribution in ChangeLog
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-26 14:34:02 +00:00
Richard Biener 1e080ab4ed tree-object-size.c: Remove builtins.h include, include tree-cfg.h.
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 14:22:20 +00:00
Arnaud Charlet 3373589b25 [multiple changes]
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 14:37:54 +01:00
Arnaud Charlet 64dfccae7b [multiple changes]
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-26 14:30:23 +01:00
Richard Biener a9658b115b match.pd ((A & ~B) - (A & B) -> (A ^ B) - B): Add missing :c.
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 13:27:59 +00:00
Arnaud Charlet 48bb06a77e [multiple changes]
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 14:27:48 +01:00
Arnaud Charlet a2c314c72b [multiple changes]
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 14:26:11 +01:00
Arnaud Charlet 75b87c163f [multiple changes]
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-26 14:23:35 +01:00
Jerome Lambourg 90707ac1bb sysdep.c (__gnat_get_task_options): Refine the workaround for the 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 14:14:49 +01:00
Arnaud Charlet fa73fc3d39 [multiple changes]
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-26 14:10:12 +01:00
Hristian Kirtchev e3d6bccc83 sem_ch3.adb, [...]: Minor reformatting.
2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_util.adb: Minor reformatting.

From-SVN: r229354
2015-10-26 14:04:09 +01:00
Andre Vehreschild 97561cdcf0 re PR fortran/66927 (ICE in gfc_conf_procedure_call)
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 14:03:22 +01:00
Arnaud Charlet 9bdc432ac2 [multiple changes]
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-26 14:01:25 +01:00
Bob Duff 2f7ae2aa90 s-rident.ads (No_Dynamic_Sized_Objects): New restriction name.
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 13:05:58 +01:00
Arnaud Charlet 638f505481 [multiple changes]
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-26 13:03:29 +01:00
Arnaud Charlet b30fc1f9d6 debug.adb: Introduce debug flag -gnatd.5.
2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb: Introduce debug flag -gnatd.5.

From-SVN: r229349
2015-10-26 13:00:55 +01:00
Pascal Obry 3fee081aa9 s-os_lib.ads, [...] (Kill): New routine.
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-26 12:59:42 +01:00
Arnaud Charlet fbf90e543f einfo.ads, [...] (Needs_Typedef, [...]): Removed, no longer used.
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-26 12:56:57 +01:00
Alan Hayward 512854fe89 tree-vect-loop.c (vect_create_epilog_for_reduction): Fix VEC_COND_EXPR types.
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 11:55:45 +00:00