r352105 - [WebAssembly] Add a __wasi__ target macro
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 28 05:54:18 PST 2019
Merged in r352360.
On Thu, Jan 24, 2019 at 1:05 PM Dan Gohman via cfe-commits
<cfe-commits at 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 at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list