[clang-tools-extra] r255886 - Remove clang-modernize.

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 17 03:49:21 PST 2015


Author: alexfh
Date: Thu Dec 17 05:49:19 2015
New Revision: 255886

URL: http://llvm.org/viewvc/llvm-project?rev=255886&view=rev
Log:
Remove clang-modernize.

Summary:
clang-modernize transforms have moved to clang-tidy. Removing
the old tool now.

Reviewers: klimek

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D15606

Removed:
    clang-tools-extra/trunk/clang-modernize/
    clang-tools-extra/trunk/docs/AddOverrideTransform.rst
    clang-tools-extra/trunk/docs/LoopConvertTransform.rst
    clang-tools-extra/trunk/docs/MigratorUsage.rst
    clang-tools-extra/trunk/docs/ModernizerUsage.rst
    clang-tools-extra/trunk/docs/PassByValueTransform.rst
    clang-tools-extra/trunk/docs/ReplaceAutoPtrTransform.rst
    clang-tools-extra/trunk/docs/UseAutoTransform.rst
    clang-tools-extra/trunk/docs/UseNullptrTransform.rst
    clang-tools-extra/trunk/test/clang-modernize/
    clang-tools-extra/trunk/unittests/clang-modernize/
    clang-tools-extra/trunk/unittests/include/common/Utility.h
Modified:
    clang-tools-extra/trunk/CMakeLists.txt
    clang-tools-extra/trunk/Makefile
    clang-tools-extra/trunk/docs/clang-modernize.rst
    clang-tools-extra/trunk/docs/cpp11-migrate.rst
    clang-tools-extra/trunk/docs/index.rst
    clang-tools-extra/trunk/test/CMakeLists.txt
    clang-tools-extra/trunk/unittests/CMakeLists.txt
    clang-tools-extra/trunk/unittests/Makefile

Modified: clang-tools-extra/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/CMakeLists.txt?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/CMakeLists.txt Thu Dec 17 05:49:19 2015
@@ -1,5 +1,4 @@
 add_subdirectory(clang-apply-replacements)
-add_subdirectory(clang-modernize)
 add_subdirectory(clang-rename)
 add_subdirectory(modularize)
 if(CLANG_ENABLE_STATIC_ANALYZER)

Modified: clang-tools-extra/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/Makefile?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/Makefile (original)
+++ clang-tools-extra/trunk/Makefile Thu Dec 17 05:49:19 2015
@@ -12,8 +12,7 @@ CLANG_LEVEL := ../..
 include $(CLANG_LEVEL)/../../Makefile.config
 
 PARALLEL_DIRS := tool-template modularize pp-trace
-DIRS := clang-apply-replacements clang-modernize clang-rename clang-tidy \
-	clang-query unittests
+DIRS := clang-apply-replacements clang-rename clang-tidy clang-query unittests
 
 include $(CLANG_LEVEL)/Makefile
 

Removed: clang-tools-extra/trunk/docs/AddOverrideTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/AddOverrideTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/AddOverrideTransform.rst (original)
+++ clang-tools-extra/trunk/docs/AddOverrideTransform.rst (removed)
@@ -1,54 +0,0 @@
-.. index:: Add-Override Transform
-
-======================
-Add-Override Transform
-======================
-
-The Add-Override Transform adds the ``override`` specifier to member
-functions that override a virtual function in a base class and that
-don't already have the specifier. The transform is enabled with the 
-:option:`-add-override` option of :program:`clang-modernize`.
-For example:
-
-.. code-block:: c++
-
-  class A {
-  public:
-    virtual void h() const;
-  };
-
-  class B : public A {
-  public:
-    void h() const;
-
-    // The declaration of h is transformed to
-    void h() const override;
-  };
-
-Using Expands-to-Override Macros
-================================
-
-Like LLVM's ``LLVM_OVERRIDE``, several projects have macros that conditionally
-expand to the ``override`` keyword when compiling with C++11 features enabled.
-To maintain compatibility with non-C++11 builds, the Add-Override Transform
-supports detection and use of these macros instead of using the ``override``
-keyword directly. Specify ``-override-macros`` on the command line to the
-Modernizer to enable this behavior.
-
-
-Known Limitations
-=================
-* This transform will not insert the override keyword if a method is
-  pure. At the moment it's not possible to track down the pure
-  specifier location.
-
-.. code-block:: c++
-
-  class B : public A {
-  public:
-    virtual void h() const = 0;
-
-    // The declaration of h is NOT transformed to
-    virtual void h() const override = 0;
-  };
-

