================
@@ -96,3 +96,49 @@ Note in the LLVM alias, the default value is `false`.
   matched against only the type name (i.e. ``Type``). E.g. to suppress reports
   for ``std::array`` iterators use `std::array<.*>::(const_)?iterator` string.
   The default is an empty string.
+
+.. option:: IgnoreAliasing
+
+  If set to `true` the check will use the underlying type to determine the type
+  that ``auto`` is deduced to.
+  If set to `false` the check will not look beyond the first type alias.
+  Default value is `true`.
+
+.. code-block:: c++
+
+   using IntPtr = int*;
+   IntPtr foo();
+
+   auto bar = foo();
+
+If :option:`IgnoreAliasing` is set to `true`, it will be transformed into:
+
+.. code-block:: c++
+
+   auto *bar = foo();
+
+Otherwise no changes will occur.
+
+Limitations
+-----------
+
+When :option:`IgnoreAliasing` is set to `false`, there are cases where
+Clang has not preserved the type alias and the underlying type will be used so
+false positives may occur.
+For example:
+
+.. code-block:: c++
+
+  #include <vector>
+
+  void change(int&);
+
+  using IntPtr = int *; // Relevant typedef
+
+  void loopPtr(const std::vector<IntPtr> &VectorIntPtr) {
+
+    // May fail for IgnoreAliasing==false as AST does not have the IntPtr
+    for (auto Data : VectorIntPtr) {
+      change(*Data);
+    }
----------------
vbvictor wrote:

```suggestion
    }
```

https://github.com/llvm/llvm-project/pull/147060
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to