[Libclc-dev] [PATCH 1/3] Require LLVM 3.6 and bump version to 0.1.0
Tom Stellard
thomas.stellard at amd.com
Tue Dec 23 09:51:54 PST 2014
Some functions are implemented using hand-written LLVM IR and
LLVM assembly format is allowed to change between versions, so we
need to start tieing libclc to a specific version of LLVM.
---
configure.py | 12 ++++++-----
utils/prepare-builtins.cpp | 51 ++--------------------------------------------
2 files changed, 9 insertions(+), 54 deletions(-)
diff --git a/configure.py b/configure.py
index 7170f46..d962244 100755
--- a/configure.py
+++ b/configure.py
@@ -5,8 +5,8 @@ def c_compiler_rule(b, name, description, compiler, flags):
b.rule(name, command, description + " $out", depfile="$out.d")
version_major = 0;
-version_minor = 0;
-version_patch = 1;
+version_minor = 1;
+version_patch = 0;
from optparse import OptionParser
import os
@@ -64,9 +64,11 @@ def llvm_config(args):
sys.exit(1)
llvm_version = string.split(string.replace(llvm_config(['--version']), 'svn', ''), '.')
-llvm_system_libs = ''
-if (int(llvm_version[0]) == 3 and int(llvm_version[1]) >= 5) or int(llvm_version[0]) > 3:
- llvm_system_libs = llvm_config(['--system-libs'])
+if (int(llvm_version[0]) != 3 and int(llvm_version[1]) != 6):
+ print "libclc requires LLVM 3.6"
+ sys.exit(1)
+
+llvm_system_libs = llvm_config(['--system-libs'])
llvm_bindir = llvm_config(['--bindir'])
llvm_core_libs = llvm_config(['--libs', 'core', 'bitreader', 'bitwriter']) + ' ' + \
llvm_system_libs + ' ' + \
diff --git a/utils/prepare-builtins.cpp b/utils/prepare-builtins.cpp
index ee51edf..a3c3383 100644
--- a/utils/prepare-builtins.cpp
+++ b/utils/prepare-builtins.cpp
@@ -12,25 +12,8 @@
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Config/llvm-config.h"
-#define LLVM_360_AND_NEWER \
- (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6))
-
-#define LLVM_350_AND_NEWER \
- (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5))
-
-#if LLVM_350_AND_NEWER
#include <system_error>
-#define ERROR_CODE std::error_code
-#define UNIQUE_PTR std::unique_ptr
-#else
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Support/system_error.h"
-
-#define ERROR_CODE error_code
-#define UNIQUE_PTR OwningPtr
-#endif
-
using namespace llvm;
static cl::opt<std::string>
@@ -50,30 +33,17 @@ int main(int argc, char **argv) {
std::auto_ptr<Module> M;
{
-#if LLVM_350_AND_NEWER
ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr =
MemoryBuffer::getFile(InputFilename);
std::unique_ptr<MemoryBuffer> &BufferPtr = BufferOrErr.get();
if (std::error_code ec = BufferOrErr.getError())
-#else
- UNIQUE_PTR<MemoryBuffer> BufferPtr;
- if (ERROR_CODE ec = MemoryBuffer::getFileOrSTDIN(InputFilename, BufferPtr))
-#endif
ErrorMessage = ec.message();
else {
-#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR > 4)
-# if LLVM_360_AND_NEWER
ErrorOr<Module *> ModuleOrErr =
parseBitcodeFile(BufferPtr.get()->getMemBufferRef(), Context);
-# else
- ErrorOr<Module *> ModuleOrErr = parseBitcodeFile(BufferPtr.get(), Context);
-# endif
- if (ERROR_CODE ec = ModuleOrErr.getError())
+ if (std::error_code ec = ModuleOrErr.getError())
ErrorMessage = ec.message();
M.reset(ModuleOrErr.get());
-#else
- M.reset(ParseBitcodeFile(BufferPtr.get(), Context, &ErrorMessage));
-#endif
}
}
@@ -103,30 +73,13 @@ int main(int argc, char **argv) {
return 1;
}
-#if LLVM_360_AND_NEWER
std::error_code EC;
- UNIQUE_PTR<tool_output_file> Out
+ std::unique_ptr<tool_output_file> Out
(new tool_output_file(OutputFilename, EC, sys::fs::F_None));
if (EC) {
errs() << EC.message() << '\n';
exit(1);
}
-#else
- std::string ErrorInfo;
- UNIQUE_PTR<tool_output_file> Out
- (new tool_output_file(OutputFilename.c_str(), ErrorInfo,
-#if (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 4)
- sys::fs::F_Binary));
-#elif LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
- sys::fs::F_None));
-#else
- raw_fd_ostream::F_Binary));
-#endif
- if (!ErrorInfo.empty()) {
- errs() << ErrorInfo << '\n';
- exit(1);
- }
-#endif // LLVM_360_AND_NEWER
WriteBitcodeToFile(M.get(), Out->os());
--
1.8.5.5
More information about the Libclc-dev
mailing list