Skip to content
  1. Apr 16, 2011
  2. Mar 23, 2011
    • Douglas Gregor's avatar
      Implement a new 'availability' attribute, that allows one to specify · 20b2ebd7
      Douglas Gregor authored
      which versions of an OS provide a certain facility. For example,
      
        void foo()
        __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6)));
      
      says that the function "foo" was introduced in 10.2, deprecated in
      10.4, and completely obsoleted in 10.6. This attribute ties in with
      the deployment targets (e.g., -mmacosx-version-min=10.1 specifies that
      we want to deploy back to Mac OS X 10.1). There are several concrete
      behaviors that this attribute enables, as illustrated with the
      function foo() above:
      
        - If we choose a deployment target >= Mac OS X 10.4, uses of "foo"
          will result in a deprecation warning, as if we had placed
          attribute((deprecated)) on it (but with a better diagnostic)
        - If we choose a deployment target >= Mac OS X 10.6, uses of "foo"
          will result in an "unavailable" warning (in C)/error (in C++), as
          if we had placed attribute((unavailable)) on it
        - If we choose a deployment target prior to 10.2, foo() is
          weak-imported (if it is a kind of entity that can be weak
          imported), as if we had placed the weak_import attribute on it.
      
      Naturally, there can be multiple availability attributes on a
      declaration, for different platforms; only the current platform
      matters when checking availability attributes.
      
      The only platforms this attribute currently works for are "ios" and
      "macosx", since we already have -mxxxx-version-min flags for them and we
      have experience there with macro tricks translating down to the
      deprecated/unavailable/weak_import attributes. The end goal is to open
      this up to other platforms, and even extension to other "platforms"
      that are really libraries (say, through a #pragma clang
      define_system), but that hasn't yet been designed and we may want to
      shake out more issues with this narrower problem first.
      
      Addresses <rdar://problem/6690412>.
      
      As a drive-by bug-fix, if an entity is both deprecated and
      unavailable, we only emit the "unavailable" diagnostic.
      
      llvm-svn: 128127
      20b2ebd7
  3. Feb 12, 2011
  4. Feb 10, 2011
  5. Nov 23, 2010
  6. Nov 18, 2010
  7. Oct 22, 2010
  8. Sep 14, 2010
  9. Sep 10, 2010
  10. Jun 17, 2010
  11. Oct 24, 2009
  12. Oct 05, 2009
  13. Jun 14, 2009
  14. Apr 22, 2009
  15. Apr 01, 2009
  16. Mar 17, 2009
    • Douglas Gregor's avatar
      Build system changes to use TableGen to generate the various · 23d75bb3
      Douglas Gregor authored
      diagnostics. This builds on the patch that Sebastian committed and
      then revert. Major differences are:
      
        - We don't remove or use the current ".def" files. Instead, for now,
          we just make sure that we're building the ".inc" files.
        - Fixed CMake makefiles to run TableGen and build the ".inc" files
          when needed. Tested with both the Xcode and Makefile generators
          provided by CMake, so it should be solid.
        - Fixed normal makefiles to handle out-of-source builds that involve
          the ".inc" files.
      
      I'll send a separate patch to the list with Sebastian's changes that
      eliminate the use of the .def files.
      
      llvm-svn: 67058
      23d75bb3
  17. Oct 26, 2008
Loading