blob: c28ccfa0b5a43d3541a323f9d1423e83af5df94a [file] [edit]
// Copyright 2026 The IREE Authors
//
// Licensed under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// Freestanding <stddef.h> for wasm32.
#ifndef IREE_WASM_LIBC_STDDEF_H_
#define IREE_WASM_LIBC_STDDEF_H_
typedef __SIZE_TYPE__ size_t;
typedef __PTRDIFF_TYPE__ ptrdiff_t;
// wchar_t: 32-bit with -fno-short-wchar (matching the toolchain setting).
// In C++, wchar_t is a built-in type and must not be redefined.
#ifndef __cplusplus
typedef __WCHAR_TYPE__ wchar_t;
#endif
#ifdef __cplusplus
#define NULL __null
#else
#define NULL ((void*)0)
#endif
#define offsetof(type, member) __builtin_offsetof(type, member)
// C23 nullptr_t.
#if __STDC_VERSION__ >= 202311L
typedef typeof(nullptr) nullptr_t;
#endif
// max_align_t: the most-aligned fundamental type on wasm32.
// long double is 128-bit (quad) on wasm but alignment is 16 bytes.
typedef struct {
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
long double __max_align_ld
__attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
#endif // IREE_WASM_LIBC_STDDEF_H_