Removed: clang-tools-extra/trunk/docs/LoopConvertTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/LoopConvertTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/LoopConvertTransform.rst (original)
+++ clang-tools-extra/trunk/docs/LoopConvertTransform.rst (removed)
@@ -1,257 +0,0 @@
-.. index:: Loop Convert Transform
-
-======================
-Loop Convert Transform
-======================
-
-The Loop Convert Transform is a transformation to convert ``for(...; ...;
-...)`` loops to use the new range-based loops in C++11. The transform is enabled
-with the :option:`-loop-convert` option of :program:`clang-modernize`.
-
-Three kinds of loops can be converted:
-
--  Loops over statically allocated arrays
--  Loops over containers, using iterators
--  Loops over array-like containers, using ``operator[]`` and ``at()``
-
-Risk
-====
-
-Risky
------
-
-In loops where the container expression is more complex than just a
-reference to a declared expression (a variable, function, enum, etc.),
-and some part of it appears elsewhere in the loop, we lower our confidence
-in the transformation due to the increased risk of changing semantics.
-Transformations for these loops are marked as `risky`, and thus will only
-be converted if the acceptable risk level is set to ``-risk=risky``.
-
-.. code-block:: c++
-
-  int arr[10][20];
-  int l = 5;
-
-  for (int j = 0; j < 20; ++j)
-    int k = arr[l][j] + l; // using l outside arr[l] is considered risky
-
-  for (int i = 0; i < obj.getVector().size(); ++i)
-    obj.foo(10); // using 'obj' is considered risky
-
-See
-:ref:`Range-based loops evaluate end() only once<IncorrectRiskyTransformation>`
-for an example of an incorrect transformation when the maximum acceptable risk
-level is set to `risky`.
-
-Reasonable (Default)
---------------------
-
-If a loop calls ``.end()`` or ``.size()`` after each iteration, the
-transformation for that loop is marked as `reasonable`, and thus will
-be converted if the acceptable risk level is set to ``-risk=reasonable``
-(default) or higher.
-
-.. code-block:: c++
-
-  // using size() is considered reasonable
-  for (int i = 0; i < container.size(); ++i)
-    cout << container[i];
-
-Safe
-----
-
-Any other loops that do not match the above criteria to be marked as
-`risky` or `reasonable` are marked `safe`, and thus will be converted
-if the acceptable risk level is set to ``-risk=safe`` or higher.
-
-.. code-block:: c++
-
-  int arr[] = {1,2,3};
-
-  for (int i = 0; i < 3; ++i)
-    cout << arr[i];
-
-Example
-=======
-
-Original:
-
-.. code-block:: c++
-
-  const int N = 5;
-  int arr[] = {1,2,3,4,5};
-  vector<int> v;
-  v.push_back(1);
-  v.push_back(2);
-  v.push_back(3);
-
-  // safe transform
-  for (int i = 0; i < N; ++i)
-    cout << arr[i];
-
-  // reasonable transform
-  for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
-    cout << *it;*
-
-  // reasonable transform
-  for (int i = 0; i < v.size(); ++i)
-    cout << v[i];
-
-After transformation with risk level set to ``-risk=reasonable`` (default):
-
-.. code-block:: c++
-
-  const int N = 5;
-  int arr[] = {1,2,3,4,5};
-  vector<int> v;
-  v.push_back(1);
-  v.push_back(2);
-  v.push_back(3);
-
-  // safe transform
-  for (auto & elem : arr)
-    cout << elem;
-
-  // reasonable transform
-  for (auto & elem : v)
-    cout << elem;
-
-  // reasonable transform
-  for (auto & elem : v)
-    cout << elem;
-
-Limitations
-===========
-
-There are certain situations where the tool may erroneously perform
-transformations that remove information and change semantics. Users of the tool
-should be aware of the behaviour and limitations of the transform outlined by
-the cases below.
-
-Comments inside loop headers
-----------------------------
-
-Comments inside the original loop header are ignored and deleted when
-transformed.
-
-.. code-block:: c++
-
-  for (int i = 0; i < N; /* This will be deleted */ ++i) { }
-
-Range-based loops evaluate end() only once
-------------------------------------------
-
-The C++11 range-based for loop calls ``.end()`` only once during the
-initialization of the loop. If in the original loop ``.end()`` is called after
-each iteration the semantics of the transformed loop may differ.
-
-.. code-block:: c++
-
-  // The following is semantically equivalent to the C++11 range-based for loop,
-  // therefore the semantics of the header will not change.
-  for (iterator it = container.begin(), e = container.end(); it != e; ++it) { }
-
-  // Instead of calling .end() after each iteration, this loop will be
-  // transformed to call .end() only once during the initialization of the loop,
-  // which may affect semantics.
-  for (iterator it = container.begin(); it != container.end(); ++it) { }
-
-.. _IncorrectRiskyTransformation:
-
-As explained above, calling member functions of the container in the body
-of the loop is considered `risky`. If the called member function modifies the
-container the semantics of the converted loop will differ due to ``.end()``
-being called only once.
-
-.. code-block:: c++
-
-  bool flag = false;
-  for (vector<T>::iterator it = vec.begin(); it != vec.end(); ++it) {
-    // Add a copy of the first element to the end of the vector.
-    if (!flag) {
-      // This line makes this transformation 'risky'.
-      vec.push_back(*it);
-      flag = true;
-    }
-    cout << *it;
-  }
-
-The original code above prints out the contents of the container including the
-newly added element while the converted loop, shown below, will only print the
-original contents and not the newly added element.
-
-.. code-block:: c++
-
-  bool flag = false;
-  for (auto & elem : vec) {
-    // Add a copy of the first element to the end of the vector.
-    if (!flag) {
-      // This line makes this transformation 'risky'
-      vec.push_back(elem);
-      flag = true;
-    }
-    cout << elem;
-  }
-
-Semantics will also be affected if ``.end()`` has side effects. For example, in
-the case where calls to ``.end()`` are logged the semantics will change in the
-transformed loop if ``.end()`` was originally called after each iteration.
-
-.. code-block:: c++
-
-  iterator end() {
-    num_of_end_calls++;
-    return container.end();
-  }
-
-Overloaded operator->() with side effects
------------------------------------------
-
-Similarly, if ``operator->()`` was overloaded to have side effects, such as
-logging, the semantics will change. If the iterator's ``operator->()`` was used
-in the original loop it will be replaced with ``<container element>.<member>``
-instead due to the implicit dereference as part of the range-based for loop.
-Therefore any side effect of the overloaded ``operator->()`` will no longer be
-performed.
-
-.. code-block:: c++
-
-  for (iterator it = c.begin(); it != c.end(); ++it) {
-    it->func(); // Using operator->()
-  }
-  // Will be transformed to:
-  for (auto & elem : c) {
-    elem.func(); // No longer using operator->()
-  }
-
-Pointers and references to containers
--------------------------------------
-
-While most of the transform's risk analysis is dedicated to determining whether
-the iterator or container was modified within the loop, it is possible to
-circumvent the analysis by accessing and modifying the container through a
-pointer or reference.
-
-If the container were directly used instead of using the pointer or reference
-the following transformation would have only been applied at the ``-risk=risky``
-level since calling a member function of the container is considered `risky`.
-The transform cannot identify expressions associated with the container that are
-different than the one used in the loop header, therefore the transformation
-below ends up being performed at the ``-risk=safe`` level.
-
-.. code-block:: c++
-
-  vector<int> vec;
-
-  vector<int> *ptr = &vec;
-  vector<int> &ref = vec;
-
-  for (vector<int>::iterator it = vec.begin(), e = vec.end(); it != e; ++it) {
-    if (!flag) {
-      // Accessing and modifying the container is considered risky, but the risk
-      // level is not raised here.
-      ptr->push_back(*it);
-      ref.push_back(*it);
-      flag = true;
-    }
-  }

