[Libclc-dev] [PATCH 1/3] Require LLVM 3.6 and bump version to 0.1.0
Aaron Watry
awatry at gmail.com
Wed Dec 24 07:17:35 PST 2014
Looks good to me.
If we're going to start requiring the newest llvm explicitly (used to be an
implicit requirement), do we want to eventually consider cutting a branch
before bumping the llvm version (or tied to the llvm release schedule)?
Maybe it's more appropriate to start cutting releases when we have full
support for CL 1.0/1.1.
--Aaron
On Dec 23, 2014 12:54 PM, "Tom Stellard" <thomas.stellard at amd.com> wrote:
> 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
>
>
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at pcc.me.uk
> http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20141224/0b4422fa/attachment.html>
More information about the Libclc-dev
mailing list