platform/upstream/gcc.git
8 years agoMove #undef DEF_BUILTIN* to builtins.def
Richard Sandiford [Sat, 7 Nov 2015 10:18:38 +0000 (10:18 +0000)]
Move #undef DEF_BUILTIN* to builtins.def

I was confused at first why tree-core.h was undefining DEF_BUILTIN_CHKP
before defining it, then undefining it again after including builtins.def.
This is because builtins.def provides a default definition of
DEF_BUILTIN_CHKP, but leaves it up to the caller to undefine it where
necessary.  Similarly to the previous internal-fn.def patch, it seems
more obvious for builtins.def to #undef things unconditionally.

One argument might have been that keeping preprocessor stuff
out of the .def files makes it easier for non-cpp parsers.  In practice
though we already have #ifs and multiline #defines, so single-line #undefs
should be easy in comparison.

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

gcc/ada/
* gcc-interface/utils.c: Don't undef DEF_BUILTIN.

gcc/c-family/
* c-common.c: Don't undef DEF_BUILTIN.

gcc/jit/
* jit-builtins.c: Don't undef DEF_BUILTIN.

gcc/lto/
* lto-lang.c: Don't undef DEF_BUILTIN.

gcc/
* builtins.def: #undef DEF_BUILTIN and DEF_BUILTIN_CHKP
* builtins.c, genmatch.c, tree-core.h: Don't undef them here.

From-SVN: r229924

8 years agoMove #undef DEF_INTERNAL_FN to internal-fn.def
Richard Sandiford [Sat, 7 Nov 2015 10:17:05 +0000 (10:17 +0000)]
Move #undef DEF_INTERNAL_FN to internal-fn.def

In practice the definition of DEF_INTERNAL_FN is never reused after
including internal-fn.def, so we might as well #undef it there.

This becomes more obvious with a later patch that adds other
DEF_INTERNAL_* directives, such as DEF_INTERNAL_OPTAB_FN.
If the includer doesn't care about the information carried in
these new directives, it can simply leave the macro undefined
and internals.def will provide a definition that forwards to
DEF_INTERNAL_FN.  It doesn't make much sense for includers to have
to #undef macros that are defined by internals.def and it seems overly
complicated to get internals.def to undef macros only in the cases
where it provided a definition.  Instead I went with the approach of
#undeffing all the DEF_INTERNAL_* macros unconditionally.

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

gcc/
* internal-fn.def: #undef DEF_INTERNAL_FN at the end.
* internal-fn.c: Don't undef it here.
* tree-core.h: Likewise.

From-SVN: r229923

8 years agoMove const char * -> int/fp folds to fold-const-call.c
Richard Sandiford [Sat, 7 Nov 2015 10:10:44 +0000 (10:10 +0000)]
Move const char * -> int/fp folds to fold-const-call.c

This patch moves folds that deal with constant string arguments and
return a constant integer or floating-point value.  For example, it
handles strcmp ("foo", "bar") but not strstr ("foobar", "bar"),
which wouldn't currently be accepted by the gimple folders.

The builtins.c folding for strlen (via c_strlen) is a bit more general
than what the fold-const-call.c code does (and more general than we need
for the gimple folders).  I've therefore left it as-is, even though it
partially duplicates the new code.

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

gcc/
* builtins.c (fold_builtin_nan): Delete.
(fold_builtin_memcmp): Remove case where both arguments are constant.
(fold_builtin_strcmp, fold_builtin_strncmp): Likewise.
(fold_builtin_strspn, fold_builtin_strcspn): Likewise.
(fold_builtin_1): Remove BUILT_IN_NAN* handling.
* fold-const-call.c: Include fold-const.h.
(host_size_t_cst_p): New function.
(build_cmp_result, fold_const_builtin_nan): Likewise.
(fold_const_call_1): New function, split out from...
(fold_const_call): ...here (for all three interfaces).  Handle
constant nan, nans, strlen, strcmp, strncmp, strspn and strcspn.

From-SVN: r229922

8 years agoMove constant bitop and bswap folds to fold-const-call.c
Richard Sandiford [Sat, 7 Nov 2015 10:08:31 +0000 (10:08 +0000)]
Move constant bitop and bswap folds to fold-const-call.c

The only folds left in builtins.c were for constants, so we can remove
the builtins.c handling entirely.

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

gcc/
* builtins.c (fold_builtin_bitop, fold_builtin_bswap): Delete.
(fold_builtin_1): Don't call them.
* fold-const-call.c: Include tm.h.
(fold_const_call_ss): New variant for integer-to-integer folds.
(fold_const_call): Call it.

From-SVN: r229921

8 years agoHandle constant fp classifications in fold-const-call.c
Richard Sandiford [Sat, 7 Nov 2015 10:05:51 +0000 (10:05 +0000)]
Handle constant fp classifications in fold-const-call.c

Move the constant "is finite", "is infinite" and "is nan" queries
to fold-const-call.c.

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

gcc/
* builtins.c (fold_builtin_classify): Move constant cases to...
* fold-const-call.c (fold_const_call_ss): ...here.

From-SVN: r229920

8 years agoMove c_getstr to fold-const.c
Richard Sandiford [Sat, 7 Nov 2015 10:01:52 +0000 (10:01 +0000)]
Move c_getstr to fold-const.c

Upcoming patches to fold-const-call.c want to use c_getstr, which is
currently defined in builtins.c.  The function doesn't really do anything
related to built-ins, and I'd rather not make fold-const-call.c depend
on builtins.c and builtins.c depend on fold-const-call.c, so this patch
moves the function to fold-const.c instead.

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

gcc/
* builtins.h (c_getstr): Move to...
* fold-const.h (c_getstr): ...here.
* builtins.c (c_getstr): Move to...
* fold-const.c (c_getstr): ...here.

From-SVN: r229919

8 years agoDon't treat rint as setting errno
Richard Sandiford [Sat, 7 Nov 2015 10:00:31 +0000 (10:00 +0000)]
Don't treat rint as setting errno

builtins.def says that rint sets errno, but it looks like this might
be a mistake.  C99 says that rint doesn't set errno and the builtins.c
expansion code doesn't try to keep errno up to date.

Perhaps this was because earlier versions of POSIX said that
rint sets errno on overflow:

        http://pubs.opengroup.org/onlinepubs/009695399/functions/rintf.html

However, this is another instance of the observation that "rounding
functions could never overflow" (because anything using exponents
that large is already integral).  The page above also says that
differences with C99 are unintentional and the ERANGE clause has
been removed from later versions of POSIX:

        http://pubs.opengroup.org/onlinepubs/9699919799/functions/rint.html

Also, the version of POSIX that lists ERANGE for rint does the same
for nearbyint:

        http://pubs.opengroup.org/onlinepubs/009695399/functions/nearbyintf.html

and we already treat nearbyint as not setting errno.  This too has been
clarified in later versions of POSIX:

        http://pubs.opengroup.org/onlinepubs/9699919799/functions/nearbyint.html

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

gcc/
* builtins.def (BUILTIN_RINT, BUILTIN_RINTF, BUILTIN_RINTL): Use
ATTR_MATHFN_FPROUNDING rather than ATTR_MATHFN_FPROUNDING_ERRNO.

From-SVN: r229918

8 years agoAdd -fno-math-errno to gcc.dg/lto/20110201-1_0.c
Richard Sandiford [Sat, 7 Nov 2015 09:58:32 +0000 (09:58 +0000)]
Add -fno-math-errno to gcc.dg/lto/20110201-1_0.c

At the moment the ECF_* flags for a gimple call to a built-in
function are derived from the function decl, which in turn is
derived from the global command-line options.  So if the compiler
is run with -fno-math-errno, we always assume functions don't set
errno, regardless of local optimization options.  Similarly if the
compiler is run with -fmath-errno, we always assume functions set errno.

This shows up in gcc.dg/lto/20110201-1_0.c, where we compile
the file with -O0 and use -O2 -ffast-math for a specific function.
-O2 -ffast-math is enough for us to convert cabs to sqrt as hoped,
but because of the global -fmath-errno setting, we assume that the
call to sqrt is not pure or const and create vops for it.  This makes
it appear to the gimple code that a simple sqrt optab isn't enough.

Later patches move more decisions about maths functions to gimple
and think that in this case we should use:

        y = sqrt (x);
        if (!(x >= 0))
            sqrt (x); // to set errno.

This is being tracked as PR68235.  For now the patch adds
-fno-math-errno to the dg-options for this test.

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

gcc/testsuite/
PR tree-optimization/68235
* gcc.dg/lto/20110201-1_0.c: Add -fno-math-errno.

From-SVN: r229917

8 years agoTry to update dominance info in tree-call-cdce.c
Richard Sandiford [Sat, 7 Nov 2015 09:56:04 +0000 (09:56 +0000)]
Try to update dominance info in tree-call-cdce.c

The pass would free the dominance info after making a change, but it
should be pretty easy to keep the information up-to-date when the call
has no EH edges.

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

gcc/
* tree-call-cdce.c (shrink_wrap_one_built_in_call): Try to update
the dominance info; free it if we can't.
(pass_call_cdce::execute): Don't free the dominance info here.

From-SVN: r229916

8 years ago[PATCH] Remove more backedge threading support
Jeff Law [Sat, 7 Nov 2015 06:31:14 +0000 (23:31 -0700)]
[PATCH] Remove more backedge threading support

* tree-ssa-threadedge.c (dummy_simplify): Remove.
(thread_around_empty_blocks): Remove backedge_seen_p argument.
If we thread to a backedge, then return false.  Update recursive
call to eliminate backedge_seen_p argument.
(thread_through_normal_block): Remove backedge_seen_p argument.
Remove backedge_seen_p argument from calls to
thread_around_empty_blocks.  Remove checks on backedge_seen_p.
If we thread to a backedge, then return 0.
(thread_across_edge): Remove bookkeeping for backedge_seen.  Don't
pass it to thread_through_normal_block or thread_through_empty_blocks.
For joiner handling, if we see a backedge, do not try normal
threading.

From-SVN: r229911

8 years agoadd original schedule to scop
Abderrazek Zaafrani [Sat, 7 Nov 2015 01:32:27 +0000 (01:32 +0000)]
add original schedule to scop

    * graphite-optimize-isl.c (optimize_isl): Call isl_union_map_is_equal.
    * graphite-poly.c (new_scop): Initialize original_schedule.
    (free_scop): Free original_schedule.
    * graphite-poly.h (struct scop): Add field original_schedule.
    * graphite-sese-to-poly.c (build_scop_original_schedule): New.
    (build_poly_scop): Call build_scop_original_schedule.

From-SVN: r229910

8 years agodo not create unnecessary dimensions in scop scattering
Abderrazek Zaafrani [Sat, 7 Nov 2015 01:32:20 +0000 (01:32 +0000)]
do not create unnecessary dimensions in scop scattering

           * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Remove.
           (build_pbb_minimal_scattering_polyhedrons): New.
           (build_scop_scattering): Remove.
           (build_scop_minimal_scattering): New.
           (build_scop_scattering): Call build_pbb_minimal_scattering_polyhedrons.
           (build_poly_scop): Call build_scop_minimal_scattering.

From-SVN: r229909

8 years agore PR go/66138 (json decoder Decode function fails for some structure return values)
Ian Lance Taylor [Sat, 7 Nov 2015 01:24:57 +0000 (01:24 +0000)]
re PR go/66138 (json decoder Decode function fails for some structure return values)

PR go/66138
    reflect, encoding/json, encoding/xml: fix unexported embedded structs

    Bring in three changes from the master Go repository.  These changes
    will be in Go 1.6, but they are appropriate for gccgo now because they
    resolve a long-standing discrepancy between how gc and gccgo handle the
    PkgPath field for embedded unexported struct fields.  The core issue is
    described at https://golang.org/cl/7247.  This has been reported against
    gccgo as https://gcc.gnu.org/PR66138.

    The three changes being brought over are:

    https://golang.org/cl/14010

    reflect: adjust access to unexported embedded structs

    This CL changes reflect to allow access to exported fields and
    methods in unexported embedded structs for gccgo and after gc
    has been adjusted to disallow access to embedded unexported structs.

    Adresses #12367, #7363, #11007, and #7247.

    https://golang.org/cl/14011

    encoding/json: check for exported fields in embedded structs

    Addresses issue #12367.

    https://golang.org/cl/14012

    encoding/xml: check for exported fields in embedded structs

    Addresses issue #12367.

    Reviewed-on: https://go-review.googlesource.com/16723

From-SVN: r229907

