[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