Removed: clang-tools-extra/trunk/docs/MigratorUsage.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/MigratorUsage.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/MigratorUsage.rst (original)
+++ clang-tools-extra/trunk/docs/MigratorUsage.rst (removed)
@@ -1,6 +0,0 @@
-===================
-cpp11-migrate Usage
-===================
-
-This program has been renamed :doc:`clang-modernize <clang-modernize>`, and its usage is now
-found in :doc:`ModernizerUsage`.

Removed: clang-tools-extra/trunk/docs/ModernizerUsage.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ModernizerUsage.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/ModernizerUsage.rst (original)
+++ clang-tools-extra/trunk/docs/ModernizerUsage.rst (removed)
@@ -1,313 +0,0 @@
-=====================
-clang-modernize Usage
-=====================
-
-``clang-modernize [options] [<sources>...] [-- [args]]``
-
-``<source#>`` specifies the path to the source to migrate. This path may be
-relative to the current directory. If no sources are provided, a compilation
-database provided with `-p`_ can be used to provide sources together with the
-`include/exclude options`_.
-
-By default all transformations are applied. There are two ways to enable a
-subset of the transformations:
-
-1. Explicitly, by referring to the transform options directly, see
-   :ref:`transform-specific-command-line-options`.
-2. Implicitly, based on the compilers to support, see
-   :ref:`-for-compilers=\<string\> <for-compilers-option>`.
-
-If both ways of specifying transforms are used only explicitly specified
-transformations that are supported by the given compilers will be applied.
-
-General Command Line Options
-============================
-
-.. option:: -help
-
-  Displays tool usage instructions and command line options.
-
-.. option:: -version
-
-  Displays the version information of this tool.
-
-.. _-p:
-
-.. option:: -p=<build-path>
-
-  ``<build-path>`` is the directory containing a *compilation databasefile*, a
-  file named ``compile_commands.json``, which provides compiler arguments for
-  building each source file. CMake can generate this file by specifying
-  ``-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`` when running CMake. Ninja_, since v1.2
-  can also generate this file with ``ninja -t compdb``. If the compilation
-  database cannot be used for any reason, an error is reported.
-
-  This option is ignored if ``--`` is present.
-
-  Files in the compilation database will be transformed if no sources are
-  provided and paths to files are explicitly included using ``-include`` or
-  ``-include-from``.
-  In order to transform all files in a compilation database the following
-  command line can be used:
-
-    ``clang-modernize -p=<build-path> -include=<project_root>``
-
-  Use ``-exclude`` or ``-exclude-from`` to limit the scope of ``-include``.
-
-.. _Ninja: http://martine.github.io/ninja/
-
-.. option:: -- [args]
-
-  Another way to provide compiler arguments is to specify all arguments on the
-  command line following ``--``. Arguments provided this way are used for
-  *every* source file.
-
-  If neither ``--`` nor ``-p`` are specified a compilation database is
-  searched for starting with the path of the first-provided source file and
-  proceeding through parent directories. If no compilation database is found or
-  one is found and cannot be used for any reason then ``-std=c++11`` is used as
-  the only compiler argument.
-
-.. option:: -risk=<risk-level>
-
-  Some transformations may cause a change in semantics. In such cases the
-  maximum acceptable risk level specified through the ``-risk`` command
-  line option decides whether or not a transformation is applied.
-
-  Three different risk level options are available:
-
-    ``-risk=safe``
-      Perform only safe transformations.
-    ``-risk=reasonable`` (default)
-      Enable transformations that may change semantics.
-    ``-risk=risky``
-      Enable transformations that are likely to change semantics.
-
-  The meaning of risk is handled differently for each transform. See
-  :ref:`transform documentation <transforms>` for details.
-
-.. option:: -final-syntax-check
-
-  After applying the final transform to a file, parse the file to ensure the
-  last transform did not introduce syntax errors. Syntax errors introduced by
-  earlier transforms are already caught when subsequent transforms parse the
-  file.
-
-.. option:: -summary
-
-  Displays a summary of the number of changes each transform made or could have
-  made to each source file immediately after each transform is applied.
-  **Accepted** changes are those actually made. **Rejected** changes are those
-  that could have been made if the acceptable risk level were higher.
-  **Deferred** changes are those that might be possible but they might conflict
-  with other accepted changes. Re-applying the transform will resolve deferred
-  changes.
-
-.. _for-compilers-option:
-
-.. option:: -for-compilers=<string>
-
-  Select transforms targeting the intersection of language features supported by
-  the given compilers.
-
-  Four compilers are supported. The transforms are enabled according to this
-  table:
-
-  ===============  =====  ===  ====  ====
-  Transforms       clang  gcc  icc   mscv
-  ===============  =====  ===  ====  ====
-  AddOverride (1)  3.0    4.7  14    8
-  LoopConvert      3.0    4.6  13    11
-  PassByValue      3.0    4.6  13    11
-  ReplaceAutoPtr   3.0    4.6  13    11
-  UseAuto          2.9    4.4  12    10
-  UseNullptr       3.0    4.6  12.1  10
-  ===============  =====  ===  ====  ====
-
-  (1): if *-override-macros* is provided it's assumed that the macros are C++11
-  aware and the transform is enabled without regard to the supported compilers.
-
-  The structure of the argument to the `-for-compilers` option is
-  **<compiler>-<major ver>[.<minor ver>]** where **<compiler>** is one of the
-  compilers from the above table.
-
-  Some examples:
-
-  1. To support `Clang >= 3.0`, `gcc >= 4.6` and `MSVC >= 11`:
-
-     ``clang-modernize -for-compilers=clang-3.0,gcc-4.6,msvc-11 <args..>``
-
-     Enables LoopConvert, ReplaceAutoPtr, UseAuto, UseNullptr.
-
-  2. To support `icc >= 12` while using a C++11-aware macro for the `override`
-     virtual specifier:
-
-     ``clang-modernize -for-compilers=icc-12 -override-macros <args..>``
-
-     Enables AddOverride and UseAuto.
-
-  .. warning::
-
-    If your version of Clang depends on the GCC headers (e.g: when `libc++` is
-    not used), then you probably want to add the GCC version to the targeted
-    platforms as well.
-
-.. option:: -perf[=<directory>]
-
-  Turns on performance measurement and output functionality. The time it takes to
-  apply each transform is recorded by the migrator and written in JSON format
-  to a uniquely named file in the given ``<directory>``. All sources processed
-  by a single Modernizer process are written to the same output file. If
-  ``<directory>`` is not provided the default is ``./migrate_perf/``.
-
-  The time recorded for a transform includes parsing and creating source code
-  replacements.
-
-.. option:: -serialize-replacements
-
-  Causes the modernizer to generate replacements and serialize them to disk but
-  not apply them. This can be useful for debugging or for manually running
-  ``clang-apply-replacements``. Replacements are serialized in YAML_ format.
-  By default serialzied replacements are written to a temporary directory whose
-  name is written to stderr when serialization is complete.
-
-.. _YAML: http://www.yaml.org/
-
-.. option:: -serialize-dir=<string>
-
-  Choose a directory to serialize replacements to. The directory must exist.
-
-.. _include/exclude options:
-
-Path Inclusion/Exclusion Options
-================================
-
-.. option:: -include=<path1>,<path2>,...,<pathN>
-
-  Use this option to indicate which directories contain files that can be
-  changed by the modernizer. Inidividual files may be specified if desired.
-  Multiple paths can be specified as a comma-separated list. Sources mentioned
-  explicitly on the command line are always included so this option controls
-  which other files (e.g. headers) may be changed while transforming
-  translation units.
-
-.. option:: -exclude=<path1>,<path2>,...,<pathN>
-
-  Used with ``-include`` to provide finer control over which files and
-  directories can be transformed. Individual files and files within directories
-  specified by this option **will not** be transformed. Multiple paths can be
-  specified as a comma-separated list.
-
-.. option:: -include-from=<filename>
-
-  Like ``-include`` but read paths from the given file. Paths should be one per
-  line.
-
-.. option:: -exclude-from=<filename>
-
-  Like ``-exclude`` but read paths from the given file. Paths are listed one
-  per line.
-
-Formatting Command Line Options
-===============================
-
-.. option:: -format
-
-  Enable reformatting of code changed by transforms. Formatting is done after
-  every transform.
-
-.. option:: -style=<string>
-
-  Specifies how formatting should be done. The behaviour of this option is
-  identical to the same option provided by clang-format_. Refer to
-  `clang-format's style options`_ for more details.
-
-.. option:: -style-config=<dir>
-
-  When using ``-style=file``, the default behaviour is to look for
-  ``.clang-format`` starting in the current directory and then in ancestors. To
-  specify a directory to find the style configuration file, use this option.
-
-Example:
-
-.. code-block:: c++
-  :emphasize-lines: 10-12,18
-
-    // file.cpp
-    for (std::vector<int>::const_iterator I = my_container.begin(),
-                                          E = my_container.end();
-         I != E; ++I) {
-      std::cout << *I << std::endl;
-    }
-
-    // No reformatting:
-    //     clang-modernize -use-auto file.cpp
-    for (auto I = my_container.begin(),
-                                          E = my_container.end();
-         I != E; ++I) {
-      std::cout << *I << std::endl;
-    }
-
-    // With reformatting enabled:
-    //     clang-modernize -format -use-auto file.cpp
-    for (auto I = my_container.begin(), E = my_container.end(); I != E; ++I) {
-      std::cout << *I << std::endl;
-    }
-
-.. _clang-format: http://clang.llvm.org/docs/ClangFormat.html
-.. _clang-format's style options: http://clang.llvm.org/docs/ClangFormatStyleOptions.html
-
-
-.. _transform-specific-command-line-options:
-
-Transform-Specific Command Line Options
-=======================================
-
-.. option:: -loop-convert
-
-  Makes use of C++11 range-based for loops where possible. See
-  :doc:`LoopConvertTransform`.
-
-.. option:: -use-nullptr
-
-  Makes use of the new C++11 keyword ``nullptr`` where possible.
-  See :doc:`UseNullptrTransform`.
-
-.. option:: -user-null-macros=<string>
-
-  ``<string>`` is a comma-separated list of user-defined macros that behave like
-  the ``NULL`` macro. The :option:`-use-nullptr` transform will replace these
-  macros along with ``NULL``. See :doc:`UseNullptrTransform`.
-
-.. option:: -use-auto
-
-  Replace the type specifier of variable declarations with the ``auto`` type
-  specifier. See :doc:`UseAutoTransform`.
-
-.. option:: -add-override
-
-  Adds the override specifier to member functions where it is appropriate. That
-  is, the override specifier is added to member functions that override a
-  virtual function in a base class and that don't already have the specifier.
-  See :doc:`AddOverrideTransform`.
-
-.. option:: -override-macros
-
-  Tells the Add Override Transform to locate a macro that expands to
-  ``override`` and use that macro instead of the ``override`` keyword directly.
-  If no such macro is found, ``override`` is still used. This option enables
-  projects that use such macros to maintain build compatibility with non-C++11
-  code.
-
-.. option:: -pass-by-value
-
-  Replace const-reference parameters by values in situations where it can be
-  beneficial.
-  See :doc:`PassByValueTransform`.
-
-.. option:: -replace-auto_ptr
-
-  Replace ``std::auto_ptr`` (deprecated in C++11) by ``std::unique_ptr`` and
-  wrap calls to the copy constructor and assignment operator with
-  ``std::move()``.
-  See :doc:`ReplaceAutoPtrTransform`.

