Git Product home page Git Product logo

llvmlite's Introduction

Numba

Gitter Discourse Zenodo DOI PyPI Azure Pipelines

A Just-In-Time Compiler for Numerical Functions in Python

Numba is an open source, NumPy-aware optimizing compiler for Python sponsored by Anaconda, Inc. It uses the LLVM compiler project to generate machine code from Python syntax.

Numba can compile a large subset of numerically-focused Python, including many NumPy functions. Additionally, Numba has support for automatic parallelization of loops, generation of GPU-accelerated code, and creation of ufuncs and C callbacks.

For more information about Numba, see the Numba homepage: https://numba.pydata.org and the online documentation: https://numba.readthedocs.io/en/stable/index.html

Installation

Please follow the instructions:

https://numba.readthedocs.io/en/stable/user/installing.html

Demo

Please have a look and the demo notebooks via the mybinder service:

https://mybinder.org/v2/gh/numba/numba-examples/master?filepath=notebooks

Contact

Numba has a discourse forum for discussions:

llvmlite's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

llvmlite's Issues

so many errors

You'll note that the problem is not with LLVM_CONFIG.

Just lots of compile errors. On OS X 10.10.2. I have installed llvm 3.6 binaries from llvm.org.

I have no clue. Hopefully someone other than pitrou will actually answer.

Here is the output:

