Commit Graph

142424 Commits

Author SHA1 Message Date
Eric Botcazou 05f44cf5de re PR target/68408 (broken support for attribute init_priority)
PR target/68408
	* config/sparc/sp-elf.h (CTORS_SECTION_ASM_OP): Undefine.
	(DTORS_SECTION_ASM_OP): Likewise.

From-SVN: r230598
2015-11-19 11:49:32 +00:00
Jakub Jelinek dfc3d7a8a2 re PR rtl-optimization/68376 (wrong code at -O1 and above on x86_64-linux-gnu)
PR rtl-optimization/68376
	* ifcvt.c (noce_try_abs): Disable one_cmpl optimization if
	encountering x <= 0 ? ~x : x or x > 0 ? ~x : x.

	* gcc.c-torture/execute/pr68376-1.c: New test.
	* gcc.c-torture/execute/pr68376-2.c: New test.

From-SVN: r230596
2015-11-19 09:49:59 +01:00
Richard Biener bb35ccb1ef re PR middle-end/68117 (error: invalid PHI argument <<< Unknown tree: <invalid tree code> >>>)
2015-11-19  Richard Biener  <rguenther@suse.de>

	PR middle-end/68117
	* tree-ssa.c (delete_tree_ssa): Revert removal of call to
	redirect_edge_var_map_destroy.

From-SVN: r230594
2015-11-19 08:47:16 +00:00
Jakub Jelinek 397d0df98c re PR target/67770 (i386: -fshrink-wrap can interact badly with trampolines)
PR target/67770
	* config/i386/i386.md (simple_return): Disable if
	ix86_static_chain_on_stack is true.

	* gcc.target/i386/pr67770.c: New test.

From-SVN: r230593
2015-11-19 09:30:19 +01:00
Jakub Jelinek 46ce03de3a re PR preprocessor/60736 (Crash in preprocessor including stdc-predef.h when it does not exist on glibc-based systems)
PR preprocessor/60736
	* include/cpplib.h (cpp_errno_filename): New prototype.
	* errors.c (cpp_errno): Don't handle msgid "" specially, use
	_(msgid) instead of msgid as argument to cpp_error.
	(cpp_errno_filename): New function.
	* files.c (read_file_guts): Use cpp_errno_filename instead of
	cpp_errno.
	(open_file_failed): Likewise.  Use file->name if file->path is NULL
	in diagnostics.

From-SVN: r230591
2015-11-19 09:27:12 +01:00
Richard Sandiford ee1326921d PR 68393: Handle SUBREG_PROMOTED_VAR_P in expand_direct_optab_fn
Do the usual dance when assigning to SUBREG_PROMOTED_VAR_P destinations:
first convert to the outer mode, then extend to the inner mode.

Tested that it fixes the powerpc64le-linux-gnu breakage.  Also tested
on x86_64-linux-gnu and powerpc64-linux-gnu.

gcc/
	PR bootstrap/68393
	* internal-fn.c (expand_direct_optab_fn): Handle SUBREG_PROMOTED_VAR_P
	destinations.

From-SVN: r230590
2015-11-19 08:17:21 +00:00
Jason Merrill d0eccfcdc3 c-common.c (shorten_compare): Don't -Wtype-limits if the non-constant operand comes from a macro.
* c-common.c (shorten_compare): Don't -Wtype-limits if the
	non-constant operand comes from a macro.

From-SVN: r230589
2015-11-18 23:26:48 -05:00
Jeff Law 7d7e7aca3b [PATCH][PR tree-optimization/68198] Avoid CFG explosion due to threading
PR tree-optimization/68198
	* tree-ssa-threadupdate.c (valid_jump_thread_path): Distinguish
	between threading a multi-way branch and a thread path that contains
	a multi-way branch.  Disallow the case where a path contains a
	multi-way branch and does not thread a multi-way branch.
	(thread_through_all_blocks): Update comment.

        PR tree-optimization/68198
	* gcc.dg/tree-ssa/pr66752-3.c: Update expected output for VRP1.
	* gcc.dg/tree-ssa/pr68198.c: New test.

From-SVN: r230586
2015-11-18 17:33:27 -07:00
GCC Administrator 3ebf5a30cf Daily bump.
From-SVN: r230585
2015-11-19 00:16:12 +00:00
Steven G. Kargl 586dc38b3e re PR fortran/59910 (ICE in gfc_conv_array_initializer, at fortran/trans-array.c:5327)
2015-11-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/59910
	* primary.c (gfc_match_structure_constructor): Reduce a structure
	constructor in a DATA statement.