Removed: clang-tools-extra/trunk/docs/PassByValueTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/PassByValueTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/PassByValueTransform.rst (original)
+++ clang-tools-extra/trunk/docs/PassByValueTransform.rst (removed)
@@ -1,165 +0,0 @@
-.. index:: Pass-By-Value Transform
-
-=======================
-Pass-By-Value Transform
-=======================
-
-The Pass-By-Value Transform makes use of the pass-by-value idiom when possible.
-
-With move semantics added to the language and the standard library updated with
-move constructors added for many types it is now interesting to take an argument
-directly by value, instead of by const-reference, and then copy. This
-transformation allows the compiler to take care of choosing the best way to
-construct the copy.
-
-The transformation is usually beneficial when the calling code passes an
-*rvalue* and assumes the move construction is a cheap operation. This short
-example illustrates how the construction of the value happens:
-
-  .. code-block:: c++
-
-    void foo(std::string s);
-    std::string get_str();
-
-    void f(const std::string &str) {
-      foo(str);       // lvalue  -> copy construction
-      foo(get_str()); // prvalue -> move construction
-    }
-
-.. note::
-
-   Currently only constructors are transformed to make use of pass-by-value.
-   Contributions that handle other situations are welcome!
-
-
-Pass-by-value in constructors
------------------------------
-
-Replaces the uses of const-references constructor parameters that are copied
-into class fields. The parameter is then moved with `std::move()`.
-
-Since `std::move()` is a library function declared in `<utility>` it may be
-necessary to add this include. The transform will add the include directive when
-necessary.
-
-Example::
-
-  $ clang-modernize -pass-by-value ctor.cpp
-
-**ctor.cpp**
-
-  .. code-block:: c++
-
-     #include <string>
-
-     class Foo {
-     public:
-    -  Foo(const std::string &Copied, const std::string &ReadOnly)
-    -    : Copied(Copied), ReadOnly(ReadOnly)
-    +  Foo(std::string Copied, const std::string &ReadOnly)
-    +    : Copied(std::move(Copied)), ReadOnly(ReadOnly)
-       {}
-
-     private:
-       std::string Copied;
-       const std::string &ReadOnly;
-     };
-
-     std::string get_cwd();
-
-     void f(const std::string &Path) {
-       // The parameter corresponding to 'get_cwd()' is move-constructed. By
-       // using pass-by-value in the Foo constructor we managed to avoid a
-       // copy-construction.
-       Foo foo(get_cwd(), Path);
-     }
-
-
-If the parameter is used more than once no transformation is performed since
-moved objects have an undefined state. It means the following code will be left
-untouched:
-
-.. code-block:: c++
-
-  #include <string>
-
-  void pass(const std::string &S);
-
-  struct Foo {
-    Foo(const std::string &S) : Str(S) {
-      pass(S);
-    }
-
-    std::string Str;
-  };
-
-
-Risk
-^^^^
-
-This modification is considered **reasonably safe** (see :option:`-risk`
-option).
-
-A situation where the generated code can be wrong is when the object referenced
-is modified before the assignment in the init-list through a "hidden" reference.
-
-Example:
-
-.. code-block:: c++
-
-   std::string s("foo");
-
-   struct Base {
-     Base() {
-       s = "bar";
-     }
-   };
-
-   struct Derived : Base {
-  -  Derived(const std::string &S) : Field(S)
-  +  Derived(std::string S) : Field(std::move(S))
-     { }
-
-     std::string Field;
-   };
-
-   void f() {
-  -  Derived d(s); // d.Field holds "bar"
-  +  Derived d(s); // d.Field holds "foo"
-   }
-
-
-Note about delayed template parsing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When delayed template parsing is enabled, constructors part of templated
-contexts; templated constructors, constructors in class templates, constructors
-of inner classes of template classes, etc., are not transformed. Delayed
-template parsing is enabled by default on Windows as a Microsoft extension:
-`Clang Compiler User’s Manual - Microsoft extensions`_.
-
-Delayed template parsing can be enabled using the `-fdelayed-template-parsing`
-flag and disabled using `-fno-delayed-template-parsing`.
-
-Example:
-
-.. code-block:: c++
-
-   template <typename T> class C {
-     std::string S;
-
-   public:
- =  // using -fdelayed-template-parsing (default on Windows)
- =  C(const std::string &S) : S(S) {}
- 
- +  // using -fno-delayed-template-parsing (default on non-Windows systems)
- +  C(std::string S) : S(std::move(S)) {}
-   };
-
-.. _Clang Compiler User’s Manual - Microsoft extensions: http://clang.llvm.org/docs/UsersManual.html#microsoft-extensions
-
-.. seealso::
-
-  For more information about the pass-by-value idiom, read: `Want Speed? Pass by Value`_.
-
-  .. _Want Speed? Pass by Value: http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

