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

Jeroen Ketema j.ketema at imperial.ac.uk
Fri Jan 2 07:39:36 PST 2015


> On 31 Dec 2014, at 16:29, Tom Stellard <tom at stellard.net> wrote:
> 
> 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,


Thanks!

One small niggle: it seems the branch wasn’t propagated to the git repository: http://llvm.org/git/libclc.git

Jeroen


> 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