On Thu, Feb 26, 2015 at 9:41 PM, Dan Albert <[email protected]> wrote: > Hi srhines, > > REPOSITORY > rL LLVM > > http://reviews.llvm.org/D7929 > > Files: > include/clang/Basic/Attr.td > lib/Basic/Targets.cpp > test/Sema/attr-availability-android.c > > Index: include/clang/Basic/Attr.td > =================================================================== > --- include/clang/Basic/Attr.td > +++ include/clang/Basic/Attr.td > @@ -440,6 +440,7 @@ > let AdditionalMembers = > [{static llvm::StringRef getPrettyPlatformName(llvm::StringRef Platform) { > return llvm::StringSwitch<llvm::StringRef>(Platform) > + .Case("android", "Android") > .Case("ios", "iOS") > .Case("macosx", "OS X") > .Default(llvm::StringRef()); > Index: lib/Basic/Targets.cpp > =================================================================== > --- lib/Basic/Targets.cpp > +++ lib/Basic/Targets.cpp > @@ -364,8 +364,13 @@ > DefineStd(Builder, "linux", Opts); > Builder.defineMacro("__gnu_linux__"); > Builder.defineMacro("__ELF__"); > - if (Triple.getEnvironment() == llvm::Triple::Android) > + if (Triple.getEnvironment() == llvm::Triple::Android) { > Builder.defineMacro("__ANDROID__", "1"); > + unsigned Maj, Min, Rev; > + Triple.getOSVersion(Maj, Min, Rev); > + this->PlatformName = "android"; > + this->PlatformMinVersion = VersionTuple(Maj, Min, Rev); > + } > if (Opts.POSIXThreads) > Builder.defineMacro("_REENTRANT"); > if (Opts.CPlusPlus) > Index: test/Sema/attr-availability-android.c > =================================================================== > --- /dev/null > +++ test/Sema/attr-availability-android.c > @@ -0,0 +1,31 @@ > +// RUN: %clang_cc1 "-triple" "arm-linux-androideabi16" -fsyntax-only -verify > %s > + > +void f0(int) > __attribute__((availability(android,introduced=14,deprecated=19))); > +void f1(int) __attribute__((availability(android,introduced=16))); > +void f2(int) > __attribute__((availability(android,introduced=14,deprecated=16))); // > expected-note {{'f2' has been explicitly marked deprecated here}} > +void f3(int) __attribute__((availability(android,introduced=19))); > +void f4(int) > __attribute__((availability(android,introduced=9,deprecated=11,obsoleted=16), > availability(ios,introduced=2.0,deprecated=3.0))); // > expected-note{{explicitly marked unavailable}} > +void f5(int) __attribute__((availability(ios,introduced=3.2), > availability(android,unavailable))); // expected-note{{'f5' has been > explicitly marked unavailable here}} > + > +void test() { > + f0(0); > + f1(0); > + f2(0); // expected-warning{{'f2' is deprecated: first deprecated in > Android 16}} > + f3(0); > + f4(0); // expected-error{{f4' is unavailable: obsoleted in Android 16}} > + f5(0); // expected-error{{'f5' is unavailable: not available on Android}} > +} > + > +// rdar://10535640 > + > +enum { > + foo __attribute__((availability(android,introduced=8.0,deprecated=9.0))) > +}; > + > +enum { > + bar __attribute__((availability(android,introduced=8.0,deprecated=9.0))) > = foo > +}; > + > +enum __attribute__((availability(android,introduced=8.0,deprecated=9.0))) { > + bar1 = foo > +};
What are the enum tests supposed to be testing? The rdar link isn't helpful for most folks. Otherwise, LGTM. Thanks! ~Aaron > > EMAIL PREFERENCES > http://reviews.llvm.org/settings/panel/emailpreferences/ > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