2015-11-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/59910
	* gfortran.dg/pr59910.f90: New test.

From-SVN: r230580
2015-11-18 22:55:17 +00:00
Steven G. Kargl 9231aa17d6 re PR fortran/43996 (ICE in gfc_conv_array_initializer due to incomplete simplification of init expressions)
2015-11-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/43996
	* simplify.c (gfc_simplify_spread): Issue error for too large array 
	constructor in a PARAMETER statement.

2015-11-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/43996
	* gfortran.dg/pr43996.f90: New test.

From-SVN: r230579
2015-11-18 22:51:39 +00:00
Joseph Myers c29c36ad5d Add out-of-line versions of some <stdatomic.h> functions (PR c/65083).
PR c/65083 notes that some functions in <stdatomic.h> are normal
functions, not generic functions, and so need to have out-of-line
copies that can be called when macro expansion is suppressed (unlike
the generic functions where DR#419 makes it undefined if you suppress
a macro expansion).

This patch adds such out-of-line definitions in libatomic for those
six functions, at a new LIBATOMIC_1.2 symbol version, as trivial
wrappers to the <stdatomic.h> macros, along with declarations of those
functions in <stdatomic.h>.  Tests are added that are based on the
corresponding tests for the macros, but with parentheses around the
function names to force the out-of-line functions to be used.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc:
	* ginclude/stdatomic.h (atomic_thread_fence, atomic_signal_fence)
	(atomic_flag_test_and_set, atomic_flag_test_and_set_explicit)
	(atomic_flag_clear, atomic_flag_clear_explicit): Declare as
	functions before defining as macros.

gcc/testsuite:
	* gcc.dg/atomic/stdatomic-fence-2.c,
	gcc.dg/atomic/stdatomic-flag-2.c: New tests.

libatomic:
	* fence.c, flag.c: New files.
	* Makefile.am (libatomic_la_SOURCES): Add fence.c and flag.c.
	* Makefile.in: Regenerate.
	* configure.ac (libtool_VERSION): Change to 3:0:2.
	* configure: Regenerate.
	* libatomic.map (LIBATOMIC_1.2): New symbol version.

From-SVN: r230578
2015-11-18 22:13:44 +00:00
Eric Botcazou 2b2a2e9e1e trans.c (elaborate_all_entities_for_package): New function extracted from...
* gcc-interface/trans.c (elaborate_all_entities_for_package): New
	function extracted from...  Recurse on packages.
	(elaborate_all_entities): ...here.  Call it on packages.

