[Libclc-dev] [PATCH 1/3] Require LLVM 3.6 and bump version to 0.1.0

Jeroen Ketema j.ketema at imperial.ac.uk
Thu Dec 25 07:17:52 PST 2014


I would prefer to have a branch, so we easily know what the last known good version is that works with the current release version of clang/llvm.

Jeroen

> On 24 Dec 2014, at 16:17, Aaron Watry <awatry at gmail.com> wrote:
> 
> 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 <mailto: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 <mailto:Libclc-dev at pcc.me.uk>
> http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev <http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev>
> _______________________________________________
> 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/20141225/cd9bee0d/attachment.html>


More information about the Libclc-dev mailing list