platform/upstream/linaro-gcc.git
8 years ago PR rtl-optimization/68376
jakub [Thu, 19 Nov 2015 08:49:59 +0000 (08:49 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230596 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-19 Richard Biener <rguenther@suse.de>
rguenth [Thu, 19 Nov 2015 08:47:16 +0000 (08:47 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230594 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR target/67770
jakub [Thu, 19 Nov 2015 08:30:19 +0000 (08:30 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230593 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR preprocessor/60736
jakub [Thu, 19 Nov 2015 08:27:12 +0000 (08:27 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230591 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPR 68393: Handle SUBREG_PROMOTED_VAR_P in expand_direct_optab_fn
rsandifo [Thu, 19 Nov 2015 08:17:21 +0000 (08:17 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230590 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * c-common.c (shorten_compare): Don't -Wtype-limits if the
jason [Thu, 19 Nov 2015 04:26:48 +0000 (04:26 +0000)]
* c-common.c (shorten_compare): Don't -Wtype-limits if the
non-constant operand comes from a macro.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230589 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago[PATCH][PR tree-optimization/68198] Avoid CFG explosion due to threading
law [Thu, 19 Nov 2015 00:33:27 +0000 (00:33 +0000)]
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230586 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Thu, 19 Nov 2015 00:16:12 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230585 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Wed, 18 Nov 2015 22:55:17 +0000 (22:55 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230580 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Wed, 18 Nov 2015 22:51:39 +0000 (22:51 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230579 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd out-of-line versions of some <stdatomic.h> functions (PR c/65083).
jsm28 [Wed, 18 Nov 2015 22:13:44 +0000 (22:13 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230578 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc-interface/trans.c (elaborate_all_entities_for_package): New
ebotcazou [Wed, 18 Nov 2015 21:59:30 +0000 (21:59 +0000)]
* gcc-interface/trans.c (elaborate_all_entities_for_package): New
function extracted from...  Recurse on packages.
(elaborate_all_entities): ...here.  Call it on packages.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230576 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc-interface/ada-tree.h (DECL_INVARIANT_P): New macro.
ebotcazou [Wed, 18 Nov 2015 21:55:11 +0000 (21:55 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230575 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * config/nvptx/nvptx.c (nvptx_process_pars): Fix whitespace.
nathan [Wed, 18 Nov 2015 21:33:57 +0000 (21:33 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230571 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc-interface/misc.c: Move global variables to the top of the file.
ebotcazou [Wed, 18 Nov 2015 21:17:51 +0000 (21:17 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230569 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoEnable condegen in case of cond phis.
spop [Wed, 18 Nov 2015 21:08:40 +0000 (21:08 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230567 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoMove codegen related functions to graphite-isl-ast-to-gimple.c
spop [Wed, 18 Nov 2015 21:08:33 +0000 (21:08 +0000)]
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230566 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Andreas Tobler <andreast@gcc.gnu.org>
andreast [Wed, 18 Nov 2015 20:48:18 +0000 (20:48 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230565 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago Support GGC finalizers with PCH.
jason [Wed, 18 Nov 2015 20:11:32 +0000 (20:11 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230564 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Sandra Loosemore <sandra@codesourcery.com>
sandra [Wed, 18 Nov 2015 19:45:47 +0000 (19:45 +0000)]
2015-11-18  Sandra Loosemore  <sandra@codesourcery.com>

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230563 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * config/avr/avr-mcus.def: Add new avr4 devices atmega48pb and
denisc [Wed, 18 Nov 2015 19:15:31 +0000 (19:15 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230562 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago gcc/
nathan [Wed, 18 Nov 2015 18:33:38 +0000 (18:33 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230561 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
ebotcazou [Wed, 18 Nov 2015 18:31:42 +0000 (18:31 +0000)]
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
for the renaming of an address.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230560 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
ebotcazou [Wed, 18 Nov 2015 18:19:57 +0000 (18:19 +0000)]
* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
the index is not itself constant then bail out.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230558 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd PR marker to last change
law [Wed, 18 Nov 2015 16:55:41 +0000 (16:55 +0000)]
Add PR marker to last change

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230556 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gcc.dg/tree-ssa/split-path-1.c: Fix the testcase
law [Wed, 18 Nov 2015 16:54:16 +0000 (16:54 +0000)]
* gcc.dg/tree-ssa/split-path-1.c: Fix the testcase
to avoid undefined behaviour.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230555 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago gcc/cp/
cesar [Wed, 18 Nov 2015 16:31:04 +0000 (16:31 +0000)]
gcc/cp/
* cp-gimplify.c (cp_fold_r): Add support for OACC_LOOP.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230554 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Alan Modra <amodra@gmail.com>
dje [Wed, 18 Nov 2015 15:31:18 +0000 (15:31 +0000)]
2015-11-18  Alan Modra  <amodra@gmail.com>

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230551 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPR 68406: Avoid problem with older host compilers
rsandifo [Wed, 18 Nov 2015 14:31:10 +0000 (14:31 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230549 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFinalize func_options in arm target in
marxin [Wed, 18 Nov 2015 14:18:11 +0000 (14:18 +0000)]
Finalize func_options in arm target in

* config/arm/arm.c (arm_valid_target_attribute_p): Finalize
options struct.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230548 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Ed Schonberg <schonberg@adacore.com>
charlet [Wed, 18 Nov 2015 13:55:42 +0000 (13:55 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230547 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Nicolas Roche <roche@adacore.com>
charlet [Wed, 18 Nov 2015 13:53:58 +0000 (13:53 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230546 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago gcc/
nathan [Wed, 18 Nov 2015 13:49:17 +0000 (13:49 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230545 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * regrename.h (struct du_head): Add target_data_1 and target_data_2
bernds [Wed, 18 Nov 2015 12:26:43 +0000 (12:26 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230543 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agogcc/
ienkovich [Wed, 18 Nov 2015 11:51:58 +0000 (11:51 +0000)]
gcc/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230541 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:53:39 +0000 (10:53 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230540 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRegenerate doc.
charlet [Wed, 18 Nov 2015 10:51:46 +0000 (10:51 +0000)]
Regenerate doc.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230539 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * gnat_ugn/gnat_project_manager.rst,
charlet [Wed, 18 Nov 2015 10:50:40 +0000 (10:50 +0000)]
    * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230538 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoMinor code clean ups.
charlet [Wed, 18 Nov 2015 10:48:32 +0000 (10:48 +0000)]
Minor code clean ups.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230537 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:42:27 +0000 (10:42 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230536 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:40:47 +0000 (10:40 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230535 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Doug Rupp <rupp@adacore.com>
charlet [Wed, 18 Nov 2015 10:39:37 +0000 (10:39 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230534 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Ed Schonberg <schonberg@adacore.com>
charlet [Wed, 18 Nov 2015 10:31:53 +0000 (10:31 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230533 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:30:12 +0000 (10:30 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230531 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR tree-optimization/68157
jakub [Wed, 18 Nov 2015 10:23:21 +0000 (10:23 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230530 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Arnaud Charlet <charlet@adacore.com>
charlet [Wed, 18 Nov 2015 10:23:05 +0000 (10:23 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230529 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Ed Falis <falis@adacore.com>
charlet [Wed, 18 Nov 2015 10:20:28 +0000 (10:20 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230528 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Arnaud Charlet <charlet@adacore.com>
charlet [Wed, 18 Nov 2015 10:12:27 +0000 (10:12 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230527 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Thomas Quinot <quinot@adacore.com>
charlet [Wed, 18 Nov 2015 10:10:46 +0000 (10:10 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230526 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:08:00 +0000 (10:08 +0000)]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb (Has_Non_Null_Refinement): Rename to
Has_Non_Null_Visible_Refinement.
(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement.
* einfo.ads Update the documentation of
attribute Has_Non_Null_Refinement and attribute Has_Null_Refinement.
(Has_Non_Null_Refinement): Rename to Has_Non_Null_Visible_Refinement
and update occurrences in entities.
(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement and update
occurrences in entities.
* sem_prag.adb (Check_In_Out_States): Update the calls to
Has_[Non_]Null_Refinement.
(Check_Input_States): Update the
calls to Has_[Non_]Null_Refinement.
(Check_Output_States): Update the calls to Has_[Non_]Null_Refinement.
(Check_Proof_In_States): Update the calls to Has_[Non_]Null_Refinement.
(Collect_Global_Item): Update the calls to Has_[Non_]Null_Refinement.
(Is_Null_Refined_State): Update the calls to Has_[Non_]Null_Refinement.
(Match_Item): Update the calls to Has_[Non_]Null_Refinement.
* sem_util.adb (Has_Non_Null_Refinement): New routine.
(Has_Null_Refinement): New routine.
* sem_util.ads (Has_Non_Null_Refinement): New routine.
(Has_Null_Refinement): New routine.

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

* exp_util.adb: Minor reformatting and typo fixes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230525 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:05:58 +0000 (10:05 +0000)]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch4.adb: Minor reformatting.

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

* exp_util.adb (Expand_Subtype_From_Expr): Add new formal
parameter Related_Id and propagate it to Make_Subtype_From_Expr.
(Make_Subtype_From_Expr): Add new formal parameter
Related_Id. Create external entities when requested by the caller.
* exp_util.ads (Expand_Subtype_From_Expr): Add new formal
parameter Related_Id. Update the comment on usage.
(Make_Subtype_From_Expr): Add new formal parameter
Related_Id. Update the comment on usage.
* sem_ch3.adb (Analyze_Object_Declaration): Add local variable
Related_Id. Generate an external constrained subtype when the
object is a public symbol.

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

* sem_prag.adb (Analyze_Pragma): Update the grammars of pragmas
Abstract_State, Depends, Global, Initializes, Refined_Depends,
Refined_Global and Refined_State.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230524 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 18 Nov 2015 10:03:44 +0000 (10:03 +0000)]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_util.adb (Has_Full_Default_Initialization):
Perform the test for the presence of pragma
Default_Initial_Condition prior to the specialized type
checks. Add a missing case where the lack of a pragma argument
yields full default initialization.

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

* sem_res.adb (Resolve_Entity_Name): Do not check
for elaboration issues when a variable appears as the name of
an object renaming declaration as this constitutes an aliasing,
not a read.

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

* checks.adb (Overlap_Check): An actual that is an aggregate
cannot overlap with another actual, and no check should be
generated for it.
* targparm.ads: Fix typos.

2015-11-18  Pascal Obry  <obry@adacore.com>

* adaint.c: Routine __gnat_killprocesstree only implemented on
Linux and Windows.

2015-11-18  Pascal Obry  <obry@adacore.com>

* g-ctrl_c.adb: Minor style fixes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230523 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Pascal Obry <obry@adacore.com>
charlet [Wed, 18 Nov 2015 09:38:46 +0000 (09:38 +0000)]
2015-11-18  Pascal Obry  <obry@adacore.com>

* adaint.c, s-os_lib.adb, s-os_lib.ads (Kill_Process_Tree): New.

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

* sem_util.adb (Check_Nonvolatile_Function_Profile): Place the error
message concerning the return type on the result definition.
(Is_Volatile_Function): A function with a parameter of a protected
type is a protected function if it is defined within a protected
definition.

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

* sem_ch4.adb (Try_Container_Indexing): When building the
parameter list for the function call on indexing functions,
preserve overloading of the parameters, which may themselves be
generalized indexing operations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230522 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd missing test-case for PR ipa/68035
marxin [Wed, 18 Nov 2015 09:06:50 +0000 (09:06 +0000)]
Add missing test-case for PR ipa/68035

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230521 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRelease memory in haifa-sched
marxin [Wed, 18 Nov 2015 09:01:35 +0000 (09:01 +0000)]
Release memory in haifa-sched

* haifa-sched.c (haifa_finish_h_i_d): Release reg_set_list.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230520 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix memory leaks in tree-ssa-uninit.c
marxin [Wed, 18 Nov 2015 09:00:58 +0000 (09:00 +0000)]
Fix memory leaks in tree-ssa-uninit.c

* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
Fix GNU coding style.
(find_def_preds): Use auto_vec.
(destroy_predicate_vecs): Change signature of the function.
(prune_uninit_phi_opnds_in_unrealizable_paths): Use the
new signature.
(simplify_preds_4): Use destroy_predicate_vecs instread of
just releasing preds vector.
(normalize_preds): Likewise.
(is_use_properly_guarded): Use new signature of
destroy_predicate_vecs.
(find_uninit_use): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230519 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-18 Richard Biener <rguenther@suse.de>
rguenth [Wed, 18 Nov 2015 08:31:32 +0000 (08:31 +0000)]
2015-11-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/67790
* tree-vect-loop.c (vect_is_simple_reduction_1): Remove
IL rewrite for MINUS_EXPR reductions, rename back to ...
(vect_is_simple_reduction): ... this, removing the wrapper.
(vect_force_simple_reduction): Adjust.
(vectorizable_reduction): Adjust reduc_index for MINUS_EXPR
reductions and make use if reduc_index in all places.  For
the final reduction of MINUS_EXPR use PLUS_EXPR.

* gcc.dg/vect/pr67790.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230518 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * g++.dg/cpp1y/pr58708.C: Define wfoo based on sizeof wchar_t.
dje [Wed, 18 Nov 2015 00:43:59 +0000 (00:43 +0000)]
    * g++.dg/cpp1y/pr58708.C: Define wfoo based on sizeof wchar_t.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230516 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Wed, 18 Nov 2015 00:16:14 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230515 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPOWERPC64_TOC_POINTER_ALIGNMENT
amodra [Tue, 17 Nov 2015 23:24:30 +0000 (23:24 +0000)]
POWERPC64_TOC_POINTER_ALIGNMENT

A default of -z relro (as on Fedora) defeats the deliberate
mis-alignment of .got in the testcase.

* configure.ac (POWERPC64_TOC_POINTER_ALIGNMENT): Pass -z norelro
to ld.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230509 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR bootstrap/68346
jason [Tue, 17 Nov 2015 21:49:23 +0000 (21:49 +0000)]
PR bootstrap/68346

* typeck.c (build_static_cast_1): Force a NOP when converting to
the same type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230508 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago LITERAL_ZERO_P obsoleted by delayed folding.
jason [Tue, 17 Nov 2015 21:49:18 +0000 (21:49 +0000)]
LITERAL_ZERO_P obsoleted by delayed folding.

* cp-tree.h (LITERAL_ZERO_P): Remove.
* parser.c (cp_parser_postfix_expression, literal_zeros)
(cp_parser_parenthesized_expression_list): Don't mess with it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230507 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago Don't fold -(constant) or -0.
jason [Tue, 17 Nov 2015 21:44:08 +0000 (21:44 +0000)]
Don't fold -(constant) or -0.

* parser.c (cp_parser_unary_expression): Fold -constant here.
* typeck.c (cp_build_unary_op): Not here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230506 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoImprove comments in pass_tree_loop_init::execute
vries [Tue, 17 Nov 2015 21:42:36 +0000 (21:42 +0000)]
Improve comments in pass_tree_loop_init::execute

2015-11-17  Tom de Vries  <tom@codesourcery.com>

* tree-ssa-loop.c (pass_tree_loop_init::execute): Improve comments.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230505 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoMake fdump-tree-sccp-details more complete
vries [Tue, 17 Nov 2015 21:42:27 +0000 (21:42 +0000)]
Make fdump-tree-sccp-details more complete

2015-11-17  Tom de Vries  <tom@codesourcery.com>

* tree-scalar-evolution.c (scev_const_prop): Dump details if replacing
uses of ssa_name with constant.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230504 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoClear LOOP_CLOSED_SSA after pass_ccp
vries [Tue, 17 Nov 2015 21:42:18 +0000 (21:42 +0000)]
Clear LOOP_CLOSED_SSA after pass_ccp

2015-11-17  Tom de Vries  <tom@codesourcery.com>

* tree-ssa-ccp.c (do_ssa_ccp): Clear LOOP_CLOSED_SSA in loops state if
something changed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230503 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd in_oacc_kernels_region in struct loop
vries [Tue, 17 Nov 2015 21:42:09 +0000 (21:42 +0000)]
Add in_oacc_kernels_region in struct loop

2015-11-17  Tom de Vries  <tom@codesourcery.com>

* cfgloop.h (struct loop): Add in_oacc_kernels_region field.
* omp-low.c (mark_loops_in_oacc_kernels_region): New function.
(expand_omp_target): Call mark_loops_in_oacc_kernels_region.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230502 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPreliminary regrename patch for i386 ROP patch
bernds [Tue, 17 Nov 2015 21:32:14 +0000 (21:32 +0000)]
Preliminary regrename patch for i386 ROP patch

* regrename.c (regrename_find_superclass): New function, code moved
from ...
(rename_chains): ... here.  Call it.
* regrename.h (regrename_find_superclass): Declare.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230501 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoEnsure earlyclobbered operands go through a terminate_write stage.
bernds [Tue, 17 Nov 2015 21:24:38 +0000 (21:24 +0000)]
Ensure earlyclobbered operands go through a terminate_write stage.

* regrename.c (record_out_operands): Terminate earlyclobbered
operands here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230500 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR target/66785
bernds [Tue, 17 Nov 2015 21:20:20 +0000 (21:20 +0000)]
PR target/66785
* regrename.c (record_operand_use): Keep track of failed operands
and stop appending if we see any.
* regrename.h (struct operand_rr_info): Add a failed field and shrink
n_chains to short.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230499 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-17 Sandra Loosemore <sandra@codesourcery.com>
sandra [Tue, 17 Nov 2015 21:07:15 +0000 (21:07 +0000)]
2015-11-17  Sandra Loosemore  <sandra@codesourcery.com>

PR 48568
* doc/extend.texi (Common Function Attributes) [visibility]:
Add cross-references to matching variable and type attributes.
(Common Variable Attributes) [visibility]: Add missing entry.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230498 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix uninitialized src_range values for c_expr
dmalcolm [Tue, 17 Nov 2015 20:09:56 +0000 (20:09 +0000)]
Fix uninitialized src_range values for c_expr

gcc/c/ChangeLog:
* c-parser.c (set_c_expr_source_range): Bulletproof both
overloaded implementations against NULL expr->value.
(c_parser_braced_init): Set src_range for "ret" to a sane pair of
values.
(c_parser_unary_expression): Likewise when handling addresses of
labels.
(c_parser_postfix_expression): Likewise for statement expressions,
for __FUNCTION__, __PRETTY_FUNCTION_ and __func__ keywords, for
__builtin_va_arg, and for __builtin_offset_of.
(c_parser_postfix_expression_after_paren_type): Initialize expr's
src_range using the range of the braced initializer.
(c_parser_transaction_expression): Set src_range for "ret" to a
sane pair of values.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-expressions-1.c (vector): New
macro.
(test_braced_init): New function.
(test_statement_expression): New function.
(test_address_of_label): New function.
(test_transaction_expressions): New function.
(test_keywords): New function.
(test_builtin_va_arg): New function.
(test_builtin_offsetof): New function.
* lib/multiline.exp (_build_multiline_regex): Escape braces.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230497 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPR libstdc++/66059 optimise _Build_index_tuple
redi [Tue, 17 Nov 2015 19:54:33 +0000 (19:54 +0000)]
PR libstdc++/66059 optimise _Build_index_tuple

PR libstdc++/66059
* include/std/utility (_Build_index_tuple): Optimise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230496 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2015-11-17 Steven G. Kargl <kargl@gcc.gnu.org>
kargl [Tue, 17 Nov 2015 19:51:10 +0000 (19:51 +0000)]
2015-11-17  Steven G. Kargl  <kargl@gcc.gnu.org>

* primary.c (gfc_match_structure_constructor): Fix whitespace.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230495 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoSimplify rs6000_builtin_vectorized_function
rsandifo [Tue, 17 Nov 2015 18:56:52 +0000 (18:56 +0000)]
Simplify rs6000_builtin_vectorized_function

After the previous patches it's no longer necessary for
TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that
map to the vector optab of the original operation.  We'll use
a vector form of the internal function instead.

Tested on powerpc64-linux-gnu.

gcc/
* config/rs6000/rs6000.c (rs6000_builtin_vectorized_function): Remove
entries that map directly to optabs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230494 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoSimplify ix86_builtin_vectorized_function
rsandifo [Tue, 17 Nov 2015 18:56:21 +0000 (18:56 +0000)]
Simplify ix86_builtin_vectorized_function

After the previous patches it's no longer necessary for
TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that
map to the vector optab of the original operation.  We'll use
a vector form of the internal function instead.

Tested on x86_64-linux-gnu.

gcc/
* config/i386/i386.c (ix86_builtin_vectorized_function): Remove
entries that map directly to optabs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230493 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoVectorize internal functions
rsandifo [Tue, 17 Nov 2015 18:55:55 +0000 (18:55 +0000)]
Vectorize internal functions

This patch tries to vectorize built-in and internal functions as
internal functions first, falling back on the current built-in
target hooks otherwise.

This means that we'll automatically pick up vector versions of optabs
without the target having to implement any special hooks.  E.g. we'll
use V4SF sqrt if the target defines a "sqrtv4sf2" optab.  As well as
being simpler, it means that the target-independent code has more
idea what the vectorized function does.

Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnu and
powerpc64-linux-gnu.

gcc/
* internal-fn.h (direct_internal_fn_info): Add vectorizable flag.
* internal-fn.c (direct_internal_fn_array): Update accordingly.
* tree-vectorizer.h (vectorizable_function): Delete.
* tree-vect-stmts.c: Include internal-fn.h.
(vectorizable_internal_function): New function.
(vectorizable_function): Inline into...
(vectorizable_call): ...here.  Explicitly reject calls that read
from or write to memory.  Try using an internal function before
falling back on the old vectorizable_function behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230492 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoMake builtin_vectorized_function take a combined_fn
rsandifo [Tue, 17 Nov 2015 18:55:13 +0000 (18:55 +0000)]
Make builtin_vectorized_function take a combined_fn

This patch replaces the fndecl argument to builtin_vectorized_function
with a combined_fn and gets the vectoriser to call it for internal
functions too.  The patch also moves vectorisation of machine-specific
built-ins to a new hook, builtin_md_vectorized_function.

Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnu and
powerpc64-linux-gnu.

gcc/
* target.def (builtin_vectorized_function): Take a combined_fn (in
the form of an unsigned int) rather than a function decl.
(builtin_md_vectorized_function): New.
* targhooks.h (default_builtin_vectorized_function): Replace the
fndecl argument with an unsigned int.
(default_builtin_md_vectorized_function): Declare.
* targhooks.c (default_builtin_vectorized_function): Replace the
fndecl argument with an unsigned int.
(default_builtin_md_vectorized_function): New function.
* doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION):
New hook.
* doc/tm.texi: Regenerate.
* tree-vect-stmts.c (vectorizable_function): Update call to
builtin_vectorized_function, also passing internal functions.
Call builtin_md_vectorized_function for target-specific builtins.
* config/aarch64/aarch64-protos.h
(aarch64_builtin_vectorized_function): Replace fndecl argument
with an unsigned int.
* config/aarch64/aarch64-builtins.c: Include case-cfn-macros.h.
(aarch64_builtin_vectorized_function): Update after above changes.
Use CASE_CFN_*.
* config/arm/arm-protos.h (arm_builtin_vectorized_function): Replace
fndecl argument with an unsigned int.
* config/arm/arm-builtins.c: Include case-cfn-macros.h
(arm_builtin_vectorized_function): Update after above changes.
Use CASE_CFN_*.
* config/i386/i386.c: Include case-cfn-macros.h
(ix86_veclib_handler): Take a combined_fn rather than a
built_in_function.
(ix86_veclibabi_svml, ix86_veclibabi_acml): Likewise.  Use
mathfn_built_in rather than calling builtin_decl_implicit directly.
(ix86_builtin_vectorized_function) Update after above changes.
Use CASE_CFN_*.
* config/rs6000/rs6000.c: Include case-cfn-macros.h
(rs6000_builtin_vectorized_libmass): Replace fndecl argument
with a combined_fn.  Use CASE_CFN_*.  Use mathfn_built_in rather
than calling builtin_decl_implicit directly.
(rs6000_builtin_vectorized_function): Update after above changes.
Use CASE_CFN_*.  Move BUILT_IN_MD to...
(rs6000_builtin_md_vectorized_function): ...this new function.
(TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION): Define.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230491 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse IFN_SQRT in tree-vect-patterns.c
rsandifo [Tue, 17 Nov 2015 18:54:36 +0000 (18:54 +0000)]
Use IFN_SQRT in tree-vect-patterns.c

In practice all targets that can vectorise sqrt define the appropriate
sqrt<mode>2 optab.  The only case where this isn't immediately obvious
is the libmass support in rs6000.c, but Mike Meissner said that it shouldn't
be exercised for sqrt.

This patch therefore uses the internal function interface instead of
going via the target hook.

Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi and
powerpc64-linux-gnu.

gcc/
* tree-vect-patterns.c: Include internal-fn.h.
(vect_recog_pow_pattern): Use IFN_SQRT instead of BUILT_IN_SQRT*.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230490 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRemove dead macros
rsandifo [Tue, 17 Nov 2015 18:53:43 +0000 (18:53 +0000)]
Remove dead macros

Nothing uses these macros and removing them makes it more likely
that future code will use CASE_CFN_* instead.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree.h (BUILTIN_EXP10_P, BUILTIN_EXPONENT_P, BUILTIN_SQRT_P)
(BUILTIN_CBRT_P, BUILTIN_ROOT_P): Delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230489 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoExtend tree-call-cdce to calls whose result is used
rsandifo [Tue, 17 Nov 2015 18:51:55 +0000 (18:51 +0000)]
Extend tree-call-cdce to calls whose result is used

For -fmath-errno, builtins.c currently expands calls to sqrt to:

        y = sqrt_optab (x);
        if (y != y)
          [ sqrt (x); or errno = EDOM; ]

The drawbacks of this are:

- the call to sqrt is protected by the result of the optab rather
      than the input.  It would be better to check __builtin_isless (x, 0),
      like tree-call-cdce.c does.

- the branch isn't exposed at the gimple level and so gets little
      high-level optimisation.

- we do this for log too, but for log a zero input produces
      -inf rather than a NaN, and sets errno to ERANGE rather than EDOM.

This patch moves the code to tree-call-cdce.c instead, with the optab
operation being represented as an internal function.  This means that
we can use the existing argument-based range checks rather than the
result-based checks and that we get more gimple optimisation of
the branch.

Previously the pass was only enabled by default at -O2 or above,
but the old builtins.c code was enabled at -O.  The patch therefore
enables the pass at -O as well.

The previous patch to cfgexpand.c handled cases where functions
don't (or are assumed not to) set errno, so this patch makes
the builtins.c code dead.

Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi
and visium-elf (for the EDOM stuff).

gcc/
* builtins.c (expand_errno_check, expand_builtin_mathfn)
(expand_builtin_mathfn_2): Delete.
(expand_builtin): Remove handling of functions with
internal function equivalents.
* internal-fn.def (SET_EDOM): New internal function.
* internal-fn.h (set_edom_supported_p): Declare.
* internal-fn.c (expand_SET_EDOM): New function.
(set_edom_supported_p): Likewise.
* tree-call-cdce.c: Include builtins.h and internal-fn.h.
Rewrite comment at head of file.
(is_call_dce_candidate): Rename to...
(can_test_argument_range): ...this.  Don't check gimple_call_lhs
or gimple_call_builtin_p here.
(edom_only_function): New function.
(shrink_wrap_one_built_in_call_with_conds): New function, split out
from...
(shrink_wrap_one_built_in_call): ...here.
(can_use_internal_fn, use_internal_fn): New functions.
(shrink_wrap_conditional_dead_built_in_calls): Call use_internal_fn
for calls that have an lhs.
(pass_call_cdce::gate): Remove optimize_function_for_speed_p check.
(pass_call_cdce::execute): Skip blocks that are optimized for size.
Check gimple_call_builtin_p here.  Use can_use_internal_fn for
calls with an lhs.
* opts.c (default_options_table): Enable -ftree-builtin-call-cdce
at -O and above.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230488 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoShort-cut generation of simple built-in functions
rsandifo [Tue, 17 Nov 2015 18:51:20 +0000 (18:51 +0000)]
Short-cut generation of simple built-in functions

This patch short-circuits the builtins.c expansion code for a particular
gimple call if:

- the function has an associated internal function
- the target implements that internal function
- the call has no side effects

This allows a later patch to remove the builtins.c code, once calls with
side effects have been handled.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* builtins.h (called_as_built_in): Declare.
* builtins.c (called_as_built_in): Make external.
* internal-fn.h (expand_internal_call): Define a variant that
specifies the internal function explicitly.
* internal-fn.c (expand_load_lanes_optab_fn)
(expand_store_lanes_optab_fn, expand_ANNOTATE, expand_GOMP_SIMD_LANE)
(expand_GOMP_SIMD_VF, expand_GOMP_SIMD_LAST_LANE)
(expand_GOMP_SIMD_ORDERED_START, expand_GOMP_SIMD_ORDERED_END)
(expand_UBSAN_NULL, expand_UBSAN_BOUNDS, expand_UBSAN_VPTR)
(expand_UBSAN_OBJECT_SIZE, expand_ASAN_CHECK, expand_TSAN_FUNC_EXIT)
(expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB)
(expand_UBSAN_CHECK_MUL, expand_ADD_OVERFLOW, expand_SUB_OVERFLOW)
(expand_MUL_OVERFLOW, expand_LOOP_VECTORIZED)
(expand_mask_load_optab_fn, expand_mask_store_optab_fn)
(expand_ABNORMAL_DISPATCHER, expand_BUILTIN_EXPECT, expand_VA_ARG)
(expand_UNIQUE, expand_GOACC_DIM_SIZE, expand_GOACC_DIM_POS)
(expand_GOACC_LOOP, expand_GOACC_REDUCTION, expand_direct_optab_fn)
(expand_unary_optab_fn, expand_binary_optab_fn): Add an internal_fn
argument.
(internal_fn_expanders): Update prototype.
(expand_internal_call): Define a variant that specifies the
internal function explicitly. Use it to implement the previous
interface.
* cfgexpand.c (expand_call_stmt): Try to expand calls to built-in
functions as calls to internal functions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230487 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoReplace match.pd DEFINE_MATH_FNs with auto-generated lists
rsandifo [Tue, 17 Nov 2015 18:49:10 +0000 (18:49 +0000)]
Replace match.pd DEFINE_MATH_FNs with auto-generated lists

This patch autogenerates the operator lists for maths functions
like SQRT, adding an additional entry for internal functions.
E.g.:

        (define_operator_list SQRT
            BUILT_IN_SQRTF
            BUILT_IN_SQRT
            BUILT_IN_SQRTL
            IFN_SQRT)

and:

        (define_operator_list CABS
            BUILT_IN_CABSF
            BUILT_IN_CABS
            BUILT_IN_CABSL
            null)

(since there's no internal function for CABS).

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* Makefile.in (MOSTLYCLEANFILES): Add cfn-operators.pd.
(generated_files): Likewise.
(s-cfn-operators, cfn-operators.pd): New rules.
(s-match): Depend on cfn-operators.pd.
* gencfn-macros.c: Expand comment to describe -o behavior.
(print_define_operator_list): New function.
(main): Accept -o.  Call print_define_operator_list.
* genmatch.c (main): Add the current directory to the include path.
* match.pd (DEFINE_MATH_FN): Delete.  Include cfn-operators.pd
instead.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230486 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd null identifiers to genmatch
rsandifo [Tue, 17 Nov 2015 18:48:23 +0000 (18:48 +0000)]
Add null identifiers to genmatch

This patch adds a null identifier that can never match anything and
can never be generated.  It is only valid in operator lists and fors.
Later patches will add uses of it.

The idea is to allow operator lists for maths functions that have
four entries:

- float built-in
- double built-in
- long double built-in
- internal function

Not all maths functions have an associated internal function,
and for those the final operator will be "null".  Any simplification
that tries to use a null substitution will be skipped.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* doc/match-and-simplify.texi: Document the "null" identifier.
* genmatch.c (id_base::NULL_ID): New kind.
(null_id): New variable.
(get_operator): Add a parameter that says whether null identifiers
are allowed.
(contains_id): New function.
(lower_for): Skip substitutions that would have a null_id in
either the match or the result.
(parser::parse_for): Allow the null identifier to be used.
(parser::parse_operator_list): Likewise.
(main): Initialize null_id.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230485 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd genmatch support for internal functions
rsandifo [Tue, 17 Nov 2015 18:47:44 +0000 (18:47 +0000)]
Add genmatch support for internal functions

This patch makes genmatch match calls based on combined_fn rather
than built_in_function and extends the matching to internal functions.
It also uses fold_const_call to fold the calls to a constant, rather
than going through fold_builtin_n.

In order to slightly simplify the code and remove potential
ambiguity, the patch enforces lower case for tree codes
(foo->FOO_EXPR), caps for functions (no built_in_hypot->BUILT_IN_HYPOT)
and requires an exact match for user-defined identifiers.  The first two
were already met in practice but there were a couple of cases where
operator lists were defined in one case and used in another.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* match.pd: Use HYPOT and COS rather than hypot and cos.
Use CASE_CFN_* macros.  Guard log/exp folds with
SCALAR_FLOAT_TYPE_P.
* genmatch.c (internal_fn): New enum.
(fn_id::fn): Change to an unsigned int.
(fn_id::fn_id): Accept internal_fn too.
(add_builtin): Rename to...
(add_function): ...this and turn into a template.
(get_operator): Only try one variation if the original name fails.
Only add _EXPR if the original name was all lower case.
Try converting internal and built-in function names to their
CFN equivalents.
(expr::gen_transform): Use maybe_build_call_expr_loc for generic.
(dt_simplify::gen_1): Likewise.
(dt_node::gen_kids_1): Use gimple_call_combined_fn for gimple
and get_call_combined_fn for generic.
(dt_simplify::gen): Use combined_fn as the type of fn_ids.
(decision_tree::gen): Likewise.
(main): Use lower case in the strings for {VIEW_,}CONVERT[012].
Use add_function rather than add_builtin.  Register internal
functions too.
* generic-match-head.c: Include case-cfn-macros.h.
* gimple-fold.c (replace_stmt_with_simplification): Use
gimple_call_combined_fn to test whether we can keep an
existing call.
* gimple-match.h (code_helper): Replace built_in_function
with combined_fn.
* gimple-match-head.c: Include fold-const-call.h, internal-fn.h
and case-fn-macros.h.
(gimple_resimplify1): Use fold_const_call.
(gimple_resimplify2, gimple_resimplify3): Likewise.
(build_call_internal, build_call): New functions.
(maybe_push_res_to_seq): Use them.
(gimple_simplify): Use fold_const_call.  Set *rcode to a combined_fn
rather than a built-in function.
* tree.h (build_call_expr_internal_loc): Declare.
(maybe_build_call_expr_loc): Likewise.
* tree.c (build_call_expr_internal_loc_array): New function.
(maybe_build_call_expr_loc): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230484 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoExtend mathfn_built_in to handle combined_fn
rsandifo [Tue, 17 Nov 2015 18:47:02 +0000 (18:47 +0000)]
Extend mathfn_built_in to handle combined_fn

This patch extends mathfn_built_in to handle combined_fn, but keeps the
old built_in_function interface around since it's a common case.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* builtins.h (mathfn_built_in): Add a variant that takes
a combined_fn.
* builtins.c: Include case-cfn-macros.h.
(CASE_MATHFN): Use CASE_CFN_*.
(CASE_MATHFN_REENT): Use CFN_ codes.
(mathfn_built_in_2, mathfn_built_in_1): Replace built_in_function
argument with a combined_fn.
(mathfn_built_in): Add a variant that takes a combined_fn.
(expand_builtin_int_roundingfn_2): Update callers accordingly.
(fold_builtin_sincos, fold_builtin_classify): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230483 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse combined_fn in tree-vect-patterns.c
rsandifo [Tue, 17 Nov 2015 18:46:22 +0000 (18:46 +0000)]
Use combined_fn in tree-vect-patterns.c

Another patch to extend uses of built_in_function to combined_fn,
this time in tree-vect-patterns.c.  The old code didn't handle the
long double pow variants, but I think that's because noone had a target
that would benefit rather than because the code would mishandle them.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree-vect-patterns.c: Include case-cfn-macros.h.
(vect_recog_pow_pattern): Use combined_fn instead of built-in codes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230482 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse combined_fn in tree-ssa-math-opts.c
rsandifo [Tue, 17 Nov 2015 18:45:41 +0000 (18:45 +0000)]
Use combined_fn in tree-ssa-math-opts.c

Another patch to extend uses of built_in_function to combined_fn, this time
in tree-ssa-math-opts.c.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree-ssa-math-opts.c: Include case-cfn-macros.h.
(execute_cse_sincos_1): Use combined_fn instead of built-in codes.
(pass_cse_sincos::execute): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230481 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse combined_fn in tree-ssa-reassoc.c
rsandifo [Tue, 17 Nov 2015 18:45:20 +0000 (18:45 +0000)]
Use combined_fn in tree-ssa-reassoc.c

Another patch to extend uses of built_in_function to combined_fn, this time
in tree-ssa-reassoc.c.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree-ssa-reassoc.c: Include case-cfn-macros.h.
(stmt_is_power_of_op): Use combined_fn instead of built-in codes.
(decrement_power, acceptable_pow_call): Likewise.
(attempt_builtin_copysign): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230480 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse combined_fn in tree-vrp.c
rsandifo [Tue, 17 Nov 2015 18:44:22 +0000 (18:44 +0000)]
Use combined_fn in tree-vrp.c

Another patch to extend uses of built_in_function to combined_fn, this time
in tree-vrp.c.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree-vrp.c: Include case-cfn-macros.h.
(extract_range_basic): Switch on combined_fn rather than handling
built-in functions and internal functions separately.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230479 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoMake more use of combined_fn
rsandifo [Tue, 17 Nov 2015 18:43:42 +0000 (18:43 +0000)]
Make more use of combined_fn

This patch generalises fold-const.[hc] routines to use combined_fn
instead of built_in_function.  It also updates gimple-ssa-backprop,c
since the update is simple and it avoids churn on the call to
negate_mathfn_p.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* fold-const.h (negate_mathfn_p): Take a combined_fn rather
than a built_in_function.
(tree_call_nonnegative_warnv_p): Take a combined_fn rather than
a function decl.
(integer_valued_real_call_p): Likewise.
* fold-const.c: Include case-cfn-macros.h
(negate_mathfn_p): Take a combined_fn rather than a built_in_function.
(negate_expr_p): Update accordingly.
(tree_call_nonnegative_warnv_p): Take a combined_fn rather than
a function decl.
(integer_valued_real_call_p): Likewise.
(tree_invalid_nonnegative_warnv_p): Update accordingly.
(integer_valued_real_p): Likewise.
* gimple-fold.c (gimple_call_nonnegative_warnv_p): Update call
to tree_call_nonnegative_warnv_p.
(gimple_call_integer_valued_real_p): Likewise
integer_valued_real_call_p.
* gimple-ssa-backprop.c: Include case-cfn-macros.h.
(backprop::process_builtin_call_use): Extend to combined_fn.
(strip_sign_op_1): Likewise.
(backprop::process_use): Don't check for built-in calls here.
(backprop::execute): Likewise.
(backprop::optimize_builtin_call): Update call to negate_mathfn_p.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230478 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoExtend fold_const_call to combined_fn
rsandifo [Tue, 17 Nov 2015 18:42:48 +0000 (18:42 +0000)]
Extend fold_const_call to combined_fn

This patch extends fold_const_call so that it can handle internal
as well as built-in functions.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* fold-const-call.h (fold_const_call): Replace built_in_function
arguments with combined_fn arguments.
* fold-const-call.c: Include case-cfn-macros.h.
(fold_const_call_ss, fold_const_call_cs, fold_const_call_sc)
(fold_const_call_cc, fold_const_call_sss, fold_const_call_ccc)
(fold_const_call_ssss, fold_const_call_1, fold_const_call): Replace
built_in_function arguments with combined_fn arguments.
* builtins.c (fold_builtin_sincos, fold_builtin_1, fold_builtin_2)
(fold_builtin_3): Update calls to fold_const_call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230477 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd gencfn-macros.c
rsandifo [Tue, 17 Nov 2015 18:41:55 +0000 (18:41 +0000)]
Add gencfn-macros.c

This patch automatically generates case macros such as:

        CASE_CFN_SQRT

for each {F,,L} floating-point built-in function and each {,L,LL,IMAX}
integer built-in function.  The macros match the same built-in
functions as CASE_FLT_FN and CASE_INT_FN but in addition include
the associated internal function, if any.

The idea is to make sure that users of combined_fn don't need to know
which built-in functions have internal-function equivalents.  If we add
a new function to internal-fn.def, all combined_fn users should pick it
up automatically.

The generator wants to use "hash_set <nofree_string_hash>",
so the patch follows hash_map in using the types given by the
traits as the key.  This is a no-op for current users of hash_set.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* Makefile.in (HASH_TABLE_H): Add GGC_H.
(MOSTLYCLEANFILES, generated_files): Add case-fn-macros.h.
(s-case-cfn-macros, case-cfn-macros.h, build/gencfn-macros.o)
(build/gencfn-macros$(build_exeext): New rules.
(genprogerr): Add cfn-macros.
* hash-set.h (hash_set): Use the traits value_type as the key.
* gencfn-macros.c: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230476 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd internal bitcount functions
rsandifo [Tue, 17 Nov 2015 18:40:31 +0000 (18:40 +0000)]
Add internal bitcount functions

This patch adds internal function equivalents of all the INT_FN functions.
Unlike the math functions, these functions never set errno and the internal
functions should be exactly equivalent to the built-in ones.  The reason
for defining the internal functions is so that we can extend the
functionality to other modes, in particular vector modes.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* internal-fn.def (DEF_INTERNAL_INT_FN): New macro.
(CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): New functions.
* builtins.c (associated_internal_fn): Handle them.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230475 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd internal math functions
rsandifo [Tue, 17 Nov 2015 18:39:02 +0000 (18:39 +0000)]
Add internal math functions

This patch adds internal functions for simple FLT_FN built-in functions,
in cases where an associated optab already exists.  Unlike some of the
built-in functions, these internal functions never set errno.

LDEXP is an odd-one out in that its second operand is an integer.
All the others operate on uniform types.

The patch also adds a function to query the internal function associated
with a built-in function (if any), and another to test whether a given
gcall could be replaced by a call to an internal function on the current
target (as long as the caller deals with errno appropriately).

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* builtins.h (associated_internal_fn): Declare.
(replacement_internal_fn): Likewise.
* builtins.c: Include internal-fn.h
(associated_internal_fn, replacement_internal_fn): New functions.
* internal-fn.def (DEF_INTERNAL_FLT_FN): New macro.
(ACOS, ASIN, ATAN, COS, EXP, EXP10, EXP2, EXPM1, LOG, LOG10, LOG1P)
(LOG2, LOGB, SIGNIFICAND, SIN, SQRT, TAN, CEIL, FLOOR, NEARBYINT)
(RINT, ROUND, TRUNC, ATAN2, COPYSIGN, FMOD, POW, REMAINDER, SCALB)
(LDEXP): New functions.
* internal-fn.c: Include recog.h.
(unary_direct, binary_direct): New macros.
(expand_direct_optab_fn): New function.
(expand_unary_optab_fn): New macro.
(expand_binary_optab_fn): Likewise.
(direct_unary_optab_supported_p): Likewise.
(direct_binary_optab_supported_p): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230474 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd basic support for direct_optab internal functions
rsandifo [Tue, 17 Nov 2015 18:37:45 +0000 (18:37 +0000)]
Add basic support for direct_optab internal functions

This patch adds a concept of internal functions that map directly to an
optab (here called "direct internal functions").  The function can only
be used if the associated optab can be used.

We currently have four functions like that:

- LOAD_LANES
- STORE_LANES
- MASK_LOAD
- MASK_STORE

so the patch converts them to the new infrastructure.  These four
all need different types of optabs, but future patches will add
regular unary and binary ones.

In general we need one or two modes to decide whether an optab is
supported, depending on whether it's a convert_optab or not.
This in turn means that we need up to two types to decide whether
an internal function is supported.  The patch records which types
are needed for each internal function, using -1 if the return type
should be used and N>=0 if the type of argument N should be used.

(LOAD_LANES and STORE_LANES are unusual in that both optab modes
come from the same array type.)

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* coretypes.h (tree_pair): New type.
* internal-fn.def (DEF_INTERNAL_OPTAB_FN): New macro.  Use it
for MASK_LOAD, LOAD_LANES, MASK_STORE and STORE_LANES.
* internal-fn.h (direct_internal_fn_info): New structure.
(direct_internal_fn_array): Declare.
(direct_internal_fn_p, direct_internal_fn): New functions.
(direct_internal_fn_types, direct_internal_fn_supported_p): Declare.
* internal-fn.c (not_direct, mask_load_direct, load_lanes_direct)
(mask_store_direct, store_lanes_direct): New macros.
(direct_internal_fn_array) New array.
(get_multi_vector_move): Return the optab handler without asserting
that it is available.
(expand_LOAD_LANES): Rename to...
(expand_load_lanes_optab_fn): ...this and add an optab argument.
(expand_STORE_LANES): Rename to...
(expand_store_lanes_optab_fn): ...this and add an optab argument.
(expand_MASK_LOAD): Rename to...
(expand_mask_load_optab_fn): ...this and add an optab argument.
(expand_MASK_STORE): Rename to...
(expand_mask_store_optab_fn): ...this and add an optab argument.
(direct_internal_fn_types, direct_optab_supported_p)
(multi_vector_optab_supported_p, direct_internal_fn_supported_p)
(direct_internal_fn_supported_p): New functions.
(direct_mask_load_optab_supported_p): New macro.
(direct_load_lanes_optab_supported_p): Likewise.
(direct_mask_store_optab_supported_p): Likewise.
(direct_store_lanes_optab_supported_p): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230473 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd a combined_fn enum
rsandifo [Tue, 17 Nov 2015 18:34:47 +0000 (18:34 +0000)]
Add a combined_fn enum

I'm working on a patch series that needs to be able to treat built-in
functions and internal functions in a similar way.  This patch adds a
new enum, combined_fn, that combines the two together.  It also adds
utility functions for seeing which combined_fn (if any) is called by
a given CALL_EXPR or gcall.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* tree-core.h (internal_fn): Move immediately after the definition
of built_in_function.
(combined_fn): New enum.
* tree.h (as_combined_fn, builtin_fn_p, as_builtin_fn)
(internal_fn_p, as_internal_fn): New functions.
(get_call_combined_fn, combined_fn_name): Declare.
* tree.c (get_call_combined_fn): New function.
(combined_fn_name): Likewise.
* gimple.h (gimple_call_combined_fn): Declare.
* gimple.c (gimple_call_combined_fn): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230472 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR bootstrap/68346
jason [Tue, 17 Nov 2015 18:16:35 +0000 (18:16 +0000)]
PR bootstrap/68346

* c-common.c (warn_tautological_cmp): Fold before checking for
constants.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230471 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR bootstrap/68361
jason [Tue, 17 Nov 2015 18:16:29 +0000 (18:16 +0000)]
PR bootstrap/68361

* cvt.c (cp_convert_and_check): Use warning_sentinel to suppress
-Wparentheses.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230470 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix PR number in ChangeLog
sandra [Tue, 17 Nov 2015 18:15:34 +0000 (18:15 +0000)]
Fix PR number in ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230469 138bc75d-0d04-0410-961f-82ee72b054a4