8 years agoDaily bump.
GCC Administrator [Sat, 7 Nov 2015 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r229906

8 years ago[PATCH] Allow vrp to thread across backedges using FSM threader
Jeff Law [Fri, 6 Nov 2015 23:26:20 +0000 (16:26 -0700)]
[PATCH] Allow vrp to thread across backedges using FSM threader

* cfg-flags.def (IGNORE): New edge flag.
* tree-vrp.c (identify_jump_threads): Mark and clear edges
scheduled for removal with EDGE_IGNORE around call into
jump threader.  Do no thread across edges with EDGE_IGNORE,
but do allow threading across those with EDGE_DFS_BACK.

* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust to look for
realized jump threads.
* gcc.dg/tree-ssa-pr66752-3.c: Look in vrp1 dump for jump
threads rather than dom1 dump.

From-SVN: r229902

8 years agoinline asm and multi-alternative constraints
David Wohlferd [Fri, 6 Nov 2015 22:52:35 +0000 (22:52 +0000)]
inline asm and multi-alternative constraints

* doc/md.texi (multi-alternative constraints): Don't document
alternatives inherently tied to reload for the user documentation.

From-SVN: r229897

8 years agorevert: arm.md (*arm_smin_cmp): New pattern.
Michael Collison [Fri, 6 Nov 2015 22:38:25 +0000 (22:38 +0000)]
revert: arm.md (*arm_smin_cmp): New pattern.

2015-11-06  Michael Collison  <michael.collison@linaro.org
    Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

Revert:
2015-08-01  Michael Collison  <michael.collison@linaro.org
    Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

* config/arm/arm.md (*arm_smin_cmp): New pattern.
(*arm_umin_cmp): Likewise.

2015-11-06  Michael Collison  <michael.collison@linaro.org
    Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

Revert:
2015-08-01  Michael Collison  <michael.collison@linaro.org
    Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

* gcc.target/arm/mincmp.c: New test.

From-SVN: r229895

8 years agore PR fortran/54224 (Warn for unused internal procedures)
Dominique d'Humieres [Fri, 6 Nov 2015 21:49:18 +0000 (22:49 +0100)]
re PR fortran/54224 (Warn for unused internal procedures)

2015-11-06  Dominique d'Humieres <dominiq@lps.ens.fr>

PR fortran/54224
* gfortran.dg/warn_unused_function_2.f90: Add two new
"defined but not used" subroutines.

From-SVN: r229894

8 years agoDo not use libiberty's getpagesize on Android
Joel Brobecker [Fri, 6 Nov 2015 21:37:49 +0000 (21:37 +0000)]
Do not use libiberty's getpagesize on Android

libiberty/ChangeLog:

        * configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
        Android hosts.
        * configure: Regenerate.

From-SVN: r229893

8 years agogimplify.c (gimplify_omp_ordered): Fix up diagnostics wording.
Jakub Jelinek [Fri, 6 Nov 2015 21:21:16 +0000 (22:21 +0100)]
gimplify.c (gimplify_omp_ordered): Fix up diagnostics wording.

* gimplify.c (gimplify_omp_ordered): Fix up diagnostics
wording.
* omp-low.c (check_omp_nesting_restrictions): Update for the
various new OpenMP 4.5 nesting restrictions, clarified
nesting glossary, closely nested region relationship clarified
to mean explicit or implicit parallel regions (target/teams),
use %</%> or %qs where appropriate.

* gcc.dg/gomp/ordered-2.c (f1): Expect an extra error.
* g++.dg/gomp/ordered-2.C (f1): Likewise.
* gfortran.dg/goacc/parallel-kernels-regions.f95: Adjust
expected diagnostics for the addition of quotes.
* gfortran.dg/gomp/target3.f90: Likewise.
* c-c++-common/goacc/nesting-fail-1.c: Likewise.
* c-c++-common/goacc-gomp/nesting-fail-1.c: Likewise.
* c-c++-common/gomp/doacross-1.c: Likewise.
* c-c++-common/gomp/nesting-warn-1.c: Likewise.
* c-c++-common/gomp/cancel-1.c (f2): Add some new tests.
Adjust expected diagnostics wording.
* c-c++-common/gomp/clauses-4.c (foo): Likewise.
Don't expect error on ordered threads simd when in for simd.
* c-c++-common/gomp/nesting-2.c: New test.
* c-c++-common/gomp/ordered-3.c (foo): Add some new tests.
* c-c++-common/gomp/ordered-4.c: New test.

From-SVN: r229892

8 years ago* gcc.dg/pragma-diag-5.c: Make test cases unique.
Mike Stump [Fri, 6 Nov 2015 21:16:30 +0000 (21:16 +0000)]
* gcc.dg/pragma-diag-5.c: Make test cases unique.

From-SVN: r229891

8 years agodo not collect cold loops in scops
Aditya Kumar [Fri, 6 Nov 2015 20:43:52 +0000 (20:43 +0000)]
do not collect cold loops in scops

           * graphite-scop-detection.c (loop_is_valid_scop): Call
           optimize_loop_nest_for_speed_p.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229890

8 years agoenable loop fusion on isl-15
Aditya Kumar [Fri, 6 Nov 2015 20:43:46 +0000 (20:43 +0000)]
enable loop fusion on isl-15

       * graphite-optimize-isl.c (optimize_isl): Call
       isl_options_set_schedule_maximize_band_depth.

       * gcc.dg/graphite/fuse-1.c: New.
       * gcc.dg/graphite/fuse-2.c: New.
       * gcc.dg/graphite/interchange-13.c: Remove bogus check.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229889

8 years agoDo not allow irreducible loops/regions in a scop
Aditya Kumar [Fri, 6 Nov 2015 20:43:40 +0000 (20:43 +0000)]
Do not allow irreducible loops/regions in a scop

Irreducible regions are not going to be optimized by ISL
so discard them early. Passes bootstrap and regtest.

gcc/ChangeLog:

2015-11-06  Aditya Kumar  <aditya.k7@samsung.com>

        * graphite-scop-detection.c (scop_detection::merge_sese): Entry and exit edges should not be a part of irreducible loop.
        (scop_detection::can_represent_loop_1): Loops should not be irreducible.
        (scop_detection::harmful_stmt_in_region): All the basic block should belong to reducible loops.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229888

8 years ago[AArch64] Fix vqtb[lx][234] on big-endian
Christophe Lyon [Fri, 6 Nov 2015 20:34:12 +0000 (21:34 +0100)]
[AArch64] Fix vqtb[lx][234] on big-endian

2015-11-06  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/aarch64/aarch64-simd-builtins.def: Update builtins
tables: add tbl3v16qi, qtbl[34]*, tbx4v16qi, qtbx[34]*.
* config/aarch64/aarch64-simd.md (aarch64_tbl3v8qi): Rename to...
(aarch64_tbl3<mode>) ... this, which supports v16qi too.
(aarch64_tbx4v8qi): Rename to...
aarch64_tbx4<mode>): ... this.
(aarch64_qtbl3<mode>): New pattern.
(aarch64_qtbx3<mode>): New pattern.
(aarch64_qtbl4<mode>): New pattern.
(aarch64_qtbx4<mode>): New pattern.
* config/aarch64/arm_neon.h (vqtbl2_s8, vqtbl2_u8, vqtbl2_p8)
(vqtbl2q_s8, vqtbl2q_u8, vqtbl2q_p8, vqtbl3_s8, vqtbl3_u8)
(vqtbl3_p8, vqtbl3q_s8, vqtbl3q_u8, vqtbl3q_p8, vqtbl4_s8)
(vqtbl4_u8, vqtbl4_p8, vqtbl4q_s8, vqtbl4q_u8, vqtbl4q_p8)
(vqtbx2_s8, vqtbx2_u8, vqtbx2_p8, vqtbx2q_s8, vqtbx2q_u8)
(vqtbx2q_p8, vqtbx3_s8, vqtbx3_u8, vqtbx3_p8, vqtbx3q_s8)
(vqtbx3q_u8, vqtbx3q_p8, vqtbx4_s8, vqtbx4_u8, vqtbx4_p8)
(vqtbx4q_s8, vqtbx4q_u8, vqtbx4q_p8): Rewrite using builtin
functions.

gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/vqtbX.c: New test.

From-SVN: r229886

8 years agore PR debug/66728 (CONST_WIDE_INT causes corrupted DWARF debug info)
Mike Stump [Fri, 6 Nov 2015 20:16:06 +0000 (20:16 +0000)]
re PR debug/66728 (CONST_WIDE_INT causes corrupted DWARF debug info)

PR debug/66728
* dwarf2out.c (get_full_len): Return a value based upon the actual
precision needed for the value.
(add_const_value_attribute): Use a maximal wide-int for
CONST_WIDE_INTs, not VOIDmode.
(output_die): Don't ever output NULL with printf.

* rtl.h (get_precision of rtx_mode_t): Ensure we never process
BLKmode nor VOIDmode values.

From-SVN: r229885

8 years agoReimplement diagnostic_show_locus, introducing rich_location classes
David Malcolm [Fri, 6 Nov 2015 19:50:50 +0000 (19:50 +0000)]
Reimplement diagnostic_show_locus, introducing rich_location classes

gcc/ChangeLog:
* diagnostic-color.c (color_dict): Eliminate "caret"; add "range1"
and "range2".
(parse_gcc_colors): Update comment to describe default GCC_COLORS.
* diagnostic-core.h (warning_at_rich_loc): New declaration.
(error_at_rich_loc): New declaration.
(permerror_at_rich_loc): New declaration.
(inform_at_rich_loc): New declaration.
* diagnostic-show-locus.c (adjust_line): Delete.
(struct point_state): New struct.
(class colorizer): New class.
(class layout_point): New class.
(class layout_range): New class.
(struct line_bounds): New.
(class layout): New class.
(colorizer::colorizer): New ctor.
(colorizer::~colorizer): New dtor.
(layout::layout): New ctor.
(layout::print_source_line): New method.
(layout::print_annotation_line): New method.
(layout::get_state_at_point): New method.
(layout::get_x_bound_for_row): New method.
(diagnostic_show_locus): Reimplement in terms of class layout.
(diagnostic_print_caret_line): Delete.
* diagnostic.c (diagnostic_initialize): Replace
MAX_LOCATIONS_PER_MESSAGE with rich_location::MAX_RANGES.
(diagnostic_set_info_translated): Convert param from location_t
to rich_location *.  Eliminate calls to set_location on the
message in favor of storing the rich_location ptr there.
(diagnostic_set_info): Convert param from location_t to
rich_location *.
(diagnostic_build_prefix): Break out array into...
(diagnostic_kind_color): New variable.
(diagnostic_get_color_for_kind): New function.
(diagnostic_report_diagnostic): Colorize the option_text
using the color for the severity.
(diagnostic_append_note): Update for change in signature of
diagnostic_set_info.
(diagnostic_append_note_at_rich_loc): New function.
(emit_diagnostic): Update for change in signature of
diagnostic_set_info.
(inform): Likewise.
(inform_at_rich_loc): New function.
(inform_n): Update for change in signature of diagnostic_set_info.
(warning): Likewise.
(warning_at): Likewise.
(warning_at_rich_loc): New function.
(warning_n): Update for change in signature of diagnostic_set_info.
(pedwarn): Likewise.
(permerror): Likewise.
(permerror_at_rich_loc): New function.
(error): Update for change in signature of diagnostic_set_info.
(error_n): Likewise.
(error_at): Likewise.
(error_at_rich_loc): New function.
(sorry): Update for change in signature of diagnostic_set_info.
(fatal_error): Likewise.
(internal_error): Likewise.
(internal_error_no_backtrace): Likewise.
(source_range::debug): New function.
* diagnostic.h (struct diagnostic_info): Eliminate field
"override_column".  Add field "richloc".
(struct diagnostic_context): Add field "colorize_source_p".
(diagnostic_override_column): Delete.
(diagnostic_set_info): Convert param from location_t to
rich_location *.
(diagnostic_set_info_translated): Likewise.
(diagnostic_append_note_at_rich_loc): New function.
(diagnostic_num_locations): New function.
(diagnostic_expand_location): Get the location from the
rich_location.
(diagnostic_print_caret_line): Delete.
(diagnostic_get_color_for_kind): New declaration.
* genmatch.c (linemap_client_expand_location_to_spelling_point): New.
(error_cb): Update for change in signature of "error" callback.
(fatal_at): Likewise.
(warning_at): Likewise.
* input.c (linemap_client_expand_location_to_spelling_point): New.
* pretty-print.c (text_info::set_range): New method.
(text_info::get_location): New method.
* pretty-print.h (MAX_LOCATIONS_PER_MESSAGE): Eliminate this macro.
(struct text_info): Eliminate "locations" array in favor of
"m_richloc", a rich_location *.
(textinfo::set_location): Add a "caret_p" param, and reimplement
in terms of a call to set_range.
(textinfo::get_location): Eliminate inline implementation in favor of
an out-of-line reimplementation.
(textinfo::set_range): New method.
* rtl-error.c (diagnostic_for_asm): Update for change in signature
of diagnostic_set_info.
* tree-diagnostic.c (default_tree_printer): Update for new
"caret_p" param for textinfo::set_location.
* tree-pretty-print.c (percent_K_format): Likewise.

gcc/c-family/ChangeLog:
* c-common.c (c_cpp_error): Convert parameter from location_t to
rich_location *.  Eliminate the "column_override" parameter and
the call to diagnostic_override_column.
Update the "done_lexing" clause to set range 0
on the rich_location, rather than overwriting a location_t.
* c-common.h (c_cpp_error): Convert parameter from location_t to
rich_location *.  Eliminate the "column_override" parameter.

gcc/c/ChangeLog:
* c-decl.c (warn_defaults_to): Update for change in signature
of diagnostic_set_info.
* c-errors.c (pedwarn_c99): Likewise.
(pedwarn_c90): Likewise.
* c-objc-common.c (c_tree_printer): Update for new "caret_p" param
for textinfo::set_location.

