diff --git a/llvm/docs/PDB/HashTable.rst b/llvm/docs/PDB/HashTable.rst
index eb7abbd..581ec59 100644
--- a/llvm/docs/PDB/HashTable.rst
+++ b/llvm/docs/PDB/HashTable.rst
@@ -47,16 +47,16 @@
   .--------------------.                       ─╯
 
 - **Size** - The number of values contained in the hash table.
-  
+
 - **Capacity** - The number of buckets in the hash table.  Producers should
   maintain a load factor of no greater than ``2/3*Capacity+1``.
-  
+
 - **Present Bit Vector** - A serialized bit vector which contains information
   about which buckets have valid values.  If the bucket has a value, the
   corresponding bit will be set, and if the bucket doesn't have a value (either
   because the bucket is empty or because the value is a tombstone value) the bit
   will be unset.
-  
+
 - **Deleted Bit Vector** - A serialized bit vector which contains information
   about which buckets have tombstone values.  If the entry in this bucket is
   deleted, the bit will be set, otherwise it will be unset.
@@ -88,8 +88,8 @@
   |       Word_N       |         │
   .--------------------.        ─╯
 
-The words, when viewed as a contiguous block of bytes, represent a bit vector with
-the following layout:
+The words, when viewed as a contiguous block of bytes, represent a bit vector
+with the following layout:
 
 .. code-block:: none
 
diff --git a/llvm/docs/PDB/ModiStream.rst b/llvm/docs/PDB/ModiStream.rst
index 8104c53..8905da5 100644
--- a/llvm/docs/PDB/ModiStream.rst
+++ b/llvm/docs/PDB/ModiStream.rst
@@ -34,7 +34,7 @@
     uint8_t Symbols[SymbolSize-4];
     uint8_t C11LineInfo[C11Size];
     uint8_t C13LineInfo[C13Size];
-    
+
     uint32_t GlobalRefsSize;
     uint8_t GlobalRefs[GlobalRefsSize];
   };
@@ -45,11 +45,11 @@
   meaning that this module has C13 line information (as opposed to C11 line
   information).  A corollary of this is that we expect to only ever see
   C13 line info, and that we do not understand the format of C11 line info.
-  
+
 - **Symbols** - The :ref:`CodeView Symbol Substream <modi_symbol_substream>`.
   ``SymbolSize`` is equal to the value of ``SymByteSize`` for the