pip3 install llvmlite
Collecting llvmlite
Using cached llvmlite-0.2.2.tar.gz
Installing collected packages: llvmlite
Running setup.py install for llvmlite
got version from file /private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/llvmlite/_version.py {'full': 'c6e72f55cb10bccdcba2f31e9d52c528b12c5a0e', 'version': '0.2.2'}
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py
LLVM version... 3.6.0
MACOSX_DEPLOYMENT_TARGET=10.7 clang++ -std=c++11 -stdlib=libc++ -dynamiclib /usr/local/clangllvm/bin/llvm-config --cxxflags assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.dylib /usr/local/clangllvm/bin/llvm-config --ldflags /usr/local/clangllvm/bin/llvm-config --system-libs --libs all
assembly.cpp:25:17: error: use of undeclared identifier 'ParseAssemblyString'
Module m = ParseAssemblyString(ir, NULL, error, *unwrap(context));
^
1 error generated.
executionengine.cpp:11:5: error: use of undeclared identifier 'LLVMLinkInJIT'; did you mean 'LLVMLinkInMCJIT'?
LLVMLinkInJIT();
^~~~~~~~~~~~~
LLVMLinkInMCJIT
/usr/local/clangllvm/include/llvm-c/ExecutionEngine.h:37:6: note: 'LLVMLinkInMCJIT' declared here
void LLVMLinkInMCJIT(void);
^
executionengine.cpp:70:25: error: no matching constructor for initialization of 'llvm::EngineBuilder'
llvm::EngineBuilder eb(llvm::unwrap(M));
^ ~~~~~~~~~~~~~~~
/usr/local/clangllvm/include/llvm/ExecutionEngine/ExecutionEngine.h:490:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::Module *' to 'const llvm::EngineBuilder' for 1st argument
class EngineBuilder {
^
/usr/local/clangllvm/include/llvm/ExecutionEngine/ExecutionEngine.h:510:3: note: candidate constructor not viable: no known conversion from 'llvm::Module *' to 'std::unique_ptr' for 1st argument
EngineBuilder(std::unique_ptr M);
^
2 errors generated.
linker.cpp:13:19: error: no matching function for call to 'LinkModules'
bool failed = Linker::LinkModules(unwrap(Dest), unwrap(Src), Mode,
^~~~~~~~~~~~~~~~~~~
/usr/local/clangllvm/include/llvm/Linker/Linker.h:73:15: note: candidate function not viable: requires 3 arguments, but 4 were provided
static bool LinkModules(Module *Dest, Module *Src,
^
/usr/local/clangllvm/include/llvm/Linker/Linker.h:76:15: note: candidate function not viable: requires 2 arguments, but 4 were provided
static bool LinkModules(Module *Dest, Module *Src);
^
1 error generated.
make: *
* [all] Error 1
Traceback (most recent call last):
File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 112, in
main()
File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 106, in main
main_posix('osx', '.dylib')
File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 96, in main_posix
subprocess.check_call(['make', '-f', makefile])
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 561, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.osx']' returned non-zero exit status 2
error: command '/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4' failed with exit status 1
Complete output from command /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 -c "import setuptools, tokenize;file='/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-gg7wjhi2-record/install-record.txt --single-version-externally-managed --compile:
running install

running build

got version from file /private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/llvmlite/_version.py {'full': 'c6e72f55cb10bccdcba2f31e9d52c528b12c5a0e', 'version': '0.2.2'}

running build_ext

/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py

LLVM version... 3.6.0

MACOSX_DEPLOYMENT_TARGET=10.7 clang++ -std=c++11 -stdlib=libc++ -dynamiclib `/usr/local/clangllvm/bin/llvm-config --cxxflags` assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.dylib `/usr/local/clangllvm/bin/llvm-config --ldflags` `/usr/local/clangllvm/bin/llvm-config --system-libs --libs all`

assembly.cpp:25:17: error: use of undeclared identifier 'ParseAssemblyString'

    Module *m = ParseAssemblyString(ir, NULL, error, *unwrap(context));

                ^

1 error generated.

executionengine.cpp:11:5: error: use of undeclared identifier 'LLVMLinkInJIT'; did you mean 'LLVMLinkInMCJIT'?

    LLVMLinkInJIT();

    ^~~~~~~~~~~~~

    LLVMLinkInMCJIT

/usr/local/clangllvm/include/llvm-c/ExecutionEngine.h:37:6: note: 'LLVMLinkInMCJIT' declared here

void LLVMLinkInMCJIT(void);

     ^

executionengine.cpp:70:25: error: no matching constructor for initialization of 'llvm::EngineBuilder'

    llvm::EngineBuilder eb(llvm::unwrap(M));

                        ^  ~~~~~~~~~~~~~~~

/usr/local/clangllvm/include/llvm/ExecutionEngine/ExecutionEngine.h:490:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::Module *' to 'const llvm::EngineBuilder' for 1st argument

class EngineBuilder {

      ^

/usr/local/clangllvm/include/llvm/ExecutionEngine/ExecutionEngine.h:510:3: note: candidate constructor not viable: no known conversion from 'llvm::Module *' to 'std::unique_ptr<Module>' for 1st argument

  EngineBuilder(std::unique_ptr<Module> M);

  ^

2 errors generated.

linker.cpp:13:19: error: no matching function for call to 'LinkModules'

    bool failed = Linker::LinkModules(unwrap(Dest), unwrap(Src), Mode,

                  ^~~~~~~~~~~~~~~~~~~

/usr/local/clangllvm/include/llvm/Linker/Linker.h:73:15: note: candidate function not viable: requires 3 arguments, but 4 were provided

  static bool LinkModules(Module *Dest, Module *Src,

              ^

/usr/local/clangllvm/include/llvm/Linker/Linker.h:76:15: note: candidate function not viable: requires 2 arguments, but 4 were provided

  static bool LinkModules(Module *Dest, Module *Src);

              ^

1 error generated.

make: *** [all] Error 1

Traceback (most recent call last):

  File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 112, in <module>

    main()

  File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 106, in main

    main_posix('osx', '.dylib')

  File "/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/ffi/build.py", line 96, in main_posix

    subprocess.check_call(['make', '-f', makefile])

  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 561, in check_call

    raise CalledProcessError(retcode, cmd)

subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.osx']' returned non-zero exit status 2

error: command '/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4' failed with exit status 1

----------------------------------------
Command "/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 -c "import setuptools, tokenize;__file__='/private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-gg7wjhi2-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/fs/8cyvwzv51jbddydgh6_lgslr0000gn/T/pip-build-fvo2cpt1/llvmlite

AttributeError: 'module' object has no attribute 'IntEnum'

I have some issue when importing numba with python2.7, not happening with python3.4 under Ubuntu 14.04. It seems like something is wrong with llvmlite bindings:

AttributeError                            Traceback (most recent call last)
/home/valerio/Petto Redigi/csn/csn.py in <module>()
     13 import sys
     14 
---> 15 import numba
     16 
     17 from time import time

/usr/local/lib/python2.7/dist-packages/numba/__init__.py in <module>()
      4 from __future__ import print_function, division, absolute_import
      5 import re
----> 6 from . import testing, decorators
      7 from ._version import get_versions
      8 from . import special, types, config

/usr/local/lib/python2.7/dist-packages/numba/decorators.py in <module>()
      5 import warnings
      6 from . import sigutils
----> 7 from .targets import registry
      8 
      9 # -----------------------------------------------------------------------------

/usr/local/lib/python2.7/dist-packages/numba/targets/registry.py in <module>()
      1 from __future__ import print_function, division, absolute_import
      2 
----> 3 from . import cpu
      4 from .descriptors import TargetDescriptor
      5 from .. import dispatcher, utils, typing

/usr/local/lib/python2.7/dist-packages/numba/targets/cpu.py in <module>()
      3 import sys
      4 
----> 5 import llvmlite.llvmpy.core as lc
      6 import llvmlite.llvmpy.ee as le
      7 import llvmlite.binding as ll

/usr/local/lib/python2.7/dist-packages/llvmlite/llvmpy/core.py in <module>()
      1 from llvmlite import ir
----> 2 from llvmlite import binding as llvm
      3 import itertools
      4 
      5 CallOrInvokeInstruction = ir.CallInstr

/usr/local/lib/python2.7/dist-packages/llvmlite/binding/__init__.py in <module>()
      5 
      6 from .dylib import *
----> 7 from .executionengine import *
      8 from .initfini import *
      9 from .linker import *

/usr/local/lib/python2.7/dist-packages/llvmlite/binding/executionengine.py in <module>()
      1 from __future__ import print_function, absolute_import
      2 from ctypes import byref, POINTER, c_char_p, c_bool, c_uint, c_void_p
----> 3 from . import ffi, targets
      4 
      5 

/usr/local/lib/python2.7/dist-packages/llvmlite/binding/targets.py in <module>()
      7 
      8 from . import ffi
----> 9 from .module import parse_assembly
     10 from .common import _decode_string, _encode_string
     11 

/usr/local/lib/python2.7/dist-packages/llvmlite/binding/module.py in <module>()
      6 from .linker import link_modules
      7 from .common import _encode_string
----> 8 from .value import ValueRef
      9 
     10 

/usr/local/lib/python2.7/dist-packages/llvmlite/binding/value.py in <module>()
      8 
      9 
---> 10 class Linkage(enum.IntEnum):
     11     # The LLVMLinkage enum from llvm-c/Core.h
     12 

AttributeError: 'module' object has no attribute 'IntEnum'

What am I still missing here?

Add `ir.Module.from_bitcode` and `ir.Module.link_in`

The impyla code depends on the ability to load clang-compiled modules and link them into a numba-generated modules. These changes are necessary to get the impyla UDF functionality working again using the bleeding-edge numba.

Document llvmlite

We should start documenting llvmlite, at least for ourselves and the nascent community of users.

Possible doc structure:

  • Introduction
    • Overview
    • Architecture
    • LLVM compatibility
    • API stability
  • Installing
  • llvmlite.ir -- the IR construction layer
    • Types
    • Values
    • The IRBuilder class
  • llvmlite.binding -- the LLVM binding layer
    • ...

Test failure under Windows

This may due to a pointer lifetime issue.

======================================================================
ERROR: test_target_data (llvmlite.tests.test_binding.TestLegacyJit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Z:\llvmlite\llvmlite\tests\test_binding.py", line 282, in test_target_da
ta
    str(td)
  File "Z:\llvmlite\llvmlite\binding\targets.py", line 22, in __str__
    ffi.lib.LLVMPY_CopyStringRepOfTargetData(self, out)
OSError: exception: access violation reading 0x00695000

----------------------------------------------------------------------

IRBuilder doesn't properly keep track of its current location

I'm running into a problem when using two IRBuilders on the same basic block. The C++ IRBuilder can keep track of its location even if instructions were inserted into the BB before its current location. Here's an example:

int main(int argc, char** argv) {
  LLVMContext &Context = getGlobalContext();
  std::unique_ptr<Module> Mod = make_unique<Module>("my module", Context);

  std::vector<Type*> Args(3, Type::getDoubleTy(Context));
  FunctionType *FT = FunctionType::get(Type::getDoubleTy(Context), Args, false);
  Function *F =
      Function::Create(FT, Function::ExternalLinkage, "foo", Mod.get());
  Function::arg_iterator arg_iter = F->arg_begin();
  Value *arg1 = arg_iter++; arg1->setName("arg1");
  Value *arg2 = arg_iter++; arg2->setName("arg2");
  Value *arg3 = arg_iter++; arg3->setName("arg3");

  BasicBlock *BB = BasicBlock::Create(Context, "entry", F);

  // Create an IRBuilder pointing to the beginning of the entry block, and add
  // a couple of instructions.
  IRBuilder<> Builder(Context);
  Builder.SetInsertPoint(BB);

  Value *fa = Builder.CreateFAdd(arg1, arg2);
  Value *fb = Builder.CreateFAdd(fa, arg3);

  // Now create a new builder and point it to the beginning of 'entry'. Add
  // an instruction.
  IRBuilder<> TmpBuilder(BB, BB->begin());
  TmpBuilder.CreateFSub(arg3, arg2);

  // Add another instruction via the original builder. Note that it goes into
  // the end of BB, since Builder still points there.
  Builder.CreateRet(fb);

  Mod->dump();
  return 0;
}

This correctly creates the code:

define double @foo(double %arg1, double %arg2, double %arg3) {
entry:
  %0 = fsub double %arg3, %arg2
  %1 = fadd double %arg1, %arg2
  %2 = fadd double %1, %arg3
  ret double %2
}

Even though TmpBuilder added instructions before the location of Builder. This is because Builder remembers its location by using an iterator of ilist, which is tolerant to such changes.

On the other hand with llvmlite:

import llvmlite.ir as ll

module = ll.Module()
func_ty = ll.FunctionType(ll.DoubleType(), 3 * [ll.DoubleType()])
func = ll.Function(module, func_ty, 'foo')

func.args[0].name = 'arg1'
func.args[1].name = 'arg2'
func.args[2].name = 'arg3'

bb = func.append_basic_block('entry')

builder = ll.IRBuilder(bb)
fa = builder.fadd(func.args[0], func.args[1])
fb = builder.fadd(fa, func.args[2])

tmp_builder = ll.IRBuilder()
tmp_builder.position_at_start(bb)
tmp_builder.fsub(func.args[2], func.args[1])

builder.ret(fb)

print(module)

Gives:

define double @"foo"(double %"arg1", double %"arg2", double %"arg3") 
{
entry:
  %".6" = fsub double %"arg3", %"arg2"
  %".4" = fadd double %"arg1", %"arg2"
  ret double %".5"
  %".5" = fadd double %".4", %"arg3"
}

Note where the ret got inserted.

This is because in llvmlite, IRBuilder keeps track of its location using a simple numeric index (_anchor) and is oblivious to changes in the underlying BB.

LLVM 3.5 JITting very slow under Windows

Under Linux, llvmlite shows a healthy speedup over llvmpy:

$ python bench.py llvmpy
generate IR: 0.0018703189998632297
create EngineBuilder: 0.0014258439987315796
JIT compile: 0.0014607869961764663
$ python bench.py llvmlite
generate IR: 0.0002735579982982017
create EngineBuilder: 0.0009375250010634772
JIT compile: 0.0019835280036204495

Under Windows, the IR generation phase (i.e. llvmlite code) is sped up the same amount, but the subsequent steps (i.e. LLVM code) suffer a large regression (roughly 20x slower):

[34] Z:\llvmlite>python bench.py llvmpy
generate IR: 0.00443444
create EngineBuilder: 0.0026152499999999995
JIT compile: 0.0024921300000000004
[34] Z:\llvmlite>python bench.py llvmlite
generate IR: 0.00041883
create EngineBuilder: 0.02687394
JIT compile: 0.04012249999999999

I've tried various builds: VS 2012, VS 2013, 32-bit, 64-bit. All in Release mode.

Writing custom passes with FunctionPassManager or ModulePassManager

The current examples and the documentation is not very clear on the use/purpose of the 2 pass managers. I see that they operate on the actual llvm module generated and not the textual version. However, without access to the underlying llvm types its difficult to write custom passes. This probably doesn't fall under the numba's needs I guess but I was wondering if there was indeed a way for this.
Otherwise is the original llvmpy better suited for this kind of behavior (although depricated).

https://gist.github.com/ssarangi/

Update:
After thinking about this for sometime I was wondering if this is already supported by the text ir interface ? If not it should be relatively easy to support this rather than exposing actual llvm variables through the api isn't it ?

Building on Ubuntu

Happy new year!

I'm trying to build numba because I want to install it for the system python. (Could it be done using conda?) At any rate I try to follow the instructions for a non-conda install but the llvmlite build fails with

executionengine.cpp:68:33: error: ‘nullptr’ was not declared in this scope
     LLVMExecutionEngineRef ee = nullptr;
                                 ^

even though I have llvm-3.5-dev installed. I am on a Ubuntu 14.04.1 LTS. In case it helps here is the expanded compiler call that fails.

python setup.py install should also run build

I discovered on accident that "python setup.py install" doesn't also build the C wrapper. This requires an explicit "python setup.py build" call first, which is documented in the README (as I found later).

However, I think other Python packages automatically run the build step when doing install (or at least detect if it needs to be run and do it).

Remove __len__ from aggregate types

Having a __len__ can produce subtle errors, since a zero-length object is considered false-ish by Python. Aggregate types already have a elements attribute which can be used instead.

libLLVMSupport.a (Commandline.cpp.obj): fatal error LNK1143: invalid or currupt file

Hi,
I always get this error while trying to build llvmlite v0.6.0.dev using llvm 3.6.1 in Windows 8.1 with python 3.4.3 (32 bit)

E:\llvmlite-0.6.0.dev>python setup.py install
C:\Python34\lib\site-packages\setuptools\dist.py:283: UserWarning: The version specified requires normalization, consider using '0.6.0.dev0' instead of '0.6.0.dev'.
  self.metadata.version,
running install
running build
got version from expanded keyword {'full': '0daf5c67c380a7ab3126e0ac0575b413d0f5e58a', 'version': '0.6.0.dev'}
running build_ext
C:\Python34\python.exe ffi\build.py
Trying generator 'Visual Studio 12 2013'
-- The C compiler identification is MSVC 18.0.31101.0
-- The CXX compiler identification is MSVC 18.0.31101.0
-- Check for working C compiler using: Visual Studio 12 2013
-- Check for working C compiler using: Visual Studio 12 2013 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 12 2013
-- Check for working CXX compiler using: Visual Studio 12 2013 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/One/AppData/Local/Temp/tmphme6mk52
-- Found LLVM 3.6.1
-- Using LLVMConfig.cmake in: C:/LLVM/share/llvm/cmake
-- Configuring done
-- Generating done
-- Build files have been written to: E:/llvmlite-0.6.0.dev/ffi/build
Microsoft (R) Build Engine version 12.0.31101.0
[Microsoft .NET Framework, version 4.0.30319.34003]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 6/19/2015 12:15:13 PM.
Project "E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" (1) is building "E:\llvmlite-0.6.0.dev\ffi\build\ZERO_CHECK.vcxproj" (2) on node 1 (default targets).
InitializeBuildStatus:
  Creating "Win32\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  All outputs are up-to-date.
FinalizeBuildStatus:
  Deleting file "Win32\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild".
  Touching "Win32\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
Done Building Project "E:\llvmlite-0.6.0.dev\ffi\build\ZERO_CHECK.vcxproj" (default targets).

Project "E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" (1) is building "E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj" (3) on node 1 (default targets).
InitializeBuildStatus:
  Touching "llvmlite.dir\Release\llvmlite.tlog\unsuccessfulbuild".
CustomBuild:
  All outputs are up-to-date.
ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IC:\LLVM\include /nologo /W3 /WX- /O2 /Ob2 /Oy- /D WIN32 /D _WINDOWS /D NDEBUG /D __STDC_LIMIT_MACROS /D __STDC_CONSTANT_MACROS
   /D "CMAKE_INTDIR=\"Release\"" /D llvmlite_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /GR /Fo"llvmlite.dir\Release\\" /Fd"llvmlite.dir\Release\vc120.pdb" /G
  d /TP /analyze- /errorReport:queue "E:\llvmlite-0.6.0.dev\ffi\assembly.cpp" "E:\llvmlite-0.6.0.dev\ffi\bitcode.cpp" "E:\llvmlite-0.6.0.dev\ffi\core.cpp" "E:\llvmlite-0.6.0.dev\ffi\dylib.cpp" "E:\ll
  vmlite-0.6.0.dev\ffi\executionengine.cpp" "E:\llvmlite-0.6.0.dev\ffi\initfini.cpp" "E:\llvmlite-0.6.0.dev\ffi\linker.cpp" "E:\llvmlite-0.6.0.dev\ffi\module.cpp" "E:\llvmlite-0.6.0.dev\ffi\passmanag
  ers.cpp" "E:\llvmlite-0.6.0.dev\ffi\targets.cpp" "E:\llvmlite-0.6.0.dev\ffi\transforms.cpp" "E:\llvmlite-0.6.0.dev\ffi\value.cpp"
  assembly.cpp
C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throws
an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\LLVM\include\llvm/IR/Metadata.h(596) : see declaration of 'llvm::MDNode::operator new'
  bitcode.cpp
  core.cpp
E:\llvmlite-0.6.0.dev\ffi\core.cpp(8): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details. [E:\llvmlit
e-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\string.h(245) : see declaration of 'strdup'
  dylib.cpp
E:\llvmlite-0.6.0.dev\ffi\dylib.cpp(27): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details. [E:\llvml
ite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\string.h(245) : see declaration of 'strdup'
  executionengine.cpp
C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throws
an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\LLVM\include\llvm/IR/Metadata.h(596) : see declaration of 'llvm::MDNode::operator new'
E:\llvmlite-0.6.0.dev\ffi\executionengine.cpp(74): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details.
 [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\string.h(245) : see declaration of 'strdup'
C:\LLVM\include\llvm/ADT/IntrusiveRefCntPtr.h(180): warning C4800: 'llvm::sys::fs::detail::DirIterState *const ' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev
\ffi\build\llvmlite.vcxproj]
      C:\LLVM\include\llvm/ADT/IntrusiveRefCntPtr.h(180) : while compiling class template member function 'llvm::IntrusiveRefCntPtr<llvm::sys::fs::detail::DirIterState>::operator bool(void) const
  '
      C:\LLVM\include\llvm/Support/FileSystem.h(762) : see reference to function template instantiation 'llvm::IntrusiveRefCntPtr<llvm::sys::fs::detail::DirIterState>::operator bool(void) const'
  being compiled
      C:\LLVM\include\llvm/Support/FileSystem.h(732) : see reference to class template instantiation 'llvm::IntrusiveRefCntPtr<llvm::sys::fs::detail::DirIterState>' being compiled
  initfini.cpp
  linker.cpp
C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throws
an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\LLVM\include\llvm/IR/Metadata.h(596) : see declaration of 'llvm::MDNode::operator new'
  module.cpp
C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throws
an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
      C:\LLVM\include\llvm/IR/Metadata.h(596) : see declaration of 'llvm::MDNode::operator new'
  passmanagers.cpp
  targets.cpp
C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  transforms.cpp
E:\llvmlite-0.6.0.dev\ffi\transforms.cpp(117): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
E:\llvmlite-0.6.0.dev\ffi\transforms.cpp(133): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  value.cpp
  Generating Code...
Link:
  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:QUEUE /OUT:"E:\llvmlite-0.6.0.dev\ffi\build\Release\llvmlite.dll" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gd
  i32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib C:\LLVM\lib\libLLVMSupport.a C:\LLVM\lib\libLLVMTableGen.a C:\LLVM\lib\libLLVMCore.a C:\LLVM\lib\libLLVMIR
  Reader.a C:\LLVM\lib\libLLVMCodeGen.a C:\LLVM\lib\libLLVMSelectionDAG.a C:\LLVM\lib\libLLVMAsmPrinter.a C:\LLVM\lib\libLLVMBitReader.a C:\LLVM\lib\libLLVMBitWriter.a C:\LLVM\lib\libLLVMTransformUti
  ls.a C:\LLVM\lib\libLLVMInstrumentation.a C:\LLVM\lib\libLLVMInstCombine.a C:\LLVM\lib\libLLVMScalarOpts.a C:\LLVM\lib\libLLVMipo.a C:\LLVM\lib\libLLVMVectorize.a C:\LLVM\lib\libLLVMObjCARCOpts.a C
  :\LLVM\lib\libLLVMLinker.a C:\LLVM\lib\libLLVMAnalysis.a C:\LLVM\lib\libLLVMipa.a C:\LLVM\lib\libLLVMLTO.a C:\LLVM\lib\libLLVMMC.a C:\LLVM\lib\libLLVMMCParser.a C:\LLVM\lib\libLLVMMCDisassembler.a
  C:\LLVM\lib\libLLVMObject.a C:\LLVM\lib\libLLVMOption.a C:\LLVM\lib\libLLVMDebugInfo.a C:\LLVM\lib\libLLVMExecutionEngine.a C:\LLVM\lib\libLLVMInterpreter.a C:\LLVM\lib\libLLVMMCJIT.a C:\LLVM\lib\l
  ibLLVMRuntimeDyld.a C:\LLVM\lib\libLLVMTarget.a C:\LLVM\lib\libLLVMAArch64CodeGen.a C:\LLVM\lib\libLLVMAArch64Info.a C:\LLVM\lib\libLLVMAArch64AsmParser.a C:\LLVM\lib\libLLVMAArch64Disassembler.a C
  :\LLVM\lib\libLLVMAArch64AsmPrinter.a C:\LLVM\lib\libLLVMAArch64Desc.a C:\LLVM\lib\libLLVMAArch64Utils.a C:\LLVM\lib\libLLVMARMCodeGen.a C:\LLVM\lib\libLLVMARMInfo.a C:\LLVM\lib\libLLVMARMAsmParser
  .a C:\LLVM\lib\libLLVMARMDisassembler.a C:\LLVM\lib\libLLVMARMAsmPrinter.a C:\LLVM\lib\libLLVMARMDesc.a C:\LLVM\lib\libLLVMCppBackendCodeGen.a C:\LLVM\lib\libLLVMCppBackendInfo.a C:\LLVM\lib\libLLV
  MHexagonCodeGen.a C:\LLVM\lib\libLLVMHexagonInfo.a C:\LLVM\lib\libLLVMHexagonDesc.a C:\LLVM\lib\libLLVMHexagonDisassembler.a C:\LLVM\lib\libLLVMMipsCodeGen.a C:\LLVM\lib\libLLVMMipsAsmPrinter.a C:\
  LLVM\lib\libLLVMMipsDisassembler.a C:\LLVM\lib\libLLVMMipsInfo.a C:\LLVM\lib\libLLVMMipsDesc.a C:\LLVM\lib\libLLVMMipsAsmParser.a C:\LLVM\lib\libLLVMMSP430CodeGen.a C:\LLVM\lib\libLLVMMSP430AsmPrin
  ter.a C:\LLVM\lib\libLLVMMSP430Info.a C:\LLVM\lib\libLLVMMSP430Desc.a C:\LLVM\lib\libLLVMNVPTXCodeGen.a C:\LLVM\lib\libLLVMNVPTXInfo.a C:\LLVM\lib\libLLVMNVPTXAsmPrinter.a C:\LLVM\lib\libLLVMNVPTXD
  esc.a C:\LLVM\lib\libLLVMPowerPCCodeGen.a C:\LLVM\lib\libLLVMPowerPCAsmParser.a C:\LLVM\lib\libLLVMPowerPCDisassembler.a C:\LLVM\lib\libLLVMPowerPCAsmPrinter.a C:\LLVM\lib\libLLVMPowerPCInfo.a C:\L
  LVM\lib\libLLVMPowerPCDesc.a C:\LLVM\lib\libLLVMR600CodeGen.a C:\LLVM\lib\libLLVMR600AsmParser.a C:\LLVM\lib\libLLVMR600AsmPrinter.a C:\LLVM\lib\libLLVMR600Info.a C:\LLVM\lib\libLLVMR600Desc.a C:\L
  LVM\lib\libLLVMSparcCodeGen.a C:\LLVM\lib\libLLVMSparcInfo.a C:\LLVM\lib\libLLVMSparcDesc.a C:\LLVM\lib\libLLVMSparcAsmPrinter.a C:\LLVM\lib\libLLVMSparcAsmParser.a C:\LLVM\lib\libLLVMSparcDisassem
  bler.a C:\LLVM\lib\libLLVMSystemZCodeGen.a C:\LLVM\lib\libLLVMSystemZAsmParser.a C:\LLVM\lib\libLLVMSystemZDisassembler.a C:\LLVM\lib\libLLVMSystemZAsmPrinter.a C:\LLVM\lib\libLLVMSystemZInfo.a C:\
  LLVM\lib\libLLVMSystemZDesc.a C:\LLVM\lib\libLLVMX86CodeGen.a C:\LLVM\lib\libLLVMX86AsmParser.a C:\LLVM\lib\libLLVMX86Disassembler.a C:\LLVM\lib\libLLVMX86AsmPrinter.a C:\LLVM\lib\libLLVMX86Desc.a
  C:\LLVM\lib\libLLVMX86Info.a C:\LLVM\lib\libLLVMX86Utils.a C:\LLVM\lib\libLLVMXCoreCodeGen.a C:\LLVM\lib\libLLVMXCoreDisassembler.a C:\LLVM\lib\libLLVMXCoreAsmPrinter.a C:\LLVM\lib\libLLVMXCoreInfo
  .a C:\LLVM\lib\libLLVMXCoreDesc.a C:\LLVM\lib\libLLVMAsmParser.a C:\LLVM\lib\libLLVMLineEditor.a C:\LLVM\lib\libLLVMProfileData.a C:\LLVM\lib\libgtest.a C:\LLVM\lib\libgtest_main.a C:\LLVM\lib\libL
  TO.dll.a C:\LLVM\lib\libLLVMBitWriter.a C:\LLVM\lib\libLLVMObjCARCOpts.a C:\LLVM\lib\libLLVMLinker.a C:\LLVM\lib\libLLVMExecutionEngine.a C:\LLVM\lib\libLLVMRuntimeDyld.a C:\LLVM\lib\libLLVMAArch64
  AsmPrinter.a C:\LLVM\lib\libLLVMAArch64Info.a C:\LLVM\lib\libLLVMAArch64Utils.a C:\LLVM\lib\libLLVMARMInfo.a C:\LLVM\lib\libLLVMARMAsmPrinter.a C:\LLVM\lib\libLLVMHexagonDesc.a C:\LLVM\lib\libLLVMH
  exagonInfo.a C:\LLVM\lib\libLLVMMipsDesc.a C:\LLVM\lib\libLLVMMipsAsmPrinter.a C:\LLVM\lib\libLLVMMipsInfo.a C:\LLVM\lib\libLLVMMSP430AsmPrinter.a C:\LLVM\lib\libLLVMMSP430Info.a C:\LLVM\lib\libLLV
  MNVPTXInfo.a C:\LLVM\lib\libLLVMNVPTXAsmPrinter.a C:\LLVM\lib\libLLVMPowerPCAsmPrinter.a C:\LLVM\lib\libLLVMPowerPCInfo.a C:\LLVM\lib\libLLVMipo.a C:\LLVM\lib\libLLVMVectorize.a C:\LLVM\lib\libLLVM
  R600AsmPrinter.a C:\LLVM\lib\libLLVMR600Info.a C:\LLVM\lib\libLLVMSparcDesc.a C:\LLVM\lib\libLLVMSparcAsmPrinter.a C:\LLVM\lib\libLLVMSparcInfo.a C:\LLVM\lib\libLLVMSystemZAsmPrinter.a C:\LLVM\lib\
  libLLVMSystemZInfo.a C:\LLVM\lib\libLLVMX86CodeGen.a C:\LLVM\lib\libLLVMX86Desc.a C:\LLVM\lib\libLLVMX86AsmPrinter.a C:\LLVM\lib\libLLVMX86Utils.a C:\LLVM\lib\libLLVMX86Info.a C:\LLVM\lib\libLLVMSe
  lectionDAG.a C:\LLVM\lib\libLLVMAsmPrinter.a C:\LLVM\lib\libLLVMCodeGen.a C:\LLVM\lib\libLLVMScalarOpts.a C:\LLVM\lib\libLLVMInstCombine.a C:\LLVM\lib\libLLVMProfileData.a C:\LLVM\lib\libLLVMObject
  .a C:\LLVM\lib\libLLVMBitReader.a C:\LLVM\lib\libLLVMMCParser.a C:\LLVM\lib\libLLVMTransformUtils.a C:\LLVM\lib\libLLVMipa.a C:\LLVM\lib\libLLVMAnalysis.a C:\LLVM\lib\libLLVMTarget.a C:\LLVM\lib\li
  bLLVMCore.a C:\LLVM\lib\libLLVMXCoreAsmPrinter.a C:\LLVM\lib\libLLVMMCDisassembler.a C:\LLVM\lib\libLLVMMC.a C:\LLVM\lib\libLLVMXCoreInfo.a C:\LLVM\lib\libgtest.a C:\LLVM\lib\libLLVMSupport.a image
  hlp.lib psapi.lib shell32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"E:/llvmlite-0.6.0.dev/ffi/build/Release/llvmlite.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DY
  NAMICBASE /NXCOMPAT /IMPLIB:"E:/llvmlite-0.6.0.dev/ffi/build/Release/llvmlite.lib" /MACHINE:X86 /SAFESEH  /machine:X86 /DLL llvmlite.dir\Release\assembly.obj
  llvmlite.dir\Release\bitcode.obj
  llvmlite.dir\Release\core.obj
  llvmlite.dir\Release\initfini.obj
  llvmlite.dir\Release\module.obj
  llvmlite.dir\Release\value.obj
  llvmlite.dir\Release\executionengine.obj
  llvmlite.dir\Release\transforms.obj
  llvmlite.dir\Release\passmanagers.obj
  llvmlite.dir\Release\targets.obj
  llvmlite.dir\Release\dylib.obj
  llvmlite.dir\Release\linker.obj
libLLVMSupport.a(CommandLine.cpp.obj) : fatal error LNK1143: invalid or corrupt file: no symbol for COMDAT section 0xE3 [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
Done Building Project "E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj" (default targets) -- FAILED.

Done Building Project "E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" (default targets) -- FAILED.


Build FAILED.

"E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" (default target) (1) ->
"E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj" (default target) (3) ->
(ClCompile target) ->
  C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throw
s an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  E:\llvmlite-0.6.0.dev\ffi\core.cpp(8): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details. [E:\llvml
ite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  E:\llvmlite-0.6.0.dev\ffi\dylib.cpp(27): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for details. [E:\llv
mlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throw
s an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  E:\llvmlite-0.6.0.dev\ffi\executionengine.cpp(74): warning C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strdup. See online help for detail
s. [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/ADT/IntrusiveRefCntPtr.h(180): warning C4800: 'llvm::sys::fs::detail::DirIterState *const ' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.d
ev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throw
s an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Value.h(411): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(454): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Function.h(461): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/IR/Metadata.h(902): warning C4291: 'void *llvm::MDNode::operator new(size_t,unsigned int)' : no matching operator delete found; memory will not be freed if initialization throw
s an exception [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  C:\LLVM\include\llvm/ADT/APInt.h(1530): warning C4244: 'return' : conversion from 'const uint64_t' to 'unsigned int', possible loss of data [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  E:\llvmlite-0.6.0.dev\ffi\transforms.cpp(117): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]
  E:\llvmlite-0.6.0.dev\ffi\transforms.cpp(133): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]


"E:\llvmlite-0.6.0.dev\ffi\build\ALL_BUILD.vcxproj" (default target) (1) ->
"E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj" (default target) (3) ->
(Link target) ->
  libLLVMSupport.a(CommandLine.cpp.obj) : fatal error LNK1143: invalid or corrupt file: no symbol for COMDAT section 0xE3 [E:\llvmlite-0.6.0.dev\ffi\build\llvmlite.vcxproj]

    27 Warning(s)
    1 Error(s)

Time Elapsed 00:00:30.34
Traceback (most recent call last):
  File "ffi\build.py", line 112, in <module>
    main()
  File "ffi\build.py", line 102, in main
    main_win32()
  File "ffi\build.py", line 65, in main_win32
    subprocess.check_call(['cmake', '--build', build_dir, '--config', config])
  File "C:\Python34\lib\subprocess.py", line 561, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '--build', 'E:\\llvmlite-0.6.0.dev\\ffi\\build', '--config', 'Release']' returned non-zero exit status 1
error: command 'C:\\Python34\\python.exe' failed with exit status 1

E:\llvmlite-0.6.0.dev>

I don't know anything that can cause this error , please help

Thanks.

Build problem with llvm 3.6

I guess 3.6 is not supported anyways, but would file this FYI.

Thanks

yfeng1@edison07:~/source/llvmlite> python setup.py build
running build
got version from VCS {'version': '0.2.2-1-gbcb15be', 'full': 'bcb15bee8c28e4f4e65a8d4c636af9d97f8d1e8c'}
running build_ext
/usr/common/usg/python/2.7.5/bin/python ffi/build.py
LLVM version... 3.6.0svn
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
g++ -static-libstdc++ -shared -flto `llvm-config --cxxflags` -fno-rtti assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config --ldflags` -Wl,--exclude-libs=ALL `llvm-config --system-libs --libs all`
assembly.cpp: In function 'LLVMOpaqueModule* LLVMPY_ParseAssembly(LLVMContextRef, const char*, const char**)':
assembly.cpp:25:70: error: 'ParseAssemblyString' was not declared in this scope
     Module *m = ParseAssemblyString(ir, NULL, error, *unwrap(context));
                                                                      ^
executionengine.cpp: In function 'void LLVMPY_LinkInJIT()':
executionengine.cpp:11:19: error: 'LLVMLinkInJIT' was not declared in this scope
     LLVMLinkInJIT();
                   ^
executionengine.cpp: In function 'LLVMOpaqueExecutionEngine* create_execution_engine(LLVMModuleRef, LLVMTargetMachineRef, char**, bool)':
executionengine.cpp:70:43: error: no matching function for call to 'llvm::EngineBuilder::EngineBuilder(llvm::Module*)'
     llvm::EngineBuilder eb(llvm::unwrap(M));
                                           ^
executionengine.cpp:70:43: note: candidate is:
In file included from executionengine.cpp:4:0:
/global/common/edison/graphics/llvm/3.6/static/include/llvm/ExecutionEngine/ExecutionEngine.h:510:3: note: llvm::EngineBuilder::EngineBuilder(std::unique_ptr<llvm::Module>)
   EngineBuilder(std::unique_ptr<Module> M);
   ^
/global/common/edison/graphics/llvm/3.6/static/include/llvm/ExecutionEngine/ExecutionEngine.h:510:3: note:   no known conversion for argument 1 from 'llvm::Module*' to 'std::unique_ptr<llvm::Module>'
executionengine.cpp:74:8: error: 'class llvm::EngineBuilder' has no member named 'setUseMCJIT'
     eb.setUseMCJIT(useMCJIT);
        ^
linker.cpp: In function 'int LLVMPY_LinkModules(LLVMModuleRef, LLVMModuleRef, unsigned int, const char**)':
linker.cpp:14:51: error: no matching function for call to 'llvm::Linker::LinkModules(llvm::Module*, llvm::Module*, unsigned int&, std::string*)'
                                       &errorstring);
                                                   ^
linker.cpp:14:51: note: candidates are:
In file included from linker.cpp:3:0:
/global/common/edison/graphics/llvm/3.6/static/include/llvm/Linker/Linker.h:77:15: note: static bool llvm::Linker::LinkModules(llvm::Module*, llvm::Module*, llvm::Linker::DiagnosticHandlerFunction)
   static bool LinkModules(Module *Dest, Module *Src,
               ^
/global/common/edison/graphics/llvm/3.6/static/include/llvm/Linker/Linker.h:77:15: note:   candidate expects 3 arguments, 4 provided
/global/common/edison/graphics/llvm/3.6/static/include/llvm/Linker/Linker.h:80:15: note: static bool llvm::Linker::LinkModules(llvm::Module*, llvm::Module*)
   static bool LinkModules(Module *Dest, Module *Src);
               ^
/global/common/edison/graphics/llvm/3.6/static/include/llvm/Linker/Linker.h:80:15: note:   candidate expects 2 arguments, 4 provided
make: *** [libllvmlite.so] Error 1
Traceback (most recent call last):
  File "ffi/build.py", line 112, in <module>
    main()
  File "ffi/build.py", line 104, in main
    main_posix('linux', '.so')
  File "ffi/build.py", line 96, in main_posix
    subprocess.check_call(['make', '-f', makefile])
  File "/usr/common/usg/python/2.7.5/lib/python2.7/subprocess.py", line 542, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
error: command '/usr/common/usg/python/2.7.5/bin/python' failed with exit status 1

Add debugging information

Apparently, MCJIT would allow us to expose debug information so that JITted functions aren't seen as opaque under supported debuggers (such as gdb).
Unfortunately, since we aren't using the C++ API for building module code, it seems we'll have to manually emit metadata in some complicated format. But at least it should be possible.

Reference:

Test failure under Windows (regression)

Note: the "LLVM ERROR: Incompatible object format!" happens in the failing test.

[34] Z:\llvmlite>python runtests.py
.............................LLVM ERROR: Incompatible object format!
E....................................................................
======================================================================
ERROR: test_run_code (llvmlite.tests.test_binding.TestMCJit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Z:\llvmlite\llvmlite\tests\test_binding.py", line 219, in test_run_code
    ee.finalize_object()
  File "Z:\llvmlite\llvmlite\binding\executionengine.py", line 79, in finalize_o
bject
    ffi.lib.LLVMPY_FinalizeObject(self)
OSError: exception: access violation writing 0x0000000000000024

----------------------------------------------------------------------
Ran 98 tests in 0.281s

llvm-3.6.1 ubunut14.10 undefined symbol: _ZNSt14error_categoryC2Ev

Download prebuild llvm from http://llvm.org/releases/download.html#3.6.1

/Git/llvmlite$ LLVM_CONFIG=/home/ikfb/bin/clang+llvm-3.6.1-x86_64-linux-gnu/bin/llvm-config python3 setup.py build
/usr/local/lib/python3.4/dist-packages/setuptools/dist.py:283: UserWarning: The version specified requires normalization, consider using '0.7.0.dev0' instead of '0.7.0.dev'.
self.metadata.version,
running build
got version from VCS {'full': 'f97db81e0bdf0748aa52ed8080a71cb4a73e560f', 'version': '0.7.0.dev'}
running build_ext
/usr/bin/python3 ffi/build.py
LLVM version... 3.6.1
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
g++ -static-libstdc++ -shared -flto /home/ikfb/bin/clang+llvm-3.6.1-x86_64-linux-gnu/bin/llvm-config --cxxflags -fno-rtti -g assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto /home/ikfb/bin/clang+llvm-3.6.1-x86_64-linux-gnu/bin/llvm-config --ldflags -Wl,--exclude-libs=ALL /home/ikfb/bin/clang+llvm-3.6.1-x86_64-linux-gnu/bin/llvm-config --system-libs --libs all
running build_py
creating build
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/llvmlite
copying llvmlite/utils.py -> build/lib.linux-x86_64-3.4/llvmlite
copying llvmlite/six.py -> build/lib.linux-x86_64-3.4/llvmlite
copying llvmlite/init.py -> build/lib.linux-x86_64-3.4/llvmlite
copying llvmlite/_version.py -> build/lib.linux-x86_64-3.4/llvmlite
creating build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/executionengine.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/init.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/dylib.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/module.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/initfini.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/value.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/targets.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/ffi.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/linker.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/transforms.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/options.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/passmanagers.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
copying llvmlite/binding/common.py -> build/lib.linux-x86_64-3.4/llvmlite/binding
creating build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/init.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/module.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/_utils.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/builder.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/transforms.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/instructions.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/context.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/types.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
copying llvmlite/ir/values.py -> build/lib.linux-x86_64-3.4/llvmlite/ir
creating build/lib.linux-x86_64-3.4/llvmlite/llvmpy
copying llvmlite/llvmpy/init.py -> build/lib.linux-x86_64-3.4/llvmlite/llvmpy
copying llvmlite/llvmpy/avx_support.py -> build/lib.linux-x86_64-3.4/llvmlite/llvmpy
copying llvmlite/llvmpy/ee.py -> build/lib.linux-x86_64-3.4/llvmlite/llvmpy
copying llvmlite/llvmpy/passes.py -> build/lib.linux-x86_64-3.4/llvmlite/llvmpy
copying llvmlite/llvmpy/core.py -> build/lib.linux-x86_64-3.4/llvmlite/llvmpy
creating build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/test_binding.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/init.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/customize.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/test_ir.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/test_valuerepr.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/tests/main.py -> build/lib.linux-x86_64-3.4/llvmlite/tests
copying llvmlite/binding/libllvmlite.so -> build/lib.linux-x86_64-3.4/llvmlite/binding
UPDATING build/lib.linux-x86_64-3.4/llvmlite/_version.py
ikfb@ikfb:
/Git/llvmlite$ ls^C
ikfb@ikfb:~/Git/llvmlite$ python3 -m nose
EEEE....
======================================================================
ERROR: llvmlite.tests.test_binding (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3.4/unittest/case.py", line 58, in testPartExecutor
yield
File "/usr/lib/python3.4/unittest/case.py", line 577, in run
testMethod()
File "/usr/lib/python3.4/unittest/loader.py", line 32, in testFailure
raise exception
ImportError: Failed to import test module: llvmlite.tests.test_binding
Traceback (most recent call last):
File "/usr/lib/python3.4/unittest/loader.py", line 312, in _find_tests
module = self._get_module_from_name(name)
File "/usr/lib/python3.4/unittest/loader.py", line 290, in _get_module_from_name
import(name)
File "/home/ikfb/Git/llvmlite/llvmlite/tests/test_binding.py", line 13, in
from llvmlite import binding as llvm
File "/home/ikfb/Git/llvmlite/llvmlite/binding/init.py", line 6, in
from .dylib import *
File "/home/ikfb/Git/llvmlite/llvmlite/binding/dylib.py", line 4, in
from . import ffi
File "/home/ikfb/Git/llvmlite/llvmlite/binding/ffi.py", line 36, in
lib = ctypes.CDLL(os.path.join(_lib_dir, get_library_name()))
File "/usr/lib/python3.4/ctypes/init.py", line 351, in init
self._handle = _dlopen(self._name, mode)
OSError: /home/ikfb/Git/llvmlite/llvmlite/binding/libllvmlite.so: undefined symbol: _ZNSt14error_categoryC2Ev

Update PyPi Repository?

Now that the error: option --single-version-externally-managed not recognized bug has been patched, I think the version on PyPi should be updated, for the sake of all the projects that depend on llvmlite.

Query ir.Module for function or global

LLVM's Module class has getFunction() and getGlobalVariable() for name lookup.

I was looking for something similar in ir.Module in llvmlite. I see the globals attribute, but I'm not sure whether it's officially part of the public API of the class. Would it be worthwhile to expose accessor methods? Or can I assume that any non _ prepended attribute in ir classes is public?

Build problem

as I run this command;

sudo LLVM_CONFIG=/usr/bin/llvm-config-3.5 python setup.py build

I get;
...
executionengine.cpp: In function ‘LLVMOpaqueExecutionEngine* create_execution_engine(LLVMModuleRef, LLVMTargetMachineRef, char**, bool)’:
executionengine.cpp:68:33: error: ‘nullptr’ was not declared in this scope
LLVMExecutionEngineRef ee = nullptr;
^
linker.cpp:3:32: fatal error: llvm/Linker/Linker.h: No such file or directory
#include "llvm/Linker/Linker.h"
...

I installed libedit as well but still the error persists

Simple way to use non-native targets for code generation

At this time, llvmlite only exports LLVMPY_InitializeNativeTarget. The code for linking in initialization of other targets is commented out in initfini.cpp because that would make the size of the build llvmlite .so bigger.

There should be a better/simpler way to add targets that doesn't require fudging with the source of llvmlite. In LLVM itself it's usually handled on the configuration/build level.

In other words, it would be nice to configure which targets to build while building llvmlite (as parameters to the build script). The usual LLVM way requires rebuilding LLVM with a different configuration, which may not be suitable for llvmlite, as llvmlite expects a built LLVM, which in its installed form frequently includes all targets.

In particular, this would be useful for generating code for GPU targets (NVPTX target, for example).

Building on Debian 7

I cannot manage to compile llvmlite on Debian 7. I have both the llvm and llvm-dev packages installed, and I have also tried with apt-get build-dep llvm, just in case. However, I keep getting this:

vterron@iaa:~/code/llvmlite$ python setup.py build
running build
got version from VCS {'version': '0.1.0-30-ga4b787b', 'full': 'a4b787bdd31809cee091a9454774f6f216f5d691'}
running build_ext
/usr/bin/python ffi/build.py
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
g++ -static-libstdc++ -shared -flto `llvm-config --cxxflags` -fno-rtti assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config --ldflags` -Wl,--exclude-libs=ALL `llvm-config --system-libs --libs all`
Usage: llvm-config <OPTION>... [<COMPONENT>...]

Get various configuration information needed to compile programs which use
LLVM.  Typically called from 'configure' scripts.  Examples:
  llvm-config --cxxflags
  llvm-config --ldflags
  llvm-config --libs engine bcreader scalaropts

Options:
  --version          Print LLVM version.
  --prefix           Print the installation prefix.
  --src-root         Print the source root LLVM was built from.
  --obj-root         Print the object root used to build LLVM.
  --bindir           Directory containing LLVM executables.
  --includedir       Directory containing LLVM headers.
  --libdir           Directory containing LLVM libraries.
  --cppflags         C preprocessor flags for files that include LLVM headers.
  --cflags           C compiler flags for files that include LLVM headers.
  --cxxflags         C++ compiler flags for files that include LLVM headers.
  --ldflags          Print Linker flags.
  --libs             Libraries needed to link against LLVM components.
  --libnames         Bare library names for in-tree builds.
  --libfiles         Fully qualified library filenames for makefile depends.
  --components       List of all possible components.
  --targets-built    List of all targets currently built.
  --host-target      Target triple used to configure LLVM.
  --build-mode       Print build mode of LLVM tree (e.g. Debug or Release).
Typical components:
  all                All LLVM libraries (default).
  backend            Either a native backend or the C backend.
  engine             Either a native JIT or a bitcode interpreter.
assembly.cpp:1:33: fatal error: llvm/IR/LLVMContext.h: No such file or directory
compilation terminated.
bitcode.cpp:2:28: fatal error: llvm/IR/Module.h: No such file or directory
compilation terminated.
core.cpp: In function ‘void LLVMPY_SetCommandLine(const char*, const char*)’:
core.cpp:35:46: error: invalid conversion from ‘const char**’ to ‘char**’ [-fpermissive]
In file included from core.cpp:2:0:
/usr/lib/llvm-3.0/include/llvm/Support/CommandLine.h:43:6: error:   initializing argument 2 of ‘void llvm::cl::ParseCommandLineOptions(int, char**, const char*, bool)’ [-fpermissive]
initfini.cpp: In function ‘void LLVMPY_InitializeObjCARCOpts()’:
initfini.cpp:17:1: error: ‘LLVMInitializeObjCARCOpts’ was not declared in this scope
initfini.cpp: In function ‘void LLVMPY_InitializeVectorization()’:
initfini.cpp:18:1: error: ‘LLVMInitializeVectorization’ was not declared in this scope
initfini.cpp: In function ‘void LLVMPY_Shutdown()’:
initfini.cpp:31:18: error: ‘LLVMShutdown’ was not declared in this scope
initfini.cpp: In function ‘void LLVMPY_InitializeNativeAsmParser()’:
initfini.cpp:44:1: error: ‘LLVMInitializeNativeAsmParser’ was not declared in this scope
initfini.cpp: In function ‘void LLVMPY_InitializeNativeAsmPrinter()’:
initfini.cpp:45:1: error: ‘LLVMInitializeNativeAsmPrinter’ was not declared in this scope
module.cpp:5:28: fatal error: llvm/IR/Module.h: No such file or directory
compilation terminated.
value.cpp:4:28: fatal error: llvm/IR/Module.h: No such file or directory
compilation terminated.
executionengine.cpp:3:28: fatal error: llvm/IR/Module.h: No such file or directory
compilation terminated.
transforms.cpp: In function ‘llvm::PassManagerBuilder* llvm::unwrap(LLVMPassManagerBuilderRef)’:
transforms.cpp:10:32: error: redefinition of ‘llvm::PassManagerBuilder* llvm::unwrap(LLVMPassManagerBuilderRef)’
In file included from transforms.cpp:2:0:
/usr/lib/llvm-3.0/include/llvm-c/Transforms/PassManagerBuilder.h:80:30: error: ‘llvm::PassManagerBuilder* llvm::unwrap(LLVMPassManagerBuilderRef)’ previously defined here
transforms.cpp: In function ‘LLVMOpaquePassManagerBuilder* llvm::wrap(llvm::PassManagerBuilder*)’:
transforms.cpp:14:38: error: redefinition of ‘LLVMOpaquePassManagerBuilder* llvm::wrap(llvm::PassManagerBuilder*)’
In file included from transforms.cpp:2:0:
/usr/lib/llvm-3.0/include/llvm-c/Transforms/PassManagerBuilder.h:84:36: error: ‘LLVMOpaquePassManagerBuilder* llvm::wrap(llvm::PassManagerBuilder*)’ previously defined here
transforms.cpp: In function ‘void LLVMPY_PassManagerBuilderSetLoopVectorize(LLVMPassManagerBuilderRef, int)’:
transforms.cpp:117:10: error: ‘class llvm::PassManagerBuilder’ has no member named ‘LoopVectorize’
transforms.cpp: In function ‘int LLVMPY_PassManagerBuilderGetLoopVectorize(LLVMPassManagerBuilderRef)’:
transforms.cpp:124:17: error: ‘class llvm::PassManagerBuilder’ has no member named ‘LoopVectorize’
transforms.cpp: In function ‘void LLVMPY_PassManagerBuilderSetSLPVectorize(LLVMPassManagerBuilderRef, int)’:
transforms.cpp:133:10: error: ‘class llvm::PassManagerBuilder’ has no member named ‘SLPVectorize’
transforms.cpp: In function ‘int LLVMPY_PassManagerBuilderGetSLPVectorize(LLVMPassManagerBuilderRef)’:
transforms.cpp:140:17: error: ‘class llvm::PassManagerBuilder’ has no member named ‘SLPVectorize’
targets.cpp:4:34: fatal error: llvm-c/TargetMachine.h: No such file or directory
compilation terminated.
linker.cpp:2:28: fatal error: llvm/IR/Module.h: No such file or directory
compilation terminated.
make: *** [libllvmlite.so] Error 1
Traceback (most recent call last):
  File "ffi/build.py", line 102, in <module>
    main()
  File "ffi/build.py", line 94, in main
    main_posix('linux', '.so')
  File "ffi/build.py", line 86, in main_posix
    subprocess.check_call(['make', '-f', makefile])
  File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
error: command '/usr/bin/python' failed with exit status 1

llvm-config failed executing

when I tried to install the llvmlite via setup.py, it showed

running install
running build
got version from VCS {'version': '0.4.0', 'full': '8a681a2726ae79b640b4147b13cdd5e309a5c74f'}
running build_ext
/usr/local/opt/python/bin/python2.7 ffi/build.py
LLVM version... Traceback (most recent call last):
  File "ffi/build.py", line 112, in <module>
    main()
  File "ffi/build.py", line 106, in main
    main_posix('osx', '.dylib')
  File "ffi/build.py", line 93, in main_posix
    "to the path for llvm-config" % (llvm_config,))
RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for llvm-config
error: command '/usr/local/opt/python/bin/python2.7' failed with exit status 1

And I saw from the readme file that If your LLVM is installed in a non-standard location, first point the LLVM_CONFIG environment variable to the path of the corresponding llvm-config executable. So how can I find the location of LLVM on my computer? If I find its llvm-config executable, then I should define "LLVM_CONFIG" as the path to the exe, am I right? I'm using OS X Yosemite. Thank you.

llvmlite can't find dylib

pip reports llvmlite installed successfully. It imports. However, numba won't import: it can't find llvmlite/binding/libllvmlite.dylib. The same thing occurs when trying to run the tests for llvmlite.

But, there in site-packages I find the dylib: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/llvmlite/binding/libllvmlite.dylib

If it is not supposed to be at that location, then where should it be?

And where is Python looking for it since it is not finding it in site-packages?

And, no, I am not going to use conda or Anaconda Python. If it can't work with a standard Python installation, then it must not be compatible with Python from the Python Software Foundation, the authoritative source. An alternative install of Python should not be necessary.

ImportError: No module named enum on python 2.7

I installed llvmlite in a virtual environment with

pip install -e git+https://github.com/numba/llvmlite.git#egg=llvmlite

But then an import needed by numba fails:

$ python
Python 2.7.8 (default, Sep 24 2014, 18:26:21) 
[GCC 4.9.1 20140903 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import llvmlite.binding
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/emo/workspaces/play/ir/virtual/src/llvmlite/llvmlite/binding/__init__.py", line 7, in <module>
    from .executionengine import *
  File "/home/emo/workspaces/play/ir/virtual/src/llvmlite/llvmlite/binding/executionengine.py", line 3, in <module>
    from . import ffi, targets
  File "/home/emo/workspaces/play/ir/virtual/src/llvmlite/llvmlite/binding/targets.py", line 9, in <module>
    from .module import parse_assembly
  File "/home/emo/workspaces/play/ir/virtual/src/llvmlite/llvmlite/binding/module.py", line 8, in <module>
    from .value import ValueRef
  File "/home/emo/workspaces/play/ir/virtual/src/llvmlite/llvmlite/binding/value.py", line 3, in <module>
    import enum
ImportError: No module named enum

llvm linker command failed - _File format not recognized_

Can't build llvmlite. Linker failed: File format not recognized
Platform: LInux 3.16.7, OpenSUSE 13.2, gcc 4.8.3, llvm 3.5
Using CXX=clang++ (with g++ v4.8.3 the build fails earlier: g++: error: unrecognized command line option ‘-Wcovered-switch-default’)

running build
got version from file /home/robert/Downloads/llvmlite-0.4.0/llvmlite/_version.py {'version': '0.4.0', 'full': '8a681a2726ae79b640b4147b13cdd5e309a5c74f'}
running build_ext
/usr/bin/python ffi/build.py
LLVM version... 3.5.0svn
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
clang++ -static-libstdc++ -shared -flto `llvm-config --cxxflags` -fno-rtti assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config --ldflags` -Wl,--exclude-libs=ALL `llvm-config --system-libs --libs all`
/tmp/assembly-bab5e8.o: file not recognized: File format not recognized
clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile.linux:19: recipe for target 'libllvmlite.so' failed
make: *** [libllvmlite.so] Error 1
Traceback (most recent call last):
  File "ffi/build.py", line 112, in <module>
    main()
  File "ffi/build.py", line 104, in main
    main_posix('linux', '.so')
  File "ffi/build.py", line 96, in main_posix
    subprocess.check_call(['make', '-f', makefile])
  File "/usr/lib64/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
error: command '/usr/bin/python' failed with exit status 1

Install on Ubuntu 14.04

I get this error when trying to install llvmlite on Ubuntu 14.04 LTS:

running build
got version from VCS {'version': '0.4.0+50.gdb2256a', 'full': 'db2256a17baaf23ba470aee12c99d204206b96d3'}
running build_ext
/usr/bin/python ffi/build.py
LLVM version... 3.5.0
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
g++ -static-libstdc++ -shared -flto `llvm-config --cxxflags` -fno-rtti assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config --ldflags` -Wl,--exclude-libs=ALL `llvm-config --system-libs --libs all`
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
make: *** [libllvmlite.so] Error 1
Traceback (most recent call last):
File "ffi/build.py", line 112, in <module>
    main()
  File "ffi/build.py", line 104, in main
    main_posix('linux', '.so')
  File "ffi/build.py", line 96, in main_posix
    subprocess.check_call(['make', '-f', makefile])
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-f', 'Makefile.linux']' returned non-zero exit status 2
error: command '/usr/bin/python' failed with exit status 1

I know about issue 30, 32 and 27 .

I'm trying the method described in this post i.e. downloading the binaries but no luck.

To be clear, I have libedit-dev, llvm-3.5-dev, enum34 installed and I'm using python 2.7.6 and getting nowhere. Help appreciated.

Add bitcode marshalling

llvmpy has Module.from_bitcode() and Module.to_bitcode(). It may be nice to have something equivalent (even though it doesn't need to be the same APIs).

"Extra" dependency

Calling python setup.py install on the v0.2.1 tag version (9f60cd1), I've got the message (and some "cascading" error messages afterwards):

/usr/bin/ld: cannot find -ledit

That appears because the llvm-config --system-libs --libs all included that -ledit. That might be an Ubuntu 14.10 (utopic) LLVM packaging issue, but I'm not sure whether llvm-3.5-dev should have libedit as dependency. Anyway, including in the README that [some] people should install libedit-dev would help at least as a workaround.

access violation under Windows

[34] Z:\llvmlite>python runtests.py
.................E...........E.....................................
======================================================================
ERROR: test_target_data (llvmlite.tests.test_binding.TestLegacyJit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Z:\llvmlite\llvmlite\tests\test_binding.py", line 281, in test_target_da
ta
    str(td)
  File "Z:\llvmlite\llvmlite\binding\targets.py", line 22, in __str__
    ffi.lib.LLVMPY_CopyStringRepOfTargetData(self, out)
OSError: exception: access violation reading 0x00000000000BB080

======================================================================
ERROR: test_target_data (llvmlite.tests.test_binding.TestMCJit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Z:\llvmlite\llvmlite\tests\test_binding.py", line 281, in test_target_da
ta
    str(td)
  File "Z:\llvmlite\llvmlite\binding\targets.py", line 22, in __str__
    ffi.lib.LLVMPY_CopyStringRepOfTargetData(self, out)
OSError: exception: access violation reading 0x00000000000BB080

----------------------------------------------------------------------
Ran 67 tests in 0.234s

FAILED (errors=2)

Warnings at shutdown

When some objects are GCed at interpreter shutdown, we can get the following warnings:

Exception AttributeError: AttributeError("'NoneType' object has no attribute 'lib'",) in <bound method ModuleRef.__del__ of <llvmlite.binding.module.ModuleRef object at 0x7f3a0ab2a690>> ignored

Exception AttributeError: AttributeError("'NoneType' object has no attribute 'lib'",) in <bound method ModuleRef.__del__ of <llvmlite.binding.module.ModuleRef object at 0x7f3a0b0847d0>> ignored

Expose LLVM version

It would be useful to expose the LLVM version somehow (perhaps as an attribute).

OS X with homebrew llvm -- pip install fails

When I try to install the latest llvmlite 0.6.0 with homebrew llvm 3.6.1, after setting LLVM_CONFIG=/usr/local/Cellar/llvm/3.6.1/bin/llvm-config I get the following error:

    initfini.cpp:9:10: fatal error: 'llvm/Config/config.h' file not found
    #include "llvm/Config/config.h"

It appears that /usr/local/Cellar/llvm/3.6.1/include/llvm/Config/llvm-config.h exists, but not config.h. This can be fixed with a softlink, but it is probably an error either in the homebrew installation or the initfini.cpp file. I have also reported a version of this error to the homebrew repo.

Better detect and diagnose llvm-config

Some users seem to have trouble building and the messages are not always informative. The build script could detect whether llvm-config is found on the path, and has the right version ("llvm-config --version"). Also, some distros (e.g. Ubuntu) also provide "llvm-config-3.5", so we could try to fall back on that.

0.2.1 not tagged.

Pip suggest that a version 0.2.1 is released but it does not seem to be tagged here

llvm-related build errors on OSX

With LLVM v3.6.2 installed via Homebrew (default options, --with-clang --with-python --with-rtti) and latest llvmlite from git:

$ which clang++
/usr/local/bin/clang++

$ clang++ --version
clang version 3.6.2 (tags/RELEASE_362/final)
Target: x86_64-apple-darwin14.4.0
Thread model: posix

$ echo $LLVM_CONFIG
/usr/local/opt/llvm/bin/llvm-config

$ cd ffi

$ make -f Makefile.osx
MACOSX_DEPLOYMENT_TARGET=10.7 clang++ -std=c++11 -stdlib=libc++ -dynamiclib `/usr/local/opt/llvm/bin/llvm-config --cxxflags` assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.dylib `/usr/local/opt/llvm/bin/llvm-config --ldflags` `/usr/local/opt/llvm/bin/llvm-config --system-libs --libs all`
Undefined symbols for architecture x86_64:
  "std::terminate()", referenced from:
      ___clang_call_terminate in assembly-4f17ef.o
      ___clang_call_terminate in executionengine-aaf4ed.o
      ___clang_call_terminate in targets-724292.o
      ___clang_call_terminate in dylib-64e9d1.o
      ___clang_call_terminate in linker-ec6d13.o
ld: symbol(s) not found for architecture x86_64
clang-3.6: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [all] Error 1

This looks like like a libc++/libstdc++ issue if I use LLVM <= 3.6.2... Is there anything specific about how LLVM has to be installed or anything magical environment variables to be configured for it to work?

Investigate new LLVM pass manager API

Currently, we go through the LLVM C API which instantiates "legacy" pass managers, e.g.
http://llvm.org/docs/doxygen/html/classllvm_1_1legacy_1_1FunctionPassManager.html

We may want to invoke a C++ API directly instead, in order to get new pass managers, as in
http://llvm.org/docs/doxygen/html/classllvm_1_1FunctionPassManager.html

The changes seem to be covered in:

OSError on in test_binding and test_ir

I stumbled over this issue when recently updating numba. For llvmlite 0.5.0 and 0.5.1 I get the following error when running the test suite. This error is also raised, whenever I try to import numba. There already was a bugreport against numba for this ( numba/numba#1150 ), but unfortunately it seems to be a bit lost.

This is the test log:

======================================================================
ERROR: llvmlite.tests.test_binding (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: llvmlite.tests.test_binding
Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests
    module = self._get_module_from_name(name)
  File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
    __import__(name)
  File "/home/michael/workspace/llvmlite/llvmlite/tests/test_binding.py", line 12, in <module>
    from llvmlite import binding as llvm
  File "/home/michael/workspace/llvmlite/llvmlite/binding/__init__.py", line 6, in <module>
    from .dylib import *
  File "/home/michael/workspace/llvmlite/llvmlite/binding/dylib.py", line 4, in <module>
    from . import ffi
  File "/home/michael/workspace/llvmlite/llvmlite/binding/ffi.py", line 36, in <module>
    lib = ctypes.CDLL(os.path.join(_lib_dir, get_library_name()))
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/michael/workspace/llvmlite/llvmlite/binding/libllvmlite.so: undefined symbol: _ZSt24__throw_out_of_range_fmtPKcz


======================================================================
ERROR: llvmlite.tests.test_ir (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: llvmlite.tests.test_ir
Traceback (most recent call last):
  File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests
    module = self._get_module_from_name(name)
  File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
    __import__(name)
  File "/home/michael/workspace/llvmlite/llvmlite/tests/test_ir.py", line 16, in <module>
    from llvmlite import binding as llvm
  File "/home/michael/workspace/llvmlite/llvmlite/binding/__init__.py", line 6, in <module>
    from .dylib import *
  File "/home/michael/workspace/llvmlite/llvmlite/binding/dylib.py", line 4, in <module>
    from . import ffi
  File "/home/michael/workspace/llvmlite/llvmlite/binding/ffi.py", line 36, in <module>
    lib = ctypes.CDLL(os.path.join(_lib_dir, get_library_name()))
  File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/michael/workspace/llvmlite/llvmlite/binding/libllvmlite.so: undefined symbol: _ZSt24__throw_out_of_range_fmtPKcz
llc --version
LLVM (http://llvm.org/):
  LLVM version 3.5.0

  Optimized build.
  Built Oct  6 2014 (05:33:01).
  Default target: x86_64-pc-linux-gnu
  Host CPU: x86-64

  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_be - AArch64 (big endian)
    arm        - ARM
    arm64      - AArch64 (little endian)
    arm64_be   - AArch64 (big endian)
    armeb      - ARM (big endian)
    cpp        - C++ backend
    hexagon    - Hexagon
    mips       - Mips
    mips64     - Mips64 [experimental]
    mips64el   - Mips64el [experimental]
    mipsel     - Mipsel
    msp430     - MSP430 [experimental]
    nvptx      - NVIDIA PTX 32-bit
    nvptx64    - NVIDIA PTX 64-bit
    ppc32      - PowerPC 32
    ppc64      - PowerPC 64
    ppc64le    - PowerPC 64 LE
    r600       - AMD GPUs HD2XXX-HD6XXX
    sparc      - Sparc
    sparcv9    - Sparc V9
    systemz    - SystemZ
    thumb      - Thumb
    thumbeb    - Thumb (big endian)
    x86        - 32-bit X86: Pentium-Pro and above
    x86-64     - 64-bit X86: EM64T and AMD64
    xcore      - XCore

Any help would be greatly appreciated. Reinstalling llvmlite and numba was of no help, as well as switching back to 0.4.0. If I can help with providing any further information, please let me know.

llvm-config not recognized while installing

I am trying to install under Ubuntu 14.04 with llvm-3.5 installed but after executing python install setup.py these are the errors that I get:

running build_ext
/usr/bin/python ffi/build.py
# static-libstdc++ avoids runtime dependencies on a
# particular libstdc++ version.
g++ -static-libstdc++ -shared -flto `llvm-config --cxxflags` -fno-rtti assembly.cpp bitcode.cpp core.cpp initfini.cpp module.cpp value.cpp executionengine.cpp transforms.cpp passmanagers.cpp targets.cpp dylib.cpp linker.cpp -o libllvmlite.so -flto `llvm-config --ldflags` -Wl,--exclude-libs=ALL `llvm-config  --system-libs --libs all`
executionengine.cpp: In function ‘LLVMOpaqueExecutionEngine*   create_execution_engine(LLVMModuleRef, LLVMTargetMachineRef, char**, bool)’:
executionengine.cpp:68:33: error: ‘nullptr’ was not declared in this scope
 LLVMExecutionEngineRef ee = nullptr;
                             ^
linker.cpp:3:32: fatal error: llvm/Linker/Linker.h: No such file or directory
#include "llvm/Linker/Linker.h"
                            ^
compilation terminated.
make: *** [libllvmlite.so] Error 1

I have set a symbolic link to my llvm-config-3.5 binary

Module.global_variables unexpected behavior

ir.Module has two accessors functions and global_variables that show non-symmetrical behavior. functions returns all functions in the module. But global_variables returns both functions and global variables. In LLVM's value hierarchy, a Function is not a GlobalVariable (both are GlobalValue though). So I'd expect global_variables to return only the variables (or be renamed to global_values)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.