gcc/cp/ChangeLog:
* error.c (cp_printer): Update for new "caret_p" param for
textinfo::set_location.
(pedwarn_cxx98): Update for change in signature of
diagnostic_set_info.

gcc/fortran/ChangeLog:
* cpp.c (cb_cpp_error): Convert parameter from location_t to
rich_location *.  Eliminate the "column_override" parameter.
* error.c (gfc_warning): Update for change in signature of
diagnostic_set_info.
(gfc_format_decoder): Update handling of %C/%L for changes
to struct text_info.
(gfc_diagnostic_starter): Use richloc when determining whether to
print one locus or two.  When handling a location that will
involve a call to diagnostic_show_locus, only attempt to print the
locus for the primary location, and don't call into
diagnostic_print_caret_line.
(gfc_warning_now_at): Update for change in signature of
diagnostic_set_info.
(gfc_warning_now): Likewise.
(gfc_error_now): Likewise.
(gfc_fatal_error): Likewise.
(gfc_error): Likewise.
(gfc_internal_error): Likewise.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c: New file.
* gcc.dg/plugin/diagnostic-test-show-locus-color.c: New file.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: New file.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
* lib/gcc-dg.exp: Load multiline.exp.

libcpp/ChangeLog:
* errors.c (cpp_diagnostic): Update for change in signature
of "error" callback.
(cpp_diagnostic_with_line): Likewise, calling override_column
on the rich_location.
* include/cpplib.h (struct cpp_callbacks): Within "error"
callback, convert param from source_location to rich_location *,
and drop column_override param.
* include/line-map.h (struct source_range): New struct.
(struct location_range): New struct.
(class rich_location): New class.
(linemap_client_expand_location_to_spelling_point): New declaration.
* line-map.c (rich_location::rich_location): New ctors.
(rich_location::lazily_expand_location): New method.
(rich_location::override_column): New method.
(rich_location::add_range): New methods.
(rich_location::set_range): New method.

From-SVN: r229884

8 years ago* testsuite/26_numerics/complex/requirements/constexpr.cc
Kai Tietz [Fri, 6 Nov 2015 19:43:33 +0000 (19:43 +0000)]
* testsuite/26_numerics/complex/requirements/constexpr.cc
* testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
Use constexpr where needed.

From-SVN: r229883

8 years agolibgo: Solaris portability fixes.
Ian Lance Taylor [Fri, 6 Nov 2015 19:15:45 +0000 (19:15 +0000)]
libgo: Solaris portability fixes.

    Only build net/hook_cloexec.go on GNU/Linux and FreeBSD, because those
    are the only systems with accept4.

    Add syscall/libcall_bsd.go to define sendfile for *BSD and Solaris.

    Revert tcpsockopt_solaris.go back to the earlier version, so that it
    works on Solaris 10.

    Always pass the address of a Pid_t value to TIOCGPGRP and TIOCSPGRP.

    Include <unistd.h> in runtime/go-varargs.c.

    Reviewed-on: https://go-review.googlesource.com/16719

From-SVN: r229880

8 years ago[Patch AArch64] Switch constant pools to separate rodata sections.
Ramana Radhakrishnan [Fri, 6 Nov 2015 19:00:59 +0000 (19:00 +0000)]
[Patch AArch64] Switch constant pools to separate rodata sections.

Properly apply ..

2015-11-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

Properly apply.
2015-11-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
        * config/aarch64/aarch64.c
        (aarch64_can_use_per_function_literal_pools_p): New.
        (aarch64_use_blocks_for_constant_p): Adjust declaration
        and use aarch64_can_use_function_literal_pools_p.
        (aarch64_select_rtx_section): Update.

From-SVN: r229878

8 years agolibstdc++v3: Explicitly disable carets and colorization within testsuite
David Malcolm [Fri, 6 Nov 2015 18:44:05 +0000 (18:44 +0000)]
libstdc++v3: Explicitly disable carets and colorization within testsuite

libstdc++-v3/ChangeLog:
* testsuite/lib/libstdc++.exp (v3_target_compile): Add
-fno-diagnostics-show-caret -fdiagnostics-color=never to
option's additional_flags.

From-SVN: r229876

8 years ago[Patch ARM] Unified assembler in ARM state.
Ramana Radhakrishnan [Fri, 6 Nov 2015 18:43:15 +0000 (18:43 +0000)]
[Patch ARM] Unified assembler in ARM state.

gcc/ChangeLog:

2015-11-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

* config/arm/arm-ldmstm.ml: Rewrite to generate unified asm templates.
* config/arm/arm.c (arm_asm_trampoline_template): Make unified asm safe.
(arm_output_multireg_pop): Likewise.
(output_move_double):  Likewise.
(output_move_quad):  Likewise.
(output_return_instruction): Likewise.
(arm_print_operand): Remove support for %( and %. print modifiers.
(arm_output_shift): Make unified asm.
(arm_declare_function_name): Likewise.
* config/arm/arm.h (TARGET_UNIFIED_ASM): Delete.
         (ASM_APP_OFF): Adjust.
         (ASM_OUTPUT_REG_PUSH): Undo special casing for TARGET_ARM.
         (ASM_OUTPUT_REG_POP): Likewise.
* config/arm/arm.md: Adjust uses of %., %(, %)
* config/arm/sync.md: Likewise.
* config/arm/thumb2.md: Likewise.
* config/arm/ldmstm.md: Regenerate.
* config/arm/arm.opt (masm-unified-syntax): Do not special case Thumb.
* doc/invoke.texi (masm-unified-syntax): Update documentation.

gcc/testsuite/ChangeLog:

2015-11-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

* gcc.target/arm/combine-movs.c:
* gcc.target/arm/interrupt-1.c:
* gcc.target/arm/interrupt-2.c:
* gcc.target/arm/unaligned-memcpy-4.c:

From-SVN: r229875

8 years agoAdd stats on adhoc table to dump_line_table_statistics
David Malcolm [Fri, 6 Nov 2015 18:40:56 +0000 (18:40 +0000)]
Add stats on adhoc table to dump_line_table_statistics

gcc/ChangeLog:
* input.c (dump_line_table_statistics): Dump stats on adhoc table.

libcpp/ChangeLog:
* include/line-map.h (struct linemap_stats): Add fields
"adhoc_table_size" and "adhoc_table_entries_used".
* line-map.c (linemap_get_statistics): Populate above fields.

From-SVN: r229873

8 years agotree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and add OEP_MATCH_SIDE_E...
Jan Hubicka [Fri, 6 Nov 2015 17:24:28 +0000 (18:24 +0100)]
tree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and add OEP_MATCH_SIDE_EFFECTS.

* tree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and
add OEP_MATCH_SIDE_EFFECTS.
* fold-const.c (operand_equal_p): Update documentation; handle
OEP_MATCH_SIDE_EFFECTS.
* tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Use
OEP_MATCH_SIDE_EFFECTS.

From-SVN: r229867

8 years agoaarch64-builtins.c: Builtins for rsqrt and rsqrtf.
Benedikt Huber [Fri, 6 Nov 2015 17:10:17 +0000 (17:10 +0000)]
aarch64-builtins.c: Builtins for rsqrt and rsqrtf.

2015-11-06  Benedikt Huber  <benedikt.huber@theobroma-systems.com>
    Philipp Tomsich  <philipp.tomsich@theobroma-systems.com>

* config/aarch64/aarch64-builtins.c: Builtins for rsqrt and rsqrtf.
* config/aarch64/aarch64-protos.h: Declare.
* config/aarch64/aarch64-simd.md: Matching expressions for frsqrte and
frsqrts.
* config/aarch64/aarch64-tuning-flags.def: Added recip_sqrt.
* config/aarch64/aarch64.c: New functions. Emit rsqrt estimation code when
applicable.
* config/aarch64/aarch64.md: Added enum entries.
* config/aarch64/aarch64.opt: Added option -mlow-precision-recip-sqrt.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_common.h: Common macros for
assembly checks.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_negative_1.c: Make sure
frsqrts and frsqrte are not emitted.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_1.c: Make sure frsqrts and
frsqrte are emitted.
* testsuite/gcc.target/aarch64/rsqrt_1.c: Functional tests for rsqrt.

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Co-Authored-By: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
From-SVN: r229866

8 years agoXFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"
Thomas Schwinge [Fri, 6 Nov 2015 16:44:35 +0000 (17:44 +0100)]
XFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"

gcc/testsuite/
* gfortran.dg/goacc/combined_loop.f90: XFAIL.

From-SVN: r229864

8 years agoSupport non-type constrained-type-specifiers.
Jason Merrill [Fri, 6 Nov 2015 16:21:29 +0000 (11:21 -0500)]
Support non-type constrained-type-specifiers.

* parser.c (check_type_concept): Remove.
(cp_parser_maybe_constrained_type_specifier): Don't call it.
(synthesize_implicit_template_parm): Handle non-type and template
template parameters.  Also compare extra args.  Return the decl.
(cp_parser_template_argument): Handle constrained-type-specifiers for
non-type template parameters.
(finish_constrained_template_template_parm): Split out from
cp_parser_constrained_template_template_parm.
(cp_parser_nonclass_name): Move some logic into
cp_parser_maybe_concept_name.
(cp_parser_init_declarator): Fix error recovery.
(get_concept_from_constraint): Remove.
(cp_parser_simple_type_specifier): Adjust for
synthesize_implicit_template_parm returning the decl.
* constraint.cc (placeholder_extract_concept_and_args)
(equivalent_placeholder_constraints): Also handle TYPE_DECL
constrained parms.

From-SVN: r229860

8 years agore PR ipa/68057 (450.soplex in SPEC CPU 2006 failed to build)
Jan Hubicka [Fri, 6 Nov 2015 16:04:38 +0000 (17:04 +0100)]
re PR ipa/68057 (450.soplex in SPEC CPU 2006 failed to build)

PR ipa/68057
PR ipa/68220
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::restrict_to_inner_type): Fix ordering
issue when offset is out of range.
(contains_type_p): Fix out of range check, clear dynamic flag.
* g++.dg/lto/pr68057_0.C: New testcase.
* g++.dg/lto/pr68057_1.C: New testcase.
* g++.dg/torture/pr68220.C: New testcase.

From-SVN: r229859

8 years agovtbX.c: Fix typos in comment.
Christophe Lyon [Fri, 6 Nov 2015 15:56:48 +0000 (15:56 +0000)]
vtbX.c: Fix typos in comment.

2015-11-06  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/vtbX.c: Fix typos
in comment.

From-SVN: r229858

8 years agoCorrect entry for PR c++/67942.
Martin Sebor [Fri, 6 Nov 2015 15:42:41 +0000 (08:42 -0700)]
Correct entry for PR c++/67942.

From-SVN: r229857

8 years agopt.c (push_inline_template_parms_recursive): Don't recreate the CONST_DECL.
Jason Merrill [Fri, 6 Nov 2015 15:33:24 +0000 (10:33 -0500)]
pt.c (push_inline_template_parms_recursive): Don't recreate the CONST_DECL.

* pt.c (push_inline_template_parms_recursive): Don't recreate the
CONST_DECL.

From-SVN: r229856

8 years agoconfig.gcc (e6500): Fix cpu_is_64bit typo.
Arnout Vandecappelle [Fri, 6 Nov 2015 15:31:52 +0000 (16:31 +0100)]
config.gcc (e6500): Fix cpu_is_64bit typo.

2015-11-06  Arnout Vandecappelle  <arnout@mind.be>
        * config.gcc (e6500): Fix cpu_is_64bit typo.

From-SVN: r229855

8 years agotree-sra.c: Fix completely_scalarize for negative indices.
Alan Lawrence [Fri, 6 Nov 2015 13:48:32 +0000 (13:48 +0000)]
tree-sra.c: Fix completely_scalarize for negative indices.

* tree-sra.c (completely_scalarize): Properly handle negative array
indices using offset_int.

From-SVN: r229852

8 years agoalloc-pool.h (object_allocator::allocate): Default-initialize object.
Richard Biener [Fri, 6 Nov 2015 13:47:17 +0000 (13:47 +0000)]
alloc-pool.h (object_allocator::allocate): Default-initialize object.

2015-11-06  Richard Biener  <rguenther@suse.de>

* alloc-pool.h (object_allocator::allocate): Default-initialize
object.

From-SVN: r229851

8 years agotree-ssa-sccvn.c (class sccvn_dom_walker): Add destructor.
Richard Biener [Fri, 6 Nov 2015 13:45:54 +0000 (13:45 +0000)]
tree-ssa-sccvn.c (class sccvn_dom_walker): Add destructor.

2015-11-06  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (class sccvn_dom_walker): Add destructor.
* lra.c (init_reg_info): Truncate copy_vec instead of
re-allocating a new one and leaking the old.
* ipa-inline-analysis.c (estimate_function_body_sizes): Free
bb_infos vec.
* sched-deps.c (sched_deps_finish): Free the dn/dl pools.
* postreload-gcse.c (free_mem): Free modify_mem_list and
canon_modify_mem_list.

From-SVN: r229850

8 years ago[cp][committed] Fix bootstrap on arm due to print format warning
Kyrylo Tkachov [Fri, 6 Nov 2015 13:36:17 +0000 (13:36 +0000)]
[cp][committed] Fix bootstrap on arm due to print format warning

