1. 08 Nov, 2015 3 commits
  2. 07 Nov, 2015 22 commits
    • * config/sparc/sparc.opt (mfix-at697f): Add final period. · cad669df
      From-SVN: r229941
      Eric Botcazou committed
    • Wno-frame-address.c: Skip on hppa*-*-*. · 171258f7
      	* gcc.dg/Wno-frame-address.c: Skip on hppa*-*-*.
      
      From-SVN: r229940
      John David Anglin committed
    • re PR fortran/68153 (ICE for intrinsic reshape with negative dim in effective shape) · 57e59620
      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
      Steven G. Kargl committed
    • re PR fortran/68151 (ICE on using select case with function of wrong type) · 727cde64
      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
      Steven G. Kargl committed
    • i386: Use the STC bb-reorder algorithm at -Os (PR67864) · bc05d49d
      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
      Segher Boessenkool committed
    • replace BITS_PER_UNIT with __CHAR_BIT__ in target libs · a153644f
      libgcc/ChangeLog:
      
      2015-11-07  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* config/visium/lib2funcs.c (__set_trampoline_parity): Use
      	__CHAR_BIT__ instead of BITS_PER_UNIT.
      	* fixed-bit.h: Likewise.
      	* fp-bit.h: Likewise.
      	* libgcc2.c (__popcountSI2): Likewise.
      	(__popcountDI2): Likewise.
      	* libgcc2.h: Likewise.
      	* libgcov.h: Likewise.
      
      libobjc/ChangeLog:
      
      2015-11-07  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	PR libobjc/24775
      	* encoding.c (_darwin_rs6000_special_round_type_align): Use
      	__CHAR_BIT__ instead of BITS_PER_UNIT.
      	(objc_sizeof_type): Likewise.
      	(objc_layout_structure): Likewise.
      	(objc_layout_structure_next_member): Likewise.
      	(objc_layout_finish_structure): Likewise.
      	(objc_layout_structure_get_info): Likewise.
      
      From-SVN: r229936
      Trevor Saunders committed
    • atexit.c: New file. · 3dee689d
      * config/rs6000/atexit.c: New file.
      * config/rs6000/t-aix-cxa (LIB2ADDEH): Build atexit.c.
      * config/rs6000/libgcc-aix-cxa.ver (atexit): Add symbol to exports.
      * config/rs6000/cxa_finalize.c
      (catomic_compare_and_exchange_bool_acq): Negate return value.
      
      From-SVN: r229932
      David Edelsohn committed
    • Handle internal functions in is_tm_pure_call · 6ca5a442
      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
      Richard Sandiford committed
    • Move #undef DEF_BUILTIN* to builtins.def · 0aad0198
      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
      Richard Sandiford committed
    • Move #undef DEF_INTERNAL_FN to internal-fn.def · 46e343b8
      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
      Richard Sandiford committed
    • Move const char * -> int/fp folds to fold-const-call.c · df838ef0
      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
      Richard Sandiford committed
    • Move constant bitop and bswap folds to fold-const-call.c · db9bd5d5
      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
      Richard Sandiford committed
    • Handle constant fp classifications in fold-const-call.c · 2556a032
      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
      Richard Sandiford committed
    • Move c_getstr to fold-const.c · 5486d913
      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
      Richard Sandiford committed
    • Don't treat rint as setting errno · eb0b164e
      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
      Richard Sandiford committed
    • Add -fno-math-errno to gcc.dg/lto/20110201-1_0.c · 02b7230d
      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
      Richard Sandiford committed
    • Try to update dominance info in tree-call-cdce.c · f127ea51
      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
      Richard Sandiford committed
    • [PATCH] Remove more backedge threading support · 88419b52
      	* 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
      Jeff Law committed
    • add original schedule to scop · 0473915e
          * 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
      Abderrazek Zaafrani committed
    • do not create unnecessary dimensions in scop scattering · 504fbc11
                 * 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
      Abderrazek Zaafrani committed
    • re PR go/66138 (json decoder Decode function fails for some structure return values) · f5eb9a8e
      	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
      Ian Lance Taylor committed
    • Daily bump. · 39f02a1f
      From-SVN: r229906
      GCC Administrator committed
  3. 06 Nov, 2015 15 commits
    • [PATCH] Allow vrp to thread across backedges using FSM threader · b9e59e4f
      	* 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
      Jeff Law committed
    • inline asm and multi-alternative constraints · a6fa947e
      	* doc/md.texi (multi-alternative constraints): Don't document
      	alternatives inherently tied to reload for the user documentation.
      
      From-SVN: r229897
      David Wohlferd committed
    • revert: arm.md (*arm_smin_cmp): New pattern. · 84d289d4
      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
      Michael Collison committed
    • re PR fortran/54224 (Warn for unused internal procedures) · 11c7f788
      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
      Dominique d'Humieres committed
    • Do not use libiberty's getpagesize on Android · 41fdbd54
      libiberty/ChangeLog:
      
              * configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
              Android hosts.
              * configure: Regenerate.
      
      From-SVN: r229893
      Joel Brobecker committed
    • gimplify.c (gimplify_omp_ordered): Fix up diagnostics wording. · d9f4ea18
      	* 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
      Jakub Jelinek committed
    • * gcc.dg/pragma-diag-5.c: Make test cases unique. · 38101f91
      From-SVN: r229891
      Mike Stump committed
    • do not collect cold loops in scops · b4487cbc
                 * 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
      Aditya Kumar committed
    • enable loop fusion on isl-15 · 40856c71
             * 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
      Aditya Kumar committed
    • Do not allow irreducible loops/regions in a scop · 1167ebe7
      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
      Aditya Kumar committed
    • [AArch64] Fix vqtb[lx][234] on big-endian · 246cc060
      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
      Christophe Lyon committed
    • re PR debug/66728 (CONST_WIDE_INT causes corrupted DWARF debug info) · a881fb0c
      	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
      Mike Stump committed
    • Reimplement diagnostic_show_locus, introducing rich_location classes · 8a645150
      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
      David Malcolm committed
    • * testsuite/26_numerics/complex/requirements/constexpr.cc · 277ec793
      	* testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
      	Use constexpr where needed.
      
      From-SVN: r229883
      Kai Tietz committed
    • libgo: Solaris portability fixes. · 9da92cbd
          
          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
      Ian Lance Taylor committed