1. Jan 01, 2017
    • Sanjoy Das's avatar
      Fix an issue with isGuaranteedToTransferExecutionToSuccessor · 3bb2dbd6
      Sanjoy Das authored
      I'm not sure if this was intentional, but today
      isGuaranteedToTransferExecutionToSuccessor returns true for readonly and
      argmemonly calls that may throw.  This commit changes the function to
      not implicitly infer nounwind this way.
      
      Even if we eventually specify readonly calls as not throwing,
      isGuaranteedToTransferExecutionToSuccessor is not the best place to
      infer that.  We should instead teach FunctionAttrs or some other such
      pass to tag readonly functions / calls as nounwind instead.
      
      llvm-svn: 290794
      3bb2dbd6
    • Sanjoy Das's avatar
      Avoid const_cast; NFC · 0945530d
      Sanjoy Das authored
      llvm-svn: 290793
      0945530d
    • Richard Smith's avatar
      [c++17] Implement P0522R0 as written. This allows a template template argument · 26b86ea8
      Richard Smith authored
      to be specified for a template template parameter whenever the parameter is at
      least as specialized as the argument (when there's an obvious and correct
      mapping from uses of the parameter to uses of the argument). For example, a
      template with more parameters can be passed to a template template parameter
      with fewer, if those trailing parameters have default arguments.
      
      This is disabled by default, despite being a DR resolution, as it's fairly
      broken in its current state: there are no partial ordering rules to cope with
      template template parameters that have different parameter lists, meaning that
      code that attempts to decompose template-ids based on arity can hit unavoidable
      ambiguity issues.
      
      The diagnostics produced on a non-matching argument are also pretty bad right
      now, but I aim to improve them in a subsequent commit.
      
      llvm-svn: 290792
      26b86ea8
    • Saleem Abdulrasool's avatar
      system_error: use strerror_r only for threaded code · c8bf9618
      Saleem Abdulrasool authored
      When building libc++ without threading, strerror_r is not used.  Define
      the code only when threading is enabled.  This allows us to build
      system_error for Windows, which ATM doesn't build with threading.
      
      llvm-svn: 290791
      c8bf9618
    • Sanjay Patel's avatar
      [ValueTracking] add tests for known-nonnull-at; NFC · 5865d12e
      Sanjay Patel authored
      llvm-svn: 290790
      5865d12e
    • Saleem Abdulrasool's avatar
      clean up some qualifier casting · 2177f3ce
      Saleem Abdulrasool authored
      This cleans up the `-Wqual-cast` warnings from gcc 6 when building
      libc++.  NFC.
      
      llvm-svn: 290789
      2177f3ce
    • Saleem Abdulrasool's avatar
      clean up `-Wmisleading-indentation` warning · 94865f9a
      Saleem Abdulrasool authored
      Clean up the misleading indentation warning from GCC 6.  NFC
      
      llvm-svn: 290788
      94865f9a
    • Sanjay Patel's avatar
      [Inliner] remove unnecessary null checks from AddAlignmentAssumptions(); NFCI · aea60846
      Sanjay Patel authored
      We bail out on the 1st line if the assumption cache is not set, so there's
      no need to check it after that.
      
      llvm-svn: 290787
      aea60846
    • Sanjay Patel's avatar
      [ValueTracking] make dominator tree requirement explicit for... · 7fd779f0
      Sanjay Patel authored
      [ValueTracking] make dominator tree requirement explicit for isKnownNonNullFromDominatingCondition(); NFCI
      
      I don't think this hole is currently exposed, but I crashed regression tests for
      jump-threading and loop-vectorize after I added calls to isKnownNonNullAt() in
      InstSimplify as part of trying to solve PR28430:
      https://llvm.org/bugs/show_bug.cgi?id=28430
      
      That's because they call into value tracking with a context instruction, but no
      other parts of the query structure filled in.
      
      For more background, see the discussion in:
      https://reviews.llvm.org/D27855
      
      llvm-svn: 290786
      7fd779f0
    • Saleem Abdulrasool's avatar
      remove some inherited attributes on exceptions · 21711c45
      Saleem Abdulrasool authored
      These exception types are marked with `_LIBCPP_EXCEPTION_ABI` which
      expands to `__attribute__((__visibility__("default")))` or
      `__declspec(dllexport)`.  When building for Windows, we would hit an
      error:
      
          cannot apply 'dllexport' to a 'dllexport' class
      
      Remove the duplicate annotations as they will be inherited from the
      class.
      
      llvm-svn: 290785
      21711c45
  2. Dec 31, 2016
  3. Dec 30, 2016