[www-releases] r225843 - Add documentation for 3.5.1

Tom Stellard thomas.stellard at amd.com
Tue Jan 13 14:55:45 PST 2015


Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/RAVFrontendAction.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/RAVFrontendAction.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/RAVFrontendAction.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/RAVFrontendAction.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,216 @@
+==========================================================
+How to write RecursiveASTVisitor based ASTFrontendActions.
+==========================================================
+
+Introduction
+============
+
+In this tutorial you will learn how to create a FrontendAction that uses
+a RecursiveASTVisitor to find CXXRecordDecl AST nodes with a specified
+name.
+
+Creating a FrontendAction
+=========================
+
+When writing a clang based tool like a Clang Plugin or a standalone tool
+based on LibTooling, the common entry point is the FrontendAction.
+FrontendAction is an interface that allows execution of user specific
+actions as part of the compilation. To run tools over the AST clang
+provides the convenience interface ASTFrontendAction, which takes care
+of executing the action. The only part left is to implement the
+CreateASTConsumer method that returns an ASTConsumer per translation
+unit.
+
+::
+
+      class FindNamedClassAction : public clang::ASTFrontendAction {
+      public:
+        virtual clang::ASTConsumer *CreateASTConsumer(
+          clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
+          return new FindNamedClassConsumer;
+        }
+      };
+
+Creating an ASTConsumer
+=======================
+
+ASTConsumer is an interface used to write generic actions on an AST,
+regardless of how the AST was produced. ASTConsumer provides many
+different entry points, but for our use case the only one needed is
+HandleTranslationUnit, which is called with the ASTContext for the
+translation unit.
+
+::
+
+      class FindNamedClassConsumer : public clang::ASTConsumer {
+      public:
+        virtual void HandleTranslationUnit(clang::ASTContext &Context) {
+          // Traversing the translation unit decl via a RecursiveASTVisitor
+          // will visit all nodes in the AST.
+          Visitor.TraverseDecl(Context.getTranslationUnitDecl());
+        }
+      private:
+        // A RecursiveASTVisitor implementation.
+        FindNamedClassVisitor Visitor;
+      };
+
+Using the RecursiveASTVisitor
+=============================
+
+Now that everything is hooked up, the next step is to implement a
+RecursiveASTVisitor to extract the relevant information from the AST.
+
+The RecursiveASTVisitor provides hooks of the form bool
+VisitNodeType(NodeType \*) for most AST nodes; the exception are TypeLoc
+nodes, which are passed by-value. We only need to implement the methods
+for the relevant node types.
+
+Let's start by writing a RecursiveASTVisitor that visits all
+CXXRecordDecl's.
+
+::
+
+      class FindNamedClassVisitor
+        : public RecursiveASTVisitor<FindNamedClassVisitor> {
+      public:
+        bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
+          // For debugging, dumping the AST nodes will show which nodes are already
+          // being visited.
+          Declaration->dump();
+
+          // The return value indicates whether we want the visitation to proceed.
+          // Return false to stop the traversal of the AST.
+          return true;
+        }
+      };
+
+In the methods of our RecursiveASTVisitor we can now use the full power
+of the Clang AST to drill through to the parts that are interesting for
+us. For example, to find all class declaration with a certain name, we
+can check for a specific qualified name:
+
+::
+
+      bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
+        if (Declaration->getQualifiedNameAsString() == "n::m::C")
+          Declaration->dump();
+        return true;
+      }
+
+Accessing the SourceManager and ASTContext
+==========================================
+
+Some of the information about the AST, like source locations and global
+identifier information, are not stored in the AST nodes themselves, but
+in the ASTContext and its associated source manager. To retrieve them we
+need to hand the ASTContext into our RecursiveASTVisitor implementation.
+
+The ASTContext is available from the CompilerInstance during the call to
+CreateASTConsumer. We can thus extract it there and hand it into our
+freshly created FindNamedClassConsumer:
+
+::
+
+      virtual clang::ASTConsumer *CreateASTConsumer(
+        clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
+        return new FindNamedClassConsumer(&Compiler.getASTContext());
+      }
+
+Now that the ASTContext is available in the RecursiveASTVisitor, we can
+do more interesting things with AST nodes, like looking up their source
+locations:
+
+::
+
+      bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
+        if (Declaration->getQualifiedNameAsString() == "n::m::C") {
+          // getFullLoc uses the ASTContext's SourceManager to resolve the source
+          // location and break it up into its line and column parts.
+          FullSourceLoc FullLocation = Context->getFullLoc(Declaration->getLocStart());
+          if (FullLocation.isValid())
+            llvm::outs() << "Found declaration at "
+                         << FullLocation.getSpellingLineNumber() << ":"
+                         << FullLocation.getSpellingColumnNumber() << "\n";
+        }
+        return true;
+      }
+
+Putting it all together
+=======================
+
+Now we can combine all of the above into a small example program:
+
+::
+
+      #include "clang/AST/ASTConsumer.h"
+      #include "clang/AST/RecursiveASTVisitor.h"
+      #include "clang/Frontend/CompilerInstance.h"
+      #include "clang/Frontend/FrontendAction.h"
+      #include "clang/Tooling/Tooling.h"
+
+      using namespace clang;
+
+      class FindNamedClassVisitor
+        : public RecursiveASTVisitor<FindNamedClassVisitor> {
+      public:
+        explicit FindNamedClassVisitor(ASTContext *Context)
+          : Context(Context) {}
+
+        bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
+          if (Declaration->getQualifiedNameAsString() == "n::m::C") {
+            FullSourceLoc FullLocation = Context->getFullLoc(Declaration->getLocStart());
+            if (FullLocation.isValid())
+              llvm::outs() << "Found declaration at "
+                           << FullLocation.getSpellingLineNumber() << ":"
+                           << FullLocation.getSpellingColumnNumber() << "\n";
+          }
+          return true;
+        }
+
+      private:
+        ASTContext *Context;
+      };
+
+      class FindNamedClassConsumer : public clang::ASTConsumer {
+      public:
+        explicit FindNamedClassConsumer(ASTContext *Context)
+          : Visitor(Context) {}
+
+        virtual void HandleTranslationUnit(clang::ASTContext &Context) {
+          Visitor.TraverseDecl(Context.getTranslationUnitDecl());
+        }
+      private:
+        FindNamedClassVisitor Visitor;
+      };
+
+      class FindNamedClassAction : public clang::ASTFrontendAction {
+      public:
+        virtual clang::ASTConsumer *CreateASTConsumer(
+          clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
+          return new FindNamedClassConsumer(&Compiler.getASTContext());
+        }
+      };
+
+      int main(int argc, char **argv) {
+        if (argc > 1) {
+          clang::tooling::runToolOnCode(new FindNamedClassAction, argv[1]);
+        }
+      }
+
+We store this into a file called FindClassDecls.cpp and create the
+following CMakeLists.txt to link it:
+
+::
+
+    set(LLVM_USED_LIBS clangTooling)
+
+    add_clang_executable(find-class-decls FindClassDecls.cpp)
+
+When running this tool over a small code snippet it will output all
+declarations of a class n::m::C it found:
+
+::
+
+      $ ./bin/find-class-decls "namespace n { namespace m { class C {}; } }"
+      Found declaration at 1:29
+

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ReleaseNotes.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ReleaseNotes.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ReleaseNotes.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ReleaseNotes.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,267 @@
+=======================
+Clang 3.5 Release Notes
+=======================
+
+.. contents::
+   :local:
+   :depth: 2
+
+Written by the `LLVM Team <http://llvm.org/>`_
+
+Introduction
+============
+
+This document contains the release notes for the Clang C/C++/Objective-C
+frontend, part of the LLVM Compiler Infrastructure, release 3.5. Here we
+describe the status of Clang in some detail, including major
+improvements from the previous release and new feature work. For the
+general LLVM release notes, see `the LLVM
+documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
+releases may be downloaded from the `LLVM releases web
+site <http://llvm.org/releases/>`_.
+
+For more information about Clang or LLVM, including information about
+the latest release, please check out the main please see the `Clang Web
+Site <http://clang.llvm.org>`_ or the `LLVM Web
+Site <http://llvm.org>`_.
+
+Note that if you are reading this file from a Subversion checkout or the
+main Clang web page, this document applies to the *next* release, not
+the current one. To see the release notes for a specific release, please
+see the `releases page <http://llvm.org/releases/>`_.
+
+What's New in Clang 3.5?
+========================
+
+Some of the major new features and improvements to Clang are listed
+here. Generic improvements to Clang as a whole or to its underlying
+infrastructure are described first, followed by language-specific
+sections with improvements to Clang's support for those languages.
+
+Major New Features
+------------------
+
+- Clang uses the new MingW ABI
+  GCC 4.7 changed the mingw ABI. Clang 3.4 and older use the GCC 4.6
+  ABI. Clang 3.5 and newer use the GCC 4.7 abi.
+
+- The __has_attribute feature test is now target-aware. Older versions of Clang
+  would return true when the attribute spelling was known, regardless of whether
+  the attribute was available to the specific target. Clang now returns true
+  only when the attribute pertains to the current compilation target.
+  
+- Clang 3.5 now has parsing and semantic-analysis support for all OpenMP 3.1
+  pragmas (except atomics and ordered). LLVM's OpenMP runtime library,
+  originally developed by Intel, has been modified to work on ARM, PowerPC,
+  as well as X86. Code generation support is minimal at this point and will
+  continue to be developed for 3.6, along with the rest of OpenMP 3.1.
+  Support for OpenMP 4.0 features, such as SIMD and target accelerator
+  directives, is also in progress. Contributors to this work include AMD,
+  Argonne National Lab., IBM, Intel, Texas Instruments, University of Houston
+  and many others.
+
+Improvements to Clang's diagnostics
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Clang's diagnostics are constantly being improved to catch more issues,
+explain them more clearly, and provide more accurate source information
+about them. The improvements since the 3.4 release include:
+
+- GCC compatibility: Clang displays a warning on unsupported gcc
+  optimization flags instead of an error.
+
+- Remarks system: Clang supports `-R` flags for enabling remarks. These are
+  diagnostic messages that provide information about the compilation process,
+  but don't suggest that a problem has been detected. As such, they cannot
+  be upgraded to errors with `-Werror` or `-Rerror`. A `-Reverything` flag
+  is provided (paralleling `-Weverything`) to turn on all remarks.
+
+- New remark `-Rpass`: Clang provides information about decisions made by
+  optimization passes during compilation. See :ref:`opt_rpass`.
+
+- New warning `-Wabsolute-value`: Clang warns about incorrect or useless usage
+  of the absolute functions (`abs`, `fabsf`, etc).
+
+  .. code-block:: c
+
+    #include <stdlib.h>
+    void foo() {
+     unsigned int i=0;
+     abs(i);
+    }
+
+  returns
+  `warning: taking the absolute value of unsigned type 'unsigned int' has no effect [-Wabsolute-value]`
+
+  or
+
+  .. code-block:: c
+
+    #include <stdlib.h>
+    void plop() {
+      long long i=0;
+      abs(i);
+    }
+
+  returns
+  `warning: absolute value function 'abs' given an argument of type 'long long' but has parameter of type 'int' which may cause truncation of value [-Wabsolute-value] use function 'llabs' instead`
+
+- New warning `-Wtautological-pointer-compare`:
+
+  .. code-block:: c++
+
+    #include <stddef.h>
+    void foo() {
+     int arr[5];
+     int x;
+     // warn on these conditionals
+     if (foo);
+     if (arr);
+     if (&x);
+     if (foo == NULL);
+     if (arr == NULL);
+     if (&x == NULL);
+    }
+
+  returns
+  `warning: comparison of address of 'x' equal to a null pointer is always false [-Wtautological-pointer-compare]`
+
+- New warning `-Wtautological-undefined-compare`: 
+
+  .. code-block:: c++
+
+    #include <stddef.h>
+    void f(int &x) {
+       if (&x == nullptr) { }
+    }
+
+  returns
+  `warning: reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]`
+
+-  ...
+
+New Compiler Flags
+------------------
+
+The integrated assembler is now turned on by default on ARM (and Thumb),
+so the use of the option `-fintegrated-as` is now redundant on those
+architectures. This is an important move to both *eat our own dog food*
+and to ease cross-compilation tremendously.
+
+We are aware of the problems that this may cause for code bases that
+rely on specific GNU syntax or extensions, and we're working towards
+getting them all fixed. Please, report bugs or feature requests if
+you find anything. In the meantime, use `-fno-integrated-as` to revert
+back the call to GNU assembler.
+
+In order to provide better diagnostics, the integrated assembler validates
+inline assembly when the integrated assembler is enabled.  Because this is
+considered a feature of the compiler, it is controlled via the `fintegrated-as`
+and `fno-integrated-as` flags which enable and disable the integrated assembler
+respectively.  `-integrated-as` and `-no-integrated-as` are now considered
+legacy flags (but are available as an alias to prevent breaking existing users),
+and users are encouraged to switch to the equivalent new feature flag.
+
+Deprecated flags `-faddress-sanitizer`, `-fthread-sanitizer`,
+`-fcatch-undefined-behavior` and `-fbounds-checking` were removed in favor of
+`-fsanitize=` family of flags.
+
+It is now possible to get optimization reports from the major transformation
+passes via three new flags: `-Rpass`, `-Rpass-missed` and `-Rpass-analysis`.
+These flags take a POSIX regular expression which indicates the name
+of the pass (or passes) that should emit optimization remarks.
+
+Options `-u` and `-z` are forwarded to the linker on gnutools toolchains.
+
+
+New Pragmas in Clang
+-----------------------
+
+Loop optimization hints can be specified using the new `#pragma clang loop`
+directive just prior to the desired loop. The directive allows vectorization and
+interleaving to be enabled or disabled. Vector width as well as interleave count
+can be manually specified.  See :ref:`langext-pragma-loop` for details.
+
+C++ Language Changes in Clang
+-----------------------------
+
+- Reference parameters and return values from functions are more aggressively
+  assumed to refer to valid objects when optimizing. Clang will attempt to
+  issue a warning by default if it sees null checks being performed on
+  references, and `-fsanitize=null` can be used to detect null references
+  being formed at runtime.
+
+C++17 Feature Support
+^^^^^^^^^^^^^^^^^^^^^
+
+Clang has experimental support for some proposed C++1z (tentatively, C++17)
+features. This support can be enabled using the `-std=c++1z` flag. The
+supported features are:
+
+- `static_assert(expr)` with no message
+
+- `for (identifier : range)` as a synonym for `for (auto &&identifier : range)`
+
+- `template<template<...> typename>` as a synonym for `template<template<...> class>`
+
+Additionally, trigraphs are not recognized by default in this mode.
+`-ftrigraphs` can be used if you need to parse legacy code that uses trigraphs.
+Note that these features may be changed or removed in future Clang releases
+without notice.
+
+OpenMP C/C++ Language Changes in Clang
+--------------------------------------
+
+- `Status of supported OpenMP constructs 
+  <https://github.com/clang-omp/clang/wiki/Status-of-supported-OpenMP-constructs>`_.
+
+
+Internal API Changes
+--------------------
+
+These are major API changes that have happened since the 3.4 release of
+Clang. If upgrading an external codebase that uses Clang as a library,
+this section should help get you past the largest hurdles of upgrading.
+
+- Clang uses `std::unique_ptr<T>` in many places where it used to use
+  raw `T *` pointers.
+
+Static Analyzer
+---------------
+
+Check for code testing a variable for 0 after using it as a denominator.
+This new checker, alpha.core.TestAfterDivZero, catches issues like this:
+
+.. code-block:: c
+
+  int sum = ...
+  int avg = sum / count; // potential division by zero...
+  if (count == 0) { ... } // ...caught here
+
+
+The `-analyzer-config` options are now passed from scan-build through to
+ccc-analyzer and then to Clang.
+
+With the option `-analyzer-config stable-report-filename=true`,
+instead of `report-XXXXXX.html`, scan-build/clang analyzer generate
+`report-<filename>-<function, method name>-<function position>-<id>.html`.
+(id = i++ for several issues found in the same function/method).
+
+List the function/method name in the index page of scan-build.
+
+Significant Known Problems
+==========================
+
+Additional Information
+======================
+
+A wide variety of additional information is available on the `Clang web
+page <http://clang.llvm.org/>`_. The web page contains versions of the
+API documentation which are up-to-date with the Subversion version of
+the source code. You can access versions of these documents specific to
+this release by going into the "``clang/docs/``" directory in the Clang
+tree.
+
+If you have any questions or comments about Clang, please feel free to
+contact us via the `mailing
+list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/SanitizerSpecialCaseList.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/SanitizerSpecialCaseList.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/SanitizerSpecialCaseList.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/SanitizerSpecialCaseList.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,79 @@
+===========================
+Sanitizer special case list
+===========================
+
+.. contents::
+   :local:
+
+Introduction
+============
+
+This document describes the way to disable or alter the behavior of
+sanitizer tools for certain source-level entities by providing a special
+file at compile-time.
+
+Goal and usage
+==============
+
+User of sanitizer tools, such as :doc:`AddressSanitizer`, :doc:`ThreadSanitizer`
+or :doc:`MemorySanitizer` may want to disable or alter some checks for
+certain source-level entities to:
+
+* speedup hot function, which is known to be correct;
+* ignore a function that does some low-level magic (e.g. walks through the
+  thread stack, bypassing the frame boundaries);
+* ignore a known problem.
+
+To achieve this, user may create a file listing the entities they want to
+ignore, and pass it to clang at compile-time using
+``-fsanitize-blacklist`` flag. See :doc:`UsersManual` for details.
+
+Example
+=======
+
+.. code-block:: bash
+
+  $ cat foo.c
+  #include <stdlib.h>
+  void bad_foo() {
+    int *a = (int*)malloc(40);
+    a[10] = 1;
+  }
+  int main() { bad_foo(); }
+  $ cat blacklist.txt
+  # Ignore reports from bad_foo function.
+  fun:bad_foo
+  $ clang -fsanitize=address foo.c ; ./a.out
+  # AddressSanitizer prints an error report.
+  $ clang -fsanitize=address -fsanitize-blacklist=blacklist.txt foo.c ; ./a.out
+  # No error report here.
+
+Format
+======
+
+Each line contains an entity type, followed by a colon and a regular
+expression, specifying the names of the entities, optionally followed by
+an equals sign and a tool-specific category. Empty lines and lines starting
+with "#" are ignored. The meanining of ``*`` in regular expression for entity
+names is different - it is treated as in shell wildcarding. Two generic
+entity types are ``src`` and ``fun``, which allow user to add, respectively,
+source files and functions to special case list. Some sanitizer tools may
+introduce custom entity types - refer to tool-specific docs.
+
+.. code-block:: bash
+
+    # Lines starting with # are ignored.
+    # Turn off checks for the source file (use absolute path or path relative
+    # to the current working directory):
+    src:/path/to/source/file.c
+    # Turn off checks for a particular functions (use mangled names):
+    fun:MyFooBar
+    fun:_Z8MyFooBarv
+    # Extended regular expressions are supported:
+    fun:bad_(foo|bar)
+    src:bad_source[1-9].c
+    # Shell like usage of * is supported (* is treated as .*):
+    src:bad/sources/*
+    fun:*BadFunction*
+    # Specific sanitizer tools may introduce categories.
+    src:/special/path/*=special_sources

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSafetyAnalysis.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSafetyAnalysis.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSafetyAnalysis.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSafetyAnalysis.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,818 @@
+
+======================
+Thread Safety Analysis
+======================
+
+Introduction
+============
+
+Clang Thread Safety Analysis is a C++ language extension which warns about
+potential race conditions in code.  The analysis is completely static (i.e.
+compile-time); there is no run-time overhead.  The analysis is still
+under active development, but it is mature enough to be deployed in an
+industrial setting.  It being developed by Google, and is used extensively
+on their internal code base.
+
+Thread safety analysis works very much like a type system for multi-threaded
+programs.  In addition to declaring the *type* of data (e.g. ``int``, ``float``,
+etc.), the programmer can (optionally) declare how access to that data is
+controlled in a multi-threaded environment.  For example, if ``foo`` is
+*guarded by* the mutex ``mu``, then the analysis will issue a warning whenever
+a piece of code reads or writes to ``foo`` without first locking ``mu``.
+Similarly, if there are particular routines that should only be called by
+the GUI thread, then the analysis will warn if other threads call those
+routines. 
+
+Getting Started
+----------------
+
+.. code-block:: c++
+
+  #include "mutex.h"
+
+  class BankAccount {
+  private:
+    Mutex mu;
+    int   balance GUARDED_BY(mu);
+  
+    void depositImpl(int amount) {
+      balance += amount;       // WARNING! Cannot write balance without locking mu.
+    }
+  
+    void withdrawImpl(int amount) EXCLUSIVE_LOCKS_REQUIRED(mu) {
+      balance -= amount;       // OK. Caller must have locked mu.
+    }
+  
+  public:
+    void withdraw(int amount) {
+      mu.Lock();
+      withdrawImpl(amount);    // OK.  We've locked mu.
+    }                          // WARNING!  Failed to unlock mu.
+  
+    void transferFrom(BankAccount& b, int amount) {
+      mu.Lock();
+      b.withdrawImpl(amount);  // WARNING!  Calling withdrawImpl() requires locking b.mu.
+      depositImpl(amount);     // OK.  depositImpl() has no requirements.
+      mu.Unlock();
+    }
+  };
+
+This example demonstrates the basic concepts behind the analysis.  The
+``GUARDED_BY`` attribute declares that a thread must lock ``mu`` before it can
+read or write to ``balance``, thus ensuring that the increment and decrement
+operations are atomic.  Similarly, ``EXCLUSIVE_LOCKS_REQUIRED`` declares that
+the calling thread must lock ``mu`` before calling ``withdrawImpl``.
+Because the caller is assumed to have locked ``mu``, it is safe to modify
+``balance`` within the body of the method.
+
+The ``depositImpl()`` method does not have ``EXCLUSIVE_LOCKS_REQUIRED``, so the
+analysis issues a warning.  Thread safety analysis is not inter-procedural, so
+caller requirements must be explicitly declared.
+There is also a warning in ``transferFrom()``, because although the method
+locks ``this->mu``, it does not lock ``b.mu``.  The analysis understands
+that these are two separate mutexes, in two different objects.  
+
+Finally, there is a warning in the ``withdraw()`` method, because it fails to
+unlock ``mu``.  Every lock must have a corresponding unlock, and the analysis
+will detect both double locks, and double unlocks.  A function is allowed to
+acquire a lock without releasing it, (or vice versa), but it must be annotated
+as such (using ``LOCK``/``UNLOCK_FUNCTION``).
+
+
+Running The Analysis
+--------------------
+
+To run the analysis, simply compile with the ``-Wthread-safety`` flag, e.g.
+
+.. code-block:: bash
+
+  clang -c -Wthread-safety example.cpp
+
+Note that this example assumes the presence of a suitably annotated
+:ref:`mutexheader` that declares which methods perform locking,
+unlocking, and so on. 
+
+
+Basic Concepts: Capabilities
+============================
+
+Thread safety analysis provides a way of protecting *resources* with
+*capabilities*.  A resource is either a data member, or a function/method
+that provides access to some underlying resource.  The analysis ensures that
+the calling thread cannot access the *resource* (i.e. call the function, or
+read/write the data) unless it has the *capability* to do so.
+
+Capabilities are associated with named C++ objects which declare specific
+methods to acquire and release the capability.  The name of the object serves
+to identify the capability.  The most common example is a mutex.  For example,
+if ``mu`` is a mutex, then calling ``mu.Lock()`` causes the calling thread
+to acquire the capability to access data that is protected by ``mu``. Similarly, 
+calling ``mu.Unlock()`` releases that capability.
+
+A thread may hold a capability either *exclusively* or *shared*.  An exclusive
+capability can be held by only one thread at a time, while a shared capability
+can be held by many threads at the same time.  This mechanism enforces a
+multiple-reader, single-writer pattern.  Write operations to protected data
+require exclusive access, while read operations require only shared access.  
+
+At any given moment during program execution, a thread holds a specific set of
+capabilities (e.g. the set of mutexes that it has locked.)  These act like keys
+or tokens that allow the thread to access a given resource.  Just like physical
+security keys, a thread cannot make copy of a capability, nor can it destroy
+one.  A thread can only release a capability to another thread, or acquire one
+from another thread.  The annotations are deliberately agnostic about the
+exact mechanism used to acquire and release capabilities; it assumes that the 
+underlying implementation (e.g. the Mutex implementation) does the handoff in
+an appropriate manner.
+
+The set of capabilities that are actually held by a given thread at a given
+point in program execution is a run-time concept.  The static analysis works
+by calculating an approximation of that set, called the *capability
+environment*.  The capability environment is calculated for every program point,
+and describes the set of capabilities that are statically known to be held, or
+not held, at that particular point.  This environment is a conservative
+approximation of the full set of capabilities that will actually held by a
+thread at run-time.
+
+
+Reference Guide
+===============
+
+The thread safety analysis uses attributes to declare threading constraints.
+Attributes must be attached to named declarations, such as classes, methods,
+and data members. Users are *strongly advised* to define macros for the various
+attributes; example definitions can be found in :ref:`mutexheader`, below.
+The following documentation assumes the use of macros.
+
+
+GUARDED_BY(c) and PT_GUARDED_BY(c)
+----------------------------------
+
+``GUARDED_BY`` is an attribute on data members, which declares that the data
+member is protected by the given capability.  Read operations on the data
+require shared access, while write operations require exclusive access.
+
+``PT_GUARDED_BY`` is similar, but is intended for use on pointers and smart
+pointers. There is no constraint on the data member itself, but the *data that
+it points to* is protected by the given capability.  
+
+.. code-block:: c++
+
+  Mutex mu;
+  int *p1            GUARDED_BY(mu);
+  int *p2            PT_GUARDED_BY(mu);
+  unique_ptr<int> p3 PT_GUARDED_BY(mu);
+  
+  void test() {
+    p1 = 0;             // Warning!
+  
+    p2 = new int;       // OK.
+    *p2 = 42;           // Warning!
+  
+    p3.reset(new int);  // OK.
+    *p3 = 42;           // Warning!
+  }
+
+
+EXCLUSIVE_LOCKS_REQUIRED(...), SHARED_LOCKS_REQUIRED(...)
+---------------------------------------------------------
+
+``EXCLUSIVE_LOCKS_REQUIRED`` is an attribute on functions or methods, which
+declares that the calling thread must have exclusive access to the given
+capabilities.  More than one capability may be specified.  The capabilities
+must be held on entry to the function, *and must still be held on exit*.  
+
+``SHARED_LOCKS_REQUIRED`` is similar, but requires only shared access.
+
+.. code-block:: c++
+
+  Mutex mu1, mu2;
+  int a GUARDED_BY(mu1);
+  int b GUARDED_BY(mu2);
+  
+  void foo() EXCLUSIVE_LOCKS_REQUIRED(mu1, mu2) {
+    a = 0;
+    b = 0;
+  }
+  
+  void test() {
+    mu1.Lock();
+    foo();         // Warning!  Requires mu2.
+    mu1.Unlock();
+  }
+
+
+EXCLUSIVE_LOCK_FUNCTION(...), SHARED_LOCK_FUNCTION(...), UNLOCK_FUNCTION(...)
+-----------------------------------------------------------------------------
+
+``EXCLUSIVE_LOCK_FUNCTION`` is an attribute on functions or methods, which
+declares that the function acquires a capability, but does not release it.  The
+caller must not hold the given capability on entry, and it will hold the
+capability on exit.  ``SHARED_LOCK_FUNCTION`` is similar. 
+
+``UNLOCK_FUNCTION`` declares that the function releases the given capability.
+The caller must hold the capability on entry, and will no longer hold it on
+exit. It does not matter whether the given capability is shared or exclusive.
+
+.. code-block:: c++
+
+  Mutex mu;
+  MyClass myObject GUARDED_BY(mu);
+  
+  void lockAndInit() EXCLUSIVE_LOCK_FUNCTION(mu) {
+    mu.Lock();
+    myObject.init();
+  }
+  
+  void cleanupAndUnlock() UNLOCK_FUNCTION(mu) {
+    myObject.cleanup();
+  }  // Warning!  Need to unlock mu.
+  
+  void test() {
+    lockAndInit();
+    myObject.doSomething();
+    cleanupAndUnlock();
+    myObject.doSomething();  // Warning, mu is not locked.
+  }
+
+If no argument is passed to ``(UN)LOCK_FUNCTION``, then the argument is assumed
+to be ``this``, and the analysis will not check the body of the function.  This
+pattern is intended for use by classes which hide locking details behind an
+abstract interface.  E.g.
+
+.. code-block:: c++
+
+  template <class T>
+  class LOCKABLE Container {
+  private:
+    Mutex mu;
+    T* data;
+  
+  public:
+    // Hide mu from public interface.
+    void Lock() EXCLUSIVE_LOCK_FUNCTION() { mu.Lock(); }
+    void Unlock() UNLOCK_FUNCTION() { mu.Unlock(); }
+  
+    T& getElem(int i) { return data[i]; }
+  };
+  
+  void test() {
+    Container<int> c;
+    c.Lock();
+    int i = c.getElem(0);
+    c.Unlock();
+  }
+
+
+LOCKS_EXCLUDED(...)
+-------------------
+
+``LOCKS_EXCLUDED`` is an attribute on functions or methods, which declares that
+the caller must *not* hold the given capabilities.  This annotation is
+used to prevent deadlock.  Many mutex implementations are not re-entrant, so
+deadlock can occur if the function in question acquires the mutex a second time.
+
+.. code-block:: c++
+
+  Mutex mu;
+  int a GUARDED_BY(mu);
+  
+  void clear() LOCKS_EXCLUDED(mu) {
+    mu.Lock();
+    a = 0;
+    mu.Unlock();
+  }
+  
+  void reset() {
+    mu.Lock();
+    clear();     // Warning!  Caller cannot hold 'mu'.
+    mu.Unlock();
+  }
+
+Unlike ``LOCKS_REQUIRED``, ``LOCKS_EXCLUDED`` is optional.  The analysis will
+not issue a warning if the attribute is missing.  See :ref:`limitations`.
+
+
+NO_THREAD_SAFETY_ANALYSIS
+-------------------------
+
+``NO_THREAD_SAFETY_ANALYSIS`` is an attribute on functions or methods, which
+turns off thread safety checking for that method.  It provides an escape hatch
+for functions which are either (1) deliberately thread-unsafe, or (2) are
+thread-safe, but too complicated for the analysis to understand.  Reasons for
+(2) will be described in the :ref:`limitations`, below.
+
+.. code-block:: c++
+
+  class Counter {
+    Mutex mu;
+    int a GUARDED_BY(mu);
+  
+    void unsafeIncrement() NO_THREAD_SAFETY_ANALYSIS { a++; }
+  };
+
+
+LOCK_RETURNED(c)
+----------------
+
+``LOCK_RETURNED`` is an attribute on functions or methods, which declares that
+the function returns a reference to the given capability.  It is used to
+annotate getter methods that return mutexes.
+
+.. code-block:: c++
+
+  class MyClass {
+  private:
+    Mutex mu;
+    int a GUARDED_BY(mu);
+  
+  public:
+    Mutex* getMu() LOCK_RETURNED(mu) { return μ }
+  
+    // analysis knows that getMu() == mu
+    void clear() EXCLUSIVE_LOCKS_REQUIRED(getMu()) { a = 0; }
+  };
+
+
+ACQUIRED_BEFORE(...), ACQUIRED_AFTER(...)
+-----------------------------------------
+
+``ACQUIRED_BEFORE`` and ``ACQUIRED_AFTER`` are attributes on member
+declarations, specifically declarations of mutexes or other capabilities.
+These declarations enforce a particular order in which the mutexes must be
+acquired, in order to prevent deadlock.
+
+.. code-block:: c++
+
+  Mutex m1;
+  Mutex m2 ACQUIRED_AFTER(m1);
+  
+  // Alternative declaration
+  // Mutex m2;
+  // Mutex m1 ACQUIRED_BEFORE(m2);
+  
+  void foo() {
+    m2.Lock();
+    m1.Lock();  // Warning!  m2 must be acquired after m1.
+    m1.Unlock();
+    m2.Unlock();
+  }
+
+
+LOCKABLE
+--------
+
+``LOCKABLE`` is an attribute on classes, which specifies that objects of the
+class can be used as a capability.  See the ``Container`` example given above,
+or the ``Mutex`` class in :ref:`mutexheader`.
+
+
+SCOPED_LOCKABLE
+---------------
+
+``SCOPED_LOCKABLE`` is an attribute on classes that implement RAII-style
+locking, in which a capability is acquired in the constructor, and released in
+the destructor.  Such classes require special handling because the constructor
+and destructor refer to the capability via different names; see the
+``MutexLocker`` class in :ref:`mutexheader`, below.
+
+
+EXCLUSIVE_TRYLOCK_FUNCTION(<bool>, ...), SHARED_TRYLOCK_FUNCTION(<bool>, ...)
+-----------------------------------------------------------------------------
+
+These are attributes on a function or method that tries to acquire the given
+capability, and returns a boolean value indicating success or failure.
+The first argument must be ``true`` or ``false``, to specify which return value
+indicates success, and the remaining arguments are interpreted in the same way
+as ``(UN)LOCK_FUNCTION``.  See :ref:`mutexheader`, below, for example uses.
+
+
+ASSERT_EXCLUSIVE_LOCK(...) and ASSERT_SHARED_LOCK(...)
+------------------------------------------------------
+
+These are attributes on a function or method that does a run-time test to see
+whether the calling thread holds the given capability.  The function is assumed
+to fail (no return) if the capability is not held.  See :ref:`mutexheader`,
+below, for example uses.
+
+
+GUARDED_VAR and PT_GUARDED_VAR
+------------------------------
+
+Use of these attributes has been deprecated.
+
+
+Warning flags
+-------------
+
+* ``-Wthread-safety``:  Umbrella flag which turns on the following three:
+
+  + ``-Wthread-safety-attributes``: Sanity checks on attribute syntax.
+  + ``-Wthread-safety-analysis``: The core analysis.
+  + ``-Wthread-safety-precise``: Requires that mutex expressions match precisely.
+    This warning can be disabled for code which has a lot of aliases.
+
+When new features and checks are added to the analysis, they can often introduce
+additional warnings.  Those warnings are initially released as *beta* warnings
+for a period of time, after which they are migrated to the standard analysis.  
+
+* ``-Wthread-safety-beta``:  New features.  Off by default. 
+
+
+.. _faq:
+
+Frequently Asked Questions
+==========================
+
+(Q) Should I put attributes in the header file, or in the .cc/.cpp/.cxx file?
+
+(A) Attributes should always go in the header.
+
+
+(Q) "*Mutex is not locked on every path through here?*"  What does that mean?
+
+(A) See :ref:`conditional_locks`, below.
+
+
+.. _limitations:
+
+Known Limitations 
+=================
+
+Lexical scope
+-------------
+
+Thread safety attributes contain ordinary C++ expressions, and thus follow
+ordinary C++ scoping rules.  In particular, this means that mutexes and other
+capabilities must be declared before they can be used in an attribute.
+Use-before-declaration is okay within a single class, because attributes are
+parsed at the same time as method bodies. (C++ delays parsing of method bodies
+until the end of the class.)  However, use-before-declaration is not allowed
+between classes, as illustrated below.  
+
+.. code-block:: c++
+
+  class Foo;
+
+  class Bar {
+    void bar(Foo* f) EXCLUSIVE_LOCKS_REQUIRED(f->mu);  // Error: mu undeclared.
+  };
+
+  class Foo {
+    Mutex mu;
+  };
+
+
+Private Mutexes
+---------------
+
+Good software engineering practice dictates that mutexes should be private
+members, because the locking mechanism used by a thread-safe class is part of
+its internal implementation.  However, private mutexes can sometimes leak into
+the public interface of a class.
+Thread safety attributes follow normal C++ access restrictions, so if ``mu``
+is a private member of ``c``, then it is an error to write ``c.mu`` in an
+attribute.
+
+One workround is to (ab)use the ``LOCK_RETURNED`` attribute to provide a public
+*name* for a private mutex, without actually exposing the underlying mutex.
+For example:
+
+.. code-block:: c++
+
+  class MyClass {
+  private:
+    Mutex mu;
+
+  public:
+    // For thread safety analysis only.  Does not actually return mu.
+    Mutex* getMu() LOCK_RETURNED(mu) { return 0; }
+
+    void doSomething() EXCLUSIVE_LOCKS_REQUIRED(mu); 
+  };
+
+  void doSomethingTwice(MyClass& c) EXCLUSIVE_LOCKS_REQUIRED(c.getMu()) {
+    // The analysis thinks that c.getMu() == c.mu
+    c.doSomething();
+    c.doSomething();
+  }
+
+In the above example, ``doSomethingTwice()`` is an external routine that
+requires ``c.mu`` to be locked, which cannot be declared directly because ``mu``
+is private.  This pattern is discouraged because it
+violates encapsulation, but it is sometimes necessary, especially when adding
+annotations to an existing code base.  The workaround is to define ``getMu()``
+as a fake getter method, which is provided only for the benefit of thread
+safety analysis.
+
+
+False negatives on pass by reference.
+-------------------------------------
+
+The current version of the analysis only checks operations which refer to
+guarded data members directly by name.  If the data members are accessed
+indirectly, via a pointer or reference, then no warning is generated.  Thus,
+no warnings will be generated for the following code:
+
+.. code-block:: c++
+
+  Mutex mu;
+  int a GUARDED_BY(mu);
+
+  void clear(int& ra) { ra = 0; }
+
+  void test() {
+    int *p = &a;
+    *p = 0;       // No warning.  *p is an alias to a.  
+       
+    clear(a);     // No warning.  'a' is passed by reference.
+  }
+
+This issue is by far the biggest source of false negatives in the current
+version of the analysis.  At a fundamental level, the
+false negatives are caused by the fact that annotations are attached to data
+members, rather than types.  The type of ``&a`` should really be
+``int GUARDED_BY(mu)*``, rather than ``int*``, and the statement ``p = &a``
+should thus generate a type error.  However, attaching attributes to types
+would be an invasive change to the C++ type system, with potential
+ramifications with respect to template instantation, function overloading,
+and so on.  Thus, a complete solution to this issue is simply not feasible.
+
+Future versions of the analysis will include better support for pointer
+alias analysis, along with limited checking of guarded types, in order to
+reduce the number of false negatives.
+
+
+.. _conditional_locks:
+
+No conditionally held locks.
+----------------------------
+
+The analysis must be able to determine whether a lock is held, or not held, at
+every program point.  Thus, sections of code where a lock *might be held* will
+generate spurious warnings (false positives).  For example:
+
+.. code-block:: c++
+
+  void foo() {
+    bool b = needsToLock();
+    if (b) mu.Lock();
+    ...  // Warning!  Mutex 'mu' is not held on every path through here. 
+    if (b) mu.Unlock();
+  }
+
+
+No checking inside constructors and destructors.
+------------------------------------------------
+
+The analysis currently does not do any checking inside constructors or
+destructors.  In other words, every constructor and destructor is treated as
+if it was annotated with ``NO_THREAD_SAFETY_ANALYSIS``.  
+The reason for this is that during initialization, only one thread typically
+has access to the object which is being initialized, and it is thus safe (and
+common practice) to initialize guarded members without acquiring any locks.
+The same is true of destructors.
+
+Ideally, the analysis would allow initialization of guarded members inside the
+object being initialized or destroyed, while still enforcing the usual access
+restrictions on everything else.  However, this is difficult to enforce in
+practice, because in complex pointer-based data structures, it is hard to
+determine what data is "owned by" the enclosing object.
+
+No inlining.
+------------
+
+Thread safety analysis is strictly intra-procedural, just like ordinary type
+checking.  It relies only on the declared attributes of a function, and will
+not attempt to "step inside", or inline any method calls.  As a result, code
+such as the following will not work:
+
+.. code-block:: c++
+
+  template<class T>
+  class AutoCleanup {
+    T* object;
+    void (T::*mp)();
+    
+  public:
+    AutoCleanup(T* obj, void (T::*imp)()) : object(obj), mp(imp) { }
+    ~AutoCleanup() { (object->*mp)(); }
+  };
+
+  Mutex mu;
+  void foo() {
+    mu.Lock();
+    AutoCleanup<Mutex>(&mu, &Mutex::Unlock); 
+    ...
+  }  // Warning, mu is not unlocked.
+
+In this case, the destructor of ``Autocleanup`` calls ``mu.Unlock()``, so
+the warning is bogus.  However,
+thread safety analysis cannot see the unlock, because it does not attempt to
+inline the destructor.  Moreover, there is no way to annotate the destructor,
+because the destructor is calling a function that is not statically known.
+This pattern is simply not supported. 
+
+
+LOCKS_EXCLUDED is not transitive.
+---------------------------------
+
+A function which calls a method marked with LOCKS_EXCLUDED is not required to
+put LOCKS_EXCLUDED in its own interface.  LOCKS_EXCLUDED behaves differently
+from LOCKS_REQUIRED in this respect, and it can result in false negatives:
+
+.. code-block:: c++
+
+  class Foo {
+    Mutex mu;
+    
+    void foo() {
+      mu.Lock();
+      bar();                // No warning
+      mu.Unlock();
+    }
+    
+    void bar() { baz(); }   // No warning.  (Should have LOCKS_EXCLUDED(mu).)
+    
+    void baz() LOCKS_EXCLUDED(mu);
+  };
+
+The lack of transitivity is due to the fact that LOCKS_EXCLUDED can easily
+break encapsulation; it would be a bad idea to require functions to list the
+names private locks which happen to be acquired internally.  
+
+
+No alias analysis.
+------------------
+
+The analysis currently does not track pointer aliases.  Thus, there can be
+false positives if two pointers both point to the same mutex.  
+
+
+.. code-block:: c++
+
+  class MutexUnlocker {
+    Mutex* mu;
+
+  public:
+    MutexUnlocker(Mutex* m) UNLOCK_FUNCTION(m) : mu(m)  { mu->Unlock(); }
+    ~MutexUnlocker() EXCLUSIVE_LOCK_FUNCTION(mu) { mu->Lock(); }
+  };
+
+  Mutex mutex;
+  void test() EXCLUSIVE_LOCKS_REQUIRED(mutex) {
+    { 
+      MutexUnlocker munl(&mutex);  // unlocks mutex
+      doSomeIO();
+    }                              // Warning: locks munl.mu
+  }
+
+The MutexUnlocker class is intended to be the dual of the MutexLocker class,
+defined in :ref:`mutexheader`.  However, it doesn't work because the analysis
+doesn't know that munl.mu == mutex.  The SCOPED_LOCKABLE attribute handles
+aliasing 
+
+
+ACQUIRED_BEFORE(...) and ACQUIRED_AFTER(...) are currently unimplemented.
+-------------------------------------------------------------------------
+
+To be fixed in a future update. 
+
+
+.. _mutexheader:
+
+mutex.h
+=======
+
+Thread safety analysis can be used with any threading library, but it does
+require that the threading API be wrapped in classes and methods which have the
+appropriate annotations.  The following code provides ``mutex.h`` as an example;
+these methods should be filled in to call the appropriate underlying
+implementation. 
+
+
+.. code-block:: c++
+
+  #ifndef THREAD_SAFETY_ANALYSIS_MUTEX_H
+  #define THREAD_SAFETY_ANALYSIS_MUTEX_H
+  
+  // Enable thread safety attributes only with clang.
+  // The attributes can be safely erased when compiling with other compilers.
+  #if defined(__clang__) && (!defined(SWIG))
+  #define THREAD_ANNOTATION_ATTRIBUTE__(x)   __attribute__((x))
+  #else
+  #define THREAD_ANNOTATION_ATTRIBUTE__(x)   // no-op
+  #endif
+  
+  #define THREAD_ANNOTATION_ATTRIBUTE__(x)   __attribute__((x))
+  
+  #define GUARDED_BY(x) \
+    THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
+  
+  #define GUARDED_VAR \
+    THREAD_ANNOTATION_ATTRIBUTE__(guarded)
+  
+  #define PT_GUARDED_BY(x) \
+    THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
+  
+  #define PT_GUARDED_VAR \
+    THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded)
+  
+  #define ACQUIRED_AFTER(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))
+  
+  #define ACQUIRED_BEFORE(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))
+  
+  #define EXCLUSIVE_LOCKS_REQUIRED(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(__VA_ARGS__))
+  
+  #define SHARED_LOCKS_REQUIRED(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(shared_locks_required(__VA_ARGS__))
+  
+  #define LOCKS_EXCLUDED(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))
+  
+  #define LOCK_RETURNED(x) \
+    THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
+  
+  #define LOCKABLE \
+    THREAD_ANNOTATION_ATTRIBUTE__(lockable)
+  
+  #define SCOPED_LOCKABLE \
+    THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
+  
+  #define EXCLUSIVE_LOCK_FUNCTION(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(exclusive_lock_function(__VA_ARGS__))
+  
+  #define SHARED_LOCK_FUNCTION(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(shared_lock_function(__VA_ARGS__))
+  
+  #define ASSERT_EXCLUSIVE_LOCK(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(assert_exclusive_lock(__VA_ARGS__))
+  
+  #define ASSERT_SHARED_LOCK(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_lock(__VA_ARGS__))
+  
+  #define EXCLUSIVE_TRYLOCK_FUNCTION(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(exclusive_trylock_function(__VA_ARGS__))
+  
+  #define SHARED_TRYLOCK_FUNCTION(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(shared_trylock_function(__VA_ARGS__))
+  
+  #define UNLOCK_FUNCTION(...) \
+    THREAD_ANNOTATION_ATTRIBUTE__(unlock_function(__VA_ARGS__))
+  
+  #define NO_THREAD_SAFETY_ANALYSIS \
+    THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
+  
+  
+  // Defines an annotated interface for mutexes.
+  // These methods can be implemented to use any internal mutex implementation.
+  class LOCKABLE Mutex {
+  public:
+    // Acquire/lock this mutex exclusively.  Only one thread can have exclusive
+    // access at any one time.  Write operations to guarded data require an
+    // exclusive lock.
+    void Lock() EXCLUSIVE_LOCK_FUNCTION();
+  
+    // Acquire/lock this mutex for read operations, which require only a shared
+    // lock.  This assumes a multiple-reader, single writer semantics.  Multiple
+    // threads may acquire the mutex simultaneously as readers, but a writer must
+    // wait for all of them to release the mutex before it can acquire it
+    // exclusively.  
+    void ReaderLock() SHARED_LOCK_FUNCTION();
+  
+    // Release/unlock the mutex, regardless of whether it is exclusive or shared.
+    void Unlock() UNLOCK_FUNCTION();
+  
+    // Try to acquire the mutex.  Returns true on success, and false on failure.
+    bool TryLock() EXCLUSIVE_TRYLOCK_FUNCTION(true);
+  
+    // Try to acquire the mutex for read operations.
+    bool ReaderTryLock() SHARED_TRYLOCK_FUNCTION(true);
+  
+    // Assert that this mutex is currently held by the calling thread.
+    void AssertHeld() ASSERT_EXCLUSIVE_LOCK();
+  
+    // Assert that is mutex is currently held for read operations. 
+    void AssertReaderHeld() ASSERT_SHARED_LOCK();
+  };
+  
+  
+  // MutexLocker is an RAII class that acquires a mutex in its constructor, and
+  // releases it in its destructor.  
+  class SCOPED_LOCKABLE MutexLocker {
+  private:
+    Mutex* mut;
+  
+  public:
+    MutexLocker(Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu) : mut(mu) {
+      mu->Lock();
+    }  
+    ~MutexLocker() UNLOCK_FUNCTION() {
+      mut->Unlock();
+    }
+  };
+  
+  #endif  // THREAD_SAFETY_ANALYSIS_MUTEX_H

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSanitizer.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSanitizer.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSanitizer.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/ThreadSanitizer.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,139 @@
+ThreadSanitizer
+===============
+
+Introduction
+------------
+
+ThreadSanitizer is a tool that detects data races.  It consists of a compiler
+instrumentation module and a run-time library.  Typical slowdown introduced by
+ThreadSanitizer is about **5x-15x**.  Typical memory overhead introduced by
+ThreadSanitizer is about **5x-10x**.
+
+How to build
+------------
+
+Follow the `Clang build instructions <../get_started.html>`_.  CMake build is
+supported.
+
+Supported Platforms
+-------------------
+
+ThreadSanitizer is supported on Linux x86_64 (tested on Ubuntu 12.04).
+Support for other 64-bit architectures is possible, contributions are welcome.
+Support for 32-bit platforms is problematic and is not planned.
+
+Usage
+-----
+
+Simply compile and link your program with ``-fsanitize=thread``.  To get a
+reasonable performance add ``-O1`` or higher.  Use ``-g`` to get file names
+and line numbers in the warning messages.
+
+Example:
+
+.. code-block:: c++
+
+  % cat projects/compiler-rt/lib/tsan/lit_tests/tiny_race.c
+  #include <pthread.h>
+  int Global;
+  void *Thread1(void *x) {
+    Global = 42;
+    return x;
+  }
+  int main() {
+    pthread_t t;
+    pthread_create(&t, NULL, Thread1, NULL);
+    Global = 43;
+    pthread_join(t, NULL);
+    return Global;
+  }
+
+  $ clang -fsanitize=thread -g -O1 tiny_race.c
+
+If a bug is detected, the program will print an error message to stderr.
+Currently, ThreadSanitizer symbolizes its output using an external
+``addr2line`` process (this will be fixed in future).
+
+.. code-block:: bash
+
+  % ./a.out
+  WARNING: ThreadSanitizer: data race (pid=19219)
+    Write of size 4 at 0x7fcf47b21bc0 by thread T1:
+      #0 Thread1 tiny_race.c:4 (exe+0x00000000a360)
+
+    Previous write of size 4 at 0x7fcf47b21bc0 by main thread:
+      #0 main tiny_race.c:10 (exe+0x00000000a3b4)
+
+    Thread T1 (running) created at:
+      #0 pthread_create tsan_interceptors.cc:705 (exe+0x00000000c790)
+      #1 main tiny_race.c:9 (exe+0x00000000a3a4)
+
+``__has_feature(thread_sanitizer)``
+------------------------------------
+
+In some cases one may need to execute different code depending on whether
+ThreadSanitizer is enabled.
+:ref:`\_\_has\_feature <langext-__has_feature-__has_extension>` can be used for
+this purpose.
+
+.. code-block:: c
+
+    #if defined(__has_feature)
+    #  if __has_feature(thread_sanitizer)
+    // code that builds only under ThreadSanitizer
+    #  endif
+    #endif
+
+``__attribute__((no_sanitize_thread))``
+-----------------------------------------------
+
+Some code should not be instrumented by ThreadSanitizer.
+One may use the function attribute
+:ref:`no_sanitize_thread <langext-thread_sanitizer>`
+to disable instrumentation of plain (non-atomic) loads/stores in a particular function.
+ThreadSanitizer still instruments such functions to avoid false positives and
+provide meaningful stack traces.
+This attribute may not be
+supported by other compilers, so we suggest to use it together with
+``__has_feature(thread_sanitizer)``.
+
+Blacklist
+---------
+
+ThreadSanitizer supports ``src`` and ``fun`` entity types in
+:doc:`SanitizerSpecialCaseList`, that can be used to suppress data race reports in
+the specified source files or functions. Unlike functions marked with
+:ref:`no_sanitize_thread <langext-thread_sanitizer>` attribute,
+blacklisted functions are not instrumented at all. This can lead to false positives
+due to missed synchronization via atomic operations and missed stack frames in reports.
+
+Limitations
+-----------
+
+* ThreadSanitizer uses more real memory than a native run. At the default
+  settings the memory overhead is 5x plus 1Mb per each thread. Settings with 3x
+  (less accurate analysis) and 9x (more accurate analysis) overhead are also
+  available.
+* ThreadSanitizer maps (but does not reserve) a lot of virtual address space.
+  This means that tools like ``ulimit`` may not work as usually expected.
+* Libc/libstdc++ static linking is not supported.
+* Non-position-independent executables are not supported.  Therefore, the
+  ``fsanitize=thread`` flag will cause Clang to act as though the ``-fPIE``
+  flag had been supplied if compiling without ``-fPIC``, and as though the
+  ``-pie`` flag had been supplied if linking an executable.
+
+Current Status
+--------------
+
+ThreadSanitizer is in beta stage.  It is known to work on large C++ programs
+using pthreads, but we do not promise anything (yet).  C++11 threading is
+supported with llvm libc++.  The test suite is integrated into CMake build
+and can be run with ``make check-tsan`` command.
+
+We are actively working on enhancing the tool --- stay tuned.  Any help,
+especially in the form of minimized standalone tests is more than welcome.
+
+More Information
+----------------
+`http://code.google.com/p/thread-sanitizer <http://code.google.com/p/thread-sanitizer/>`_.
+

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/Tooling.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/Tooling.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/Tooling.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/Tooling.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,97 @@
+=================================================
+Choosing the Right Interface for Your Application
+=================================================
+
+Clang provides infrastructure to write tools that need syntactic and semantic
+information about a program.  This document will give a short introduction of
+the different ways to write clang tools, and their pros and cons.
+
+LibClang
+--------
+
+`LibClang <http://clang.llvm.org/doxygen/group__CINDEX.html>`_ is a stable high
+level C interface to clang.  When in doubt LibClang is probably the interface
+you want to use.  Consider the other interfaces only when you have a good
+reason not to use LibClang.
+
+Canonical examples of when to use LibClang:
+
+* Xcode
+* Clang Python Bindings
+
+Use LibClang when you...:
+
+* want to interface with clang from other languages than C++
+* need a stable interface that takes care to be backwards compatible
+* want powerful high-level abstractions, like iterating through an AST with a
+  cursor, and don't want to learn all the nitty gritty details of Clang's AST.
+
+Do not use LibClang when you...:
+
+* want full control over the Clang AST
+
+Clang Plugins
+-------------
+
+:doc:`Clang Plugins <ClangPlugins>` allow you to run additional actions on the
+AST as part of a compilation.  Plugins are dynamic libraries that are loaded at
+runtime by the compiler, and they're easy to integrate into your build
+environment.
+
+Canonical examples of when to use Clang Plugins:
+
+* special lint-style warnings or errors for your project
+* creating additional build artifacts from a single compile step
+
+Use Clang Plugins when you...:
+
+* need your tool to rerun if any of the dependencies change
+* want your tool to make or break a build
+* need full control over the Clang AST
+
+Do not use Clang Plugins when you...:
+
+* want to run tools outside of your build environment
+* want full control on how Clang is set up, including mapping of in-memory
+  virtual files
+* need to run over a specific subset of files in your project which is not
+  necessarily related to any changes which would trigger rebuilds
+
+LibTooling
+----------
+
+:doc:`LibTooling <LibTooling>` is a C++ interface aimed at writing standalone
+tools, as well as integrating into services that run clang tools.  Canonical
+examples of when to use LibTooling:
+
+* a simple syntax checker
+* refactoring tools
+
+Use LibTooling when you...:
+
+* want to run tools over a single file, or a specific subset of files,
+  independently of the build system
+* want full control over the Clang AST
+* want to share code with Clang Plugins
+
+Do not use LibTooling when you...:
+
+* want to run as part of the build triggered by dependency changes
+* want a stable interface so you don't need to change your code when the AST API
+  changes
+* want high level abstractions like cursors and code completion out of the box
+* do not want to write your tools in C++
+
+:doc:`Clang tools <ClangTools>` are a collection of specific developer tools
+built on top of the LibTooling infrastructure as part of the Clang project.
+They are targeted at automating and improving core development activities of
+C/C++ developers.
+
+Examples of tools we are building or planning as part of the Clang project:
+
+* Syntax checking (:program:`clang-check`)
+* Automatic fixing of compile errors (:program:`clang-fixit`)
+* Automatic code formatting (:program:`clang-format`)
+* Migration tools for new features in new language standards
+* Core refactoring tools
+

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/UsersManual.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/UsersManual.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/UsersManual.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/UsersManual.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1908 @@
+============================
+Clang Compiler User's Manual
+============================
+
+.. contents::
+   :local:
+
+Introduction
+============
+
+The Clang Compiler is an open-source compiler for the C family of
+programming languages, aiming to be the best in class implementation of
+these languages. Clang builds on the LLVM optimizer and code generator,
+allowing it to provide high-quality optimization and code generation
+support for many targets. For more general information, please see the
+`Clang Web Site <http://clang.llvm.org>`_ or the `LLVM Web
+Site <http://llvm.org>`_.
+
+This document describes important notes about using Clang as a compiler
+for an end-user, documenting the supported features, command line
+options, etc. If you are interested in using Clang to build a tool that
+processes code, please see :doc:`InternalsManual`. If you are interested in the
+`Clang Static Analyzer <http://clang-analyzer.llvm.org>`_, please see its web
+page.
+
+Clang is designed to support the C family of programming languages,
+which includes :ref:`C <c>`, :ref:`Objective-C <objc>`, :ref:`C++ <cxx>`, and
+:ref:`Objective-C++ <objcxx>` as well as many dialects of those. For
+language-specific information, please see the corresponding language
+specific section:
+
+-  :ref:`C Language <c>`: K&R C, ANSI C89, ISO C90, ISO C94 (C89+AMD1), ISO
+   C99 (+TC1, TC2, TC3).
+-  :ref:`Objective-C Language <objc>`: ObjC 1, ObjC 2, ObjC 2.1, plus
+   variants depending on base language.
+-  :ref:`C++ Language <cxx>`
+-  :ref:`Objective C++ Language <objcxx>`
+
+In addition to these base languages and their dialects, Clang supports a
+broad variety of language extensions, which are documented in the
+corresponding language section. These extensions are provided to be
+compatible with the GCC, Microsoft, and other popular compilers as well
+as to improve functionality through Clang-specific features. The Clang
+driver and language features are intentionally designed to be as
+compatible with the GNU GCC compiler as reasonably possible, easing
+migration from GCC to Clang. In most cases, code "just works".
+Clang also provides an alternative driver, :ref:`clang-cl`, that is designed
+to be compatible with the Visual C++ compiler, cl.exe.
+
+In addition to language specific features, Clang has a variety of
+features that depend on what CPU architecture or operating system is
+being compiled for. Please see the :ref:`Target-Specific Features and
+Limitations <target_features>` section for more details.
+
+The rest of the introduction introduces some basic :ref:`compiler
+terminology <terminology>` that is used throughout this manual and
+contains a basic :ref:`introduction to using Clang <basicusage>` as a
+command line compiler.
+
+.. _terminology:
+
+Terminology
+-----------
+
+Front end, parser, backend, preprocessor, undefined behavior,
+diagnostic, optimizer
+
+.. _basicusage:
+
+Basic Usage
+-----------
+
+Intro to how to use a C compiler for newbies.
+
+compile + link compile then link debug info enabling optimizations
+picking a language to use, defaults to C99 by default. Autosenses based
+on extension. using a makefile
+
+Command Line Options
+====================
+
+This section is generally an index into other sections. It does not go
+into depth on the ones that are covered by other sections. However, the
+first part introduces the language selection and other high level
+options like :option:`-c`, :option:`-g`, etc.
+
+Options to Control Error and Warning Messages
+---------------------------------------------
+
+.. option:: -Werror
+
+  Turn warnings into errors.
+
+.. This is in plain monospaced font because it generates the same label as
+.. -Werror, and Sphinx complains.
+
+``-Werror=foo``
+
+  Turn warning "foo" into an error.
+
+.. option:: -Wno-error=foo
+
+  Turn warning "foo" into an warning even if :option:`-Werror` is specified.
+
+.. option:: -Wfoo
+
+  Enable warning "foo".
+
+.. option:: -Wno-foo
+
+  Disable warning "foo".
+
+.. option:: -w
+
+  Disable all diagnostics.
+
+.. option:: -Weverything
+
+  :ref:`Enable all diagnostics. <diagnostics_enable_everything>`
+
+.. option:: -pedantic
+
+  Warn on language extensions.
+
+.. option:: -pedantic-errors
+
+  Error on language extensions.
+
+.. option:: -Wsystem-headers
+
+  Enable warnings from system headers.
+
+.. option:: -ferror-limit=123
+
+  Stop emitting diagnostics after 123 errors have been produced. The default is
+  20, and the error limit can be disabled with :option:`-ferror-limit=0`.
+
+.. option:: -ftemplate-backtrace-limit=123
+
+  Only emit up to 123 template instantiation notes within the template
+  instantiation backtrace for a single warning or error. The default is 10, and
+  the limit can be disabled with :option:`-ftemplate-backtrace-limit=0`.
+
+.. _cl_diag_formatting:
+
+Formatting of Diagnostics
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Clang aims to produce beautiful diagnostics by default, particularly for
+new users that first come to Clang. However, different people have
+different preferences, and sometimes Clang is driven by another program
+that wants to parse simple and consistent output, not a person. For
+these cases, Clang provides a wide range of options to control the exact
+output format of the diagnostics that it generates.
+
+.. _opt_fshow-column:
+
+**-f[no-]show-column**
+   Print column number in diagnostic.
+
+   This option, which defaults to on, controls whether or not Clang
+   prints the column number of a diagnostic. For example, when this is
+   enabled, Clang will print something like:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+   When this is disabled, Clang will print "test.c:28: warning..." with
+   no column number.
+
+   The printed column numbers count bytes from the beginning of the
+   line; take care if your source contains multibyte characters.
+
+.. _opt_fshow-source-location:
+
+**-f[no-]show-source-location**
+   Print source file/line/column information in diagnostic.
+
+   This option, which defaults to on, controls whether or not Clang
+   prints the filename, line number and column number of a diagnostic.
+   For example, when this is enabled, Clang will print something like:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+   When this is disabled, Clang will not print the "test.c:28:8: "
+   part.
+
+.. _opt_fcaret-diagnostics:
+
+**-f[no-]caret-diagnostics**
+   Print source line and ranges from source code in diagnostic.
+   This option, which defaults to on, controls whether or not Clang
+   prints the source line, source ranges, and caret when emitting a
+   diagnostic. For example, when this is enabled, Clang will print
+   something like:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+**-f[no-]color-diagnostics**
+   This option, which defaults to on when a color-capable terminal is
+   detected, controls whether or not Clang prints diagnostics in color.
+
+   When this option is enabled, Clang will use colors to highlight
+   specific parts of the diagnostic, e.g.,
+
+   .. nasty hack to not lose our dignity
+
+   .. raw:: html
+
+       <pre>
+         <b><span style="color:black">test.c:28:8: <span style="color:magenta">warning</span>: extra tokens at end of #endif directive [-Wextra-tokens]</span></b>
+         #endif bad
+                <span style="color:green">^</span>
+                <span style="color:green">//</span>
+       </pre>
+
+   When this is disabled, Clang will just print:
+
+   ::
+
+         test.c:2:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+**-fansi-escape-codes**
+   Controls whether ANSI escape codes are used instead of the Windows Console
+   API to output colored diagnostics. This option is only used on Windows and
+   defaults to off.
+
+.. option:: -fdiagnostics-format=clang/msvc/vi
+
+   Changes diagnostic output format to better match IDEs and command line tools.
+
+   This option controls the output format of the filename, line number,
+   and column printed in diagnostic messages. The options, and their
+   affect on formatting a simple conversion diagnostic, follow:
+
+   **clang** (default)
+       ::
+
+           t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
+
+   **msvc**
+       ::
+
+           t.c(3,11) : warning: conversion specifies type 'char *' but the argument has type 'int'
+
+   **vi**
+       ::
+
+           t.c +3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
+
+.. _opt_fdiagnostics-show-option:
+
+**-f[no-]diagnostics-show-option**
+   Enable ``[-Woption]`` information in diagnostic line.
+
+   This option, which defaults to on, controls whether or not Clang
+   prints the associated :ref:`warning group <cl_diag_warning_groups>`
+   option name when outputting a warning diagnostic. For example, in
+   this output:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+   Passing **-fno-diagnostics-show-option** will prevent Clang from
+   printing the [:ref:`-Wextra-tokens <opt_Wextra-tokens>`] information in
+   the diagnostic. This information tells you the flag needed to enable
+   or disable the diagnostic, either from the command line or through
+   :ref:`#pragma GCC diagnostic <pragma_GCC_diagnostic>`.
+
+.. _opt_fdiagnostics-show-category:
+
+.. option:: -fdiagnostics-show-category=none/id/name
+
+   Enable printing category information in diagnostic line.
+
+   This option, which defaults to "none", controls whether or not Clang
+   prints the category associated with a diagnostic when emitting it.
+   Each diagnostic may or many not have an associated category, if it
+   has one, it is listed in the diagnostic categorization field of the
+   diagnostic line (in the []'s).
+
+   For example, a format string warning will produce these three
+   renditions based on the setting of this option:
+
+   ::
+
+         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
+         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
+         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]
+
+   This category can be used by clients that want to group diagnostics
+   by category, so it should be a high level category. We want dozens
+   of these, not hundreds or thousands of them.
+
+.. _opt_fdiagnostics-fixit-info:
+
+**-f[no-]diagnostics-fixit-info**
+   Enable "FixIt" information in the diagnostics output.
+
+   This option, which defaults to on, controls whether or not Clang
+   prints the information on how to fix a specific diagnostic
+   underneath it when it knows. For example, in this output:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+                //
+
+   Passing **-fno-diagnostics-fixit-info** will prevent Clang from
+   printing the "//" line at the end of the message. This information
+   is useful for users who may not understand what is wrong, but can be
+   confusing for machine parsing.
+
+.. _opt_fdiagnostics-print-source-range-info:
+
+**-fdiagnostics-print-source-range-info**
+   Print machine parsable information about source ranges.
+   This option makes Clang print information about source ranges in a machine
+   parsable format after the file/line/column number information. The
+   information is a simple sequence of brace enclosed ranges, where each range
+   lists the start and end line/column locations. For example, in this output:
+
+   ::
+
+       exprs.c:47:15:{47:8-47:14}{47:17-47:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
+          P = (P-42) + Gamma*4;
+              ~~~~~~ ^ ~~~~~~~
+
+   The {}'s are generated by -fdiagnostics-print-source-range-info.
+
+   The printed column numbers count bytes from the beginning of the
+   line; take care if your source contains multibyte characters.
+
+.. option:: -fdiagnostics-parseable-fixits
+
+   Print Fix-Its in a machine parseable form.
+
+   This option makes Clang print available Fix-Its in a machine
+   parseable format at the end of diagnostics. The following example
+   illustrates the format:
+
+   ::
+
+        fix-it:"t.cpp":{7:25-7:29}:"Gamma"
+
+   The range printed is a half-open range, so in this example the
+   characters at column 25 up to but not including column 29 on line 7
+   in t.cpp should be replaced with the string "Gamma". Either the
+   range or the replacement string may be empty (representing strict
+   insertions and strict erasures, respectively). Both the file name
+   and the insertion string escape backslash (as "\\\\"), tabs (as
+   "\\t"), newlines (as "\\n"), double quotes(as "\\"") and
+   non-printable characters (as octal "\\xxx").
+
+   The printed column numbers count bytes from the beginning of the
+   line; take care if your source contains multibyte characters.
+
+.. option:: -fno-elide-type
+
+   Turns off elision in template type printing.
+
+   The default for template type printing is to elide as many template
+   arguments as possible, removing those which are the same in both
+   template types, leaving only the differences. Adding this flag will
+   print all the template arguments. If supported by the terminal,
+   highlighting will still appear on differing arguments.
+
+   Default:
+
+   ::
+
+       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
+
+   -fno-elide-type:
+
+   ::
+
+       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<int, map<float, int>>>' to 'vector<map<int, map<double, int>>>' for 1st argument;
+
+.. option:: -fdiagnostics-show-template-tree
+
+   Template type diffing prints a text tree.
+
+   For diffing large templated types, this option will cause Clang to
+   display the templates as an indented text tree, one argument per
+   line, with differences marked inline. This is compatible with
+   -fno-elide-type.
+
+   Default:
+
+   ::
+
+       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
+
+   With :option:`-fdiagnostics-show-template-tree`:
+
+   ::
+
+       t.cc:4:5: note: candidate function not viable: no known conversion for 1st argument;
+         vector<
+           map<
+             [...],
+             map<
+               [float != double],
+               [...]>>>
+
+.. _cl_diag_warning_groups:
+
+Individual Warning Groups
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+TODO: Generate this from tblgen. Define one anchor per warning group.
+
+.. _opt_wextra-tokens:
+
+.. option:: -Wextra-tokens
+
+   Warn about excess tokens at the end of a preprocessor directive.
+
+   This option, which defaults to on, enables warnings about extra
+   tokens at the end of preprocessor directives. For example:
+
+   ::
+
+         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
+         #endif bad
+                ^
+
+   These extra tokens are not strictly conforming, and are usually best
+   handled by commenting them out.
+
+.. option:: -Wambiguous-member-template
+
+   Warn about unqualified uses of a member template whose name resolves to
+   another template at the location of the use.
+
+   This option, which defaults to on, enables a warning in the
+   following code:
+
+   ::
+
+       template<typename T> struct set{};
+       template<typename T> struct trait { typedef const T& type; };
+       struct Value {
+         template<typename T> void set(typename trait<T>::type value) {}
+       };
+       void foo() {
+         Value v;
+         v.set<double>(3.2);
+       }
+
+   C++ [basic.lookup.classref] requires this to be an error, but,
+   because it's hard to work around, Clang downgrades it to a warning
+   as an extension.
+
+.. option:: -Wbind-to-temporary-copy
+
+   Warn about an unusable copy constructor when binding a reference to a
+   temporary.
+
+   This option, which defaults to on, enables warnings about binding a
+   reference to a temporary when the temporary doesn't have a usable
+   copy constructor. For example:
+
+   ::
+
+         struct NonCopyable {
+           NonCopyable();
+         private:
+           NonCopyable(const NonCopyable&);
+         };
+         void foo(const NonCopyable&);
+         void bar() {
+           foo(NonCopyable());  // Disallowed in C++98; allowed in C++11.
+         }
+
+   ::
+
+         struct NonCopyable2 {
+           NonCopyable2();
+           NonCopyable2(NonCopyable2&);
+         };
+         void foo(const NonCopyable2&);
+         void bar() {
+           foo(NonCopyable2());  // Disallowed in C++98; allowed in C++11.
+         }
+
+   Note that if ``NonCopyable2::NonCopyable2()`` has a default argument
+   whose instantiation produces a compile error, that error will still
+   be a hard error in C++98 mode even if this warning is turned off.
+
+Options to Control Clang Crash Diagnostics
+------------------------------------------
+
+As unbelievable as it may sound, Clang does crash from time to time.
+Generally, this only occurs to those living on the `bleeding
+edge <http://llvm.org/releases/download.html#svn>`_. Clang goes to great
+lengths to assist you in filing a bug report. Specifically, Clang
+generates preprocessed source file(s) and associated run script(s) upon
+a crash. These files should be attached to a bug report to ease
+reproducibility of the failure. Below are the command line options to
+control the crash diagnostics.
+
+.. option:: -fno-crash-diagnostics
+
+  Disable auto-generation of preprocessed source files during a clang crash.
+
+The -fno-crash-diagnostics flag can be helpful for speeding the process
+of generating a delta reduced test case.
+
+.. _opt_rpass:
+
+Options to Emit Optimization Reports
+------------------------------------
+
+Optimization reports trace, at a high-level, all the major decisions
+done by compiler transformations. For instance, when the inliner
+decides to inline function ``foo()`` into ``bar()``, or the loop unroller
+decides to unroll a loop N times, or the vectorizer decides to
+vectorize a loop body.
+
+Clang offers a family of flags which the optimizers can use to emit
+a diagnostic in three cases:
+
+1. When the pass makes a transformation (:option:`-Rpass`).
+
+2. When the pass fails to make a transformation (:option:`-Rpass-missed`).
+
+3. When the pass determines whether or not to make a transformation
+   (:option:`-Rpass-analysis`).
+
+NOTE: Although the discussion below focuses on :option:`-Rpass`, the exact
+same options apply to :option:`-Rpass-missed` and :option:`-Rpass-analysis`.
+
+Since there are dozens of passes inside the compiler, each of these flags
+take a regular expression that identifies the name of the pass which should
+emit the associated diagnostic. For example, to get a report from the inliner,
+compile the code with:
+
+.. code-block:: console
+
+   $ clang -O2 -Rpass=inline code.cc -o code
+   code.cc:4:25: remark: foo inlined into bar [-Rpass=inline]
+   int bar(int j) { return foo(j, j - 2); }
+                           ^
+
+Note that remarks from the inliner are identified with `[-Rpass=inline]`.
+To request a report from every optimization pass, you should use
+:option:`-Rpass=.*` (in fact, you can use any valid POSIX regular
+expression). However, do not expect a report from every transformation
+made by the compiler. Optimization remarks do not really make sense
+outside of the major transformations (e.g., inlining, vectorization,
+loop optimizations) and not every optimization pass supports this
+feature.
+
+Current limitations
+^^^^^^^^^^^^^^^^^^^
+
+1. Optimization remarks that refer to function names will display the
+   mangled name of the function. Since these remarks are emitted by the
+   back end of the compiler, it does not know anything about the input
+   language, nor its mangling rules.
+
+2. Some source locations are not displayed correctly. The front end has
+   a more detailed source location tracking than the locations included
+   in the debug info (e.g., the front end can locate code inside macro
+   expansions). However, the locations used by :option:`-Rpass` are
+   translated from debug annotations. That translation can be lossy,
+   which results in some remarks having no location information.
+
+
+Language and Target-Independent Features
+========================================
+
+Controlling Errors and Warnings
+-------------------------------
+
+Clang provides a number of ways to control which code constructs cause
+it to emit errors and warning messages, and how they are displayed to
+the console.
+
+Controlling How Clang Displays Diagnostics
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When Clang emits a diagnostic, it includes rich information in the
+output, and gives you fine-grain control over which information is
+printed. Clang has the ability to print this information, and these are
+the options that control it:
+
+#. A file/line/column indicator that shows exactly where the diagnostic
+   occurs in your code [:ref:`-fshow-column <opt_fshow-column>`,
+   :ref:`-fshow-source-location <opt_fshow-source-location>`].
+#. A categorization of the diagnostic as a note, warning, error, or
+   fatal error.
+#. A text string that describes what the problem is.
+#. An option that indicates how to control the diagnostic (for
+   diagnostics that support it)
+   [:ref:`-fdiagnostics-show-option <opt_fdiagnostics-show-option>`].
+#. A :ref:`high-level category <diagnostics_categories>` for the diagnostic
+   for clients that want to group diagnostics by class (for diagnostics
+   that support it)
+   [:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>`].
+#. The line of source code that the issue occurs on, along with a caret
+   and ranges that indicate the important locations
+   [:ref:`-fcaret-diagnostics <opt_fcaret-diagnostics>`].
+#. "FixIt" information, which is a concise explanation of how to fix the
+   problem (when Clang is certain it knows)
+   [:ref:`-fdiagnostics-fixit-info <opt_fdiagnostics-fixit-info>`].
+#. A machine-parsable representation of the ranges involved (off by
+   default)
+   [:ref:`-fdiagnostics-print-source-range-info <opt_fdiagnostics-print-source-range-info>`].
+
+For more information please see :ref:`Formatting of
+Diagnostics <cl_diag_formatting>`.
+
+Diagnostic Mappings
+^^^^^^^^^^^^^^^^^^^
+
+All diagnostics are mapped into one of these 5 classes:
+
+-  Ignored
+-  Note
+-  Remark
+-  Warning
+-  Error
+-  Fatal
+
+.. _diagnostics_categories:
+
+Diagnostic Categories
+^^^^^^^^^^^^^^^^^^^^^
+
+Though not shown by default, diagnostics may each be associated with a
+high-level category. This category is intended to make it possible to
+triage builds that produce a large number of errors or warnings in a
+grouped way.
+
+Categories are not shown by default, but they can be turned on with the
+:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>` option.
+When set to "``name``", the category is printed textually in the
+diagnostic output. When it is set to "``id``", a category number is
+printed. The mapping of category names to category id's can be obtained
+by running '``clang   --print-diagnostic-categories``'.
+
+Controlling Diagnostics via Command Line Flags
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+TODO: -W flags, -pedantic, etc
+
+.. _pragma_gcc_diagnostic:
+
+Controlling Diagnostics via Pragmas
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Clang can also control what diagnostics are enabled through the use of
+pragmas in the source code. This is useful for turning off specific
+warnings in a section of source code. Clang supports GCC's pragma for
+compatibility with existing source code, as well as several extensions.
+
+The pragma may control any warning that can be used from the command
+line. Warnings may be set to ignored, warning, error, or fatal. The
+following example code will tell Clang or GCC to ignore the -Wall
+warnings:
+
+.. code-block:: c
+
+  #pragma GCC diagnostic ignored "-Wall"
+
+In addition to all of the functionality provided by GCC's pragma, Clang
+also allows you to push and pop the current warning state. This is
+particularly useful when writing a header file that will be compiled by
+other people, because you don't know what warning flags they build with.
+
+In the below example :option:`-Wmultichar` is ignored for only a single line of
+code, after which the diagnostics return to whatever state had previously
+existed.
+
+.. code-block:: c
+
+  #pragma clang diagnostic push
+  #pragma clang diagnostic ignored "-Wmultichar"
+
+  char b = 'df'; // no warning.
+
+  #pragma clang diagnostic pop
+
+The push and pop pragmas will save and restore the full diagnostic state
+of the compiler, regardless of how it was set. That means that it is
+possible to use push and pop around GCC compatible diagnostics and Clang
+will push and pop them appropriately, while GCC will ignore the pushes
+and pops as unknown pragmas. It should be noted that while Clang
+supports the GCC pragma, Clang and GCC do not support the exact same set
+of warnings, so even when using GCC compatible #pragmas there is no
+guarantee that they will have identical behaviour on both compilers.
+
+In addition to controlling warnings and errors generated by the compiler, it is
+possible to generate custom warning and error messages through the following
+pragmas:
+
+.. code-block:: c
+
+  // The following will produce warning messages
+  #pragma message "some diagnostic message"
+  #pragma GCC warning "TODO: replace deprecated feature"
+
+  // The following will produce an error message
+  #pragma GCC error "Not supported"
+
+These pragmas operate similarly to the ``#warning`` and ``#error`` preprocessor
+directives, except that they may also be embedded into preprocessor macros via
+the C99 ``_Pragma`` operator, for example:
+
+.. code-block:: c
+
+  #define STR(X) #X
+  #define DEFER(M,...) M(__VA_ARGS__)
+  #define CUSTOM_ERROR(X) _Pragma(STR(GCC error(X " at line " DEFER(STR,__LINE__))))
+
+  CUSTOM_ERROR("Feature not available");
+
+Controlling Diagnostics in System Headers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Warnings are suppressed when they occur in system headers. By default,
+an included file is treated as a system header if it is found in an
+include path specified by ``-isystem``, but this can be overridden in
+several ways.
+
+The ``system_header`` pragma can be used to mark the current file as
+being a system header. No warnings will be produced from the location of
+the pragma onwards within the same file.
+
+.. code-block:: c
+
+  char a = 'xy'; // warning
+
+  #pragma clang system_header
+
+  char b = 'ab'; // no warning
+
+The :option:`--system-header-prefix=` and :option:`--no-system-header-prefix=`
+command-line arguments can be used to override whether subsets of an include
+path are treated as system headers. When the name in a ``#include`` directive
+is found within a header search path and starts with a system prefix, the
+header is treated as a system header. The last prefix on the
+command-line which matches the specified header name takes precedence.
+For instance:
+
+.. code-block:: console
+
+  $ clang -Ifoo -isystem bar --system-header-prefix=x/ \
+      --no-system-header-prefix=x/y/
+
+Here, ``#include "x/a.h"`` is treated as including a system header, even
+if the header is found in ``foo``, and ``#include "x/y/b.h"`` is treated
+as not including a system header, even if the header is found in
+``bar``.
+
+A ``#include`` directive which finds a file relative to the current
+directory is treated as including a system header if the including file
+is treated as a system header.
+
+.. _diagnostics_enable_everything:
+
+Enabling All Diagnostics
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In addition to the traditional ``-W`` flags, one can enable **all**
+diagnostics by passing :option:`-Weverything`. This works as expected
+with
+:option:`-Werror`, and also includes the warnings from :option:`-pedantic`.
+
+Note that when combined with :option:`-w` (which disables all warnings), that
+flag wins.
+
+Controlling Static Analyzer Diagnostics
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+While not strictly part of the compiler, the diagnostics from Clang's
+`static analyzer <http://clang-analyzer.llvm.org>`_ can also be
+influenced by the user via changes to the source code. See the available
+`annotations <http://clang-analyzer.llvm.org/annotations.html>`_ and the
+analyzer's `FAQ
+page <http://clang-analyzer.llvm.org/faq.html#exclude_code>`_ for more
+information.
+
+.. _usersmanual-precompiled-headers:
+
+Precompiled Headers
+-------------------
+
+`Precompiled headers <http://en.wikipedia.org/wiki/Precompiled_header>`__
+are a general approach employed by many compilers to reduce compilation
+time. The underlying motivation of the approach is that it is common for
+the same (and often large) header files to be included by multiple
+source files. Consequently, compile times can often be greatly improved
+by caching some of the (redundant) work done by a compiler to process
+headers. Precompiled header files, which represent one of many ways to
+implement this optimization, are literally files that represent an
+on-disk cache that contains the vital information necessary to reduce
+some of the work needed to process a corresponding header file. While
+details of precompiled headers vary between compilers, precompiled
+headers have been shown to be highly effective at speeding up program
+compilation on systems with very large system headers (e.g., Mac OS X).
+
+Generating a PCH File
+^^^^^^^^^^^^^^^^^^^^^
+
+To generate a PCH file using Clang, one invokes Clang with the
+:option:`-x <language>-header` option. This mirrors the interface in GCC
+for generating PCH files:
+
+.. code-block:: console
+
+  $ gcc -x c-header test.h -o test.h.gch
+  $ clang -x c-header test.h -o test.h.pch
+
+Using a PCH File
+^^^^^^^^^^^^^^^^
+
+A PCH file can then be used as a prefix header when a :option:`-include`
+option is passed to ``clang``:
+
+.. code-block:: console
+
+  $ clang -include test.h test.c -o test
+
+The ``clang`` driver will first check if a PCH file for ``test.h`` is
+available; if so, the contents of ``test.h`` (and the files it includes)
+will be processed from the PCH file. Otherwise, Clang falls back to
+directly processing the content of ``test.h``. This mirrors the behavior
+of GCC.
+
+.. note::
+
+  Clang does *not* automatically use PCH files for headers that are directly
+  included within a source file. For example:
+
+  .. code-block:: console
+
+    $ clang -x c-header test.h -o test.h.pch
+    $ cat test.c
+    #include "test.h"
+    $ clang test.c -o test
+
+  In this example, ``clang`` will not automatically use the PCH file for
+  ``test.h`` since ``test.h`` was included directly in the source file and not
+  specified on the command line using :option:`-include`.
+
+Relocatable PCH Files
+^^^^^^^^^^^^^^^^^^^^^
+
+It is sometimes necessary to build a precompiled header from headers
+that are not yet in their final, installed locations. For example, one
+might build a precompiled header within the build tree that is then
+meant to be installed alongside the headers. Clang permits the creation
+of "relocatable" precompiled headers, which are built with a given path
+(into the build directory) and can later be used from an installed
+location.
+
+To build a relocatable precompiled header, place your headers into a
+subdirectory whose structure mimics the installed location. For example,
+if you want to build a precompiled header for the header ``mylib.h``
+that will be installed into ``/usr/include``, create a subdirectory
+``build/usr/include`` and place the header ``mylib.h`` into that
+subdirectory. If ``mylib.h`` depends on other headers, then they can be
+stored within ``build/usr/include`` in a way that mimics the installed
+location.
+
+Building a relocatable precompiled header requires two additional
+arguments. First, pass the ``--relocatable-pch`` flag to indicate that
+the resulting PCH file should be relocatable. Second, pass
+:option:`-isysroot /path/to/build`, which makes all includes for your library
+relative to the build directory. For example:
+
+.. code-block:: console
+
+  # clang -x c-header --relocatable-pch -isysroot /path/to/build /path/to/build/mylib.h mylib.h.pch
+
+When loading the relocatable PCH file, the various headers used in the
+PCH file are found from the system header root. For example, ``mylib.h``
+can be found in ``/usr/include/mylib.h``. If the headers are installed
+in some other system root, the :option:`-isysroot` option can be used provide
+a different system root from which the headers will be based. For
+example, :option:`-isysroot /Developer/SDKs/MacOSX10.4u.sdk` will look for
+``mylib.h`` in ``/Developer/SDKs/MacOSX10.4u.sdk/usr/include/mylib.h``.
+
+Relocatable precompiled headers are intended to be used in a limited
+number of cases where the compilation environment is tightly controlled
+and the precompiled header cannot be generated after headers have been
+installed.
+
+Controlling Code Generation
+---------------------------
+
+Clang provides a number of ways to control code generation. The options
+are listed below.
+
+**-f[no-]sanitize=check1,check2,...**
+   Turn on runtime checks for various forms of undefined or suspicious
+   behavior.
+
+   This option controls whether Clang adds runtime checks for various
+   forms of undefined or suspicious behavior, and is disabled by
+   default. If a check fails, a diagnostic message is produced at
+   runtime explaining the problem. The main checks are:
+
+   -  .. _opt_fsanitize_address:
+
+      ``-fsanitize=address``:
+      :doc:`AddressSanitizer`, a memory error
+      detector.
+   -  ``-fsanitize=integer``: Enables checks for undefined or
+      suspicious integer behavior.
+   -  .. _opt_fsanitize_thread:
+
+      ``-fsanitize=thread``: :doc:`ThreadSanitizer`, a data race detector.
+   -  .. _opt_fsanitize_memory:
+
+      ``-fsanitize=memory``: :doc:`MemorySanitizer`,
+      an *experimental* detector of uninitialized reads. Not ready for
+      widespread use.
+   -  .. _opt_fsanitize_undefined:
+
+      ``-fsanitize=undefined``: Fast and compatible undefined behavior
+      checker. Enables the undefined behavior checks that have small
+      runtime cost and no impact on address space layout or ABI. This
+      includes all of the checks listed below other than
+      ``unsigned-integer-overflow``.
+
+   -  ``-fsanitize=undefined-trap``: This includes all sanitizers
+      included by ``-fsanitize=undefined``, except those that require
+      runtime support. This group of sanitizers is intended to be
+      used in conjunction with the ``-fsanitize-undefined-trap-on-error``
+      flag. This includes all of the checks listed below other than
+      ``unsigned-integer-overflow`` and ``vptr``.
+   -  ``-fsanitize=dataflow``: :doc:`DataFlowSanitizer`, a general data
+      flow analysis.
+
+   The following more fine-grained checks are also available:
+
+   -  ``-fsanitize=alignment``: Use of a misaligned pointer or creation
+      of a misaligned reference.
+   -  ``-fsanitize=bool``: Load of a ``bool`` value which is neither
+      ``true`` nor ``false``.
+   -  ``-fsanitize=bounds``: Out of bounds array indexing, in cases
+      where the array bound can be statically determined.
+   -  ``-fsanitize=enum``: Load of a value of an enumerated type which
+      is not in the range of representable values for that enumerated
+      type.
+   -  ``-fsanitize=float-cast-overflow``: Conversion to, from, or
+      between floating-point types which would overflow the
+      destination.
+   -  ``-fsanitize=float-divide-by-zero``: Floating point division by
+      zero.
+   -  ``-fsanitize=function``: Indirect call of a function through a
+      function pointer of the wrong type (Linux, C++ and x86/x86_64 only).
+   -  ``-fsanitize=integer-divide-by-zero``: Integer division by zero.
+   -  ``-fsanitize=null``: Use of a null pointer or creation of a null
+      reference.
+   -  ``-fsanitize=object-size``: An attempt to use bytes which the
+      optimizer can determine are not part of the object being
+      accessed. The sizes of objects are determined using
+      ``__builtin_object_size``, and consequently may be able to detect
+      more problems at higher optimization levels.
+   -  ``-fsanitize=return``: In C++, reaching the end of a
+      value-returning function without returning a value.
+   -  ``-fsanitize=shift``: Shift operators where the amount shifted is
+      greater or equal to the promoted bit-width of the left hand side
+      or less than zero, or where the left hand side is negative. For a
+      signed left shift, also checks for signed overflow in C, and for
+      unsigned overflow in C++.
+   -  ``-fsanitize=signed-integer-overflow``: Signed integer overflow,
+      including all the checks added by ``-ftrapv``, and checking for
+      overflow in signed division (``INT_MIN / -1``).
+   -  ``-fsanitize=unreachable``: If control flow reaches
+      ``__builtin_unreachable``.
+   -  ``-fsanitize=unsigned-integer-overflow``: Unsigned integer
+      overflows.
+   -  ``-fsanitize=vla-bound``: A variable-length array whose bound
+      does not evaluate to a positive value.
+   -  ``-fsanitize=vptr``: Use of an object whose vptr indicates that
+      it is of the wrong dynamic type, or that its lifetime has not
+      begun or has ended. Incompatible with ``-fno-rtti``.
+
+   You can turn off or modify checks for certain source files, functions
+   or even variables by providing a special file:
+
+   -  ``-fsanitize-blacklist=/path/to/blacklist/file``: disable or modify
+      sanitizer checks for objects listed in the file. See
+      :doc:`SanitizerSpecialCaseList` for file format description.
+   -  ``-fno-sanitize-blacklist``: don't use blacklist file, if it was
+      specified earlier in the command line.
+
+   Extra features of MemorySanitizer (require explicit
+   ``-fsanitize=memory``):
+
+   -  ``-fsanitize-memory-track-origins[=level]``: Enables origin tracking in
+      MemorySanitizer. Adds a second section to MemorySanitizer
+      reports pointing to the heap or stack allocation the
+      uninitialized bits came from. Slows down execution by additional
+      1.5x-2x.
+
+      Possible values for level are 0 (off), 1 (default), 2. Level 2 adds more
+      sections to MemorySanitizer reports describing the order of memory stores
+      the uninitialized value went through. Beware, this mode may use a lot of
+      extra memory.
+
+   Extra features of UndefinedBehaviorSanitizer:
+
+   -  ``-fno-sanitize-recover``: By default, after a sanitizer diagnoses
+      an issue, it will attempt to continue executing the program if there
+      is a reasonable behavior it can give to the faulting operation. This
+      option causes the program to abort instead.
+   -  ``-fsanitize-undefined-trap-on-error``: Causes traps to be emitted
+      rather than calls to runtime libraries when a problem is detected.
+      This option is intended for use in cases where the sanitizer runtime
+      cannot be used (for instance, when building libc or a kernel module).
+      This is only compatible with the sanitizers in the ``undefined-trap``
+      group.
+
+   The ``-fsanitize=`` argument must also be provided when linking, in
+   order to link to the appropriate runtime library. When using
+   ``-fsanitize=vptr`` (or a group that includes it, such as
+   ``-fsanitize=undefined``) with a C++ program, the link must be
+   performed by ``clang++``, not ``clang``, in order to link against the
+   C++-specific parts of the runtime library.
+
+   It is not possible to combine more than one of the ``-fsanitize=address``,
+   ``-fsanitize=thread``, and ``-fsanitize=memory`` checkers in the same
+   program. The ``-fsanitize=undefined`` checks can be combined with other
+   sanitizers.
+
+.. option:: -fno-assume-sane-operator-new
+
+   Don't assume that the C++'s new operator is sane.
+
+   This option tells the compiler to do not assume that C++'s global
+   new operator will always return a pointer that does not alias any
+   other pointer when the function returns.
+
+.. option:: -ftrap-function=[name]
+
+   Instruct code generator to emit a function call to the specified
+   function name for ``__builtin_trap()``.
+
+   LLVM code generator translates ``__builtin_trap()`` to a trap
+   instruction if it is supported by the target ISA. Otherwise, the
+   builtin is translated into a call to ``abort``. If this option is
+   set, then the code generator will always lower the builtin to a call
+   to the specified function regardless of whether the target ISA has a
+   trap instruction. This option is useful for environments (e.g.
+   deeply embedded) where a trap cannot be properly handled, or when
+   some custom behavior is desired.
+
+.. option:: -ftls-model=[model]
+
+   Select which TLS model to use.
+
+   Valid values are: ``global-dynamic``, ``local-dynamic``,
+   ``initial-exec`` and ``local-exec``. The default value is
+   ``global-dynamic``. The compiler may use a different model if the
+   selected model is not supported by the target, or if a more
+   efficient model can be used. The TLS model can be overridden per
+   variable using the ``tls_model`` attribute.
+
+.. option:: -mhwdiv=[values]
+
+   Select the ARM modes (arm or thumb) that support hardware division
+   instructions.
+
+   Valid values are: ``arm``, ``thumb`` and ``arm,thumb``.
+   This option is used to indicate which mode (arm or thumb) supports
+   hardware division instructions. This only applies to the ARM
+   architecture.
+
+.. option:: -m[no-]crc
+
+   Enable or disable CRC instructions.
+
+   This option is used to indicate whether CRC instructions are to
+   be generated. This only applies to the ARM architecture.
+
+   CRC instructions are enabled by default on ARMv8.
+
+.. option:: -mgeneral-regs-only
+
+   Generate code which only uses the general purpose registers.
+
+   This option restricts the generated code to use general registers
+   only. This only applies to the AArch64 architecture.
+
+
+Profile Guided Optimization
+---------------------------
+
+Profile information enables better optimization. For example, knowing that a
+branch is taken very frequently helps the compiler make better decisions when
+ordering basic blocks. Knowing that a function ``foo`` is called more
+frequently than another function ``bar`` helps the inliner.
+
+Clang supports profile guided optimization with two different kinds of
+profiling. A sampling profiler can generate a profile with very low runtime
+overhead, or you can build an instrumented version of the code that collects
+more detailed profile information. Both kinds of profiles can provide execution
+counts for instructions in the code and information on branches taken and
+function invocation.
+
+Regardless of which kind of profiling you use, be careful to collect profiles
+by running your code with inputs that are representative of the typical
+behavior. Code that is not exercised in the profile will be optimized as if it
+is unimportant, and the compiler may make poor optimization choices for code
+that is disproportionately used while profiling.
+
+Using Sampling Profilers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sampling profilers are used to collect runtime information, such as
+hardware counters, while your application executes. They are typically
+very efficient and do not incur a large runtime overhead. The
+sample data collected by the profiler can be used during compilation
+to determine what the most executed areas of the code are.
+
+Using the data from a sample profiler requires some changes in the way
+a program is built. Before the compiler can use profiling information,
+the code needs to execute under the profiler. The following is the
+usual build cycle when using sample profilers for optimization:
+
+1. Build the code with source line table information. You can use all the
+   usual build flags that you always build your application with. The only
+   requirement is that you add ``-gline-tables-only`` or ``-g`` to the
+   command line. This is important for the profiler to be able to map
+   instructions back to source line locations.
+
+   .. code-block:: console
+
+     $ clang++ -O2 -gline-tables-only code.cc -o code
+
+2. Run the executable under a sampling profiler. The specific profiler
+   you use does not really matter, as long as its output can be converted
+   into the format that the LLVM optimizer understands. Currently, there
+   exists a conversion tool for the Linux Perf profiler
+   (https://perf.wiki.kernel.org/), so these examples assume that you
+   are using Linux Perf to profile your code.
+
+   .. code-block:: console
+
+     $ perf record -b ./code
+
+   Note the use of the ``-b`` flag. This tells Perf to use the Last Branch
+   Record (LBR) to record call chains. While this is not strictly required,
+   it provides better call information, which improves the accuracy of
+   the profile data.
+
+3. Convert the collected profile data to LLVM's sample profile format.
+   This is currently supported via the AutoFDO converter ``create_llvm_prof``.
+   It is available at http://github.com/google/autofdo. Once built and
+   installed, you can convert the ``perf.data`` file to LLVM using
+   the command:
+
+   .. code-block:: console
+
+     $ create_llvm_prof --binary=./code --out=code.prof
+
+   This will read ``perf.data`` and the binary file ``./code`` and emit
+   the profile data in ``code.prof``. Note that if you ran ``perf``
+   without the ``-b`` flag, you need to use ``--use_lbr=false`` when
+   calling ``create_llvm_prof``.
+
+4. Build the code again using the collected profile. This step feeds
+   the profile back to the optimizers. This should result in a binary
+   that executes faster than the original one. Note that you are not
+   required to build the code with the exact same arguments that you
+   used in the first step. The only requirement is that you build the code
+   with ``-gline-tables-only`` and ``-fprofile-sample-use``.
+
+   .. code-block:: console
+
+     $ clang++ -O2 -gline-tables-only -fprofile-sample-use=code.prof code.cc -o code
+
+
+Sample Profile Format
+"""""""""""""""""""""
+
+If you are not using Linux Perf to collect profiles, you will need to
+write a conversion tool from your profiler to LLVM's format. This section
+explains the file format expected by the backend.
+
+Sample profiles are written as ASCII text. The file is divided into sections,
+which correspond to each of the functions executed at runtime. Each
+section has the following format (taken from
+https://github.com/google/autofdo/blob/master/profile_writer.h):
+
+.. code-block:: console
+
+    function1:total_samples:total_head_samples
+    offset1[.discriminator]: number_of_samples [fn1:num fn2:num ... ]
+    offset2[.discriminator]: number_of_samples [fn3:num fn4:num ... ]
+    ...
+    offsetN[.discriminator]: number_of_samples [fn5:num fn6:num ... ]
+
+The file may contain blank lines between sections and within a
+section. However, the spacing within a single line is fixed. Additional
+spaces will result in an error while reading the file.
+
+Function names must be mangled in order for the profile loader to
+match them in the current translation unit. The two numbers in the
+function header specify how many total samples were accumulated in the
+function (first number), and the total number of samples accumulated
+in the prologue of the function (second number). This head sample
+count provides an indicator of how frequently the function is invoked.
+
+Each sampled line may contain several items. Some are optional (marked
+below):
+
+a. Source line offset. This number represents the line number
+   in the function where the sample was collected. The line number is
+   always relative to the line where symbol of the function is
+   defined. So, if the function has its header at line 280, the offset
+   13 is at line 293 in the file.
+
+   Note that this offset should never be a negative number. This could
+   happen in cases like macros. The debug machinery will register the
+   line number at the point of macro expansion. So, if the macro was
+   expanded in a line before the start of the function, the profile
+   converter should emit a 0 as the offset (this means that the optimizers
+   will not be able to associate a meaningful weight to the instructions
+   in the macro).
+
+b. [OPTIONAL] Discriminator. This is used if the sampled program
+   was compiled with DWARF discriminator support
+   (http://wiki.dwarfstd.org/index.php?title=Path_Discriminators).
+   DWARF discriminators are unsigned integer values that allow the
+   compiler to distinguish between multiple execution paths on the
+   same source line location.
+
+   For example, consider the line of code ``if (cond) foo(); else bar();``.
+   If the predicate ``cond`` is true 80% of the time, then the edge
+   into function ``foo`` should be considered to be taken most of the
+   time. But both calls to ``foo`` and ``bar`` are at the same source
+   line, so a sample count at that line is not sufficient. The
+   compiler needs to know which part of that line is taken more
+   frequently.
+
+   This is what discriminators provide. In this case, the calls to
+   ``foo`` and ``bar`` will be at the same line, but will have
+   different discriminator values. This allows the compiler to correctly
+   set edge weights into ``foo`` and ``bar``.
+
+c. Number of samples. This is an integer quantity representing the
+   number of samples collected by the profiler at this source
+   location.
+
+d. [OPTIONAL] Potential call targets and samples. If present, this
+   line contains a call instruction. This models both direct and
+   number of samples. For example,
+
+   .. code-block:: console
+
+     130: 7  foo:3  bar:2  baz:7
+
+   The above means that at relative line offset 130 there is a call
+   instruction that calls one of ``foo()``, ``bar()`` and ``baz()``,
+   with ``baz()`` being the relatively more frequently called target.
+
+
+Profiling with Instrumentation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Clang also supports profiling via instrumentation. This requires building a
+special instrumented version of the code and has some runtime
+overhead during the profiling, but it provides more detailed results than a
+sampling profiler. It also provides reproducible results, at least to the
+extent that the code behaves consistently across runs.
+
+Here are the steps for using profile guided optimization with
+instrumentation:
+
+1. Build an instrumented version of the code by compiling and linking with the
+   ``-fprofile-instr-generate`` option.
+
+   .. code-block:: console
+
+     $ clang++ -O2 -fprofile-instr-generate code.cc -o code
+
+2. Run the instrumented executable with inputs that reflect the typical usage.
+   By default, the profile data will be written to a ``default.profraw`` file
+   in the current directory. You can override that default by setting the
+   ``LLVM_PROFILE_FILE`` environment variable to specify an alternate file.
+   Any instance of ``%p`` in that file name will be replaced by the process
+   ID, so that you can easily distinguish the profile output from multiple
+   runs.
+
+   .. code-block:: console
+
+     $ LLVM_PROFILE_FILE="code-%p.profraw" ./code
+
+3. Combine profiles from multiple runs and convert the "raw" profile format to
+   the input expected by clang. Use the ``merge`` command of the llvm-profdata
+   tool to do this.
+
+   .. code-block:: console
+
+     $ llvm-profdata merge -output=code.profdata code-*.profraw
+
+   Note that this step is necessary even when there is only one "raw" profile,
+   since the merge operation also changes the file format.
+
+4. Build the code again using the ``-fprofile-instr-use`` option to specify the
+   collected profile data.
+
+   .. code-block:: console
+
+     $ clang++ -O2 -fprofile-instr-use=code.profdata code.cc -o code
+
+   You can repeat step 4 as often as you like without regenerating the
+   profile. As you make changes to your code, clang may no longer be able to
+   use the profile data. It will warn you when this happens.
+
+
+Controlling Size of Debug Information
+-------------------------------------
+
+Debug info kind generated by Clang can be set by one of the flags listed
+below. If multiple flags are present, the last one is used.
+
+.. option:: -g0
+
+  Don't generate any debug info (default).
+
+.. option:: -gline-tables-only
+
+  Generate line number tables only.
+
+  This kind of debug info allows to obtain stack traces with function names,
+  file names and line numbers (by such tools as ``gdb`` or ``addr2line``).  It
+  doesn't contain any other data (e.g. description of local variables or
+  function parameters).
+
+.. option:: -fstandalone-debug
+
+  Clang supports a number of optimizations to reduce the size of debug
+  information in the binary. They work based on the assumption that
+  the debug type information can be spread out over multiple
+  compilation units.  For instance, Clang will not emit type
+  definitions for types that are not needed by a module and could be
+  replaced with a forward declaration.  Further, Clang will only emit
+  type info for a dynamic C++ class in the module that contains the
+  vtable for the class.
+
+  The **-fstandalone-debug** option turns off these optimizations.
+  This is useful when working with 3rd-party libraries that don't come
+  with debug information.  Note that Clang will never emit type
+  information for types that are not referenced at all by the program.
+
+.. option:: -fno-standalone-debug
+
+   On Darwin **-fstandalone-debug** is enabled by default. The
+   **-fno-standalone-debug** option can be used to get to turn on the
+   vtable-based optimization described above.
+
+.. option:: -g
+
+  Generate complete debug info.
+
+Comment Parsing Options
+-----------------------
+
+Clang parses Doxygen and non-Doxygen style documentation comments and attaches
+them to the appropriate declaration nodes.  By default, it only parses
+Doxygen-style comments and ignores ordinary comments starting with ``//`` and
+``/*``.
+
+.. option:: -Wdocumentation
+
+  Emit warnings about use of documentation comments.  This warning group is off
+  by default.
+
+  This includes checking that ``\param`` commands name parameters that actually
+  present in the function signature, checking that ``\returns`` is used only on
+  functions that actually return a value etc.
+
+.. option:: -Wno-documentation-unknown-command
+
+  Don't warn when encountering an unknown Doxygen command.
+
+.. option:: -fparse-all-comments
+
+  Parse all comments as documentation comments (including ordinary comments
+  starting with ``//`` and ``/*``).
+
+.. option:: -fcomment-block-commands=[commands]
+
+  Define custom documentation commands as block commands.  This allows Clang to
+  construct the correct AST for these custom commands, and silences warnings
+  about unknown commands.  Several commands must be separated by a comma
+  *without trailing space*; e.g. ``-fcomment-block-commands=foo,bar`` defines
+  custom commands ``\foo`` and ``\bar``.
+
+  It is also possible to use ``-fcomment-block-commands`` several times; e.g.
+  ``-fcomment-block-commands=foo -fcomment-block-commands=bar`` does the same
+  as above.
+
+.. _c:
+
+C Language Features
+===================
+
+The support for standard C in clang is feature-complete except for the
+C99 floating-point pragmas.
+
+Extensions supported by clang
+-----------------------------
+
+See :doc:`LanguageExtensions`.
+
+Differences between various standard modes
+------------------------------------------
+
+clang supports the -std option, which changes what language mode clang
+uses. The supported modes for C are c89, gnu89, c94, c99, gnu99 and
+various aliases for those modes. If no -std option is specified, clang
+defaults to gnu99 mode.
+
+Differences between all ``c*`` and ``gnu*`` modes:
+
+-  ``c*`` modes define "``__STRICT_ANSI__``".
+-  Target-specific defines not prefixed by underscores, like "linux",
+   are defined in ``gnu*`` modes.
+-  Trigraphs default to being off in ``gnu*`` modes; they can be enabled by
+   the -trigraphs option.
+-  The parser recognizes "asm" and "typeof" as keywords in ``gnu*`` modes;
+   the variants "``__asm__``" and "``__typeof__``" are recognized in all
+   modes.
+-  The Apple "blocks" extension is recognized by default in ``gnu*`` modes
+   on some platforms; it can be enabled in any mode with the "-fblocks"
+   option.
+-  Arrays that are VLA's according to the standard, but which can be
+   constant folded by the frontend are treated as fixed size arrays.
+   This occurs for things like "int X[(1, 2)];", which is technically a
+   VLA. ``c*`` modes are strictly compliant and treat these as VLAs.
+
+Differences between ``*89`` and ``*99`` modes:
+
+-  The ``*99`` modes default to implementing "inline" as specified in C99,
+   while the ``*89`` modes implement the GNU version. This can be
+   overridden for individual functions with the ``__gnu_inline__``
+   attribute.
+-  Digraphs are not recognized in c89 mode.
+-  The scope of names defined inside a "for", "if", "switch", "while",
+   or "do" statement is different. (example: "``if ((struct x {int
+   x;}*)0) {}``".)
+-  ``__STDC_VERSION__`` is not defined in ``*89`` modes.
+-  "inline" is not recognized as a keyword in c89 mode.
+-  "restrict" is not recognized as a keyword in ``*89`` modes.
+-  Commas are allowed in integer constant expressions in ``*99`` modes.
+-  Arrays which are not lvalues are not implicitly promoted to pointers
+   in ``*89`` modes.
+-  Some warnings are different.
+
+c94 mode is identical to c89 mode except that digraphs are enabled in
+c94 mode (FIXME: And ``__STDC_VERSION__`` should be defined!).
+
+GCC extensions not implemented yet
+----------------------------------
+
+clang tries to be compatible with gcc as much as possible, but some gcc
+extensions are not implemented yet:
+
+-  clang does not support #pragma weak (`bug
+   3679 <http://llvm.org/bugs/show_bug.cgi?id=3679>`_). Due to the uses
+   described in the bug, this is likely to be implemented at some point,
+   at least partially.
+-  clang does not support decimal floating point types (``_Decimal32`` and
+   friends) or fixed-point types (``_Fract`` and friends); nobody has
+   expressed interest in these features yet, so it's hard to say when
+   they will be implemented.
+-  clang does not support nested functions; this is a complex feature
+   which is infrequently used, so it is unlikely to be implemented
+   anytime soon. In C++11 it can be emulated by assigning lambda
+   functions to local variables, e.g:
+
+   .. code-block:: cpp
+
+     auto const local_function = [&](int parameter) {
+       // Do something
+     };
+     ...
+     local_function(1);
+
+-  clang does not support global register variables; this is unlikely to
+   be implemented soon because it requires additional LLVM backend
+   support.
+-  clang does not support static initialization of flexible array
+   members. This appears to be a rarely used extension, but could be
+   implemented pending user demand.
+-  clang does not support
+   ``__builtin_va_arg_pack``/``__builtin_va_arg_pack_len``. This is
+   used rarely, but in some potentially interesting places, like the
+   glibc headers, so it may be implemented pending user demand. Note
+   that because clang pretends to be like GCC 4.2, and this extension
+   was introduced in 4.3, the glibc headers will not try to use this
+   extension with clang at the moment.
+-  clang does not support the gcc extension for forward-declaring
+   function parameters; this has not shown up in any real-world code
+   yet, though, so it might never be implemented.
+
+This is not a complete list; if you find an unsupported extension
+missing from this list, please send an e-mail to cfe-dev. This list
+currently excludes C++; see :ref:`C++ Language Features <cxx>`. Also, this
+list does not include bugs in mostly-implemented features; please see
+the `bug
+tracker <http://llvm.org/bugs/buglist.cgi?quicksearch=product%3Aclang+component%3A-New%2BBugs%2CAST%2CBasic%2CDriver%2CHeaders%2CLLVM%2BCodeGen%2Cparser%2Cpreprocessor%2CSemantic%2BAnalyzer>`_
+for known existing bugs (FIXME: Is there a section for bug-reporting
+guidelines somewhere?).
+
+Intentionally unsupported GCC extensions
+----------------------------------------
+
+-  clang does not support the gcc extension that allows variable-length
+   arrays in structures. This is for a few reasons: one, it is tricky to
+   implement, two, the extension is completely undocumented, and three,
+   the extension appears to be rarely used. Note that clang *does*
+   support flexible array members (arrays with a zero or unspecified
+   size at the end of a structure).
+-  clang does not have an equivalent to gcc's "fold"; this means that
+   clang doesn't accept some constructs gcc might accept in contexts
+   where a constant expression is required, like "x-x" where x is a
+   variable.
+-  clang does not support ``__builtin_apply`` and friends; this extension
+   is extremely obscure and difficult to implement reliably.
+
+.. _c_ms:
+
+Microsoft extensions
+--------------------
+
+clang has some experimental support for extensions from Microsoft Visual
+C++; to enable it, use the ``-fms-extensions`` command-line option. This is
+the default for Windows targets. Note that the support is incomplete.
+Some constructs such as ``dllexport`` on classes are ignored with a warning,
+and others such as `Microsoft IDL annotations
+<http://msdn.microsoft.com/en-us/library/8tesw2eh.aspx>`_ are silently
+ignored.
+
+clang has a ``-fms-compatibility`` flag that makes clang accept enough
+invalid C++ to be able to parse most Microsoft headers. For example, it
+allows `unqualified lookup of dependent base class members
+<http://clang.llvm.org/compatibility.html#dep_lookup_bases>`_, which is
+a common compatibility issue with clang. This flag is enabled by default
+for Windows targets.
+
+``-fdelayed-template-parsing`` lets clang delay parsing of function template
+definitions until the end of a translation unit. This flag is enabled by
+default for Windows targets.
+
+-  clang allows setting ``_MSC_VER`` with ``-fmsc-version=``. It defaults to
+   1700 which is the same as Visual C/C++ 2012. Any number is supported
+   and can greatly affect what Windows SDK and c++stdlib headers clang
+   can compile.
+-  clang does not support the Microsoft extension where anonymous record
+   members can be declared using user defined typedefs.
+-  clang supports the Microsoft ``#pragma pack`` feature for controlling
+   record layout. GCC also contains support for this feature, however
+   where MSVC and GCC are incompatible clang follows the MSVC
+   definition.
+-  clang supports the Microsoft ``#pragma comment(lib, "foo.lib")`` feature for
+   automatically linking against the specified library.  Currently this feature
+   only works with the Visual C++ linker.
+-  clang supports the Microsoft ``#pragma comment(linker, "/flag:foo")`` feature
+   for adding linker flags to COFF object files.  The user is responsible for
+   ensuring that the linker understands the flags.
+-  clang defaults to C++11 for Windows targets.
+
+.. _cxx:
+
+C++ Language Features
+=====================
+
+clang fully implements all of standard C++98 except for exported
+templates (which were removed in C++11), and all of standard C++11
+and the current draft standard for C++1y.
+
+Controlling implementation limits
+---------------------------------
+
+.. option:: -fbracket-depth=N
+
+  Sets the limit for nested parentheses, brackets, and braces to N.  The
+  default is 256.
+
+.. option:: -fconstexpr-depth=N
+
+  Sets the limit for recursive constexpr function invocations to N.  The
+  default is 512.
+
+.. option:: -ftemplate-depth=N
+
+  Sets the limit for recursively nested template instantiations to N.  The
+  default is 256.
+
+.. option:: -foperator-arrow-depth=N
+
+  Sets the limit for iterative calls to 'operator->' functions to N.  The
+  default is 256.
+
+.. _objc:
+
+Objective-C Language Features
+=============================
+
+.. _objcxx:
+
+Objective-C++ Language Features
+===============================
+
+
+.. _target_features:
+
+Target-Specific Features and Limitations
+========================================
+
+CPU Architectures Features and Limitations
+------------------------------------------
+
+X86
+^^^
+
+The support for X86 (both 32-bit and 64-bit) is considered stable on
+Darwin (Mac OS X), Linux, FreeBSD, and Dragonfly BSD: it has been tested
+to correctly compile many large C, C++, Objective-C, and Objective-C++
+codebases.
+
+On ``x86_64-mingw32``, passing i128(by value) is incompatible with the
+Microsoft x64 calling convention. You might need to tweak
+``WinX86_64ABIInfo::classify()`` in lib/CodeGen/TargetInfo.cpp.
+
+For the X86 target, clang supports the :option:`-m16` command line
+argument which enables 16-bit code output. This is broadly similar to
+using ``asm(".code16gcc")`` with the GNU toolchain. The generated code
+and the ABI remains 32-bit but the assembler emits instructions
+appropriate for a CPU running in 16-bit mode, with address-size and
+operand-size prefixes to enable 32-bit addressing and operations.
+
+ARM
+^^^
+
+The support for ARM (specifically ARMv6 and ARMv7) is considered stable
+on Darwin (iOS): it has been tested to correctly compile many large C,
+C++, Objective-C, and Objective-C++ codebases. Clang only supports a
+limited number of ARM architectures. It does not yet fully support
+ARMv5, for example.
+
+PowerPC
+^^^^^^^
+
+The support for PowerPC (especially PowerPC64) is considered stable
+on Linux and FreeBSD: it has been tested to correctly compile many
+large C and C++ codebases. PowerPC (32bit) is still missing certain
+features (e.g. PIC code on ELF platforms).
+
+Other platforms
+^^^^^^^^^^^^^^^
+
+clang currently contains some support for other architectures (e.g. Sparc);
+however, significant pieces of code generation are still missing, and they
+haven't undergone significant testing.
+
+clang contains limited support for the MSP430 embedded processor, but
+both the clang support and the LLVM backend support are highly
+experimental.
+
+Other platforms are completely unsupported at the moment. Adding the
+minimal support needed for parsing and semantic analysis on a new
+platform is quite easy; see ``lib/Basic/Targets.cpp`` in the clang source
+tree. This level of support is also sufficient for conversion to LLVM IR
+for simple programs. Proper support for conversion to LLVM IR requires
+adding code to ``lib/CodeGen/CGCall.cpp`` at the moment; this is likely to
+change soon, though. Generating assembly requires a suitable LLVM
+backend.
+
+Operating System Features and Limitations
+-----------------------------------------
+
+Darwin (Mac OS X)
+^^^^^^^^^^^^^^^^^
+
+Thread Sanitizer is not supported.
+
+Windows
+^^^^^^^
+
+Clang has experimental support for targeting "Cygming" (Cygwin / MinGW)
+platforms.
+
+See also :ref:`Microsoft Extensions <c_ms>`.
+
+Cygwin
+""""""
+
+Clang works on Cygwin-1.7.
+
+MinGW32
+"""""""
+
+Clang works on some mingw32 distributions. Clang assumes directories as
+below;
+
+-  ``C:/mingw/include``
+-  ``C:/mingw/lib``
+-  ``C:/mingw/lib/gcc/mingw32/4.[3-5].0/include/c++``
+
+On MSYS, a few tests might fail.
+
+MinGW-w64
+"""""""""
+
+For 32-bit (i686-w64-mingw32), and 64-bit (x86\_64-w64-mingw32), Clang
+assumes as below;
+
+-  ``GCC versions 4.5.0 to 4.5.3, 4.6.0 to 4.6.2, or 4.7.0 (for the C++ header search path)``
+-  ``some_directory/bin/gcc.exe``
+-  ``some_directory/bin/clang.exe``
+-  ``some_directory/bin/clang++.exe``
+-  ``some_directory/bin/../include/c++/GCC_version``
+-  ``some_directory/bin/../include/c++/GCC_version/x86_64-w64-mingw32``
+-  ``some_directory/bin/../include/c++/GCC_version/i686-w64-mingw32``
+-  ``some_directory/bin/../include/c++/GCC_version/backward``
+-  ``some_directory/bin/../x86_64-w64-mingw32/include``
+-  ``some_directory/bin/../i686-w64-mingw32/include``
+-  ``some_directory/bin/../include``
+
+This directory layout is standard for any toolchain you will find on the
+official `MinGW-w64 website <http://mingw-w64.sourceforge.net>`_.
+
+Clang expects the GCC executable "gcc.exe" compiled for
+``i686-w64-mingw32`` (or ``x86_64-w64-mingw32``) to be present on PATH.
+
+`Some tests might fail <http://llvm.org/bugs/show_bug.cgi?id=9072>`_ on
+``x86_64-w64-mingw32``.
+
+.. _clang-cl:
+
+clang-cl
+========
+
+clang-cl is an alternative command-line interface to Clang driver, designed for
+compatibility with the Visual C++ compiler, cl.exe.
+
+To enable clang-cl to find system headers, libraries, and the linker when run
+from the command-line, it should be executed inside a Visual Studio Native Tools
+Command Prompt or a regular Command Prompt where the environment has been set
+up using e.g. `vcvars32.bat <http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx>`_.
+
+clang-cl can also be used from inside Visual Studio  by using an LLVM Platform
+Toolset.
+
+Command-Line Options
+--------------------
+
+To be compatible with cl.exe, clang-cl supports most of the same command-line
+options. Those options can start with either ``/`` or ``-``. It also supports
+some of Clang's core options, such as the ``-W`` options.
+
+Options that are known to clang-cl, but not currently supported, are ignored
+with a warning. For example:
+
+  ::
+
+    clang-cl.exe: warning: argument unused during compilation: '/Zi'
+
+To suppress warnings about unused arguments, use the ``-Qunused-arguments`` option.
+
+Options that are not known to clang-cl will cause errors. If they are spelled with a
+leading ``/``, they will be mistaken for a filename:
+
+  ::
+
+    clang-cl.exe: error: no such file or directory: '/foobar'
+
+Please `file a bug <http://llvm.org/bugs/enter_bug.cgi?product=clang&component=Driver>`_
+for any valid cl.exe flags that clang-cl does not understand.
+
+Execute ``clang-cl /?`` to see a list of supported options:
+
+  ::
+
+    CL.EXE COMPATIBILITY OPTIONS:
+      /?                     Display available options
+      /arch:<value>          Set architecture for code generation
+      /C                     Don't discard comments when preprocessing
+      /c                     Compile only
+      /D <macro[=value]>     Define macro
+      /EH<value>             Exception handling model
+      /EP                    Disable linemarker output and preprocess to stdout
+      /E                     Preprocess to stdout
+      /fallback              Fall back to cl.exe if clang-cl fails to compile
+      /FA                    Output assembly code file during compilation
+      /Fa<file or directory> Output assembly code to this file during compilation
+      /Fe<file or directory> Set output executable file or directory (ends in / or \)
+      /FI <value>            Include file before parsing
+      /Fi<file>              Set preprocess output file name
+      /Fo<file or directory> Set output object file, or directory (ends in / or \)
+      /GF-                   Disable string pooling
+      /GR-                   Disable emission of RTTI data
+      /GR                    Enable emission of RTTI data
+      /Gw-                   Don't put each data item in its own section
+      /Gw                    Put each data item in its own section
+      /Gy-                   Don't put each function in its own section
+      /Gy                    Put each function in its own section
+      /help                  Display available options
+      /I <dir>               Add directory to include search path
+      /J                     Make char type unsigned
+      /LDd                   Create debug DLL
+      /LD                    Create DLL
+      /link <options>        Forward options to the linker
+      /MDd                   Use DLL debug run-time
+      /MD                    Use DLL run-time
+      /MTd                   Use static debug run-time
+      /MT                    Use static run-time
+      /Ob0                   Disable inlining
+      /Od                    Disable optimization
+      /Oi-                   Disable use of builtin functions
+      /Oi                    Enable use of builtin functions
+      /Os                    Optimize for size
+      /Ot                    Optimize for speed
+      /Ox                    Maximum optimization
+      /Oy-                   Disable frame pointer omission
+      /Oy                    Enable frame pointer omission
+      /O<n>                  Optimization level
+      /P                     Preprocess to file
+      /showIncludes          Print info about included files to stderr
+      /TC                    Treat all source files as C
+      /Tc <filename>         Specify a C source file
+      /TP                    Treat all source files as C++
+      /Tp <filename>         Specify a C++ source file
+      /U <macro>             Undefine macro
+      /vd<value>             Control vtordisp placement
+      /vmb                   Use a best-case representation method for member pointers
+      /vmg                   Use a most-general representation for member pointers
+      /vmm                   Set the default most-general representation to multiple inheritance
+      /vms                   Set the default most-general representation to single inheritance
+      /vmv                   Set the default most-general representation to virtual inheritance
+      /W0                    Disable all warnings
+      /W1                    Enable -Wall
+      /W2                    Enable -Wall
+      /W3                    Enable -Wall
+      /W4                    Enable -Wall
+      /Wall                  Enable -Wall
+      /WX-                   Do not treat warnings as errors
+      /WX                    Treat warnings as errors
+      /w                     Disable all warnings
+      /Zi                    Enable debug information
+      /Zs                    Syntax-check only
+
+    OPTIONS:
+      -###                  Print (but do not run) the commands to run for this compilation
+      -fms-compatibility-version=<value>
+                            Dot-separated value representing the Microsoft compiler version
+                            number to report in _MSC_VER (0 = don't define it (default))
+      -fmsc-version=<value> Microsoft compiler version number to report in _MSC_VER (0 = don't
+                            define it (default))
+      -fsanitize-blacklist=<value>
+                            Path to blacklist file for sanitizers
+      -fsanitize=<check>    Enable runtime instrumentation for bug detection: address (memory
+                            errors) | thread (race detection) | undefined (miscellaneous
+                            undefined behavior)
+      -mllvm <value>        Additional arguments to forward to LLVM's option processing
+      -Qunused-arguments    Don't emit warning for unused driver arguments
+      --target=<value>      Generate code for the given target
+      -v                    Show commands to run and use verbose output
+      -W<warning>           Enable the specified warning
+      -Xclang <arg>         Pass <arg> to the clang compiler
+
+The /fallback Option
+^^^^^^^^^^^^^^^^^^^^
+
+When clang-cl is run with the ``/fallback`` option, it will first try to
+compile files itself. For any file that it fails to compile, it will fall back
+and try to compile the file by invoking cl.exe.
+
+This option is intended to be used as a temporary means to build projects where
+clang-cl cannot successfully compile all the files. clang-cl may fail to compile
+a file either because it cannot generate code for some C++ feature, or because
+it cannot parse some Microsoft language extension.

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/index.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/index.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/index.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_sources/index.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,81 @@
+.. Clang documentation master file, created by
+   sphinx-quickstart on Sun Dec  9 20:01:55 2012.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+.. title:: Welcome to Clang's documentation!
+
+.. toctree::
+   :maxdepth: 1
+
+   ReleaseNotes
+
+Using Clang as a Compiler
+=========================
+
+.. toctree::
+   :maxdepth: 1
+
+   UsersManual
+   LanguageExtensions
+   AttributeReference
+   CrossCompilation
+   ThreadSafetyAnalysis
+   AddressSanitizer
+   ThreadSanitizer
+   MemorySanitizer
+   DataFlowSanitizer
+   LeakSanitizer
+   SanitizerSpecialCaseList
+   Modules
+   MSVCCompatibility
+   FAQ
+
+Using Clang as a Library
+========================
+
+.. toctree::
+   :maxdepth: 1
+
+   Tooling
+   ExternalClangExamples
+   IntroductionToTheClangAST
+   LibTooling
+   LibFormat
+   ClangPlugins
+   RAVFrontendAction
+   LibASTMatchersTutorial
+   LibASTMatchers
+   HowToSetupToolingForLLVM
+   JSONCompilationDatabase
+
+Using Clang Tools
+=================
+
+.. toctree::
+   :maxdepth: 1
+
+   ClangTools
+   ClangCheck
+   ClangFormat
+   ClangFormatStyleOptions
+
+Design Documents
+================
+
+.. toctree::
+   :maxdepth: 1
+
+   InternalsManual
+   DriverInternals
+   PTHInternals
+   PCHInternals
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/ajax-loader.gif
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/ajax-loader.gif?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/ajax-loader.gif
------------------------------------------------------------------------------
    svn:mime-type = image/gif

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_info_32.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_info_32.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_info_32.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_warning_32.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_warning_32.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/alert_warning_32.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/basic.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/basic.css?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/basic.css (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/basic.css Tue Jan 13 16:55:20 2015
@@ -0,0 +1,540 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+ at media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bg-page.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bg-page.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bg-page.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bullet_orange.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bullet_orange.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/bullet_orange.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-bright.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-bright.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-bright.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-close.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-close.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment-close.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/comment.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/doctools.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/doctools.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/doctools.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/doctools.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1,247 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i] == item)
+      return true;
+  }
+  return false;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down-pressed.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down-pressed.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down-pressed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/down.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/file.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/file.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/file.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/haiku.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/haiku.css?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/haiku.css (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/haiku.css Tue Jan 13 16:55:20 2015
@@ -0,0 +1,371 @@
+/*
+ * haiku.css_t
+ * ~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- haiku theme.
+ *
+ * Adapted from http://haiku-os.org/docs/Haiku-doc.css.
+ * Original copyright message:
+ *
+ *     Copyright 2008-2009, Haiku. All rights reserved.
+ *     Distributed under the terms of the MIT License.
+ *
+ *     Authors:
+ *              Francois Revol <revol at free.fr>
+ *              Stephan Assmus <superstippi at gmx.de>
+ *              Braden Ewing <brewin at gmail.com>
+ *              Humdinger <humdingerb at gmail.com>
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+ at import url("basic.css");
+
+html {
+    margin: 0px;
+    padding: 0px;
+    background: #FFF url(bg-page.png) top left repeat-x;
+}
+
+body {
+    line-height: 1.5;
+    margin: auto;
+    padding: 0px;
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+    min-width: 59em;
+    max-width: 70em;
+    color: #333333;
+}
+
+div.footer {
+    padding: 8px;
+    font-size: 11px;
+    text-align: center;
+    letter-spacing: 0.5px;
+}
+
+/* link colors and text decoration */
+
+a:link {
+    font-weight: bold;
+    text-decoration: none;
+    color: #dc3c01;
+}
+
+a:visited {
+    font-weight: bold;
+    text-decoration: none;
+    color: #892601;
+}
+
+a:hover, a:active {
+    text-decoration: underline;
+    color: #ff4500;
+}
+
+/* Some headers act as anchors, don't give them a hover effect */
+
+h1 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h2 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h3 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h4 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+a.headerlink {
+    color: #a7ce38;
+    padding-left: 5px;
+}
+
+a.headerlink:hover {
+    color: #a7ce38;
+}
+
+/* basic text elements */
+
+div.content {
+    margin-top: 20px;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 50px;
+    font-size: 0.9em;
+}
+
+/* heading and navigation */
+
+div.header {
+    position: relative;
+    left: 0px;
+    top: 0px;
+    height: 85px;
+    /* background: #eeeeee; */
+    padding: 0 40px;
+}
+div.header h1 {
+    font-size: 1.6em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    color: #0c3762;
+    border: 0;
+    margin: 0;
+    padding-top: 15px;
+}
+div.header h1 a {
+    font-weight: normal;
+    color: #0c3762;
+}
+div.header h2 {
+    font-size: 1.3em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    text-transform: uppercase;
+    color: #aaa;
+    border: 0;
+    margin-top: -3px;
+    padding: 0;
+}
+
+div.header img.rightlogo {
+    float: right;
+}
+
+
+div.title {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-bottom: 25px;
+}
+div.topnav {
+    /* background: #e0e0e0; */
+}
+div.topnav p {
+    margin-top: 0;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 0px;
+    text-align: right;
+    font-size: 0.8em;
+}
+div.bottomnav {
+    background: #eeeeee;
+}
+div.bottomnav p {
+    margin-right: 40px;
+    text-align: right;
+    font-size: 0.8em;
+}
+
+a.uplink {
+    font-weight: normal;
+}
+
+
+/* contents box */
+
+table.index {
+    margin: 0px 0px 30px 30px;
+    padding: 1px;
+    border-width: 1px;
+    border-style: dotted;
+    border-color: #e0e0e0;
+}
+table.index tr.heading {
+    background-color: #e0e0e0;
+    text-align: center;
+    font-weight: bold;
+    font-size: 1.1em;
+}
+table.index tr.index {
+    background-color: #eeeeee;
+}
+table.index td {
+    padding: 5px 20px;
+}
+
+table.index a:link, table.index a:visited {
+    font-weight: normal;
+    text-decoration: none;
+    color: #dc3c01;
+}
+table.index a:hover, table.index a:active {
+    text-decoration: underline;
+    color: #ff4500;
+}
+
+
+/* Haiku User Guide styles and layout */
+
+/* Rounded corner boxes */
+/* Common declarations */
+div.admonition {
+    -webkit-border-radius: 10px;
+    -khtml-border-radius: 10px;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+    border-style: dotted;
+    border-width: thin;
+    border-color: #dcdcdc;
+    padding: 10px 15px 10px 15px;
+    margin-bottom: 15px;
+    margin-top: 15px;
+}
+div.note {
+    padding: 10px 15px 10px 80px;
+    background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.warning {
+    padding: 10px 15px 10px 80px;
+    background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.seealso {
+    background: #e4ffde;
+}
+
+/* More layout and styles */
+h1 {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h2 {
+    font-size: 1.2em;
+    font-weight: normal;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h3 {
+    font-size: 1.1em;
+    font-weight: normal;
+    color: #0c3762;
+    margin-top: 30px;
+}
+
+h4 {
+    font-size: 1.0em;
+    font-weight: normal;
+    color: #0c3762;
+    margin-top: 30px;
+}
+
+p {
+    text-align: justify;
+}
+
+p.last {
+    margin-bottom: 0;
+}
+
+ol {
+    padding-left: 20px;
+}
+
+ul {
+    padding-left: 5px;
+    margin-top: 3px;
+}
+
+li {
+    line-height: 1.3;
+}
+
+div.content ul > li {
+    -moz-background-clip:border;
+    -moz-background-inline-policy:continuous;
+    -moz-background-origin:padding;
+    background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
+    list-style-image: none;
+    list-style-type: none;
+    padding: 0 0 0 1.666em;
+    margin-bottom: 3px;
+}
+
+td {
+    vertical-align: top;
+}
+
+tt {
+    background-color: #e2e2e2;
+    font-size: 1.0em;
+    font-family: monospace;
+}
+
+pre {
+    border-color: #0c3762;
+    border-style: dotted;
+    border-width: thin;
+    margin: 0 0 12px 0;
+    padding: 0.8em;
+    background-color: #f0f0f0;
+}
+
+hr {
+    border-top: 1px solid #ccc;
+    border-bottom: 0;
+    border-right: 0;
+    border-left: 0;
+    margin-bottom: 10px;
+    margin-top: 20px;
+}
+
+/* printer only pretty stuff */
+ at media print {
+    .noprint {
+        display: none;
+    }
+    /* for acronyms we want their definitions inlined at print time */
+    acronym[title]:after {
+        font-size: small;
+        content: " (" attr(title) ")";
+        font-style: italic;
+    }
+    /* and not have mozilla dotted underline */
+    acronym {
+        border: none;
+    }
+    div.topnav, div.bottomnav, div.header, table.index {
+        display: none;
+    }
+    div.content {
+        margin: 0px;
+        padding: 0px;
+    }
+    html {
+        background: #FFF;
+    }
+}
+
+.viewcode-back {
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+    margin: -1px -12px;
+    padding: 0 12px;
+}
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/jquery.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/jquery.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/jquery.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/jquery.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/minus.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/minus.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/minus.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/plus.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/plus.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/plus.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/pygments.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/pygments.css?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/pygments.css (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/pygments.css Tue Jan 13 16:55:20 2015
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #f0f0f0; }
+.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #40a070 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #40a070 } /* Literal.Number.Float */
+.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
+.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
+.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/searchtools.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/searchtools.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/searchtools.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/searchtools.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1,560 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+
+jQuery.makeSearchSummary = function(text, keywords, hlwords) {
+  var textLower = text.toLowerCase();
+  var start = 0;
+  $.each(keywords, function() {
+    var i = textLower.indexOf(this.toLowerCase());
+    if (i > -1)
+      start = i;
+  });
+  start = Math.max(start - 120, 0);
+  var excerpt = ((start > 0) ? '...' : '') +
+  $.trim(text.substr(start, 240)) +
+  ((start + 240 - text.length) ? '...' : '');
+  var rv = $('<div class="context"></div>').text(excerpt);
+  $.each(hlwords, function() {
+    rv = rv.highlightText(this, 'highlighted');
+  });
+  return rv;
+}
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null, success: null,
+            dataType: "script", cache: true});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (var i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    };
+    pulse();
+  },
+
+  /**
+   * perform a search for something
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  query : function(query) {
+    var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
+
+    // Stem the searchterms and add them to the correct list
+    var stemmer = new Stemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = query.split(/\s+/);
+    var objectterms = [];
+    for (var i = 0; i < tmp.length; i++) {
+      if (tmp[i] != "") {
+          objectterms.push(tmp[i].toLowerCase());
+      }
+
+      if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] == "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i]).toLowerCase();
+      // select the correct list
+      if (word[0] == '-') {
+        var toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        var toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$.contains(toAppend, word))
+        toAppend.push(word);
+    };
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+    var terms = this._index.terms;
+    var fileMap = {};
+    var files = null;
+    // different result priorities
+    var importantResults = [];
+    var objectResults = [];
+    var regularResults = [];
+    var unimportantResults = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    for (var i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0,i),
+                             objectterms.slice(i+1, objectterms.length))
+      var results = this.performObjectSearch(objectterms[i], others);
+      // Assume first word is most likely to be the object,
+      // other words more likely to be in description.
+      // Therefore put matches for earlier words first.
+      // (Results are eventually used in reverse order).
+      objectResults = results[0].concat(objectResults);
+      importantResults = results[1].concat(importantResults);
+      unimportantResults = results[2].concat(unimportantResults);
+    }
+
+    // perform the search on the required terms
+    for (var i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      // no match but word was a required one
+      if ((files = terms[word]) == null)
+        break;
+      if (files.length == undefined) {
+        files = [files];
+      }
+      // create the mapping
+      for (var j = 0; j < files.length; j++) {
+        var file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (var file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+        continue;
+
+      // ensure that none of the excluded terms is in the
+      // search result.
+      for (var i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+            $.contains(terms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it
+      // to the result list
+      if (valid)
+        regularResults.push([filenames[file], titles[file], '', null]);
+    }
+
+    // delete unused variables in order to not waste
+    // memory until list is retrieved completely
+    delete filenames, titles, terms;
+
+    // now sort the regular results descending by title
+    regularResults.sort(function(a, b) {
+      var left = a[1].toLowerCase();
+      var right = b[1].toLowerCase();
+      return (left > right) ? -1 : ((left < right) ? 1 : 0);
+    });
+
+    // combine all results
+    var results = unimportantResults.concat(regularResults)
+      .concat(objectResults).concat(importantResults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
+                item[0] + '.txt', function(data) {
+            if (data != '') {
+              listItem.append($.makeSearchSummary(data, searchterms, hlterms));
+              Search.output.append(listItem);
+            }
+            listItem.slideDown(5, function() {
+              displayNextItem();
+            });
+          }, "text");
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  },
+
+  performObjectSearch : function(object, otherterms) {
+    var filenames = this._index.filenames;
+    var objects = this._index.objects;
+    var objnames = this._index.objnames;
+    var titles = this._index.titles;
+
+    var importantResults = [];
+    var objectResults = [];
+    var unimportantResults = [];
+
+    for (var prefix in objects) {
+      for (var name in objects[prefix]) {
+        var fullname = (prefix ? prefix + '.' : '') + name;
+        if (fullname.toLowerCase().indexOf(object) > -1) {
+          var match = objects[prefix][name];
+          var objname = objnames[match[1]][2];
+          var title = titles[match[0]];
+          // If more than one term searched for, we require other words to be
+          // found in the name/title/description
+          if (otherterms.length > 0) {
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
+            var allfound = true;
+            for (var i = 0; i < otherterms.length; i++) {
+              if (haystack.indexOf(otherterms[i]) == -1) {
+                allfound = false;
+                break;
+              }
+            }
+            if (!allfound) {
+              continue;
+            }
+          }
+          var descr = objname + _(', in ') + title;
+          anchor = match[3];
+          if (anchor == '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          result = [filenames[match[0]], fullname, '#'+anchor, descr];
+          switch (match[2]) {
+          case 1: objectResults.push(result); break;
+          case 0: importantResults.push(result); break;
+          case 2: unimportantResults.push(result); break;
+          }
+        }
+      }
+    }
+
+    // sort results descending
+    objectResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+    importantResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+    unimportantResults.sort(function(a, b) {
+      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+    });
+
+    return [importantResults, objectResults, unimportantResults]
+  }
+}
+
+$(document).ready(function() {
+  Search.init();
+});
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/underscore.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/underscore.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/underscore.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/underscore.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1,23 @@
+// Underscore.js 0.5.5
+// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the terms of the MIT license.
+// Portions of Underscore are inspired by or borrowed from Prototype.js,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore/
+(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
+a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
+var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
+d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
+function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
+function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
+0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
+e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
+a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
+return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
+var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
+if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
+0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
+a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
+" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
+o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up-pressed.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up-pressed.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up-pressed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up.png?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/up.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/websupport.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/websupport.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/websupport.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/_static/websupport.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+  $.fn.autogrow = function() {
+    return this.each(function() {
+    var textarea = this;
+
+    $.fn.autogrow.resize(textarea);
+
+    $(textarea)
+      .focus(function() {
+        textarea.interval = setInterval(function() {
+          $.fn.autogrow.resize(textarea);
+        }, 500);
+      })
+      .blur(function() {
+        clearInterval(textarea.interval);
+      });
+    });
+  };
+
+  $.fn.autogrow.resize = function(textarea) {
+    var lineHeight = parseInt($(textarea).css('line-height'), 10);
+    var lines = textarea.value.split('\n');
+    var columns = textarea.cols;
+    var lineCount = 0;
+    $.each(lines, function() {
+      lineCount += Math.ceil(this.length / columns) || 1;
+    });
+    var height = lineHeight * (lineCount + 1);
+    $(textarea).css('height', height);
+  };
+})(jQuery);
+
+(function($) {
+  var comp, by;
+
+  function init() {
+    initEvents();
+    initComparator();
+  }
+
+  function initEvents() {
+    $('a.comment-close').live("click", function(event) {
+      event.preventDefault();
+      hide($(this).attr('id').substring(2));
+    });
+    $('a.vote').live("click", function(event) {
+      event.preventDefault();
+      handleVote($(this));
+    });
+    $('a.reply').live("click", function(event) {
+      event.preventDefault();
+      openReply($(this).attr('id').substring(2));
+    });
+    $('a.close-reply').live("click", function(event) {
+      event.preventDefault();
+      closeReply($(this).attr('id').substring(2));
+    });
+    $('a.sort-option').live("click", function(event) {
+      event.preventDefault();
+      handleReSort($(this));
+    });
+    $('a.show-proposal').live("click", function(event) {
+      event.preventDefault();
+      showProposal($(this).attr('id').substring(2));
+    });
+    $('a.hide-proposal').live("click", function(event) {
+      event.preventDefault();
+      hideProposal($(this).attr('id').substring(2));
+    });
+    $('a.show-propose-change').live("click", function(event) {
+      event.preventDefault();
+      showProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.hide-propose-change').live("click", function(event) {
+      event.preventDefault();
+      hideProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.accept-comment').live("click", function(event) {
+      event.preventDefault();
+      acceptComment($(this).attr('id').substring(2));
+    });
+    $('a.delete-comment').live("click", function(event) {
+      event.preventDefault();
+      deleteComment($(this).attr('id').substring(2));
+    });
+    $('a.comment-markup').live("click", function(event) {
+      event.preventDefault();
+      toggleCommentMarkupBox($(this).attr('id').substring(2));
+    });
+  }
+
+  /**
+   * Set comp, which is a comparator function used for sorting and
+   * inserting comments into the list.
+   */
+  function setComparator() {
+    // If the first three letters are "asc", sort in ascending order
+    // and remove the prefix.
+    if (by.substring(0,3) == 'asc') {
+      var i = by.substring(3);
+      comp = function(a, b) { return a[i] - b[i]; };
+    } else {
+      // Otherwise sort in descending order.
+      comp = function(a, b) { return b[by] - a[by]; };
+    }
+
+    // Reset link styles and format the selected sort option.
+    $('a.sel').attr('href', '#').removeClass('sel');
+    $('a.by' + by).removeAttr('href').addClass('sel');
+  }
+
+  /**
+   * Create a comp function. If the user has preferences stored in
+   * the sortBy cookie, use those, otherwise use the default.
+   */
+  function initComparator() {
+    by = 'rating'; // Default to sort by rating.
+    // If the sortBy cookie is set, use that instead.
+    if (document.cookie.length > 0) {
+      var start = document.cookie.indexOf('sortBy=');
+      if (start != -1) {
+        start = start + 7;
+        var end = document.cookie.indexOf(";", start);
+        if (end == -1) {
+          end = document.cookie.length;
+          by = unescape(document.cookie.substring(start, end));
+        }
+      }
+    }
+    setComparator();
+  }
+
+  /**
+   * Show a comment div.
+   */
+  function show(id) {
+    $('#ao' + id).hide();
+    $('#ah' + id).show();
+    var context = $.extend({id: id}, opts);
+    var popup = $(renderTemplate(popupTemplate, context)).hide();
+    popup.find('textarea[name="proposal"]').hide();
+    popup.find('a.by' + by).addClass('sel');
+    var form = popup.find('#cf' + id);
+    form.submit(function(event) {
+      event.preventDefault();
+      addComment(form);
+    });
+    $('#s' + id).after(popup);
+    popup.slideDown('fast', function() {
+      getComments(id);
+    });
+  }
+
+  /**
+   * Hide a comment div.
+   */
+  function hide(id) {
+    $('#ah' + id).hide();
+    $('#ao' + id).show();
+    var div = $('#sc' + id);
+    div.slideUp('fast', function() {
+      div.remove();
+    });
+  }
+
+  /**
+   * Perform an ajax request to get comments for a node
+   * and insert the comments into the comments tree.
+   */
+  function getComments(id) {
+    $.ajax({
+     type: 'GET',
+     url: opts.getCommentsURL,
+     data: {node: id},
+     success: function(data, textStatus, request) {
+       var ul = $('#cl' + id);
+       var speed = 100;
+       $('#cf' + id)
+         .find('textarea[name="proposal"]')
+         .data('source', data.source);
+
+       if (data.comments.length === 0) {
+         ul.html('<li>No comments yet.</li>');
+         ul.data('empty', true);
+       } else {
+         // If there are comments, sort them and put them in the list.
+         var comments = sortComments(data.comments);
+         speed = data.comments.length * 100;
+         appendComments(comments, ul);
+         ul.data('empty', false);
+       }
+       $('#cn' + id).slideUp(speed + 200);
+       ul.slideDown(speed);
+     },
+     error: function(request, textStatus, error) {
+       showError('Oops, there was a problem retrieving the comments.');
+     },
+     dataType: 'json'
+    });
+  }
+
+  /**
+   * Add a comment via ajax and insert the comment into the comment tree.
+   */
+  function addComment(form) {
+    var node_id = form.find('input[name="node"]').val();
+    var parent_id = form.find('input[name="parent"]').val();
+    var text = form.find('textarea[name="comment"]').val();
+    var proposal = form.find('textarea[name="proposal"]').val();
+
+    if (text == '') {
+      showError('Please enter a comment.');
+      return;
+    }
+
+    // Disable the form that is being submitted.
+    form.find('textarea,input').attr('disabled', 'disabled');
+
+    // Send the comment to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.addCommentURL,
+      dataType: 'json',
+      data: {
+        node: node_id,
+        parent: parent_id,
+        text: text,
+        proposal: proposal
+      },
+      success: function(data, textStatus, error) {
+        // Reset the form.
+        if (node_id) {
+          hideProposeChange(node_id);
+        }
+        form.find('textarea')
+          .val('')
+          .add(form.find('input'))
+          .removeAttr('disabled');
+	var ul = $('#cl' + (node_id || parent_id));
+        if (ul.data('empty')) {
+          $(ul).empty();
+          ul.data('empty', false);
+        }
+        insertComment(data.comment);
+        var ao = $('#ao' + node_id);
+        ao.find('img').attr({'src': opts.commentBrightImage});
+        if (node_id) {
+          // if this was a "root" comment, remove the commenting box
+          // (the user can get it back by reopening the comment popup)
+          $('#ca' + node_id).slideUp();
+        }
+      },
+      error: function(request, textStatus, error) {
+        form.find('textarea,input').removeAttr('disabled');
+        showError('Oops, there was a problem adding the comment.');
+      }
+    });
+  }
+
+  /**
+   * Recursively append comments to the main comment list and children
+   * lists, creating the comment tree.
+   */
+  function appendComments(comments, ul) {
+    $.each(comments, function() {
+      var div = createCommentDiv(this);
+      ul.append($(document.createElement('li')).html(div));
+      appendComments(this.children, div.find('ul.comment-children'));
+      // To avoid stagnating data, don't store the comments children in data.
+      this.children = null;
+      div.data('comment', this);
+    });
+  }
+
+  /**
+   * After adding a new comment, it must be inserted in the correct
+   * location in the comment tree.
+   */
+  function insertComment(comment) {
+    var div = createCommentDiv(comment);
+
+    // To avoid stagnating data, don't store the comments children in data.
+    comment.children = null;
+    div.data('comment', comment);
+
+    var ul = $('#cl' + (comment.node || comment.parent));
+    var siblings = getChildren(ul);
+
+    var li = $(document.createElement('li'));
+    li.hide();
+
+    // Determine where in the parents children list to insert this comment.
+    for(i=0; i < siblings.length; i++) {
+      if (comp(comment, siblings[i]) <= 0) {
+        $('#cd' + siblings[i].id)
+          .parent()
+          .before(li.html(div));
+        li.slideDown('fast');
+        return;
+      }
+    }
+
+    // If we get here, this comment rates lower than all the others,
+    // or it is the only comment in the list.
+    ul.append(li.html(div));
+    li.slideDown('fast');
+  }
+
+  function acceptComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.acceptCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        $('#cm' + id).fadeOut('fast');
+        $('#cd' + id).removeClass('moderate');
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem accepting the comment.');
+      }
+    });
+  }
+
+  function deleteComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.deleteCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        var div = $('#cd' + id);
+        if (data == 'delete') {
+          // Moderator mode: remove the comment and all children immediately
+          div.slideUp('fast', function() {
+            div.remove();
+          });
+          return;
+        }
+        // User mode: only mark the comment as deleted
+        div
+          .find('span.user-id:first')
+          .text('[deleted]').end()
+          .find('div.comment-text:first')
+          .text('[deleted]').end()
+          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+          .remove();
+        var comment = div.data('comment');
+        comment.username = '[deleted]';
+        comment.text = '[deleted]';
+        div.data('comment', comment);
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem deleting the comment.');
+      }
+    });
+  }
+
+  function showProposal(id) {
+    $('#sp' + id).hide();
+    $('#hp' + id).show();
+    $('#pr' + id).slideDown('fast');
+  }
+
+  function hideProposal(id) {
+    $('#hp' + id).hide();
+    $('#sp' + id).show();
+    $('#pr' + id).slideUp('fast');
+  }
+
+  function showProposeChange(id) {
+    $('#pc' + id).hide();
+    $('#hc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val(textarea.data('source'));
+    $.fn.autogrow.resize(textarea[0]);
+    textarea.slideDown('fast');
+  }
+
+  function hideProposeChange(id) {
+    $('#hc' + id).hide();
+    $('#pc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val('').removeAttr('disabled');
+    textarea.slideUp('fast');
+  }
+
+  function toggleCommentMarkupBox(id) {
+    $('#mb' + id).toggle();
+  }
+
+  /** Handle when the user clicks on a sort by link. */
+  function handleReSort(link) {
+    var classes = link.attr('class').split(/\s+/);
+    for (var i=0; i<classes.length; i++) {
+      if (classes[i] != 'sort-option') {
+	by = classes[i].substring(2);
+      }
+    }
+    setComparator();
+    // Save/update the sortBy cookie.
+    var expiration = new Date();
+    expiration.setDate(expiration.getDate() + 365);
+    document.cookie= 'sortBy=' + escape(by) +
+                     ';expires=' + expiration.toUTCString();
+    $('ul.comment-ul').each(function(index, ul) {
+      var comments = getChildren($(ul), true);
+      comments = sortComments(comments);
+      appendComments(comments, $(ul).empty());
+    });
+  }
+
+  /**
+   * Function to process a vote when a user clicks an arrow.
+   */
+  function handleVote(link) {
+    if (!opts.voting) {
+      showError("You'll need to login to vote.");
+      return;
+    }
+
+    var id = link.attr('id');
+    if (!id) {
+      // Didn't click on one of the voting arrows.
+      return;
+    }
+    // If it is an unvote, the new vote value is 0,
+    // Otherwise it's 1 for an upvote, or -1 for a downvote.
+    var value = 0;
+    if (id.charAt(1) != 'u') {
+      value = id.charAt(0) == 'u' ? 1 : -1;
+    }
+    // The data to be sent to the server.
+    var d = {
+      comment_id: id.substring(2),
+      value: value
+    };
+
+    // Swap the vote and unvote links.
+    link.hide();
+    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+      .show();
+
+    // The div the comment is displayed in.
+    var div = $('div#cd' + d.comment_id);
+    var data = div.data('comment');
+
+    // If this is not an unvote, and the other vote arrow has
+    // already been pressed, unpress it.
+    if ((d.value !== 0) && (data.vote === d.value * -1)) {
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+    }
+
+    // Update the comments rating in the local data.
+    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+    data.vote = d.value;
+    div.data('comment', data);
+
+    // Change the rating text.
+    div.find('.rating:first')
+      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+    // Send the vote information to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.processVoteURL,
+      data: d,
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem casting that vote.');
+      }
+    });
+  }
+
+  /**
+   * Open a reply form used to reply to an existing comment.
+   */
+  function openReply(id) {
+    // Swap out the reply link for the hide link
+    $('#rl' + id).hide();
+    $('#cr' + id).show();
+
+    // Add the reply li to the children ul.
+    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+    $('#cl' + id)
+      .prepend(div)
+      // Setup the submit handler for the reply form.
+      .find('#rf' + id)
+      .submit(function(event) {
+        event.preventDefault();
+        addComment($('#rf' + id));
+        closeReply(id);
+      })
+      .find('input[type=button]')
+      .click(function() {
+        closeReply(id);
+      });
+    div.slideDown('fast', function() {
+      $('#rf' + id).find('textarea').focus();
+    });
+  }
+
+  /**
+   * Close the reply form opened with openReply.
+   */
+  function closeReply(id) {
+    // Remove the reply div from the DOM.
+    $('#rd' + id).slideUp('fast', function() {
+      $(this).remove();
+    });
+
+    // Swap out the hide link for the reply link
+    $('#cr' + id).hide();
+    $('#rl' + id).show();
+  }
+
+  /**
+   * Recursively sort a tree of comments using the comp comparator.
+   */
+  function sortComments(comments) {
+    comments.sort(comp);
+    $.each(comments, function() {
+      this.children = sortComments(this.children);
+    });
+    return comments;
+  }
+
+  /**
+   * Get the children comments from a ul. If recursive is true,
+   * recursively include childrens' children.
+   */
+  function getChildren(ul, recursive) {
+    var children = [];
+    ul.children().children("[id^='cd']")
+      .each(function() {
+        var comment = $(this).data('comment');
+        if (recursive)
+          comment.children = getChildren($(this).find('#cl' + comment.id), true);
+        children.push(comment);
+      });
+    return children;
+  }
+
+  /** Create a div to display a comment in. */
+  function createCommentDiv(comment) {
+    if (!comment.displayed && !opts.moderator) {
+      return $('<div class="moderate">Thank you!  Your comment will show up '
+               + 'once it is has been approved by a moderator.</div>');
+    }
+    // Prettify the comment rating.
+    comment.pretty_rating = comment.rating + ' point' +
+      (comment.rating == 1 ? '' : 's');
+    // Make a class (for displaying not yet moderated comments differently)
+    comment.css_class = comment.displayed ? '' : ' moderate';
+    // Create a div for this comment.
+    var context = $.extend({}, opts, comment);
+    var div = $(renderTemplate(commentTemplate, context));
+
+    // If the user has voted on this comment, highlight the correct arrow.
+    if (comment.vote) {
+      var direction = (comment.vote == 1) ? 'u' : 'd';
+      div.find('#' + direction + 'v' + comment.id).hide();
+      div.find('#' + direction + 'u' + comment.id).show();
+    }
+
+    if (opts.moderator || comment.text != '[deleted]') {
+      div.find('a.reply').show();
+      if (comment.proposal_diff)
+        div.find('#sp' + comment.id).show();
+      if (opts.moderator && !comment.displayed)
+        div.find('#cm' + comment.id).show();
+      if (opts.moderator || (opts.username == comment.username))
+        div.find('#dc' + comment.id).show();
+    }
+    return div;
+  }
+
+  /**
+   * A simple template renderer. Placeholders such as <%id%> are replaced
+   * by context['id'] with items being escaped. Placeholders such as <#id#>
+   * are not escaped.
+   */
+  function renderTemplate(template, context) {
+    var esc = $(document.createElement('div'));
+
+    function handle(ph, escape) {
+      var cur = context;
+      $.each(ph.split('.'), function() {
+        cur = cur[this];
+      });
+      return escape ? esc.text(cur || "").html() : cur;
+    }
+
+    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+      return handle(arguments[2], arguments[1] == '%' ? true : false);
+    });
+  }
+
+  /** Flash an error message briefly. */
+  function showError(message) {
+    $(document.createElement('div')).attr({'class': 'popup-error'})
+      .append($(document.createElement('div'))
+               .attr({'class': 'error-message'}).text(message))
+      .appendTo('body')
+      .fadeIn("slow")
+      .delay(2000)
+      .fadeOut("slow");
+  }
+
+  /** Add a link the user uses to open the comments popup. */
+  $.fn.comment = function() {
+    return this.each(function() {
+      var id = $(this).attr('id').substring(1);
+      var count = COMMENT_METADATA[id];
+      var title = count + ' comment' + (count == 1 ? '' : 's');
+      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+      var addcls = count == 0 ? ' nocomment' : '';
+      $(this)
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-open' + addcls,
+            id: 'ao' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: image,
+              alt: 'comment',
+              title: title
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              show($(this).attr('id').substring(2));
+            })
+        )
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-close hidden',
+            id: 'ah' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: opts.closeCommentImage,
+              alt: 'close',
+              title: 'close'
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              hide($(this).attr('id').substring(2));
+            })
+        );
+    });
+  };
+
+  var opts = {
+    processVoteURL: '/_process_vote',
+    addCommentURL: '/_add_comment',
+    getCommentsURL: '/_get_comments',
+    acceptCommentURL: '/_accept_comment',
+    deleteCommentURL: '/_delete_comment',
+    commentImage: '/static/_static/comment.png',
+    closeCommentImage: '/static/_static/comment-close.png',
+    loadingImage: '/static/_static/ajax-loader.gif',
+    commentBrightImage: '/static/_static/comment-bright.png',
+    upArrow: '/static/_static/up.png',
+    downArrow: '/static/_static/down.png',
+    upArrowPressed: '/static/_static/up-pressed.png',
+    downArrowPressed: '/static/_static/down-pressed.png',
+    voting: false,
+    moderator: false
+  };
+
+  if (typeof COMMENT_OPTIONS != "undefined") {
+    opts = jQuery.extend(opts, COMMENT_OPTIONS);
+  }
+
+  var popupTemplate = '\
+    <div class="sphinx-comments" id="sc<%id%>">\
+      <p class="sort-options">\
+        Sort by:\
+        <a href="#" class="sort-option byrating">best rated</a>\
+        <a href="#" class="sort-option byascage">newest</a>\
+        <a href="#" class="sort-option byage">oldest</a>\
+      </p>\
+      <div class="comment-header">Comments</div>\
+      <div class="comment-loading" id="cn<%id%>">\
+        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+      <ul id="cl<%id%>" class="comment-ul"></ul>\
+      <div id="ca<%id%>">\
+      <p class="add-a-comment">Add a comment\
+        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+      <div class="comment-markup-box" id="mb<%id%>">\
+        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+        <tt>``code``</tt>, \
+        code blocks: <tt>::</tt> and an indented block after blank line</div>\
+      <form method="post" id="cf<%id%>" class="comment-form" action="">\
+        <textarea name="comment" cols="80"></textarea>\
+        <p class="propose-button">\
+          <a href="#" id="pc<%id%>" class="show-propose-change">\
+            Propose a change ▹\
+          </a>\
+          <a href="#" id="hc<%id%>" class="hide-propose-change">\
+            Propose a change ▿\
+          </a>\
+        </p>\
+        <textarea name="proposal" id="pt<%id%>" cols="80"\
+                  spellcheck="false"></textarea>\
+        <input type="submit" value="Add comment" />\
+        <input type="hidden" name="node" value="<%id%>" />\
+        <input type="hidden" name="parent" value="" />\
+      </form>\
+      </div>\
+    </div>';
+
+  var commentTemplate = '\
+    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+      <div class="vote">\
+        <div class="arrow">\
+          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+            <img src="<%upArrow%>" />\
+          </a>\
+          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+            <img src="<%upArrowPressed%>" />\
+          </a>\
+        </div>\
+        <div class="arrow">\
+          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+            <img src="<%downArrow%>" id="da<%id%>" />\
+          </a>\
+          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+            <img src="<%downArrowPressed%>" />\
+          </a>\
+        </div>\
+      </div>\
+      <div class="comment-content">\
+        <p class="tagline comment">\
+          <span class="user-id"><%username%></span>\
+          <span class="rating"><%pretty_rating%></span>\
+          <span class="delta"><%time.delta%></span>\
+        </p>\
+        <div class="comment-text comment"><#text#></div>\
+        <p class="comment-opts comment">\
+          <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\
+          <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\
+          <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\
+          <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\
+          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+          <span id="cm<%id%>" class="moderation hidden">\
+            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+          </span>\
+        </p>\
+        <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+        </pre>\
+          <ul class="comment-children" id="cl<%id%>"></ul>\
+        </div>\
+        <div class="clearleft"></div>\
+      </div>\
+    </div>';
+
+  var replyTemplate = '\
+    <li>\
+      <div class="reply-div" id="rd<%id%>">\
+        <form id="rf<%id%>">\
+          <textarea name="comment" cols="80"></textarea>\
+          <input type="submit" value="Add reply" />\
+          <input type="button" value="Cancel" />\
+          <input type="hidden" name="parent" value="<%id%>" />\
+          <input type="hidden" name="node" value="" />\
+        </form>\
+      </div>\
+    </li>';
+
+  $(document).ready(function() {
+    init();
+  });
+})(jQuery);
+
+$(document).ready(function() {
+  // add comment anchors for all paragraphs that are commentable
+  $('.sphinx-has-comment').comment();
+
+  // highlight search words in search results
+  $("div.context").each(function() {
+    var params = $.getQueryParameters();
+    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+    var result = $(this);
+    $.each(terms, function() {
+      result.highlightText(this.toLowerCase(), 'highlighted');
+    });
+  });
+
+  // directly open comment window if requested
+  var anchor = document.location.hash;
+  if (anchor.substring(0, 9) == '#comment-') {
+    $('#ao' + anchor.substring(9)).click();
+    document.location.hash = '#s' + anchor.substring(9);
+  }
+});

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/genindex.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/genindex.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/genindex.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/genindex.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,680 @@
+
+
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Index — Clang 3.5 documentation</title>
+    
+    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="stylesheet" href="_static/print.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '3.5',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="_static/theme_extras.js"></script>
+    <link rel="top" title="Clang 3.5 documentation" href="index.html" /> 
+  </head>
+  <body>
+      <div class="header"><h1 class="heading"><a href="index.html">
+          <span>Clang 3.5 documentation</span></a></h1>
+        <h2 class="heading"><span>Index</span></h2>
+      </div>
+      <div class="topnav">
+      
+        <p>
+        <a class="uplink" href="index.html">Contents</a>
+        </p>
+
+      </div>
+      <div class="content">
+        
+        
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#Symbols"><strong>Symbols</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ 
+</div>
+<h2 id="Symbols">Symbols</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt>
+    -fbracket-depth=N
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fbracket-depth">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fcomment-block-commands=[commands]
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fcomment-block-commands">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fconstexpr-depth=N
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fconstexpr-depth">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fdiagnostics-format=clang/msvc/vi
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-format">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fdiagnostics-parseable-fixits
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-parseable-fixits">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fdiagnostics-show-category=none/id/name
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-show-category">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fdiagnostics-show-template-tree
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-show-template-tree">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -ferror-limit=123
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-ferror-limit">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fno-assume-sane-operator-new
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-assume-sane-operator-new">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fno-crash-diagnostics
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-crash-diagnostics">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fno-elide-type
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-elide-type">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fno-standalone-debug
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-standalone-debug">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -foperator-arrow-depth=N
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-foperator-arrow-depth">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fparse-all-comments
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fparse-all-comments">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -fstandalone-debug
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-fstandalone-debug">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -ftemplate-backtrace-limit=123
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-ftemplate-backtrace-limit">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -ftemplate-depth=N
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-ftemplate-depth">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -ftls-model=[model]
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-ftls-model">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -ftrap-function=[name]
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-ftrap-function">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -g
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-g">command line option</a>
+  </dt>
+
+      </dl></dd>
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt>
+    -g0
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-g0">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -gline-tables-only
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-gline-tables-only">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -m[no-]crc
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-m">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -mgeneral-regs-only
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-mgeneral-regs-only">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -mhwdiv=[values]
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-mhwdiv">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -pedantic
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-pedantic">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -pedantic-errors
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-pedantic-errors">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -w
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-w">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wambiguous-member-template
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wambiguous-member-template">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wbind-to-temporary-copy
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wbind-to-temporary-copy">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wdocumentation
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wdocumentation">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Werror
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Werror">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Weverything
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Weverything">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wextra-tokens
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wextra-tokens">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wfoo
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wfoo">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wno-documentation-unknown-command
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-documentation-unknown-command">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wno-error=foo
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-error">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wno-foo
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-foo">command line option</a>
+  </dt>
+
+      </dl></dd>
+      
+  <dt>
+    -Wsystem-headers
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wsystem-headers">command line option</a>
+  </dt>
+
+      </dl></dd>
+  </dl></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt>
+    command line option
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="UsersManual.html#cmdoption-Wambiguous-member-template">-Wambiguous-member-template</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wbind-to-temporary-copy">-Wbind-to-temporary-copy</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wdocumentation">-Wdocumentation</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Werror">-Werror</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Weverything">-Weverything</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wextra-tokens">-Wextra-tokens</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wfoo">-Wfoo</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-documentation-unknown-command">-Wno-documentation-unknown-command</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-error">-Wno-error=foo</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wno-foo">-Wno-foo</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-Wsystem-headers">-Wsystem-headers</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fbracket-depth">-fbracket-depth=N</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fcomment-block-commands">-fcomment-block-commands=[commands]</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fconstexpr-depth">-fconstexpr-depth=N</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-format">-fdiagnostics-format=clang/msvc/vi</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-parseable-fixits">-fdiagnostics-parseable-fixits</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-show-category">-fdiagnostics-show-category=none/id/name</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fdiagnostics-show-template-tree">-fdiagnostics-show-template-tree</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-ferror-limit">-ferror-limit=123</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-assume-sane-operator-new">-fno-assume-sane-operator-new</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-crash-diagnostics">-fno-crash-diagnostics</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-elide-type">-fno-elide-type</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fno-standalone-debug">-fno-standalone-debug</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-foperator-arrow-depth">-foperator-arrow-depth=N</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fparse-all-comments">-fparse-all-comments</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-fstandalone-debug">-fstandalone-debug</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-ftemplate-backtrace-limit">-ftemplate-backtrace-limit=123</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-ftemplate-depth">-ftemplate-depth=N</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-ftls-model">-ftls-model=[model]</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-ftrap-function">-ftrap-function=[name]</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-g">-g</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-g0">-g0</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-gline-tables-only">-gline-tables-only</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-m">-m[no-]crc</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-mgeneral-regs-only">-mgeneral-regs-only</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-mhwdiv">-mhwdiv=[values]</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-pedantic">-pedantic</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-pedantic-errors">-pedantic-errors</a>
+  </dt>
+
+        
+  <dt><a href="UsersManual.html#cmdoption-w">-w</a>
+  </dt>
+
+      </dl></dd>
+  </dl></td>
+</tr></table>
+
+
+
+      </div>
+      <div class="bottomnav">
+      
+        <p>
+        <a class="uplink" href="index.html">Contents</a>
+        </p>
+
+      </div>
+
+    <div class="footer">
+        © Copyright 2007-2014, The Clang Team.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/index.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/index.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/index.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/index.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,143 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Welcome to Clang’s documentation! — Clang 3.5 documentation</title>
+    
+    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="stylesheet" href="_static/print.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '3.5',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="_static/theme_extras.js"></script>
+    <link rel="top" title="Clang 3.5 documentation" href="#" />
+    <link rel="next" title="Clang 3.5 Release Notes" href="ReleaseNotes.html" /> 
+  </head>
+  <body>
+      <div class="header"><h1 class="heading"><a href="#">
+          <span>Clang 3.5 documentation</span></a></h1>
+        <h2 class="heading"><span>Welcome to Clang’s documentation!</span></h2>
+      </div>
+      <div class="topnav">
+      
+        <p>
+        <a class="uplink" href="#">Contents</a>
+          ::  
+        <a href="ReleaseNotes.html">Clang 3.5 Release Notes</a>  Â»
+        </p>
+
+      </div>
+      <div class="content">
+        
+        
+  <div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="ReleaseNotes.html">Clang 3.5 Release Notes</a></li>
+</ul>
+</div>
+<div class="section" id="using-clang-as-a-compiler">
+<h1>Using Clang as a Compiler<a class="headerlink" href="#using-clang-as-a-compiler" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="UsersManual.html">Clang Compiler User’s Manual</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LanguageExtensions.html">Clang Language Extensions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="AttributeReference.html">Attributes in Clang</a></li>
+<li class="toctree-l1"><a class="reference internal" href="CrossCompilation.html">Cross-compilation using Clang</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ThreadSafetyAnalysis.html">Thread Safety Analysis</a></li>
+<li class="toctree-l1"><a class="reference internal" href="AddressSanitizer.html">AddressSanitizer</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ThreadSanitizer.html">ThreadSanitizer</a></li>
+<li class="toctree-l1"><a class="reference internal" href="MemorySanitizer.html">MemorySanitizer</a></li>
+<li class="toctree-l1"><a class="reference internal" href="DataFlowSanitizer.html">DataFlowSanitizer</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LeakSanitizer.html">LeakSanitizer</a></li>
+<li class="toctree-l1"><a class="reference internal" href="SanitizerSpecialCaseList.html">Sanitizer special case list</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Modules.html">Modules</a></li>
+<li class="toctree-l1"><a class="reference internal" href="MSVCCompatibility.html">MSVC compatibility</a></li>
+<li class="toctree-l1"><a class="reference internal" href="FAQ.html">Frequently Asked Questions (FAQ)</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="using-clang-as-a-library">
+<h1>Using Clang as a Library<a class="headerlink" href="#using-clang-as-a-library" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="Tooling.html">Choosing the Right Interface for Your Application</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ExternalClangExamples.html">External Clang Examples</a></li>
+<li class="toctree-l1"><a class="reference internal" href="IntroductionToTheClangAST.html">Introduction to the Clang AST</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LibTooling.html">LibTooling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LibFormat.html">LibFormat</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ClangPlugins.html">Clang Plugins</a></li>
+<li class="toctree-l1"><a class="reference internal" href="RAVFrontendAction.html">How to write RecursiveASTVisitor based ASTFrontendActions.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LibASTMatchersTutorial.html">Tutorial for building tools using LibTooling and LibASTMatchers</a></li>
+<li class="toctree-l1"><a class="reference internal" href="LibASTMatchers.html">Matching the Clang AST</a></li>
+<li class="toctree-l1"><a class="reference internal" href="HowToSetupToolingForLLVM.html">How To Setup Clang Tooling For LLVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="JSONCompilationDatabase.html">JSON Compilation Database Format Specification</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="using-clang-tools">
+<h1>Using Clang Tools<a class="headerlink" href="#using-clang-tools" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="ClangTools.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ClangCheck.html">ClangCheck</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ClangFormat.html">ClangFormat</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ClangFormatStyleOptions.html">Clang-Format Style Options</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="design-documents">
+<h1>Design Documents<a class="headerlink" href="#design-documents" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="InternalsManual.html">“Clang” CFE Internals Manual</a></li>
+<li class="toctree-l1"><a class="reference internal" href="DriverInternals.html">Driver Design & Internals</a></li>
+<li class="toctree-l1"><a class="reference internal" href="PTHInternals.html">Pretokenized Headers (PTH)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="PCHInternals.html">Precompiled Header and Modules Internals</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+
+
+      </div>
+      <div class="bottomnav">
+      
+        <p>
+        <a class="uplink" href="#">Contents</a>
+          ::  
+        <a href="ReleaseNotes.html">Clang 3.5 Release Notes</a>  Â»
+        </p>
+
+      </div>
+
+    <div class="footer">
+        © Copyright 2007-2014, The Clang Team.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/objects.inv
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/objects.inv?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/objects.inv
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/search.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/search.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/search.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/search.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,92 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Search — Clang 3.5 documentation</title>
+    
+    <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <link rel="stylesheet" href="_static/print.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '3.5',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    <script type="text/javascript" src="_static/searchtools.js"></script>
+    <script type="text/javascript" src="_static/theme_extras.js"></script>
+    <link rel="top" title="Clang 3.5 documentation" href="index.html" />
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+   
+
+  </head>
+  <body>
+      <div class="header"><h1 class="heading"><a href="index.html">
+          <span>Clang 3.5 documentation</span></a></h1>
+        <h2 class="heading"><span>Search</span></h2>
+      </div>
+      <div class="topnav">
+      
+        <p>
+        <a class="uplink" href="index.html">Contents</a>
+        </p>
+
+      </div>
+      <div class="content">
+        
+        
+  <h1 id="search-documentation">Search</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  <p>
+    From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.
+  </p>
+  <form action="" method="get">
+    <input type="text" name="q" value="" />
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  <div id="search-results">
+  
+  </div>
+
+      </div>
+      <div class="bottomnav">
+      
+        <p>
+        <a class="uplink" href="index.html">Contents</a>
+        </p>
+
+      </div>
+
+    <div class="footer">
+        © Copyright 2007-2014, The Clang Team.
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+    </div>
+  </body>
+</html>
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/_build/html/searchindex.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/_build/html/searchindex.js?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/_build/html/searchindex.js (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/_build/html/searchindex.js Tue Jan 13 16:55:20 2015
@@ -0,0 +1 @@
+Search.setIndex({objects:{"":{"-Werror":[23,0,1,"cmdoption-Werror"],"-ferror-limit":[23,0,1,"cmdoption-ferror-limit"],"-Weverything":[23,0,1,"cmdoption-Weverything"],"-fno-assume-sane-operator-new":[23,0,1,"cmdoption-fno-assume-sane-operator-new"],"-mgeneral-regs-only":[23,0,1,"cmdoption-mgeneral-regs-only"],"-Wambiguous-member-template":[23,0,1,"cmdoption-Wambiguous-member-template"],"-fno-standalone-debug":[23,0,1,"cmdoption-fno-standalone-debug"],"-Wno-error":[23,0,1,"cmdoption-Wno-error"],"-Wno-foo":[23,0,1,"cmdoption-Wno-foo"],"-fparse-all-comments":[23,0,1,"cmdoption-fparse-all-comments"],"-g":[23,0,1,"cmdoption-g"],"-fno-crash-diagnostics":[23,0,1,"cmdoption-fno-crash-diagnostics"],"-gline-tables-only":[23,0,1,"cmdoption-gline-tables-only"],"-ftrap-function":[23,0,1,"cmdoption-ftrap-function"],"-m":[23,0,1,"cmdoption-m"],"-fdiagnostics-parseable-fixits":[23,0,1,"cmdoption-fdiagnostics-parseable-fixits"],"-fdiagnostics-show-category":[23,0,1,"cmdoption-fdiagnostics-show-category"],"-fdiagnostics-format":[23,0,1,"cmdoption-fdiagnostics-format"],"-w":[23,0,1,"cmdoption-w"],"-fcomment-block-commands":[23,0,1,"cmdoption-fcomment-block-commands"],"-fdiagnostics-show-template-tree":[23,0,1,"cmdoption-fdiagnostics-show-template-tree"],"-pedantic-errors":[23,0,1,"cmdoption-pedantic-errors"],"-mhwdiv":[23,0,1,"cmdoption-mhwdiv"],"-foperator-arrow-depth":[23,0,1,"cmdoption-foperator-arrow-depth"],"-fno-elide-type":[23,0,1,"cmdoption-fno-elide-type"],"-Wsystem-headers":[23,0,1,"cmdoption-Wsystem-headers"],"-ftemplate-depth":[23,0,1,"cmdoption-ftemplate-depth"],"-pedantic":[23,0,1,"cmdoption-pedantic"],"-fbracket-depth":[23,0,1,"cmdoption-fbracket-depth"],"-fstandalone-debug":[23,0,1,"cmdoption-fstandalone-debug"],"-g0":[23,0,1,"cmdoption-g0"],"-Wdocumentation":[23,0,1,"cmdoption-Wdocumentation"],"-Wbind-to-temporary-copy":[23,0,1,"cmdoption-Wbind-to-temporary-copy"],"-Wno-documentation-unknown-command":[23,0,1,"cmdoption-Wno-documentation-unknown-command"],"-ftemplate-backtrace-limit":[23,0,1,"cmdoption-ftemplate-backtrace-limit"],"-Wextra-tokens":[23,0,1,"cmdoption-Wextra-tokens"],"-Wfoo":[23,0,1,"cmdoption-Wfoo"],"-fconstexpr-depth":[23,0,1,"cmdoption-fconstexpr-depth"],"-ftls-model":[23,0,1,"cmdoption-ftls-model"]}},terms:{attribute_unavailable_with_messag:21,gnu89:23,linebreak:[],withdrawimpl:1,orthogon:30,usetab:39,"0x173afa8":2,poorli:17,four:[9,17,5],prefix:[10,23,29,14,39,32,2,27,20,6,21],nsdate:27,dirnam:36,namespace2:12,upsid:9,whose:[23,2,17,5,25,21,8],createastconsum:13,accur:[35,15,17,5],"const":[0,23,29,14,30,36,32,2,8,18,4,27,5,37,21,17],wunused_macro:5,arithmat:21,spew:5,"0x20":27,getdeclcontext:5,concret:[20,9,5],allowshortfunctionsonasinglelin:39,swap:[21,5],foldingsetnodeid:2,under:[0,12,10,1,29,15,30,24,23,27,8,18,4,5,37,38,17],preprocess:[23,24,5,6,21,9],spec:9,trylock:1,merchant:30,digit:5,lack:[1,21,17],everi:[23,1,21,24,32,2,29,4,33,5,20,6,17],risk:[39,21,17],"void":[23,11,31,12,18,1,29,15,30,32,2,8,13,39,4,27,5,35,21,17,33],subjectlist:5,affect:[23,39,24,32,21,7,17],"__builtin_saddl_overflow":21,"0x403c8c":12,vast:[24,17,5],byref_obj:30,nsarrai:[21,27],plural:5,cxx_binary_liter:21,cmd:[28,10,8],lk_javascript:39,defens:24,type_idx:8,pluginastact:14,pointeralign:39,vector:[0,23,14,39,36,24,35,5,21,17,9],terabyt:[38,12],math:[21,24,8],mllvm:23,incourag:2,x86_64:[23,12,29,15,3,4,38,9],carryout:21,avaudioqualitymin:27,fixit:[37,23,7,19,5],"__va_list_tag":31,naiv:17,direct:[23,29,35,21,24,32,27,17,5,6,8,9],enjoi:7,consequ:[20,6,17,27,23],second:[10,33,23,1,30,24,2,8,18,27,5,21,17,9],processdeclattribut:5,aggreg:[21,17,5],conflict_b:24,"0x173b0b0":2,even:[23,38,30,24,33,17,39,5,37,20,21,8],formatt:5,hide:1,getprimarycontext:5,warn_:5,neg:[1,23,5],asid:5,implicitcastexpr:[28,25,2],poison:32,wbind:23,"0x7ff3a302a9f8":31,rtag:37,"new":[1,27,5,8,9,23,12,13,7,17,18,19,21,24,2,28,29,35,32,33,36,37,38,30],net:18,ever:[5,24,17,36,8,9],liberti:17,metadata:[32,17,9],cxx_range_for:21,ongo:33,elimin:[12,24,32,5,38,21,17,9],centric:[32,5],annotationendloc:5,behavior:[23,11,29,35,24,32,27,17,4,33,5,21,8],"__dmb":21,intargu:5,mem:8,myframework:24,never:[23,39,24,17,5,21,8,9],copysign:5,here:[23,11,12,1,39,24,27,8,35,5,28,20,21,7,17,9],undef:[29,24,8,32],studio:[10,39,24,23,5],"__imag__":21,debugg:[33,5],numberwithfloat:27,path:[10,11,38,12,23,1,14,36,24,32,27,8,5,28,20,21,22,17,9],mpi_datatype_nul:8,findclassdecl:13,interpret:[1,39,24,5],apvalu:5,unconsum:8,llvm_profile_fil:23,thread_annotation_attribute__:1,precis:[1,17,8,5],findnamedclassact:13,stai:15,astdumpfilt:28,permit:[23,30,24,8,21,17],getastcontext:13,aka:21,objectatindex:27,werror:[23,35],tc3:23,portabl:[21,9,5],"__sync_fetch_and_add":21,instr:23,"0x7f7ddabcac4d":12,intent:[8,17,5],substr:[28,17],unix:[22,24],strai:[21,17],printf:[30,16,32,18,5,38,8],"__builtin_smul_overflow":21,total:[23,30],"byte":[10,12,23,29,5,8],unit:[23,12,13,36,24,32,27,8,29,4,5,25,20,21,22,26,17],highli:23,redon:6,describ:[0,11,39,10,1,30,21,24,23,2,8,18,32,27,5,35,6,22,7,17,9],would:[10,35,33,23,1,30,36,24,32,2,8,18,39,19,5,21,17,9],init:[12,1,2,17,21,8],afterward:[2,36],noninfring:30,program:[1,27,4,5,6,8,10,12,13,15,17,18,19,20,21,23,24,26,2,28,29,30,32,33,36,38,7],overhead:[23,12,1,15,21,29,6,8,9],typo:[],recommend:[21,17],strike:17,"__builtin_object_s":[23,8],type:[1,2,4,5,6,7,8,9,23,11,12,13,15,17,18,21,24,26,27,29,30,32,33,35,36,25,38,39],until:[23,1,33,18,26,17],block_byref_cal:30,unescap:22,relax:[38,21,33],remark:[23,35,17,5],relat:[36,24,2,19,5,28,20,21,17,9],notic:[30,35],warn:[23,35,33,12,1,15,24,27,4,19,5,37,38,21,8,9],getaspointertyp:5,hold:[1,30,8,18,5,17,9],unpack:20,must:[23,1,14,30,21,24,32,27,8,18,29,5,37,6,22,17,9],subexpr:5,accid:5,uninstru:[38,4],word:[1,30,24,5,21,17],err:[],restor:[23,17,2],generalis:4,setup:[34,7,31,36,28,20],work:[1,2,4,5,6,7,17,9,10,11,12,15,20,21,22,23,24,26,27,28,30,32,33,36,25,38,35],foo_ctor:30,worth:[9,5],conceptu:[9,5],wors:17,cmake_export_compile_command:[22,36],"__strict_ansi__":23,akin:[17,5],root:[20,17,23],unnam:[21,5],overrid:[23,7,24,32,17,5,21,8],defer:[23,33],lclangbas:24,give:[23,7,36,2,19,5,25,21,17,9],cxxusingdirect:5,"0x5aea0d0":25,indic:[23,34,1,35,24,32,2,8,13,26,5,21,17,9],dr1170:21,definit:[23,1,39,21,24,32,2,8,18,26,27,5,6,17,9],caution:17,unavail:[21,17,8],want:[0,11,33,23,13,7,16,2,8,25,36,26,19,5,28,20,21,17,9],avaudioqualitylow:27,"0x5aead28":25,unsign:[23,12,14,30,31,27,39,35,5,38,21,8],experimentalautodetectbinpack:39,codegen:[23,5],end:[10,31,23,1,29,7,21,32,2,8,18,36,26,5,20,6,22,17,9],hoc:17,thing:[23,13,5,37,20,21,22,17,9],ordinari:[1,23],strnlen_chk:8,classifi:[23,17,5],i686:23,how:[1,27,4,5,8,9,23,12,13,14,15,17,19,20,21,22,34,24,26,2,28,29,31,32,33,36,37,38,7],hasnam:26,breakbeforebrac:39,libsupport:5,recoveri:[18,33,5],answer:[24,17,2],verifi:[37,26,32,5],macosx10:23,ancestor:25,config:[10,39,24,35],updat:[1,32,18,4,5,17],dialect:[23,24,17,32],recogn:[35,23,21,17,5],rebas:2,attrdoc:5,after:[23,35,33,12,1,30,36,24,32,2,8,18,39,27,5,28,20,21,22,17,9],lab:35,emac:10,diagram:9,badli:17,wrong:[20,17,23,5],exclusive_lock_funct:1,beauti:23,pthread_join:15,fblock:23,arch:[20,23,9],parallel:[35,6,21,17],demonstr:[1,14,4,27,36],danieljasp:31,attempt:[23,1,30,24,32,33,8,18,35,5,17,9],third:[24,32,33,17,5,8],isvalid:13,bootstrap:[28,38,2],lost:26,exclud:[23,24,17],recompil:[24,17,2,32],maintain:[24,32,2,5,20,17,9],environ:[23,12,1,30,24,18,19,38,22,17,9],incorpor:[21,7,17],enter:[17,5],exclus:[1,18,21,30,8],mechan:[1,24,32,5,21,17],first:[1,2,5,6,8,9,10,12,14,17,18,21,23,24,27,28,35,32,33,39,36,25,38,30],order:[0,35,33,12,23,1,30,24,32,2,8,29,27,5,20,21,17,9],vfp:8,decl:[13,25,32,2,5],origin:[23,29,30,21,24,32,17,4,35,5,38,6,7,8,9],frontend:[23,13,35,16,32,2,36,5,25,6],diagnos:[23,21,33,5],condvar:2,over:[23,13,14,7,36,32,2,19,5,22,17],failur:[1,23,24,8,5],orang:9,becaus:[21,23,35,1,30,16,24,32,2,8,4,27,5,6,7,17,9],x64:23,numberwithchar:27,bs_stroustrup:39,appar:17,byref:30,vari:[23,32,17,8],"__builtin_ab":5,gentl:25,cli:7,fit:[30,33,5,25,22,39],fix:[23,35,33,12,27,38,1,15,24,32,2,19,5,20,21,17],clangastmatch:2,better:[23,1,35,24,33,5,37,20,21,9],"_block":30,complex:[23,1,24,4,5,20,21,9],poly8x16_t:21,persist:[37,24],hidden:[10,32],setwidth:5,easier:[20,24,17,38],cxxliteraloperatornam:5,them:[1,2,5,6,17,9,23,12,13,7,16,18,20,21,24,26,27,28,35,32,39,36,30],gnu99:23,thei:[1,27,5,8,9,23,11,12,7,17,18,19,20,21,24,26,2,35,32,33,39,36,37,38,30],proce:[13,17,32],safe:[8,1,7,33,17,6,21],"break":[18,1,39,24,8,13,19,36,20,35,17],alwaysbreaktemplatedeclar:39,unlucki:24,promis:[15,17],astread:32,interrupt:[8,5],d_gnu_sourc:14,itanium:17,yourself:25,bank:8,stdarg:16,cxx_aligna:21,blockstoragefoo:30,grammat:5,grammar:[24,27,5],meat:5,controlstat:39,acquisit:[],close:[39,26,5,25,21,9],overflow:[23,21],rizsotto:37,accommod:[18,9],block_field_is_weak:30,conflict:[21,24,17,27],arrow:23,each:[2,4,5,6,7,8,9,23,11,15,17,18,20,21,22,24,27,28,29,39,32,36,25,30],debug:[23,13,24,33,5,28,38,8,9],autosens:23,"0x173b240":2,localiz:5,side:[23,29,7,2,17,18,27,5,21,8],asan:12,mean:[23,12,38,1,15,21,24,27,8,29,39,33,30,5,20,6,17,9],prohibit:[39,17],monolith:9,cppguid:0,currentlocal:21,add_clang_execut:[13,2],objcinstance0:5,combust:21,foldabl:5,collector:17,cxxoperatornam:5,unbound:5,palat:5,"0x7f8bdda3824b":[],goe:[23,21,5],newli:27,crucial:24,monitor:[29,21],convei:5,astcontext:[13,25,32,2,5],content:[23,24,32,2,17,5,6,21],rewrit:[30,24,7,5],laid:17,dictionarywithobjectsandkei:27,adapt:9,newobject:27,pt_guarded_var:1,unmanag:17,targetspecificattribut:5,"__block_dispose_10":30,multilin:39,libastmatch:[34,26,2],"0x5aeaa90":25,nodetyp:13,linear:[6,24,32],barrier:[29,30,21,24,8],getcanonicaldecl:2,situat:17,infin:21,free:[12,30,24,27,26,35,37,17],standard:[0,10,1,39,24,23,33,8,19,5,25,20,21,7,17],small:[23,31,13,21,32,2,5,6,17,9],fixm:[0,23],identifierinfo:[32,5],"__c11_atomic_stor":21,accessmodifieroffset:39,autoreleasepool:17,precompil:[23,34,24,32,5,6],flush:21,convent:[23,30,24,33,17,5,21,22,8],"_returns_retain":21,angl:5,astdump:28,atl:33,filter:[28,10,17,2,5],system_framework:21,fuse:17,iso:23,isn:[29,2,17,5,8,9],regress:[],baltic:5,isa:[23,30,5],subtl:[24,17],confus:[23,9,24,17,5],condvarnam:2,performwith:17,rang:[0,10,35,23,2,27,5,21,7,8],byref_dispos:30,render:[17,5],independ:[23,15,24,32,19,5,38,6,22,9],munknown:[],rank:8,necess:[17,5],restrict:[23,1,30,24,32,2,17,5,21,8],hook:[13,17],unlik:[23,1,15,24,27,29,4,5,6,17],alreadi:[13,7,24,32,2,8,27,36,37,20,21,17],wrapper:[37,29,21,31,4],wasn:24,massiv:17,primari:[7,24,17,5,37,8],handletranslationunit:13,wherev:[18,8,2,5],rewritten:[30,7,27,5],nomin:29,top:[10,14,24,32,19,5,38,21,22,17,9],objc_instancetyp:21,sometim:[23,1,33,8,5,17],downsid:[14,9],bitstream:[32,5],toi:37,ton:5,too:[1,16,17],similarli:[23,1,30,24,27,17,6,7,21,9],toc:17,pathcompon:27,hundr:[29,23,5],cxx_generic_lambda:21,gnu:[23,39,35,5,20,21,8],cxx11:5,sourcemgr:0,"__builtin_va_arg_pack_len":23,"_pragma":[23,5],tool:[0,2,4,5,8,9,10,11,12,13,14,15,17,19,20,21,22,23,24,25,26,28,29,31,34,36,37,38,7],annotationvalu:5,took:32,processinheritabledeclattr:[],andersbakken:37,sourceweb:37,getmu:1,incur:[23,6,9],somewhat:[24,17,5],conserv:[1,17,9],objc_initweak:17,processnoninheritabledeclattr:[],objc_retainautoreleasereturnvalu:17,machineri:[23,6,24,17,5],clang_index:37,lockabl:1,reinterpret_cast:[7,17],target:[23,35,30,24,32,39,19,5,28,20,21,25,8],"__block":[18,30,17],provid:[1,27,4,5,6,7,8,9,23,11,13,14,15,17,18,19,20,21,24,26,2,28,29,30,32,33,35,36,37,38,39],expr:[25,23,35,2,5],lvalu:[25,23,17,2,5],tree:[23,14,35,36,24,32,2,26,5,28,22,7,9],"10x":15,project:[10,12,23,33,15,31,24,32,2,3,39,19,36,37,22,7,17,9],matter:[1,18,23,5],wchar_t:[21,24],r124217:[],nsprocessinfo:27,returnstmt:25,prone:17,compoundstmt:[28,25,31,5],provis:18,assertreaderheld:1,uniniti:[23,30,8,38],aapc:8,externalsemasourc:32,ran:23,morehelp:[2,36],modern:[7,27,33,5,37,20,21,17],mind:5,example_useafterfre:12,bitfield:5,raw:[35,23,6,21,5],incrementvari:2,manner:[1,30,8,18,5,28,21,17],increment:[1,21,17,2],seen:[21,32,17,27,12],seem:17,incompat:[23,24,17,33,8],dozen:23,strength:6,getexit:5,dsomedef:22,latter:24,cxx_relaxed_constexpr:21,weakli:8,"__attribute__":[30,12,1,15,8,5,38,21,17],hatch:1,ptr_idx:8,cxx_alias_templ:21,expens:[21,24,32],simplifi:[21,24,17,27,5],fullsourceloc:13,object:[23,35,33,1,30,21,24,32,2,8,18,39,27,5,37,6,22,7,17,9],c_generic_select:21,blockreturningintwithintandcharargu:18,lexic:[1,30,24,32,18,5,6],regular:[23,11,39,35,21,30],recorddecl:[26,5],letter:17,programm:[1,18,24,17,27],phase:[9,17,5],boost_foreach:39,unordered_map:7,tradit:[23,17],cxx_raw_string_liter:21,don:[23,35,12,38,33,39,24,2,19,5,20,21,7,17,9],pointe:[8,17,5],doc:[0,11,31,35],extrahelp:[2,36],flow:[23,29,17,18,4,5,21,8],dog:35,c_static_assert:21,doe:[1,2,3,4,5,6,8,9,10,11,12,15,17,18,20,21,22,23,24,27,30,32,33,36,25,38,39],bindarchact:9,"__is_class":21,declar:[1,2,5,8,23,13,14,7,17,18,21,24,37,26,27,28,29,30,31,32,36,25,39],wildcard:[11,24,12],diag:5,unchang:22,sum:[20,21,35],came:[23,5],explan:[23,2],runtooloncod:[13,36],pragma:[23,35,24,33,21,17],functionpoint:18,visitor:13,getcxxoverloadedoper:5,random:[38,5],codingstandard:0,findnamedclassconsum:13,syntax:[23,35,27,1,39,36,24,32,2,17,18,19,5,21,22,7,8],wuniniti:[],carryin:21,protocol:[39,21,17,27,8],involv:[23,24,27,5,6,17,9],despit:[18,6,8],isequ:27,nobodi:23,latent:17,acquir:[1,8],stmtnode:5,objc_autoreleasepoolpush:17,menu:10,ccmake:[28,2,36],configur:[0,10,14,39,36,24,2,27,5,28,20,22,7],releas:[34,35,1,30,24,2,8,18,27,21,17],sugar:[37,17,8],"__is_fin":21,kerrorcodehack:21,latenc:[21,22],rich:[23,5],nsstringcompareopt:21,predecessor:5,ftrap:23,type_express:18,nasti:5,likewis:21,stop:[23,13,39,32,5,17,9],compli:[0,39],pointertyp:[32,5],deepli:23,report:[23,11,12,15,24,38,35,9],reconstruct:32,falsenumb:27,youtub:25,layout:[23,29,30,24,32,33,8],ns_returns_autoreleas:[21,17],bar:[23,11,1,7,8,26,5,21,17],emb:[25,30],baz:[1,23,21,17,5],patch:[10,21],twice:[21,17],bad:[23,11,12,1,24,5,17],memorysanit:[23,11,34,3,38,21,8],ban:17,n3421:7,jghqxi:9,analog:17,black:23,strncmp:27,visitnodetyp:13,"__need_size_t":24,fair:17,system_head:[23,24],mainli:6,cstdio:24,datatyp:8,"__is_interface_class":21,mandatori:17,result:[10,33,12,23,1,29,39,36,24,32,2,8,18,27,5,28,38,21,25,17,9],fprofil:23,corrupt:[17,8],hash:[32,2,5],cfarrayref:30,msan:38,best:[23,29,39,2,17,5,20,21,22,8],subject:[30,24,17,18,5,21,8],fn6:23,spaceaftercontrolstatementkeyword:[],said:[18,21,30,17],fn3:23,fn2:23,fn1:23,hopefulli:7,databas:[34,31,2,28,36,37,22],"_block_destroi":30,"_foo":[21,5],figur:[36,2,26,5,28,20,22],simplest:[37,30,2],awai:[39,17,8],sysroot:20,attribut:[23,12,34,1,15,30,24,8,18,26,35,5,38,21,17],accord:[23,7,24,32,27,17,18,4,5,21,22,8],extend:[10,11,29,24,2,18,4,33,5,21,17],nslog:[21,27],getsourcemanag:2,weak:[23,30,24,17],"__builtin_trap":[23,21],extens:[10,23,1,29,30,24,32,33,8,18,34,35,5,28,20,21,17],lazi:[28,6,32],"__c11_atomic_compare_exchange_weak":21,preprocessor:[23,24,32,5,6,17,9],extent:[23,4,17,12],langopt:[32,5],toler:[29,17],umr2:38,rtti:[23,21,33],protect:[1,17,9],accident:[24,17],mu1:1,expos:[1,0,21,24,17],fbracket:23,isystem:23,string_liter:5,fault:23,howev:[23,1,30,21,24,32,33,8,5,20,6,7,17,9],against:[23,33,24,2,27,5,20,6,17],incvarnam:2,sourcebuff:5,ilp:21,logic:[29,7,24,32,2,18,5,20,17,9],fno:[23,12,35,24,38,21,17,9],seri:[24,5],com:[0,12,23,15,2,3,28,39,25,37,38,17],col:[25,31,27],initwithurl:27,con:19,initmystringvalu:8,ifoo:[23,9],cxxconversionfunctionnam:5,character:[30,2],ulimit:[38,15,12],trunk:[0,21,7],height:[25,5],lvaluetorvalu:25,permut:21,shortcut:[10,24],"__builtin_smulll_overflow":21,cxcompilationdatabas:22,diff:[10,21,5],trust:17,assum:[23,35,1,39,24,27,18,4,33,5,20,21,26,17],summar:30,duplic:[32,8,5],liabil:30,strong:[18,30,17],union:[29,30,32,26,5,4,21,17],getcompil:[2,36],convolut:17,three:[23,1,35,21,32,2,17,27,5,20,6,7,8],been:[23,35,33,8,1,15,30,24,32,2,3,29,27,5,38,21,17,9],github:[37,23,28,2],specul:17,accumul:23,much:[23,1,7,24,32,3,18,5,20,17,9],interest:[23,13,32,2,26,33,5,37,20,6],basic:[0,23,1,14,7,31,24,2,8,36,26,5,25,20,6,17],"__has_trivial_assign":21,"__builtin_readcyclecount":21,thrice:21,tini:32,hhbebh:9,charsourcerang:[0,5],linker:[20,35,24,23,9],unfortu:5,suppress:[23,12,15,24,17,38,8],xxx:23,allowshortloopsonasinglelin:39,uncommon:[17,5],argument:[10,35,33,23,1,14,30,36,27,8,18,39,4,29,5,28,21,17,9],multithread:[],"_msc_ver":23,lift:[7,24,17,32],"0x44d96d0":28,dfsan_get_label_info:29,child:[25,32,9],"catch":[29,35,2,18,17,9],emploi:[23,6],ident:[23,21,5],faddress:35,bitcod:32,servic:[8,19],properti:[39,30,2,17,18,5,21,8],strict:[23,17,8],aim:[23,2,28,19,5,37,21],calcul:1,gritti:19,"typeof":[23,30],occas:5,aid:24,vagu:17,anchor:23,nswidthinsensitivesearch:21,spawn:24,clangseri:24,seven:9,printabl:23,lightli:17,getforloc:2,toolkit:7,neon_vector_typ:21,disjoint:32,libxml:20,avencoderaudioqualitykei:27,cond:23,oldobject:27,objc_:21,actionfactori:28,"_static_assert":21,sever:[10,23,35,21,32,2,17,18,5,6,8],cxx_lambda:21,pthread_t:15,number_of_sampl:23,bitcast:5,descent:5,externalslocentrysourc:32,perform:[23,12,38,1,29,15,30,24,32,27,3,18,35,5,37,20,21,17,9],suggest:[12,15,33,35,5,38,8],make:[0,1,27,5,6,8,9,23,12,14,15,17,19,20,21,22,24,26,2,28,29,30,32,33,25,38],quirk:2,tls_model:[23,8],thusli:30,split:[39,24,17,8],semahandl:5,block_literal_1:30,rebuildxxx:5,complet:[23,33,1,39,21,24,32,2,8,28,19,5,37,6,17,9],autoreleas:[21,17],asan_opt:12,fragil:[21,24,17],nil:[18,17,27],darwin9:[32,9],xclang:[25,14,16,23,5],blue:[21,9,27,5],locks_exclud:1,hand:[23,33,13,36,2,29,27,5,20,17,9],"__builtin_umulll_overflow":21,rais:[17,27],ownership:[21,17,5],objc_arc:[21,24,17],tune:15,techniqu:[32,5],nscopi:27,qualif:[18,17],kept:[39,24,18,5,7,17,9],tgsin:8,inputact:9,linkifi:5,thu:[18,1,29,36,24,32,13,5,25,6,21],"__builtin_types_compatible_p":21,taint:29,inherit:[23,32,33,17,5,21,8],numberwithlonglong:27,client:[10,23,29,32,4,5,37,9],loopmatch:2,v4si:21,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,35,36,37,38,39],endif:[23,12,1,15,24,27,8,28,38,6,21],xarch_:9,everyth:[1,24,13,5,25,17],left:[23,13,39,24,32,2,17,27,5,8],tremend:35,identifi:[23,1,29,35,21,24,32,2,8,13,5,25,6,17],just:[0,12,10,1,35,21,24,23,2,32,18,26,27,5,28,38,6,17,9],lock_return:1,wloop:[],"0x404704":12,ordin:5,"__c11_atomic_fetch_add":21,human:[26,5],ifdef:[6,21,27],"__is_identifi":21,factorymethodpool:32,accuraci:[23,21,5],yet:[23,15,24,32,33,17,5,8],languag:[23,35,33,27,34,1,39,21,24,32,2,18,4,19,5,37,26,6,17,9],previous:[23,12,29,27,5,17],fintegr:35,isinteg:2,easi:[10,33,23,39,2,19,5,20,6,7,17],interfer:21,templateidannot:5,opencl:[21,24,8],had:[23,15,30,24,32,33,17,5,38,21,8],spread:[20,23],cfg:5,els:[23,1,39,27,8,29,5,28,21,17],save:[10,23,32,17,8,9],explanatori:5,sanit:[23,11,12,34,29,15,3,4,38,35],applic:[10,23,29,34,7,24,33,17,4,19,5,37,21,8],backbon:26,xxxxxx:35,basedonstyl:[10,39],preserv:[8,29,17,5],regard:5,compilationdatabas:[28,36],objc_requires_sup:8,forstmt:[32,2],background:[33,22,17,2],elabor:[18,6],shadow:[29,4],unten:17,apart:32,actoncxxglobalscopespecifi:5,"0x5aeacc8":25,specif:[0,1,27,4,5,6,8,9,10,11,13,34,7,17,18,19,20,21,22,23,24,26,2,28,29,30,32,35,36,25,39],arbitrari:[29,32,27,18,2,5,6,17],stret:30,contradict:39,manual:[23,11,34,29,35,21,32,17,5,20,6,8],"__is_base_of":21,cplusplu:24,indentwrappedfunctionnam:39,unnecessari:[8,32,17,9],underli:[23,1,30,24,27,8,29,35,5,21,7,17],repars:[28,32,5],www:25,right:[34,30,24,2,17,39,26,19,5,20,8,9],old:[24,17,27],thankfulli:2,deal:[12,30,2,26,5,17,9],tokenlex:5,vs2012:[],"_decimal32":23,lockstep:8,intern:[23,34,1,35,24,32,29,4,5,25,6,17,9],printer:[2,5],index2:21,flatten:8,"0x5aeab50":25,indirect:[23,30,17,5],successfulli:[23,17,33],"__builtin_classify_typ":5,nsmutabledictionari:27,txt:[13,11,2],trace:[23,12,15,33,38,8],umr:38,fpic:[38,15],"__is_trivially_construct":21,fpie:[38,15],guarded_bi:1,subclass:[8,21,17,27,5],"_nsconcreteglobalblock":30,multipli:5,tracker:23,armv5:23,armv7:23,armv6:23,condit:[39,1,30,21,2,8,18,4,35,5,6,17],foo:[23,11,39,1,30,24,33,8,18,26,35,5,21,7,17,9],armv7a:20,core:[0,23,1,35,24,32,2,8,19,5,20,6,7,17],dfsan_create_label:[29,4],sensibl:[17,5],bold:17,alwaysbreakbeforemultilinestr:39,aggress:35,semacodecomplet:5,mytoolcategori:[2,36],pose:29,block_fooref:18,stmtprinter:5,codeview:33,tablegen:5,promot:[23,8],repositori:[14,7,24,2,36,28],post:[17,2],"super":[17,8],nsnumericsearch:21,parsekind:5,plop:35,unsaf:[1,21,17],obj:[1,10,30],"42l":27,bad_fil:12,"__is_convertible_to":21,slightli:24,surround:39,unfortun:[24,17,2,8],unsav:10,namespaceindentationkind:39,canonic:2,printfunctionsconsum:[],done:[23,2,8,4,5,37,20,6,17,9],"0x00000000a360":15,commit:[37,10],"42u":27,produc:[23,13,24,32,2,18,4,5,25,20,21,17,9],ppc:9,isysroot:23,datarecursiveastvisitor:5,curiou:2,"float":[23,1,32,27,18,5,20,21,8],encod:[25,32,27,5],bound:[10,12,23,35,24,2,18,21,22,9],stmtdumper:[],two:[0,11,29,23,1,14,39,36,24,32,2,8,18,27,5,25,20,21,17,9],down:[23,38,2,26,5,20,17,9],"0x200200000000":29,explain:[23,35,27,26,2,5,8],wrap:[1,39,4,27,5],opportun:[17,9],bool:[23,1,14,39,2,13,27,5,21,8],storag:[29,30,24,17,18,5,21,8],msp430:[23,5],initwithobject:21,accordingli:[39,27],git:[28,10,7,2],parseargumentsasunevalu:5,suffici:[23,17],maxim:5,support:[1,2,3,4,5,6,7,8,9,10,11,12,15,17,18,20,21,22,23,24,27,29,30,32,33,35,36,38,39],no_sanitize_address:[12,8],transform:[23,35,17,26,5,7],block_has_copy_dispos:30,"class":[1,2,4,5,8,9,23,12,13,14,17,18,21,24,26,27,29,35,32,33,39,36,25,30],avail:[10,23,13,15,30,24,32,27,8,25,36,35,5,37,20,21,22,17,9],width:[35,23,21,25,39],reli:[33,1,35,24,27,2,21,17],err_:5,editor:[0,7,10],fraction:[6,32],block_releas:[18,30,17],call:[1,2,4,5,6,8,9,23,12,13,14,16,17,18,20,21,22,24,26,27,28,29,30,32,33,35,36,37,38,39],constantli:35,indentwidth:[10,39],ret:[29,21],analysi:[23,35,34,1,15,32,27,29,4,33,5,37,21,17],head:[10,23],creation:[23,21,26,32,27],"_block_object_assign":30,form:[10,35,39,23,13,29,15,30,24,32,2,8,18,27,5,25,21,7,17],offer:[23,7,17,2],forc:[12,16,24,17,18,5,8,9],"__clang_minor__":21,refcount:30,wdeprec:21,cxx_rvalue_refer:21,unroot:17,heap:[23,12,30,18,5,38,21,17],renam:[10,39,7],lk_cpp:39,"true":[23,35,18,1,14,39,2,8,13,27,5,20,21,17],profdata:23,measuretokenlength:5,reset:[1,17],absent:[24,17],"throw":[7,17],attr:5,columnlimit:39,maximum:[23,39,32],tell:[23,2,5],dens:5,"__is_trivially_assign":21,printhelp:[],long_prefixed_uppercase_identifi:24,fundament:[1,6,7,39,5],sampl:[23,36],autoconf:21,emit:[23,35,30,24,32,27,17,33,5,37,6,8,9],mtd:23,classif:17,featur:[23,35,33,1,39,21,24,27,8,19,5,38,6,7,17,9],alongsid:[23,24],semicolon:5,dllvm_build_test:2,diagnostickind:5,"abstract":[1,24,32,2,18,19,5,22,9],"__is_polymorph":21,"__line__":23,diagnost:[23,35,24,32,17,5,21,7,8],err_attribute_wrong_decl_typ:5,exist:[23,35,1,30,24,32,2,17,18,27,5,28,21,22,8],ship:[30,16],check:[1,27,4,5,6,8,9,23,11,12,13,14,15,17,19,20,21,24,2,28,29,35,31,36,37,38,7],assembl:[23,35,4,20,21,9],byref_i:30,readonli:39,constructorinitializerallononelineoroneperlin:39,when:[1,27,3,5,6,8,9,10,12,13,17,18,19,20,21,23,24,26,28,29,30,32,33,35,36,38,39],refactor:[25,7,19],entrypoint:17,declstmt:[25,31,2],test:[1,2,3,5,6,7,8,9,23,12,15,17,21,24,27,28,35,32,33,36,25,38,39],roll:17,buffer2:8,cortex:20,a15:20,legitim:17,intend:[23,33,1,7,16,24,32,2,8,18,4,27,5,28,21,17,9],objcinst:5,"__block_literal_5":30,"__block_literal_4":30,why:[8,17,2,5],felt:17,"__block_literal_1":30,om_invalid:21,"__block_literal_3":30,"__block_literal_2":30,aligntrailingcom:39,internal_mpi_double_int:8,cfstringref:[30,17],pr16537:[],consid:[23,35,30,21,24,32,2,17,19,5,38,6,8],"__bridg":17,quickfix_titl:28,indentcaselabel:39,"_imaginari":21,aslr:38,receiv:[8,21,17,3],longer:[23,1,32,8,5,17],furthermor:[7,17,2],vi3:21,fortytwolong:27,bottom:24,pseudo:[37,24,17],cxx_user_liter:21,ignor:[23,11,12,30,24,2,17,5,20,21,8],"__builtin_subc":21,stmtprofil:5,time:[1,2,3,5,6,8,9,23,11,12,15,17,18,20,21,22,24,26,27,29,32,33,36,25,38],objc_arc_weak_unavail:17,"__underscor":24,backward:[23,21,24,19,32],"__has_nothrow_constructor":21,applescript:10,cmakelist:[13,2],foreachmacro:39,concept:[1,9,17,5],vi4:21,chain:[23,32,5,6,21,9],jessevdk:37,skip:[6,17,5],rob:17,global:[10,12,23,13,15,30,24,32,27,8,18,5,21,17],focus:[23,7,17],annotmeth:8,webkit:[10,39],signific:[23,35,17,9],supplement:17,skim:2,ingroup:5,i_label:4,subobject:17,no_address_safety_analysi:[12,8],hierarch:32,decid:[23,29,2,4,5,21,9],herebi:30,depend:[23,12,38,33,15,36,24,32,27,17,39,26,19,5,20,21,22,8,9],graph:[32,22,17,5],decim:[23,5],readabl:26,block_is_glob:30,trivial:[24,2,4,5,21,17],hasunaryoperand:2,certainli:[17,5],armv7l:20,decis:[35,0,39,23,5],getnamekind:5,macho:20,oversight:17,sourc:[0,1,2,4,5,6,7,17,10,11,12,13,14,15,16,20,21,22,23,24,26,27,28,29,30,32,36,37,38,35],string:[10,23,14,39,36,24,32,2,8,26,27,5,28,21,17,9],rendit:23,total_head_sampl:23,voidblock:30,intrins:21,feasibl:[1,24,17],forkei:27,"__builtin_inf":5,broadli:23,androideabi:20,join:29,exact:[23,12,1,5,22,17],getcxxdestructornam:5,clangcheckimpl:28,strnlen:8,swizzl:21,local_funct:23,level:[23,11,1,14,30,21,24,32,8,39,26,19,5,37,6,7,17,9],did:[30,17,5],die:5,gui:[1,7,2,5],dig:5,iter:[23,32,2,19,5,21,17],exprconst:5,item:[29,10,4,23,5],redeclar:[32,8,5],unsupport:[23,35],ob0:23,cmptr:21,quick:[30,2,36],div:17,round:8,dir:[23,24],"_block_byref_assign_copi":30,prevent:[23,1,35,31,5,21,17],must_be_nul:8,slower:20,nsunrel:21,plu:[23,15,5],sign:[23,11,17,27,5],cost:[23,32,17,6,3,21],wparenthes:[],method2:8,relocat:23,port:12,inconclus:39,"0x5aead10":25,appear:[23,30,24,27,17,18,33,5,28,21,8],d__stdc_constant_macro:[14,36],inheritableparamattr:5,scaffold:2,anywai:[17,32],current:[0,1,2,3,4,5,6,7,8,9,10,11,12,15,17,21,22,23,24,27,28,29,30,32,35,38,39],sinc:[23,35,30,21,24,32,2,17,27,5,37,20,6,22,8,9],firstid:2,"__vector_size__":21,filenam:[28,23,35,9,5],va_list:8,slot:37,compound_statement_bodi:18,dwarf:23,breakbeforeternaryoper:39,old_valu:21,gener:[1,2,4,5,6,8,9,10,11,12,13,16,17,20,21,22,23,24,25,26,27,28,29,30,31,32,33,37,35],stmt:[25,2,5],water:17,slow:[20,38,23],modif:[21,24],"__c11_atomic_signal_f":21,address:[23,11,33,12,8,15,30,24,2,3,29,27,5,35,38,21,17],locat:[10,12,23,13,39,16,24,32,2,18,36,26,27,5,28,20,17,9],along:[23,1,35,24,32,2,33,5,28,21,7,8,9],do_someth:[21,39],multiprecis:21,wait:1,box:[19,27,36],coloncolon:5,hdf5:8,shift:[23,32,17,5],bbedit:10,objc_copyweak:17,behav:[1,23,24,17,5],cxx_inheriting_constructor:21,extrem:[23,24,5,20,21,17],weird:[16,5],d_debug:14,reclaim:17,ourselv:[17,2],fcatch:35,semant:[23,1,35,24,32,33,8,28,19,5,37,21,17],elect:17,some_directori:23,extra:[23,29,14,39,24,2,5,21,7,17,9],nmap:28,tweak:[23,33],modul:[23,12,34,29,15,24,32,38,9],astlist:28,prefer:[10,21,8,23,5],dataflow:23,unbridg:17,msan_symbolizer_path:38,pointertofunctionthatreturnsintwithchararg:18,marker:[30,17,5],instal:[23,2,36,28,20,21],holtgrew:37,tiny_rac:15,market:[21,17],identifierinfolookup:32,regex:10,perf:23,msy:23,memori:[23,12,8,29,15,21,3,18,36,4,19,30,5,37,38,6,17,9],xyzw:21,objc_retainautoreleas:17,univers:[6,35,9],visit:[13,5],getdiagnost:[],subvers:[21,7,35,2],live:[23,29,24,2,5,21,17,9],"0x7f7ddab8c210":12,value2:39,value1:39,criteria:2,gettranslationunitdecl:[13,25],checkout:[0,35,7,2],cursorvisitor:5,reorder:[21,24,17],cxx_except:21,capit:5,"0x173afe0":2,fooref:18,python:[37,10,22,19],emiss:[23,17,8],somemessag:30,claus:[18,24,8],typeloc:13,refrain:17,enhanc:15,"__is_union":21,visual:[10,23,39,24,5,21,8],accept:[23,29,7,33,17,26,5,21,8,9],examin:[25,26,32,2],parsegnuattributearg:5,effort:17,fly:5,fuction:8,ibm:[20,35],prepar:17,pretend:23,judg:17,fmsc:23,cat:[23,11,12,15,31,2,25,38,6],descriptor:30,cwindow:28,can:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39],inadequ:17,binpackparamet:39,purpos:[23,12,15,30,32,17,5,37,38,8,9],usetabstyl:39,"__has_nothrow_copi":21,boilerpl:[24,5],"0x5aeac68":25,claim:[30,17],encapsul:[1,17],stream:[0,6,7,5],fsyntax:[25,14,9],"__block_dispose_5":30,"__block_dispose_4":30,backslash:23,parsabl:23,critic:[21,17],abort:[8,23,21,12,5],past:[35,24,17,5],try_acquire_cap:8,foocfg:5,getlocforendoftoken:5,occur:[23,1,30,24,32,27,8,18,5,17,9],contribut:[25,15,24],alwai:[23,1,30,24,27,8,39,26,35,5,37,20,21,25,17,9],differenti:[21,17],multipl:[10,23,1,21,24,32,33,8,29,26,5,25,20,6,22,17,9],boundari:[11,24,17],optnon:[21,8],attract:6,write:[0,1,27,4,5,6,17,9,10,13,14,15,19,21,23,24,26,2,28,30,32,33,34,36,37],cxx_rtti:21,vital:23,foreach:39,pure:[4,17,5],discov:[24,2],getspellingcolumnnumb:13,"23l":27,map:[10,12,23,15,24,32,27,19,5,38,6,9],product:[9,27,2,5],bs_allman:39,max:27,clone:[28,7,2],"__has_featur":[12,15,27,38,21,17],shockingli:2,usabl:[23,21,39],intrus:37,membership:17,"4th":5,uint:10,aribtrari:26,mai:[1,2,4,5,6,7,8,9,23,11,12,15,17,18,20,21,24,27,29,39,32,35,37,38,30],drastic:[24,17,32],underscor:[23,21,17],data:[23,33,1,29,15,30,32,2,8,18,4,27,5,37,21,17,9],grow:[24,32,9],readerlock:1,newlin:[23,39,5],astfrontendact:[13,34],sfs_none:39,noun:[26,2],practic:[1,7,5,21,17,9],traversedecl:13,conscious:17,stdio:[38,6,16,24],truct:30,explicit:[23,13,7,24,27,18,36,21,17],predic:[23,26,5],mangl:[23,11,24,33,21,8],ephemer:17,"switch":[23,30,8,39,35,5,6,21],preced:[23,24,17,21,8,9],combin:[23,13,30,36,3,26,5,20,7,8],total_sampl:23,"__block_descriptor_2":30,languagestandard:39,"__block_descriptor_1":30,thread_loc:21,"__block_descriptor_4":30,"__block_descriptor_5":30,getlexicaldeclcontext:5,dfsan_interfac:[29,4],"_block_byref_blockstoragefoo":30,gradual:24,unlock_funct:1,llvm_used_lib:[13,2],novic:17,"__va_args__":[1,23],size_t:[29,24,4,8],block_literal_express:18,still:[23,38,1,15,30,24,32,2,8,33,5,20,6,22,17,9],pointer:[23,35,12,1,29,30,27,8,18,39,33,5,38,21,7,17,9],dynam:[23,12,29,14,27,17,18,4,19,38,26,21,8],componentsseparatedbystr:27,fsanit:[23,11,12,35,38,15],conjunct:[23,9],interspers:17,group:[23,17],thumb:[20,35,23],concis:[23,21,27,2],polici:[],"__attribut":17,cxx_implicit_mov:21,precondit:[26,17],"__has_includ":21,platform:[23,12,15,24,32,33,38,20,21,7,8,9],window:[28,23,33],transpar:[6,32,5],curli:[17,5],mail:[37,23,35,5],main:[2,4,5,6,17,9,23,11,12,13,14,15,16,20,21,22,27,29,35,36,38,7],ascrib:17,objc_storestrong:17,non:[23,12,15,24,32,27,17,18,4,33,5,37,38,21,7,8],declarationnamet:5,halt:8,matcher:[25,26,2],om_terrifi:21,wimplicit:8,dogfood:7,clangast:2,initi:[23,33,12,1,29,30,32,2,17,18,39,27,5,38,21,8],nation:35,underneath:23,buildcfg:5,istransparentcontext:5,mhwdiv:23,half:[23,5],complement:7,"0x7f8bdda3814d":[],superset:[17,5],conflict_a:24,widespread:23,nor:[23,1,24,27,8,20,21,17],introduct:[1,2,3,4,5,8,9,23,11,12,13,14,15,17,19,20,21,34,24,25,26,27,28,35,32,36,37,38,7],"0x44d97c8":28,term:[21,17,28,6,8,9],name:[1,2,4,5,8,9,23,11,12,13,14,15,17,20,21,22,24,26,27,28,29,30,32,33,35,25,39],realist:24,opera:17,perspect:[29,24,32,5],drop:[18,17,9],revert:[10,35],int_min:[23,27],ffcccc:33,separ:[23,12,8,1,7,36,24,32,2,3,29,27,5,38,21,17,9],getfullloc:13,"__sync_bool_compare_and_swap":21,callsit:8,sfs_inlin:39,compoundstat:2,misbehav:17,compil:[1,27,4,5,6,7,8,9,23,11,12,13,14,15,17,18,19,20,21,22,34,24,25,2,28,29,30,31,32,33,36,37,38,35],domain:26,replai:22,weak_import:8,replac:[0,10,29,7,24,23,27,17,5,38,8],arg2:5,compon:[21,9,7,17,5],printfunctionnamesact:[],continu:[23,35,33,30,2,17,18,39,27,5,21,8],contributor:[37,35],unlock:1,prolog:37,libgcc:20,significantli:[32,17,5],begun:[23,17],operand:[23,29,27,2,5,21,17],happen:[23,12,1,35,24,8,5,20,7,17],dispos:[18,30],inheritableattr:5,objc_retainblock:17,shown:[23,17,9],"__has_attribut":[35,21,17,8],"3rd":[23,5],space:[23,12,29,15,32,5,38,21,22,39],profit:21,returnfunctionptr:18,profil:[23,6,2,5],astwriterstmt:5,"_clang":[10,39],rational:17,breakconstructorinitializersbeforecomma:39,compilation_command:28,correct:[23,11,7,27,4,5,20,21,17],ast_match:2,"0x700000008000":29,"goto":18,"__single_inherit":8,migrat:[23,1,7,8,18,19,17],ferror:23,exercis:[23,21],set_typest:8,argv:[12,13,27,2,36,38],block_byref:30,"__sync_lock_test_and_set":21,createastprint:28,theori:17,org:[0,23,7,27,2,37],pidoubl:27,argc:[12,13,27,2,36,38],"0x800000000000":29,care:[23,13,19,5,20,21,17,9],shared_ptr:7,imagin:[39,24],wai:[1,27,5,8,10,11,14,17,19,20,21,22,23,24,26,2,28,29,39,32,36,25],befor:[23,1,39,24,32,2,17,29,33,5,21,8],synchron:[18,15,17,5],vec2:21,unavoid:[17,12],recov:[33,18,17,23,5],turn:[23,11,1,30,24,2,35,5,25,17,9],punt:2,place:[10,23,29,30,24,32,27,17,39,35,5,20,21,8],memory_sanit:[38,21],createinsert:5,bracebreakingstyl:39,principl:[30,17,9],imposs:[17,2,8],frequent:[23,34,1,16,27,33,17],lambda:[23,21,17,33],oper:[1,2,4,5,6,7,8,9,10,12,15,17,18,21,23,24,27,28,29,39,32,37,38,30],mpi_int:8,unannot:8,directli:[21,23,1,14,39,16,24,32,27,8,29,25,5,37,6,7,17,9],carri:[17,8],onc:[23,36,24,32,2,5,20,9],arrai:[23,12,39,2,7,27,5,21,22,17],declarationnam:5,"0x7f":27,"0x7f789249b76c":38,walkthrough:[14,36],address_spac:21,stringref:13,foo_priv:24,"long":[23,12,29,30,21,24,27,17,18,35,38,6,8,9],oppos:[],open:[28,23,39,17,27],lexicograph:5,size:[23,12,29,14,15,21,32,2,8,18,27,30,5,6,7,17],haslh:2,given:[10,12,23,1,29,35,16,24,32,33,8,18,36,5,20,21,17,9],const_cast:7,silent:[28,23,17],workaround:[1,24],teardown:17,caught:[29,35],malform:27,declspec:5,profile_writ:23,myplugin:14,checker:[23,35,19,2,5],necessarili:[21,22,19,5],draft:[23,21],deploy:[24,8],objconeargselector:5,somelib:24,conveni:[13,24,2,8,18,28,21,17],cxx_decltyp:21,friend:23,nsapp:27,getcxxnametyp:5,autolink:24,i_hold:30,clangbas:[24,2],grant:30,cope:[28,5],copi:[10,23,1,29,30,21,24,33,8,18,4,5,28,20,6,17,9],specifi:[1,2,5,6,7,8,10,11,12,13,14,15,17,18,20,21,22,23,24,26,28,39,35,36,30],blacklist:[23,11,15,12,38],"0x7f8bdda4034b":[],pifloat:27,"__stdc_version__":23,enclos:[23,1,30,24,18,5,17],mostli:[23,29,33,17,5,8,9],date:[35,21,32,27],domin:[29,6],holder:30,than:[23,12,27,38,1,15,24,32,2,8,18,39,26,19,5,20,17,9],serv:[1,7,32,2,5,37,6,17,9],wide:[23,35,24,8,33],dispose_help:30,nsrang:21,instancemethodpool:32,drothli:37,carries_depend:8,redefinit:24,subexpress:[32,5],arug:[],getnameasstr:[],posix:[23,35],balanc:[1,21,17],"__need_wchar_t":24,posit:[10,12,23,1,15,32,27,8,35,36,38,21,17],objectatindexedsubscript:27,browser:37,pre:[23,6,24,21,2],sai:[28,23,24,17,5],variadicdyncastallofmatch:26,nicer:12,testframework:21,pro:19,anywher:[29,18,9,17,5],overnight:24,dash:[21,2],burdensom:17,"__has_extens":[21,8],leaksanit:[34,12,3],duplicatesallowedwhilemerg:5,vector4float:21,block_fooptr:18,bitwis:[29,21,5],engin:[1,25],squar:[21,5],alias:[1,23,17],destroi:[1,18,30,17],moreov:[1,24,17,27],matchresult:2,retroact:17,lockandinit:1,note:[1,2,5,8,9,10,12,14,7,17,18,21,34,24,23,26,27,35,39,25,38,30],"__builtin_arm_strex":21,ideal:[1,7,32,5,6,17],denomin:[20,35],handicap:6,take:[23,35,27,13,14,30,16,24,2,8,18,36,26,19,5,28,21,17],advis:1,interior:17,green:[23,21,9,27,5],shared_lock_funct:1,noth:[32,8,5],byref_keep:30,closer:[],begin:[23,30,32,18,5,7,17],sure:[12,5,2,20,38,9],importantli:[21,17,8],badclassnam:12,normal:[10,1,14,30,24,32,27,8,18,33,5,20,21,17],buffer:[10,39,24,32,5,8],c99:[18,24,8,23,5],knowingli:18,compress:32,clearer:17,"0x200000000000":29,toplevel:[25,36],beta:[1,15],secondid:2,abus:9,ampamp:5,sublicens:30,pair:[10,29,30,2,18,27,5,21,17],fileurl:27,marked_vari:30,"_block_byref_keep_help":30,synthesi:[21,17],"_block_byref_obj":30,synonym:[35,12,5],axw:37,"__builtin_uadd_overflow":21,adopt:[24,27,9],cgcall:23,drive:7,quantiti:23,objc_assign_weak:30,runtim:[23,35,33,12,29,14,30,27,3,18,4,19,38,21,17],eschult:37,effect:[23,35,24,17,18,5,20,21,8],preambl:[8,32],typedefdecl:31,gracefulli:5,recipi:17,"__block_literal_10":30,qobject:37,newer:[35,32],uncondit:5,show:[10,23,13,2,5,37,21,9],arrayoftenblocksreturningvoidwithintargu:18,delta:23,cheap:5,merit:17,subprocess:9,maybebindtotemporari:5,"__underlying_typ":21,actoncxxnestednamespecifi:5,concurr:[17,8],badinitclasssubstr:12,permiss:30,hack:5,blockb:30,cxx_unrestricted_union:21,tend:[24,17],"__isb":21,asan_symbol:12,xml:[0,10],userdata:29,onli:[1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,30,32,35,36,25,38,39],explicitli:[1,24,32,2,29,5,17],fenc:8,realign:8,namespacedecl:5,written:[10,23,35,24,32,27,17,25,26,33,5,37,21,8],elig:2,fenv:24,dict:39,analyz:[23,39,17,35,5,21,8],sloc:[25,31],analys:[29,5],offici:23,munl:1,info:[23,24,12,33,5],intptr_t:17,nearli:[17,32],variou:[23,12,1,7,24,32,18,5,21,17],get:[23,12,38,1,15,16,24,32,2,3,39,36,26,35,30,5,20,7,8,9],wmodul:24,clang:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,39,31,32,33,34,36,37,38,35],secondari:17,crude:24,cannot:[10,23,1,35,36,24,32,33,8,29,4,5,21,17,9],nslocal:21,multipleincludeopt:5,ssa:29,fcxx:24,requir:[23,38,1,29,30,21,24,32,2,8,18,33,5,28,20,6,22,17,9],wdocument:23,pointer_with_type_tag:8,"0x7ff3a302aa10":31,"0x000000000000":29,vsi:21,fixithint:5,allman:39,nullptr:[21,7,35],objc_autoreleas:17,yield:[6,24,17,5],layout_compat:8,mediat:17,privileg:21,gettypenam:5,where:[7,23,1,29,30,36,24,32,33,8,18,4,35,5,37,20,21,22,26,17,9],c94:23,"__asm__":23,summari:30,wiki:[23,38,3],kernel:[23,29,39,38,6,21],pointeralignmentstyl:39,textdiagnosticbuff:5,tested_st:8,foobodi:5,spars:29,blockreturningvoidwithvoidargu:18,spacebeforeassignmentoper:39,"_block_byref_i":30,exclipi:37,reserv:[30,12,29,15,24,18,38,21,17],visitcxxrecorddecl:13,arglist:9,concern:[32,5],parsingfilenam:5,cxx_return_type_deduct:21,detect:[23,12,8,1,15,24,7,3,29,39,4,35,5,28,38,21,22,17],kei:[10,1,27,18,21,22,8,9],review:[7,17],enumer:[23,39,32,27,5,21,17],dfsan_has_label:[29,4],label:[29,39,4,8,5],enough:[23,1,2,5,20,17,9],semadeclattr:5,volatil:[38,21,32,17,5],between:[23,1,30,24,32,2,17,5,20,21,8],"import":[23,39,30,31,24,32,2,17,18,35,5,25,20,21,7,8,9],atindexedsubscript:27,across:[23,29,24,27,5,20,17],acquire_cap:8,"__builtin_ssub_overflow":21,fcntl:8,assumpt:[29,23,17,5],"__strong":17,absenc:24,parent:[10,39,24,8,18],block_priv:30,typedef:[23,24,27,18,5,21,17],"0x7ff3a302a470":31,cycl:[23,21,17],"__builtin_subcl":21,fiq:8,nsnumber:27,cpu:[20,8,23],objcclass0:5,symbolnam:37,"__builtin_subcb":21,"_block_liter":30,ignoredattr:5,unrel:32,vimrc:[28,10],region:[29,10,21,4,12],sparc:23,contract:[30,22,39],fconstexpr:23,tutori:[34,13,14,2,36,25],tsan_interceptor:15,improv:[23,35,8,30,24,32,27,17,19,37,6,21],check2:23,scope:[23,1,30,24,32,8,18,5,21,7,17],qualtyp:[32,5],among:[24,17,5],acceler:35,ast_matcher_p:26,undocu:[23,5],m_pi:27,color:[23,21,33,27,5],overview:[18,10,7,34,9],period:[1,24,5],pop:[18,32,17,23],tokenkind:5,exploit:17,colon:[39,11,17],pod:17,damag:30,caret:[23,17,5],avaudioqualitymedium:27,ultim:[17,5],coupl:[7,5],harmless:21,come:[23,24,4,5,20,8],rebuild:[38,24,19],pch:[23,6,32,5],mark:[23,1,15,30,8,18,38,17],destructor:[1,30,8,18,5,17],"__c11_atomic_compare_exchange_strong":21,iinclud:[14,36],return_typest:8,rebuilt:24,noinlin:8,fbound:35,cxx_contextual_convers:21,lsomelib:24,thousand:[29,23,26],resolut:[17,8],upgrad:[35,5],fshow:23,proven:21,intvar:2,"1mb":15,former:[24,4,5],those:[10,35,23,1,14,39,21,24,32,2,8,18,4,33,5,26,6,7,17,9],"case":[1,2,4,5,6,7,8,9,23,11,12,13,15,17,18,20,21,34,24,26,27,28,29,30,32,33,36,38,39],address_sanit:[21,12],interoper:[21,24,17],diagid:[],getspellinglinenumb:13,"__builtin_umull_overflow":21,trick:[24,17],cast:[23,39,2,18,26,5,21,7,17],invok:[10,23,29,30,16,17,18,5,28,8],tblgen:[23,5],msandr:38,cf_unknown_transf:17,pertain:35,"__builtin_saddll_overflow":21,advantag:[29,27,5,28,6,21],mfloat:20,henc:[24,17],convinc:17,worri:17,destin:[23,30,4,17],objc_bool:27,eras:1,pthread:15,ascii:[23,5],fcomment:23,kw_for:5,develop:[23,35,1,39,16,24,8,25,4,19,37,20,6,7,17,21],cxx_nullptr:21,author:[38,30,17],cc1:[14,16,32,5,6,9],same:[23,35,39,1,29,30,21,24,32,2,8,18,36,27,5,28,20,6,22,17,9],binari:[23,12,38,39,16,24,2,21,36,27,5,28,20,6,17,9],isol:[24,32],html:[0,35,5],cpp11:39,dfsan_label:[29,4],arc_cf_code_audit:17,om_norm:21,document:[0,1,27,4,5,6,8,9,23,11,14,7,17,19,20,21,22,34,24,25,26,2,28,29,30,32,36,37,35],medit:5,recursiveastvisitor:[13,14,34,25,5],unknownmemb:33,"__objc_no":27,exhaust:[24,17],ifram:25,"__builtin_constant_p":[21,5],spacesbeforetrailingcom:39,closest:39,"__builtin_va_list":31,gnueabi:20,assist:[23,30,24,33,17,9],driver:[23,34,16,33,5,9],someon:[24,17],driven:[23,22,32,9],capabl:[23,1,2,17,27,5,8],bad_sourc:11,objc_retainautoreleasedreturnvalu:17,mani:[23,35,1,30,24,32,2,8,13,33,5,25,20,21,22,7,17,9],extern:[30,34,1,15,24,32,8,35,5,37,38,17],suffix:[39,9,27,5],pervas:17,inconsist:17,createremov:5,macro:[23,1,39,24,32,2,17,26,27,5,21,8],markup:5,identifiert:32,justifi:17,without:[10,39,23,1,29,15,30,24,32,2,8,18,35,5,37,38,21,22,17,9],leadingspac:5,objcmultiargselector:5,model:[23,24,32,8,26,25,21,17],check1:23,dereferenc:[18,35,5],ccc:[20,35,9],"__x":21,objectforkeyedsubscript:27,leewai:17,execut:[23,12,18,1,29,15,30,24,2,8,13,26,38,21,22,17,9],freshli:13,excel:24,annot_template_id:5,neon:[20,21,24],smallestint:27,rest:[23,35,32,17,5,7,30],pas_left:39,gdb:[23,38,5],multiplex:5,aspect:[24,5],polish:32,fairli:[6,5,24,2,3],objczeroargselector:5,shortfunctionstyl:39,sourcemanag:[13,0,32,5],widecharti:[],no_sanitize_memori:[38,8],mmap:6,penaltyexcesscharact:39,clangcheck:[34,14,7,31,36,28],except:[23,35,13,39,27,8,18,4,33,5,21,17,9],littl:[32,9,17,2,5],identif:5,instrument:[23,12,29,15,4,35,37,38,8],"_z8myfoobarv":11,yaml:39,blob:23,versa:[1,18,29,17,32],alexdenisov:37,role:5,"_aligna":21,myabort:21,block_has_signatur:30,libm:20,choic:[23,30],read:[0,35,33,12,23,1,30,36,32,2,38,27,5,20,6,22,17],outermost:[26,17],asan_symbolizer_path:12,comp_ctor:30,"0x7ff3a3029ed0":31,mov:8,objc_array_liter:[21,27],libz:20,destaddr:30,va_start:8,hasincr:2,copy_help:30,walk:[11,5],saniti:[1,5],tolow:[29,4],gs_rel:21,intel:[6,35],interv:[21,24],whitespac:[39,7,5],treacher:17,"_complex":[23,5],integ:[23,29,32,27,2,5,21,8],server:37,benefit:[1,24,17,5],either:[23,39,1,30,24,32,8,18,26,25,5,28,20,21,22,17,9],cascad:24,fromtyp:21,output:[10,12,23,13,15,36,29,5,28,38,21,9],inter:1,manag:[13,29,32,8,18,4,5,20,21,17],fulfil:2,node:[23,13,32,2,25,26,5,28],deduct:21,avaudioqualitymax:27,matur:1,dfsan_label_info:29,bewar:23,adequ:17,uninstrument:4,ls_auto:39,nonzero:29,gross:5,eabi:20,libstdc:[38,15,21],"_block_copy_assign":30,"_block_byref_dispose_help":30,legal:[18,17,27],"__has_virtual_destructor":21,k_label:4,exit:[10,12,1,8,29,5,38,17,9],inject:5,"15x":15,unbeliev:23,notabl:[17,9],"__clang_major__":21,freed:[17,12],block_field_is_object:30,ns_consumes_self:[21,17],getcxxoperatornam:5,"__builtin_convertvector":21,power:[13,7,2,19,5,17],emul:[23,21],cxx_auto_typ:21,garbag:[18,30,17],inspect:[32,5],macronam:24,llvm_clang_sourcemanager_h:32,"__autoreleas":17,functioncal:30,standpoint:32,immut:[27,5],went:[23,38],earlier:[23,32],tread:17,comparison:[29,35,27,2,5,6,17],stone:[],"_fract":23,greatli:[23,6,17,5],assert_exclusive_lock:1,"_thread_loc":21,cxx_static_assert:21,ftemplat:23,ptr:21,stringiz:5,cxx_runtime_arrai:21,"__is_nothrow_assign":21,cuda:[20,5],act:[1,15,32,17,18,38,39],attribute_ext_vector_typ:21,industri:1,processor:[23,6,21],fooptr:18,routin:[0,1,30,32,8,17,9],effici:[23,29,24,17,5,21,8,9],rerror:35,disableexpand:5,"0x40":27,terminolog:23,surviv:17,inplac:10,userdefinedconvers:28,strip:[10,17],wincomplet:24,your:[27,5,10,12,14,15,16,19,20,21,23,24,25,26,2,28,39,32,33,34,36,37,38,7],dcmake_cxx_compil:28,loc:5,log:[29,24,17,12],mingw32:[23,33],area:[23,32],aren:[20,17,2,5],miphoneo:8,"__dfsan_union":29,spaceinemptyparenthes:39,start:[1,2,5,8,10,11,12,13,17,18,21,23,24,25,26,27,29,30,32,37,38,39],compliant:23,interfac:[0,34,23,1,29,7,21,24,32,8,13,26,19,5,28,6,22,17,9],cfreleas:17,lot:[23,1,15,5,20,17],strictli:[1,23,17,8],additionalmemb:5,hassingledecl:2,"__builtin_ssubl_overflow":21,verbatim:5,myattribut:5,bundl:[25,32],heretofor:17,declgroupref:[],errorcode_t:21,mdd:23,getentri:5,mice:5,slowdown:[38,15,12,3],categor:[23,17,27,5],pas_middl:39,faster:[28,23,6,12,32],"__multiple_inherit":8,notat:[18,21,32],tripl:[20,32],labelreturn:29,bullet:17,nameddecl:5,objc_moveweak:17,"default":[1,2,4,5,8,10,14,15,17,18,20,21,23,24,26,35,30,33,36,25,38,39],"0x404544":12,"__c11_atomic_fetch_or":21,numberwithunsignedchar:27,ns_requires_sup:8,printfunctionnam:14,dynamorio:38,lowercas:17,block_field_is_block:30,commonli:[39,21,32,27],embed:[23,30,9,24,5],deadlock:1,connect:[37,30,9,5],artifact:19,creat:[27,5,17,9,10,11,13,15,18,19,20,21,23,26,2,28,29,30,32,33,36,38,39],filt:12,multibyt:23,lk_proto:39,bararg:17,commonoptionspars:[2,36],retaincount:17,functiondecl:[25,31,32,5],"0x7f8bdce3a76c":[],raw_ostream:[],deem:17,decreas:17,release_shared_cap:8,encompass:[24,17],proport:32,operation:8,fill:[1,39,17,2,5],incorrect:[35,21,8,33,5],again:[23,30,17,2],collid:[24,27],derefer:18,tradeoff:6,extract:[13,2,29,26,20,21],compel:17,src_vec:21,orient:7,field:[23,30,32,5,22,17],v7a:20,valid:[23,39,30,24,32,27,17,18,35,5,37,21,22,8],poly8_t:21,you:[0,27,5,6,8,10,12,13,14,7,16,19,20,21,23,24,25,26,2,28,35,32,33,36,37,38],objc_autoreleasereturnvalu:17,intermedi:[38,9],architectur:[23,15,21,24,32,35,5,20,6,22,8,9],poor:[23,24,17],libformat:[0,39,34,10],registri:14,"__c11_atomic_is_lock_fre":21,sequenc:[23,24,32,17,5,8,9],symbol:[23,12,15,24,38,30,9],push:[23,32,5],briefli:[6,17],track:[23,38,1,7,24,29,4,5,20,17],workround:1,pool:[29,23,21,17,32],reduc:[23,1,24,32,17,29,5,6,21],deliber:[1,37],unbalanc:17,lookupt:5,directori:[10,11,23,14,39,16,24,2,36,28,20,21,22,35],woboq_codebrows:37,mask:5,arm7tdmi:20,calle:[26,17,8],mimic:[23,8],mass:[17,27],cpp03:39,potenti:[10,23,1,29,30,32,2,18,27,5,35,7,17],cpp:[23,12,1,14,39,36,2,13,5,28,9],escap:[23,39,1,30,18,5,22,17],"__unsafe_unretain":17,dst:30,represent:[23,29,24,32,5,8],all:[0,1,27,5,6,7,8,9,10,12,13,14,15,17,18,19,20,21,22,23,24,26,2,28,29,30,32,33,35,36,25,38,39],forget:[20,17],pth:[34,6,5],illustr:[1,23,32,27,5],spacesincontainerliter:39,typedeftyp:5,fragment:5,sunk:8,scalar:[30,21,17,27,5],code:[0,1,2,3,4,5,7,8,9,10,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,35,36,37,38,39],syntaxonlyact:[2,36],winx86_64abiinfo:23,abil:[8,23,32,17,5],follow:[1,2,4,5,6,7,8,9,10,11,12,13,15,17,18,21,23,24,27,29,30,32,33,35,38,39],disk:[23,32],"__msan_chain_origin":38,lookup_result:5,cxx_trailing_return:21,fullloc:13,flexibl:[23,27,26,5,20,9],dsl:[37,26,2],articl:17,running_with_the_dynamic_tool:38,tail:[38,12],spacebeforeparensopt:39,stringwithutf8str:27,"__scanf__":8,no_sanitize_thread:[15,8],wundef:5,introduc:[10,11,12,8,23,1,15,30,24,32,2,3,18,39,27,5,38,17],sound:23,getblockid:5,liter:[23,39,30,21,24,2,17,18,27,5,6,8],straightforward:[6,9,2,5],getattr:5,fals:[23,35,12,1,15,2,13,39,27,5,38,6,8],getsema:5,faq:[23,16,34],offlin:[38,12],mpi:8,util:[39,32,17,5,6,8],src_label:4,candid:[8,23,24,17,5],worst:17,fall:[23,24,32,8,21,17],veri:[23,1,7,24,32,2,18,5,38,21,17,9],strang:5,condition:[1,21,8],"__cplusplu":27,objc_method_famili:[21,17,8],particular:[30,11,12,1,15,21,24,32,8,29,4,5,38,6,17,9],list:[0,1,2,4,5,8,9,10,11,12,34,15,17,18,20,21,23,24,27,28,29,39,32,36,37,38,35],pedant:[23,21,5],addressof:21,sane:[23,24,17],stderr:[23,15,12,38],plain:[15,8,5],nsobject:[30,21,17],numberwithlong:27,dimens:33,trigraph:[23,35,5],cldoc:37,"__builtin_usub_overflow":21,sync:2,lock_funct:1,zero:[23,12,29,30,2,18,39,35,5,38,21,17],pressur:[6,21],design:[0,12,23,29,34,7,32,27,8,4,5,37,6,17,9],thread1:15,pass:[23,11,29,1,14,30,16,24,2,8,13,4,27,5,35,21,25,17,9],further:[23,29,30,36,32,2,17,4,5,26,6,21],hamper:29,what:[23,1,35,36,24,2,17,26,33,5,20,21,8,9],avaudiorecord:27,sub:[24,32,27,2,5,20,17],clock:21,abi:[23,29,30,32,33,8,4,35,20,21,17],section:[23,1,39,16,24,32,2,8,26,27,5,35,17,9],advanc:[21,2,36],abl:[23,38,1,32,2,17,33,5,28,20,21,8,9],brief:[0,9],overload:[1,2,17,18,33,5,21,8],buildxxx:5,delet:[12,21,30,17,5],abbrevi:32,version:[10,23,1,14,30,36,24,32,2,8,18,35,5,38,21,7,17,9],mutablecopi:[17,8],consecut:[39,32,2],objc_default_synthesize_properti:21,"__uint128_t":31,"public":[1,39,24,32,2,13,5,7,8],unlabel:[29,4],pointerbindstotyp:[],mystic:5,writeback:17,hasn:[],full:[23,1,14,30,21,24,32,8,13,19,5,25,38,6,22,17],themselv:[13,7,9,24,5],ret_stat:[],vtabl:23,multilib:20,endfunct:28,misspel:9,sophist:17,arminterruptattr:5,behaviour:[20,23],modular:24,shouldn:[29,24,5],middl:[39,5],omiss:23,excess:[23,24],cxx_attribut:21,variad:[27,18,26,5,21,8],method:[23,35,33,18,1,14,30,32,2,8,13,27,5,21,17,9],parenthesi:25,modifi:[23,39,8,1,30,32,17,29,35,5,6,21],invoc:[23,18,28,6,17,9],valu:[1,2,4,5,8,9,10,13,7,17,18,21,23,24,26,27,29,35,32,33,39,38,30],"__counter__":21,search:[23,31,34,14,39,16,24,32,36,25,6,21,9],block_descriptor_1:30,binaryoper:[25,32,2],ahead:[20,5],vec_add:21,armv8:23,llab:35,through:[0,11,23,1,29,30,36,32,2,8,13,4,19,5,35,38,21,17,9],observ:17,prior:[35,30,32,17,8],amount:[23,1,24,32,6,17,9],transformyyi:5,action:[13,14,30,36,19,5,21,9],narrow:[26,2],magnitud:20,istypedepend:5,ut_alwai:39,verifyintegerconstantexpress:5,via:[10,18,1,14,15,21,24,23,8,13,35,30,5,25,20,6,17,9],msp430interruptattr:5,primit:[21,17],transit:[1,30,24,32,5,8],anytim:23,vim:[28,10,2],objc_autoreleasepoolpop:17,famili:[23,35,24,17,5,21,8],dfsan:29,decrement:[1,17],establish:[18,32],dangl:18,select:[10,23,14,24,27,5,21,8,9],engag:17,"__declspec":[8,33,5],erasur:23,cxx_thread_loc:21,mylib:[23,24,5],acquire_shared_cap:8,distinct:[24,33,18,5,17,9],liber:24,cfprint:30,regist:[23,29,14,2,8,18,20,21,17],nsuinteg:27,nscomparisonresult:21,mpi_datatype_int:8,taken:[8,23,32,17,5],mpi_send:8,codifi:17,frontendact:[13,14,2,36],minor:[21,32,5],more:[1,2,3,4,5,7,8,9,10,12,13,15,16,17,20,21,23,24,26,27,29,30,31,32,35,36,38,39],reachabl:25,flat:5,desir:[10,23,35,2,5,20,9],"__virtual_inherit":8,unreduc:25,canon:[19,32,8,2,5],"0x7ff3a302a410":31,mozilla:[37,10,39],ital:17,create_llvm_prof:23,vi2:21,derivepointeralign:39,flag:[23,11,12,38,1,15,30,24,32,33,8,39,35,5,25,20,7,17,9],vi1:21,fortytwounsign:27,objc_storeweak:17,vi5:21,known:[23,11,38,1,15,27,8,29,4,33,5,35,20,21,17,9],objectivec:39,toyclangplugin:37,cach:[23,6,24,21],allowshortifstatementsonasinglelin:39,outdent:39,dictat:1,none:[23,39,32,33,17,5,20,8],enable_if:8,outlin:29,dev:[23,17,5],histori:[30,32,17,5],remain:[23,1,2,17,5,21,8],outliv:[18,17],nontriv:17,caveat:[8,17,27,9],learn:[13,24,2,26,19,37],c_aligna:21,def:[38,12,5],pick:[20,27,8,23,5],explod:21,prompt:23,bogu:[1,5],scan:[35,17],challeng:29,registr:17,share:[12,1,29,7,36,24,32,8,18,19,5,38,6,17,9],addrspacecast:[],templat:[23,35,1,39,24,2,17,26,33,5,21,8],nscaseinsensitivesearch:21,minimum:[8,24,17,5],numberwithunsignedint:27,phrase:[17,5],magenta:23,mmacosx:8,strlen:5,revis:[18,21,30,17],"0x5aead50":25,suboper:17,inescap:17,huge:[24,5],cours:[20,21,30,17],goal:[11,9,7,17,5],awkward:17,secur:[1,29,21],rather:[23,1,24,32,2,17,18,5,21,8,9],anoth:[10,12,23,1,24,32,2,8,29,4,5,20,21,17,9],qconnectlint:37,comfort:17,pt_guard:1,theletterz:27,snippet:[13,31,36,5],"_explicit":21,mvc:5,"_nsconcretestackblock":30,reject:[24,33,27,9],"__single_inherti":8,simpl:[23,33,27,29,14,39,21,24,32,2,19,5,25,20,6,17,9],css:[17,33],unabl:8,noncopyable2:23,regener:23,resourc:[1,24,17,8,5],especi:[23,1,15,24,5,6,17],referenc:[23,30,24,32,2,18,5,6],algebra:2,our:[13,35,36,24,2,25,33,5,37,8],variant:[24,23,4,5],reflect:[23,5],okai:[1,8,2,5],associ:[23,1,29,30,24,32,2,13,27,5,21,17,9],sse4:24,circumst:[30,17,5],"short":[29,21,19,27,5],dfsan_get_label:[29,4],sse3:20,dragonfli:23,ani:[1,2,3,5,6,8,9,10,15,17,18,19,20,21,23,24,26,27,28,29,30,32,33,38,35],onto:[30,39,5],proto:39,children:[2,5],"0x173b030":2,tsan:15,ambigu:[32,8,5],cxx_reference_qualified_funct:21,callback:[26,2,5],cxx_strong_enum:21,nvidia:20,cxx_init_captur:21,getcxxconstructornam:5,replic:21,"__block_invoke_10":30,wabsolut:35,help:[10,23,29,15,36,24,32,2,4,35,5,37,20,21,26,17],module_priv:24,wthread:1,soon:[23,17,33],config_macro:24,held:[1,18,17,8],i386:[6,32,12,9],motion:21,vec1:21,hierarchi:[25,26,17,32],variat:18,suffer:[6,17],paramet:[2,4,5,8,9,10,14,17,18,20,21,22,23,24,26,27,28,29,35,33,36,39],style:[0,33,10,1,34,39,21,24,23,27,8,18,19,5,37,6,7,17,9],typest:8,"0x7f7893912ecd":38,"__sync_swap":21,strbuf:8,"0x7fff87fb82d0":12,wrl:33,vardecl:[25,31,32,2],nsdictionari:27,late:17,resort:21,penaltybreakstr:39,pend:23,bypass:11,wcdicw:9,include_next:21,pad:[],might:[23,1,39,24,33,8,5,37,20,21,7,17,9],alter:[11,4,17,9],wouldn:2,good:[33,1,7,2,19,5,25,17,9],"return":[0,1,2,4,5,7,8,23,12,13,14,15,17,18,21,26,27,28,29,35,39,36,25,38,30],avaudioqualityhigh:27,myinclud:21,food:35,pollut:5,untransl:9,objc_returns_inner_point:17,eat:[35,5],framework:[29,7,24,27,8,4,21,17],subtask:9,no_split_stack:8,"__builtin_nan":21,compound:[25,18,30,17,27],ninja:[28,22,2],placehold:21,complain:24,bigger:[10,12],thread_safety_analysis_mutex_h:1,problemat:[38,15,8],opaqu:[18,30,17,5],pt_guarded_bi:1,aligna:21,instruct:[23,12,38,15,24,2,5,37,20,21,7,8],mysteri:[25,17],easili:[23,1,24,29,5,37,21,9],token:[0,23,1,7,24,32,27,18,5,6],acquired_befor:1,compris:32,found:[0,10,1,29,30,16,24,23,2,32,13,35,5,28,18,21,17,9],intervent:24,d__stdc_format_macro:14,dif:23,truncat:[29,35],subsystem:5,initvarnam:2,astmatchfind:2,interleav:[21,35],offset1:23,offset2:23,"__c11_atom":21,getelem:1,hard:[0,23,1,24,2,5,20,22],idea:[1,7,24,5],procedur:[1,17],realli:[23,1,30,5,17,9],fsplit:8,linkag:[8,5],finish:[26,33,9],expect:[23,12,38,15,31,33,17,18,39,26,5,20,21,8,9],indistinguish:5,isbar:5,beyond:[18,17,5],todo:23,event:[30,17,5],isfrommainfil:2,agre:17,safeti:[34,1,27,8,21,17],publish:30,wire:5,ni_non:39,print:[23,11,12,14,15,24,32,2,5,28,38,21,9],astnod:5,diagnosticcli:5,subsubsect:17,occurr:17,ftl:23,raii:1,xarch_i386:9,ast:[23,31,34,13,16,24,32,2,25,36,26,19,5,28,6],team:35,suspici:23,assert_cap:8,fdelai:[23,33],reason:[23,12,1,15,24,29,19,5,38,21,17,9],base:[0,1,2,4,5,6,8,10,13,14,7,17,18,21,22,23,24,25,26,27,29,30,32,33,34,35,36,37,38,39],believ:5,tabwidth:39,put:[10,23,1,14,39,36,2,13,5,28,20,22,17],teach:[26,5],earliest:17,"__is_pod":21,asm:[23,21,8],basi:[24,8,5],thrown:18,targetinfo:[23,5],overloadedoperatorkind:5,thread:[23,11,12,34,1,15,24,33,8,18,21,17],"__dfsw_f":4,omit:[12,5,18,20,38,8],"__builtin_addressof":21,objc_precise_lifetim:17,perhap:24,ls_cpp11:39,thread_sanit:[15,21],iff:30,circuit:29,undergo:[17,5],assign:[10,39,23,29,30,32,27,18,21,17,9],feed:23,major:[23,35,24,32,33,5,21,9],notifi:32,obviou:[9,17,5],mylogg:24,feel:[37,35,2],number:[23,39,1,15,36,24,32,27,8,29,26,5,37,38,21,17,9],evolut:17,"__libc_start_main":[38,12],construct:[23,30,32,33,18,35,5,21,17,9],stdlib:[23,11,24,35],blank:23,stabl:[23,35,16,24,19],miss:[23,1,15,16,24,32,26,35,5,21,8],buffer_idx:8,guess:2,"__dfsw_memcpi":[29,4],cf_audited_transf:17,script:[10,38,12,23],num_predef_type_id:32,interact:[24,32,5,28,17,9],unrestrict:21,least:[28,23,21,39,17],"_block_byref_foo":30,statement:[23,39,1,30,32,2,17,18,5,25,21,8],dest_label:4,cxx_noexcept:21,master:23,scheme:[21,7,32],store:[23,13,15,30,32,29,4,5,38,21,17,9],objc_destroyweak:17,"__include_level__":21,stdout:[10,23],option:[0,1,2,5,6,8,9,10,11,12,14,16,17,18,20,21,22,23,24,27,28,30,32,34,35,36,25,38,39],relationship:17,behind:[1,9,32,5],selector:[32,27,17,5,21,8],illeg:5,maxemptylinestokeep:39,appropri:[23,1,30,16,24,32,27,29,5,21,7,8,9],pars:[10,23,1,14,35,36,24,32,33,18,5,25,6,22,21,9],wextra:23,toolset:23,myclass:[1,26],cxx_generalized_initi:21,eventu:[24,4,5],noreturn:[21,8],std:[0,23,14,39,36,24,35,5,21,7,17],kind:[23,30,24,32,2,17,27,5,37,8],simplist:21,extern_c:24,whenev:[1,39,32,2,5,17],i32:29,remov:[23,39,24,27,17,35,5,21,7,8,9],elid:[23,21,17],cleanupandunlock:1,"__block_invoke_1":30,corefound:[21,17],lk_none:39,"__block_invoke_5":30,block_siz:30,diaggroup:5,wg21:[],usualunaryconvers:5,toward:35,hasoperatornam:2,hasiniti:2,penaltyreturntypeonitsownlin:39,argtyp:21,yourattr:5,uncontroversi:17,deleg:[21,17,9],balanceddelimitertrack:5,peculiar:17,weveryth:[23,35],packag:[20,24],matchfind:2,loopconvert:2,consol:23,dedic:32,"null":[23,15,30,32,2,17,27,5,28,35,7,8],sell:30,flto:[],interven:17,unintend:24,ext_vector_typ:21,equival:[23,35,24,27,17,18,5,21,8],getsourcepathlist:[2,36],self:[18,21,38,17,5],violat:[1,24,17,5],"__objc_y":27,stapl:5,undeclar:1,namespac:[12,13,39,36,24,32,2,26,5,28,21],accessor:[9,17,27,5],"__has_warn":21,subnam:24,build:[2,3,5,6,8,9,10,12,14,15,19,20,21,22,34,24,23,26,28,35,31,32,36,37,38,7],"__has_trivial_copi":21,exclusive_trylock_funct:1,"__cxx_rvalue_references__":21,hasloopinit:2,brace:[23,21,39,17,5],coff:23,recurs:[25,23,24,2,5],"__c11_atomic_thread_f":21,reinject:5,exec:[23,8],handlesimpleattribut:5,previou:[15,36,24,2,35,5,28,17],reach:[23,14,32,2,25,21,17],miscellan:[23,17],most:[23,38,1,29,39,24,32,2,8,13,26,33,5,25,20,21,7,17,9],cygwin:23,maco:12,alpha:[10,35],"0x5aead68":25,splat:21,cxxconstructornam:5,addr:[29,21],code16gcc:23,frontendpluginregistri:14,clear:[1,21,24,17,5],cover:[23,24,33,4,5,20,17],destruct:[17,5],roughli:[6,9,5],"__int128":31,x_label:4,part:[23,35,1,30,36,24,32,2,8,13,26,19,5,25,20,21,22,7,17,9],supertyp:17,abnorm:17,clean:5,newvalu:27,weigh:17,latest:[10,35,14],microsoft:[23,24,32,33,5,21],visibl:[24,32,5],ctag:37,think:[1,21,5],"_z5tgsind":8,"_z5tgsine":8,"_z5tgsinf":8,namespaceindent:39,block_decl:18,xcode:19,rerun:[22,19],no_thread_safety_analysi:1,ns_returns_retain:[21,17,8],particularli:[23,24,32,33,20,8,9],uncov:33,font:17,fine:[23,21,17,5],find:[23,13,39,36,32,2,17,26,33,5,28,20,35,7,8],penaltybreakbeforefirstcallparamet:39,penalti:[39,17],access:[23,12,18,1,29,30,24,2,8,13,39,4,35,5,25,20,21,7,26,17,9],coerc:27,processinfo:27,copyright:30,offsetn:23,writer:1,solut:[1,22,17,2,5],technic:[23,24,17],experiment:[23,12,39,24,3,35,28,38,8],knowledg:[26,17,2,5],c89:23,intermezzo:2,darwin:[20,24,23,9],woption:23,hit:28,unus:[29,23,21,24,9],caus:[23,12,1,29,15,30,24,8,18,4,35,5,38,21,17],addobject:27,parenexpr:25,"__real__":21,express:[23,11,39,1,30,24,32,2,17,18,26,27,5,35,21,25,8],translationunitdecl:[25,31,32,5],nativ:[23,12,29,15,4,38,20],rare:[23,9,5],"__builtin_appli":23,stdcall:8,silli:5,cexpr:28,lit_test:15,elf:[20,23],verifydiagnosticconsum:5,initvar:2,"__has_trivial_constructor":21,keyword:[23,39,21,27,17,33,5,6,8],d__stdc_limit_macro:[14,36],getstmta:2,synthes:[30,17,5],crc:23,captured_i:30,statist:32,assert_shared_lock:1,fielddecl:5,seamlessli:17,wrote:[37,5],arr:35,set:[1,27,5,7,8,9,10,12,13,15,17,18,19,20,21,23,24,2,28,29,30,32,36,37,38,39],msan_new_delet:38,dump:[10,31,13,39,16,2,25,26,5,28,9],creator:26,cleverli:2,decompos:9,mutabl:[17,27,5],"0x173af50":2,"_size_t":24,arc:[21,24,17],signifi:17,sg10:[],arg:[23,29,14,27,5,8,9],float4:21,disadvantag:17,ret_label:4,arm:[23,12,35,5,20,21,8],float2:21,deriv:[29,24,18,26,5,25,17],strchr:17,gnu11:21,horrif:24,inconveni:17,nscompar:21,misalign:23,ftrapv:23,someth:[23,30,2,26,5,37,20,21,17,9],stdatom:21,equal:[23,11,29,35,2,33,5,21,17],"__block_invoke_2":30,mutex:1,nontrivi:17,subscript:[21,27],"__builtin_ssubll_overflow":21,"__block_invoke_4":30,altern:[23,1,16,24,36,6,22,21],signatur:[23,30,8,4,21,17],syntact:[19,10,28,17,8],numer:[32,27,5],induc:5,sole:[17,5],"0x7f78938b5c25":38,unrol:23,disallow:[23,17],operationmod:21,incident:17,imp:1,complementari:[],distinguish:[23,30,24,17,5],popul:[30,32,9],both:[1,2,3,5,6,8,9,10,12,7,17,18,21,23,24,26,27,35,32,33,39,25,30],sbpo_alwai:39,last:[23,32,2,18,5,28,20,21,17,9],delimit:[17,5],hint:[7,33,5,37,21,35],alon:[7,5,3],sinl:8,context:[10,23,13,39,24,32,2,8,5,25,6,17],"0x5aeacf0":25,whole:[25,35,24,8],pdb:33,load:[10,23,29,14,15,24,32,2,19,5,38,21,17,9],mutexunlock:1,filecheck:5,simpli:[30,12,1,15,24,2,27,5,38,21,7,17,9],undefin:[23,29,30,24,35,21,17],point:[10,38,12,23,1,29,35,36,24,32,2,8,13,27,5,37,20,21,22,17],instanti:[23,32,33,5,21,17],pcm:24,unrealist:24,header:[23,34,1,14,16,24,32,2,21,29,36,4,33,5,20,6,17],alloca:29,lbr:23,param:[23,30,26],linux:[23,12,29,15,3,4,38,20,22,39],mistak:[27,5],bridg:17,ftrigraph:35,simpler:24,backend:[23,21,8],swi:8,faithfulli:17,sine:8,"0x7ff3a302a980":31,"_atom":21,framebord:25,aarch64:[23,21],"_block_byref_voidblock":30,pchintern:24,due:[23,1,15,24,32,18,38,21,22,17],empti:[23,11,39,24,27,18,5],createastdump:28,hascustompars:5,whom:30,ls_cpp03:39,stdint:21,wambigu:23,reformat:[0,39,7,10],silenc:23,"141592654f":27,strategi:[6,26],bazarg:17,handoff:1,fire:5,imag:[33,9],shuffl:21,"__builtin_choose_expr":[21,5],"_returns_not_retain":21,coordin:17,valuedecl:2,understand:[23,1,32,2,26,5,20,17,9],func:[7,5],demand:[23,5],repetit:5,cxxdestructornam:5,"__builtin_strlen":5,imap:10,c_atom:21,assertheld:1,look:[23,13,14,36,24,2,26,5,25,20,21,17],nsurl:27,typecheck:17,noexcept:21,tip:36,histor:[33,17,27,5],oldvalu:17,durat:[21,17,8],ramif:1,autowrit:28,"while":[23,33,1,39,31,24,32,2,17,27,5,6,22,21],parsemicrosoftdeclspec:5,match:[23,34,1,24,32,2,18,26,5,20,21,8,9],abov:[23,1,29,30,21,24,32,27,8,13,5,38,6,17],error:[1,27,3,5,8,9,23,11,12,15,16,17,18,19,20,21,24,28,30,31,32,33,36,37,38,35],fun:[38,11,15,4,12],anonym:[28,12,17,23,5],loop:[23,39,2,35,5,21,7,17],pack:[23,30,39,5],subsect:17,propag:[8,29,4,17,5],malloc:[29,11,4,17,5],readi:[28,23],key2:39,key1:39,readm:14,activ:[1,15,24,33,18,19,5,7],binutil:20,itself:[23,38,1,30,21,24,32,8,26,5,20,6,7,17,9],shell_error:28,vector4doubl:21,"__typeof__":23,around:[23,7,31,24,18,5,20,21,17],bankaccount:1,decor:21,reveryth:35,do_somthing_completely_differ:39,"__c11_atomic_exchang":21,minim:[23,15,24,32,33,3,35],noncopy:23,belong:[24,4,17,8],myconst:27,argonn:35,"_block_byref_obj_keep":30,clangattremitt:5,"__builtin_addcl":21,octal:23,"__builtin_addcb":21,ffff99:33,multicor:6,unsafeincr:1,higher:[23,15,21,12,38],fmodul:24,x86:[23,35,32,5,20,21,8],nsmakerang:21,optim:[23,12,29,30,21,24,32,17,18,35,5,38,6,8],tc2:23,getasidentifierinfo:5,wherea:[29,20,21,17],inflat:17,amd:35,unintention:17,moment:[1,23],temporari:[23,17,9],user:[1,27,4,5,6,8,9,23,11,12,13,14,7,16,17,21,22,34,24,25,26,29,35,31,32,33,37],createreplac:5,wfoo:23,provabl:17,triag:23,recent:[28,32,17,2,5],conditionvarnam:2,travers:[13,25,32,2,5],task:[26,9],unicod:21,discourag:[1,17],older:[18,35,32],entri:[1,29,24,32,2,17,13,5,8],bad_arrai:12,parenthes:[23,39,27,2,5,21,17],person:[23,30],cheer:17,appertain:[21,5],withdraw:1,wmultichar:23,organization:7,propos:[29,35,24],always_inlin:[21,8],clang_plugin:37,cout:7,"__block_copy_foo":30,ldd:23,camel:21,obscur:23,constructorinitializerindentwidth:39,v6m:20,dfsw:29,nonbitfield:5,locks_requir:1,simd:35,joinedarg:9,regardless:[23,18,1,35,8,13,21,7,17],objectforkei:27,forloop:2,cut:25,"0x173afc8":2,also:[0,1,2,3,4,5,6,7,8,9,23,14,15,17,18,20,21,22,24,25,27,28,30,32,33,36,37,38,35],scenario:17,tok:5,restructuredtext:5,theoret:[6,17],newbi:23,absolut:[11,35,24,21,22,17],str:23,win:[23,17],input:[10,23,29,39,36,24,2,5,21,7,9],subsequ:[21,9,17,5],approxim:[1,24,2],finder:2,useless:[35,24],bin:[23,12,13,39,31,2,36,28,20,22],gnueabihf:20,evaluat:5,getcustomdiagid:[],obsolet:8,format:[0,11,10,34,39,24,23,32,26,19,5,20,21,22,7,8],getcxxconversionfunctionnam:5,submodul:[24,32],judgement:5,"0b10010":21,scoped_lock:1,spacesincstylecastparenthes:39,comparisonopt:21,mitig:[6,21,9],crisp:37,textdiagnosticprint:5,characterist:5,infil:13,snowleopard:30,needsclean:5,ivar:17,parameter_list:18,linemark:23,sortedarrayusingcompar:21,starequ:5,signal:[37,17],vcvars32:23,resolv:[23,13,8,5,6,17],sema:[32,5],operatorcallexpr:2,collect:[23,30,24,27,17,18,19,5,37,8],wsystem:23,"__gnu_inline__":23,popular:23,admittedli:17,"0x00000000c790":15,objcclass:5,encount:[23,32,24,17,5],myobject:1,often:[23,12,1,24,33,29,26,5,20,21,22,17],block_field_is_byref:30,"1st":[23,5],some:[0,1,2,5,6,8,9,23,11,12,13,14,15,16,17,20,21,24,25,26,27,29,35,32,33,36,37,38,7],pipelin:9,lipo:9,"__c11_atomic_fetch_sub":21,"__wchar_t":21,unspecifi:[18,17,23,5],handleyourattr:5,mirror:[23,2],sn4rkf:9,densemap:5,sizeof:[18,21,4,30,5],surpris:17,hurdl:35,distribut:[20,30,24,33,23],"_bool":[28,2],scale:29,culprit:2,dataflowsanit:[29,23,4,34],glibc:[23,4,5],though:[23,15,24,2,8,38,17],per:[23,39,13,15,24,32,29,5,21,8],contrast:[6,17],substitut:[18,6,17,33,5],larg:[23,29,15,24,32,33,3,5,38,17,9],"0x60":27,slash:10,transformxxx:5,prof:23,bcanalyz:32,prod:21,reproduc:23,warn_attribute_wrong_decl_typ:5,machin:[20,6,17,23,5],run:[1,2,3,5,6,8,9,10,12,13,14,15,16,18,19,20,21,22,23,28,29,36,38,7],nitti:19,disableformat:39,martin:[28,2],indentfunctiondeclarationaftertyp:[],viabl:[23,8],"__c11_atomic_fetch_xor":21,step:[23,12,1,36,24,2,13,26,19,5,37,38,22,28,17,9],ispointertyp:5,"_ivar":17,meantim:35,"0x00000000a3b4":15,getnextcontext:5,shorten:17,impos:17,clangformat:[0,39,34,10],idx:27,constraint:[1,17,8],loopprint:2,prove:[18,17,27,38],vend:24,ioctl:8,maxlen:8,idl:23,allowfullscreen:25,modal:5,"32bit":23,arraywithobject:27,prologu:[23,8],expected_st:[],block:[23,39,30,24,32,17,18,5,6,21],plan:[0,15,24,3,19,6],sourcerang:5,real:[23,12,15,36,24,2,5,38,21,17,9],string1rang:21,primarili:[7,24,32,17,5,8],foper:23,digraph:23,within:[10,39,23,1,29,30,24,32,27,8,18,4,5,21,7,17],drain:17,bsd:23,todai:[24,27],ensur:[23,1,24,32,2,17,29,27,5,8],chang:[10,35,33,23,1,29,39,24,32,2,8,18,4,19,5,20,21,22,7,17,9],individu:[23,21],"0x00000000a3a4":15,websit:23,inclus:[24,5],gcc_version:23,span:[23,39],"__typeof":17,errno:24,question:[34,1,35,16,33,5,20],elem:29,fast:[23,12,7,32,17,5,21,6,9],custom:[10,11,23,39,36,24,2,4,5,17],security_critical_appl:21,handler:[8,33,5],arithmet:[29,21,17,27],charg:30,suit:[39,15,12,33],forward:[23,30,32,35,21,8,9],createastdeclnodelist:28,"0x173b008":2,bs_gnu:39,properli:[23,5],vprintf:8,"0x173b088":2,opt:[21,24,5],lint:19,wno:23,int8_t:21,navig:37,pwd:28,"__builtin_operator_new":21,link:[23,12,38,13,15,24,27,3,33,36,28,20,8,9],translat:[23,12,13,30,36,24,32,2,8,29,4,27,5,25,26,21,22,17,9],int3:21,atom:[8,1,15,17,21,35],"__dsb":21,line:[2,5,6,8,9,10,11,12,13,14,15,16,17,21,23,24,27,28,39,31,32,33,36,25,38,7],existingblock:30,fortytwolonglong:27,sdk:23,libclang:[37,22,19,5],concaten:[21,5],callexpr:32,utf:[27,5],consist:[23,12,29,15,30,24,2,18,5,37,38,21,22,17,9],"0x5aeac10":25,caller:[1,17,8,5],familar:25,instantan:17,x86v7a:20,tightli:[23,17,5],err_typecheck_invalid_operand:5,highlight:[23,32,5],similar:[10,23,1,39,21,24,32,33,8,18,36,5,38,6,7,17],xmmintrin:21,constant:[23,29,7,21,24,32,27,17,5,25,6,8],curs:28,metal:20,parser:[37,23,33,5],favoritecolor:27,doesn:[23,1,24,2,17,5,28,20,8,9],repres:[23,30,21,32,2,18,26,27,5,6,17,9],"char":[23,12,13,29,30,36,2,18,27,5,38,21,8],incomplet:[23,21,17],int_max:27,guarante:[23,16,24,27,8,21,17],isdigit:8,"__builtin_va_arg_pack":23,ni_al:39,cxx_variable_templ:21,unifi:[10,9],cmake:[12,38,15,2,36,28,20,22],c_thread_loc:21,"__block_descriptor_10":30,titl:23,sequenti:[29,21,22],"__format__":8,nan:5,invalid:[23,12,31,33,5,25,17],vendor:[20,21,24,5],bracket:[23,21,5],dfsan_has_label_with_desc:29,peopl:[23,2,28,5,37,20],ellipsi:8,nice:[36,2,5],deseri:[6,32],linti:37,llvm:[0,2,5,7,17,9,10,12,13,34,15,20,21,22,23,27,28,29,35,31,32,36,37,38,39],incvar:2,appropo:30,cxx_deleted_funct:21,fansi:23,totyp:21,meaning:[8,23,15,17,9],libtool:[34,13,7,31,2,26,19,36,22],ctype:24,formal:17,clue:20,svn:[0,7,2,10],assert_shared_cap:8,infrequ:23,cxx_nonstatic_member_init:21,algorithm:[25,6,17,32],vice:[1,18,29,17,32],ns_consum:[21,17],i16:29,needstolock:1,notion:[24,5],discrimin:23,depth:[23,21,17],argument_with_type_tag:8,dot:[23,24],"__block_copy_10":30,broad:[23,21],far:[1,39,24,2,5,21,17],fresh:24,n_label:4,convert:[23,30,27,2,5,21,7,17],hello:[30,16,32,27,18,33,5],prototyp:[30,21,8],pretoken:[34,6,5],unevalu:[8,5],unsequenc:17,edg:[23,5],undefinit:24,fstandalon:23,queri:[24,32,17,26,5,21,8,9],wlogic:[],strex:21,objc_boxed_express:27,parsearg:14,addmatch:2,ut_nev:39,type_tag_idx:8,vector4short:21,compact:32,privat:[23,1,24,13,5,21,17],lifetim:[18,21,17,23,8],pas_right:39,helpmessag:[2,36],sensit:[29,5],elsewher:17,send:[37,23,21,17,27],"__size_type__":24,vptr:23,carefulli:[7,17,5],"__builtin_arm_stlex":21,tr1:7,aris:[30,17],fatal:[23,16,5],sent:[18,17],robust:[37,24],mpi_double_int:8,intention:[23,7,17],unzip:20,"0x170fa80":2,vla:23,nsusernam:27,dxr:37,w64:23,"_noreturn":8,mous:5,typeattr:5,mingw:[23,35],implicitli:[23,29,24,27,18,5,21,22,17],cxx_constexpr:21,relev:[13,20,21,5],"__builtin_usubll_overflow":21,tri:[23,1,5,37,17,9],magic:[20,11],"__stdc__":32,stddef:[35,16,36],complic:[1,32,33,2,5,9],cxx_override_control:21,redefin:24,"try":[23,1,39,2,18,26,5,28,7,17,9],nsfoo:17,race:[23,1,15,8,18,17],exprerror:5,min:[8,27],initializer_list:21,tests_typest:[],nsmutablearrai:27,pleas:[23,14,35,32,27,8,4,5,37,6,21],impli:[30,24,32,2,17,9],smaller:[12,17,5],fortun:33,natur:[6,32,17,5],odr:8,cfe:[23,34,17,5],classref:23,fold:[23,5],bad_foo:11,voidarg:18,download:[10,35,2,20],clangtool:[13,2,36],autosynthesi:21,"__int128_t":31,targetspecificattr:5,click:5,append:[4,27],compat:[23,35,34,39,24,32,33,17,19,5,21,8,9],index:[23,34,35,24,32,2,25,27,5,37,21,9],"__extension__":5,compar:[35,2,8,27,5,21,6,9],captured_voidblock:30,resembl:[25,26],dwarfstd:23,keepemptylinesatthestartofblock:39,autocleanup:1,"__builtin_operator_delet":21,fobjc:17,imaginari:21,deduc:[7,17],whatev:[23,9,32,5],impact:[23,24,33,5],"enum":[23,21,30,27,5],setobject:27,chose:17,"__has_include_next":21,commentpragma:39,cxx_explicit_convers:21,closur:21,v7m:20,sfina:21,intercept:22,let:[10,23,13,14,36,2,25,5,28,17],sink:29,ubuntu:[38,15,12],sinf:8,openmp:35,safer:[20,17,27],becom:[29,18,4,17,5],honeypot:8,implicit:[24,2,26,5,21,17],cfgblock:5,great:[20,23,5],unsiz:21,convers:[23,33,7,2,17,18,27,5,21,8],checkplaceholderexpr:5,broken:[24,17,9],libc:[23,15,21,38],cxx_local_type_template_arg:21,larger:[25,32],reus:[17,5],later:[23,24,32,2,17,26,5,28,20,8],converg:5,nsstring:[21,8,27],shall:[29,30,24,17,8],ifstmt:[28,5],earli:[29,6],typic:[23,12,38,1,15,24,33,5,37,20,6,17],cxxbasespecifi:25,epilogu:8,honor:17,chanc:[17,2],fake:1,control:[0,35,33,23,1,39,24,32,27,8,18,4,19,5,20,21,7,17,9],bare:20,blerg:20,see:[1,2,5,6,8,9,23,11,12,14,7,16,17,21,22,24,25,26,27,30,31,32,33,36,37,38,35],isderivedfrom:26,nearest:5,forbid:[17,27],appli:[10,35,23,39,36,24,2,17,4,27,5,21,7,8],app:33,"__has_builtin":21,foundat:[18,17,8],declrefexpr:[25,2],forindent:39,dyn_cast:5,api:[23,1,35,24,8,4,19,5,21,7,17],"__is_nothrow_destruct":21,uniqu:[24,32,27,2,5,8,9],llvm_build:2,"__block_dispose_foo":30,redo:5,rprichard:37,parmvar:25,nest:[23,30,24,18,26,5,6,39],my_pair:8,from:[1,27,4,5,6,8,9,10,11,12,13,14,7,17,18,19,20,21,23,24,25,26,2,28,29,30,31,32,35,36,37,38,39],functionprototyp:32,zip:20,commun:[17,5],"__is_enum":21,doubl:[23,12,1,27,8,21,17],ordinal0:5,next:[10,35,13,39,36,24,32,2,17,26,27,5,21,8],unpleasantli:17,few:[23,7,24,32,2,33,5,8,9],doubt:19,usr:[23,12,30,24,2,28,22],lock:1,imprecis:17,ternari:[39,5],"0x7f7893901cbd":38,remaind:17,sort:[21,7,17,5],insertvalu:29,src:[11,12,30,17,4,25,38,15],trait:[23,21],factor:[38,6,5],mismatch:[29,17,8],undefinedbehaviorsanit:23,ptr_kind:8,trail:[23,21,39],arg_idx:8,bufferptr:5,piovertwo:27,toolchain:[20,35,23,33,9],getter:[1,30,21,17],focu:[7,5],expect_tru:36,account:[17,32],dcmake_c_compil:28,retriev:[13,36,2,29,26,5,6,21],mgener:23,augment:[20,24],scalabl:[6,24],alia:[1,23,21,35],annot:[23,1,8,5,21,17],numberwithdoubl:27,pretti:[28,20,33,5],obvious:[17,5],thin:[],drill:13,meet:[17,5],my_int_pair:8,qunus:23,sbpo_controlstat:39,modulemap:24,"0x5aeacb0":25,process:[23,31,12,29,14,15,21,24,7,36,26,35,5,28,6,22,17,9],optioncategori:[2,36],block_has_stret:30,sudo:[28,2],divis:[23,35],high:[23,30,17,19,5,37,6,7,21],tag:[37,21,4,17,8],diagnosticsengin:37,tab:[10,39,23],msvc:[23,21,8,33,34],onlin:[25,12],recordtofil:27,astmatchersmacro:26,cansyntaxcheckcod:36,"0x7f7ddab8c084":12,"0x7f7ddab8c080":12,basic_str:5,delai:[1,23,24,17,33],gcc:[23,30,21,24,18,35,5,28,20,6,8,9],uncomput:5,gch:23,"__thread":8,acycl:32,"__bridge_transf":17,infeas:[24,8],cxx_default_function_template_arg:21,"0x000000010000":29,instead:[10,23,29,39,21,24,27,8,25,4,35,5,28,6,17,9],sin:8,inher:[18,22,24,17,5],stand:[10,7,32,3,26,5],everywher:24,msdn:8,objcspacebeforeprotocollist:39,getgooglestyl:0,bad_:11,watch:5,powerpc64:23,irel:22,hascondit:2,cxx_defaulted_funct:21,"__has_trivial_destructor":21,cygm:23,physic:1,alloc:[23,12,29,32,27,17,18,5,38,21,8,9],essenti:[8,6,17,5],astreaderstmt:5,"__c11_atomic_load":21,annot_typenam:5,seriou:[17,32],counter:[23,1,32,5,21,17],nonliter:8,element:[30,27,17,5,21,8],issu:[23,1,30,33,29,4,35,5,37,20,21,8],test_typest:8,decls_begin:5,unaccept:17,allow:[1,2,5,8,9,23,11,13,7,17,18,19,21,24,26,29,30,32,33,35,36,25,39],subtyp:17,release_cap:8,fallback:[23,39],furnish:30,unforgiv:[17,5],houston:35,breakbeforebinaryoper:39,vmm:23,decltyp:21,vmg:23,move:[30,16,17,18,35,5,21,8],vmb:23,j_label:4,fcaret:23,nsforcedorderingsearch:21,comma:[23,39,17,27,8],liabl:30,vmv:23,valuetyp:7,interceptor:38,pointers_to_memb:33,bunch:[36,5],perfect:[38,12],fpu:20,outer:[26,5],disambigu:27,chosen:[20,8,2],cxx_decltype_incomplete_return_typ:21,gfull:9,infrastructur:[35,19,5,28,7,9],fidel:17,addr2lin:[23,15],therefor:[15,24,32,27,17,5,38,8],dag:32,crash:[23,17],greater:[23,7],numberwithbool:27,ext_:5,opeat:21,spell:[23,35,17,5],innermost:17,bat:23,mention:[6,32,30,5],facilit:[37,21,17],extwarn:5,front:[23,39,32,5],fomit:9,"__clang__":[1,21],type_tag_for_datatyp:8,fortytwo:27,"__builtin_umul_overflow":21,warranti:30,somewher:[23,5],dsymutil:12,faltivec:21,anyth:[23,15,24,35,5],edit:[28,10,32],new_stat:8,slide:25,fuzz:33,mode:[10,23,35,36,24,2,17,7,5,25,38,21,3,8],"0x173b060":2,findnamedclassvisitor:13,upward:32,subset:[19,21,17,23,5],unwind:17,aresameexpr:2,denseset:5,cpp11bracedliststyl:39,attr_mpi_pwt:8,"0x7f7893912f0b":38,shared_trylock_funct:1,param_typest:8,consum:[17,8],isatstartoflin:5,astmatch:2,"static":[23,35,33,12,1,14,15,30,2,8,18,36,29,5,37,38,21,17],sbpo_nev:39,differ:[0,1,27,5,7,8,9,10,11,12,13,14,15,17,19,20,21,22,23,24,26,2,28,30,32,33,36,25,38,39],unique_ptr:[1,35,7],special:[23,11,38,12,34,1,15,30,32,8,29,39,4,19,5,20,21,22,17,9],out:[0,2,5,7,8,9,23,11,12,13,15,17,19,20,21,22,24,25,26,28,29,30,32,33,36,37,38,35],variabl:[23,35,12,29,30,32,2,17,18,39,28,33,5,37,38,21,7,25,8],rex:5,overridden:[23,21,17,8],contigu:17,"0x5aead88":25,influenc:[23,17],rev:30,cf_consum:[21,17],categori:[23,11,12,7,36,32,2,4,5,37,17],"__timestamp__":21,stroustrup:39,suitabl:[1,23,7,5],rel:[23,11,16,24,32,33,17,36,6,22,8,21],hardwar:[20,21,8,23],merg:[23,30,32,39,5,21,17,9],metaclass:17,reg:23,red:[21,27,5],common:[23,38,1,29,39,36,24,32,2,17,13,27,5,25,20,21,7,8],proviso:17,umbrella:[1,24],insid:[23,12,1,39,36,32,27,33,5,28,21,9],workflow:10,fallthrough:[17,8],manipul:[9,5],undo:10,powerpc:[23,6,9,35,5],commonhelp:[2,36],standalon:[0,23,13,15,24,19,36,10,7],"__is_nothrow_construct":21,captured_obj:30,dictionari:[21,27],cxx_unicode_liter:21,invas:[1,17],cf_returns_not_retain:[21,17],index1:21,guarded_var:1,cxx:[1,28],indent:[23,39],badstructnam:12,spill:29,could:[23,29,30,24,32,17,5,20,7,8],lexer:[0,6,24,7,5],ask:[1,34,16,24,33],mac:[23,30,24,8,6,17],keep:[39,32,5,37,17,9],annoi:17,length:[10,21,39,23,5],enforc:[1,17,8],anti:24,outsid:[23,39,24,27,19,5,21,17],transfer:17,i128:23,retain:[30,21,17,18,5,6,8],successor:5,lto:[],objectpoint:30,try_acquire_shared_cap:8,softwar:[1,30,24,3,37,20],blocka:30,newastconsum:28,"__block_copy_4":30,"__block_copy_5":30,qualiti:[23,8,9],q0btox:9,echo:[28,2],ut_forindent:39,exclusive_locks_requir:1,check_initialization_ord:12,stringargu:5,isfoo:5,lib:[23,12,14,15,36,24,5,28,20],owner:17,macosx:8,facil:[9,24,5],"_value_":21,getsourcerang:5,getnodea:2,gmarpon:37,commandlin:[2,36],type_trait:[21,24],at_interrupt:5,unknown:[24,20,4,8,23],scanf:8,perfectli:[17,5],mkdir:[28,2],system:[23,35,33,1,14,30,16,24,32,2,8,29,4,19,5,28,20,21,22,17,9],messag:[10,35,12,23,15,36,24,2,8,18,4,27,5,38,21,17],attach:[23,1,39,2,29,5,8],appl:[23,30,32,27,17,18,20,21,8,9],privaci:29,subdirectori:[23,24],termin:[23,30,5,27,36,17],compilerinst:[13,14],alexfh:28,"final":[23,12,38,1,24,2,8,4,33,5,20,21,17,9],low:[23,11,29,30,17,5,21,22,6,9],back:[23,30,24,17,35,5,21,8],tidbit:21,shell:[11,22,2],ldrex:21,block_copi:[18,21,30,17],block_has_ctor:30,"var":[25,17,2],"_block_byref_obj_dispos":30,wcharti:[],qualifi:[13,24,32,18,28,5,37,21,17],exactli:[23,39,24,2,18,5,21,7,17,9],haven:[23,17],"0x5aeac90":25,meanin:[38,11],"0x403c43":12,prune:24,counteract:17,"__builtin_shufflevector":21,rpass:[23,21,35],"0x7ff3a302a8d0":31,block_foo:18,"_block_object_dispos":30,structur:[23,1,30,24,32,33,39,4,5,26,6,17,9],charact:[23,39,24,27,5,6,22,17],"__builtin_arm_ldaex":21,hastyp:2,num:[10,23],sens:[23,2,5,20,21,17],bind:[10,27,23,2,18,26,19,22,9],dubiou:5,ns_returns_not_retain:[21,17,8],bs_linux:39,ij_label:4,exhibit:24,constructana:21,stdin:10,ijk_label:4,"__builtin_smull_overflow":21,getllvmstyl:0,respons:[23,5,32,36,17,9],deprec:[23,12,1,35,24,5,21,8],clearli:[35,24,17,5],correspond:[23,1,29,24,32,8,18,26,5,21,17,9],fail:[23,38,1,36,24,27,8,18,33,5,20,21,17,9],continuationindentwidth:39,coher:5,tabl:[23,34,29,32,33,5,25,21,17],need:[1,27,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,2,28,29,30,32,33,35,36,38,39],keyboard:10,altivec:[21,24],filemanag:5,lazili:[9,32,5],unqualifi:[23,21,17],mut:1,smallest:10,mio:8,handletopleveldecl:[],objc_loadweakretain:17,sandbox:12,whatsoev:17,neon_polyvector_typ:21,builtin:[23,16,36,25,21,17],fthread:35,which:[1,27,4,5,6,8,9,10,11,12,13,14,7,17,19,20,21,22,23,24,25,26,2,28,29,30,31,32,33,35,36,37,39],subsum:[29,9],mip:20,detector:[23,38,12,3],seh:33,rvalu:[21,17,5],singl:[10,27,23,1,39,21,24,32,2,8,26,19,5,28,20,6,22,17,9],uppercas:17,converttyp:5,dosomeio:1,unless:[1,30,24,8,39,4,5,21,17],freebsd:23,awar:[20,35,17,5],tryannotatetypeorscopetoken:5,who:[23,7,24,2,8,25,21,17],fn5:23,multitud:25,penaltybreakfirstlessless:39,callabl:[29,26],fn4:23,rigor:26,typenam:[23,35,33,5,21,8],deploi:[1,8],astprint:28,segment:[6,21],mutexlock:1,pyf:10,afresh:17,urg:8,placement:[23,21,8],attributelist:5,objc_arc_weak:21,nsautoreleasepool:17,depositimpl:1,request:[29,18,35,17,23],face:[21,17,5],pipe:[9,5],do_something_els:39,determin:[23,1,39,32,2,5,21,8,9],irq:8,occasion:5,constrain:[17,8],parsingpreprocessordirect:5,block_field_:30,fact:[1,18,17,23,5],dllexport:[23,33],annot_cxxscop:5,fdiagnost:23,text:[10,23,36,24,2,33,5,8],compile_command:[28,22,36],verbos:[23,7,24],elif:21,"__bridge_retain":17,bring:[17,2,5],objc:[23,30,24,27,39,5,17],objcspaceafterproperti:39,getcxxliteralidentifi:5,styleguid:0,dosomethingtwic:1,texa:35,testafterdivzero:35,setter:[30,21,17],reader:[1,32,2],textual:[23,24,5],objc_loadweak:17,"__is_construct":21,gvsnb:9,buf:8,preclud:17,shared_locks_requir:1,should:[1,2,4,5,7,8,9,23,12,15,16,17,18,20,21,24,27,28,35,30,32,33,38,39],ignoringparenimpcast:2,optionspars:[2,36],won:[20,24,5],suppos:[30,24,8,2],nonumb:27,elseif:28,inhabit:32,local:[10,12,23,30,24,32,33,17,18,5,28,21,8],frontendactionfactori:36,hope:9,codegenfunct:5,meant:[23,24,32,17,5,8],gettyp:5,cxx_decltype_auto:21,pull:24,cxx_access_control_sfina:21,familiar:[20,17,9],entranc:5,disagre:5,memcpi:[29,4],bear:[21,22],autom:[19,21,17,5],penaltybreakcom:39,acces:[],objc_dictionary_liter:[21,27],unaryoper:2,increas:[17,12],"__is_destruct":21,lucki:24,custom_error:23,enabl:[10,35,33,12,23,1,15,24,32,2,8,18,27,5,25,38,21,17],organ:[7,17,32],approach:[23,29,32,5,37,6,9],possibl:[23,39,38,29,14,15,30,24,32,27,17,18,36,35,5,20,21,8,9],throughout:[23,24,32],"__is_liter":21,integr:[0,35,12,10,15,24,32,27,8,28,19,5,37,21,22,7,17,9],partit:27,contain:[1,2,4,5,8,9,10,11,12,14,7,17,18,20,21,22,23,24,27,29,30,32,35,39],"__builtin_addc":21,view:[6,32,17,5],conform:[29,23,4,33],legaci:35,modulo:5,badfunct:11,unimport:23,cmake_cxx_compil:2,googlecod:0,frame:[23,11,12,15,18,38,17,9],elis:23,diagnosticgroup:5,matchcallback:2,itool:[14,36],vectorize_width:21,bptr:17,target_link_librari:2,"_perform":17,decls_end:5,bindabl:26,stack:[23,11,12,15,21,24,32,33,8,18,30,5,38,6,17],"__builtin_sadd_overflow":21,danger:17,mileston:8,statu:[12,35,33,3,4,38,15],"0x7f7893912e06":38,allowshortblocksonasinglelin:39,woboq:37,correctli:[36,23,9,24,5],make_uniqu:7,pattern:[10,1,39,24,2,26,27,5,21,7,17],wconfig:24,dll:23,favor:35,state:[23,29,21,24,32,17,5,6,8,9],unusu:5,entrant:1,om_abortonerror:21,astconsum:[13,28],progress:[12,35,33,4,6,17],neither:[23,27,2,5,21,17],entiti:[10,11,12,15,24,32,2,5,38,8],email:37,speed:[23,6],tent:[35,5],bleed:23,javascript:39,predefin:[39,32,27],forkeyedsubscript:27,ccff99:33,amen:21,bad_init_glob:12,parseabl:23,arg_kind:8,newfrontendactionfactori:[2,36],sigil:17,job:[9,5],entir:[7,24,32,17,5,8,9],cmonster:37,otherwis:[10,39,23,30,24,27,17,18,5,21,8,9],foo_dtor:30,spacesinangl:39,outfit:2,swift:20,endl:7,addit:[23,35,29,8,1,14,30,24,32,2,3,18,27,4,19,5,37,20,21,17,9],myfoobar:[11,12],doxygen:[25,23],instant:[1,18],plugin:[34,13,14,19,36,37],wtautolog:35,valgrind:[38,12],special_sourc:11,etc:[23,1,30,24,32,8,39,35,5,37,20,21,7,17,9],instanc:[23,12,29,24,32,27,18,5,28,20,21,17,9],grain:[23,21,5],vqckcdflssc:25,committe:[21,24],pthread_creat:15,freeli:17,afraid:7,comment:[23,39,24,32,33,35,5,7,8],unimpl:1,"__has_nothrow_assign":21,english:5,unfold:5,wall:[28,23],guidelin:23,use_lbr:23,chmod:28,subsetsubject:5,solv:[37,24],nmore:[2,36],defaultlvalueconvers:5,m16:23,respect:[23,11,39,1,30,24,32,27,8,18,35,5,21,17],largest:35,chromium:[10,39],esc:10,quit:[23,24,17],objc_read_weak:30,"__c11_atomic_init":21,"__weak":[18,21,30,17],"0x7fff87fb82c8":12,tort:30,addition:[12,30,24,35,5,21,17],decent:5,getlocstart:13,inprocess:9,separatearg:9,wide_string_liter:5,json:[28,34,22,36],unknowntyp:33,besid:2,treat:[23,11,12,1,30,24,18,4,5,21,17],certain:[23,11,12,13,30,24,32,8,39,26,5,28,38,21,17,9],addresssanit:[23,11,12,34,3,21,8],immedi:[32,2,17,5,6,21],partial:[23,21,8,33],unregist:17,parmvardecl:25,bit:[23,12,29,15,21,24,32,30,5,6,17,9],do_something_completely_differ:39,upcom:[],presenc:[1,30,24,5,21,17],substat:32,blocklanguagespec:21,bulk:32,"_block_byref_releas":30,"__always_inline__":21,togeth:[10,12,13,14,15,36,24,5,38,17,9],languagekind:39,present:[23,30,24,33,5,21,8],llvm_link_compon:2,strongli:[1,21,8],multi:[1,6,32,5],hasrh:2,comput:[29,17,18,5,8,9],"__c11_atomic_fetch_and":21,transferfrom:1,align:[23,21,39,17,8],mu2:1,harder:[20,9],undergon:23,contextu:[21,2],"__builtin_arm_ldrex":21,cursor:[10,19],defin:[1,2,4,5,8,9,23,12,14,15,17,18,20,21,24,26,27,29,35,32,38,39],intro:23,adjust:[8,17,2,5],constantin:37,getqualifiednameasstr:13,backtrack:5,ill:[24,17,27,8],nscol:27,gamma:[23,5],layer:5,avx:24,file:[1,2,4,5,6,7,17,9,10,11,12,13,14,15,16,19,20,21,22,23,24,28,29,30,32,33,35,36,37,38,39],helper:[30,9,17,5],leftmost:17,almost:[24,17,5,20,6,8],virt:21,site:[10,35,23,5],path_discrimin:23,dfsan_add_label:29,inform:[2,3,4,5,6,7,8,9,23,12,13,15,16,17,19,21,22,24,26,28,30,31,32,33,36,25,38,35],motiv:[23,6,7,8,9],dual:1,lightweight:9,incom:5,constexpr:[23,21,8],avg:35,autofdo:23,bs_attach:39,uniti:38,mutat:[37,18],welcom:[34,15],"0x403c53":12,parti:[23,24,32],getc:24,satisfi:[24,4,9],cross:[37,20,35,34,5],intra:1,member:[23,33,1,30,24,32,2,17,18,39,27,5,21,7,8],handl:[23,38,1,14,24,32,2,5,20,6,17,9],getenv:27,alignescapednewlinesleft:39,auto:[23,30,24,18,35,5,21,7,39],ifndef:[1,21,24,5],android:[20,12],probabl:[20,19,5],fabi:20,infer:[18,21,24,17],"0x7f45944b418a":38,difficult:[1,23,17,2,38],"0x173b048":2,tighten:17,overal:[6,32,17,9],http:[0,12,23,15,2,3,39,25,37,38,7,17],denot:27,int8x8_t:21,expans:[23,22,5],upon:[23,30,24,27,8,18,17],struct:[23,12,29,30,24,32,33,17,5,21,8],dai:24,declnod:5,etaoin:37,bcpl:17,dealloc:[21,17,8],allowallparametersofdeclarationonnextlin:39,php:23,numberwithint:27,expand:[23,2,17,27,5,28,21,8],googl:[0,12,10,1,15,23,3,38,39],audit:[29,17],objc_protocol_qualifier_mangl:21,"0x7ff3a302a830":31,off:[23,11,1,24,2,17,5,38,21,8],center:25,allof:26,sfs_all:39,well:[0,35,33,10,30,24,23,27,32,18,19,5,20,6,7,17,9],is_convertible_to:21,dfsan_set_label:[29,4],exampl:[1,2,4,5,6,7,8,9,23,11,13,14,15,16,17,18,19,20,21,22,34,24,25,26,27,28,29,30,32,33,36,37,38,39],command:[23,12,14,15,16,24,32,2,21,39,36,27,5,28,6,22,7,8,9],achiev:[38,11,5],cxx_aggregate_nsdmi:21,choos:[34,18,19,5,20,8,9],interconvers:17,backref:17,sibl:[38,12],usual:[23,12,38,1,14,15,30,24,27,7,18,33,5,25,20,21,22,17,9],unari:[18,21,39,2,5],lossi:23,statementmatch:2,ni_inn:39,less:[23,15,32,2,17,7,5,3,8],"boolean":[1,8,27,5],glut:17,obtain:[23,6,30,2],mistaken:23,objc_fixed_enum:21,"__c11_":21,formatstyl:[0,39],fooarg:17,simultan:[1,17],lex:[0,6,24,5],"42ll":27,fabsf:35,web:[37,23,35],static_assert:[21,35],now:[13,30,36,27,2,5,28,35,17],swig:1,gnutool:35,idiom:5,provision:[],onward:23,makefil:[28,20,22,36,23],speedup:11,discuss:[0,23,30,24,32,27,5,37,17],integerliter:[25,31,32,2],add:[10,11,38,12,23,14,15,16,32,2,8,28,39,27,30,5,37,20,7,17,9],cleanup:[1,17,5],handiwork:2,foobar:23,collis:[24,17],c11:[21,24],amd1:23,smart:1,boom:12,ctrl:10,branch:[23,8,5],dest:[30,4,17],mpi_datatyp:8,agnost:[1,17],varieti:[10,35,24,23],yesnumb:27,piec:[1,23,6,2,5],tc1:23,assert:[1,24,21,4],built:[10,23,36,24,32,2,19,5,38,21,9],were:[23,39,24,32,27,17,18,26,35,5,37,38,8,9],five:[9,17,5],know:[23,1,2,33,5,37,20,21,17,9],dianost:5,use_multipli:21,press:[10,2],incrementvarnam:2,unstart:33,loader:23,testm:18,cxx_:21,desc:29,redund:[23,35,24,17],insert:[10,23,29,39,27,17,26,5,21,8],fpars:23,resid:[18,6,7,24,32],like:[1,27,4,5,7,8,9,23,11,12,13,15,17,18,19,20,21,24,26,2,29,39,32,36,25,38,35],success:[1,8,9],ndebug:24,startoflin:5,derivepointerbind:[],push_back:36,necessari:[23,1,30,24,2,8,29,4,33,5,37,17,9],have:[1,27,4,5,8,9,23,12,14,17,19,20,21,22,24,25,2,28,29,30,32,33,35,36,37,39],lose:[7,17],isdependenttyp:5,objc_retain:17,profraw:23,"__printf__":8,soft:20,page:[23,34,35,24,5,37,6,8],philosophi:32,unreach:23,revers:[21,32],prepend:29,substanti:30,captur:[32,2,18,5,21,17],suppli:[30,15,24,18,38,39],unsafe_unretain:17,dst_vec_typ:21,acquired_aft:1,i64:29,"__dfsan_retval_tl":29,"export":[14,36,24,23],superclass:[21,17],unretain:17,"__clang_version__":21,proper:[23,21,5],home:[28,22],"__dfsan_arg_tl":29,librari:[0,1,2,4,5,6,8,9,34,12,14,15,17,19,20,21,10,24,23,29,35,33,36,37,38,7],tmp:9,win32:[20,8],guid:[0,23,1,39,2,37,20,21,7],lead:[23,15,24,32,27,18,5,6,17],esp:21,leak:[12,1,7,3,5,17],avoid:[15,24,27,17,5,38,21,8,9],cplusplus11:24,outgo:5,leav:[18,17,23],contact:35,speak:6,trap:23,"__builtin_arm_clrex":21,encourag:[35,17],imperfectli:17,"__builtin_uaddl_overflow":21,acronym:37,spacesinparenthes:39,objc_subscript:[21,27],dosometh:1,usag:[10,11,12,23,15,2,39,4,35,38,21,8],actoncxx:5,externalastsourc:32,objc_releas:17,host:[20,17,5],toggl:36,obei:[8,17,5],although:[23,1,7,32,27,8,18,17,9],offset:[10,30,32,8,23],declus:24,stage:[15,2,5,6,17,9],about:[1,2,4,5,8,9,23,12,13,15,16,17,19,20,24,37,26,28,35,32,25,38,7],actual:[23,1,29,30,21,24,32,8,18,5,25,6,22,17,9],endcod:39,world:[23,38,30,16,24,32,33,18,5,20,17],ansi:23,column:[13,23,39,32,5],static_cast:7,declcontext:[25,32,5],hot:11,"__clang_patchlevel__":21,lifecycl:8,includ:[1,2,4,5,6,7,8,10,11,13,14,15,16,17,18,19,20,21,23,24,30,32,33,36,38,35],constructor:[23,39,1,30,36,18,5,21,17],discard:[29,23,4,8],hypothet:8,disabl:[23,11,12,1,15,24,8,39,35,5,38,21,17],cycles_to_do_someth:21,wformat:[23,21,8],truenumb:27,own:[23,35,33,1,39,32,2,8,29,4,27,5,37,20,21,7,26,17,9],"__builtin_unreach":[23,21],paramtyp:26,cxx_inline_namespac:21,dictionarywithobject:27,automat:[0,39,23,29,30,36,24,32,18,19,5,28,21,7,17,9],nodupfunc:8,cocoa:[21,17,27,32],guard:[1,24,17,5],dcmake_export_compile_command:[28,36],converttypeformem:5,refer:[23,11,35,39,1,29,30,24,32,2,8,18,4,27,5,37,26,21,17,9],treetransform:5,comp_dtor:30,linkonce_odr:29,cxx_variadic_templ:21,mere:[8,9,17,5],isvector:5,"0x7ff3a302a9d8":31,"__builtin_usubl_overflow":21,hd720:25,val:21,diagnosticsemakind:5,lower:[23,6,32,17,5],rst:[30,5],fuzzer:33,threadsanit:[23,11,34,15,21,8],divid:[23,9],trigger:[32,24,17,19],downgrad:23,inner:[39,30,26,17],arg1:5,biggest:1,interleave_count:21,holist:17,c90:[23,24],favorit:25,"function":[1,2,4,5,7,8,9,10,11,12,14,15,17,18,21,23,24,26,27,28,29,30,32,33,35,25,38,39],attribute_deprecated_with_messag:21,unexpect:17,make_shar:7,experienc:24,weight:[23,17],aresamevari:2,eax:21,neutral:9,bodi:[23,39,1,30,32,2,17,18,33,5,25,8],readertrylock:1,backtrac:23,spuriou:[1,17],instancetyp:21,cxx_delegating_constructor:21,eas:[23,35,9],inlin:[23,12,1,39,33,35,5,38,21,8],widecharact:21,bug:[23,12,29,15,33,4,35,38,17],showinclud:23,eof:[31,8,5],count:[23,35,24,32,27,17,18,26,5,21,8],succe:[8,32],made:[0,23,39,24,17,28,35,5,37,21,8],vtordisp:23,mcpu:20,temp:9,whether:[1,2,4,5,8,9,23,12,13,15,17,18,21,22,24,27,29,35,32,39,36,38,30],wish:[2,17,5,20,6,8],scroll:2,"__builtin_uaddll_overflow":21,displai:[10,23,35,36,2,5,7,8],opt_i:9,record:[23,6,32,33,5],below:[23,1,24,32,27,8,26,5,21,17,9],libsystem:30,limit:[23,12,1,15,30,39,5,38,17],nestednamespecifi:5,cf_returns_retain:[21,17],problem:[23,11,12,29,35,24,32,2,33,5,20,21,17,9],quickli:[29,26,5,21,17,9],uglier:24,getderiv:5,evalu:[23,30,32,27,17,18,35,5,21,8],"int":[1,2,4,5,7,8,23,11,12,13,15,16,17,18,21,27,29,39,31,35,36,25,38,30],descript:[23,29,14,36,2,33,5,21],dure:[0,23,1,14,35,32,27,13,29,5,20,6,7,17,9],pic:23,pid:15,pie:[38,15],getobjcselector:5,indirectli:[1,17],ino:[],implement:[0,1,2,4,5,6,8,9,23,13,14,17,18,21,24,27,29,30,32,33,36,37],banal:37,inf:21,ing:32,codebas:[23,35],inc:30,tricki:[23,5],mutual:[18,30,8],quot:[23,22,8,5],nonetheless:17,cxxrecorddecl:13,libcxx:[20,38],percent:5,detail:[23,11,27,1,35,32,2,19,5,21,7,8,9],virtual:[23,33,12,13,15,2,19,38],new_valu:21,"0x7fcf47b21bc0":15,other:[1,27,4,5,6,7,8,9,23,12,15,16,17,19,20,21,24,26,2,28,29,30,32,33,35,25,38,39],lookup:[23,32,17,33,5],futur:[0,1,15,24,27,35,5,38,8,9],rememb:5,disproportion:23,gline:23,"__is_abstract":21,movl:21,stat:[6,32],repeat:[23,26,24],fulli:[23,12,33,5,38,17,9],polymorph:[21,26],"__is_empti":21,add_subdirectori:2,tryannotatecxxscopetoken:5,clang_check_last_cmd:28,wheader:[],serial:[6,22,24,32,5],actonxxx:5,function1:23,"0x7f45938b676c":38,"0x44da290":28,nodupl:8,spacebeforeparen:39,amp:9,eod:5,funknown:[],reliabl:[23,17],attribute_overload:8,"__base_file__":21,rule:[23,1,39,24,27,8,33,5,37,21,17],"__sync_":21,portion:[30,17,2],enumerator_attribut:21,sourceloc:5,hoist:5,invari:[21,17,9],mpi_datatype_double_int:8,callable_when:8,talk:5},objtypes:{"0":"std:option"},titles:["LibFormat","Thread Safety Analysis","Tutorial for building tools using LibTooling and LibASTMatchers","LeakSanitizer","DataFlowSanitizer","“Clang” CFE Internals Manual","Pretokenized Headers (PTH)","Overview","Attributes in Clang","Driver Design & Internals","ClangFormat","Sanitizer special case list","AddressSanitizer","How to write RecursiveASTVisitor based ASTFrontendActions.","Clang Plugins","ThreadSanitizer","Frequently Asked Questions (FAQ)","Objective-C Automatic Reference Counting (ARC)","Language Specification for Blocks","Choosing the Right Interface for Your Application","Cross-compilation using Clang","Clang Language Extensions","JSON Compilation Database Format Specification","Clang Compiler User’s Manual","Modules","Introduction to the Clang AST","Matching the Clang AST","Objective-C Literals","How To Setup Clang Tooling For LLVM","DataFlowSanitizer Design Document","Block Implementation Specification","ClangCheck","Precompiled Header and Modules Internals","MSVC compatibility","Welcome to Clang’s documentation!","Clang 3.5 Release Notes","LibTooling","External Clang Examples","MemorySanitizer","Clang-Format Style Options"],objnames:{"0":["std","option","option"]},filenames:["LibFormat","ThreadSafetyAnalysis","LibASTMatchersTutorial","LeakSanitizer","DataFlowSanitizer","InternalsManual","PTHInternals","ClangTools","AttributeReference","DriverInternals","ClangFormat","SanitizerSpecialCaseList","AddressSanitizer","RAVFrontendAction","ClangPlugins","ThreadSanitizer","FAQ","AutomaticReferenceCounting","BlockLanguageSpec","Tooling","CrossCompilation","LanguageExtensions","JSONCompilationDatabase","UsersManual","Modules","IntroductionToTheClangAST","LibASTMatchers","ObjectiveCLiterals","HowToSetupToolingForLLVM","DataFlowSanitizerDesign","Block-ABI-Apple","ClangCheck","PCHInternals","MSVCCompatibility","index","ReleaseNotes","LibTooling","ExternalClangExamples","MemorySanitizer","ClangFormatStyleOptions"]})
\ No newline at end of file

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/DebugChecks.rst
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/DebugChecks.rst?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/DebugChecks.rst (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/DebugChecks.rst Tue Jan 13 16:55:20 2015
@@ -0,0 +1,151 @@
+============
+Debug Checks
+============
+
+.. contents::
+   :local:
+
+The analyzer contains a number of checkers which can aid in debugging. Enable
+them by using the "-analyzer-checker=" flag, followed by the name of the
+checker.
+
+
+General Analysis Dumpers
+========================
+
+These checkers are used to dump the results of various infrastructural analyses
+to stderr. Some checkers also have "view" variants, which will display a graph
+using a 'dot' format viewer (such as Graphviz on OS X) instead.
+
+- debug.DumpCallGraph, debug.ViewCallGraph: Show the call graph generated for
+  the current translation unit. This is used to determine the order in which to
+  analyze functions when inlining is enabled.
+
+- debug.DumpCFG, debug.ViewCFG: Show the CFG generated for each top-level
+  function being analyzed.
+
+- debug.DumpDominators: Shows the dominance tree for the CFG of each top-level
+  function.
+
+- debug.DumpLiveVars: Show the results of live variable analysis for each
+  top-level function being analyzed.
+
+- debug.ViewExplodedGraph: Show the Exploded Graphs generated for the
+  analysis of different functions in the input translation unit. When there
+  are several functions analyzed, display one graph per function. Beware 
+  that these graphs may grow very large, even for small functions.
+
+Path Tracking
+=============
+
+These checkers print information about the path taken by the analyzer engine.
+
+- debug.DumpCalls: Prints out every function or method call encountered during a
+  path traversal. This is indented to show the call stack, but does NOT do any
+  special handling of branches, meaning different paths could end up
+  interleaved.
+
+- debug.DumpTraversal: Prints the name of each branch statement encountered
+  during a path traversal ("IfStmt", "WhileStmt", etc). Currently used to check
+  whether the analysis engine is doing BFS or DFS.
+
+
+State Checking
+==============
+
+These checkers will print out information about the analyzer state in the form
+of analysis warnings. They are intended for use with the -verify functionality
+in regression tests.
+
+- debug.TaintTest: Prints out the word "tainted" for every expression that
+  carries taint. At the time of this writing, taint was only introduced by the
+  checks under experimental.security.taint.TaintPropagation; this checker may
+  eventually move to the security.taint package.
+
+- debug.ExprInspection: Responds to certain function calls, which are modeled
+  after builtins. These function calls should affect the program state other
+  than the evaluation of their arguments; to use them, you will need to declare
+  them within your test file. The available functions are described below.
+
+(FIXME: debug.ExprInspection should probably be renamed, since it no longer only
+inspects expressions.)
+
+
+ExprInspection checks
+---------------------
+
+- void clang_analyzer_eval(bool);
+
+  Prints TRUE if the argument is known to have a non-zero value, FALSE if the
+  argument is known to have a zero or null value, and UNKNOWN if the argument
+  isn't sufficiently constrained on this path.  You can use this to test other
+  values by using expressions like "x == 5".  Note that this functionality is
+  currently DISABLED in inlined functions, since different calls to the same
+  inlined function could provide different information, making it difficult to
+  write proper -verify directives.
+
+  In C, the argument can be typed as 'int' or as '_Bool'.
+
+  Example usage::
+
+    clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
+    if (!x) return;
+    clang_analyzer_eval(x); // expected-warning{{TRUE}}
+
+
+- void clang_analyzer_checkInlined(bool);
+
+  If a call occurs within an inlined function, prints TRUE or FALSE according to
+  the value of its argument. If a call occurs outside an inlined function,
+  nothing is printed.
+
+  The intended use of this checker is to assert that a function is inlined at
+  least once (by passing 'true' and expecting a warning), or to assert that a
+  function is never inlined (by passing 'false' and expecting no warning). The
+  argument is technically unnecessary but is intended to clarify intent.
+
+  You might wonder why we can't print TRUE if a function is ever inlined and
+  FALSE if it is not. The problem is that any inlined function could conceivably
+  also be analyzed as a top-level function (in which case both TRUE and FALSE
+  would be printed), depending on the value of the -analyzer-inlining option.
+
+  In C, the argument can be typed as 'int' or as '_Bool'.
+
+  Example usage::
+
+    int inlined() {
+      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
+      return 42;
+    }
+    
+    void topLevel() {
+      clang_analyzer_checkInlined(false); // no-warning (not inlined)
+      int value = inlined();
+      // This assertion will not be valid if the previous call was not inlined.
+      clang_analyzer_eval(value == 42); // expected-warning{{TRUE}}
+    }
+
+- void clang_analyzer_warnIfReached();
+
+  Generate a warning if this line of code gets reached by the analyzer.
+
+  Example usage::
+
+    if (true) {
+      clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
+    }
+    else {
+      clang_analyzer_warnIfReached();  // no-warning
+    }
+
+
+Statistics
+==========
+
+The debug.Stats checker collects various information about the analysis of each
+function, such as how many blocks were reached and if the analyzer timed out.
+
+There is also an additional -analyzer-stats flag, which enables various
+statistics within the analyzer engine. Note the Stats checker (which produces at
+least one bug report per function) may actually change the values reported by
+-analyzer-stats.

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/IPA.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/IPA.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/IPA.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/IPA.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,386 @@
+Inlining
+========
+
+There are several options that control which calls the analyzer will consider for
+inlining. The major one is -analyzer-config ipa:
+
+  -analyzer-config 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.
+
+  -analyzer-config ipa=basic-inlining - Turns on inlining for C functions, C++ 
+     static member functions, and blocks -- essentially, the calls that behave 
+     like simple C function calls. This is essentially the mode used in 
+     Xcode 4.4.
+
+  -analyzer-config ipa=inlining - Turns on inlining when we can confidently find
+    the function/method body corresponding to the call. (C functions, static
+    functions, devirtualized C++ methods, Objective-C class methods, Objective-C
+    instance methods when ExprEngine is confident about the dynamic type of the
+    instance).
+
+  -analyzer-config ipa=dynamic - Inline instance methods for which the type is
+   determined at runtime and we are not 100% sure that our type info is
+   correct. For virtual calls, inline the most plausible definition.
+
+  -analyzer-config ipa=dynamic-bifurcate - Same as -analyzer-config ipa=dynamic,
+   but the path is split. We inline on one branch and do not inline on the 
+   other. This mode does not drop the coverage in cases when the parent class 
+   has code that is only exercised when some of its methods are overridden.
+
+Currently, -analyzer-config ipa=dynamic-bifurcate is the default mode.
+
+While -analyzer-config ipa determines in general how aggressively the analyzer 
+will try to inline functions, several additional options control which types of 
+functions can inlined, in an all-or-nothing way. These options use the 
+analyzer's configuration table, so they are all specified as follows:
+
+    -analyzer-config OPTION=VALUE
+
+### c++-inlining ###
+
+This option controls which C++ member functions may be inlined.
+
+    -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 'destructors', meaning that all member
+functions with visible definitions will be considered for inlining. In some
+cases the analyzer may still choose not to inline the function.
+
+Note that under 'constructors', constructors for types with non-trivial
+destructors will not be inlined. Additionally, no C++ member functions will be 
+inlined under -analyzer-config ipa=none or -analyzer-config ipa=basic-inlining,
+regardless of the setting of the c++-inlining mode.
+
+### c++-template-inlining ###
+
+This option controls whether C++ templated functions may be inlined.
+
+    -analyzer-config c++-template-inlining=[true | false]
+
+Currently, template functions are considered for inlining by default.
+
+The motivation behind this option is that very generic code can be a source
+of false positives, either by considering paths that the caller considers
+impossible (by some unstated precondition), or by inlining some but not all
+of a deep implementation of a function.
+
+### c++-stdlib-inlining ###
+
+This option controls whether functions from the C++ standard library, including
+methods of the container classes in the Standard Template Library, should be
+considered for inlining.
+
+    -analyzer-config c++-stdlib-inlining=[true | false]
+
+Currently, C++ standard library functions are considered for inlining by 
+default.
+
+The standard library functions and the STL in particular are used ubiquitously
+enough that our tolerance for false positives is even lower here. A false
+positive due to poor modeling of the STL leads to a poor user experience, since
+most users would not be comfortable adding assertions to system headers in order
+to silence analyzer warnings.
+
+### c++-container-inlining ###
+
+This option controls whether constructors and destructors of "container" types
+should be considered for inlining.
+
+    -analyzer-config c++-container-inlining=[true | false]
+
+Currently, these constructors and destructors are NOT considered for inlining
+by default.
+
+The current implementation of this setting checks whether a type has a member
+named 'iterator' or a member named 'begin'; these names are idiomatic in C++,
+with the latter specified in the C++11 standard. The analyzer currently does a
+fairly poor job of modeling certain data structure invariants of container-like
+objects. For example, these three expressions should be equivalent:
+
+    std::distance(c.begin(), c.end()) == 0
+    c.begin() == c.end()
+    c.empty())
+
+Many of these issues are avoided if containers always have unknown, symbolic
+state, which is what happens when their constructors are treated as opaque.
+In the future, we may decide specific containers are "safe" to model through
+inlining, or choose to model them directly using checkers instead.
+
+
+Basics of Implementation
+-----------------------
+
+The low-level mechanism of inlining a function is handled in
+ExprEngine::inlineCall and ExprEngine::processCallExit.
+
+If the conditions are right for inlining, a CallEnter node is created and added
+to the analysis work list. The CallEnter node marks the change to a new
+LocationContext representing the called function, and its state includes the
+contents of the new stack frame. When the CallEnter node is actually processed,
+its single successor will be a edge to the first CFG block in the function.
+
+Exiting an inlined function is a bit more work, fortunately broken up into
+reasonable steps:
+
+1. The CoreEngine realizes we're at the end of an inlined call and generates a
+   CallExitBegin node.
+
+2. ExprEngine takes over (in processCallExit) and finds the return value of the
+   function, if it has one. This is bound to the expression that triggered the
+   call. (In the case of calls without origin expressions, such as destructors,
+   this step is skipped.)
+
+3. Dead symbols and bindings are cleaned out from the state, including any local
+   bindings.
+
+4. A CallExitEnd node is generated, which marks the transition back to the
+   caller's LocationContext.
+
+5. Custom post-call checks are processed and the final nodes are pushed back
+   onto the work list, so that evaluation of the caller can continue.
+
+Retry Without Inlining
+----------------------
+
+In some cases, we would like to retry analysis without inlining a particular
+call.
+
+Currently, we use this technique to recover coverage in case we stop
+analyzing a path due to exceeding the maximum block count inside an inlined
+function.
+
+When this situation is detected, we walk up the path to find the first node
+before inlining was started and enqueue it on the WorkList with a special
+ReplayWithoutInlining bit added to it (ExprEngine::replayWithoutInlining).  The
+path is then re-analyzed from that point without inlining that particular call.
+
+Deciding When to Inline
+-----------------------
+
+In general, the analyzer attempts to inline as much as possible, since it
+provides a better summary of what actually happens in the program.  There are
+some cases, however, where the analyzer chooses not to inline:
+
+- If there is no definition available for the called function or method.  In
+  this case, there is no opportunity to inline.
+
+- If the CFG cannot be constructed for a called function, or the liveness
+  cannot be computed.  These are prerequisites for analyzing a function body,
+  with or without inlining.
+
+- If the LocationContext chain for a given ExplodedNode reaches a maximum cutoff
+  depth.  This prevents unbounded analysis due to infinite recursion, but also
+  serves as a useful cutoff for performance reasons.
+
+- If the function is variadic.  This is not a hard limitation, but an engineering
+  limitation.
+
+  Tracked by: <rdar://problem/12147064> Support inlining of variadic functions
+
+- In C++, constructors are not inlined unless the destructor call will be
+  processed by the ExprEngine. Thus, if the CFG was built without nodes for
+  implicit destructors, or if the destructors for the given object are not
+  represented in the CFG, the constructor will not be inlined. (As an exception,
+  constructors for objects with trivial constructors can still be inlined.)
+  See "C++ Caveats" below.
+
+- In C++, ExprEngine does not inline custom implementations of operator 'new'
+  or operator 'delete', nor does it inline the constructors and destructors
+  associated with these. See "C++ Caveats" below.
+
+- Calls resulting in "dynamic dispatch" are specially handled.  See more below.
+
+- The FunctionSummaries map stores additional information about declarations,
+  some of which is collected at runtime based on previous analyses.
+  We do not inline functions which were not profitable to inline in a different
+  context (for example, if the maximum block count was exceeded; see
+  "Retry Without Inlining").
+
+
+Dynamic Calls and Devirtualization
+----------------------------------
+
+"Dynamic" calls are those that are resolved at runtime, such as C++ virtual
+method calls and Objective-C message sends. Due to the path-sensitive nature of
+the analysis, the analyzer may be able to reason about the dynamic type of the
+object whose method is being called and thus "devirtualize" the call. 
+
+This path-sensitive devirtualization occurs when the analyzer can determine what
+method would actually be called at runtime.  This is possible when the type
+information is constrained enough for a simulated C++/Objective-C object that
+the analyzer can make such a decision.
+
+ == DynamicTypeInfo ==
+
+As the analyzer analyzes a path, it may accrue information to refine the
+knowledge about the type of an object.  This can then be used to make better
+decisions about the target method of a call.
+
+Such type information is tracked as DynamicTypeInfo.  This is path-sensitive
+data that is stored in ProgramState, which defines a mapping from MemRegions to
+an (optional) DynamicTypeInfo.
+
+If no DynamicTypeInfo has been explicitly set for a MemRegion, it will be lazily
+inferred from the region's type or associated symbol. Information from symbolic
+regions is weaker than from true typed regions.
+
+  EXAMPLE: A C++ object declared "A obj" is known to have the class 'A', but a
+           reference "A &ref" may dynamically be a subclass of 'A'.
+
+The DynamicTypePropagation checker gathers and propagates DynamicTypeInfo,
+updating it as information is observed along a path that can refine that type
+information for a region.
+
+  WARNING: Not all of the existing analyzer code has been retrofitted to use
+           DynamicTypeInfo, nor is it universally appropriate. In particular,
+           DynamicTypeInfo always applies to a region with all casts stripped
+           off, but sometimes the information provided by casts can be useful.
+
+
+ == RuntimeDefinition ==
+
+The basis of devirtualization is CallEvent's getRuntimeDefinition() method,
+which returns a RuntimeDefinition object.  When asked to provide a definition,
+the CallEvents for dynamic calls will use the DynamicTypeInfo in their
+ProgramState to attempt to devirtualize the call.  In the case of no dynamic
+dispatch, or perfectly constrained devirtualization, the resulting
+RuntimeDefinition contains a Decl corresponding to the definition of the called
+function, and RuntimeDefinition::mayHaveOtherDefinitions will return FALSE.
+
+In the case of dynamic dispatch where our information is not perfect, CallEvent
+can make a guess, but RuntimeDefinition::mayHaveOtherDefinitions will return
+TRUE. The RuntimeDefinition object will then also include a MemRegion
+corresponding to the object being called (i.e., the "receiver" in Objective-C
+parlance), which ExprEngine uses to decide whether or not the call should be
+inlined.
+
+ == Inlining Dynamic Calls ==
+
+The -analyzer-config ipa option has five different modes: none, basic-inlining,
+inlining, dynamic, and dynamic-bifurcate. Under -analyzer-config ipa=dynamic,
+all dynamic calls are inlined, whether we are certain or not that this will
+actually be the definition used at runtime. Under -analyzer-config ipa=inlining,
+only "near-perfect" devirtualized calls are inlined*, and other dynamic calls
+are evaluated conservatively (as if no definition were available). 
+
+* Currently, no Objective-C messages are not inlined under
+  -analyzer-config ipa=inlining, even if we are reasonably confident of the type
+  of the receiver. We plan to enable this once we have tested our heuristics
+  more thoroughly.
+
+The last option, -analyzer-config ipa=dynamic-bifurcate, behaves similarly to
+"dynamic", but performs a conservative invalidation in the general virtual case
+in *addition* to inlining. The details of this are discussed below.
+
+As stated above, -analyzer-config ipa=basic-inlining does not inline any C++ 
+member functions or Objective-C method calls, even if they are non-virtual or 
+can be safely devirtualized.
+
+
+Bifurcation
+-----------
+
+ExprEngine::BifurcateCall implements the -analyzer-config ipa=dynamic-bifurcate
+mode.
+
+When a call is made on an object with imprecise dynamic type information 
+(RuntimeDefinition::mayHaveOtherDefinitions() evaluates to TRUE), ExprEngine
+bifurcates the path and marks the object's region (retrieved from the
+RuntimeDefinition object) with a path-sensitive "mode" in the ProgramState.
+
+Currently, there are 2 modes: 
+
+ DynamicDispatchModeInlined - Models the case where the dynamic type information
+   of the receiver (MemoryRegion) is assumed to be perfectly constrained so 
+   that a given definition of a method is expected to be the code actually 
+   called. When this mode is set, ExprEngine uses the Decl from 
+   RuntimeDefinition to inline any dynamically dispatched call sent to this 
+   receiver because the function definition is considered to be fully resolved.
+
+ DynamicDispatchModeConservative - Models the case where the dynamic type
+   information is assumed to be incorrect, for example, implies that the method 
+   definition is overriden in a subclass. In such cases, ExprEngine does not 
+   inline the methods sent to the receiver (MemoryRegion), even if a candidate 
+   definition is available. This mode is conservative about simulating the 
+   effects of a call.
+
+Going forward along the symbolic execution path, ExprEngine consults the mode 
+of the receiver's MemRegion to make decisions on whether the calls should be 
+inlined or not, which ensures that there is at most one split per region.
+
+At a high level, "bifurcation mode" allows for increased semantic coverage in
+cases where the parent method contains code which is only executed when the
+class is subclassed. The disadvantages of this mode are a (considerable?)
+performance hit and the possibility of false positives on the path where the
+conservative mode is used.
+
+Objective-C Message Heuristics
+------------------------------
+
+ExprEngine relies on a set of heuristics to partition the set of Objective-C 
+method calls into those that require bifurcation and those that do not. Below 
+are the cases when the DynamicTypeInfo of the object is considered precise
+(cannot be a subclass):
+
+ - If the object was created with +alloc or +new and initialized with an -init
+   method.
+
+ - If the calls are property accesses using dot syntax. This is based on the
+   assumption that children rarely override properties, or do so in an
+   essentially compatible way.
+
+ - If the class interface is declared inside the main source file. In this case
+   it is unlikely that it will be subclassed.
+
+ - If the method is not declared outside of main source file, either by the
+   receiver's class or by any superclasses.
+
+C++ Caveats
+--------------------
+
+C++11 [class.cdtor]p4 describes how the vtable of an object is modified as it is
+being constructed or destructed; that is, the type of the object depends on
+which base constructors have been completed. This is tracked using
+DynamicTypeInfo in the DynamicTypePropagation checker.
+
+There are several limitations in the current implementation:
+
+- Temporaries are poorly modeled right now because we're not confident in the
+  placement of their destructors in the CFG. We currently won't inline their
+  constructors unless the destructor is trivial, and don't process their
+  destructors at all, not even to invalidate the region.
+
+- 'new' is poorly modeled due to some nasty CFG/design issues.  This is tracked
+  in PR12014.  'delete' is not modeled at all.
+
+- Arrays of objects are modeled very poorly right now.  ExprEngine currently
+  only simulates the first constructor and first destructor. Because of this,
+  ExprEngine does not inline any constructors or destructors for arrays.
+
+
+CallEvent
+=========
+
+A CallEvent represents a specific call to a function, method, or other body of
+code. It is path-sensitive, containing both the current state (ProgramStateRef)
+and stack space (LocationContext), and provides uniform access to the argument
+values and return type of a call, no matter how the call is written in the
+source or what sort of code body is being invoked.
+
+  NOTE: For those familiar with Cocoa, CallEvent is roughly equivalent to
+        NSInvocation.
+
+CallEvent should be used whenever there is logic dealing with function calls
+that does not care how the call occurred.
+
+Examples include checking that arguments satisfy preconditions (such as
+__attribute__((nonnull))), and attempting to inline a call.
+
+CallEvents are reference-counted objects managed by a CallEventManager. While
+there is no inherent issue with persisting them (say, in a ProgramState's GDM),
+they are intended for short-lived use, and can be recreated from CFGElements or
+non-top-level StackFrameContexts fairly easily.

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/Makefile
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/Makefile?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/Makefile (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/Makefile Tue Jan 13 16:55:20 2015
@@ -0,0 +1,155 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+default: html
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ClangStaticAnalyzer.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ClangStaticAnalyzer.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/ClangStaticAnalyzer"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ClangStaticAnalyzer"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/RegionStore.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/RegionStore.txt?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/RegionStore.txt (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/RegionStore.txt Tue Jan 13 16:55:20 2015
@@ -0,0 +1,171 @@
+The analyzer "Store" represents the contents of memory regions. It is an opaque
+functional data structure stored in each ProgramState; the only class that can
+modify the store is its associated StoreManager.
+
+Currently (Feb. 2013), the only StoreManager implementation being used is
+RegionStoreManager. This store records bindings to memory regions using a "base
+region + offset" key. (This allows `*p` and `p[0]` to map to the same location,
+among other benefits.)
+
+Regions are grouped into "clusters", which roughly correspond to "regions with
+the same base region". This allows certain operations to be more efficient,
+such as invalidation.
+
+Regions that do not have a known offset use a special "symbolic" offset. These
+keys store both the original region, and the "concrete offset region" -- the
+last region whose offset is entirely concrete. (For example, in the expression
+`foo.bar[1][i].baz`, the concrete offset region is the array `foo.bar[1]`,
+since that has a known offset from the start of the top-level `foo` struct.)
+
+
+Binding Invalidation
+====================
+
+Supporting both concrete and symbolic offsets makes things a bit tricky. Here's
+an example:
+
+    foo[0] = 0;
+    foo[1] = 1;
+    foo[i] = i;
+
+After the third assignment, nothing can be said about the value of `foo[0]`,
+because `foo[i]` may have overwritten it! Thus, *binding to a region with a
+symbolic offset invalidates the entire concrete offset region.* We know
+`foo[i]` is somewhere within `foo`, so we don't have to invalidate anything
+else, but we do have to be conservative about all other bindings within `foo`.
+
+Continuing the example:
+
+    foo[i] = i;
+    foo[0] = 0;
+
+After this latest assignment, nothing can be said about the value of `foo[i]`,
+because `foo[0]` may have overwritten it! *Binding to a region R with a
+concrete offset invalidates any symbolic offset bindings whose concrete offset
+region is a super-region **or** sub-region of R.* All we know about `foo[i]` is
+that it is somewhere within `foo`, so changing *anything* within `foo` might
+change `foo[i]`, and changing *all* of `foo` (or its base region) will
+*definitely* change `foo[i]`.
+
+This logic could be improved by using the current constraints on `i`, at the
+cost of speed. The latter case could also be improved by matching region kinds,
+i.e. changing `foo[0].a` is unlikely to affect `foo[i].b`, no matter what `i`
+is.
+
+For more detail, read through RegionStoreManager::removeSubRegionBindings in
+RegionStore.cpp.
+
+
+ObjCIvarRegions
+===============
+
+Objective-C instance variables require a bit of special handling. Like struct
+fields, they are not base regions, and when their parent object region is
+invalidated, all the instance variables must be invalidated as well. However,
+they have no concrete compile-time offsets (in the modern, "non-fragile"
+runtime), and so cannot easily be represented as an offset from the start of
+the object in the analyzer. Moreover, this means that invalidating a single
+instance variable should *not* invalidate the rest of the object, since unlike
+struct fields or array elements there is no way to perform pointer arithmetic
+to access another instance variable.
+
+Consequently, although the base region of an ObjCIvarRegion is the entire
+object, RegionStore offsets are computed from the start of the instance
+variable. Thus it is not valid to assume that all bindings with non-symbolic
+offsets start from the base region!
+
+
+Region Invalidation
+===================
+
+Unlike binding invalidation, region invalidation occurs when the entire
+contents of a region may have changed---say, because it has been passed to a
+function the analyzer can model, like memcpy, or because its address has
+escaped, usually as an argument to an opaque function call. In these cases we
+need to throw away not just all bindings within the region itself, but within
+its entire cluster, since neighboring regions may be accessed via pointer
+arithmetic.
+
+Region invalidation typically does even more than this, however. Because it
+usually represents the complete escape of a region from the analyzer's model,
+its *contents* must also be transitively invalidated. (For example, if a region
+'p' of type 'int **' is invalidated, the contents of '*p' and '**p' may have
+changed as well.) The algorithm that traverses this transitive closure of
+accessible regions is known as ClusterAnalysis, and is also used for finding
+all live bindings in the store (in order to throw away the dead ones). The name
+"ClusterAnalysis" predates the cluster-based organization of bindings, but
+refers to the same concept: during invalidation and liveness analysis, all
+bindings within a cluster must be treated in the same way for a conservative
+model of program behavior.
+
+
+Default Bindings
+================
+
+Most bindings in RegionStore are simple scalar values -- integers and pointers.
+These are known as "Direct" bindings. However, RegionStore supports a second
+type of binding called a "Default" binding. These are used to provide values to
+all the elements of an aggregate type (struct or array) without having to
+explicitly specify a binding for each individual element.
+
+When there is no Direct binding for a particular region, the store manager
+looks at each super-region in turn to see if there is a Default binding. If so,
+this value is used as the value of the original region. The search ends when
+the base region is reached, at which point the RegionStore will pick an
+appropriate default value for the region (usually a symbolic value, but
+sometimes zero, for static data, or "uninitialized", for stack variables).
+
+  int manyInts[10];
+  manyInts[1] = 42;   // Creates a Direct binding for manyInts[1].
+  print(manyInts[1]); // Retrieves the Direct binding for manyInts[1];
+  print(manyInts[0]); // There is no Direct binding for manyInts[1].
+                      // Is there a Default binding for the entire array?
+                      // There is not, but it is a stack variable, so we use
+                      // "uninitialized" as the default value (and emit a
+                      // diagnostic!).
+
+NOTE: The fact that bindings are stored as a base region plus an offset limits
+the Default Binding strategy, because in C aggregates can contain other
+aggregates. In the current implementation of RegionStore, there is no way to
+distinguish a Default binding for an entire aggregate from a Default binding
+for the sub-aggregate at offset 0.
+
+
+Lazy Bindings (LazyCompoundVal)
+===============================
+
+RegionStore implements an optimization for copying aggregates (structs and
+arrays) called "lazy bindings", implemented using a special SVal called
+LazyCompoundVal. When the store is asked for the "binding" for an entire
+aggregate (i.e. for an lvalue-to-rvalue conversion), it returns a
+LazyCompoundVal instead. When this value is then stored into a variable, it is
+bound as a Default value. This makes copying arrays and structs much cheaper
+than if they had required memberwise access.
+
+Under the hood, a LazyCompoundVal is implemented as a uniqued pair of (region,
+store), representing "the value of the region during this 'snapshot' of the
+store". This has important implications for any sort of liveness or
+reachability analysis, which must take the bindings in the old store into
+account.
+
+Retrieving a value from a lazy binding happens in the same way as any other
+Default binding: since there is no direct binding, the store manager falls back
+to super-regions to look for an appropriate default binding. LazyCompoundVal
+differs from a normal default binding, however, in that it contains several
+different values, instead of one value that will appear several times. Because
+of this, the store manager has to reconstruct the subregion chain on top of the
+LazyCompoundVal region, and look up *that* region in the previous store.
+
+Here's a concrete example:
+
+    CGPoint p;
+    p.x = 42;       // A Direct binding is made to the FieldRegion 'p.x'.
+    CGPoint p2 = p; // A LazyCompoundVal is created for 'p', along with a
+                    // snapshot of the current store state. This value is then
+                    // used as a Default binding for the VarRegion 'p2'.
+    return p2.x;    // The binding for FieldRegion 'p2.x' is requested.
+                    // There is no Direct binding, so we look for a Default
+                    // binding to 'p2' and find the LCV.
+                    // Because it's an LCV, we look at our requested region
+                    // and see that it's the '.x' field. We ask for the value
+                    // of 'p.x' within the snapshot, and get back 42.

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/conf.py
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/conf.py?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/conf.py (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/conf.py Tue Jan 13 16:55:20 2015
@@ -0,0 +1,246 @@
+# -*- coding: utf-8 -*-
+#
+# Clang Static Analyzer documentation build configuration file, created by
+# sphinx-quickstart on Wed Jan  2 15:54:28 2013.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Clang Static Analyzer'
+copyright = u'2013-2014, Analyzer Team'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '3.4'
+# The full version, including alpha/beta/rc tags.
+release = '3.4'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'haiku'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'ClangStaticAnalyzerdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'ClangStaticAnalyzer.tex', u'Clang Static Analyzer Documentation',
+   u'Analyzer Team', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'clangstaticanalyzer', u'Clang Static Analyzer Documentation',
+     [u'Analyzer Team'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'ClangStaticAnalyzer', u'Clang Static Analyzer Documentation',
+   u'Analyzer Team', 'ClangStaticAnalyzer', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'http://docs.python.org/': None}

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/index.rst
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/index.rst?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/index.rst (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/index.rst Tue Jan 13 16:55:20 2015
@@ -0,0 +1,23 @@
+.. Clang Static Analyzer documentation master file, created by
+   sphinx-quickstart on Wed Jan  2 15:54:28 2013.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to Clang Static Analyzer's documentation!
+=================================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   DebugChecks
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

Added: www-releases/trunk/3.5.1/tools/clang/docs/analyzer/make.bat
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/analyzer/make.bat?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/analyzer/make.bat (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/analyzer/make.bat Tue Jan 13 16:55:20 2015
@@ -0,0 +1,190 @@
+ at ECHO OFF
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set BUILDDIR=_build
+set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
+set I18NSPHINXOPTS=%SPHINXOPTS% .
+if NOT "%PAPER%" == "" (
+	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
+	set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
+)
+
+if "%1" == "" goto help
+
+if "%1" == "help" (
+	:help
+	echo.Please use `make ^<target^>` where ^<target^> is one of
+	echo.  html       to make standalone HTML files
+	echo.  dirhtml    to make HTML files named index.html in directories
+	echo.  singlehtml to make a single large HTML file
+	echo.  pickle     to make pickle files
+	echo.  json       to make JSON files
+	echo.  htmlhelp   to make HTML files and a HTML help project
+	echo.  qthelp     to make HTML files and a qthelp project
+	echo.  devhelp    to make HTML files and a Devhelp project
+	echo.  epub       to make an epub
+	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
+	echo.  text       to make text files
+	echo.  man        to make manual pages
+	echo.  texinfo    to make Texinfo files
+	echo.  gettext    to make PO message catalogs
+	echo.  changes    to make an overview over all changed/added/deprecated items
+	echo.  linkcheck  to check all external links for integrity
+	echo.  doctest    to run all doctests embedded in the documentation if enabled
+	goto end
+)
+
+if "%1" == "clean" (
+	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
+	del /q /s %BUILDDIR%\*
+	goto end
+)
+
+if "%1" == "html" (
+	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
+	goto end
+)
+
+if "%1" == "dirhtml" (
+	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
+	goto end
+)
+
+if "%1" == "singlehtml" (
+	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
+	goto end
+)
+
+if "%1" == "pickle" (
+	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the pickle files.
+	goto end
+)
+
+if "%1" == "json" (
+	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can process the JSON files.
+	goto end
+)
+
+if "%1" == "htmlhelp" (
+	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run HTML Help Workshop with the ^
+.hhp project file in %BUILDDIR%/htmlhelp.
+	goto end
+)
+
+if "%1" == "qthelp" (
+	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; now you can run "qcollectiongenerator" with the ^
+.qhcp project file in %BUILDDIR%/qthelp, like this:
+	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ClangStaticAnalyzer.qhcp
+	echo.To view the help file:
+	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ClangStaticAnalyzer.ghc
+	goto end
+)
+
+if "%1" == "devhelp" (
+	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished.
+	goto end
+)
+
+if "%1" == "epub" (
+	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The epub file is in %BUILDDIR%/epub.
+	goto end
+)
+
+if "%1" == "latex" (
+	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
+	goto end
+)
+
+if "%1" == "text" (
+	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The text files are in %BUILDDIR%/text.
+	goto end
+)
+
+if "%1" == "man" (
+	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The manual pages are in %BUILDDIR%/man.
+	goto end
+)
+
+if "%1" == "texinfo" (
+	%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
+	goto end
+)
+
+if "%1" == "gettext" (
+	%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
+	goto end
+)
+
+if "%1" == "changes" (
+	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.The overview file is in %BUILDDIR%/changes.
+	goto end
+)
+
+if "%1" == "linkcheck" (
+	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Link check complete; look for any errors in the above output ^
+or in %BUILDDIR%/linkcheck/output.txt.
+	goto end
+)
+
+if "%1" == "doctest" (
+	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
+	if errorlevel 1 exit /b 1
+	echo.
+	echo.Testing of doctests in the sources finished, look at the ^
+results in %BUILDDIR%/doctest/output.txt.
+	goto end
+)
+
+:end

Added: www-releases/trunk/3.5.1/tools/clang/docs/conf.py
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/conf.py?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/conf.py (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/conf.py Tue Jan 13 16:55:20 2015
@@ -0,0 +1,242 @@
+# -*- coding: utf-8 -*-
+#
+# Clang documentation build configuration file, created by
+# sphinx-quickstart on Sun Dec  9 20:01:55 2012.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Clang'
+copyright = u'2007-2014, The Clang Team'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '3.5'
+# The full version, including alpha/beta/rc tags.
+release = '3.5'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build', 'analyzer']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'friendly'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'haiku'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Clangdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'Clang.tex', u'Clang Documentation',
+   u'The Clang Team', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'clang', u'Clang Documentation',
+     [u'The Clang Team'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'Clang', u'Clang Documentation',
+   u'The Clang Team', 'Clang', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1306 @@
+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = clang
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 3.5.1
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = /home/tstellar/llvm/tools/clang/docs/doxygen
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = ../..
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+#SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 2
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the progam writes to standard output 
+# is used as the file version. See the manual for examples.
+
+#FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = NO
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+#WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = 
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = /home/tstellar/llvm/tools/clang/docs/../include \
+                         /home/tstellar/llvm/tools/clang/docs/../lib \
+                         /home/tstellar/llvm/tools/clang/docs/doxygen.intro
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = /home/tstellar/llvm/tools/clang/docs/../examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = /home/tstellar/llvm/tools/clang/docs/img
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+#USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 4
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = clang::
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = /home/tstellar/llvm/tools/clang/docs/doxygen.header
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = /home/tstellar/llvm/tools/clang/docs/doxygen.footer
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = /home/tstellar/llvm/tools/clang/docs/doxygen.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated 
+# that can be used as input for Qt's qhelpgenerator to generate a 
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP           = @clang_doxygen_generate_qhp@
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
+# be used to specify the file name of the resulting .qch file. 
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               = @clang_doxygen_qch_filename@
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace
+
+QHP_NAMESPACE          = @clang_doxygen_qhp_namespace@
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to 
+# add. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   = @clang_doxygen_qhp_cust_filter_name@
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the 
+# custom filter to add. For more information please see 
+# <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters"> 
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  = @clang_doxygen_qhp_cust_filter_attrs@
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 
+# project's 
+# filter section matches. 
+# <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes"> 
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  = 
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
+# be used to specify the location of Qt's qhelpgenerator. 
+# If non-empty doxygen will try to run qhelpgenerator on the generated 
+# .qhp file.
+
+QHG_LOCATION           = @clang_doxygen_qhelpgenerator_path@
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = 
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = letter
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = 
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = 
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = 
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = ../include
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = YES
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = NO
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+#GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+#DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = /usr/bin/dot
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+#DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+#DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE           = @enable_searchengine@
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH    = @enable_server_based_search@
+
+SEARCHENGINE_URL       = @searchengine_url@
+
+EXTERNAL_SEARCH        = @enable_external_search@
+
+EXTERNAL_SEARCH_ID     = clang
+
+EXTRA_SEARCH_MAPPINGS  = @extra_search_mappings@

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg.in
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg.in?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg.in (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.cfg.in Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1306 @@
+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = clang
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = @PACKAGE_VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = @abs_builddir@/doxygen
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = ../..
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+#SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 2
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the progam writes to standard output 
+# is used as the file version. See the manual for examples.
+
+#FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = NO
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+#WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = 
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = @abs_srcdir@/../include \
+                         @abs_srcdir@/../lib \
+                         @abs_srcdir@/doxygen.intro
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = @abs_srcdir@/../examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = @abs_srcdir@/img
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+#USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 4
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = clang::
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = @abs_srcdir@/doxygen.header
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = @abs_srcdir@/doxygen.footer
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = @abs_srcdir@/doxygen.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated 
+# that can be used as input for Qt's qhelpgenerator to generate a 
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP           = @clang_doxygen_generate_qhp@
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
+# be used to specify the file name of the resulting .qch file. 
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE               = @clang_doxygen_qch_filename@
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace
+
+QHP_NAMESPACE          = @clang_doxygen_qhp_namespace@
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
+# Qt Help Project output. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to 
+# add. For more information please see 
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME   = @clang_doxygen_qhp_cust_filter_name@
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the 
+# custom filter to add. For more information please see 
+# <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters"> 
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS  = @clang_doxygen_qhp_cust_filter_attrs@
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 
+# project's 
+# filter section matches. 
+# <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes"> 
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS  = 
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
+# be used to specify the location of Qt's qhelpgenerator. 
+# If non-empty doxygen will try to run qhelpgenerator on the generated 
+# .qhp file.
+
+QHG_LOCATION           = @clang_doxygen_qhelpgenerator_path@
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = 
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = letter
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = 
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = 
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = 
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = ../include
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = YES
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = NO
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+#GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+#DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = @DOT@
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+#DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+#DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE           = @enable_searchengine@
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvances is that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH    = @enable_server_based_search@
+
+SEARCHENGINE_URL       = @searchengine_url@
+
+EXTERNAL_SEARCH        = @enable_external_search@
+
+EXTERNAL_SEARCH_ID     = clang
+
+EXTRA_SEARCH_MAPPINGS  = @extra_search_mappings@

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.css?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.css (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.css Tue Jan 13 16:55:20 2015
@@ -0,0 +1,408 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+	font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
+}
+BODY,TD {
+ font-size: 90%;
+}
+H1 {
+ text-align: center;
+ font-size: 140%;
+ font-weight: bold;
+}
+H2 {
+ font-size: 120%;
+ font-style: italic;
+}
+H3 {
+ font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+	width: 100%;
+	background-color: #eeeeff;
+	border: 1px solid #b0b0b0;
+	text-align: center;
+	margin: 2px;
+	padding: 2px;
+	line-height: 140%;
+}
+DIV.nav {
+	width: 100%;
+	background-color: #eeeeff;
+	border: 1px solid #b0b0b0;
+	text-align: center;
+	margin: 2px;
+	padding: 2px;
+	line-height: 140%;
+}
+DIV.navtab {
+       background-color: #eeeeff;
+       border: 1px solid #b0b0b0;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+TD.navtab {
+       font-size: 70%;
+}
+A.qindex {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D;
+}
+A.qindex:visited {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D
+}
+A.qindex:hover {
+	text-decoration: none;
+	background-color: #ddddff;
+}
+A.qindexHL {
+	text-decoration: none;
+	font-weight: bold;
+	background-color: #6666cc;
+	color: #ffffff;
+	border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+	text-decoration: none;
+	background-color: #6666cc;
+	color: #ffffff;
+}
+A.qindexHL:visited { 
+ text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+       font-family: Fixed, monospace;
+       font-size: 95%;
+}
+PRE.fragment {
+	border: 1px solid #CCCCCC;
+	background-color: #f5f5f5;
+	margin-top: 4px;
+	margin-bottom: 4px;
+	margin-left: 2px;
+	margin-right: 8px;
+	padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 4px;
+	padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdPrefix {
+       background-color: #F4F4FB;
+       color: #606060;
+	font-size: 80%;
+}
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+	background: white;
+	color: black;
+	margin-right: 20px;
+	margin-left: 20px;
+}
+TD.indexkey {
+	background-color: #eeeeff;
+	font-weight: bold;
+	padding-right  : 10px;
+	padding-top    : 2px;
+	padding-left   : 10px;
+	padding-bottom : 2px;
+	margin-left    : 0px;
+	margin-right   : 0px;
+	margin-top     : 2px;
+	margin-bottom  : 2px;
+	border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+	background-color: #eeeeff;
+	font-style: italic;
+	padding-right  : 10px;
+	padding-top    : 2px;
+	padding-left   : 10px;
+	padding-bottom : 2px;
+	margin-left    : 0px;
+	margin-right   : 0px;
+	margin-top     : 2px;
+	margin-bottom  : 2px;
+	border: 1px solid #CCCCCC;
+}
+TR.memlist {
+   background-color: #f0f0f0; 
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword       { color: #008000 }
+SPAN.keywordtype   { color: #604020 }
+SPAN.keywordflow   { color: #e08000 }
+SPAN.comment       { color: #800000 }
+SPAN.preprocessor  { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral   { color: #008080 }
+.mdTable {
+	border: 1px solid #868686;
+	background-color: #F4F4FB;
+}
+.mdRow {
+	padding: 8px 10px;
+}
+.mdescLeft {
+       padding: 0px 8px 4px 8px;
+	font-size: 80%;
+	font-style: italic;
+	background-color: #FAFAFA;
+	border-top: 1px none #E0E0E0;
+	border-right: 1px none #E0E0E0;
+	border-bottom: 1px none #E0E0E0;
+	border-left: 1px none #E0E0E0;
+	margin: 0px;
+}
+.mdescRight {
+       padding: 0px 8px 4px 8px;
+	font-size: 80%;
+	font-style: italic;
+	background-color: #FAFAFA;
+	border-top: 1px none #E0E0E0;
+	border-right: 1px none #E0E0E0;
+	border-bottom: 1px none #E0E0E0;
+	border-left: 1px none #E0E0E0;
+	margin: 0px;
+}
+.memItemLeft {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memItemRight {
+	padding: 1px 8px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplItemLeft {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: none;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplItemRight {
+	padding: 1px 8px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: none;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.memTemplParams {
+	padding: 1px 0px 0px 8px;
+	margin: 4px;
+	border-top-width: 1px;
+	border-right-width: 1px;
+	border-bottom-width: 1px;
+	border-left-width: 1px;
+	border-top-color: #E0E0E0;
+	border-right-color: #E0E0E0;
+	border-bottom-color: #E0E0E0;
+	border-left-color: #E0E0E0;
+	border-top-style: solid;
+	border-right-style: none;
+	border-bottom-style: none;
+	border-left-style: none;
+       color: #606060;
+	background-color: #FAFAFA;
+	font-size: 80%;
+}
+.search     { color: #003399;
+              font-weight: bold;
+}
+FORM.search {
+              margin-bottom: 0px;
+              margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+               color: #000080;
+               font-weight: normal;
+               background-color: #eeeeff;
+}
+TD.tiny      { font-size: 75%;
+}
+a {
+	color: #252E78;
+}
+a:visited {
+	color: #3D2185;
+}
+.dirtab { padding: 4px;
+          border-collapse: collapse;
+          border: 1px solid #b0b0b0;
+}
+TH.dirtab { background: #eeeeff;
+            font-weight: bold;
+}
+HR { height: 1px;
+     border: none;
+     border-top: 1px solid black;
+}
+
+/* 
+ * LLVM Modifications.
+ * Note: Everything above here is generated with "doxygen -w htlm" command. See
+ * "doxygen --help" for details. What follows are CSS overrides for LLVM 
+ * specific formatting. We want to keep the above so it can be replaced with
+ * subsequent doxygen upgrades.
+ */
+
+.footer {
+        font-size: 80%;
+        font-weight: bold;
+        text-align: center;
+        vertical-align: middle;
+}
+.title {
+  font-size: 25pt; 
+  color: black; background: url("http://llvm.org/img/lines.gif");
+  font-weight: bold;
+  border-width: 1px;
+  border-style: solid none solid none;
+  text-align: center;
+  vertical-align: middle;
+  padding-left: 8pt;
+  padding-top: 1px;
+  padding-bottom: 2px
+}
+A:link {
+        cursor: pointer;
+        text-decoration: none;
+        font-weight: bolder;
+}
+A:visited {
+        cursor: pointer;
+        text-decoration: underline;
+        font-weight: bolder;
+}
+A:hover {
+        cursor: pointer;
+        text-decoration: underline;
+        font-weight: bolder;
+}
+A:active {
+        cursor: pointer;
+        text-decoration: underline;
+        font-weight: bolder;
+        font-style: italic;
+}
+H1 {
+ text-align: center;
+ font-size: 140%;
+ font-weight: bold;
+}
+H2 {
+ font-size: 120%;
+ font-style: italic;
+}
+H3 {
+ font-size: 100%;
+}
+
+H2, H3 {
+  border-bottom: 2px solid;
+  margin-top: 2em;
+}
+
+A.qindex {}
+A.qindexRef {}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+
+div.memitem {
+  border: 1px solid #999999;
+  margin-top: 1.0em;
+  margin-bottom: 1.0em;
+  -webkit-border-radius: 0.5em;
+  -webkit-box-shadow: 3px 3px 6px #777777;
+  -moz-border-radius: 0.5em;
+  -moz-box-shadow: black 3px 3px 3px;
+}
+
+div.memproto {
+  background-color: #E3E4E5;
+  padding: 0.25em 0.5em;
+  -webkit-border-top-left-radius: 0.5em;
+  -webkit-border-top-right-radius: 0.5em;
+  -moz-border-radius-topleft: 0.5em;
+  -moz-border-radius-topright: 0.5em;
+}
+
+div.memdoc {
+  padding-left: 1em;
+  padding-right: 1em;
+}

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.footer
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.footer?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.footer (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.footer Tue Jan 13 16:55:20 2015
@@ -0,0 +1,10 @@
+<hr>
+<p class="footer">
+Generated on $datetime for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+$doxygenversion</a>.</p>
+
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.header
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.header?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.header (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.header Tue Jan 13 16:55:20 2015
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: $title</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.intro
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.intro?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen.intro (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen.intro Tue Jan 13 16:55:20 2015
@@ -0,0 +1,15 @@
+/// @mainpage clang
+///
+/// @section main_intro Introduction
+/// Welcome to the clang project.
+///
+/// This documentation describes the @b internal software that makes 
+/// up clang, not the @b external use of clang. There are no instructions
+/// here on how to use clang, only the APIs that make up the software. For 
+/// usage instructions, please see the programmer's guide or reference 
+/// manual.
+///
+/// @section main_caveat Caveat 
+/// This documentation is generated directly from the source code with doxygen. 
+/// Since clang is constantly under active development, what you're about to
+/// read is out of date!

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.tar
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen.tar?rev=225843&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.5.1/tools/clang/docs/doxygen.tar
------------------------------------------------------------------------------
    svn:mime-type = application/x-tar

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/doxygen_objdb_6852.tmp
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/doxygen_objdb_6852.tmp?rev=225843&view=auto
==============================================================================
    (empty)

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABIInfo_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABIInfo_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABIInfo_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABIInfo_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: ABIInfo.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ABIInfo.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ABIInfo_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===----- ABIInfo.h - ABI information access & encapsulation ---*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#ifndef CLANG_CODEGEN_ABIINFO_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_CODEGEN_ABIINFO_H</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "llvm/IR/Type.h"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "llvm/IR/CallingConv.h"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>   <span class="keyword">class </span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>   <span class="keyword">class </span>LLVMContext;</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>   <span class="keyword">class </span>DataLayout;</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> }</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keyword">class </span>ASTContext;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keyword">class </span>TargetInfo;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keyword">class </span>CGCXXABI;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <span class="keyword">class </span>CGFunctionInfo;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keyword">class </span>CodeGenFunction;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="keyword">class </span>CodeGenTypes;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   }</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="comment">// FIXME: All of this stuff should be part of the target interface</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="comment">// somehow. It is currently here because it is not clear how to factor</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="comment">// the targets to support this, since the Targets currently live in a</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="comment">// layer below types n'stuff.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// ABIInfo - Target specific hooks for defining how a type should be</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  /// passed or returned from functions.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classclang_1_1ABIInfo.html">   42</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1ABIInfo.html">ABIInfo</a> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classclang_1_1ABIInfo.html#a9ae309bf0d70073bb48d68d96a7573b1">   44</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGen::CodeGenTypes</a> &<a class="code" href="classclang_1_1ABIInfo.html#a9ae309bf0d70073bb48d68d96a7573b1">CGT</a>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1ABIInfo.html#a09c1603d7f8da8207ef861515ac93c8e">   46</a></span>     <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">llvm::CallingConv::ID</a> <a class="code" href="classclang_1_1ABIInfo.html#a09c1603d7f8da8207ef861515ac93c8e">RuntimeCC</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1ABIInfo.html#ac74fb43d1e5e8993d125be385becfb75">   48</a></span>     <a class="code" href="classclang_1_1ABIInfo.html#ac74fb43d1e5e8993d125be385becfb75">ABIInfo</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGen::CodeGenTypes</a> &cgt)</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>       : <a class="code" href="classclang_1_1ABIInfo.html#a9ae309bf0d70073bb48d68d96a7573b1">CGT</a>(cgt), <a class="code" href="classclang_1_1ABIInfo.html#a09c1603d7f8da8207ef861515ac93c8e">RuntimeCC</a>(llvm::<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>::C) {}</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keyword">virtual</span> <a class="code" href="classclang_1_1ABIInfo.html#a61c651209f5d57410b578f4a9488d84b">~ABIInfo</a>();</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CodeGen::CGCXXABI</a> &<a class="code" href="classclang_1_1ABIInfo.html#a3ec49664d75eb9a4307a44f32994d57f">getCXXABI</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="classclang_1_1ABIInfo.html#a8c72710cbed74207b17f6b2def7488e1">getContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     llvm::LLVMContext &<a class="code" href="classclang_1_1ABIInfo.html#aa87463d594d3607049030364901ea896">getVMContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keyword">const</span> llvm::DataLayout &<a class="code" href="classclang_1_1ABIInfo.html#acbb9bc5f50331f146570c260cb8a67d7">getDataLayout</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &<a class="code" href="classclang_1_1ABIInfo.html#a9a90a77e40327075640bce4e6c82e5de">getTarget</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">    /// Return the calling convention to use for system runtime</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">    /// functions.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1ABIInfo.html#a89c71379d1fa133f01da9daae5ab678d">   61</a></span> <span class="comment"></span>    <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">llvm::CallingConv::ID</a> <a class="code" href="classclang_1_1ABIInfo.html#a89c71379d1fa133f01da9daae5ab678d">getRuntimeCC</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ABIInfo.html#a09c1603d7f8da8207ef861515ac93c8e">RuntimeCC</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     }</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ABIInfo.html#a1a678fd0e4f1b7bf7b37a39474c9a854">computeInfo</a>(<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CodeGen::CGFunctionInfo</a> &FI) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">    /// EmitVAArg - Emit the target dependent code to load a value of</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">    /// \arg Ty from the va_list pointed to by \arg VAListAddr.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="comment">// FIXME: This is a gaping layering violation if we wanted to drop</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="comment">// the ABI information any lower than CodeGen. Of course, for</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="comment">// VAArg handling it has to be at this level; there is no way to</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="comment">// abstract this out.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1ABIInfo.html#a43ce79e3693f78ae212b96e2e09bade9">EmitVAArg</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VAListAddr, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   };</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> }  <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:02 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABI_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABI_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABI_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ABI_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,284 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: ABI.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_84b4cac0f3db7adb733be733ea7bc48e.html">Basic</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ABI.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ABI_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===----- ABI.h - ABI related declarations ---------------------*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span><span class="comment"></span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">/// \file</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">/// \brief Enums/classes describing ABI related information about constructors,</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">/// destructors and thunks.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment"></span><span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#ifndef CLANG_BASIC_ABI_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_BASIC_ABI_H</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "llvm/Support/DataTypes.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">/// \brief C++ constructor types.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d">   24</a></span> <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973">   25</a></span>     <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>,          <span class="comment">///< Complete object ctor</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be">   26</a></span> <span class="comment"></span>    <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>,              <span class="comment">///< Base object ctor</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da229aa2e269952674427364c4eaee27c8">   27</a></span> <span class="comment"></span>    <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da229aa2e269952674427364c4eaee27c8" title="Complete object allocating ctor.">Ctor_CompleteAllocating</a> <span class="comment">///< Complete object allocating ctor</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment"></span>};</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">/// \brief C++ destructor types.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157">   31</a></span> <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3">   32</a></span>     <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>, <span class="comment">///< Deleting dtor</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c">   33</a></span> <span class="comment"></span>    <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>, <span class="comment">///< Complete object dtor</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3">   34</a></span> <span class="comment"></span>    <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>      <span class="comment">///< Base object dtor</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment"></span>};</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/// \brief A return adjustment.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html">   38</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// \brief The non-virtual adjustment from the derived object to its</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// nearest virtual base.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9">   41</a></span> <span class="comment"></span>  int64_t <a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">  /// \brief Holds the ABI-specific information about the virtual return</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">  /// adjustment, if needed.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html">   45</a></span> <span class="comment"></span>  <span class="keyword">union </span><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual return adjustment, if needed.">VirtualAdjustment</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="comment">// Itanium ABI</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">struct </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">      /// \brief The offset (in bytes), relative to the address point</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">      /// of the virtual base class offset.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ad684fa5137bbd2d98e3d9be6c59d0577">   50</a></span> <span class="comment"></span>      int64_t <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ad684fa5137bbd2d98e3d9be6c59d0577" title="The offset (in bytes), relative to the address point of the virtual base class offset.">VBaseOffsetOffset</a>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     } <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a95bad5ee9fe2be2dee53cd22138df427">Itanium</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="comment">// Microsoft ABI</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keyword">struct </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">      /// \brief The offset (in bytes) of the vbptr, relative to the beginning</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">      /// of the derived class.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a9406223ccb8b9480f8a5c107a10430f8">   57</a></span> <span class="comment"></span>      uint32_t <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a9406223ccb8b9480f8a5c107a10430f8" title="The offset (in bytes) of the vbptr, relative to the beginning of the derived class.">VBPtrOffset</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">      /// \brief Index of the virtual base in the vbtable.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#afd42eeb41b1e3e483786ede3b65d9893">   60</a></span> <span class="comment"></span>      uint32_t <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#afd42eeb41b1e3e483786ede3b65d9893" title="Index of the virtual base in the vbtable.">VBIndex</a>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     } <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ac1e02a18acb8a1e63948a2fc723f7dc6">Microsoft</a>;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ad5085eade0d837ca9dff5f7a2b6eb518">   63</a></span>     <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ad5085eade0d837ca9dff5f7a2b6eb518">VirtualAdjustment</a>() {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       memset(<span class="keyword">this</span>, 0, <span class="keyword">sizeof</span>(*<span class="keyword">this</span>));</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     }</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a1ab8252c38e1c5e08ab23c1eaa300212">   67</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a1ab8252c38e1c5e08ab23c1eaa300212">Equals</a>(<span class="keyword">const</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual return adjustment, if needed.">VirtualAdjustment</a> &Other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       <span class="keywordflow">return</span> memcmp(<span class="keyword">this</span>, &Other, <span class="keyword">sizeof</span>(Other)) == 0;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     }</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a7da1f56a363101d116db2369031871bb">   71</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a7da1f56a363101d116db2369031871bb">isEmpty</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual return adjustment, if needed.">VirtualAdjustment</a> Zero;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="keywordflow">return</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a1ab8252c38e1c5e08ab23c1eaa300212">Equals</a>(Zero);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     }</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a863e0f5d159406c37413bbe0c1af51e3">   76</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a863e0f5d159406c37413bbe0c1af51e3">Less</a>(<span class="keyword">const</span> <a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual return adjustment, if needed.">VirtualAdjustment</a> &RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       <span class="keywordflow">return</span> memcmp(<span class="keyword">this</span>, &RHS, <span class="keyword">sizeof</span>(RHS)) < 0;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     }</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   } <a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#ab1c243b2165f37c015e7cb9a1cfa8d9e">   81</a></span>   <a class="code" href="structclang_1_1ReturnAdjustment.html#ab1c243b2165f37c015e7cb9a1cfa8d9e">ReturnAdjustment</a>() : <a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>(0) {}</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#a028101f037c221640cfea6e6efe22fbc">   83</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ReturnAdjustment.html#a028101f037c221640cfea6e6efe22fbc">isEmpty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && <a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>.<a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a7da1f56a363101d116db2369031871bb">isEmpty</a>(); }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#a4aca887cb134ee6029a62b1ca41ec847">   85</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ReturnAdjustment.html#a4aca887cb134ee6029a62b1ca41ec847">operator==</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &LHS, </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>                          <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> == RHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && LHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>.<a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a1ab8252c38e1c5e08ab23c1eaa300212">Equals</a>(RHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   }</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#a6ab064b80e0caf6becbeb06ef376eabe">   90</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ReturnAdjustment.html#a6ab064b80e0caf6becbeb06ef376eabe">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &LHS, <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   }</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="structclang_1_1ReturnAdjustment.html#adf0f3ce281b8f14b1e59d880d052c8f5">   94</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ReturnAdjustment.html#adf0f3ce281b8f14b1e59d880d052c8f5">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &LHS,</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>                         <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordflow">if</span> (LHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> < RHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>)</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> == RHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && LHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>.<a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a863e0f5d159406c37413bbe0c1af51e3">Less</a>(RHS.<a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> };</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">/// \brief A \c this pointer adjustment.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html">  104</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// \brief The non-virtual adjustment from the derived object to its</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// nearest virtual base.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4">  107</a></span> <span class="comment"></span>  int64_t <a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// \brief Holds the ABI-specific information about the virtual this</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">  /// adjustment, if needed.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html">  111</a></span> <span class="comment"></span>  <span class="keyword">union </span><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual this adjustment, if needed.">VirtualAdjustment</a> {</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="comment">// Itanium ABI</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keyword">struct </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">      /// \brief The offset (in bytes), relative to the address point,</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">      /// of the virtual call offset.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#ab7a13dcc3e35c04de684fe86d1b8c1ac">  116</a></span> <span class="comment"></span>      int64_t <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#ab7a13dcc3e35c04de684fe86d1b8c1ac" title="The offset (in bytes), relative to the address point, of the virtual call offset.">VCallOffsetOffset</a>;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     } <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#acba5b216c211051275b0649e6d514e1c">Itanium</a>;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keyword">struct </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">      /// \brief The offset of the vtordisp (in bytes), relative to the ECX.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a85a1ecea995fc6902e9404fd6723701b">  121</a></span> <span class="comment"></span>      int32_t <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a85a1ecea995fc6902e9404fd6723701b" title="The offset of the vtordisp (in bytes), relative to the ECX.">VtordispOffset</a>;</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment"></span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">      /// \brief The offset of the vbptr of the derived class (in bytes),</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">      /// relative to the ECX after vtordisp adjustment.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#ad7cfdf660657ec6d8f500b595f75c1c4">  125</a></span> <span class="comment"></span>      int32_t <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#ad7cfdf660657ec6d8f500b595f75c1c4" title="The offset of the vbptr of the derived class (in bytes), relative to the ECX after vtordisp adjustmen...">VBPtrOffset</a>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment"></span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">      /// \brief The offset (in bytes) of the vbase offset in the vbtable.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a9e3c1f72cab2c4ba2ee30bd609f16c63">  128</a></span> <span class="comment"></span>      int32_t <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a9e3c1f72cab2c4ba2ee30bd609f16c63" title="The offset (in bytes) of the vbase offset in the vbtable.">VBOffsetOffset</a>;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     } <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a7a62de1edcce6d2e90115bafb8e3d761">Microsoft</a>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a5a5158810f9795e180c5557dc77eb30f">  131</a></span>     <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a5a5158810f9795e180c5557dc77eb30f">VirtualAdjustment</a>() {</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       memset(<span class="keyword">this</span>, 0, <span class="keyword">sizeof</span>(*<span class="keyword">this</span>));</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     }</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a0511cf43a7598965c5b82ba56acd7dd1">  135</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a0511cf43a7598965c5b82ba56acd7dd1">Equals</a>(<span class="keyword">const</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual this adjustment, if needed.">VirtualAdjustment</a> &Other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="keywordflow">return</span> memcmp(<span class="keyword">this</span>, &Other, <span class="keyword">sizeof</span>(Other)) == 0;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     }</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#aab213f3ee3793a60705ed94a4a47b45c">  139</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#aab213f3ee3793a60705ed94a4a47b45c">isEmpty</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual this adjustment, if needed.">VirtualAdjustment</a> Zero;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       <span class="keywordflow">return</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a0511cf43a7598965c5b82ba56acd7dd1">Equals</a>(Zero);</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     }</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a1722e3092efe468caff8f0da30ba8869">  144</a></span>     <span class="keywordtype">bool</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a1722e3092efe468caff8f0da30ba8869">Less</a>(<span class="keyword">const</span> <a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html" title="Holds the ABI-specific information about the virtual this adjustment, if needed.">VirtualAdjustment</a> &RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       <span class="keywordflow">return</span> memcmp(<span class="keyword">this</span>, &RHS, <span class="keyword">sizeof</span>(RHS)) < 0;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     }</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   } <a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   </div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#a0e7a4fc1c00f8f44828c6a1fdacf0434">  149</a></span>   <a class="code" href="structclang_1_1ThisAdjustment.html#a0e7a4fc1c00f8f44828c6a1fdacf0434">ThisAdjustment</a>() : <a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>(0) { }</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#ab9004878c8de33ac563ac2ad487a5882">  151</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThisAdjustment.html#ab9004878c8de33ac563ac2ad487a5882">isEmpty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && <a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>.<a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#aab213f3ee3793a60705ed94a4a47b45c">isEmpty</a>(); }</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#a06c7de0e7798c5cdb702308b6706536f">  153</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThisAdjustment.html#a06c7de0e7798c5cdb702308b6706536f">operator==</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &LHS, </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>                          <span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> == RHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && LHS.<a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>.<a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a0511cf43a7598965c5b82ba56acd7dd1">Equals</a>(RHS.<a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   }</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#a898f6ae7f853cb7208c429df540543c1">  158</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThisAdjustment.html#a898f6ae7f853cb7208c429df540543c1">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &LHS, <span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   </div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="structclang_1_1ThisAdjustment.html#a043581d004ae145b81592f50d117b3b7">  162</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThisAdjustment.html#a043581d004ae145b81592f50d117b3b7">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &LHS,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                         <span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &RHS) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keywordflow">if</span> (LHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> < RHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>)</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> == RHS.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a> && LHS.<a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>.<a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#a1722e3092efe468caff8f0da30ba8869">Less</a>(RHS.<a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>);</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> };</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="keyword">class </span>CXXMethodDecl;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment"></span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">/// \brief The \c this pointer adjustment as well as an optional return</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">/// adjustment for a thunk.</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html">  175</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1ThunkInfo.html" title="The this pointer adjustment as well as an optional return adjustment for a thunk.">ThunkInfo</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">  /// \brief The \c this pointer adjustment.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86">  177</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> <a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86" title="The this pointer adjustment.">This</a>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">  /// \brief The return adjustment.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b">  180</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> <a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b" title="The return adjustment.">Return</a>;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment"></span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  /// \brief Holds a pointer to the overridden method this thunk is for,</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// if needed by the ABI to distinguish different thunks with equal</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  /// adjustments. Otherwise, null.</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// CAUTION: In the unlikely event you need to sort ThunkInfos, consider using</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// an ABI-specific comparator.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961">  187</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *<a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#ac7f3fdb6bbc552193454c55452e144ec">  189</a></span>   <a class="code" href="structclang_1_1ThunkInfo.html#ac7f3fdb6bbc552193454c55452e144ec">ThunkInfo</a>() : <a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a>(0) { }</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#ab193887929e058119215c4fdc989b891">  191</a></span>   <a class="code" href="structclang_1_1ThunkInfo.html#ac7f3fdb6bbc552193454c55452e144ec">ThunkInfo</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &<a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86" title="The this pointer adjustment.">This</a>, <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &<a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b" title="The return adjustment.">Return</a>,</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>             <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *<a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a> = 0)</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       : This(This), Return(Return), <a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a>(<a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a>) {}</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#ac633d701e4b23898314f806e432f234a">  195</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThunkInfo.html#ac633d701e4b23898314f806e432f234a">operator==</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ThunkInfo.html" title="The this pointer adjustment as well as an optional return adjustment for a thunk.">ThunkInfo</a> &LHS, <span class="keyword">const</span> <a class="code" href="structclang_1_1ThunkInfo.html" title="The this pointer adjustment as well as an optional return adjustment for a thunk.">ThunkInfo</a> &RHS) {</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86" title="The this pointer adjustment.">This</a> == RHS.<a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86" title="The this pointer adjustment.">This</a> && LHS.<a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b" title="The return adjustment.">Return</a> == RHS.<a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b" title="The return adjustment.">Return</a> &&</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>            LHS.<a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a> == RHS.<a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a>;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   }</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="structclang_1_1ThunkInfo.html#afef8974339043cfea7223bc1e4c4d424">  200</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ThunkInfo.html#afef8974339043cfea7223bc1e4c4d424">isEmpty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structclang_1_1ThunkInfo.html#a451bcaeaeaeecf9209206e22cc90bf86" title="The this pointer adjustment.">This</a>.<a class="code" href="structclang_1_1ThisAdjustment.html#ab9004878c8de33ac563ac2ad487a5882">isEmpty</a>() && <a class="code" href="structclang_1_1ThunkInfo.html#ac3bb496fa15ba024b92505ef8385c32b" title="The return adjustment.">Return</a>.<a class="code" href="structclang_1_1ReturnAdjustment.html#a028101f037c221640cfea6e6efe22fbc">isEmpty</a>() && <a class="code" href="structclang_1_1ThunkInfo.html#a7083baf10c87b85794c503595a2bc961" title="Holds a pointer to the overridden method this thunk is for, if needed by the ABI to distinguish diffe...">Method</a> == 0; }</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> };  </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="preprocessor">#endif // CLANG_BASIC_ABI_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:02 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: APSIntType.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_fd0691f76a19cc33074025cb3a574e66.html">StaticAnalyzer</a></li><li class="navelem"><a class="el" href="dir_8c061bf4f1cf580e717ceaf4321c4465.html">Core</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">APSIntType.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="APSIntType_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- APSIntType.cpp - Simple record of the type of APSInts ------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#include "<a class="code" href="APSIntType_8h.html">clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h</a>"</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="keyword">using namespace </span>ento;</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3ce">APSIntType::RangeTestResultKind</a></div>
+<div class="line"><a name="l00016"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a3e520b924544588b176435c7b5e24ed6">   16</a></span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a3e520b924544588b176435c7b5e24ed6">APSIntType::testInRange</a>(<span class="keyword">const</span> llvm::APSInt &<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>,</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>                         <span class="keywordtype">bool</span> AllowSignConversions)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>   <span class="comment">// Negative numbers cannot be losslessly converted to unsigned type.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>   <span class="keywordflow">if</span> (IsUnsigned && !AllowSignConversions &&</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>       Value.isSigned() && Value.isNegative())</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea234c377d0333bf2f0ac9a0146687e2ba" title="Value is less than the minimum representable value.">RTR_Below</a>;</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keywordtype">unsigned</span> MinBits;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keywordflow">if</span> (AllowSignConversions) {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>     <span class="keywordflow">if</span> (Value.isSigned() && !IsUnsigned)</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>       MinBits = Value.getMinSignedBits();</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>       MinBits = Value.getActiveBits();</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <span class="comment">// Signed integers can be converted to signed integers of the same width</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     <span class="comment">// or (if positive) unsigned integers with one fewer bit.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="comment">// Unsigned integers can be converted to unsigned integers of the same width</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     <span class="comment">// or signed integers with one more bit.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     <span class="keywordflow">if</span> (Value.isSigned())</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>       MinBits = Value.getMinSignedBits() - IsUnsigned;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>       MinBits = Value.getActiveBits() + !IsUnsigned;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   }</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">if</span> (MinBits <= BitWidth)</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea121b09bda384f09f6a1cc36b2ac14bd5" title="Value is representable using this type.">RTR_Within</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">if</span> (Value.isSigned() && Value.isNegative())</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea234c377d0333bf2f0ac9a0146687e2ba" title="Value is less than the minimum representable value.">RTR_Below</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea32b9c506860c61e0bd3dfa8d3c598472" title="Value is greater than the maximum representable value.">RTR_Above</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:03 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: APSIntType.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_fd0691f76a19cc33074025cb3a574e66.html">StaticAnalyzer</a></li><li class="navelem"><a class="el" href="dir_8c061bf4f1cf580e717ceaf4321c4465.html">Core</a></li><li class="navelem"><a class="el" href="dir_9dfcb8f019bd52e3ad37a9c9467cc9bb.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">APSIntType.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="APSIntType_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/StaticAnalyzer/Core/Release+Asserts/APSIntType.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/StaticAnalyzer/Core/Release+Asserts/APSIntType.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  APSIntType.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/StaticAnalyzer/Core/../../../include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> /home/tstellar/llvm/tools/clang/lib/StaticAnalyzer/Core/../../../include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h:</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:03 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APSIntType_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: APSIntType.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_70579d56c0ce0f64b5ed66d6a11cf1c7.html">StaticAnalyzer</a></li><li class="navelem"><a class="el" href="dir_734a8767d7ca7d508f91a2e813224558.html">Core</a></li><li class="navelem"><a class="el" href="dir_bee9744499c06630fee7a102afddbe3a.html">PathSensitive</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">APSIntType.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="APSIntType_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//== APSIntType.h - Simple record of the type of APSInts --------*- C++ -*--==//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#ifndef LLVM_CLANG_SA_CORE_APSINTTYPE_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SA_CORE_APSINTTYPE_H</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include "llvm/ADT/APSInt.h"</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="keyword">namespace </span>ento {</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">/// \brief A record of the "type" of an APSInt, used for conversions.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html">   19</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ento_1_1APSIntType.html" title="A record of the "type" of an APSInt, used for conversions.">APSIntType</a> {</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>   uint32_t BitWidth;</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>   <span class="keywordtype">bool</span> IsUnsigned;</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1bd4afa55690f5f132c21c805226e130">   24</a></span>   <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1bd4afa55690f5f132c21c805226e130">APSIntType</a>(uint32_t Width, <span class="keywordtype">bool</span> Unsigned)</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>     : BitWidth(Width), IsUnsigned(Unsigned) {}</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#aea29658dc4e372e98c75e704dc477d82">   27</a></span>   <span class="comment">/* implicit */</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1bd4afa55690f5f132c21c805226e130">APSIntType</a>(<span class="keyword">const</span> llvm::APSInt &<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>)</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     : BitWidth(Value.<a class="code" href="classclang_1_1ento_1_1APSIntType.html#a635757c3fef0d1e044ce8741c44b1389">getBitWidth</a>()), IsUnsigned(Value.<a class="code" href="classclang_1_1ento_1_1APSIntType.html#acbbb19ae78f1ded6b3a65e19826bcc91">isUnsigned</a>()) {}</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a635757c3fef0d1e044ce8741c44b1389">   30</a></span>   uint32_t <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a635757c3fef0d1e044ce8741c44b1389">getBitWidth</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BitWidth; }</div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#acbbb19ae78f1ded6b3a65e19826bcc91">   31</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#acbbb19ae78f1ded6b3a65e19826bcc91">isUnsigned</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsUnsigned; }</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">  /// \brief Convert a given APSInt, in place, to match this type.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">  /// This behaves like a C cast: converting 255u8 (0xFF) to s16 gives</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">  /// 255 (0x00FF), and converting -1s8 (0xFF) to u16 gives 65535 (0xFFFF).</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1e2839dc46b0ac862536a51ff3578176">   37</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1e2839dc46b0ac862536a51ff3578176" title="Convert a given APSInt, in place, to match this type.">apply</a>(llvm::APSInt &<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="comment">// Note the order here. We extend first to preserve the sign, if this value</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="comment">// is signed, /then/ match the signedness of the result type.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     Value = Value.extOrTrunc(BitWidth);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     Value.setIsUnsigned(IsUnsigned);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">  /// Convert and return a new APSInt with the given value, but this</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  /// type's bit width and signedness.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">  /// \see apply</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#aac85f811f94ac11147a39e4752b94723">   48</a></span> <span class="comment"></span>  llvm::APSInt <a class="code" href="classclang_1_1ento_1_1APSIntType.html#aac85f811f94ac11147a39e4752b94723">convert</a>(<span class="keyword">const</span> llvm::APSInt &<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>) <span class="keyword">const</span> LLVM_READONLY {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     llvm::APSInt Result(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.isUnsigned());</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a1e2839dc46b0ac862536a51ff3578176" title="Convert a given APSInt, in place, to match this type.">apply</a>(Result);</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  /// Returns an all-zero value for this type.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a130cb33224223a589b9292b16cc6c5b6">   55</a></span> <span class="comment"></span>  llvm::APSInt <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a130cb33224223a589b9292b16cc6c5b6" title="Returns an all-zero value for this type.">getZeroValue</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">return</span> llvm::APSInt(BitWidth, IsUnsigned);</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   }</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">  /// Returns the minimum value for this type.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a8bece4a7bf5de062a510626b977cad76">   60</a></span> <span class="comment"></span>  llvm::APSInt <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a8bece4a7bf5de062a510626b977cad76" title="Returns the minimum value for this type.">getMinValue</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">return</span> llvm::APSInt::getMinValue(BitWidth, IsUnsigned);</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   }</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">  /// Returns the maximum value for this type.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a6ede5cc6971c51b4ff6ffa6042b8f995">   65</a></span> <span class="comment"></span>  llvm::APSInt <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a6ede5cc6971c51b4ff6ffa6042b8f995" title="Returns the maximum value for this type.">getMaxValue</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">return</span> llvm::APSInt::getMaxValue(BitWidth, IsUnsigned);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   }</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#add3875675479b8c3966ae456118506fc">   69</a></span>   llvm::APSInt <a class="code" href="classclang_1_1ento_1_1APSIntType.html#add3875675479b8c3966ae456118506fc">getValue</a>(uint64_t RawValue) <span class="keyword">const</span> LLVM_READONLY {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">return</span> (llvm::APSInt(BitWidth, IsUnsigned) = RawValue);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   }</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment"></span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// Used to classify whether a value is representable using this type.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// \see testInRange</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3ce">   76</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3ce">RangeTestResultKind</a> {</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea234c377d0333bf2f0ac9a0146687e2ba">   77</a></span>     <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea234c377d0333bf2f0ac9a0146687e2ba" title="Value is less than the minimum representable value.">RTR_Below</a> = -1, <span class="comment">///< Value is less than the minimum representable value.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea121b09bda384f09f6a1cc36b2ac14bd5">   78</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea121b09bda384f09f6a1cc36b2ac14bd5" title="Value is representable using this type.">RTR_Within</a> = 0, <span class="comment">///< Value is representable using this type.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea32b9c506860c61e0bd3dfa8d3c598472">   79</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3cea32b9c506860c61e0bd3dfa8d3c598472" title="Value is greater than the maximum representable value.">RTR_Above</a> = 1   <span class="comment">///< Value is greater than the maximum representable value.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment"></span>  };</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// Tests whether a given value is losslessly representable using this type.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// \param Val The value to test.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// \param AllowMixedSign Whether or not to allow signedness conversions.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">  ///                       This determines whether -1s8 is considered in range</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">  ///                       for 'unsigned char' (u8).</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment"></span>  <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a15322e1db0d9c5284a6f7b27cbbbe3ce">RangeTestResultKind</a> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a3e520b924544588b176435c7b5e24ed6">testInRange</a>(<span class="keyword">const</span> llvm::APSInt &Val,</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>                                   <span class="keywordtype">bool</span> AllowMixedSign) <span class="keyword">const</span> LLVM_READONLY;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   </div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#acfdaa4edf84216122eb39a549bc4f806">   91</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#acfdaa4edf84216122eb39a549bc4f806">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html" title="A record of the "type" of an APSInt, used for conversions.">APSIntType</a> &Other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">return</span> BitWidth == Other.BitWidth && IsUnsigned == Other.IsUnsigned;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  /// \brief Provide an ordering for finding a common conversion type.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  /// Unsigned integers are considered to be better conversion types than</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">  /// signed integers of the same width.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1ento_1_1APSIntType.html#a6a0d6102a9b552812932a7a6da2bd89c">   99</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html#a6a0d6102a9b552812932a7a6da2bd89c" title="Provide an ordering for finding a common conversion type.">operator<</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ento_1_1APSIntType.html" title="A record of the "type" of an APSInt, used for conversions.">APSIntType</a> &Other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">if</span> (BitWidth < Other.BitWidth)</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">if</span> (BitWidth > Other.BitWidth)</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordflow">if</span> (!IsUnsigned && Other.IsUnsigned)</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   }</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> };</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     </div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> } <span class="comment">// end ento namespace</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> } <span class="comment">// end clang namespace</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:03 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APValue_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APValue_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APValue_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/APValue_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,721 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: APValue.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_d3636efc55c6148efe36c59ffa01cb41.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">APValue.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="APValue_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- APValue.cpp - Union class for APFloat/APSInt/Complex -------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file implements the APValue class.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="APValue_8h.html">clang/AST/APValue.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CharUnits_8h.html">clang/AST/CharUnits.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Diagnostic_8h.html" title="Defines the Diagnostic-related interfaces.">clang/Basic/Diagnostic.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/ADT/SmallString.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/Support/ErrorHandling.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">struct </span>LVBase {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     llvm::PointerIntPair<APValue::LValueBase, 1, bool> BaseAndIsOnePastTheEnd;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordtype">unsigned</span> PathLength;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>     <span class="keywordtype">unsigned</span> CallIndex;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   };</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html">   35</a></span> <span class="keyword">struct </span><a class="code" href="structAPValue_1_1LV.html">APValue::LV</a> : LVBase {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#acb4a82d2157b5f3ed612953bd1f4c773">   36</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="structAPValue_1_1LV.html#acb4a82d2157b5f3ed612953bd1f4c773">InlinePathSpace</a> =</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>       (MaxSize - <span class="keyword">sizeof</span>(LVBase)) / <span class="keyword">sizeof</span>(<a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a>);</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// Path - The sequence of base classes, fields and array indices to follow to</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// walk from Base to the subobject. When performing GCC-style folding, there</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  /// may not be such a path.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"></span>  <span class="keyword">union </span>{</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a0d68158a9c64dd1c8bb7ad2bd44bc9d3">   43</a></span>     <a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a> <a class="code" href="structAPValue_1_1LV.html#a0d68158a9c64dd1c8bb7ad2bd44bc9d3">Path</a>[<a class="code" href="structAPValue_1_1LV.html#acb4a82d2157b5f3ed612953bd1f4c773">InlinePathSpace</a>];</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">   44</a></span>     <a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a> *<a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">PathPtr</a>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   };</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a773060043cdec609f8c4238cf6882d50">   47</a></span>   <a class="code" href="structAPValue_1_1LV.html#a773060043cdec609f8c4238cf6882d50">LV</a>() { PathLength = (<a class="code" href="classunsigned.html">unsigned</a>)-1; }</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#ad2128a832bff8c48d0ffb6eeb5e8df20">   48</a></span>   <a class="code" href="structAPValue_1_1LV.html#ad2128a832bff8c48d0ffb6eeb5e8df20">~LV</a>() { <a class="code" href="structAPValue_1_1LV.html#a4ac952b64a6f90cc4a6da7240b4f7366">resizePath</a>(0); }</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a4ac952b64a6f90cc4a6da7240b4f7366">   50</a></span>   <span class="keywordtype">void</span> <a class="code" href="structAPValue_1_1LV.html#a4ac952b64a6f90cc4a6da7240b4f7366">resizePath</a>(<span class="keywordtype">unsigned</span> Length) {</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">if</span> (Length == PathLength)</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="keywordflow">if</span> (<a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">hasPathPtr</a>())</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>       <span class="keyword">delete</span> [] <a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">PathPtr</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     PathLength = Length;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">if</span> (<a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">hasPathPtr</a>())</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>       <a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">PathPtr</a> = <span class="keyword">new</span> <a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a>[Length];</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   }</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a5711ed23cfad1aa74f05a6c88f9dfadd">   60</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structAPValue_1_1LV.html#a5711ed23cfad1aa74f05a6c88f9dfadd">hasPath</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> PathLength != (<a class="code" href="classunsigned.html">unsigned</a>)-1; }</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">   61</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">hasPathPtr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structAPValue_1_1LV.html#a5711ed23cfad1aa74f05a6c88f9dfadd">hasPath</a>() && PathLength > <a class="code" href="structAPValue_1_1LV.html#acb4a82d2157b5f3ed612953bd1f4c773">InlinePathSpace</a>; }</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a4c0f60620b8d86901ff9d4309b130357">   63</a></span>   <a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a> *<a class="code" href="structAPValue_1_1LV.html#a4c0f60620b8d86901ff9d4309b130357">getPath</a>() { <span class="keywordflow">return</span> <a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">hasPathPtr</a>() ? <a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">PathPtr</a> : <a class="code" href="structAPValue_1_1LV.html#a0d68158a9c64dd1c8bb7ad2bd44bc9d3">Path</a>; }</div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="structAPValue_1_1LV.html#a99de99786e5675919c6096787e98c950">   64</a></span>   <span class="keyword">const</span> <a class="code" href="unionclang_1_1APValue_1_1LValuePathEntry.html">LValuePathEntry</a> *<a class="code" href="structAPValue_1_1LV.html#a99de99786e5675919c6096787e98c950">getPath</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keywordflow">return</span> <a class="code" href="structAPValue_1_1LV.html#a612f1a0b051a9de8695d144a0b9025f1">hasPathPtr</a>() ? <a class="code" href="structAPValue_1_1LV.html#a9c1d51bfe37d729513ce4e42e4015e29">PathPtr</a> : <a class="code" href="structAPValue_1_1LV.html#a0d68158a9c64dd1c8bb7ad2bd44bc9d3">Path</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> };</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keyword">struct </span>MemberPointerBase {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     llvm::PointerIntPair<const ValueDecl*, 1, bool> MemberAndIsDerivedMember;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keywordtype">unsigned</span> PathLength;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   };</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> }</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html">   76</a></span> <span class="keyword">struct </span><a class="code" href="structAPValue_1_1MemberPointerData.html">APValue::MemberPointerData</a> : MemberPointerBase {</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a4d5c248753b0b7be4dd12d4879b743e5">   77</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="structAPValue_1_1MemberPointerData.html#a4d5c248753b0b7be4dd12d4879b743e5">InlinePathSpace</a> =</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>       (MaxSize - <span class="keyword">sizeof</span>(MemberPointerBase)) / <span class="keyword">sizeof</span>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>*);</div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a77dd35a767146be98271ac18929dbf74">   79</a></span>   <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="structAPValue_1_1MemberPointerData.html#a77dd35a767146be98271ac18929dbf74">PathElem</a>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keyword">union </span>{</div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a16772d6e61025740fe22ae53ad2ef231">   81</a></span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">PathElem</a> <a class="code" href="structAPValue_1_1MemberPointerData.html#a16772d6e61025740fe22ae53ad2ef231">Path</a>[<a class="code" href="structAPValue_1_1MemberPointerData.html#a4d5c248753b0b7be4dd12d4879b743e5">InlinePathSpace</a>];</div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">   82</a></span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">PathElem</a> *<a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">PathPtr</a>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   };</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#ac14bc1bad280507874e9926e09985a8d">   85</a></span>   <a class="code" href="structAPValue_1_1MemberPointerData.html#ac14bc1bad280507874e9926e09985a8d">MemberPointerData</a>() { PathLength = 0; }</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#ab42ec4c33638cef4d91f68940e005139">   86</a></span>   <a class="code" href="structAPValue_1_1MemberPointerData.html#ab42ec4c33638cef4d91f68940e005139">~MemberPointerData</a>() { <a class="code" href="structAPValue_1_1MemberPointerData.html#add06c4f1a33094d6dfdbc123355ba003">resizePath</a>(0); }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#add06c4f1a33094d6dfdbc123355ba003">   88</a></span>   <span class="keywordtype">void</span> <a class="code" href="structAPValue_1_1MemberPointerData.html#add06c4f1a33094d6dfdbc123355ba003">resizePath</a>(<span class="keywordtype">unsigned</span> Length) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">if</span> (Length == PathLength)</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">if</span> (<a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">hasPathPtr</a>())</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       <span class="keyword">delete</span> [] <a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">PathPtr</a>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     PathLength = Length;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="keywordflow">if</span> (<a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">hasPathPtr</a>())</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       <a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">PathPtr</a> = <span class="keyword">new</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">PathElem</a>[Length];</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   }</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">   98</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">hasPathPtr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> PathLength > <a class="code" href="structAPValue_1_1MemberPointerData.html#a4d5c248753b0b7be4dd12d4879b743e5">InlinePathSpace</a>; }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#ad475fa9abcc022fb437610b01eae5df5">  100</a></span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">PathElem</a> *<a class="code" href="structAPValue_1_1MemberPointerData.html#ad475fa9abcc022fb437610b01eae5df5">getPath</a>() { <span class="keywordflow">return</span> <a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">hasPathPtr</a>() ? <a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">PathPtr</a> : <a class="code" href="structAPValue_1_1MemberPointerData.html#a16772d6e61025740fe22ae53ad2ef231">Path</a>; }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="structAPValue_1_1MemberPointerData.html#a778b4327bb0ebd8178d682aac35d4ca0">  101</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">PathElem</a> *<a class="code" href="structAPValue_1_1MemberPointerData.html#a778b4327bb0ebd8178d682aac35d4ca0">getPath</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">return</span> <a class="code" href="structAPValue_1_1MemberPointerData.html#a417f61277bead082cff1f60582544274">hasPathPtr</a>() ? <a class="code" href="structAPValue_1_1MemberPointerData.html#a5624f7ddff78feffd4e1806340cc7691">PathPtr</a> : <a class="code" href="structAPValue_1_1MemberPointerData.html#a16772d6e61025740fe22ae53ad2ef231">Path</a>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> };</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">// FIXME: Reduce the malloc traffic here.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> APValue::Arr::Arr(<span class="keywordtype">unsigned</span> NumElts, <span class="keywordtype">unsigned</span> Size) :</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   Elts(new <a class="code" href="classclang_1_1APValue.html">APValue</a>[NumElts + (NumElts != Size ? 1 : 0)]),</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   NumElts(NumElts), ArrSize(Size) {}</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> APValue::Arr::~Arr() { <span class="keyword">delete</span> [] Elts; }</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> APValue::StructData::StructData(<span class="keywordtype">unsigned</span> NumBases, <span class="keywordtype">unsigned</span> NumFields) :</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   Elts(new <a class="code" href="classclang_1_1APValue.html">APValue</a>[NumBases+NumFields]),</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   NumBases(NumBases), NumFields(NumFields) {}</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> APValue::StructData::~StructData() {</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keyword">delete</span> [] Elts;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> }</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> APValue::UnionData::UnionData() : Field(0), <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>(new <a class="code" href="classclang_1_1APValue.html">APValue</a>) {}</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> APValue::UnionData::~UnionData () {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keyword">delete</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> }</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a482057e50ee93304199ec0fc1df07dc1">  125</a></span> APValue::APValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1APValue.html">APValue</a> &RHS) : <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880a254bd1cf3c287ac4eb3d47320b1c92b6">Uninitialized</a>) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">switch</span> (RHS.<a class="code" href="classclang_1_1APValue.html#acf8c2e6d7c5ddd341f919feab04e2297">getKind</a>()) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a654556845b5d20217a581faf0b1e19a9">Uninitialized</a>:</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a4cdc1ed0eab98d139043d3f98cca9b44">Int</a>:</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     MakeInt();</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <a class="code" href="classclang_1_1APValue.html#ad0166063c3c834f615e80ebf8eefc846">setInt</a>(RHS.<a class="code" href="classclang_1_1APValue.html#ad98d172246672624011c2adc236ef0ed">getInt</a>());</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa836f035559bf22349b3eb723f408992">Float</a>:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     MakeFloat();</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <a class="code" href="classclang_1_1APValue.html#a3366b75c26d5b74dd87ba77110504b35">setFloat</a>(RHS.<a class="code" href="classclang_1_1APValue.html#a3a5e141a004d2422d55018d081a6d221">getFloat</a>());</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7adf5f3d215a2f6a726817fc5846b5bf01">Vector</a>:</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     MakeVector();</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <a class="code" href="classclang_1_1APValue.html#ae8dd676fc6598ff0b828e45a3b933b30">setVector</a>(((<span class="keyword">const</span> Vec *)(<span class="keyword">const</span> <span class="keywordtype">char</span> *)RHS.<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->Elts,</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>               RHS.<a class="code" href="classclang_1_1APValue.html#a2be42f83f90f2702834e58959aca7d1f">getVectorLength</a>());</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aca975bd0423245580646a2420fbc7ecf">ComplexInt</a>:</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     MakeComplexInt();</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <a class="code" href="classclang_1_1APValue.html#a6263d4d7be7e09b9074efe3b5cceac68">setComplexInt</a>(RHS.<a class="code" href="classclang_1_1APValue.html#a66e83a13553ec7be07e881a723ed2555">getComplexIntReal</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a96f59e7d6f7d451e0c2498f69a0551b9">getComplexIntImag</a>());</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a3d51eecce44a1bff6476a30675e58565">ComplexFloat</a>:</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     MakeComplexFloat();</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <a class="code" href="classclang_1_1APValue.html#a438b92c581bec9a00030196caac91718">setComplexFloat</a>(RHS.<a class="code" href="classclang_1_1APValue.html#adc48962e4b1f10ede59a8b8e77988045">getComplexFloatReal</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#aacb7fee7e82d960975225ac6dc729a45">getComplexFloatImag</a>());</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a9d7740f3755fbb5ba7e8c28003b2e7a1">LValue</a>:</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     MakeLValue();</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span> (RHS.<a class="code" href="classclang_1_1APValue.html#adcdc6e637be3a4640c16834941cf4cdd">hasLValuePath</a>())</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <a class="code" href="classclang_1_1APValue.html#a3944e147e8e7052106c1b78515fef133">setLValue</a>(RHS.<a class="code" href="classclang_1_1APValue.html#a7b2bb5423a2a6d6465130045072c34b2">getLValueBase</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a84aece408f0ab81305e7fd26bdc8376a">getLValueOffset</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#aabeff46bf841666ff0eecfbdfd80c9d7">getLValuePath</a>(),</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>                 RHS.<a class="code" href="classclang_1_1APValue.html#a62caa9f9a0f45fe6704f6be32290323e">isLValueOnePastTheEnd</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#aebcee7c7943f0d895cc9f204b28ec687">getLValueCallIndex</a>());</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       <a class="code" href="classclang_1_1APValue.html#a3944e147e8e7052106c1b78515fef133">setLValue</a>(RHS.<a class="code" href="classclang_1_1APValue.html#a7b2bb5423a2a6d6465130045072c34b2">getLValueBase</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a84aece408f0ab81305e7fd26bdc8376a">getLValueOffset</a>(), <a class="code" href="structclang_1_1APValue_1_1NoLValuePath.html">NoLValuePath</a>(),</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>                 RHS.<a class="code" href="classclang_1_1APValue.html#aebcee7c7943f0d895cc9f204b28ec687">getLValueCallIndex</a>());</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a8b2ccda40404c4ae5e074d4cf5b9aa8e">Array</a>:</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     MakeArray(RHS.<a class="code" href="classclang_1_1APValue.html#a0bff5401f2459cbccb49645e02ed3574">getArrayInitializedElts</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a277b8774c5003ce6510468363ec8be4c">getArraySize</a>());</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = RHS.<a class="code" href="classclang_1_1APValue.html#a0bff5401f2459cbccb49645e02ed3574">getArrayInitializedElts</a>(); I != N; ++I)</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       <a class="code" href="classclang_1_1APValue.html#ab9907033318713dc62ac1b7e96024286">getArrayInitializedElt</a>(I) = RHS.<a class="code" href="classclang_1_1APValue.html#ab9907033318713dc62ac1b7e96024286">getArrayInitializedElt</a>(I);</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">if</span> (RHS.<a class="code" href="classclang_1_1APValue.html#af74d3b5c9c1d3fc82d17a4d9422ba96c">hasArrayFiller</a>())</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>       <a class="code" href="classclang_1_1APValue.html#a4c350800ac6893a481fdf15c4406d170">getArrayFiller</a>() = RHS.<a class="code" href="classclang_1_1APValue.html#a4c350800ac6893a481fdf15c4406d170">getArrayFiller</a>();</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a873fac297d73dcec18f9700a92841944">Struct</a>:</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     MakeStruct(RHS.<a class="code" href="classclang_1_1APValue.html#a9f202ecddb4ab9053b705111f3d604f0">getStructNumBases</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#adcf302260d28d0486368a0b06a528e92">getStructNumFields</a>());</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = RHS.<a class="code" href="classclang_1_1APValue.html#a9f202ecddb4ab9053b705111f3d604f0">getStructNumBases</a>(); I != N; ++I)</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       <a class="code" href="classclang_1_1APValue.html#a67412e5e61937c49c415e7460160cb81">getStructBase</a>(I) = RHS.<a class="code" href="classclang_1_1APValue.html#a67412e5e61937c49c415e7460160cb81">getStructBase</a>(I);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = RHS.<a class="code" href="classclang_1_1APValue.html#adcf302260d28d0486368a0b06a528e92">getStructNumFields</a>(); I != N; ++I)</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       <a class="code" href="classclang_1_1APValue.html#aa09684bba5319f42788e740c0fb08163">getStructField</a>(I) = RHS.<a class="code" href="classclang_1_1APValue.html#aa09684bba5319f42788e740c0fb08163">getStructField</a>(I);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a505503324abe27c23042658b5f66ee81">Union</a>:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     MakeUnion();</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <a class="code" href="classclang_1_1APValue.html#a61e449480a6ec2886cc93e61858dd57f">setUnion</a>(RHS.<a class="code" href="classclang_1_1APValue.html#aa8840f6a3a28e1939f9cf3ece9b9b406">getUnionField</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a14ddc0488234c33e98f71fc269473e6e">getUnionValue</a>());</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa912d3238724908af9dbbfa58797c198">MemberPointer</a>:</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     MakeMemberPointer(RHS.<a class="code" href="classclang_1_1APValue.html#a09eb8447b018545715ce1eafd688d378">getMemberPointerDecl</a>(),</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                       RHS.<a class="code" href="classclang_1_1APValue.html#ad83ef1881b5eb09dc7f1201b5a513a3c">isMemberPointerToDerivedMember</a>(),</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                       RHS.<a class="code" href="classclang_1_1APValue.html#af5c30ba9ddefb70de48788030446f9ee">getMemberPointerPath</a>());</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a0f687cb3192eb5690672e16121adb686">AddrLabelDiff</a>:</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     MakeAddrLabelDiff();</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <a class="code" href="classclang_1_1APValue.html#a87a95f6b2e54f6bc481b515c8f837cdc">setAddrLabelDiff</a>(RHS.<a class="code" href="classclang_1_1APValue.html#a306485db078311728dafb8f3f164e917">getAddrLabelDiffLHS</a>(), RHS.<a class="code" href="classclang_1_1APValue.html#a745777d4553ce7fe456831a77d69087f">getAddrLabelDiffRHS</a>());</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   }</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> }</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="keywordtype">void</span> APValue::DestroyDataAndMakeUninit() {</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a4cdc1ed0eab98d139043d3f98cca9b44">Int</a>)</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     ((APSInt*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~APSInt();</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa836f035559bf22349b3eb723f408992">Float</a>)</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     ((APFloat*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~APFloat();</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7adf5f3d215a2f6a726817fc5846b5bf01">Vector</a>)</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     ((Vec*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~Vec();</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aca975bd0423245580646a2420fbc7ecf">ComplexInt</a>)</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     ((ComplexAPSInt*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~ComplexAPSInt();</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a3d51eecce44a1bff6476a30675e58565">ComplexFloat</a>)</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     ((ComplexAPFloat*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~ComplexAPFloat();</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a9d7740f3755fbb5ba7e8c28003b2e7a1">LValue</a>)</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     ((LV*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~LV();</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a8b2ccda40404c4ae5e074d4cf5b9aa8e">Array</a>)</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     ((Arr*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~Arr();</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a873fac297d73dcec18f9700a92841944">Struct</a>)</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     ((StructData*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~StructData();</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a505503324abe27c23042658b5f66ee81">Union</a>)</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     ((UnionData*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~UnionData();</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa912d3238724908af9dbbfa58797c198">MemberPointer</a>)</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     ((MemberPointerData*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~MemberPointerData();</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a0f687cb3192eb5690672e16121adb686">AddrLabelDiff</a>)</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     ((AddrLabelDiffData*)(<span class="keywordtype">char</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->~AddrLabelDiffData();</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a654556845b5d20217a581faf0b1e19a9">Uninitialized</a>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de">  215</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de" title="Returns whether the object performed allocations.">APValue::needsCleanup</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1APValue.html#acf8c2e6d7c5ddd341f919feab04e2297">getKind</a>()) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a654556845b5d20217a581faf0b1e19a9">Uninitialized</a>:</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a0f687cb3192eb5690672e16121adb686">AddrLabelDiff</a>:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a873fac297d73dcec18f9700a92841944">Struct</a>:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a505503324abe27c23042658b5f66ee81">Union</a>:</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a8b2ccda40404c4ae5e074d4cf5b9aa8e">Array</a>:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7adf5f3d215a2f6a726817fc5846b5bf01">Vector</a>:</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a4cdc1ed0eab98d139043d3f98cca9b44">Int</a>:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APValue.html#ad98d172246672624011c2adc236ef0ed">getInt</a>().needsCleanup();</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa836f035559bf22349b3eb723f408992">Float</a>:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APValue.html#a3a5e141a004d2422d55018d081a6d221">getFloat</a>().needsCleanup();</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a3d51eecce44a1bff6476a30675e58565">ComplexFloat</a>:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     assert(<a class="code" href="classclang_1_1APValue.html#aacb7fee7e82d960975225ac6dc729a45">getComplexFloatImag</a>().<a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de" title="Returns whether the object performed allocations.">needsCleanup</a>() ==</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>                <a class="code" href="classclang_1_1APValue.html#adc48962e4b1f10ede59a8b8e77988045">getComplexFloatReal</a>().<a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de" title="Returns whether the object performed allocations.">needsCleanup</a>() &&</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>            <span class="stringliteral">"In _Complex float types, real and imaginary values always have the "</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>            <span class="stringliteral">"same size."</span>);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APValue.html#adc48962e4b1f10ede59a8b8e77988045">getComplexFloatReal</a>().needsCleanup();</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aca975bd0423245580646a2420fbc7ecf">ComplexInt</a>:</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     assert(<a class="code" href="classclang_1_1APValue.html#a96f59e7d6f7d451e0c2498f69a0551b9">getComplexIntImag</a>().<a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de" title="Returns whether the object performed allocations.">needsCleanup</a>() ==</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>                <a class="code" href="classclang_1_1APValue.html#a66e83a13553ec7be07e881a723ed2555">getComplexIntReal</a>().<a class="code" href="classclang_1_1APValue.html#abc1b3fb88bf631054a2662083c3774de" title="Returns whether the object performed allocations.">needsCleanup</a>() &&</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>            <span class="stringliteral">"In _Complex int types, real and imaginary values must have the "</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>            <span class="stringliteral">"same size."</span>);</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APValue.html#a66e83a13553ec7be07e881a723ed2555">getComplexIntReal</a>().needsCleanup();</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a9d7740f3755fbb5ba7e8c28003b2e7a1">LValue</a>:</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><a class="code" href="structAPValue_1_1LV.html">LV</a> *<span class="keyword">></span>(<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->hasPathPtr();</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa912d3238724908af9dbbfa58797c198">MemberPointer</a>:</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><a class="code" href="structAPValue_1_1MemberPointerData.html">MemberPointerData</a> *<span class="keyword">></span>(<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->hasPathPtr();</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   }</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   llvm_unreachable(<span class="stringliteral">"Unknown APValue kind!"</span>);</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> }</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a1308315d5c29ef83a7b2159dbc63882f">  249</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APValue.html#a1308315d5c29ef83a7b2159dbc63882f" title="Swaps the contents of this and the given APValue.">APValue::swap</a>(<a class="code" href="classclang_1_1APValue.html">APValue</a> &RHS) {</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   std::swap(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, RHS.Kind);</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordtype">char</span> TmpData[MaxSize];</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   memcpy(TmpData, <a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>, MaxSize);</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   memcpy(<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>, RHS.<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>, MaxSize);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   memcpy(RHS.<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>, TmpData, MaxSize);</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> }</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">  257</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">APValue::dump</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(llvm::errs());</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   llvm::errs() << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> }</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">  262</a></span> <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<span class="keyword">const</span> llvm::APFloat &F) {</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   llvm::APFloat V = F;</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordtype">bool</span> ignored;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   V.convert(llvm::APFloat::IEEEdouble, llvm::APFloat::rmNearestTiesToEven,</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>             &ignored);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordflow">return</span> V.convertToDouble();</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> }</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#adbb41a59974b00f8b28ff0b8649d33dc">  270</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">APValue::dump</a>(raw_ostream &OS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1APValue.html#acf8c2e6d7c5ddd341f919feab04e2297">getKind</a>()) {</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a654556845b5d20217a581faf0b1e19a9">Uninitialized</a>:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     OS << <span class="stringliteral">"Uninitialized"</span>;</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a4cdc1ed0eab98d139043d3f98cca9b44">Int</a>:</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     OS << <span class="stringliteral">"Int: "</span> << <a class="code" href="classclang_1_1APValue.html#ad98d172246672624011c2adc236ef0ed">getInt</a>();</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa836f035559bf22349b3eb723f408992">Float</a>:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     OS << <span class="stringliteral">"Float: "</span> << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#a3a5e141a004d2422d55018d081a6d221">getFloat</a>());</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7adf5f3d215a2f6a726817fc5846b5bf01">Vector</a>:</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     OS << <span class="stringliteral">"Vector: "</span>;</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <a class="code" href="classclang_1_1APValue.html#ae97c5ceb812ad7bec80e7d7c89eb6867">getVectorElt</a>(0).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i != <a class="code" href="classclang_1_1APValue.html#a2be42f83f90f2702834e58959aca7d1f">getVectorLength</a>(); ++i) {</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       OS << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <a class="code" href="classclang_1_1APValue.html#ae97c5ceb812ad7bec80e7d7c89eb6867">getVectorElt</a>(i).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     }</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aca975bd0423245580646a2420fbc7ecf">ComplexInt</a>:</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     OS << <span class="stringliteral">"ComplexInt: "</span> << <a class="code" href="classclang_1_1APValue.html#a66e83a13553ec7be07e881a723ed2555">getComplexIntReal</a>() << <span class="stringliteral">", "</span> << <a class="code" href="classclang_1_1APValue.html#a96f59e7d6f7d451e0c2498f69a0551b9">getComplexIntImag</a>();</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a3d51eecce44a1bff6476a30675e58565">ComplexFloat</a>:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     OS << <span class="stringliteral">"ComplexFloat: "</span> << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#adc48962e4b1f10ede59a8b8e77988045">getComplexFloatReal</a>())</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>        << <span class="stringliteral">", "</span> << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#aacb7fee7e82d960975225ac6dc729a45">getComplexFloatImag</a>());</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a9d7740f3755fbb5ba7e8c28003b2e7a1">LValue</a>:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     OS << <span class="stringliteral">"LValue: <todo>"</span>;</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a8b2ccda40404c4ae5e074d4cf5b9aa8e">Array</a>:</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     OS << <span class="stringliteral">"Array: "</span>;</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1APValue.html#a0bff5401f2459cbccb49645e02ed3574">getArrayInitializedElts</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <a class="code" href="classclang_1_1APValue.html#ab9907033318713dc62ac1b7e96024286">getArrayInitializedElt</a>(I).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">if</span> (I != <a class="code" href="classclang_1_1APValue.html#a277b8774c5003ce6510468363ec8be4c">getArraySize</a>() - 1) OS << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     }</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1APValue.html#af74d3b5c9c1d3fc82d17a4d9422ba96c">hasArrayFiller</a>()) {</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>       OS << <a class="code" href="classclang_1_1APValue.html#a277b8774c5003ce6510468363ec8be4c">getArraySize</a>() - <a class="code" href="classclang_1_1APValue.html#a0bff5401f2459cbccb49645e02ed3574">getArrayInitializedElts</a>() << <span class="stringliteral">" x "</span>;</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>       <a class="code" href="classclang_1_1APValue.html#a4c350800ac6893a481fdf15c4406d170">getArrayFiller</a>().<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     }</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a873fac297d73dcec18f9700a92841944">Struct</a>:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     OS << <span class="stringliteral">"Struct "</span>;</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> N = <a class="code" href="classclang_1_1APValue.html#a9f202ecddb4ab9053b705111f3d604f0">getStructNumBases</a>()) {</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       OS << <span class="stringliteral">" bases: "</span>;</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       <a class="code" href="classclang_1_1APValue.html#a67412e5e61937c49c415e7460160cb81">getStructBase</a>(0).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1; I != N; ++I) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         OS << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>         <a class="code" href="classclang_1_1APValue.html#a67412e5e61937c49c415e7460160cb81">getStructBase</a>(I).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       }</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     }</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> N = <a class="code" href="classclang_1_1APValue.html#adcf302260d28d0486368a0b06a528e92">getStructNumFields</a>()) {</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>       OS << <span class="stringliteral">" fields: "</span>;</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <a class="code" href="classclang_1_1APValue.html#aa09684bba5319f42788e740c0fb08163">getStructField</a>(0).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1; I != N; ++I) {</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>         OS << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>         <a class="code" href="classclang_1_1APValue.html#aa09684bba5319f42788e740c0fb08163">getStructField</a>(I).<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       }</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     }</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a505503324abe27c23042658b5f66ee81">Union</a>:</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     OS << <span class="stringliteral">"Union: "</span>;</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <a class="code" href="classclang_1_1APValue.html#a14ddc0488234c33e98f71fc269473e6e">getUnionValue</a>().<a class="code" href="classclang_1_1APValue.html#a51c8c907efaf46664865d8f2e02b7846">dump</a>(OS);</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa912d3238724908af9dbbfa58797c198">MemberPointer</a>:</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     OS << <span class="stringliteral">"MemberPointer: <todo>"</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a0f687cb3192eb5690672e16121adb686">AddrLabelDiff</a>:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     OS << <span class="stringliteral">"AddrLabelDiff: <todo>"</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   }</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   llvm_unreachable(<span class="stringliteral">"Unknown APValue kind!"</span>);</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> }</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">  343</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">APValue::printPretty</a>(raw_ostream &Out, <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty)<span class="keyword"> const</span>{</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1APValue.html#acf8c2e6d7c5ddd341f919feab04e2297">getKind</a>()) {</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a654556845b5d20217a581faf0b1e19a9">APValue::Uninitialized</a>:</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     Out << <span class="stringliteral">"<uninitialized>"</span>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a4cdc1ed0eab98d139043d3f98cca9b44">APValue::Int</a>:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">if</span> (Ty-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>())</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       Out << (<a class="code" href="classclang_1_1APValue.html#ad98d172246672624011c2adc236ef0ed">getInt</a>().getBoolValue() ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>);</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       Out << <a class="code" href="classclang_1_1APValue.html#ad98d172246672624011c2adc236ef0ed">getInt</a>();</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa836f035559bf22349b3eb723f408992">APValue::Float</a>:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     Out << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#a3a5e141a004d2422d55018d081a6d221">getFloat</a>());</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7adf5f3d215a2f6a726817fc5846b5bf01">APValue::Vector</a>: {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     Out << <span class="charliteral">'{'</span>;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemTy = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <a class="code" href="classclang_1_1APValue.html#ae97c5ceb812ad7bec80e7d7c89eb6867">getVectorElt</a>(0).<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, ElemTy);</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i != <a class="code" href="classclang_1_1APValue.html#a2be42f83f90f2702834e58959aca7d1f">getVectorLength</a>(); ++i) {</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       Out << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       <a class="code" href="classclang_1_1APValue.html#ae97c5ceb812ad7bec80e7d7c89eb6867">getVectorElt</a>(i).<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, ElemTy);</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     }</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     Out << <span class="charliteral">'}'</span>;</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aca975bd0423245580646a2420fbc7ecf">APValue::ComplexInt</a>:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     Out << <a class="code" href="classclang_1_1APValue.html#a66e83a13553ec7be07e881a723ed2555">getComplexIntReal</a>() << <span class="stringliteral">"+"</span> << <a class="code" href="classclang_1_1APValue.html#a96f59e7d6f7d451e0c2498f69a0551b9">getComplexIntImag</a>() << <span class="stringliteral">"i"</span>;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a3d51eecce44a1bff6476a30675e58565">APValue::ComplexFloat</a>:</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     Out << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#adc48962e4b1f10ede59a8b8e77988045">getComplexFloatReal</a>()) << <span class="stringliteral">"+"</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>         << <a class="code" href="APValue_8cpp.html#a23857b65430eddd29cef9237d1dc2677">GetApproxValue</a>(<a class="code" href="classclang_1_1APValue.html#aacb7fee7e82d960975225ac6dc729a45">getComplexFloatImag</a>()) << <span class="stringliteral">"i"</span>;</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a9d7740f3755fbb5ba7e8c28003b2e7a1">APValue::LValue</a>: {</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <a class="code" href="classclang_1_1APValue.html#a8788c26088c7a2a98a26ba162e229a12">LValueBase</a> <a class="code" href="classclang_1_1Base.html">Base</a> = <a class="code" href="classclang_1_1APValue.html#a7b2bb5423a2a6d6465130045072c34b2">getLValueBase</a>();</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordflow">if</span> (!Base) {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       Out << <span class="stringliteral">"0"</span>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     }</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordtype">bool</span> IsReference = Ty-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>();</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> InnerTy</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       = IsReference ? Ty.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>() : Ty-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">if</span> (InnerTy.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>())</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       InnerTy = Ty;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1APValue.html#adcdc6e637be3a4640c16834941cf4cdd">hasLValuePath</a>()) {</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="comment">// No lvalue path: just print the offset.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> O = <a class="code" href="classclang_1_1APValue.html#a84aece408f0ab81305e7fd26bdc8376a">getLValueOffset</a>();</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = Ctx.<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(InnerTy);</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">if</span> (!O.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>()) {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         <span class="keywordflow">if</span> (IsReference)</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>           Out << <span class="stringliteral">"*("</span>;</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         <span class="keywordflow">if</span> (O % S) {</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>           Out << <span class="stringliteral">"(char*)"</span>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>           S = <a class="code" href="classclang_1_1CharUnits.html#a99127c36c05fcfabd84a0e26f83a35f6" title="One - Construct a CharUnits quantity of one.">CharUnits::One</a>();</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         }</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>         Out << <span class="charliteral">'&'</span>;</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!IsReference)</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         Out << <span class="charliteral">'&'</span>;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *VD = Base.dyn_cast<<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a>*>())</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>         Out << *VD;</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         Base.get<<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a>*>()-><a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, 0, Ctx.<a class="code" href="classclang_1_1ASTContext.html#aefd70c3135737fd07be3cb2cac251e16">getPrintingPolicy</a>());</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="keywordflow">if</span> (!O.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>()) {</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         Out << <span class="stringliteral">" + "</span> << (O / <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>);</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         <span class="keywordflow">if</span> (IsReference)</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>           Out << <span class="charliteral">')'</span>;</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       }</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     }</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="comment">// We have an lvalue path. Print it out nicely.</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <span class="keywordflow">if</span> (!IsReference)</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       Out << <span class="charliteral">'&'</span>;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1APValue.html#a62caa9f9a0f45fe6704f6be32290323e">isLValueOnePastTheEnd</a>())</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       Out << <span class="stringliteral">"*(&"</span>;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemTy;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *VD = Base.dyn_cast<<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a>*>()) {</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       Out << *VD;</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       ElemTy = VD->getType();</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = Base.get<<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a>*>();</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       E-><a class="code" href="classclang_1_1Stmt.html#a7b6d8297403170952d84a89867ddbb1b">printPretty</a>(Out, 0, Ctx.<a class="code" href="classclang_1_1ASTContext.html#aefd70c3135737fd07be3cb2cac251e16">getPrintingPolicy</a>());</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       ElemTy = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     }</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<LValuePathEntry></a> Path = <a class="code" href="classclang_1_1APValue.html#aabeff46bf841666ff0eecfbdfd80c9d7">getLValuePath</a>();</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *CastToBase = 0;</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Path.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>       <span class="keywordflow">if</span> (ElemTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>         <span class="comment">// The lvalue refers to a class type, so the next path entry is a base</span></div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         <span class="comment">// or member.</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *BaseOrMember =</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>         BaseOrMemberType::getFromOpaqueValue(Path[I].BaseOrMember).getPointer();</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = dyn_cast<CXXRecordDecl>(BaseOrMember)) {</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>           CastToBase = RD;</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>           ElemTy = Ctx.<a class="code" href="classclang_1_1ASTContext.html#a2f2e06312812efc11ce91abe0695ba75">getRecordType</a>(RD);</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>           <span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *VD = cast<ValueDecl>(BaseOrMember);</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>           Out << <span class="stringliteral">"."</span>;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>           <span class="keywordflow">if</span> (CastToBase)</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>             Out << *CastToBase << <span class="stringliteral">"::"</span>;</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>           Out << *VD;</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>           ElemTy = VD->getType();</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>         }</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>         <span class="comment">// The lvalue must refer to an array.</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         Out << <span class="charliteral">'['</span> << Path[I].ArrayIndex << <span class="charliteral">']'</span>;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         ElemTy = Ctx.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(ElemTy)-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       }</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="comment">// Handle formatting of one-past-the-end lvalues.</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1APValue.html#a62caa9f9a0f45fe6704f6be32290323e">isLValueOnePastTheEnd</a>()) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <span class="comment">// FIXME: If CastToBase is non-0, we should prefix the output with</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       <span class="comment">// "(CastToBase*)".</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       Out << <span class="stringliteral">" + 1"</span>;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       <span class="keywordflow">if</span> (IsReference)</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         Out << <span class="charliteral">')'</span>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     }</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   }</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a8b2ccda40404c4ae5e074d4cf5b9aa8e">APValue::Array</a>: {</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT = Ctx.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(Ty);</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemTy = AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     Out << <span class="charliteral">'{'</span>;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> N = <a class="code" href="classclang_1_1APValue.html#a0bff5401f2459cbccb49645e02ed3574">getArrayInitializedElts</a>()) {</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <a class="code" href="classclang_1_1APValue.html#ab9907033318713dc62ac1b7e96024286">getArrayInitializedElt</a>(0).<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, ElemTy);</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1; I != N; ++I) {</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>         Out << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>         <span class="keywordflow">if</span> (I == 10) {</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>           <span class="comment">// Avoid printing out the entire contents of large arrays.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>           Out << <span class="stringliteral">"..."</span>;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>         }</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         <a class="code" href="classclang_1_1APValue.html#ab9907033318713dc62ac1b7e96024286">getArrayInitializedElt</a>(I).<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, ElemTy);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       }</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     }</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     Out << <span class="charliteral">'}'</span>;</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   }</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a873fac297d73dcec18f9700a92841944">APValue::Struct</a>: {</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     Out << <span class="charliteral">'{'</span>;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="keywordtype">bool</span> First = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> N = <a class="code" href="classclang_1_1APValue.html#a9f202ecddb4ab9053b705111f3d604f0">getStructNumBases</a>()) {</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *CD = cast<CXXRecordDecl>(RD);</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> BI = CD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>();</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != N; ++I, ++BI) {</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         assert(BI != CD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>());</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         <span class="keywordflow">if</span> (!First)</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>           Out << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         <a class="code" href="classclang_1_1APValue.html#a67412e5e61937c49c415e7460160cb81">getStructBase</a>(I).<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, BI->getType());</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>         First = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       }</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     }</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> FI = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>();</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>          FI != RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); ++FI) {</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">if</span> (!First)</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         Out << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>       <span class="keywordflow">if</span> (FI->isUnnamedBitfield()) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       <a class="code" href="classclang_1_1APValue.html#aa09684bba5319f42788e740c0fb08163">getStructField</a>(FI->getFieldIndex()).</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         <a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, FI->getType());</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       First = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     }</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     Out << <span class="charliteral">'}'</span>;</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   }</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a505503324abe27c23042658b5f66ee81">APValue::Union</a>:</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     Out << <span class="charliteral">'{'</span>;</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = <a class="code" href="classclang_1_1APValue.html#aa8840f6a3a28e1939f9cf3ece9b9b406">getUnionField</a>()) {</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       Out << <span class="stringliteral">"."</span> << *FD << <span class="stringliteral">" = "</span>;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <a class="code" href="classclang_1_1APValue.html#a14ddc0488234c33e98f71fc269473e6e">getUnionValue</a>().<a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, FD->getType());</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     }</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     Out << <span class="charliteral">'}'</span>;</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7aa912d3238724908af9dbbfa58797c198">APValue::MemberPointer</a>:</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="comment">// FIXME: This is not enough to unambiguously identify the member in a</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="comment">// multiple-inheritance scenario.</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *VD = <a class="code" href="classclang_1_1APValue.html#a09eb8447b018545715ce1eafd688d378">getMemberPointerDecl</a>()) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       Out << '&' << *cast<CXXRecordDecl>(VD->getDeclContext()) << <span class="stringliteral">"::"</span> << *VD;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     }</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     Out << <span class="stringliteral">"0"</span>;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1APValue.html#aea6e4a5e92ecee2292c155dd0d2a84d7a0f687cb3192eb5690672e16121adb686">APValue::AddrLabelDiff</a>:</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     Out << <span class="stringliteral">"&&"</span> << <a class="code" href="classclang_1_1APValue.html#a306485db078311728dafb8f3f164e917">getAddrLabelDiffLHS</a>()-><a class="code" href="classclang_1_1AddrLabelExpr.html#af2951d7c16a37c24ed72ae58c509d9b1">getLabel</a>()-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     Out << <span class="stringliteral">" - "</span>;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     Out << <span class="stringliteral">"&&"</span> << <a class="code" href="classclang_1_1APValue.html#a745777d4553ce7fe456831a77d69087f">getAddrLabelDiffRHS</a>()-><a class="code" href="classclang_1_1AddrLabelExpr.html#af2951d7c16a37c24ed72ae58c509d9b1">getLabel</a>()-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   }</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   llvm_unreachable(<span class="stringliteral">"Unknown APValue kind!"</span>);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> }</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a523970c3d12874d7d39047f72cc08f31">  539</a></span> std::string <a class="code" href="classclang_1_1APValue.html#a523970c3d12874d7d39047f72cc08f31">APValue::getAsString</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>   std::string Result;</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   llvm::raw_string_ostream Out(Result);</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <a class="code" href="classclang_1_1APValue.html#a7648d6429b20e25e6e7afa4c5f5bae7f">printPretty</a>(Out, Ctx, Ty);</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>   Out.flush();</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> }</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
+<div class="line"><a name="l00547"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a7b2bb5423a2a6d6465130045072c34b2">  547</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1APValue.html#a8788c26088c7a2a98a26ba162e229a12">APValue::LValueBase</a> <a class="code" href="classclang_1_1APValue.html#a7b2bb5423a2a6d6465130045072c34b2">APValue::getLValueBase</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>   assert(<a class="code" href="classclang_1_1APValue.html#a19d5f3448e338717c176293db4857fde">isLValue</a>() && <span class="stringliteral">"Invalid accessor"</span>);</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="keywordflow">return</span> ((<span class="keyword">const</span> <a class="code" href="structAPValue_1_1LV.html">LV</a>*)(<span class="keyword">const</span> <span class="keywordtype">void</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->BaseAndIsOnePastTheEnd.getPointer();</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> }</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a62caa9f9a0f45fe6704f6be32290323e">  552</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1APValue.html#a62caa9f9a0f45fe6704f6be32290323e">APValue::isLValueOnePastTheEnd</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   assert(<a class="code" href="classclang_1_1APValue.html#a19d5f3448e338717c176293db4857fde">isLValue</a>() && <span class="stringliteral">"Invalid accessor"</span>);</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="keywordflow">return</span> ((<span class="keyword">const</span> <a class="code" href="structAPValue_1_1LV.html">LV</a>*)(<span class="keyword">const</span> <span class="keywordtype">void</span>*)<a class="code" href="classclang_1_1APValue.html#aa721cffde4e02613ca9b277ea696b39a">Data</a>)->BaseAndIsOnePastTheEnd.getInt();</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> }</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="line"><a name="l00557"></a><span class="lineno"><a class="code" href="classclang_1_1APValue.html#a84aece408f0ab81305e7fd26bdc8376a">  557</a></span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> &<a class="code" href="classclang_1_1APValue.html#a84aece408f0ab81305e7fd26bdc8376a">APValue::getLValueOffset</a>() {</div>
+<div class="line"><a name="l00558">&