[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