Merged in r352360.
On Thu, Jan 24, 2019 at 1:05 PM Dan Gohman via cfe-commits <cfe-commits@lists.llvm.org> wrote: > > Author: djg > Date: Thu Jan 24 13:05:11 2019 > New Revision: 352105 > > URL: http://llvm.org/viewvc/llvm-project?rev=352105&view=rev > Log: > [WebAssembly] Add a __wasi__ target macro > > This adds a `__wasi__` macro for the wasi OS, similar to `__linux__` etc. for > other OS's. > > Differential Revision: https://reviews.llvm.org/D57155 > > Modified: > cfe/trunk/lib/Basic/Targets.cpp > cfe/trunk/lib/Basic/Targets/OSTargets.h > cfe/trunk/test/Preprocessor/init.c > > Modified: cfe/trunk/lib/Basic/Targets.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=352105&r1=352104&r2=352105&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/Targets.cpp (original) > +++ cfe/trunk/lib/Basic/Targets.cpp Thu Jan 24 13:05:11 2019 > @@ -569,19 +569,27 @@ TargetInfo *AllocateTarget(const llvm::T > Triple.getVendor() != llvm::Triple::UnknownVendor || > !Triple.isOSBinFormatWasm()) > return nullptr; > - if (Triple.getOS() != llvm::Triple::UnknownOS && > - Triple.getOS() != llvm::Triple::WASI) > - return nullptr; > - return new WebAssemblyOSTargetInfo<WebAssembly32TargetInfo>(Triple, > Opts); > + switch (Triple.getOS()) { > + case llvm::Triple::WASI: > + return new WASITargetInfo<WebAssembly32TargetInfo>(Triple, Opts); > + case llvm::Triple::UnknownOS: > + return new WebAssemblyOSTargetInfo<WebAssembly32TargetInfo>(Triple, > Opts); > + default: > + return nullptr; > + } > case llvm::Triple::wasm64: > if (Triple.getSubArch() != llvm::Triple::NoSubArch || > Triple.getVendor() != llvm::Triple::UnknownVendor || > !Triple.isOSBinFormatWasm()) > return nullptr; > - if (Triple.getOS() != llvm::Triple::UnknownOS && > - Triple.getOS() != llvm::Triple::WASI) > - return nullptr; > - return new WebAssemblyOSTargetInfo<WebAssembly64TargetInfo>(Triple, > Opts); > + switch (Triple.getOS()) { > + case llvm::Triple::WASI: > + return new WASITargetInfo<WebAssembly64TargetInfo>(Triple, Opts); > + case llvm::Triple::UnknownOS: > + return new WebAssemblyOSTargetInfo<WebAssembly64TargetInfo>(Triple, > Opts); > + default: > + return nullptr; > + } > > case llvm::Triple::renderscript32: > return new LinuxTargetInfo<RenderScript32TargetInfo>(Triple, Opts); > > Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/OSTargets.h?rev=352105&r1=352104&r2=352105&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/Targets/OSTargets.h (original) > +++ cfe/trunk/lib/Basic/Targets/OSTargets.h Thu Jan 24 13:05:11 2019 > @@ -763,8 +763,9 @@ public: > template <typename Target> > class LLVM_LIBRARY_VISIBILITY WebAssemblyOSTargetInfo > : public OSTargetInfo<Target> { > +protected: > void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, > - MacroBuilder &Builder) const final { > + MacroBuilder &Builder) const { > // A common platform macro. > if (Opts.POSIXThreads) > Builder.defineMacro("_REENTRANT"); > @@ -785,6 +786,21 @@ public: > } > }; > > +// WASI target > +template <typename Target> > +class LLVM_LIBRARY_VISIBILITY WASITargetInfo > + : public WebAssemblyOSTargetInfo<Target> { > + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, > + MacroBuilder &Builder) const final { > + WebAssemblyOSTargetInfo<Target>::getOSDefines(Opts, Triple, Builder); > + Builder.defineMacro("__wasi__"); > + } > + > +public: > + explicit WASITargetInfo(const llvm::Triple &Triple, const TargetOptions > &Opts) > + : WebAssemblyOSTargetInfo<Target>(Triple, Opts) {} > +}; > + > } // namespace targets > } // namespace clang > #endif // LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H > > Modified: cfe/trunk/test/Preprocessor/init.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=352105&r1=352104&r2=352105&view=diff > ============================================================================== > --- cfe/trunk/test/Preprocessor/init.c (original) > +++ cfe/trunk/test/Preprocessor/init.c Thu Jan 24 13:05:11 2019 > @@ -9114,6 +9114,12 @@ > // RUN: %clang_cc1 -E -dM -ffreestanding -triple=wasm64-unknown-unknown \ > // RUN: < /dev/null \ > // RUN: | FileCheck -match-full-lines > -check-prefixes=WEBASSEMBLY,WEBASSEMBLY64 %s > +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=wasm32-unknown-wasi \ > +// RUN: < /dev/null \ > +// RUN: | FileCheck -match-full-lines > -check-prefixes=WEBASSEMBLY,WEBASSEMBLY32,WEBASSEMBLY-WASI %s > +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=wasm64-unknown-wasi \ > +// RUN: < /dev/null \ > +// RUN: | FileCheck -match-full-lines > -check-prefixes=WEBASSEMBLY,WEBASSEMBLY64,WEBASSEMBLY-WASI %s > // > // WEBASSEMBLY32:#define _ILP32 1 > // WEBASSEMBLY32-NOT:#define _LP64 > @@ -9468,6 +9474,7 @@ > // WEBASSEMBLY-NEXT:#define __llvm__ 1 > // WEBASSEMBLY-NOT:#define __unix > // WEBASSEMBLY-NOT:#define __unix__ > +// WEBASSEMBLY-WASI-NEXT:#define __wasi__ 1 > // WEBASSEMBLY-NOT:#define __wasm_simd128__ > // WEBASSEMBLY-NOT:#define __wasm_simd256__ > // WEBASSEMBLY-NOT:#define __wasm_simd512__ > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits