[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