mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-29 14:06:12 +00:00

This patch introduces a new type __externref_t that denotes a WebAssembly opaque reference type. It also implements builtin __builtin_wasm_ref_null_extern(), that returns a null value of __externref_t. This lays the ground work for further builtins and reference types. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D122215
19 lines
684 B
C
19 lines
684 B
C
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
|
// RUN: %clang_cc1 -triple wasm32-unknown-unknown -target-feature +reference-types -o - -emit-llvm %s | FileCheck %s
|
|
|
|
typedef __externref_t externref_t;
|
|
|
|
void helper(externref_t);
|
|
|
|
// CHECK-LABEL: @handle(
|
|
// CHECK-NEXT: entry:
|
|
// CHECK-NEXT: [[OBJ_ADDR:%.*]] = alloca ptr addrspace(10), align 1
|
|
// CHECK-NEXT: store ptr addrspace(10) [[OBJ:%.*]], ptr [[OBJ_ADDR]], align 1
|
|
// CHECK-NEXT: [[TMP0:%.*]] = load ptr addrspace(10), ptr [[OBJ_ADDR]], align 1
|
|
// CHECK-NEXT: call void @helper(ptr addrspace(10) [[TMP0]])
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
void handle(externref_t obj) {
|
|
helper(obj);
|
|
}
|