summaryrefslogtreecommitdiffstats
path: root/clang/docs/analyzer
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-08-31 17:06:49 +0000
committerJordan Rose <jordan_rose@apple.com>2012-08-31 17:06:49 +0000
commit219c9d0dd3ebcfbf3e8710b1c3149c90041ea24f (patch)
tree622f4fbf820c81f966f4c536e46b97a677bbb66b /clang/docs/analyzer
parent6ce25c09edbf24b88a0cda4d41936a987eea3c0a (diff)
downloadbcm5719-llvm-219c9d0dd3ebcfbf3e8710b1c3149c90041ea24f.tar.gz
bcm5719-llvm-219c9d0dd3ebcfbf3e8710b1c3149c90041ea24f.zip
[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'. llvm-svn: 163004
Diffstat (limited to 'clang/docs/analyzer')
-rw-r--r--clang/docs/analyzer/IPA.txt20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/docs/analyzer/IPA.txt b/clang/docs/analyzer/IPA.txt
index 90c92270bfb..5a6039de89d 100644
--- a/clang/docs/analyzer/IPA.txt
+++ b/clang/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
-----------------------
OpenPOWER on IntegriCloud