Removed: clang-tools-extra/trunk/docs/ReplaceAutoPtrTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReplaceAutoPtrTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/ReplaceAutoPtrTransform.rst (original)
+++ clang-tools-extra/trunk/docs/ReplaceAutoPtrTransform.rst (removed)
@@ -1,72 +0,0 @@
-.. index:: Replace-AutoPtr Transform
-
-=========================
-Replace-AutoPtr Transform
-=========================
-
-The Replace-AutoPtr Transform replaces the uses of the deprecated class
-``std::auto_ptr`` by ``std::unique_ptr`` (introduced in C++11). The transfer of
-ownership, done by the copy-constructor and the assignment operator, is changed
-to match ``std::unique_ptr`` usage by using explicit calls to ``std::move()``.
-The transform is enabled with the :option:`-replace-auto_ptr` option of
-:program:`clang-modernize`.
-
-Migration example:
-
-.. code-block:: c++
-
-  -void take_ownership_fn(std::auto_ptr<int> int_ptr);
-  +void take_ownership_fn(std::unique_ptr<int> int_ptr);
-
-   void f(int x) {
-  -  std::auto_ptr<int> a(new int(x));
-  -  std::auto_ptr<int> b;
-  +  std::unique_ptr<int> a(new int(x));
-  +  std::unique_ptr<int> b;
-
-  -  b = a;
-  -  take_ownership_fn(b);
-  +  b = std::move(a);
-  +  take_ownership_fn(std::move(b));
-   }
-
-
-Known Limitations
-=================
-* If headers modification is not activated or if a header is not allowed to be
-  changed this transform will produce broken code (compilation error), where the
-  the headers' code will stay unchanged while the code using them will be
-  changed.
-
-* Client code that declares a reference to an ``std::auto_ptr`` coming from code
-  that can't be migrated (such as a header coming from a 3\ :sup:`rd` party
-  library) will produce a compilation error after migration. This is because the
-  type of the reference will be changed to ``std::unique_ptr`` but the type
-  returned by the library won't change, binding a reference to
-  ``std::unique_ptr`` from an ``std::auto_ptr``. This pattern doesn't make much
-  sense and usually ``std::auto_ptr`` are stored by value (otherwise what is the
-  point in using them instead of a reference or a pointer?).
-
-  .. code-block:: c++
-
-     // <3rd-party header...>
-     std::auto_ptr<int> get_value();
-     const std::auto_ptr<int> & get_ref();
-
-     // <calling code (with migration)...>
-    -std::auto_ptr<int> a(get_value());
-    +std::unique_ptr<int> a(get_value()); // ok, unique_ptr constructed from auto_ptr
-
-    -const std::auto_ptr<int> & p = get_ptr();
-    +const std::unique_ptr<int> & p = get_ptr(); // won't compile
-
-* Non-instantiated templates aren't modified.
-
-  .. code-block:: c++
-
-     template <typename X>
-     void f() {
-         std::auto_ptr<X> p;
-     }
-
-     // only 'f<int>()' (or similar) will trigger the replacement

