mirror of
https://github.com/apache/impala.git
synced 2026-01-02 12:00:33 -05:00
This patch depends on the llvm-3.3-no-asserts-p1 build being added to the native toolchain. I tested by building with my local modified toolchain. A previous commit also disabled automatic bootstrapping of the toolchain on build machines, so to download the new module automatically, I changed the build scripts to always bootstrap, but to skip downloading packages that were already present. The logic is changed so that LLVM without assertions is always used, except for debug builds which link against the libraries with assertions built in. We want to always use the same clang to generate the IR, so that the IR we are testing in debug mode is the same as in release mode. This requires separating the LLVM binaries search from the LLVM libraries search. Also requires the root CMakeLists.txt to know about debug versus release builds so it can decide which library to use, so I refactored some of that logic too. This change fixes the lock contention problem of IMPALA-2980 (since a global lock is acquired only to check an assertion) and generally improves codegen times. On a simple inner join query I saw OptimizationTime reduced from ~240ms to ~150ms and PrepareTime reduced from ~120ms to ~90ms. Change-Id: I4977815a42c66a74e34ebb6e5cf3931f51ed461a Reviewed-on: http://gerrit.cloudera.org:8080/2231 Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com> Tested-by: Internal Jenkins