From-SVN: r230576
2015-11-18 21:59:30 +00:00
Eric Botcazou 642357660a ada-tree.h (DECL_INVARIANT_P): New macro.
* gcc-interface/ada-tree.h (DECL_INVARIANT_P): New macro.
	* gcc-interface/gigi.h (enum standard_datatypes): Remove
	ADT_longjmp_decl and add ADT_not_handled_by_others_decl.
	(longjmp_decl): Delete.
	(not_handled_by_others_decl): New macro.
	(build_simple_component_ref): Delete.
	(build_component_ref): Adjust prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to
	build_component_ref.
	(gnat_to_gnu_field): Set DECL_INVARIANT_P on discriminants
	without default value.
	* gcc-interface/trans.c (gigi): Reorder initialization sequence
	and add not_handled_by_others_decl.
	(Attribute_to_gnu): Adjust calls to build_component_ref.
	(Subprogram_Body_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
	(Exception_Handler_to_gnu_sjlj): Likewise.
	(gnat_to_gnu): Likewise.
	(range_check_info_d): Add inserted_cond field.
	(Loop_Statement_to_gnu): Make two passes on the recorded range checks.
	(build_noreturn_cond): New static function.
	(Raise_Error_to_gnu): Record range checks in loops at -O1 and above.
	(make_invariant): New static function.
	(Loop_Statement_to_gnu): Use it to compute invariant expressions for
	the loop bounds if possible, but do not require it if loop unswitching
	is enabled.
	* gcc-interface/utils.c (convert_to_fat_pointer): Likewise.
	(convert): Likewise.
	(maybe_unconstrained_array): Likewise.  Call it instead of
	build_simple_component_ref and add guard for CONSTRUCTORs.
	(unchecked_convert): Likewise.
	* gcc-interface/utils2.c (compare_fat_pointers): Likewise.
	(build_simple_component_ref): Remove COMPONENT parameter, unify
	code dealing with VIEW_CONVERT_EXPR and make it more general,
	remove special treatment for CONSTRUCTORs of template types.
	(build_component_ref): Remove COMPONENT parameter and adjust call
	to build_simple_component_ref.
	(maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.
	(gnat_invariant_expr): Look through overflow checks, deal with
	addition and subtraction of constants and take into account
	DECL_INVARIANT_P for the COMPONENT_REF case.

From-SVN: r230575
2015-11-18 21:55:11 +00:00
Nathan Sidwell 5d306e55e0 nvptx.c (nvptx_process_pars): Fix whitespace.
* config/nvptx/nvptx.c (nvptx_process_pars): Fix whitespace.
	(nvptx_record_offload_symbol): Remove code compensating for lack
	of default dimension handling.
	(nvptx_goacc_validate_dims): Remove incorrect ARG_UNUSED markers.

From-SVN: r230571
2015-11-18 21:33:57 +00:00
Eric Botcazou 5f29a394cd misc.c: Move global variables to the top of the file.
* gcc-interface/misc.c: Move global variables to the top of the file.
	(gnat_handle_option): Remove obsolete ATTRIBUTE_UNUSED markers.
	(gnat_init_options): Minor tweak.
	(gnat_post_options): Set -fstrict-overflow if not done by the user.
	(internal_error_function): Minor reformatting.

From-SVN: r230569
2015-11-18 21:17:51 +00:00
Aditya Kumar 21c7259c1c Enable condegen in case of cond phis.
The codegen of conditional PHIs inside the scop where one predecessor dominates
the other was difficult so it wasn't enabled in the previous patch. After a
couple of bug-fixes this has been enabled in this patch.  Not all the cases
could be handled in this case because it becomes difficult to map the basic
block back to original code in some cases.

Bug-fixes:
1. The vec_find returns -1 when no element was found. This wasn't checked.
2. When the arguments to pending phis could not be resolved in the second pass,
the codegen would fail so the new code should be cleaned up.

This patch passes regtest and bootstrap on linux-x86-64 with
BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'

2015-11-14  hiraditya  <hiraditya@msn.com>

	* graphite-isl-ast-to-gimple.c (copy_loop_phi_args): Change the return
          type to bool for early exit.
          (translate_isl_ast_to_gimple::copy_loop_phi_nodes): Early return in
          case of error.
          (translate_isl_ast_to_gimple::copy_loop_close_phi_args): Same.
          (add_phi_arg_for_new_expr): Enable codegen for if-block where one predecessor
          dominates the other.
          (translate_isl_ast_to_gimple::copy_cond_phi_args): Fix. When the element is not
          found it returns -1.
          (translate_isl_ast_to_gimple::translate_pending_phi_nodes): Bail out early when
          codegen fails.
          (graphite_regenerate_ast_isl): Remove codegen region when pending phis
          could not be generated.

From-SVN: r230567
2015-11-18 21:08:40 +00:00
Aditya Kumar 2ecf4eca92 Move codegen related functions to graphite-isl-ast-to-gimple.c
No functional changes intended.
This patch passes regtest and bootstrap on linux-x86-64 with
BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'

gcc/ChangeLog:

2015-11-14  hiraditya  <hiraditya@msn.com>

	* graphite-isl-ast-to-gimple.c (struct ast_build_info): Remove semicolon.
	(class translate_isl_ast_to_gimple): Indentation.
        (translate_pending_phi_nodes): Comment.
        (add_parameters_to_ivs_params): Moved from sese.c inside class translate_isl_ast_to_gimple.
        (get_max_schedule_dimensions): Same.
        (generate_isl_context): Same.
        (extend_schedule): Same.
        (generate_isl_schedule): Same.
        (set_options): Same.
        (scop_to_isl_ast): Same.
        (is_valid_rename): Same.
        (get_rename): Same.
        (get_rename_from_scev): Same.
        (get_def_bb_for_const): Same.
        (get_new_name): Same.
        (collect_all_ssa_names): Same.
        (copy_loop_phi_args): Same.
        (copy_loop_phi_nodes): Same.
        (copy_loop_close_phi_args): Same.
        (copy_loop_close_phi_nodes): Same.
        (copy_cond_phi_args): Same.
        (copy_cond_phi_nodes): Same.
        (graphite_copy_stmts_from_block): Same.
        (copy_bb_and_scalar_dependences): Same.
        (add_phi_arg_for_new_expr): Same.
        (rename_uses): Same.
        (set_rename): Same.
        (set_rename_for_each_def): Same.
        (gsi_insert_earliest): Same.
        (rename_all_uses): Same.
        (codegen_error_p): Same.
        (print_isl_ast_node): Same.
	(translate_isl_ast_for_loop): Call function codegen_error_p.
	(translate_isl_ast_to_gimple::translate_isl_ast): Same.
        (translate_isl_ast_node_user): Make nb_loops const and release iv_map before exit.
	(get_true_edge_from_guard_bb): Move all free-functions early.
	(get_false_edge_from_guard_bb): Same.
	(bb_contains_loop_close_phi_nodes): Same.
	(bb_contains_loop_phi_nodes): Same.
	(is_loop_closed_ssa_use):  Same.
	(number_of_phi_nodes): Same.
	(phi_uses_name): Same.
	(later_of_the_two): Same.
	(substitute_ssa_name):
	(get_edges): Same.
	(get_loc): Same.
	(get_loop_init_value): Same.
	(find_init_value): Same.
	(find_init_value_close_phi): Same.
	(ast_build_before_for): Same.
	(graphite_regenerate_ast_isl): Formatting changes.
	* graphite-scop-detection.c (build_cross_bb_scalars_use): Same.
	* sese.c (get_rename): Move to graphite-isl-ast-to-gimple.c
	(set_rename): Same.
	(gsi_insert_earliest): Same.
	(collect_all_ssa_names): Same.
	(rename_all_uses): Same.
	(rename_uses): Same.
	(get_def_bb_for_const): Same.
	(copy_loop_phi_nodes): Same.
	(copy_loop_close_phi_args): Same.
	(copy_loop_close_phi_nodes): Same.
	(copy_cond_phi_args): Same.
	(copy_cond_phi_nodes): Same.
	(set_rename_for_each_def): Same.
	(graphite_copy_stmts_from_block): Same.
	(copy_bb_and_scalar_dependences): Same.
	(if_region_set_false_region): Same.
	(scev_analyzable_p): Same.
	* sese.h: Delete extern functions moved to graphite-isl-ast-to-gimple.c

From-SVN: r230566
2015-11-18 21:08:33 +00:00
Andreas Tobler 159e0d3b26 freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Bring in the commit from r125920 for FreeBSD.
2015-11-18  Andreas Tobler  <andreast@gcc.gnu.org>

    * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Bring in the
    commit from r125920 for FreeBSD.

From-SVN: r230565
2015-11-18 21:48:18 +01:00
Jason Merrill 2a3047773e Support GGC finalizers with PCH.
* ggc-page.c (ggc_globals): Change finalizers and vec_finalizers
	to be vecs of vecs.
	(add_finalizer): Split out from ggc_internal_alloc.
	(ggc_handle_finalizers): Run finalizers for the current depth.
	(init_ggc, ggc_pch_read): Reserve space for finalizers.

From-SVN: r230564
2015-11-18 15:11:32 -05:00
Sandra Loosemore 231f6e0927 re PR target/68410 (config/nios2/nios2.c: 4123: duplicates in expression)
2015-11-18  Sandra Loosemore  <sandra@codesourcery.com>

	PR target/68410
	* config/nios2/nios2.c (cdx_and_immed): Remove duplicate tests
	from || expression.

From-SVN: r230563
2015-11-18 14:45:47 -05:00
Pitchumani Sivanupandi b6ff50e362 avr-mcus.def: Add new avr4 devices atmega48pb and atmega88pb.
* config/avr/avr-mcus.def: Add new avr4 devices atmega48pb and
	atmega88pb. Add new avr5 devices ata5791, ata8210, ata8510, atmega168pb
	and atmega328pb.
	* doc/avr-mmcu.texi: Regenerate.

From-SVN: r230562
2015-11-18 22:15:31 +03:00
Nathan Sidwell 912442c25d nvptx.c (bb_pair_t, [...]): New types.
gcc/
	* config/nvptx/nvptx.c (bb_pair_t, bb_pair_vec_t): New types.
	(pseudo_node_t, struct bracket, bracket_vec_t): New types.
	(struct bb_sese): New struct.
	(bb_sese::~bb_sese, bb_sese::append, bb_sese::remove): New.
	(BB_GET_SESE, BB_SET_SESE): Define.
	(nvptx_sese_number, nvptx_sese_pseudo, nvptx_sese_color): New.
	(nvptx_find_sese): New.
	(nvptx_neuter_pars): Find SESE regions when optimizing.

	gcc/testsuite/
	* gcc.dg/goacc/nvptx-sese-1.c: New.

From-SVN: r230561
2015-11-18 18:33:38 +00:00
Eric Botcazou 482a338d01 decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
	for the renaming of an address.

From-SVN: r230560
2015-11-18 18:31:42 +00:00
Eric Botcazou a239279ee5 trans.c (fold_constant_decl_in_expr): If the index is not itself constant then bail out.
* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
	the index is not itself constant then bail out.

From-SVN: r230558
2015-11-18 18:19:57 +00:00
Jeff Law 70318db4b1 Add PR marker to last change
From-SVN: r230556
2015-11-18 09:55:41 -07:00
Ajit Agarwal 3927713bcf split-path-1.c: Fix the testcase to avoid undefined behaviour.
* gcc.dg/tree-ssa/split-path-1.c: Fix the testcase
	to avoid undefined behaviour.

From-SVN: r230555
2015-11-18 09:54:16 -07:00
Cesar Philippidis f25c3cc06c cp-gimplify.c (cp_fold_r): Add support for OACC_LOOP.
gcc/cp/
	* cp-gimplify.c (cp_fold_r): Add support for OACC_LOOP.

From-SVN: r230554
2015-11-18 08:31:04 -08:00
Alan Modra a3ff5f8739 rs6000.c (use_toc_relative_ref): Ignore type-limits warning.
2015-11-18  Alan Modra  <amodra@gmail.com>

        * config/rs6000/rs6000.c (use_toc_relative_ref): Ignore
        type-limits warning.

From-SVN: r230551
2015-11-18 10:31:18 -05:00
Richard Sandiford 1fcb9641fd PR 68406: Avoid problem with older host compilers
Older compilers require the Key typedef to be expanded for the traversal
function templates.  This patch uses the same approach as we did for
hash_map.

Tested on x86_64-linux-gnu.

gcc/
	PR bootstrap/68406
	* hash-set.h (hash_set::traverse): Expand Key typedef.

From-SVN: r230549
2015-11-18 14:31:10 +00:00
Martin Liska 4a353e1608 Finalize func_options in arm target in
* config/arm/arm.c (arm_valid_target_attribute_p): Finalize
	options struct.

From-SVN: r230548
2015-11-18 14:18:11 +00:00
Ed Schonberg 43151cfd6a sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the potentially overloaded calls to...
2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): When constructing the
	parameter list for the potentially overloaded calls to indexing
	functions, do not propagate overloadings if the actual is a named
	association: overloadings appear directly on the expression in
	the association.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Interface_Present_In_Ancestor): If the type is
	incomplete, the list of ancestors is found either on the full
	view or the non-limited view of the type.

