impala-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Ho (Code Review)" <>
Subject [Impala-ASF-CR] IMPALA-4164: Use inline hints instead of always-inline
Date Sat, 20 May 2017 19:45:18 GMT
Michael Ho has uploaded a new change for review.

Change subject: IMPALA-4164: Use inline hints instead of always-inline

IMPALA-4164: Use inline hints instead of always-inline

When generating IR functions during codegen, we used to
always tag the functions with the "AlwaysInline" attribute.
That potentially leads to excessive inlining, leading to
very long optimization / compilation time with marginal
performance benefit at runtime. One of the reasons for doing
it was that the "target-cpu" and "target-features" attributes
are missing in the generated IR functions so the LLVM inliner
considers them incompatible with the cross-compiled functions.
As a result, the inliner will not inline the generated IR
functions into cross-compiled functions unless we put the
"AlwaysInline" attributes with the generated IR functions.

This change fixes the problem above by adding the "target-cpu"
and "target-features" attributes to the generated IR functions.
In addition, we now switch to using "InlineHint" attribute in
place of "AlwaysInline" and let LLVM make the decision of whether
it's sensible to inline a function. With this change, the codegen
time of a query with a long predicate went from 15s to 4s and the
overall runtime went from 19s to 8s.

Change-Id: I2d87ae8d222b415587e7320cb9072e4a8d6615ce
M be/src/codegen/
M be/src/codegen/llvm-codegen.h
A testdata/workloads/targeted-perf/queries/primitive_long_predicate.test
3 files changed, 307 insertions(+), 6 deletions(-)

  git pull ssh:// refs/changes/41/6941/1
To view, visit
To unsubscribe, visit

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2d87ae8d222b415587e7320cb9072e4a8d6615ce
Gerrit-PatchSet: 1
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Michael Ho <>

View raw message