* init.c (warn_placement_new_too_small): Use %wu format
rather than %lu when printing bytes_avail.

From-SVN: r229849

8 years agore PR tree-optimization/68145 (ICE: in vectorizable_store, at tree-vect-stmts.c:5684)
Ilya Enkovich [Fri, 6 Nov 2015 13:31:51 +0000 (13:31 +0000)]
re PR tree-optimization/68145 (ICE: in vectorizable_store, at tree-vect-stmts.c:5684)

gcc/

PR tree-optimization/68145
* tree-vect-stmts.c (vectorizable_operation): Fix
determination for booleans.

gcc/testsuite/

PR tree-optimization/68145
* g++.dg/vect/pr68145.cc: New test.

From-SVN: r229848

8 years agoFix transform_to_exit_first_loop_alt with -g
Tom de Vries [Fri, 6 Nov 2015 13:21:51 +0000 (13:21 +0000)]
Fix transform_to_exit_first_loop_alt with -g

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

* tree-cfg.c (gimple_split_block_before_cond_jump): Split before
cond_jump, instead of split after last nondebug insn before cond_jump.
* tree-parloops.c (transform_to_exit_first_loop_alt): Verify ssa before
returning.

From-SVN: r229847

8 years ago[ARM/AArch64] PR 68088: Fix RTL checking ICE due to subregs inside accumulator forwar...
Kyrylo Tkachov [Fri, 6 Nov 2015 12:04:15 +0000 (12:04 +0000)]
[ARM/AArch64] PR 68088: Fix RTL checking ICE due to subregs inside accumulator forwarding check

        PR target/68088
        * config/arm/aarch-common.c (aarch_accumulator_forwarding): Strip
        subregs from accumulator and make sure it's a register.

        * gcc.dg/pr68088_1.c: New test.

From-SVN: r229845

8 years agoUpdate loongson vector reductions.
Simon Dardis [Fri, 6 Nov 2015 11:59:20 +0000 (11:59 +0000)]
Update loongson vector reductions.

2015-11-06  Simon Dardis  <simon.dardis@imgtec.com>

        * config/mips/loongson.md (vec_loongson_extract_lo_<mode>): New, extract
        low part to scalar.
        (reduc_uplus_<mode>): Remove.
        (reduc_plus_scal_<mode>): Rename from reduc_splus_<mode>, Use vec
        loongson_extract_lo_<mode>.
        (reduc_smax_scal_<mode>, reduc_smin_scal_<mode>): Rename from
        reduc_smax_<mode>, reduc_smax_<mode>, use vec
        loongson_extract_lo_<mode>.
        (reduc_umax_scal_<mode>, reduc_umin_scal_<mode>): Rename.

From-SVN: r229844

8 years agotree-vectorizer.h (struct _bb_vec_info): Add region_begin/end members.
Richard Biener [Fri, 6 Nov 2015 11:15:40 +0000 (11:15 +0000)]
tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end members.

2015-11-06  Richard Biener  <rguenther@suse.de>

* tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end
members.
(vect_stmt_in_region_p): Declare.
* tree-vect-slp.c (new_bb_vec_info): Work on a region.
(destroy_bb_vec_info): Likewise.
(vect_bb_slp_scalar_cost): Use vect_stmt_in_region_p.
(vect_get_and_check_slp_defs): Likewise.
(vect_slp_analyze_bb_1): Refactor to make it work on sub-BBs.
(vect_slp_bb): Likewise.
* tree-vect-patterns.c (vect_same_loop_or_bb_p): Implement
in terms of vect_stmt_in_region_p.
(vect_pattern_recog): Iterate over the BB region.
* tree-vect-stmts.c (vect_is_simple_use): Use vect_stmt_in_region_p.
* tree-vectorizer.c (vect_stmt_in_region_p): New function.
(pass_slp_vectorize::execute): Initialize all stmt UIDs to -1.

* config/i386/i386.c: Include gimple-iterator.h.
* config/aarch64/aarch64.c: Likewise.

* gcc.dg/vect/bb-slp-38.c: New testcase.

From-SVN: r229842

8 years agoXFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"
Thomas Schwinge [Fri, 6 Nov 2015 11:11:34 +0000 (12:11 +0100)]
XFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"

gcc/testsuite/
* gfortran.dg/goacc/private-3.f95: XFAIL.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: XFAIL.
* testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Likewise.

From-SVN: r229841

8 years ago[PR67753] fix copy of PARALLEL entry_parm to CONCAT target_reg
Alexandre Oliva [Fri, 6 Nov 2015 10:34:13 +0000 (10:34 +0000)]
[PR67753] fix copy of PARALLEL entry_parm to CONCAT target_reg

In assign_parms_setup_block, the copy of args in PARALLELs from
entry_parm to stack_parm is deferred to the parm conversion insn seq,
but the copy from stack_parm to target_reg was inserted in the normal
copy seq, that is executed before the conversion insn seq.  Oops.

We could do away with the need for an actual stack_parm in general,
which would have avoided the need for emitting the copy to target_reg
in the conversion seq, but at least on pa, due to the need for stack
to copy between SI and SF modes, it seems like using the reserved
stack slot is beneficial, so I put in logic to use a pre-reserved
stack slot when there is one, and emit the copy to target_reg in the
conversion seq if stack_parm was set up there.

for  gcc/ChangeLog

PR rtl-optimization/67753
PR rtl-optimization/64164
* function.c (assign_parm_setup_block): Avoid allocating a
stack slot if we don't have an ABI-reserved one.  Emit the
copy to target_reg in the conversion seq if the copy from
entry_parm is in it too.  Don't use the conversion seq to copy
a PARALLEL to a REG or a CONCAT.

From-SVN: r229840

8 years agoAdd testcases for middle-end/53852 and middle-end/67518
Joost VandeVondele [Fri, 6 Nov 2015 09:51:12 +0000 (09:51 +0000)]
Add testcases for middle-end/53852 and middle-end/67518

2015-11-06  Joost VandeVondele  <vondele@gnu.gcc.org>

PR middle-end/53852
PR middle-end/67518
* gfortran.dg/PR67518.f90: New test.
* gfortran.dg/PR53852.f90: New test.

From-SVN: r229839

8 years agotree-hash-traits.h (tree_operand_hash): Provide equal, not equal_keys.
Richard Biener [Fri, 6 Nov 2015 09:46:17 +0000 (09:46 +0000)]
tree-hash-traits.h (tree_operand_hash): Provide equal, not equal_keys.

2015-11-06  Richard Biener  <rguenther@suse.de>

* tree-hash-traits.h (tree_operand_hash): Provide equal, not
equal_keys.

From-SVN: r229838

8 years agogimplify.c (gimplify_scan_omp_clauses): Add support for OMP_CLAUSE_TILE.
Cesar Philippidis [Fri, 6 Nov 2015 02:03:48 +0000 (18:03 -0800)]
gimplify.c (gimplify_scan_omp_clauses): Add support for OMP_CLAUSE_TILE.

gcc/
* gimplify.c (gimplify_scan_omp_clauses): Add support for
OMP_CLAUSE_TILE.  Update handling of OMP_CLAUSE_INDEPENDENT.
(gimplify_adjust_omp_clauses): Likewise.
* omp-low.c (scan_sharing_clauses): Add support for OMP_CLAUSE_TILE.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_TILE.
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_TILE.
* tree.c (omp_clause_num_ops): Add an entry for OMP_CLAUSE_TILE.
(omp_clause_code_name): Likewise.
(walk_tree_1): Handle OMP_CLAUSE_TILE.
* tree.h (OMP_TILE_LIST): New macro.

gcc/c-family/
* c-omp.c (c_oacc_split_loop_clauses): Make TILE, GANG, WORKER, VECTOR,
AUTO, SEQ, INDEPENDENT and PRIVATE loop clauses.  Associate REDUCTION
clauses with parallel and kernels and loops.
* c-pragma.h (enum pragma_omp_clause): Add entries for
PRAGMA_OACC_CLAUSE_{INDEPENDENT,TILE,DEFAULT}.
* pt.c (tsubst_omp_clauses): Add support for OMP_CLAUSE_{NUM_GANGS,
NUM_WORKERS,VECTOR_LENGTH,GANG,WORKER,VECTOR,ASYNC,WAIT,TILE,AUTO,
INDEPENDENT,SEQ}.
(tsubst_expr): Add support for OMP_CLAUSE_{KERNELS,PARALLEL,LOOP}.

