aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2015-11-09Fix bb-reorder problem with degenerate cond_jump (PR68182)Segher Boessenkool2-4/+10
The code mistakenly thinks any cond_jump has two successors. This is not true if both destinations are the same, as can happen with weird patterns as in the PR. PR rtl-optimization/68182 * gcc/bb-reorder.c (reorder_basic_blocks_simple): Treat a conditional branch with only one successor just like unconditional branches. From-SVN: r229983
2015-11-08[PATCH] Remove backedge handling support in tree-ssa-threadupdate.cJeff Law2-244/+57
* tree-ssa-threadupdate.c (register_jump_thraed): Assert that a non-FSM path has no edges marked with EDGE_DFS_BACK. (ssa_redirect_edges): No longer call mark_loop_for_removal. (thread_single_edge, def_split_header_continue_p): Remove. (bb_ends_with_multiway_branch): Likewise. (thread_through_loop_header): Remove cases of threading from latch through the header. Simplify knowing we won't thread the latch. (thread_through_all_blocks): Simplify knowing that only the FSM threader needs to handle backedges. From-SVN: r229982
2015-11-09Daily bump.GCC Administrator1-1/+1
From-SVN: r229980
2015-11-08* g++.dg/lto/pr68057_0.C: Fix testcase.Jan Hubicka2-1/+5
From-SVN: r229968
2015-11-08Move tests depending on graphite to correct subdirectory.Joost VandeVondele3-0/+7
2015-11-08 Joost VandeVondele <vondele@gcc.gnu.org> * gfortran.dg/PR67518.f90: move from here... * gfortran.dg/graphite/PR67518.f90: to here. * gfortran.dg/PR53852.f90: move from here... * gfortran.dg/graphite/PR53852.f90: to here. From-SVN: r229967
2015-11-08Merge of the scalar-storage-order branch.Eric Botcazou224-524/+9969
From-SVN: r229965
2015-11-08Clean up fallout on ILP32 from r229831.Martin Sebor4-6/+19
gcc/ PR c++/67942 * cp/init.c (warn_placement_new_too_small): Convert integer operand of POINTER_PLUS_EXPR to ssize_t to determine its signed value. c-family/ * c.opt (Wplacement-new): Add a period to the end of a sentence. From-SVN: r229959
2015-11-08re PR fortran/68218 (ALLOCATE with size given by a module function)Andre Vehreschild4-0/+42
gcc/fortran/ChangeLog: 2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/68218 * trans-array.c (gfc_array_init_size): Add gfc_evaluate_now() when array spec in allocate is a function call. gcc/testsuite/ChangeLog: 2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/68218 * gfortran.dg/allocate_with_arrayspec_1.f90: New test. From-SVN: r229956
2015-11-08re PR fortran/68224 (ICE on referencing parameter array with dimension null)Steven G. Kargl4-5/+40
2015-11-08 Steven G. Kargl <kargl@gc.gnu.org> PR fortran/68224 * array.c (match_array_element_spec): Check of invalid NULL(). While here, fix nearby comments. 2015-11-08 Steven G. Kargl <kargl@gc.gnu.org> PR fortran/68224 * gfortran.dg/pr68224.f90: New test. From-SVN: r229955
2015-11-08re PR fortran/68196 (ICE on function result with procedure pointer component)Paul Thomas7-4/+110
2015-11-08 Paul Thomas <pault@gcc.gnu.org> PR fortran/68196 * class.c (has_finalizer_component): Prevent infinite recursion through this function if the derived type and that of its component are the same. * trans-types.c (gfc_get_derived_type): Do the same for proc pointers by ignoring the explicit interface for the component. PR fortran/66465 * check.c (same_type_check): If either of the expressions is BT_PROCEDURE, use the typespec from the symbol, rather than the expression. 2015-11-08 Paul Thomas <pault@gcc.gnu.org> PR fortran/68196 * gfortran.dg/proc_ptr_47.f90: New test. PR fortran/66465 * gfortran.dg/pr66465.f90: New test. From-SVN: r229954
2015-11-08[AArch64] Fix vqtb[lx][234] on big-endianChristophe Lyon1-0/+519
Forgot to commit the new testcases: gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqtbX.c From-SVN: r229946
2015-11-08Daily bump.GCC Administrator1-1/+1
From-SVN: r229944
2015-11-07* config/sparc/sparc.opt (mfix-at697f): Add final period.Eric Botcazou2-1/+5
From-SVN: r229941
2015-11-07Wno-frame-address.c: Skip on hppa*-*-*.John David Anglin2-1/+5
* gcc.dg/Wno-frame-address.c: Skip on hppa*-*-*. From-SVN: r229940
2015-11-07re PR fortran/68153 (ICE for intrinsic reshape with negative dim in ↵Steven G. Kargl4-0/+49
effective shape) 2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68153 * check.c (gfc_check_reshape): Improve check for valid SHAPE argument. 2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68153 * gfortran.dg/pr68153.f90: New test. From-SVN: r229939
2015-11-07re PR fortran/68151 (ICE on using select case with function of wrong type)Steven G. Kargl4-1/+42
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68151 * match.c (match_case_selector): Check for invalid type. 2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/68151 * gfortran.dg/pr68151.f90: New test. From-SVN: r229938
2015-11-07i386: Use the STC bb-reorder algorithm at -Os (PR67864)Segher Boessenkool2-0/+10
For x86, STC still gives better results for optimise-for-size than "simple" does. So use STC at -Os as well. PR rtl-optimization/67864 * common/config/i386/i386-common.c (ix86_option_optimization_table) <OPT_freorder_blocks_algorithm_>: Use REORDER_BLOCKS_ALGORITHM_STC at -Os and up. From-SVN: r229937
2015-11-07Handle internal functions in is_tm_pure_callRichard Sandiford2-0/+8
The upcoming changes to use internal functions for things like sqrt caused a failure in gcc.dg/tm/20100610.c, because we were trying to get call flags from the null gimple_call_fn of an IFN_SQRT call. We've been making fairly heavy use of internal functions for a while now so I think this might be latent. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * trans-mem.c (is_tm_pure_call): Use gimple_call_flags for internal functions. From-SVN: r229925
2015-11-07Move #undef DEF_BUILTIN* to builtins.defRichard Sandiford13-11/+24
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
2015-11-07Move #undef DEF_INTERNAL_FN to internal-fn.defRichard Sandiford4-5/+8
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
2015-11-07Move const char * -> int/fp folds to fold-const-call.cRichard Sandiford3-112/+162
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
2015-11-07Move constant bitop and bswap folds to fold-const-call.cRichard Sandiford3-107/+84
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
2015-11-07Handle constant fp classifications in fold-const-call.cRichard Sandiford3-23/+30
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
2015-11-07Move c_getstr to fold-const.cRichard Sandiford5-22/+29
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
2015-11-07Don't treat rint as setting errnoRichard Sandiford2-3/+8
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
2015-11-07Add -fno-math-errno to gcc.dg/lto/20110201-1_0.cRichard Sandiford2-2/+7
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
2015-11-07Try to update dominance info in tree-call-cdce.cRichard Sandiford2-1/+42
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
2015-11-06[PATCH] Remove more backedge threading supportJeff Law2-78/+51
* 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
2015-11-07add original schedule to scopAbderrazek Zaafrani5-4/+80
* 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
2015-11-07do not create unnecessary dimensions in scop scatteringAbderrazek Zaafrani2-54/+145
* 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
2015-11-07re PR go/66138 (json decoder Decode function fails for some structure return ↵Ian Lance Taylor1-1/+1
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
2015-11-07Daily bump.GCC Administrator1-1/+1
From-SVN: r229906
2015-11-06[PATCH] Allow vrp to thread across backedges using FSM threaderJeff Law6-10/+36
* 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
2015-11-06inline asm and multi-alternative constraintsDavid Wohlferd2-3/+22
* doc/md.texi (multi-alternative constraints): Don't document alternatives inherently tied to reload for the user documentation. From-SVN: r229897
2015-11-06revert: arm.md (*arm_smin_cmp): New pattern.Michael Collison4-58/+19
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
2015-11-06re PR fortran/54224 (Warn for unused internal procedures)Dominique d'Humieres2-0/+15
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
2015-11-06gimplify.c (gimplify_omp_ordered): Fix up diagnostics wording.Jakub Jelinek17-103/+524
* 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
2015-11-06* gcc.dg/pragma-diag-5.c: Make test cases unique.Mike Stump2-1/+5
From-SVN: r229891
2015-11-06do not collect cold loops in scopsAditya Kumar2-0/+13
* 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
2015-11-06enable loop fusion on isl-15Aditya Kumar6-5/+103
* 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
2015-11-06Do not allow irreducible loops/regions in a scopAditya Kumar2-2/+19
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
2015-11-06[AArch64] Fix vqtb[lx][234] on big-endianChristophe Lyon5-452/+486
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
2015-11-06re PR debug/66728 (CONST_WIDE_INT causes corrupted DWARF debug info)Mike Stump3-6/+26
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
2015-11-06Reimplement diagnostic_show_locus, introducing rich_location classesDavid Malcolm31-285/+1787
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
2015-11-06libgo: Solaris portability fixes.Ian Lance Taylor1-1/+1
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
2015-11-06[Patch AArch64] Switch constant pools to separate rodata sections.Ramana Radhakrishnan2-9/+33
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
2015-11-06[Patch ARM] Unified assembler in ARM state.Ramana Radhakrishnan15-285/+269
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
2015-11-06Add stats on adhoc table to dump_line_table_statisticsDavid Malcolm2-0/+10
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
2015-11-06tree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and add ↵Jan Hubicka4-25/+35
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
2015-11-06aarch64-builtins.c: Builtins for rsqrt and rsqrtf.Benedikt Huber9-2/+292
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