From: Dan Gohman Date: Fri, 2 Oct 2015 19:38:47 +0000 (+0000) Subject: [WebAssembly] Add a __builtin_wasm_memory_size() intrinsic. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c0ea625d9266510c6ec08021e35a776391f203e8;p=clang [WebAssembly] Add a __builtin_wasm_memory_size() intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249176 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsWebAssembly.def b/include/clang/Basic/BuiltinsWebAssembly.def index 5c67bdfbb4..060d5548e4 100644 --- a/include/clang/Basic/BuiltinsWebAssembly.def +++ b/include/clang/Basic/BuiltinsWebAssembly.def @@ -17,5 +17,6 @@ // The format of this database matches clang/Basic/Builtins.def. BUILTIN(__builtin_wasm_page_size, "z", "nc") +BUILTIN(__builtin_wasm_memory_size, "z", "nc") #undef BUILTIN diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 27dd5b5728..ff2cef9b02 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -7048,6 +7048,11 @@ Value *CodeGenFunction::EmitWebAssemblyBuiltinExpr(unsigned BuiltinID, Value *Callee = CGM.getIntrinsic(Intrinsic::wasm_page_size, ResultType); return Builder.CreateCall(Callee); } + case WebAssembly::BI__builtin_wasm_memory_size: { + llvm::Type *ResultType = ConvertType(E->getType()); + Value *Callee = CGM.getIntrinsic(Intrinsic::wasm_memory_size, ResultType); + return Builder.CreateCall(Callee); + } default: return nullptr; diff --git a/test/CodeGen/builtins-wasm.c b/test/CodeGen/builtins-wasm.c index 93a66d0a33..d8da8d73a2 100644 --- a/test/CodeGen/builtins-wasm.c +++ b/test/CodeGen/builtins-wasm.c @@ -8,3 +8,9 @@ __SIZE_TYPE__ f0(void) { // WEBASSEMBLY32: call {{i.*}} @llvm.wasm.page.size.i32() // WEBASSEMBLY64: call {{i.*}} @llvm.wasm.page.size.i64() } + +__SIZE_TYPE__ f1(void) { + return __builtin_wasm_memory_size(); +// WEBASSEMBLY32: call {{i.*}} @llvm.wasm.memory.size.i32() +// WEBASSEMBLY64: call {{i.*}} @llvm.wasm.memory.size.i64() +}