Just a question. For a function introduced in 10.7, what append if the deployment target is 10.6 ? Does clang use weak linking for this function ?
Le 11 mars 2012 à 05:53, Douglas Gregor a écrit : > Author: dgregor > Date: Sat Mar 10 22:53:21 2012 > New Revision: 152531 > > URL: http://llvm.org/viewvc/llvm-project?rev=152531&view=rev > Log: > Document the availability attribute > > Modified: > cfe/trunk/docs/LanguageExtensions.html > cfe/trunk/lib/Parse/ParseDecl.cpp > > Modified: cfe/trunk/docs/LanguageExtensions.html > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.html?rev=152531&r1=152530&r2=152531&view=diff > ============================================================================== > --- cfe/trunk/docs/LanguageExtensions.html (original) > +++ cfe/trunk/docs/LanguageExtensions.html Sat Mar 10 22:53:21 2012 > @@ -30,6 +30,7 @@ > <li><a href="#vectors">Vectors and Extended Vectors</a></li> > <li><a href="#deprecated">Messages on <tt>deprecated</tt> and > <tt>unavailable</tt> attributes</a></li> > <li><a href="#attributes-on-enumerators">Attributes on enumerators</a></li> > +<li><a href="#availability">Availability attribute</a></li> > <li><a href="#checking_language_features">Checks for Standard Language > Features</a> > <ul> > <li><a href="#cxx_exceptions">C++ exceptions</a></li> > @@ -622,6 +623,49 @@ > <p>Query for this feature with > <tt>__has_extension(enumerator_attributes)</tt>.</p> > > <!-- ======================================================================= > --> > +<h2 id="availability">Availability attribute</h2 > +<!-- ======================================================================= > --> > + > +<p>Clang introduces the <code>availability</code> attribute, which can > +be placed on declarations to describe the lifecycle of that > +declaration relative to operating system versions. Consider the function > declaration for a hypothetical function <code>f</code>:</p> > + > +<pre> > +void f(void) > __attribute__((availability(macosx,introduced=10.4,deprecated=10.6,obsoleted=10.7))); > +</pre> > + > +<p>The availability attribute states that <code>f</code> was introduced in > Mac OS X 10.4, deprecated in Mac OS X 10.6, and obsoleted in Mac OS X 10.7. > This information is used by Clang to determine when it is safe to use > <code>f</code>: for example, if Clang is instructed to compile code for Mac > OS X 10.5, a call to <code>f()</code> succeeds. If Clang is instructed to > compile code for Mac OS X 10.6, the call succeeds but Clang emits a warning > specifying that the function is deprecated. Finally, if Clang is instructed > to compile code for Mac OS X 10.7, the call fails because <code>f()</code> is > no longer available.</p> > + > +<p>The availablility attribute is a comma-separated list starting with the > platform name and then including clauses specifying important milestones in > the declaration's lifetime (in any order) along with additional information. > Those clauses can be:</p> > + > +<dl> > + <dt>introduced=<i>version</i></dt> > + <dd>The first version in which this declaration was introduced.</dd> > + > + <dt>deprecated=<i>version</i></dt> > + <dd>The first version in which this declaration was deprecated, meaning > that users should migrate away from this API.</dd> > + > + <dt>obsoleted=<i>version</i></dt> > + <dd>The first version in which this declaration was obsoleted, meaning > that it was removed completely and can no longer be used.</dd> > + > + <dt>unavailable</dt> > + <dd>This declaration is never available on this platform.</dd> > + > + <dt>message=<i>string-literal</i></dt> > + <dd>Additional message text that Clang will provide when emitting a > warning or error about use of a deprecated or obsoleted declaration. Useful > to direct users to replacement APIs.</dd> > +</dl> > + > +<p>Multiple availability attributes can be placed on a declaration, which > may correspond to different platforms. Only the availability attribute with > the platform corresponding to the target platform will be used; any others > will be ignored. If no availability attribute specifies availability for the > current target platform, the availability attributes are ignored. Supported > platforms are:</p> > + > +<dl> > + <dt>ios</dt> > + <dd>Apple's iOS operating system. The minimum deployment target is > specified by the <code>-mios-version-min=<i>version</i></code> or > <code>-miphoneos-version-min=<i>version</i></code> command-line > arguments.</dd> > + > + <dt>macosx</dt> > + <dd>Apple's Mac OS X operating system. The minimum deployment target is > specified by the <code>-mmacosx-version-min=<i>version</i></code> > command-line argument.</dd> > +</dl> > + > +<!-- ======================================================================= > --> > <h2 id="checking_language_features">Checks for Standard Language Features</h2> > <!-- ======================================================================= > --> > > > Modified: cfe/trunk/lib/Parse/ParseDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=152531&r1=152530&r2=152531&view=diff > ============================================================================== > --- cfe/trunk/lib/Parse/ParseDecl.cpp (original) > +++ cfe/trunk/lib/Parse/ParseDecl.cpp Sat Mar 10 22:53:21 2012 > @@ -536,7 +536,7 @@ > /// version-arg: > /// 'introduced' '=' version > /// 'deprecated' '=' version > -/// 'removed' = version > +/// 'obsoleted' = version > /// 'unavailable' > /// opt-message: > /// 'message' '=' <string> > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits -- Jean-Daniel _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