Removed: clang-tools-extra/trunk/docs/UseAutoTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/UseAutoTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/UseAutoTransform.rst (original)
+++ clang-tools-extra/trunk/docs/UseAutoTransform.rst (removed)
@@ -1,137 +0,0 @@
-.. index:: Use-Auto Transform
-
-==================
-Use-Auto Transform
-==================
-
-The Use-Auto Transform is responsible for using the ``auto`` type specifier for
-variable declarations to *improve code readability and maintainability*. The
-transform is enabled with the :option:`-use-auto` option of
-:program:`clang-modernize`. For example:
-
-.. code-block:: c++
-
-  std::vector<int>::iterator I = my_container.begin();
-
-  // transforms to:
-
-  auto I = my_container.begin();
-
-The ``auto`` type specifier will only be introduced in situations where the
-variable type matches the type of the initializer expression. In other words
-``auto`` should deduce the same type that was originally spelled in the source.
-However, not every situation should be transformed:
-
-.. code-block:: c++
-
-  int val = 42;
-  InfoStruct &I = SomeObject.getInfo();
-
-  // Should not become:
-
-  auto val = 42;
-  auto &I = SomeObject.getInfo();
-
-In this example using ``auto`` for builtins doesn't improve readability. In
-other situations it makes the code less self-documenting impairing readability
-and maintainability. As a result, ``auto`` is used only introduced in specific
-situations described below.
-
-Iterators
-=========
-
-Iterator type specifiers tend to be long and used frequently, especially in
-loop constructs. Since the functions generating iterators have a common format,
-the type specifier can be replaced without obscuring the meaning of code while 
-improving readability and maintainability.
-
-.. code-block:: c++
-
-  for (std::vector<int>::iterator I = my_container.begin(),
-                                  E = my_container.end();
-       I != E; ++I) {
-  }
-
-  // becomes
-
-  for (auto I = my_container.begin(), E = my_container.end(); I != E; ++I) {
-  }
-
-The transform will only replace iterator type-specifiers when all of the
-following conditions are satisfied:
-* The iterator is for one of the standard container in ``std`` namespace:
-
-  * ``array``
-
-  * ``deque``
-
-  * ``forward_list``
-
-  * ``list``
-
-  * ``vector``
-
-  * ``map``
-
-  * ``multimap``
-
-  * ``set``
-
-  * ``multiset``
-
-  * ``unordered_map``
-
-  * ``unordered_multimap``
-
-  * ``unordered_set``
-
-  * ``unordered_multiset``
-
-  * ``queue``
-
-  * ``priority_queue``
-
-  * ``stack``
-
-* The iterator is one of the possible iterator types for standard containers:
-
-  * ``iterator``
-
-  * ``reverse_iterator``
-
-  * ``const_iterator``
-
-  * ``const_reverse_iterator``
-
-* In addition to using iterator types directly, typedefs or other ways of
-  referring to those types are also allowed. However, implementation-specific
-  types for which a type like ``std::vector<int>::iterator`` is itself a
-  typedef will not be transformed. Consider the following examples:
-
-.. code-block:: c++
-
-  // The following direct uses of iterator types will be transformed.
-  std::vector<int>::iterator I = MyVec.begin();
-  {
-    using namespace std;
-    list<int>::iterator I = MyList.begin();
-  }
-
-  // The type specifier for J would transform to auto since it's a typedef
-  // to a standard iterator type.
-  typedef std::map<int, std::string>::const_iterator map_iterator;
-  map_iterator J = MyMap.begin();
-
-  // The following implementation-specific iterator type for which
-  // std::vector<int>::iterator could be a typedef would not be transformed.
-  __gnu_cxx::__normal_iterator<int*, std::vector> K = MyVec.begin();
-
-* The initializer for the variable being declared is not a braced initializer
-  list. Otherwise, use of ``auto`` would cause the type of the variable to be
-  deduced as``std::initializer_list``.
-
-Known Limitations
-=================
-* If the initializer is an explicit conversion constructor, the transform will
-  not replace the type specifier even though it would be safe to do so.
-* User-defined iterators are not handled at this time.