From-SVN: r230547
2015-11-18 14:55:42 +01:00
Arnaud Charlet e645cb39bb [multiple changes]
2015-11-18  Nicolas Roche  <roche@adacore.com>

	* sysdep.c (__gnat_localtime_tzoff): On Windows platform
	GetTimeZoneInformation function is thread-safe. Thus there
	is no need to lock the runtime in the implementation of
	__gnat_localtime_tzoff on that platform.

2015-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* s-arit64.adb (To_Neg_Int): Add a special case for 2**63 input.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Contracts): New routine.
	(Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal parameter
	Freeze_Id.  Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter
	Freeze_Id. Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Previous_Contracts): New routine.
	* contracts.ads (Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Contracts): New routine.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter Freeze_Id and
	update the comment on usage.
	(Analyze_Previous_Contracts): New routine.
	* sem_ch3.adb (Analyze_Declarations): Use Analyze_Contracts to
	analyze all contracts of eligible constructs.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Subprogram_Body_Helper): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect is
	achieved through different means.
	* sem_ch7.adb (Analyze_Package_Body_Helper): A body now freezes
	the contracts of all eligible constructs that precede it. A body
	no longer freezes the contract of its initial declaration. This
	effect is achieved through different means.
	* sem_ch9.adb (Analyze_Entry_Body): A body now freezes
	the contracts of all eligible constructs that precede
	it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Protected_Body): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect
	is achieved through different means.
	(Analyze_Task_Body): A
	body now freezes the contracts of all eligible constructs that
	precede it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	* sem_prag.adb (Add_Item_To_Name_Buffer): Single protected/task
	objects now output their respective current instance of xxx
	type messages.	(Analyze_Contract_Cases_In_Decl_Part): Add
	formal parameter Freeze_Id. Emit a clarification message
	when an undefined entity may the byproduct of contract
	freezing.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Refined_State_In_Decl_Part): Do not report unused body
	states as constituents of single protected/task types may not
	bave been identified yet.
	(Collect_Subprogram_Inputs_Outputs):
	Reimplemented.	(Contract_Freeze_Error): New routine.
	(Process_Overloadable): Use predicate Is_Single_Task_Object.
	* sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part):
	Add formal parameter Freeze_Id and update the comment
	on usage.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal parameter
	Freeze_Id and update the comment on usage.
	* sem_util.adb (Check_Unused_Body_States): Remove global
	variable Legal_Constits. The routine now reports unused
	body states regardless of whether constituents are
	legal or not.
	(Collect_Body_States): A constituent of a
	single protected/task type is not a visible state of a
	package body.
	(Collect_Visible_States): A constituent
	of a single protected/task type is not a visible
	state of a package body.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Concurrent_Object): Reimplemented.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Is_Visible_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.
	* sem_util.ads (Check_Unused_Body_States): Update the comment on usage.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.