gcc/c/
* c-parser.c (c_parser_omp_clause_name): Add support for
PRAGMA_OACC_CLAUSE_INDEPENDENT and PRAGMA_OACC_CLAUSE_TILE.
(c_parser_omp_clause_default): Add is_oacc argument. Handle
default(none) in OpenACC.
(c_parser_oacc_shape_clause): Allow pointer variables as gang static
arguments.
(c_parser_oacc_clause_tile): New function.
(c_parser_oacc_all_clauses): Add support for OMP_CLAUSE_DEFAULT,
OMP_CLAUSE_INDEPENDENT and OMP_CLAUSE_TILE.
(OACC_LOOP_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_{PRIVATE,INDEPENDENT,
TILE}.
(OACC_KERNELS_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
(OACC_PARALLEL_MASK): Add PRAGMA_OACC_CLAUSE_{DEFAULT,PRIVATE,
FIRSTPRIVATE}.
(c_parser_omp_all_clauses): Update call to c_parser_omp_clause_default.
(c_parser_oacc_update): Update the error message for missing clauses.
* c-typeck.c (c_finish_omp_clauses): Add support for OMP_CLAUSE_TILE
and OMP_CLAUSE_INDEPENDENT.

gcc/cp/
* parser.c (cp_parser_omp_clause_name): Add support for
PRAGMA_OACC_CLAUSE_INDEPENDENT and PRAGMA_OACC_CLAUSE_TILE.
(cp_parser_oacc_shape_clause): Allow pointer variables as gang static
arguments.
(cp_parser_oacc_clause_tile): New function.
(cp_parser_omp_clause_default): Add is_oacc argument. Handle
default(none) in OpenACC.
(cp_parser_oacc_all_clauses): Add support for
(cp_parser_omp_all_clauses): Update call to
cp_parser_omp_clause_default.
PRAGMA_OACC_CLAUSE_{DEFAULT,INDEPENDENT,TILE,PRIVATE,FIRSTPRIVATE}.
(OACC_LOOP_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_{PRIVATE,INDEPENDENT,
TILE}.
(OACC_KERNELS_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
(OACC_PARALLEL_MASK): Add PRAGMA_OACC_CLAUSE_{DEFAULT,PRIVATE,
FIRSTPRIVATE}.
(cp_parser_oacc_update): Update the error message for missing clauses.
* semantics.c (finish_omp_clauses): Add support for
OMP_CLAUSE_INDEPENDENT and OMP_CLAUSE_TILE.

gcc/fortran/
* openmp.c (gfc_match_omp_clauses): Update support for the tile
and default clauses in OpenACC.
(gfc_match_oacc_update): Error when data clauses are supplied.
(oacc_compatible_clauses): Delete.
(resolve_omp_clauses): Give special care for OpenACC reductions.
Also update error reporting for the tile clause.
(resolve_oacc_loop_blocks): Update error reporting for the tile clause.
* trans-openmp.c (gfc_trans_omp_clauses): Update OMP_CLAUSE_SEQ. Add
OMP_CLAUSE_{AUTO,TILE} and add support the the gang static argument.
(gfc_trans_oacc_combined_directive): Update the list of clauses which
are split to acc loops.

gcc/testsuite/
* c-c++-common/goacc/combined-directives.c: New test.
* c-c++-common/goacc/loop-clauses.c: New test.
* c-c++-common/goacc/tile.c: New test.
* c-c++-common/goacc/loop-shape.c: Add test for pointer variable
as gang static arguments.
* c-c++-common/goacc/update-1.c: Adjust expected error message.
* g++.dg/goacc/template.C: New test.
* gfortran.dg/goacc/combined-directives.f90: New test.
* gfortran.dg/goacc/default.f95: New test.
* gfortran.dg/goacc/default_none.f95: New test.
* gfortran.dg/goacc/firstprivate-1.f95: New test.
* gfortran.dg/goacc/gang-static.f95: New test.
* gfortran.dg/goacc/kernels-loop-inner.f95: New test.
* gfortran.dg/goacc/kernels-loops-adjacent.f95: New test.
* gfortran.dg/goacc/list.f95: Update test.
* gfortran.dg/goacc/loop-2.f95: Likewise.
* gfortran.dg/goacc/loop-4.f95: New test.
* gfortran.dg/goacc/loop-5.f95: New test.
* gfortran.dg/goacc/loop-6.f95: New test.
* gfortran.dg/goacc/loop-tree-1.f90: Update test.
* gfortran.dg/goacc/multi-clause.f90: New test.
* gfortran.dg/goacc/parallel-tree.f95: Update test.
* gfortran.dg/goacc/update.f95: New test.

Co-Authored-By: James Norris <jnorris@codesourcery.com>
Co-Authored-By: Nathan Sidwell <nathan@codesourcery.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r229832

8 years agoPR c++/67942 - diagnose placement new buffer overflow
Martin Sebor [Fri, 6 Nov 2015 01:08:53 +0000 (01:08 +0000)]
PR c++/67942 - diagnose placement new buffer overflow

gcc/cp/
* cp/init.c (warn_placement_new_too_small): Avoid assuming
the size of the first operand of placement new or its type
is known.

gcc/testsuite/
* g++.dg/warn/Wplacement-new-size.C: Exercise placement new
invocations where the size of the destination buffer object
or its type (or both) is unknown.

From-SVN: r229831

8 years agoDaily bump.
GCC Administrator [Fri, 6 Nov 2015 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r229830

8 years agoPR c++/67942 - diagnose placement new buffer overflow
Martin Sebor [Thu, 5 Nov 2015 21:42:10 +0000 (21:42 +0000)]
PR c++/67942 - diagnose placement new buffer overflow

gcc/
        * invoke.texi (-Wplacement-new): Document new option.
* gcc/testsuite/g++.dg/warn/Wplacement-new-size.C: New test.

gcc/c-family/
        * c.opt (-Wplacement-new): New option.

gcc/cp/
* cp/init.c (warn_placement_new_too_small): New function.
(build_new_1): Call it.

gcc/testsuite/
        * g++.dg/warn/Wplacement-new-size.C: New test.

From-SVN: r229827

8 years ago[PATCH] tree-scalar-evolution.c: Handle LSHIFT by constant
Alan Lawrence [Thu, 5 Nov 2015 18:39:38 +0000 (18:39 +0000)]
[PATCH] tree-scalar-evolution.c: Handle LSHIFT by constant

gcc/:

PR tree-optimization/65963
* tree-scalar-evolution.c (interpret_rhs_expr): Try to handle
LSHIFT_EXPRs as equivalent unsigned MULT_EXPRs.

gcc/testsuite/:

* gcc.dg/pr68112.c: New.
* gcc.dg/vect/vect-strided-shift-1.c: New.

From-SVN: r229825

8 years agore PR c/68090 (VLA compound literal -- "confused by earlier errors, bailing out")
Marek Polacek [Thu, 5 Nov 2015 18:21:30 +0000 (18:21 +0000)]
re PR c/68090 (VLA compound literal  -- "confused by earlier errors, bailing out")

PR c/68090
* c-parser.c (c_parser_postfix_expression_after_paren_type): Don't
deal with pre-evaluation on invalid types.

* gcc.dg/pr68090.c: New test.

From-SVN: r229823

8 years ago[Patch ifcvt] Teach RTL ifcvt to handle multiple simple set instructions
James Greenhalgh [Thu, 5 Nov 2015 18:11:12 +0000 (18:11 +0000)]
[Patch ifcvt] Teach RTL ifcvt to handle multiple simple set instructions

gcc/

* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): New.
(noce_convert_multiple_sets): Likewise.
(noce_process_if_block): Call them.

gcc/testsuite/

* gcc.dg/ifcvt-4.c: New.

From-SVN: r229822

8 years agore PR c++/67846 (ICE on code with lambda expression on x86_64-linux-gnu in check_retu...
Paolo Carlini [Thu, 5 Nov 2015 16:47:40 +0000 (16:47 +0000)]
re PR c++/67846 (ICE on code with lambda expression on x86_64-linux-gnu in check_return_expr, at cp/typeck.c:8609)

/cp
2015-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67846
* parser.c (cp_parser_lambda_body): Check lambda_return_type
return value.
* typeck2.c (cxx_incomplete_type_diagnostic): Print member or
member function used invalidly.

/testsuite
2015-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67846
* g++.dg/cpp0x/lambda/lambda-ice15.C: New.

From-SVN: r229819

8 years agogimple-fold.c: Include omp-low.h.
Nathan Sidwell [Thu, 5 Nov 2015 15:46:59 +0000 (15:46 +0000)]
gimple-fold.c: Include omp-low.h.

* gimple-fold.c: Include omp-low.h.
(fold_internal_goacc_dim): New.
(gimple_fold_call): Call it.

From-SVN: r229816

8 years agogcc/
Jakub Jelinek [Thu, 5 Nov 2015 15:08:08 +0000 (16:08 +0100)]
gcc/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>
    Ilya Verbin  <ilya.verbin@intel.com>

* builtin-types.def
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR): Remove.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): New.
* cgraph.h (enum cgraph_simd_clone_arg_type): Add
SIMD_CLONE_ARG_TYPE_LINEAR_REF_VARIABLE_STEP,
SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_VARIABLE_STEP and
SIMD_CLONE_ARG_TYPE_LINEAR_VAL_VARIABLE_STEP.
(struct cgraph_simd_clone_arg): Adjust comment.
* omp-builtins.def (BUILT_IN_GOMP_TARGET): Rename GOMP_target_41
to GOMP_target_ext.  Add num_teams and thread_limit arguments.
(BUILT_IN_GOMP_TARGET_DATA): Rename GOMP_target_data_41
to GOMP_target_data_ext.
(BUILT_IN_GOMP_TARGET_UPDATE): Rename GOMP_target_update_41
to GOMP_target_update_ext.
(BUILT_IN_GOMP_LOOP_NONMONOTONIC_DYNAMIC_START,
BUILT_IN_GOMP_LOOP_NONMONOTONIC_GUIDED_START,
BUILT_IN_GOMP_LOOP_NONMONOTONIC_DYNAMIC_NEXT,
BUILT_IN_GOMP_LOOP_NONMONOTONIC_GUIDED_NEXT,
BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_DYNAMIC_START,
BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_GUIDED_START,
BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_DYNAMIC_NEXT,
BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_GUIDED_NEXT,
BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_DYNAMIC,
BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_GUIDED): New built-ins.
* tree-core.h (enum omp_clause_schedule_kind): Add
OMP_CLAUSE_SCHEDULE_MASK, OMP_CLAUSE_SCHEDULE_MONOTONIC,
OMP_CLAUSE_SCHEDULE_NONMONOTONIC and change
OMP_CLAUSE_SCHEDULE_LAST value.
* tree.def (OMP_SIMD, CILK_SIMD, CILK_FOR, OMP_DISTRIBUTE,
OMP_TASKLOOP, OACC_LOOP): Add OMP_FOR_ORIG_DECLS argument.
* tree.h (OMP_FOR_ORIG_DECLS): Use OMP_LOOP_CHECK instead of
OMP_FOR_CHECK.  Remove comment.
* tree-pretty-print.c (dump_omp_clause): Handle
GOMP_MAP_FIRSTPRIVATE_REFERENCE and GOMP_MAP_ALWAYS_POINTER.
Simplify.  Print schedule clause modifiers.
* tree-vect-stmts.c (vectorizable_simd_clone_call): Add
SIMD_CLONE_ARG_TYPE_LINEAR_{REF,VAL,UVAL}_VARIABLE_STEP
cases.
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_ALWAYS_TO.
(omp_default_clause): Tweak for
private/firstprivate/is_device_ptr variables on target
construct and use_device_ptr on target data.
(omp_check_private): Likewise.
(omp_notice_variable): For references check whether what it refers
to has mappable type, rather than the reference itself.
(omp_is_private): Diagnose linear iteration variables on non-simd
constructs.
(omp_no_lastprivate): Return true only for Fortran.
(gimplify_scan_omp_clauses): Or in GOVD_MAP_ALWAYS_TO for
GOMP_MAP_ALWAYS_TO or GOMP_MAP_ALWAYS_TOFROM kinds.
Add support for GOMP_MAP_FIRSTPRIVATE_REFERENCE and
GOMP_MAP_ALWAYS_POINTER, remove old handling of structure element
based array sections.  Use GOMP_MAP_ALWAYS_P.  Fix up handling of
lastprivate and linear when combined with distribute.  Gimplify
variable low-bound for array reduction.  Look through
POINTER_PLUS_EXPR when looking for ADDR_EXPR for array section
reductions.
(gimplify_adjust_omp_clauses_1): For implicit references to
variables with reference type and when not ref to scalar or
ref to pointer, map what they refer to using tofrom and
use GOMP_MAP_FIRSTPRIVATE_REFERENCE for the reference.
(gimplify_adjust_omp_clauses): Remove GOMP_MAP_ALWAYS_POINTER
from target exit data.  Handle GOMP_MAP_FIRSTPRIVATE_REFERENCE.
Drop OMP_CLAUSE_MAP_PRIVATE support.  Use GOMP_MAP_ALWAYS_P.
Diagnose the same var on both firstprivate and lastprivate on
distribute construct.
(gimplify_omp_for): Fix up handling of predetermined
lastprivate or linear iter vars when combined with distribute.
(find_omp_teams, computable_teams_clause, optimize_target_teams): New
functions.
(gimplify_omp_workshare): Call optimize_target_teams.
* omp-low.c (struct omp_region): Add sched_modifiers field.
(struct omp_for_data): Likewise.
(omp_any_child_fn_dumped): New variable.
(extract_omp_for_data): Fill in sched_modifiers, and mask out
OMP_CLAUSE_SCHEDULE_KIND bits outside of OMP_CLAUSE_SCHEDULE_MASK
from sched_kind.
(determine_parallel_type): Use only OMP_CLAUSE_SCHEDULE_MASK
bits of OMP_CLAUSE_SCHED_KIND.
(scan_sharing_clauses): Handle GOMP_MAP_FIRSTPRIVATE_REFERENCE,
drop OMP_CLAUSE_MAP_PRIVATE support.  Look through POINTER_PLUS_EXPR
for array section reductions.
(add_taskreg_looptemp_clauses): Add one extra _looptemp_ clause even
for distribute parallel for, if there are lastprivate clauses on the
for.
(lower_rec_input_clauses): Handle non-zero low-bound on array
section reductions.
(lower_reduction_clauses): Likewise.
(lower_send_clauses): Look through POINTER_PLUS_EXPR
for array section reductions.
(expand_parallel_call): Use nonmonotonic entrypoints for
nonmonotonic: dynamic/guided.
(expand_omp_taskreg): Call assign_assembler_name_if_neeeded on
child_fn if current_function_decl has assembler name set, but child_fn
does not.  Dump the header and IL of the child function when not in SSA
form.
(expand_omp_target): Likewise.  Pass num_teams and thread_limit
arguments to BUILT_IN_GOMP_TARGET.
(expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
Initialize the extra _looptemp_ clause to fd->loop.n2.
(expand_omp_for): Use nonmonotonic entrypoints for
nonmonotonic: dynamic/guided.  Initialize region->sched_modifiers.
(expand_omp): Clear omp_any_child_fn_dumped.  Dump function header
again if we have dumped any child functions.
(lower_omp_for_lastprivate): Determine the right count variable
for distribute simd, or distribute parallel for{, simd}.
(lower_omp_target): Handle GOMP_MAP_FIRSTPRIVATE_REFERENCE
and GOMP_MAP_ALWAYS_POINTER.  Drop OMP_CLAUSE_MAP_PRIVATE
support.
(simd_clone_clauses_extract): Handle variable step
for references and arguments passed by reference.
(simd_clone_mangle): Mangle ref/uval/val variable steps.
(simd_clone_adjust_argument_types): Handle
SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_VARIABLE_STEP like
SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP and
SIMD_CLONE_ARG_TYPE_LINEAR_VAL_VARIABLE_STEP like
SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP.
(simd_clone_linear_addend): New function.
(simd_clone_adjust): Handle variable step like similarly
to constant step, use simd_clone_linear_addend to determine
the actual step at runtime.
gcc/c-family/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>

* c-common.h (c_finish_omp_atomic): Add TEST argument.
(c_omp_check_loop_iv, c_omp_check_loop_iv_exprs): New prototypes.
* c-omp.c (c_finish_omp_atomic): Add TEST argument.  Don't call
save_expr or create_tmp_var* if TEST is true.
(c_finish_omp_for): Store OMP_FOR_ORIG_DECLS always.
Don't call add_stmt here.
(struct c_omp_check_loop_iv_data): New type.
(c_omp_check_loop_iv_r, c_omp_check_loop_iv,
c_omp_check_loop_iv_exprs): New functions.
(c_omp_split_clauses): Adjust for lastprivate being allowed on
distribute.
(c_omp_declare_simd_clauses_to_numbers): Change
OMP_CLAUSE_LINEAR_VARIABLE_STRIDE OMP_CLAUSE_LINEAR_STEP into numbers.
(c_omp_declare_simd_clauses_to_decls): Similarly change those
from numbers to PARM_DECLs.
gcc/c/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>
    Ilya Verbin  <ilya.verbin@intel.com>

* c-parser.c: Include context.h and gimple-expr.h.
(c_parser_omp_clause_schedule): Parse schedule modifiers, diagnose
monotonic together with nonmonotonic.
(c_parser_omp_for_loop): Call c_omp_check_loop_iv.  Call add_stmt here.
(OMP_DISTRIBUTE_CLAUSE_MASK): Add lastprivate clause.
(c_parser_omp_target_data, c_parser_omp_target_enter_data,
c_parser_omp_target_exit_data): Allow GOMP_MAP_ALWAYS_POINTER.
(c_parser_omp_target): Likewise.  Evaluate num_teams and thread_limit
expressions on combined target teams before the target.
(c_parser_omp_declare_target): If decl has "omp declare target" or
"omp declare target link" attribute, and cgraph or varpool node already
exists, then set corresponding flags.  Call c_finish_omp_clauses
in the parenthesized extended-list syntax case.
* c-decl.c (c_decl_attributes): Don't diagnose block scope vars inside
declare target.
* c-typeck.c (handle_omp_array_sections_1): Allow non-zero low-bound
on OMP_CLAUSE_REDUCTION array sections.
(handle_omp_array_sections): Encode low-bound into the MEM_REF, either
into the constant offset, or for variable low-bound using
POINTER_PLUS_EXPR.  For structure element based array sections use
GOMP_MAP_ALWAYS_POINTER instead of GOMP_MAP_FIRSTPRIVATE_POINTER.
(c_finish_omp_clauses): Drop generic_field_head, structure
elements are now always mapped even as array section bases,
diagnose same var in data sharing and mapping clauses.  Diagnose if
linear step on declare simd is neither a constant nor a uniform
parameter.  Look through POINTER_PLUS_EXPR for array section
reductions.  Diagnose the same var or function appearing multiple
times on the same directive.  Fix up wording for the to clause if t
is neither a FUNCTION_DECL nor a VAR_DECL.  Diagnose nonmonotonic
modifier on kinds other than dynamic or guided or nonmonotonic
modifier together with ordered clause.
gcc/cp/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>
    Ilya Verbin  <ilya.verbin@intel.com>

* cp-tree.h (finish_omp_for): Add ORIG_INITS argument.
(omp_privatize_field): Add SHARED argument.
* parser.c: Include context.h.
(cp_parser_omp_clause_schedule): Parse schedule
modifiers, diagnose monotonic together with nonmonotonic.
(cp_parser_omp_clause_linear): Add DECLARE_SIMD argument.  Parse
parameter name as linear step as id-expression rather than expression.
(cp_parser_omp_all_clauses): Adjust caller.
(cp_parser_omp_for_loop_init): Add ORIG_INIT argument,
initialize it.  Adjust omp_privatize_field caller.
(cp_parser_omp_for_loop): Compute orig_inits, pass it's address
to finish_omp_for.
(OMP_DISTRIBUTE_CLAUSE_MASK): Add lastprivate clause.
(cp_parser_omp_target_data,
cp_parser_omp_target_enter_data,
cp_parser_omp_target_exit_data): Allow GOMP_MAP_ALWAYS_POINTER
and GOMP_MAP_FIRSTPRIVATE_REFERENCE.
(cp_parser_omp_target): Likewise.  Evaluate num_teams and
thread_limit expressions on combined target teams before the target.
(cp_parser_omp_declare_target): If decl has "omp declare target" or
"omp declare target link" attribute, and cgraph or varpool node already
exists, then set corresponding flags.  Call finish_omp_clauses
in the parenthesized extended-list syntax case.  Call
cp_parser_require_pragma_eol instead of cp_parser_skip_to_pragma_eol.
(cp_parser_omp_end_declare_target): Call cp_parser_require_pragma_eol
instead of cp_parser_skip_to_pragma_eol.
* decl2.c (cplus_decl_attributes): Don't diagnose block scope vars inside
declare target.
* pt.c (tsubst_omp_clauses): If OMP_CLAUSE_LINEAR_VARIABLE_STRIDE,
use tsubst_omp_clause_decl instead of tsubst_expr on
OMP_CLAUSE_LINEAR_STEP.  Handle non-static data members in shared
clauses.
(tsubst_omp_for_iterator): Adjust omp_privatize_field caller.
(tsubst_find_omp_teams): New function.
(tsubst_expr): Evaluate num_teams and thread_limit expressions on
combined target teams before the target.  Use OMP_FOR_ORIG_DECLS for
all OpenMP/OpenACC/Cilk+ looping constructs.  Adjust finish_omp_for
caller.
* semantics.c (omp_privatize_field): Add SHARED argument, if true,
always create artificial var and never put it into the hash table
or vector.
(handle_omp_array_sections_1): Adjust omp_privatize_field caller.
Allow non-zero low-bound on OMP_CLAUSE_REDUCTION array sections.
(handle_omp_array_sections): For structure element
based array sections use GOMP_MAP_ALWAYS_POINTER instead of
GOMP_MAP_FIRSTPRIVATE_POINTER.  Encode low-bound into the MEM_REF,
either into the constant offset, or for variable low-bound using
POINTER_PLUS_EXPR.
(finish_omp_clauses): Adjust omp_privatize_field caller.  Drop
generic_field_head, structure elements are now always mapped even
as array section bases, diagnose same var in data sharing and
mapping clauses.  For references map what they refer to using
GOMP_MAP_ALWAYS_POINTER for structure elements and
GOMP_MAP_FIRSTPRIVATE_REFERENCE otherwise.  Diagnose if linear step
on declare simd is neither a constant nor a uniform parameter.
Allow non-static data members on shared clauses.  Look through
POINTER_PLUS_EXPR for array section reductions.  Diagnose nonmonotonic
modifier on kinds other than dynamic or guided or nonmonotonic
modifier together with ordered clause.  Diagnose the same var or
function appearing multiple times on the same directive.  Fix up
wording for the to clause if t is neither a FUNCTION_DECL nor a
VAR_DECL, use special wording for OVERLOADs and TEMPLATE_ID_EXPR.
(handle_omp_for_class_iterator): Add ORIG_DECLS argument.  Call
c_omp_check_loop_iv_exprs on cond.
(finish_omp_for): Add ORIG_INITS argument.  Call
c_omp_check_loop_iv_exprs on ORIG_INITS elements.  Adjust
handle_omp_for_class_iterator caller.  Call c_omp_check_loop_iv.
Call add_stmt.
(finish_omp_atomic): Adjust c_finish_omp_atomic caller.
gcc/fortran/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>

* types.def (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR): Remove.
(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): New.
gcc/testsuite/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>

* c-c++-common/gomp/clauses-2.c (foo): Adjust for diagnostics
of variables in both data sharing and mapping clauses and for
structure element based array sections being mapped rather than
privatized.
* c-c++-common/gomp/declare-target-2.c: Add various new tests.  Adjust
expected diagnostics wording in one case.
* c-c++-common/gomp/distribute-1.c: New test.
* c-c++-common/gomp/element-1.c: New test.
* c-c++-common/gomp/pr61486-2.c: Add #pragma omp declare target
and #pragma omp end declare target pair around the function.
Change s from a parameter to a file scope variable.
* c-c++-common/gomp/pr67521.c: Add dg-error directives.
* c-c++-common/gomp/reduction-1.c (foo): Don't expect diagnostics
on non-zero low-bound in reduction array sections.  Add further
tests.
* c-c++-common/gomp/schedule-modifiers-1.c: New test.
* c-c++-common/gomp/target-teams-1.c: New test.
* gcc.dg/gomp/declare-simd-1.c: Add scan-assembler-times directives
for expected mangling on x86_64/i?86.
* gcc.dg/gomp/declare-simd-3.c: New test.
* gcc.dg/gomp/declare-simd-4.c: New test.
* gcc.dg/gomp/for-20.c: New test.
* gcc.dg/gomp/for-21.c: New test.
* gcc.dg/gomp/for-22.c: New test.
* gcc.dg/gomp/for-23.c: New test.
* gcc.dg/gomp/for-24.c: New test.
* gcc.dg/gomp/linear-1.c: New test.
* gcc.dg/gomp/loop-1.c: New test.
* g++.dg/gomp/atomic-17.C: New test.
* g++.dg/gomp/clause-1.C (T::test): Don't expect error on
non-static data member in shared clause.  Add single construct.
* g++.dg/gomp/declare-simd-1.C: Add dg-options.  Add
scan-assembler-times directives for expected mangling on x86_64/i?86.
* g++.dg/gomp/declare-simd-3.C: Likewise.
* g++.dg/gomp/declare-simd-4.C: New test.
* g++.dg/gomp/declare-simd-5.C: New test.
* g++.dg/gomp/declare-target-1.C: New test.
* g++.dg/gomp/linear-2.C: New test.
* g++.dg/gomp/loop-1.C: New test.
* g++.dg/gomp/loop-2.C: New test.
* g++.dg/gomp/loop-3.C: New test.
* g++.dg/gomp/member-2.C (B::m2, B::m4): Don't expect error on
non-static data member in shared clause.
* g++.dg/gomp/member-3.C: New test.
* g++.dg/gomp/member-4.C: New test.
* g++.dg/gomp/pr38639.C (foo): Adjust dg-error.
(bar): Remove dg-message.
* g++.dg/gomp/target-teams-1.C: New test.
include/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>
    Ilya Verbin  <ilya.verbin@intel.com>

* gomp-constants.h (GOMP_MAP_FLAG_SPECIAL_2): Define.
(GOMP_MAP_FLAG_ALWAYS): Remove.
(enum gomp_map_kind): Use GOMP_MAP_FLAG_SPECIAL_2 instead of
GOMP_MAP_FLAG_ALWAYS for GOMP_MAP_ALWAYS_TO, GOMP_MAP_ALWAYS_FROM,
GOMP_MAP_ALWAYS_TOFROM, GOMP_MAP_STRUCT, GOMP_MAP_RELEASE.
Add GOMP_MAP_ALWAYS_POINTER and GOMP_MAP_FIRSTPRIVATE_REFERENCE.
(GOMP_MAP_ALWAYS_P): Define.
(GOMP_TARGET_FLAG_NOWAIT): Adjust comment.
libgomp/
2015-11-05  Jakub Jelinek  <jakub@redhat.com>
    Ilya Verbin  <ilya.verbin@intel.com>

* libgomp_g.h (GOMP_loop_nonmonotonic_dynamic_next,
GOMP_loop_nonmonotonic_dynamic_start,
GOMP_loop_nonmonotonic_guided_next,
GOMP_loop_nonmonotonic_guided_start,
GOMP_loop_ull_nonmonotonic_dynamic_next,
GOMP_loop_ull_nonmonotonic_dynamic_start,
GOMP_loop_ull_nonmonotonic_guided_next,
GOMP_loop_ull_nonmonotonic_guided_start,
GOMP_parallel_loop_nonmonotonic_dynamic,
GOMP_parallel_loop_nonmonotonic_guided): New prototypes.
(GOMP_target_41): Renamed to ...
(GOMP_target_ext): ... this.  Add num_teams and thread_limit
arguments.
(GOMP_target_data_41): Renamed to ...
(GOMP_target_data_ext): ... this.
(GOMP_target_update_41): Renamed to ...
(GOMP_target_update_ext): ... this.
* libgomp.map (GOMP_4.5): Export GOMP_target_ext,
GOMP_target_data_ext and GOMP_target_update_ext instead of
GOMP_target_41, GOMP_target_data_41 and GOMP_target_update_41.
Export GOMP_loop_nonmonotonic_dynamic_next,
GOMP_loop_nonmonotonic_dynamic_start,
GOMP_loop_nonmonotonic_guided_next,
GOMP_loop_nonmonotonic_guided_start,
GOMP_loop_ull_nonmonotonic_dynamic_next,
GOMP_loop_ull_nonmonotonic_dynamic_start,
GOMP_loop_ull_nonmonotonic_guided_next,
GOMP_loop_ull_nonmonotonic_guided_start,
GOMP_parallel_loop_nonmonotonic_dynamic and
GOMP_parallel_loop_nonmonotonic_guided.
* loop.c (GOMP_parallel_loop_nonmonotonic_dynamic,
GOMP_parallel_loop_nonmonotonic_guided,
GOMP_loop_nonmonotonic_dynamic_start,
GOMP_loop_nonmonotonic_guided_start,
GOMP_loop_nonmonotonic_dynamic_next,
GOMP_loop_nonmonotonic_guided_next): New aliases or functions.
* loop_ull.c (GOMP_loop_ull_nonmonotonic_dynamic_start,
GOMP_loop_ull_nonmonotonic_guided_start,
GOMP_loop_ull_nonmonotonic_dynamic_next,
GOMP_loop_ull_nonmonotonic_guided_next): Likewise.
* target.c (gomp_map_0len_lookup, gomp_map_val): New inline
functions.
(gomp_map_vars): Handle GOMP_MAP_ALWAYS_POINTER.  For
GOMP_MAP_ZERO_LEN_ARRAY_SECTION use gomp_map_0len_lookup.
Use gomp_map_val function.
(gomp_target_fallback_firstprivate): New static function.
(GOMP_target_41): Renamed to ...
(GOMP_target_ext): ... this.  Add num_teams and thread_limit
arguments.  Move firstprivate fallback handling into a new
function.
(GOMP_target_data_41): Renamed to ...
(GOMP_target_data_ext): ... this.
(GOMP_target_update_41): Renamed to ...
(GOMP_target_update_ext): ... this.
(gomp_exit_data): For GOMP_MAP_*ZERO_LEN* use
gomp_map_0len_lookup instead of gomp_map_lookup.
(omp_target_is_present): Use gomp_map_0len_lookup instead of
gomp_map_lookup.
* testsuite/libgomp.c/target-28.c: Likewise.
* testsuite/libgomp.c/monotonic-1.c: New test.
* testsuite/libgomp.c/monotonic-2.c: New test.
* testsuite/libgomp.c/nonmonotonic-1.c: New test.
* testsuite/libgomp.c/nonmonotonic-2.c: New test.
* testsuite/libgomp.c/pr66199-5.c: New test.
* testsuite/libgomp.c/pr66199-6.c: New test.
* testsuite/libgomp.c/pr66199-7.c: New test.
* testsuite/libgomp.c/pr66199-8.c: New test.
* testsuite/libgomp.c/pr66199-9.c: New test.
* testsuite/libgomp.c/reduction-11.c: New test.
* testsuite/libgomp.c/reduction-12.c: New test.
* testsuite/libgomp.c/reduction-13.c: New test.
* testsuite/libgomp.c/reduction-14.c: New test.
* testsuite/libgomp.c/reduction-15.c: New test.
* testsuite/libgomp.c/target-12.c (main): Adjust for
omp_target_is_present change for one-past-last element.
* testsuite/libgomp.c/target-17.c (foo): Drop tests where
the same var is both mapped and privatized.
* testsuite/libgomp.c/target-19.c (foo): Adjust for different
handling of zero-length array sections.
* testsuite/libgomp.c/target-28.c: New test.
* testsuite/libgomp.c/target-29.c: New test.
* testsuite/libgomp.c/target-30.c: New test.
* testsuite/libgomp.c/target-teams-1.c: New test.
* testsuite/libgomp.c++/member-6.C: New test.
* testsuite/libgomp.c++/member-7.C: New test.
* testsuite/libgomp.c++/monotonic-1.C: New test.
* testsuite/libgomp.c++/monotonic-2.C: New test.
* testsuite/libgomp.c++/nonmonotonic-1.C: New test.
* testsuite/libgomp.c++/nonmonotonic-2.C: New test.
* testsuite/libgomp.c++/pr66199-3.C: New test.
* testsuite/libgomp.c++/pr66199-4.C: New test.
* testsuite/libgomp.c++/pr66199-5.C: New test.
* testsuite/libgomp.c++/pr66199-6.C: New test.
* testsuite/libgomp.c++/pr66199-7.C: New test.
* testsuite/libgomp.c++/pr66199-8.C: New test.
* testsuite/libgomp.c++/pr66199-9.C: New test.
* testsuite/libgomp.c++/reduction-11.C: New test.
* testsuite/libgomp.c++/reduction-12.C: New test.
* testsuite/libgomp.c++/target-13.C: New test.
* testsuite/libgomp.c++/target-14.C: New test.
* testsuite/libgomp.c++/target-15.C: New test.
* testsuite/libgomp.c++/target-16.C: New test.
* testsuite/libgomp.c++/target-17.C: New test.
* testsuite/libgomp.c++/target-18.C: New test.
* testsuite/libgomp.c++/target-19.C: New test.

Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
From-SVN: r229814

8 years agotarget.def (goacc.dim_limit): New hook.
Nathan Sidwell [Thu, 5 Nov 2015 13:50:13 +0000 (13:50 +0000)]
target.def (goacc.dim_limit): New hook.

* target.def (goacc.dim_limit): New hook.
* targhooks.h (default_goacc_dim_limit): Declare.
* doc/tm.texi.in (TARGET_GOACC_DIM_LIMIT): Add.
* doc/tm.texi: Rebuilt.
* omp-low.h (get_oacc_fn_dim_size, get_oacc_ifn_dim_arg): Declare.
* omp-low.c (get_oacc_fn_dim_size, get_oacc_ifn_dim_arg): New.
(default_goacc_dim_limit): New.
* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH): New.
(nvptx_goacc_dim_limit) New.
(TARGET_GOACC_DIM_LIMIT): Override.
* tree-vrp.c: Include omp-low.h, target.h.
(extract_range_basic): Add handling for IFN_GOACC_DIM_SIZE &
IFN_GOACC_DIM_POS.

From-SVN: r229809

8 years agotree-vect-generic.c (do_compare): Use -1 for true result instead of 1.
Ilya Enkovich [Thu, 5 Nov 2015 12:21:33 +0000 (12:21 +0000)]
tree-vect-generic.c (do_compare): Use -1 for true result instead of 1.

gcc/

* tree-vect-generic.c (do_compare): Use -1 for true
result instead of 1.

From-SVN: r229808

8 years ago[Patch AArch64] Switch constant pools to separate rodata sections.
Ramana Radhakrishnan [Thu, 5 Nov 2015 09:48:53 +0000 (09:48 +0000)]
[Patch AArch64] Switch constant pools to separate rodata sections.

        Now that PR63304 is fixed and we have an option to address
any part of the memory using adrp / add or adrp / ldr instructions
it makes sense to switch out literal pools into their own
mergeable sections by default.

This would mean that by default we could now start getting
the benefits of constant sharing across the board, potentially
improving code size. The other advantage of doing so, for the
security conscious is that this prevents intermingling of literal
pools with code.

Wilco's kindly done some performance measurements and suggests that
there is not really a performance regression in doing this.
I've looked at the code size for SPEC2k6 today at -Ofast and
in general there is a good code size improvement as expected
by sharing said constants.

Tested on aarch64-none-elf with no regressions and bootstrapped
and regression tested in my tree for a number of days now.

2015-11-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * config/aarch64/aarch64.c
        (aarch64_can_use_per_function_literal_pools_p): New.
        (aarch64_use_blocks_for_constant_p): Adjust declaration
        and use aarch64_can_use_function_literal_pools_p.
        (aarch64_select_rtx_section): Update.

From-SVN: r229795

8 years agotarghooks.c (default_get_mask_mode): Use BLKmode in case target doesn't support requi...
Ilya Enkovich [Thu, 5 Nov 2015 09:46:10 +0000 (09:46 +0000)]
targhooks.c (default_get_mask_mode): Use BLKmode in case target doesn't support required vector mode.

gcc/

2015-10-29  Ilya Enkovich  <enkovich.gnu@gmail.com>

* targhooks.c (default_get_mask_mode): Use BLKmode in
case target doesn't support required vector mode.
* stor-layout.c (layout_type); Check for BLKmode.

From-SVN: r229794

8 years agoloadpre2.c: Avoid undefined behavior due to uninitialized variables.
Richard Biener [Thu, 5 Nov 2015 08:43:46 +0000 (08:43 +0000)]
loadpre2.c: Avoid undefined behavior due to uninitialized variables.

2015-11-05  Richard Biener  <rguenther@suse.de>

* gcc.dg/tree-ssa/loadpre2.c: Avoid undefined behavior due to
uninitialized variables.
* gcc.dg/tree-ssa/loadpre21.c: Likewise.
* gcc.dg/tree-ssa/loadpre22.c: Likewise.
* gcc.dg/tree-ssa/loadpre23.c: Likewise.
* gcc.dg/tree-ssa/loadpre24.c: Likewise.
* gcc.dg/tree-ssa/loadpre25.c: Likewise.
* gcc.dg/tree-ssa/loadpre4.c: Likewise.
* gcc.dg/ipa/inlinehint-2.c: Likewise.
* gcc.dg/ipa/pure-const-2.c: Likewise.
* gcc.dg/tree-ssa/loop-1.c: Likewise.
* gcc.dg/tree-ssa/loop-23.c: Likewise.
* gcc.dg/tree-ssa/pr22051-2.c: Likewise.
* gcc.dg/tree-ssa/ssa-pre-3.c: Likewise.
* gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
* gcc.dg/vect/pr30858.c: Likewise.
* gcc.dg/vect/pr33866.c: Likewise.
* gcc.dg/vect/pr37027.c: Likewise.
* c-c++-common/ubsan/null-10.c: Likewise.
* gcc.target/i386/incoming-8.c: Likewise.

From-SVN: r229793

8 years agoDaily bump.
GCC Administrator [Thu, 5 Nov 2015 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r229790

8 years ago(cp_parser_oacc_single_int_clause): New function.
Cesar Philippidis [Wed, 4 Nov 2015 22:09:53 +0000 (14:09 -0800)]
(cp_parser_oacc_single_int_clause): New function.

gcc/cp/
* (cp_parser_oacc_single_int_clause): New function.
(cp_parser_oacc_clause_vector_length): Delete.
(cp_parser_omp_clause_num_gangs): Delete.
(cp_parser_omp_clause_num_workers): Delete.
(cp_parser_oacc_all_clauses): Use cp_parser_oacc_single_int_clause
for num_gangs, num_workers and vector_length.

From-SVN: r229786

8 years agoremove parameter_rename_map
Aditya Kumar [Wed, 4 Nov 2015 20:59:18 +0000 (20:59 +0000)]
remove parameter_rename_map

This map was used in the transition to the new scop detection: with the new scop
detection, we do not need this map anymore.

       * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
       Remove use of parameter_rename_map.
       (copy_def): Remove.
       (copy_internal_parameters): Remove.
       (graphite_regenerate_ast_isl): Remove call to copy_internal_parameters.
       * sese.c (new_sese_info): Do not initialize parameter_rename_map.
       (free_sese_info): Do not free parameter_rename_map.
       (set_rename): Do not use parameter_rename_map.
       (rename_uses): Update call to set_rename.
       (graphite_copy_stmts_from_block): Do not use parameter_rename_map.
       * sese.h (parameter_rename_map_t): Remove.
       (struct sese_info_t): Remove field parameter_rename_map.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229783

8 years agoimprove debug of codegen
Aditya Kumar [Wed, 4 Nov 2015 20:59:12 +0000 (20:59 +0000)]
improve debug of codegen

- fix printing of ISL stmt and parameter names
- move dot_scop* functions outside of anonymous namespace.

  * graphite-isl-ast-to-gimple.c: Include tree-cfg.h.
  (translate_isl_ast_node_user): Add more dumps: call print_loops_bb.
  * graphite-scop-detection.c (dot_all_scops_1): Moved out of
  anonymous namespace.
  * graphite-sese-to-poly.c (ssa_name_version_typesize): Remove.
  (isl_id_for_pbb): Use a buffer of size 10.
  (isl_id_for_ssa_name): Same.
  * sese.c (set_rename): Add more dumps.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229782

8 years agoomp-low.c (struct omp_context): Remove reduction_map field.
Nathan Sidwell [Wed, 4 Nov 2015 20:54:24 +0000 (20:54 +0000)]
omp-low.c (struct omp_context): Remove reduction_map field.

* omp-low.c (struct omp_context): Remove reduction_map field.
(lookup_oacc_reduction, maybe_lookup_oacc_reduction): Delete.
(new_omp_context, delete_omp_context, scan_omp_target): Remove
reduction_map handling.
(lower_omp_target): Remove obsolete openacc reduction handling.

From-SVN: r229781

8 years agonvptx.c (nvptx_goacc_validate_dims): Add checking.
Nathan Sidwell [Wed, 4 Nov 2015 20:48:05 +0000 (20:48 +0000)]
nvptx.c (nvptx_goacc_validate_dims): Add checking.

gcc/
* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Add checking.

libgomp/
* testsuite/libgomp.oacc-fortran/reduction-1.f90: Fix dimensions
and reduction copy.
* testsuite/libgomp.oacc-fortran/reduction-2.f90: Likewise.
* testsuite/libgomp.oacc-fortran/reduction-3.f90: Likewise.
* testsuite/libgomp.oacc-fortran/reduction-4.f90: Likewise.
* testsuite/libgomp.oacc-fortran/reduction-6.f90: Likewise.
* testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-3.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/collapse-2.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-4.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-initial-1.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-5.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: New.

From-SVN: r229780

8 years ago* gnat.dg/slice9.adb: New test.
Eric Botcazou [Wed, 4 Nov 2015 20:32:54 +0000 (20:32 +0000)]
* gnat.dg/slice9.adb: New test.

From-SVN: r229779

8 years agoloop-red-g-1.c: New.
Nathan Sidwell [Wed, 4 Nov 2015 17:01:23 +0000 (17:01 +0000)]
loop-red-g-1.c: New.

* libgomp.oacc-c-c++-common/loop-red-g-1.c: New.
* libgomp.oacc-c-c++-common/loop-red-gwv-1.c: New.
* libgomp.oacc-c-c++-common/loop-red-v-1.c: New.
* libgomp.oacc-c-c++-common/loop-red-v-2.c: New.
* libgomp.oacc-c-c++-common/loop-red-w-1.c: New.
* libgomp.oacc-c-c++-common/loop-red-w-2.c: New.
* libgomp.oacc-c-c++-common/loop-red-wv-1.c: New.
* libgomp.oacc-fortran/reduction-5.f90: Avoid reference var.

From-SVN: r229770

8 years ago* gfortran.dg/goacc/reduction-2.f95: Delete.
Nathan Sidwell [Wed, 4 Nov 2015 17:00:27 +0000 (17:00 +0000)]
* gfortran.dg/goacc/reduction-2.f95: Delete.

From-SVN: r229769

8 years agonvptx.c: Include gimple headers.
Nathan Sidwell [Wed, 4 Nov 2015 16:58:52 +0000 (16:58 +0000)]
nvptx.c: Include gimple headers.

* config/nvptx/nvptx.c: Include gimple headers.
(worker_red_size, worker_red_align, worker_red_name,
worker_red_sym): New.
(nvptx_option_override): Initialize worker reduction buffer.
(nvptx_file_end): Write out worker reduction buffer var.
(nvptx_expand_shuffle, nvptx_expand_worker_addr,
nvptx_expand_cmp_swap): New builtin expanders.
(enum nvptx_builtins): New.
(nvptx_builtin_decls): New.
(nvptx_builtin_decl, nvptx_init_builtins, nvptx_expand_builtin): New
(PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH): New.
(nvptx_get_worker_red_addr, nvptx_generate_vector_shuffle,
nvptx_lockless_update): New helpers.
(nvptx_goacc_reduction_setup, nvptx_goacc_reduction_init,
nvptx_goacc_reduction_fini, nvptx_goacc_reduction_teaddown): New.
(nvptx_goacc_reduction): New.
(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN,
TARGET_BUILTIN_DECL): Override.
(TARGET_GOACC_REDUCTION): Override.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r229768

8 years agointernal-fn.def (GOACC_REDUCTION): New.
Nathan Sidwell [Wed, 4 Nov 2015 16:57:36 +0000 (16:57 +0000)]
internal-fn.def (GOACC_REDUCTION): New.

* internal-fn.def (GOACC_REDUCTION): New.
* internal-fn.h (enum ifn_goacc_reduction_kind): New.
* internal-fn.c (expand_GOACC_REDUCTION): New.
* target.def (goacc.reduction): New OpenACC hook.
* targhooks.h (default_goacc_reduction): Declare.
* doc/tm.texi.in: Add TARGET_GOACC_REDUCTION.
* doc/tm.texi: Rebuilt.
* omp-low.c (oacc_get_reduction_array_id, oacc_max_threads,
scan_sharing_clauses): Remove oacc reduction handling here.
(lower_rec_input_clauses): Don't handle OpenACC reductions here.
(oacc_lower_reduction_var_helper): Delete.
(lower_oacc_reductions): New.
(lower_reduction_clauses): Don't handle OpenACC reductions here.
(lower_oacc_head_tail): Call lower_oacc_reductions.
(oacc_gimple_assign, oacc_init_reduction_array,
oacc_initialize_reduction_data, oacc_finalize_reduction_data,
oacc_process_reduction_data): Delete.
(lower_omp_target): Remove old OpenACC reduction handling.  Insert
dummy OpenACC gang reduction for reductions at outer level.
(oacc_loop_xform_head_tail): Transform IFN_GOACC_REDUCTION.
(default_goacc_reduction): New.
(execute_oacc_device_lower): Handle IFN_GOACC_REDUCTION.

From-SVN: r229767

8 years agoPass manager: add support for termination of pass list
Martin Liska [Wed, 4 Nov 2015 16:50:45 +0000 (17:50 +0100)]
Pass manager: add support for termination of pass list

* cgraphunit.c (cgraph_node::expand_thunk): Call
allocate_struct_function before init_function_start.
(cgraph_node::expand): Use push_cfun and pop_cfun.
* config/i386/i386.c (ix86_code_end): Call
allocate_struct_function before init_function_start.
* config/rs6000/rs6000.c (rs6000_code_end): Likewise.
* function.c (init_function_start): Move preamble to all
callers.
* passes.c (do_per_function_toporder): Use push_cfun and pop_cfun.
(execute_one_pass): Handle newly added TODO_discard_function.
(execute_pass_list_1): Terminate if cfun equals to NULL.
(execute_pass_list): Do not push and pop cfun, expect that
cfun is set.
* tree-pass.h (TODO_discard_function): Define.

From-SVN: r229764

8 years agoENABLE_CHECKING refactoring: remove remaining occurrences
Mikhail Maltsev [Wed, 4 Nov 2015 15:01:46 +0000 (15:01 +0000)]
ENABLE_CHECKING refactoring: remove remaining occurrences

libcpp/

* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Remove ENABLE_CHECKING.

gcc/

* cfganal.c (inverted_post_order_compute): Remove conditional
compilation, use flag_checking.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Remove ENABLE_CHECKING.
* genconditions.c: Do not #undef ENABLE_CHECKING.
* sese.h (bb_in_region): Comment out broken check.
* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa_1): Remove
conditional compilation, use flag_checking.

From-SVN: r229758

8 years agoENABLE_CHECKING refactoring: C family front ends
Mikhail Maltsev [Wed, 4 Nov 2015 14:32:42 +0000 (14:32 +0000)]
ENABLE_CHECKING refactoring: C family front ends

gcc/c-family/

* c-omp.c (c_omp_split_clauses): Remove conditional compilation. Use
flag_checking.

gcc/cp/

* call.c (validate_conversion_obstack): Define unconditionally.
* constexpr.c (maybe_constant_value, fold_non_dependent_expr): Use
gcc_checking_assert.
* cp-tree.h: Use CHECKING_P instead of ENABLE_CHECKING.
* decl2.c (cxx_post_compilation_parsing_cleanups): Use flag_checking.
* mangle.c (add_substitution): Likewise.
* method.c (maybe_explain_implicit_delete): Likewise.
* parser.c (cp_parser_template_argument_list): Remove conditional
compilation.
* pt.c (check_unstripped_args): Rename to...
(verify_unstripped_args): ... this and remove conditional compilation.
(retrieve_specialization): Guard call of verify_unstripped_args with
flag_checking.
(template_parm_to_arg): Remove conditional compilation.
(template_parms_to_args, coerce_template_parameter_pack,
coerce_template_parms): Likewise.
(tsubst_copy): Use flag_checking.
(type_unification_real): Remove conditional compilation.
(build_non_dependent_expr): Use flag_checking.
* tree.c (build_target_expr): Remove conditional compilation, use
gcc_checking_assert.
* typeck.c (comptypes): Likewise.
* typeck2.c (digest_init_r): Likewise.

From-SVN: r229756

8 years agoHandle recursive restrict in function parameter
Tom de Vries [Wed, 4 Nov 2015 14:18:43 +0000 (14:18 +0000)]
Handle recursive restrict in function parameter

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

PR tree-optimization/67742
* tree-ssa-structalias.c (struct fieldoff): Add restrict_pointed_type
field.
(push_fields_onto_fieldstack): Handle restrict_pointed_type field.
(create_variable_info_for_1): Add and handle handle_param parameter.
Add restrict handling.
(create_variable_info_for): Call create_variable_info_for_1 with extra
arg.
(make_param_constraints): Drop restrict_name parameter.  Ignore
vi->only_restrict_pointers.
(intra_create_variable_infos): Call create_variable_info_for_1 with
extra arg.  Remove restrict handling.  Call make_param_constraints with
one less arg.

* gcc.dg/tree-ssa/restrict-7.c: New test.
* gcc.dg/tree-ssa/restrict-8.c: New test.

From-SVN: r229755

8 years agoUse decl_type in create_variable_info_for_1
Tom de Vries [Wed, 4 Nov 2015 14:18:34 +0000 (14:18 +0000)]
Use decl_type in create_variable_info_for_1

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

* tree-ssa-structalias.c (create_variable_info_for_1): Use decl_type
variable.

From-SVN: r229754

8 years ago* gnat.dg/slice9.adb: New test.
Eric Botcazou [Wed, 4 Nov 2015 08:50:46 +0000 (08:50 +0000)]
* gnat.dg/slice9.adb: New test.

From-SVN: r229735

8 years agogotest: fix handling of --goarch option
Ian Lance Taylor [Wed, 4 Nov 2015 01:52:40 +0000 (01:52 +0000)]
gotest: fix handling of --goarch option

    I managed to add a new --goarch option to gotest without noticing that
    the script already had one.  Worse, they set different variables.
    Remove the old option in favor of the new one.

    Reviewed-on: https://go-review.googlesource.com/16613

From-SVN: r229734

8 years agoDaily bump.
GCC Administrator [Wed, 4 Nov 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r229731

8 years agoremove usage of ROUND_TYPE_SIZE from encoding.c
Trevor Saunders [Tue, 3 Nov 2015 22:43:22 +0000 (22:43 +0000)]
remove usage of ROUND_TYPE_SIZE from encoding.c

gcc got rid of this target macro in 2003, so it seems safe to assume the
alternate path works fine on all targets.

libobjc/ChangeLog:

2015-11-03  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

PR libobjc/24775
* encoding.c (objc_layout_finish_structure): Remove usage of
ROUND_TYPE_SIZE.

From-SVN: r229727

8 years agoremove unused config/arm/coff.h
Trevor Saunders [Tue, 3 Nov 2015 22:43:17 +0000 (22:43 +0000)]
remove unused config/arm/coff.h

gcc/ChangeLog:

2015-11-03  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* config/arm/coff.h: Remove.

From-SVN: r229726

8 years agoHandle auto parameter packs.
Jason Merrill [Tue, 3 Nov 2015 20:51:41 +0000 (15:51 -0500)]
Handle auto parameter packs.

* pt.c (struct find_parameter_pack_data): Add
type_pack_expansion_p field.
(find_parameter_packs_r): Use it to turn 'auto' into a parameter pack.
(uses_parameter_packs, make_pack_expansion)
(check_for_bare_parameter_packs, fixed_parameter_pack_p): Set it.

From-SVN: r229722

8 years agolibgomp.h (struct acc_dispatch_t): Remove args from exec_func.
Nathan Sidwell [Tue, 3 Nov 2015 20:18:33 +0000 (20:18 +0000)]
libgomp.h (struct acc_dispatch_t): Remove args from exec_func.

* libgomp.h (struct acc_dispatch_t): Remove args from exec_func.
* plugin/plugin-nvptx.c (nvptx_exec): Remove sizes & kinds arg.
(GOMP_OFFLOAD_openacc_parallel): Likewise.
* oacc-host.c (host_openacc_exec): Likewise.
* oacc-parallel.c (GOACC_parallel_keyed): Adjust exec_func call.

From-SVN: r229721

8 years agolex.c (search_line_sse42): Correctly advance the pointer to an aligned address.
Uros Bizjak [Tue, 3 Nov 2015 19:05:50 +0000 (20:05 +0100)]
lex.c (search_line_sse42): Correctly advance the pointer to an aligned address.

* lex.c (search_line_sse42): Correctly advance the pointer to an
aligned address.

From-SVN: r229718

8 years agore PR c/67882 (surprising offsetof result on an invalid array member without diagnostic)
Martin Sebor [Tue, 3 Nov 2015 18:53:19 +0000 (11:53 -0700)]
re PR c/67882 (surprising offsetof result on an invalid array member without diagnostic)

PR c++-common/67882

* c-family/c-common.h (fold_offsetof_1): Add argument.
* c-family/c-common.c (fold_offsetof_1): Diagnose more invalid
offsetof expressions that reference elements past the end of
an array.

        * c-c++-common/builtin-offsetof-2.c: New test.

From-SVN: r229717

8 years agore PR fortran/67982 (Incorrect -Wunused-function warning)
Dominique d'Humieres [Tue, 3 Nov 2015 18:03:38 +0000 (19:03 +0100)]
re PR fortran/67982 (Incorrect -Wunused-function warning)

2015-11-03  Dominique d'Humieres <dominiq@lps.ens.fr>

PR fortran/67982
* gfortran.dg/warn_unused_function_3.f90: New test.

From-SVN: r229716

8 years agoRemove superfluous gcc/ prefixes
Eric Botcazou [Tue, 3 Nov 2015 17:25:24 +0000 (17:25 +0000)]
Remove superfluous gcc/ prefixes

From-SVN: r229715

8 years agogimple-expr.c (useless_type_conversion_p): Reinstate type canonical check for aggrega...
Eric Botcazou [Tue, 3 Nov 2015 17:19:30 +0000 (17:19 +0000)]
gimple-expr.c (useless_type_conversion_p): Reinstate type canonical check for aggregate types and beef up comment for mode...

* gimple-expr.c (useless_type_conversion_p): Reinstate type canonical
check for aggregate types and beef up comment for mode check.

From-SVN: r229714

8 years ago* libsupc++/new: Declare sized deletes.
Jason Merrill [Tue, 3 Nov 2015 16:43:54 +0000 (11:43 -0500)]
* libsupc++/new: Declare sized deletes.

From-SVN: r229713

8 years agotree-vect-data-refs.c (vect_analyze_data_refs): Do not collect data references here.
Richard Biener [Tue, 3 Nov 2015 15:59:17 +0000 (15:59 +0000)]
tree-vect-data-refs.c (vect_analyze_data_refs): Do not collect data references here.

2015-11-03  Richard Biener  <rguenther@suse.de>

* tree-vect-data-refs.c (vect_analyze_data_refs): Do not collect
data references here.
* tree-vect-loop.c: Include cgraph.h.
(vect_analyze_loop_2): Collect data references here.
* tree-vect-slp.c (find_bb_location): Inline ...
(vect_slp_bb): ... here.  Renamed from vect_slp_analyze_bb.
Factor in vect_slp_transform_bb.
(vect_slp_transform_bb): Removed.
(vect_slp_analyze_bb_1): Collect data references here.
* tree-vectorizer.c (pass_slp_vectorize::execute): Call
vect_slp_bb.
* tree-vectorizer.h (vect_slp_bb): Declare.
(vect_slp_analyze_bb): Remove.
(vect_slp_transform_bb): Remove.
(find_bb_location): Remove.
(vect_analyze_data_refs): Remove stmt count reference parameter.

From-SVN: r229712