diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-08-31 17:06:49 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-08-31 17:06:49 +0000 |
commit | de5277fc555551857602bd7a7e5e616274e2d4a6 (patch) | |
tree | 1baafdce006a65a6af51b15b7c41c41a7fef9fbf /docs/analyzer | |
parent | 376c43223ee29334685250c59fdb11e4b3c594fb (diff) |
[analyzer] Though C++ inlining is enabled, don't inline ctors and dtors.
More generally, this adds a new configuration option 'c++-inlining', which
controls which C++ member functions can be considered for inlining. This
uses the new -analyzer-config table, so the cc1 arguments will look like this:
... -analyzer-config c++-inlining=[none|methods|constructors|destructors]
Note that each mode implies that all the previous member function kinds
will be inlined as well; it doesn't make sense to inline destructors
without inlining constructors, for example.
The default mode is 'methods'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163004 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/analyzer')
-rw-r--r-- | docs/analyzer/IPA.txt | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/analyzer/IPA.txt b/docs/analyzer/IPA.txt index 90c92270bf..5a6039de89 100644 --- a/docs/analyzer/IPA.txt +++ b/docs/analyzer/IPA.txt @@ -1,6 +1,9 @@ Inlining ======== +There are several options that control which calls the analyzer will consider for +inlining. The major one is -analyzer-ipa: + -analyzer-ipa=none - All inlining is disabled. This is the only mode available in LLVM 3.1 and earlier and in Xcode 4.3 and earlier. @@ -25,6 +28,23 @@ Inlining Currently, -analyzer-ipa=dynamic-bifurcate is the default mode. + +A second setting, c++-inlining, controls which C++ member functions may be +inlined. This option uses the analyzer's configuration table, so it is specified +as shown here: + + -analyzer-config c++-inlining=[none | methods | constructors | destructors] + +Each of these modes implies that all the previous member function kinds will be +inlined as well; it doesn't make sense to inline destructors without inlining +constructors, for example. + +The default c++-inlining mode is 'methods', meaning only regular member +functions and overloaded operators will be inlined. Note that no C++ member +functions will be inlined under -analyzer-ipa=none or +-analyzer-ipa=basic-inlining. + + Basics of Implementation ----------------------- |