2015-11-18  Pierre-Marie de Rodat  <derodat@adacore.com>

	* Makefile.rtl, impunit.adb: Add g-strhas.ads.
	* g-strhas.ads: New file.
	* s-strhas.ads: Add a comment to redirect users to g-strhas.ads.

2015-11-18  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Fix the case
	where the call in question is to a renaming of a subprogram that
	can be safely called without ABE.
	* checks.adb: Minor edits.

From-SVN: r230546
2015-11-18 14:53:58 +01:00
Nathan Sidwell 33f47f4279 nvptx.c (global_lock_var): New.
gcc/
	* config/nvptx/nvptx.c (global_lock_var): New.
	(nvptx_global_lock_addr): New.
	(nvptx_lockless_update): Recomment and adjust for clarity.
	(nvptx_lockfull_update): New.
	(nvptx_reduction_update): New.
	(nvptx_goacc_reduction_fini): Call it.

	libgcc/
	* config/nvptx/reduction.c: New.
	* config/nvptx/t-nvptx (LIB2ADD): Add it.

	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c: Add
	worker & gang cases.
	* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c: Likewise.

From-SVN: r230545
2015-11-18 13:49:17 +00:00
Bernd Schmidt d085c46817 regrename.h (struct du_head): Add target_data_1 and target_data_2 fields.
* regrename.h (struct du_head): Add target_data_1 and target_data_2
	fields.
	* regrename.c (create_new_chain): Clear entire struct after allocating.

	* config/i386/i386.opt (mmitigate-rop): New option.
	* doc/invoke.texi (mmitigate-rop): Document.
	* config/i386/i386.c: Include "regrename.h".
	(ix86_rop_should_change_byte_p, reg_encoded_number,
	ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop): New
	static functions.
	(ix86_reorg): Call ix86_mitigate_rop if -fmitigate-rop.
	* config/i386/i386.md (attr "modrm_class"): New.
	(cmp<mode>_ccno_1, mov<mode>_xor, movstrict<mode>_xor,
	x86_mov<mode>cc_0_m1. x86_mov<mode>cc_0_m1_se)
	(x86_mov<mode>cc_0_m1_neg): Override modrm_class attribute.

From-SVN: r230543
2015-11-18 12:26:43 +00:00
Ilya Enkovich 98f84050d6 re PR target/68405 (trunk/gcc/config/i386/i386.c:22951: possible missing break ?)
gcc/

	PR target/68405
	* config/i386/i386.c (ix86_expand_mask_vec_cmp): Add missing
	break.

From-SVN: r230541
2015-11-18 11:51:58 +00:00
Arnaud Charlet fdc54be6a0 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.ads (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.h: Define Elist11.
	* contracts.adb (Analyze_Object_Contract): Verify the legality
	of all references to a variable given that the variable is a
	constituent of a single protected/task type.
	* einfo.adb: Part_Of_References now utilizes Elist11.
	(Part_Of_References): New routine.
	(Set_Part_Of_References): New routine.
	(Write_Field11_Name): Add output for Part_Of_References.
	* einfo.ads New attribute Part_Of_References along with usage
	in entities.
	(Part_Of_References): New routine along with
	pragma Inline.
	(Set_Part_Of_References): New routine along with pragma Inline.
	* sem_prag.adb (Analyze_Constituent): Record a possible
	reference to a concurrent constituent.
	(Analyze_Global_Item): Record a possible reference to a concurrent
	constituent.
	(Analyze_Input_Output): Record a possible reference to a
	concurrent constituent.
	* sem_res.adb (Resolve_Entity_Name): Record a possible reference
	to a concurrent constituent.
	* sem_util.adb (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.
	* sem_util.ads (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	An if_expression is the proper place to apply the overflow
	minimization procedure if its context is not an enclosing
	arithmetic expression.

From-SVN: r230540
2015-11-18 11:53:39 +01:00
Arnaud Charlet 3f8d242bd3 Regenerate doc.
From-SVN: r230539
2015-11-18 11:51:46 +01:00
Arnaud Charlet 2544cbe4f2 gnat_project_manager.rst, [...]: Update doc.
* gnat_ugn/gnat_project_manager.rst,
        gnat_ugn/building_executable_programs_with_gnat.rst,
        gnat_ugn/gnat_and_program_execution.rst,
        gnat_ugn/the_gnat_compilation_model.rst,
        gnat_rm/implementation_defined_pragmas.rst,
        gnat_rm/standard_and_implementation_defined_restrictions.rst,
        gnat_ugn.texi, gnat_rm.texi: Update doc.

From-SVN: r230538
2015-11-18 11:50:40 +01:00
Arnaud Charlet 767cd81cc3 Minor code clean ups.
From-SVN: r230537
2015-11-18 11:48:32 +01:00
Arnaud Charlet c0dd5b3822 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Add_Contract_Item): Chain pragmas Attach_Handler
	and Interrupt_Handler on the classifications list of a [generic]
	procedure N_Contract node.
	* contracts.ads (Add_Contract_Item): Update the comment on usage.
	* einfo.adb (Get_Pragma): Pragmas Attach_Handler and
	Interrupt_Handler are found on the classifications list of
	N_Contract nodes.
	* einfo.ads (Get_Pragma): Update the comment on usage.
	* sem_prag.adb (Process_Interrupt_Or_Attach_Handler): Code
	reformatting. Store the pragma as a contract item.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Available_Subtype): Use only in GNATprove
	mode. When generating code it may be necessary to create itypes
	at the point of use of a selected component, for example in the
	expansion of a record equality operation.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Normalize_Pathname.Get_Directory): When
	invoking Normalize_Pathname, use the same values for parameters
	Resolve_Links and Case_Sensitive as the parent Normalize_Pathname.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Containing_Directory): Return "." when the result
	is the current directory, not specified as an absolute path name.