-  corresponding module's entry in the :ref:`Module Info Substream <dbi_mod_info_substream>`
-  of the :doc:`DBI Stream <DbiStream>`.
+  corresponding module's entry in the :ref:`Module Info Substream
+  <dbi_mod_info_substream>` of the :doc:`DBI Stream <DbiStream>`.
 
 - **C11LineInfo** - A block containing CodeView line information in C11
   format.  ``C11Size`` is equal to the value of ``C11ByteSize`` from the
@@ -58,13 +58,13 @@
   information is not present.  As mentioned previously, the format of
   C11 line info is not understood and we assume all line in modern PDBs
   to be in C13 format.
-  
+
 - **C13LineInfo** - A block containing CodeView line information in C13
   format.  ``C13Size`` is equal to the value of ``C13ByteSize`` from the
   :ref:`Module Info Substream <dbi_mod_info_substream>` of the
   :doc:`DBI Stream <DbiStream>`.  If this value is ``0``, then C13 line
   information is not present.
-  
+
 - **GlobalRefs** - The meaning of this substream is not understood.
 
 .. _modi_symbol_substream:
diff --git a/llvm/docs/PDB/MsfFile.rst b/llvm/docs/PDB/MsfFile.rst
index a53ebe3..09eba4a 100644
--- a/llvm/docs/PDB/MsfFile.rst
+++ b/llvm/docs/PDB/MsfFile.rst
@@ -70,14 +70,14 @@
   sizes of 4KiB, and all further discussion assumes a block size of 4KiB.
 - **FreeBlockMapBlock** - The index of a block within the file, at which begins
   a bitfield representing the set of all blocks within the file which are "free"
-  (i.e. the data within that block is not used).  See :ref:`msf_freeblockmap` for
-  more information.
+  (i.e. the data within that block is not used).  See :ref:`msf_freeblockmap`
+  for more information.
   **Important**: ``FreeBlockMapBlock`` can only be ``1`` or ``2``!
-- **NumBlocks** - The total number of blocks in the file.  ``NumBlocks * BlockSize``
-  should equal the size of the file on disk.
-- **NumDirectoryBytes** - The size of the stream directory, in bytes.  The stream
-  directory contains information about each stream's size and the set of blocks
-  that it occupies.  It will be described in more detail later.
+- **NumBlocks** - The total number of blocks in the file.  ``NumBlocks *
+  BlockSize`` should equal the size of the file on disk.
+- **NumDirectoryBytes** - The size of the stream directory, in bytes.  The
+  stream directory contains information about each stream's size and the set of
+  blocks that it occupies.  It will be described in more detail later.
 - **BlockMapAddr** - The index of a block within the MSF file.  At this block is
   an array of ``ulittle32_t``'s listing the blocks that the stream directory
   resides on.  For large MSF files, the stream directory (which describes the
@@ -85,7 +85,8 @@
   result, this extra layer of indirection is introduced, whereby this block
   contains the list of blocks that the stream directory occupies, and the stream
   directory itself can be stitched together accordingly.  The number of
-  ``ulittle32_t``'s in this array is given by ``ceil(NumDirectoryBytes / BlockSize)``.
+  ``ulittle32_t``'s in this array is given by ``ceil(NumDirectoryBytes /
+  BlockSize)``.
 
 .. _msf_freeblockmap:
 
@@ -156,9 +157,10 @@
     };
   };
 
-In total, this occupies ``15 * 4 = 60`` bytes, so ``SuperBlock->NumDirectoryBytes``
-would equal ``60``, and ``SuperBlock->BlockMapAddr`` would be an array of one
-``ulittle32_t``, since ``60 <= SuperBlock->BlockSize``.
+In total, this occupies ``15 * 4 = 60`` bytes, so
+``SuperBlock->NumDirectoryBytes`` would equal ``60``, and
+``SuperBlock->BlockMapAddr`` would be an array of one ``ulittle32_t``, since
+``60 <= SuperBlock->BlockSize``.
 
 Note also that the streams are discontiguous, and that part of stream 3 is in the
 middle of part of stream 2.  You cannot assume anything about the layout of the
diff --git a/llvm/docs/PDB/TpiStream.rst b/llvm/docs/PDB/TpiStream.rst
index 8f6fd12..d0565e2 100644
--- a/llvm/docs/PDB/TpiStream.rst
+++ b/llvm/docs/PDB/TpiStream.rst
@@ -25,7 +25,7 @@
 
 .. important::
    Type records form a topologically sorted DAG (directed acyclic graph).
-   
+
 .. _tpi_ipi:
 
 TPI vs IPI Stream
@@ -188,24 +188,22 @@
     NearPointer64 = 6, // 64 bit near pointer
     NearPointer128 = 7 // 128 bit near pointer
   };
-  
+
 Note that for pointers, the bitness is represented in the mode.  So a ``void*``
-would have a type index with ``Mode=NearPointer32, Kind=Void`` if built for 32-bits
-but a type index with ``Mode=NearPointer64, Kind=Void`` if built for 64-bits.
+would have a type index with ``Mode=NearPointer32, Kind=Void`` if built for
+32-bits but a type index with ``Mode=NearPointer64, Kind=Void`` if built for
+64-bits.
 
-By convention, the type index for ``std::nullptr_t`` is constructed the same way
-as the type index for ``void*``, but using the bitless enumeration value
+By convention, the type index for ``std::nullptr_t`` is constructed the same
+way as the type index for ``void*``, but using the bitless enumeration value
 ``NearPointer``.
 
-
-
 .. _tpi_header:
 
 Stream Header
 =============
 At offset 0 of the TPI Stream is a header with the following layout:
 
-
 .. code-block:: c++
 
   struct TpiStreamHeader {
@@ -222,14 +220,14 @@
 
     int32_t HashValueBufferOffset;
     uint32_t HashValueBufferLength;
-    
+
     int32_t IndexOffsetBufferOffset;
     uint32_t IndexOffsetBufferLength;
 
     int32_t HashAdjBufferOffset;
     uint32_t HashAdjBufferLength;
   };
-  
+
 - **Version** - A value from the following enum.
 
 .. code-block:: c++
@@ -248,46 +246,49 @@
 accurate.
 
 - **HeaderSize** - ``sizeof(TpiStreamHeader)``
-  
+
 - **TypeIndexBegin** - The numeric value of the type index representing the
-  first type record in the TPI stream.  This is usually the value 0x1000 as type
-  indices lower than this are reserved (see :ref:`Type Indices <type_indices>` for
+  first type record in the TPI stream.  This is usually the value 0x1000 as
+  type indices lower than this are reserved (see :ref:`Type Indices
+  <type_indices>` for
   a discussion of reserved type indices).
-  
+
 - **TypeIndexEnd** - One greater than the numeric value of the type index
-  representing the last type record in the TPI stream.  The total number of type
-  records in the TPI stream can be computed as ``TypeIndexEnd - TypeIndexBegin``.
-  
-- **TypeRecordBytes** - The number of bytes of type record data following the header.
-  
-- **HashStreamIndex** - The index of a stream which contains a list of hashes for
-  every type record.  This value may be -1, indicating that hash information is not
-  present.  In practice a valid stream index is always observed, so any producer
-  implementation should be prepared to emit this stream to ensure compatibility with
-  tools which may expect it to be present.
-  
-- **HashAuxStreamIndex** - Presumably the index of a stream which contains a separate
-  hash table, although this has not been observed in practice and it's unclear what it
-  might be used for.
-  
+  representing the last type record in the TPI stream.  The total number of
+  type records in the TPI stream can be computed as ``TypeIndexEnd -
+  TypeIndexBegin``.
+
+- **TypeRecordBytes** - The number of bytes of type record data following the
+  header.
+
+- **HashStreamIndex** - The index of a stream which contains a list of hashes
+  for every type record.  This value may be -1, indicating that hash
+  information is not present.  In practice a valid stream index is always
+  observed, so any producer implementation should be prepared to emit this
+  stream to ensure compatibility with tools which may expect it to be present.
+
+- **HashAuxStreamIndex** - Presumably the index of a stream which contains a
+  separate hash table, although this has not been observed in practice and it's
+  unclear what it might be used for.
+
 - **HashKeySize** - The size of a hash value (usually 4 bytes).
 
-- **NumHashBuckets** - The number of buckets used to generate the hash values in the
-  aforementioned hash streams.
+- **NumHashBuckets** - The number of buckets used to generate the hash values
+  in the aforementioned hash streams.
 
 - **HashValueBufferOffset / HashValueBufferLength** - The offset and size within
-  the TPI Hash Stream of the list of hash values.  It should be assumed that there
-  are either 0 hash values, or a number equal to the number of type records in the
-  TPI stream (``TypeIndexEnd - TypeEndBegin``).  Thus, if ``HashBufferLength`` is
-  not equal to ``(TypeIndexEnd - TypeEndBegin) * HashKeySize`` we can consider the
-  PDB malformed.
+  the TPI Hash Stream of the list of hash values.  It should be assumed that
+  there are either 0 hash values, or a number equal to the number of type
+  records in the TPI stream (``TypeIndexEnd - TypeEndBegin``).  Thus, if
+  ``HashBufferLength`` is not equal to ``(TypeIndexEnd - TypeEndBegin) *
+  HashKeySize`` we can consider the PDB malformed.
 
 - **IndexOffsetBufferOffset / IndexOffsetBufferLength** - The offset and size
-  within the TPI Hash Stream of the Type Index Offsets Buffer.  This is a list of
-  pairs of uint32_t's where the first value is a :ref:`Type Index <type_indices>`
-  and the second value is the offset in the type record data of the type with this
-  index.  This can be used to do a binary search followed by a linear search to
-  get O(log n) lookup by type index.
+  within the TPI Hash Stream of the Type Index Offsets Buffer.  This is a list
+  of pairs of uint32_t's where the first value is a :ref:`Type Index
+  <type_indices>` and the second value is the offset in the type record data of
+  the type with this index.  This can be used to do a binary search followed by
+  a linear search to get O(log n) lookup by type index.
 
 - **HashAdjBufferOffset / HashAdjBufferLength** - The offset and size within
   the TPI hash stream of a serialized hash table whose keys are the hash values
@@ -303,10 +304,11 @@
 
 CodeView Type Record List
 =========================
-Following the header, there are ``TypeRecordBytes`` bytes of data that represent a
-variable length array of :doc:`CodeView type records <CodeViewTypes>`.  The number
-of such records (e.g. the length of the array) can be determined by computing the
-value ``Header.TypeIndexEnd - Header.TypeIndexBegin``.
+Following the header, there are ``TypeRecordBytes`` bytes of data that
+represent a variable length array of :doc:`CodeView type records
+<CodeViewTypes>`.  The number of such records (e.g. the length of the array)
+can be determined by computing the value ``Header.TypeIndexEnd -
+Header.TypeIndexBegin``.
 
 O(log(n)) access is provided by way of the Type Index Offsets array (if
 present) described previously.
diff --git a/llvm/docs/PDB/index.rst b/llvm/docs/PDB/index.rst
index 8425b29..b70eca7 100644
--- a/llvm/docs/PDB/index.rst
+++ b/llvm/docs/PDB/index.rst
@@ -44,7 +44,7 @@
 
 .. toctree::
    :hidden:
-   
+
    MsfFile
    PdbStream
    TpiStream
@@ -132,7 +132,7 @@
 
 More information about the structure of each of these can be found on the
 following pages:
-   
+
 :doc:`PdbStream`
    Information about the PDB Info Stream and how it is used to match PDBs to EXEs.
 
@@ -140,12 +140,13 @@
    Information about the TPI stream and the CodeView records contained within.
 
 :doc:`DbiStream`
-   Information about the DBI stream and relevant substreams including the Module Substreams,
-   source file information, and CodeView symbol records contained within.
+   Information about the DBI stream and relevant substreams including the
+   Module Substreams, source file information, and CodeView symbol records
+   contained within.
 
 :doc:`ModiStream`
-   Information about the Module Information Stream, of which there is one for each compilation
-   unit and the format of symbols contained within.
+   Information about the Module Information Stream, of which there is one for
+   each compilation unit and the format of symbols contained within.
 
 :doc:`PublicStream`
    Information about the Public Symbol Stream.
@@ -154,8 +155,9 @@
    Information about the Global Symbol Stream.
 
 :doc:`HashTable`
-   Information about the serialized hash table format used internally to represent things such
-   as the Named Stream Map and the Hash Adjusters in the :doc:`TPI/IPI Stream <TpiStream>`.
+   Information about the serialized hash table format used internally to
+   represent things such as the Named Stream Map and the Hash Adjusters in the
+   :doc:`TPI/IPI Stream <TpiStream>`.
 
 CodeView
 ========
