1. 01 Mar, 2019 20 commits
  2. 28 Feb, 2019 18 commits
  3. 27 Feb, 2019 2 commits
    • re PR go/89172 (FAIL: runtime/pprof) · cba8a572
      	PR go/89172
          internal/cpu, runtime, runtime/pprof: handle function descriptors
          
          When using PPC64 ELF ABI v1 a function address is not a PC, but is the
          address of a function descriptor.  The first field in the function
          descriptor is the actual PC (see
          http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#FUNC-DES).
          The libbacktrace library knows about this, and libgo uses actual PC
          values consistently except for the helper function funcPC that appears
          in both runtime and runtime/pprof.
          
          This patch fixes funcPC by recording, in the internal/cpu package,
          whether function descriptors are being used.  We have to check for
          function descriptors using a C compiler check, because GCC can be
          configured using --with-abi to select the ELF ABI to use.
          
          Fixes https://gcc.gnu.org/PR89172
          
          Reviewed-on: https://go-review.googlesource.com/c/162978
      
      From-SVN: r269266
      Ian Lance Taylor committed
    • PR c++/86969 - ICE with constexpr if and recursive generic lambdas. · e6df04c1
      Here, the problem was that extract_local_specs wasn't seeing that we use
      'self' inside the lambda in the else of the inner constexpr if, because we
      don't walk into lambda bodies and we didn't capture it in the lambda because
      'self' is still dependent.  Marek recently changed process_outer_var_ref to
      do more implicit capture in templates; this example shows that we should
      always capture non-packs, so that we can continue to not walk into lambda
      bodies.  We do walk into lambda bodies for pack expansions, so we can delay
      deciding whether we're capturing a single element or the entire pack.
      
      Immediately capturing a VLA means we need to create a dependent VLA capture
      type, and not in the context of the lambda op(), since trying to look up the
      instantiation of the op() while we're substituting into the capture list
      would crash.  So I force TYPE_CONTEXT and the binding level out to the
      enclosing function before pushtag, avoid adding a TAG_DEFN, and instead
      force the type to be complete in tsubst_lambda_expr.
      
      	* semantics.c (process_outer_var_ref): Do capture dependent vars.
      	* class.c (finish_struct): Only add TAG_DEFN if T is in
      	current_function_decl.
      	* lambda.c (vla_capture_type): Force the capture type out into the
      	lambda's enclosing function.
      	(add_capture): Pass in the lambda.
      	* pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
      
      From-SVN: r269265
      Jason Merrill committed