From-SVN: r230536
2015-11-18 11:42:27 +01:00
Arnaud Charlet a25e72b5e5 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Is_Completely_Hidden_Discriminant): New routine.
	(Init_Hidden_Discriminants): Code reformatting. Do not initialize
	a completely hidden discriminant.
	* a-interr.ads (Get_CPU): Added SPARK_Mode, Volatile_Function
	and Global aspects on the function.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): If the designated
	type is a concurrent type, the deallocation applies to the
	corresponding record type, or to its class-wide type if the type
	is tagged.

From-SVN: r230535
2015-11-18 11:40:47 +01:00
Doug Rupp 86e066aa7a s-parame-vxworks.adb: Reduce default stack size for stack limit check to a reasonable value
2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Reduce default stack size for stack
	limit check to a reasonable value
	* s-tpopsp-vxworks.adb: Make Stack_Limit a task variable for vx5 and
	vxmils.

From-SVN: r230534
2015-11-18 11:39:37 +01:00
Arnaud Charlet 72d5c70bbf [multiple changes]
2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Diagnose assignment where
	left-hand side has a limited view of a class-wide type.
	* sem_ch6.adb (Detected_And_Exchange): Do not install a non-limited
	view if the scope of the type of the formal is visible through
	a limited_with_clause, even if the non-limited view is available.

2015-11-18  Emmanuel Briot  <briot@adacore.com>

	* s-pooglo.ads: Make Global_Pool_Object aliased.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): If the prefix
	is an expression function, do not analyze the generated body if
	the current scope is not the scope of the expression function,
	as may happen if the attribute is an actual in an instantiation.
	* sem_ch10.adb, sem_ch12.adb, a-stzmap.adb, s-soflin.adb,
	a-stwima.adb: Fix typos.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb (Expand_N_Exception_Declaration): No-op when
	generating C code.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* g-comlin.adb (Find_Longest_Matching_Switch): Do not take into
	account a switch ending with '=' when the actual command line
	switch is not followed with a space or '='.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Explicit_Dereference): Do not add an access
	check if the type of the prefix is known to exclude null.
	* a-coinve.adb (Get_Element_Access): The function returns an
	access type that excludes null, so add an explicit check for
	a null element pointer, which is created when Insert_Spaces is
	called on an indefinite vector container.

