Skip to content
Snippets Groups Projects
  1. Apr 01, 2017
  2. Mar 23, 2017
  3. Mar 22, 2017
  4. Mar 21, 2017
    • Erich Keane's avatar
      Correct class-template deprecation behavior · c1312361
      Erich Keane authored
      Based on the comment in the test, and my reading of the standard, a deprecated warning should be issued in the following case:
      template<typename T> [[deprecated]] class Foo{}; Foo<int> f;
      
      This was not the case, because the ClassTemplateSpecializationDecl creation did not also copy the deprecated attribute.
      
      Note: I did NOT audit the complete set of attributes to see WHICH ones should be copied, so instead I simply copy ONLY the deprecated attribute.
      
      Differential Revision: https://reviews.llvm.org/D27486
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298410 91177308-0d34-0410-b5e6-96231b3b80d8
      c1312361
  5. Jan 27, 2017
  6. Jan 24, 2017
  7. Jan 05, 2017
    • Justin Lebar's avatar
      [TableGen] Only normalize the spelling of GNU-style attributes. · 15128fbc
      Justin Lebar authored
      Summary:
      When Sema looks up an attribute name, it strips off leading and trailing
      "__" if the attribute is GNU-style.  That is, __attribute__((foo)) and
      __attribute__((__foo__)) are equivalent.
      
      This is only true for GNU-style attributes.  In particular,
      __declspec(__foo__) is not equivalent to __declspec(foo), and Sema
      respects this difference.
      
      This patch fixes TableGen to match Sema's behavior.  The spelling
      'GNU<"__foo__">' should be normalized to 'GNU<"foo">', but
      'Declspec<"__foo__">' should not be changed.
      
      This is necessary to make CUDA compilation work on Windows, because e.g.
      the __device__ attribute is spelled __declspec(__device__).
      
      Attr.td does not contain any Declspec spellings that start or end with
      "__", so this change should not affect any other attributes.
      
      Reviewers: rnk
      
      Subscribers: cfe-commits, tra
      
      Differential Revision: https://reviews.llvm.org/D28318
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291129 91177308-0d34-0410-b5e6-96231b3b80d8
      15128fbc
  8. Jan 04, 2017
  9. Dec 31, 2016
  10. Dec 05, 2016
  11. Dec 04, 2016
  12. Dec 01, 2016
  13. Nov 29, 2016
  14. Oct 20, 2016
  15. Oct 11, 2016
    • Manuel Klimek's avatar
      Delete clang-completion-mode.el. · 51cb66f5
      Manuel Klimek authored
      It has been unmaintained for a while (last change was more than four
      years ago), and it appears not widely used.
      By now there are multiple well-maintained alternatives (emacs-ycmd,
      atuo-complete-clang), and if users try to make this work they'll likely
      have a bad user experience.
      
      Reasoning and problems pointed out by Philipp Stephani.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283864 91177308-0d34-0410-b5e6-96231b3b80d8
      51cb66f5
  16. Oct 08, 2016
  17. Sep 28, 2016
  18. Sep 19, 2016
  19. Sep 14, 2016
  20. Sep 13, 2016
  21. Sep 12, 2016
  22. Sep 10, 2016
  23. Sep 03, 2016
  24. Sep 02, 2016
    • Eric Fiselier's avatar
      Implement __attribute__((require_constant_initialization)) for safe static initialization. · 89aa3ede
      Eric Fiselier authored
      Summary:
      This attribute specifies expectations about the initialization of static and
      thread local variables. Specifically that the variable has a
      [constant initializer](http://en.cppreference.com/w/cpp/language/constant_initialization)
      according to the rules of [basic.start.static]. Failure to meet this expectation
      will result in an error.
      
      Static objects with constant initializers avoid hard-to-find bugs caused by
      the indeterminate order of dynamic initialization. They can also be safely
      used by other static constructors across translation units.
      
      This attribute acts as a compile time assertion that the requirements
      for constant initialization have been met. Since these requirements change
      between dialects and have subtle pitfalls it's important to fail fast instead
      of silently falling back on dynamic initialization.
      
      ```c++
        // -std=c++14
        #define SAFE_STATIC __attribute__((require_constant_initialization)) static
        struct T {
          constexpr T(int) {}
          ~T();
        };
        SAFE_STATIC T x = {42}; // OK.
        SAFE_STATIC T y = 42; // error: variable does not have a constant initializer
        // copy initialization is not a constant expression on a non-literal type.
      ```
      This attribute can only be applied to objects with static or thread-local storage
      duration.
      
      Reviewers: majnemer, rsmith, aaron.ballman
      
      Subscribers: jroelofs, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D23385
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280525 91177308-0d34-0410-b5e6-96231b3b80d8
      89aa3ede
    • Eric Fiselier's avatar
      Revert r280516 since it contained accidental changes. · f92a8d01
      Eric Fiselier authored
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280521 91177308-0d34-0410-b5e6-96231b3b80d8
      f92a8d01
    • Eric Fiselier's avatar
      Implement __attribute__((require_constant_initialization)) for safe static initialization. · 85fb4f5d
      Eric Fiselier authored
      Summary:
      This attribute specifies expectations about the initialization of static and
      thread local variables. Specifically that the variable has a
      [constant initializer](http://en.cppreference.com/w/cpp/language/constant_initialization)
      according to the rules of [basic.start.static]. Failure to meet this expectation
      will result in an error.
      
      Static objects with constant initializers avoid hard-to-find bugs caused by
      the indeterminate order of dynamic initialization. They can also be safely
      used by other static constructors across translation units.
      
      This attribute acts as a compile time assertion that the requirements
      for constant initialization have been met. Since these requirements change
      between dialects and have subtle pitfalls it's important to fail fast instead
      of silently falling back on dynamic initialization.
      
      ```c++
        // -std=c++14
        #define SAFE_STATIC __attribute__((require_constant_initialization)) static
        struct T {
          constexpr T(int) {}
          ~T();
        };
        SAFE_STATIC T x = {42}; // OK.
        SAFE_STATIC T y = 42; // error: variable does not have a constant initializer
        // copy initialization is not a constant expression on a non-literal type.
      ```
      This attribute can only be applied to objects with static or thread-local storage
      duration.
      
      Reviewers: majnemer, rsmith, aaron.ballman
      
      Subscribers: jroelofs, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D23385
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@280516 91177308-0d34-0410-b5e6-96231b3b80d8
      85fb4f5d
  25. Aug 25, 2016
  26. Aug 06, 2016
  27. Aug 02, 2016
Loading