From ecac668befd978c44f3b1078b43510dacfcc7199 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Fri, 27 Dec 2013 22:21:33 -0600 Subject: [PATCH] Fix inline threshold and add size level --- llvm/passes.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/llvm/passes.py b/llvm/passes.py index e7a8924..3f096de 100644 --- a/llvm/passes.py +++ b/llvm/passes.py @@ -320,14 +320,15 @@ class TargetTransformInfo(Pass): # Helpers #===----------------------------------------------------------------------=== -def build_pass_managers(tm, opt=2, loop_vectorize=False, slp_vectorize=False, - vectorize=False, inline_threshold=None, - pm=True, fpm=True, mod=None): +def build_pass_managers(tm, opt=2, size=0, loop_vectorize=False, + slp_vectorize=False, vectorize=False, + inline_threshold=None, pm=True, fpm=True, mod=None): ''' tm --- The TargetMachine for which the passes are optimizing for. The TargetMachine must stay alive until the pass managers are removed. opt --- [0-3] Optimization level. Default to 2. + size --- [0-2] Optimize for size. Default to 0. loop_vectorize --- [boolean] Whether to use loop-vectorizer. vectorize --- [boolean] Whether to use basic-block vectorizer. inline_threshold --- [int] Threshold for the inliner. @@ -337,11 +338,15 @@ def build_pass_managers(tm, opt=2, loop_vectorize=False, slp_vectorize=False, mod --- [Module] The module object for the FunctionPassManager. ''' if inline_threshold is None: - if opt == 1: + if 0 < opt < 3: + inline_threshold = 225 + + if size == 1: inline_threshold = 75 - elif opt == 2: + elif size == 2: inline_threshold = 25 - else: + + if opt >= 3: inline_threshold = 275 if pm: