diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -850,6 +850,13 @@ install(TARGETS tf_xla_runtime EXPORT LLVMExports ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime) set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime) + # Once we add more modules, we should handle this more automatically. + if (NOT DEFINED LLVM_INLINER_MODEL_PATH + OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL "" + OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL "autogenerate") + set(LLVM_INLINER_MODEL_PATH "autogenerate") + set(LLVM_INLINER_MODEL_AUTOGENERATED 1) + endif() endif() # Configure the three LLVM configuration header files. diff --git a/llvm/lib/Analysis/CMakeLists.txt b/llvm/lib/Analysis/CMakeLists.txt --- a/llvm/lib/Analysis/CMakeLists.txt +++ b/llvm/lib/Analysis/CMakeLists.txt @@ -8,12 +8,6 @@ set(LLVM_INLINER_MODEL_CURRENT_URL "https://github.com/google/ml-compiler-opt/releases/download/inlining-Oz-v1.1/inlining-Oz-99f0063-v1.1.tar.gz") if (DEFINED LLVM_HAVE_TF_AOT) - # If the path is empty, autogenerate the model - if (NOT DEFINED LLVM_INLINER_MODEL_PATH OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL "") - set(LLVM_INLINER_MODEL_PATH "autogenerate") - message(WARNING "LLVM_INLINER_MODEL_PATH was not set: autogenerating a model to finish the build.") - endif() - tf_find_and_compile( ${LLVM_INLINER_MODEL_PATH} ${LLVM_INLINER_MODEL_CURRENT_URL} diff --git a/llvm/test/CMakeLists.txt b/llvm/test/CMakeLists.txt --- a/llvm/test/CMakeLists.txt +++ b/llvm/test/CMakeLists.txt @@ -17,6 +17,7 @@ LLVM_BYE_LINK_INTO_TOOLS LLVM_HAVE_TF_AOT LLVM_HAVE_TF_API + LLVM_INLINER_MODEL_AUTOGENERATED LLVM_ENABLE_EXPENSIVE_CHECKS ) diff --git a/llvm/test/Transforms/Inline/ML/bounds-checks.ll b/llvm/test/Transforms/Inline/ML/bounds-checks.ll --- a/llvm/test/Transforms/Inline/ML/bounds-checks.ll +++ b/llvm/test/Transforms/Inline/ML/bounds-checks.ll @@ -1,8 +1,9 @@ ; Test behavior when inlining policy grows size out of control. ; In all cases, the end result is the same: mandatory inlinings must happen. -; However, when we discover we 'trip' over the artificially-low size increase +; However, when we discover we 'trip' over the artificially-low size increase ; factor, we don't inline anymore. ; REQUIRES: have_tf_aot +; REQUIRES: llvm_inliner_model_autogenerated ; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -ml-advisor-size-increase-threshold=10.0 -S < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=NOBOUNDS ; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -ml-advisor-size-increase-threshold=1.0 -S < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=BOUNDS @@ -38,4 +39,4 @@ ; @some-function isn't mandatory, and when we set the increase threshold too low, ; it won't be inlined. ; NOBOUNDS-NOT: @some_function -; BOUNDS: call i64 @some_function \ No newline at end of file +; BOUNDS: call i64 @some_function diff --git a/llvm/test/Transforms/Inline/ML/ml-test-release-mode.ll b/llvm/test/Transforms/Inline/ML/ml-test-release-mode.ll --- a/llvm/test/Transforms/Inline/ML/ml-test-release-mode.ll +++ b/llvm/test/Transforms/Inline/ML/ml-test-release-mode.ll @@ -6,5 +6,6 @@ ; for the 'development' mode. ; ; REQUIRES: have_tf_aot +; REQUIRES: llvm_inliner_model_autogenerated ; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -S < %S/Inputs/test-module.ll 2>&1 | FileCheck %S/Inputs/test-module.ll --check-prefix=CHECK ; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=default -S < %S/Inputs/test-module.ll 2>&1 | FileCheck %S/Inputs/test-module.ll --check-prefix=DEFAULT diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py --- a/llvm/test/lit.cfg.py +++ b/llvm/test/lit.cfg.py @@ -254,6 +254,9 @@ if config.have_tf_api: config.available_features.add("have_tf_api") +if config.llvm_inliner_model_autogenerated: + config.available_features.add("llvm_inliner_model_autogenerated") + def have_cxx_shared_library(): readobj_exe = lit.util.which('llvm-readobj', config.llvm_tools_dir) if not readobj_exe: diff --git a/llvm/test/lit.site.cfg.py.in b/llvm/test/lit.site.cfg.py.in --- a/llvm/test/lit.site.cfg.py.in +++ b/llvm/test/lit.site.cfg.py.in @@ -54,6 +54,7 @@ config.linked_bye_extension = @LLVM_BYE_LINK_INTO_TOOLS@ config.have_tf_aot = @LLVM_HAVE_TF_AOT@ config.have_tf_api = @LLVM_HAVE_TF_API@ +config.llvm_inliner_model_autogenerated = @LLVM_INLINER_MODEL_AUTOGENERATED@ config.expensive_checks = @LLVM_ENABLE_EXPENSIVE_CHECKS@ # Support substitution of the tools_dir with user parameters. This is