From-SVN: r230533
2015-11-18 11:31:53 +01:00
Hristian Kirtchev 7bf911b583 re PR ada/66242 (Front-end error if exception propagation disabled)
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	PR ada/66242

	* exp_ch3.adb (Default_Initialize_Object): Reimplemented. Abort
	defer / undefer pairs are now encapsulated in a block with
	an AT END handler. Partial finalization now takes restriction
	No_Exception_Propagation into account when generating blocks.
	* exp_ch7.adb Various reformattings.
	(Create_Finalizer): Change
	the generation of abort defer / undefer pairs and explain the
	lack of an AT END handler.
	(Process_Transient_Objects): Add generation of abort defer/undefer
	pairs.
	* exp_ch9.adb Various reformattings.
	(Build_Protected_Subprogram_Body): Use
	Build_Runtime_Call to construct a call to Abort_Defer.
	(Build_Protected_Subprogram_Call_Cleanup): Use
	Build_Runtime_Call to construct a call to Abort_Undefer.
	(Expand_N_Asynchronous_Select): Use Build_Runtime_Call to
	construct a call to Abort_Defer.
	* exp_intr.adb (Expand_Unc_Deallocation): Abort defer
	/ undefer pairs are now encapsulated in a block with
	an AT END handler. Finalization now takes restriction
	No_Exception_Propagation into account when generating blocks.
	* exp_util.ads, exp_util.adb (Wrap_Cleanup_Procedure): Removed.

From-SVN: r230531
2015-11-18 11:30:12 +01:00
Jakub Jelinek 8ebcad86e6 re PR tree-optimization/68157 (internal compiler error: in reassoc_stmt_dominates_stmt_p, at tree-ssa-reassoc.c:1287)
PR tree-optimization/68157
	* tree-ssa-reassoc.c (attempt_builtin_powi): Set uid of
	pow_stmt or mul_stmt from stmt's uid.
	(reassociate_bb): Set uid of mul_stmt from stmt's uid.

	* g++.dg/opt/pr68157.C: New test.

From-SVN: r230530
2015-11-18 11:23:21 +01:00
Arnaud Charlet 7d4c4fde0e [multiple changes]
2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add a check requiring
	-gnatc with -gnateg.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Uninstall_Declarations): Before swapping private
	and full views, ensure that the potential use visbility of the
	two views is consistent.

2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Increase default stack size for targets
	using stack limit checking.

2015-11-18  Jose Ruiz  <ruiz@adacore.com>

	* a-interr.adb, a-interr.ads (Ada.Interrupts.Get_CPU): Add this
	function that was added to Ada 2005 returning the processor where
	interrupt handlers execute.

2015-11-18  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Handle expanded component
	declaration of a protected definition.

From-SVN: r230529
2015-11-18 11:23:05 +01:00
Arnaud Charlet 3a2b145788 [multiple changes]
2015-11-18  Ed Falis  <falis@adacore.com>

	* s-soflin.adb, s-stchop-vxworks.adb: Code clean ups.

2015-11-18  Gary Dismukes  <dismukes@adacore.com>

	* bcheck.adb: Minor editorial changes.

From-SVN: r230528
2015-11-18 11:20:28 +01:00
Arnaud Charlet 5a99fda7cc [multiple changes]
2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* interfac.ads (Unsigned_24): New type.
	* sem_ch13.adb (Validate_Unchecked_Conversion): Disable error on
	unconstrained arrays in Relaxed_RM_Semantics mode.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): No
	warning is withed unit is the interface of a Stand-Alone Library.

From-SVN: r230527
2015-11-18 11:12:27 +01:00
Arnaud Charlet 1d74252db8 [multiple changes]
2015-11-18  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.ads, s-os_lib.adb(Normalize_Pathname): Support the case of
	an unresolved Directory argument, by recursively resolving it
	against the current dir.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): A function declaration that
	returns a class-wide type must have freeing deferred, so that it
	is not frozen before the class-wide type and its root type are
	frozen. This is significant when there may be a limited view of
	the class_wide type in another package.

From-SVN: r230526
2015-11-18 11:10:46 +01:00