[PATCH] D139381: Added a C-API binding to query the LLVM version
wenzel.jakob@epfl.ch via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 7 01:02:22 PST 2022
wjakob updated this revision to Diff 480801.
wjakob added a comment.
Removed superfluous newline.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139381/new/
https://reviews.llvm.org/D139381
Files:
llvm/include/llvm-c/Core.h
llvm/lib/IR/Core.cpp
llvm/unittests/IR/CMakeLists.txt
llvm/unittests/IR/CoreBindings.cpp
Index: llvm/unittests/IR/CoreBindings.cpp
===================================================================
--- /dev/null
+++ llvm/unittests/IR/CoreBindings.cpp
@@ -0,0 +1,26 @@
+//===- llvm/unittest/IR/CoreBindings.cpp - Tests for C-API bindings -------===//
+//
+// Part of the LLVM Project, 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm-c/Core.h"
+#include "llvm/Config/llvm-config.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+TEST(CoreBindings, VersionTest) {
+ // Test ability to ignore output parameters
+ LLVMGetVersion(nullptr, nullptr, nullptr);
+
+ unsigned major, minor, patch;
+ LLVMGetVersion(&major, &minor, &patch);
+ EXPECT_EQ(major, (unsigned)LLVM_VERSION_MAJOR);
+ EXPECT_EQ(minor, (unsigned)LLVM_VERSION_MINOR);
+ EXPECT_EQ(patch, (unsigned)LLVM_VERSION_PATCH);
+}
+
+} // end anonymous namespace
Index: llvm/unittests/IR/CMakeLists.txt
===================================================================
--- llvm/unittests/IR/CMakeLists.txt
+++ llvm/unittests/IR/CMakeLists.txt
@@ -46,6 +46,7 @@
VectorTypesTest.cpp
VerifierTest.cpp
VPIntrinsicTest.cpp
+ CoreBindings.cpp
)
target_link_libraries(IRTests PRIVATE LLVMTestingSupport)
Index: llvm/lib/IR/Core.cpp
===================================================================
--- llvm/lib/IR/Core.cpp
+++ llvm/lib/IR/Core.cpp
@@ -61,6 +61,17 @@
llvm_shutdown();
}
+/*===-- Version query -----------------------------------------------------===*/
+
+void LLVMGetVersion(unsigned *major, unsigned *minor, unsigned *patch) {
+ if (major)
+ *major = LLVM_VERSION_MAJOR;
+ if (minor)
+ *minor = LLVM_VERSION_MINOR;
+ if (patch)
+ *patch = LLVM_VERSION_PATCH;
+}
+
/*===-- Error handling ----------------------------------------------------===*/
char *LLVMCreateMessage(const char *Message) {
Index: llvm/include/llvm-c/Core.h
===================================================================
--- llvm/include/llvm-c/Core.h
+++ llvm/include/llvm-c/Core.h
@@ -479,6 +479,16 @@
@see ManagedStatic */
void LLVMShutdown(void);
+/*===-- Version query -----------------------------------------------------===*/
+
+/**
+ * Return the major, minor, and patch version of LLVM
+ *
+ * The version components are returned via the function's three output
+ * parameters or skipped if a NULL pointer was supplied.
+ */
+void LLVMGetVersion(unsigned *major, unsigned *minor, unsigned *patch);
+
/*===-- Error handling ----------------------------------------------------===*/
char *LLVMCreateMessage(const char *Message);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139381.480801.patch
Type: text/x-patch
Size: 2787 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221207/f3e40334/attachment.bin>
More information about the llvm-commits
mailing list