Removed: clang-tools-extra/trunk/docs/UseNullptrTransform.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/UseNullptrTransform.rst?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/UseNullptrTransform.rst (original)
+++ clang-tools-extra/trunk/docs/UseNullptrTransform.rst (removed)
@@ -1,82 +0,0 @@
-.. index:: Use-Nullptr Transform
-
-=====================
-Use-Nullptr Transform
-=====================
-
-The Use-Nullptr Transform is a transformation to convert the usage of null
-pointer constants (eg. ``NULL``, ``0``) to use the new C++11 ``nullptr``
-keyword. The transform is enabled with the :option:`-use-nullptr` option of
-:program:`clang-modernize`.
-
-Example
-=======
-
-.. code-block:: c++
-
-  void assignment() {
-    char *a = NULL;
-    char *b = 0;
-    char c = 0;
-  }
-
-  int *ret_ptr() {
-    return 0;
-  }
-
-
-transforms to:
-
-.. code-block:: c++
-
-  void assignment() {
-    char *a = nullptr;
-    char *b = nullptr;
-    char c = 0;
-  }
-
-  int *ret_ptr() {
-    return nullptr;
-  }
-
-
-User defined macros
-===================
-
-By default this transform will only replace the ``NULL`` macro and will skip any
-user-defined macros that behaves like ``NULL``. The user can use the
-:option:`-user-null-macros` option to specify a comma-separated list of macro
-names that will be transformed along with ``NULL``.
-
-Example
--------
-
-.. code-block:: c++
-
-  #define MY_NULL (void*)0
-  void assignment() {
-    void *p = MY_NULL;
-  }
-
-
-using the command-line
-
-.. code-block:: bash
-
-  clang-modernize -use-nullptr -user-null-macros=MY_NULL foo.cpp
-
-
-transforms to:
-
-.. code-block:: c++
-
-  #define MY_NULL NULL
-  void assignment() {
-    int *p = nullptr;
-  }
-
-
-Risk
-====
-
-:option:`-risk` has no effect in this transform.

Modified: clang-tools-extra/trunk/docs/clang-modernize.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-modernize.rst?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-modernize.rst (original)
+++ clang-tools-extra/trunk/docs/clang-modernize.rst Thu Dec 17 05:49:19 2015
@@ -1,112 +1,2 @@
-.. index:: clang-modernize
-
-.. note::
-
-   **Deprecation**
-
-   As of September 2015 all :program:`clang-modernize` transforms have been
-   ported to :doc:`clang-tidy/index`. :program:`clang-modernize` is deprecated
-   and is going to be removed soon.
-
-
-==================================
-Clang C++ Modernizer User's Manual
-==================================
-
-.. toctree::
-   :hidden:
-
-   UseAutoTransform
-   UseNullptrTransform
-   LoopConvertTransform
-   AddOverrideTransform
-   PassByValueTransform
-   ReplaceAutoPtrTransform
-   ModernizerUsage
-   cpp11-migrate
-   MigratorUsage
-
-:program:`clang-modernize` is a standalone tool used to automatically convert
-C++ code written against old standards to use features of the newest C++
-standard where appropriate.
-
-Getting Started
-===============
-
-To build from source:
-
-1. Read `Getting Started with the LLVM System`_ and `Clang Tools
-   Documentation`_ for information on getting sources for LLVM, Clang, and
-   Clang Extra Tools.
-
-2. `Getting Started with the LLVM System`_ and `Building LLVM with CMake`_ give
-   directions for how to build. With sources all checked out into the
-   right place the LLVM build will build Clang Extra Tools and their
-   dependencies automatically.
-
-   * If using CMake, you can also use the ``clang-modernize`` target to build
-     just the Modernizer and its dependencies.
-
-Before continuing, take a look at :doc:`ModernizerUsage` to see how to invoke
-the Modernizer.
-
-Before running the Modernizer on code you'll need the arguments you'd normally
-pass to the compiler. If you're migrating a single file with few compiler
-arguments, it might be easier to pass the compiler args on the command line
-after ``--``. If you don't have any compiler arguments then ``--`` is not needed.
-If you're working with multiple files or even a single file with many compiler
-args, it's probably best to use a *compilation database*.
-
-A `compilation database`_ contains the command-line arguments for multiple
-files. If the code you want to transform can be built with CMake, you can
-generate this database easily by running CMake with the
-``-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`` option. The Ninja_ build system, since
-v1.2, can create this file too using the *compdb* tool: ``ninja -t compdb``. If
-you're not already using either of these tools or cannot easily make use of
-them you might consider looking into Bear_.
-
-In addition to the compiler arguments you usually build your code with, you must
-provide the option for enabling C++11 features. For clang and versions of gcc
-≥ v4.8 this is ``-std=c++11``.
-
-With compiler arguments in hand, the modernizer can be applied to sources. Each
-transform is applied to all sources before the next transform. All the changes
-generated by each transform pass are serialized to disk and applied using
-``clang-apply-replacements``. This executable must be located on the ``PATH``
-or be present in the same directory as the ``clang-modernizer`` executable. If
-any changes fail to apply, the modernizer will **not** proceed to the next
-transform and will halt.
-
-There's a small chance that changes made by a transform will produce code that
-doesn't compile, also causing the modernizer to halt. This can happen with 
-bugs in the transforms or use of the pre-processor to make the same code behave
-differently between translation units. Before logging a bug, be sure which
-situation you are dealing with.
-
-.. _Ninja: http://martine.github.io/ninja/
-.. _Bear: https://github.com/rizsotto/Bear
-.. _compilation database: http://clang.llvm.org/docs/JSONCompilationDatabase.html
-.. _Getting Started with the LLVM System: http://llvm.org/docs/GettingStarted.html
-.. _Building LLVM with CMake: http://llvm.org/docs/CMake.html
-.. _Clang Tools Documentation: http://clang.llvm.org/docs/ClangTools.html
-
-
-.. _transforms:
-
-Transformations
-===============
-
-The Modernizer is a collection of independent transforms which can be
-independently enabled. The transforms currently implemented are:
-
-* :doc:`LoopConvertTransform`
-
-* :doc:`UseNullptrTransform`
-
-* :doc:`UseAutoTransform`
-
-* :doc:`AddOverrideTransform`
-
-* :doc:`PassByValueTransform`
-
-* :doc:`ReplaceAutoPtrTransform`
+All :program:`clang-modernize` transforms have moved to :doc:`clang-tidy/index`
+(see the ``modernize`` module).

