Skip to content
Snippets Groups Projects
  1. Jun 26, 2020
    • Eric Fiselier's avatar
      [libc++] Fix recursive instantiation in std::array. · 77d76b71
      Eric Fiselier authored
      The use of the `&& ...` fold expression in std::array's deduction guides
      recursively builds a set of binary operator expressions of depth N where
      `N` is the number of elements in the initializer.
      
      This is problematic because arrays may be large, and instantiation
      depth is limited.
      
      This patch addresses the issue by flattening the SFINAE using
      the existing `__all` type trait.
      
      (cherry picked from commit c6eb584c)
  2. Apr 01, 2019
  3. Mar 19, 2019
  4. Mar 14, 2019
  5. Jan 19, 2019
    • Chandler Carruth's avatar
      Update more file headers across all of the LLVM projects in the monorepo · 57b08b09
      Chandler Carruth authored
      to reflect the new license. These used slightly different spellings that
      defeated my regular expressions.
      
      We understand that people may be surprised that we're moving the header
      entirely to discuss the new license. We checked this carefully with the
      Foundation's lawyer and we believe this is the correct approach.
      
      Essentially, all code in the project is now made available by the LLVM
      project under our new license, so you will see that the license headers
      include that license only. Some of our contributors have contributed
      code under our old license, and accordingly, we have retained a copy of
      our old license notice in the top-level files in each project and
      repository.
      
      llvm-svn: 351648
      57b08b09
  6. Jan 11, 2019
  7. Sep 12, 2018
  8. Aug 02, 2018
  9. May 18, 2018
  10. Feb 07, 2018
  11. Feb 06, 2018
    • Nirav Dave's avatar
      Revert "[libc++] Fix PR35491 - std::array of zero-size doesn't work with... · 936ff584
      Nirav Dave authored
      Revert "[libc++] Fix PR35491 - std::array of zero-size doesn't work with non-default constructible types."
      Revert "Fix initialization of array<const T, 0> with GCC."
      Revert "Make array<const T, 0> non-CopyAssignable and make swap and fill ill-formed."
      
      This reverts commit r324182, r324185, and r324194 which were causing issues with zero-length std::arrays.
      
      llvm-svn: 324309
      936ff584
  12. Feb 04, 2018
  13. Nov 15, 2017
  14. Jun 12, 2017
  15. May 31, 2017
    • Eric Fiselier's avatar
      [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows · a016efb1
      Eric Fiselier authored
      Summary:
      This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning.
      This patch changes libc++ to use `#pragma push_macro`  to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header.
      
      Reviewers: mclow.lists, bcraig, compnerd, EricWF
      
      Reviewed By: EricWF
      
      Subscribers: cfe-commits, krytarowski
      
      Differential Revision: https://reviews.llvm.org/D33080
      
      llvm-svn: 304357
      a016efb1
  16. Apr 16, 2017
  17. Jan 16, 2017
  18. Jan 04, 2017
    • Eric Fiselier's avatar
      [NFC] Rename _LIBCPP_TYPE_VIS_ONLY to _LIBCPP_TEMPLATE_VIS · e2f2d1ed
      Eric Fiselier authored
      The name _LIBCPP_TYPE_VIS_ONLY is no longer accurate because both
      _LIBCPP_TYPE_VIS and _LIBCPP_TYPE_VIS_ONLY expand to
      __attribute__((__type_visibility__)) with Clang. The only remaining difference
      is that _LIBCPP_TYPE_VIS_ONLY can be applied to templates whereas
      _LIBCPP_TYPE_VIS cannot (due to dllimport/dllexport not being allowed on
      templates).
      
      This patch renames _LIBCPP_TYPE_VIS_ONLY to _LIBCPP_TEMPLATE_VIS.
      
      llvm-svn: 291035
      e2f2d1ed
    • Marshall Clow's avatar
      Implement the last bit of P0031: 'A Proposal to Add Constexpr Modifiers to... · 020b623a
      Marshall Clow authored
      Implement the last bit of P0031: 'A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access' for C++17
      
      llvm-svn: 290976
      020b623a
  19. Aug 25, 2016
  20. Apr 21, 2016
  21. Mar 07, 2016
  22. Dec 18, 2015
  23. Nov 19, 2015
  24. Mar 17, 2015
    • Eric Fiselier's avatar
      [libcxx] Move tuple_size and tuple_element overloads for pair and array out of... · 57f00f2f
      Eric Fiselier authored
      [libcxx] Move tuple_size and tuple_element overloads for pair and array out of !defined(_LIBCPP_HAS_NO_VARIADICS) block.
      
      Summary:
      There is no reason to guard `tuple_size`, `tuple_element` and `get<I>(...)` for pair and array inside of `<__tuple>` so that they are only available when we have variadic templates.
      This requires there be redundant declarations and definitions. It also makes it easy to get things wrong.
      
      For example the following code should compile (and does in c++11).
      ```
      #define _LIBCPP_HAS_NO_VARIADICS
      #include <array>
      
      int main()
      {
        static_assert((std::tuple_size<std::array<int, 10> volatile>::value == 10), "");
      }
      ```
      
      This patch lifts the non-variadic parts of `tuple_size`, `tuple_types`, and `get<I>(...)` to the top of `<__tuple>` where they don't require variadic templates. This patch also removes `<__tuple_03>` because there is no longer a need for it.
      
      
      Reviewers: danalbert, K-ballo, mclow.lists
      
      Reviewed By: mclow.lists
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D7774
      
      llvm-svn: 232492
      57f00f2f
  25. Oct 04, 2013
    • Howard Hinnant's avatar
      G M: Changes all references to "x inline" to "inline x" where x =... · 3af48ef7
      Howard Hinnant authored
      G M: Changes all references to "x inline" to "inline x" where x = _libcpp_always_inline or _libcpp_inline_visibility macros.
      
      The patch touches these files:
      
      locale
      array
      deque
      new
      string
      utility
      vector
      __bit_reference
      __split_buffer
      locale_win32.h
       
      There is no intended functionality change and it is expected that reversing the position of the inline keyword with regard to the other keywords does not change the meaning of anything, least not for apple/Linux etc.
       
      It is intended to make libcxx more consistent with itself and to prevent the 1000 or so
      "inline.cpp(3) : warning C4141: 'inline' : used more than once" warnings that MS's cl.exe compiler emits without this patch, i.e. if inline is not the first keyword before a function name etc.
       
      Prefer "inline [other inline related keyword]" over "[other related keyword] inline".
      After this patch, libcxx should be consistent to this pattern.
      
      llvm-svn: 191987
      3af48ef7
  26. Aug 12, 2013
  27. Jul 17, 2013
  28. Mar 06, 2013
  29. Dec 18, 2012
  30. Jul 20, 2012
  31. Oct 17, 2011
  32. Jun 30, 2011
  33. Jun 01, 2011
  34. May 31, 2011
  35. Nov 17, 2010
  36. Nov 16, 2010
Loading