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

Tom Stellard tom at stellard.net
Wed Dec 31 07:29:40 PST 2014


On Thu, Dec 25, 2014 at 04:17:52PM +0100, Jeroen Ketema wrote:
> 
> 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.
> 

I have created the release_35 branch, and also pushed the first two patches.

-Tom

> 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
> 

> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at pcc.me.uk
> http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev





More information about the Libclc-dev mailing list