Modified: clang-tools-extra/trunk/docs/cpp11-migrate.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/cpp11-migrate.rst?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/cpp11-migrate.rst (original)
+++ clang-tools-extra/trunk/docs/cpp11-migrate.rst Thu Dec 17 05:49:19 2015
@@ -1,5 +1,2 @@
-============================
-C++11 Migrator User's Manual
-============================
-
-This tool has been renamed :doc:`clang-modernize <clang-modernize>`.
+All :program:`clang-modernize` transforms have moved to :doc:`clang-tidy/index`
+(see the ``modernize`` module).

Modified: clang-tools-extra/trunk/docs/index.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/index.rst?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/index.rst (original)
+++ clang-tools-extra/trunk/docs/index.rst Thu Dec 17 05:49:19 2015
@@ -15,7 +15,6 @@ Contents
 .. toctree::
    :maxdepth: 1
 
-   clang-modernize
    clang-tidy/index
    modularize
    pp-trace

Modified: clang-tools-extra/trunk/test/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/CMakeLists.txt?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/test/CMakeLists.txt Thu Dec 17 05:49:19 2015
@@ -36,7 +36,6 @@ set(CLANG_TOOLS_TEST_DEPS
 
   # Individual tools we test.
   clang-apply-replacements
-  clang-modernize
   clang-rename
   clang-query
   clang-tidy

Modified: clang-tools-extra/trunk/unittests/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/CMakeLists.txt?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/unittests/CMakeLists.txt Thu Dec 17 05:49:19 2015
@@ -6,7 +6,6 @@ function(add_extra_unittest test_dirname
 endfunction()
 
 add_subdirectory(clang-apply-replacements)
-add_subdirectory(clang-modernize)
 add_subdirectory(clang-rename)
 add_subdirectory(clang-query)
 add_subdirectory(clang-tidy)

Modified: clang-tools-extra/trunk/unittests/Makefile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/Makefile?rev=255886&r1=255885&r2=255886&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/Makefile (original)
+++ clang-tools-extra/trunk/unittests/Makefile Thu Dec 17 05:49:19 2015
@@ -10,6 +10,6 @@
 CLANG_LEVEL := ../../..
 include $(CLANG_LEVEL)/../../Makefile.config
 
-PARALLEL_DIRS := clang-apply-replacements clang-modernize clang-query clang-tidy clang-rename
+PARALLEL_DIRS := clang-apply-replacements clang-query clang-tidy clang-rename
 
 include $(CLANG_LEVEL)/Makefile

Removed: clang-tools-extra/trunk/unittests/include/common/Utility.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/include/common/Utility.h?rev=255885&view=auto
==============================================================================
--- clang-tools-extra/trunk/unittests/include/common/Utility.h (original)
+++ clang-tools-extra/trunk/unittests/include/common/Utility.h (removed)
@@ -1,25 +0,0 @@
-//=-- clang-modernize/Utility.h - Utility functions and macros---*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef CLANG_MODERNIZE_UNITTESTS_UTILITY_H
-#define CLANG_MODERNIZE_UNITTESTS_UTILITY_H
-
-// FIXME: copied from unittests/Support/Path.cpp
-#define ASSERT_NO_ERROR(x)                                                     \
-  if (std::error_code ASSERT_NO_ERROR_ec = x) {                                \
-    llvm::SmallString<128> MessageStorage;                                     \
-    llvm::raw_svector_ostream Message(MessageStorage);                         \
-    Message << #x ": did not return errc::success.\n"                          \
-            << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n"          \
-            << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n";      \
-    GTEST_FATAL_FAILURE_(MessageStorage.c_str());                              \
-  } else {                                                                     \
-  }
-
-#endif // CLANG_MODERNIZE_UNITTESTS_UTILITY_H




More information about the cfe-commits mailing list